# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 OnsenCapy <101037138+OnsenCapy@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later


- type: entity
  name: living curse
  id: MobLivingCurse
  parent: [ SimpleSpaceMobBase, MobCombat ]
  description: Exceedingly slow, but is immune to all forms of damage, except holy.
  components:
  - type: Bloodstream
    bloodMaxVolume: 5
    bloodReagent: MindbreakerToxin
  - type: Sprite
    drawdepth: Mobs
    sprite: _Goobstation/Mobs/Demons/curse.rsi
    layers:
    - map: [ "enum.DamageStateVisualLayers.Base" ]
      state: curse
  - type: DamageStateVisuals
    states:
      Alive:
        Base: curse
      Dead:
        Base: dead
  - type: HTN
    rootTask:
      task: SimpleHostileCompound
  - type: NpcFactionMember
    factions:
    - SimpleHostile
  - type: Physics
    bodyType: KinematicController
  - type: Fixtures
    fixtures:
      fix1:
        shape:
          !type:PhysShapeCircle
          radius: 0.0
        density: 0
        mask:
          - FlyingMobMask
        layer:
          - Opaque
  - type: MobThresholds
    thresholds:
      0: Alive
      60: Dead
  - type: MeleeWeapon
    altDisarm: false
    soundHit:
      path: /Audio/Effects/demon_attack1.ogg
    damage:
      types:
        Caustic: 5
  - type: Damageable
    damageContainer: BiologicalMetaphysical
    damageModifierSet: AdvancedSpirit
  - type: WeakToHoly
    alwaysTakeHoly: true
  - type: NoSlip
  - type: MovementSpeedModifier
    baseWalkSpeed : 1
    baseSprintSpeed : 1
  - type: Reflect
    reflectProb: 1
    reflects:
    - Nonenergy
    - Energy
  - type: AmbientSound
    range: 7
    volume: -5
    sound:
      path: /Audio/Ambience/anomaly_scary.ogg
  - type: PointLight
    radius: 1.5
    energy: 12.5
    color: "#793a80"
  - type: SpawnLootOnDeath
    loot: AnomalyCoreShadow

- type: entity
  name: ???
  id: MobSpookyGhost1
  parent: MobLivingCurse
  description: You have no idea what this is!
  components:
  - type: PointLight
    radius: 1.5
    energy: 5
    color: White
  - type: Sprite
    drawdepth: Mobs
    sprite: _Goobstation/Mobs/Demons/spookyghost/ghost1.rsi
    layers:
    - map: [ "enum.DamageStateVisualLayers.Base" ]
      state: spookyghost
  - type: DamageStateVisuals
    states:
      Alive:
        Base: spookyghost
      Dead:
        Base: ghost_dead
  - type: MobThresholds
    thresholds:
      0: Alive
      90: Dead
  - type: MovementSpeedModifier
    baseWalkSpeed : 2
    baseSprintSpeed : 2
  - type: Damageable
    damageContainer: ManifestedSpirit
    damageModifierSet: ManifestedSpirit
  - type: SpawnLootOnDeath
    loot: DiamondOre1Unprocessed

- type: entity
  name: glutton
  parent: [ SimpleSpaceMobBase, MobCombat ]
  id: BaseMobGlutton
  description: Something that was once a clown.
  components:
    - type: HTN
      rootTask:
        task: SimpleHostileCompound
    - type: SpamEmitSound
      minInterval: 15
      maxInterval: 45
      sound:
        path: /Audio/Voice/Cluwne/cluwnelaugh1.ogg
        params:
          volume: -5
          maxDistance: 10
          variation: 0.5
    - type: NpcFactionMember
      factions:
        - SimpleHostile
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 3
    - type: Sprite
      sprite: _Goobstation/Mobs/Demons/glutton.rsi
      layers:
        - map: [ "enum.DamageStateVisualLayers.Base" ]
          state: glutton
    - type: DamageStateVisuals
      states:
        Alive:
          Base: glutton
        Dead:
          Base: glutton_dead
    - type: FootstepModifier
      footstepSoundCollection:
        collection: FootstepThud
    - type: Physics
      bodyType: KinematicController
    - type: Fixtures
      fixtures:
        fix1:
          shape:
            !type:PhysShapeCircle
            radius: 0.40
          density: 100
          mask:
            - MobMask
          layer:
            - MobLayer
    - type: MobThresholds
      thresholds:
        0: Alive
        400: Dead
    - type: PassiveDamage
      allowedStates:
        - Alive
      damage:
        types:
          Heat: -1
        groups:
          Brute: -1
    - type: Butcherable
      spawned:
        - id: MaterialBananium1
          amount: 5
        - id: WeaponBehonkerLaser
          amount: 1
          prob: 0.05
    - type: MeleeWeapon
      soundHit:
        path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
      damage:
        types:
          Piercing: 20
          Slash: 10
    - type: StaticPrice
      price: 3000
    - type: Bloodstream
      bloodMaxVolume: 300
      bloodReagent: Laughter
    - type: Fauna # Lavaland Change
    - type: CombatPower # Goobstation
      factor: 3 # times more dangerous than a crew-member


- type: entity
  name: abyss crawler
  parent: [ SimpleSpaceMobBase, MobCombat ]
  id: MobAbyssCrawler
  description: A pale mass of heaving flesh that gropes around in the gloom. It doesn't appear to have any eyes.
  components:
    - type: HTN
      rootTask:
        task: SimpleHostileCompound
    - type: SpamEmitSound
      minInterval: 5
      maxInterval: 10
      sound:
        path: /Audio/_Goobstation/Animals/breath1.ogg
        params:
          volume: -5
          maxDistance: 15
          variation: 0.5
    - type: NpcFactionMember
      factions:
        - SimpleHostile
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 2
    - type: Sprite
      sprite: _Goobstation/Mobs/Animals/abysscrawler.rsi
      layers:
        - map: [ "enum.DamageStateVisualLayers.Base" ]
          state: abyss_crawler
    - type: DamageStateVisuals
      states:
        Alive:
          Base: abyss_crawler
        Dead:
          Base: crawler_dead
    - type: FootstepModifier
      footstepSoundCollection:
        collection: FootstepThud
    - type: Physics
      bodyType: KinematicController
    - type: Fixtures
      fixtures:
        fix1:
          shape:
            !type:PhysShapeCircle
            radius: 0.40
          density: 100
          mask:
            - MobMask
          layer:
            - MobLayer
    - type: MobThresholds
      thresholds:
        0: Alive
        300: Dead
    - type: PassiveDamage
      allowedStates:
        - Alive
      damage:
        types:
          Heat: -1
        groups:
          Brute: -1
    - type: StaticPrice
      price: 3000
    - type: TileMovement
    - type: MeleeWeapon
      soundHit:
        path: /Audio/Weapons/Xeno/alien_claw_flesh3.ogg
      damage:
        types:
          Piercing: 20
          Slash: 10
    - type: Butcherable
      spawned:
      - id: DiamondOre1 # not unprocessed
        amount: 1
    - type: Bloodstream
      bloodMaxVolume: 300
      bloodReagent: Haloperidol
    - type: Fauna # Lavaland Change
    - type: CombatPower # Goobstation
      factor: 3 # times more dangerous than a crew-member
