- type: entity
  abstract: true
  parent:
  - BaseMob
  - MobCombat
  - MobDamageable
  - MobPolymorphable
  - StripableInventoryBase
  - BaseSpeciesAppearance
  id: BaseSpeciesMob
  save: false
  components:
  - type: DamageVisuals
    thresholds: [ 10, 20, 30, 50, 70, 100 ]
    targetLayers:
    - "enum.HumanoidVisualLayers.Chest"
    - "enum.HumanoidVisualLayers.Head"
    - "enum.HumanoidVisualLayers.LArm"
    - "enum.HumanoidVisualLayers.LLeg"
    - "enum.HumanoidVisualLayers.RArm"
    - "enum.HumanoidVisualLayers.RLeg"
    damageOverlayGroups:
      Brute:
        sprite: Mobs/Effects/brute_damage.rsi
        color: "#FF0000"
      Burn:
        sprite: Mobs/Effects/burn_damage.rsi
  - type: StatusIcon
    bounds: -0.5,-0.5,0.5,0.5
  - type: JobStatus
  - type: RotationVisuals
    defaultRotation: 90
    horizontalRotation: 90
  - type: HumanoidProfile
  - type: TypingIndicator
  - type: SlowOnDamage
    speedModifierThresholds:
      60: 0.7
      80: 0.5
  - type: Fixtures
    fixtures: # TODO: This needs a second fixture just for mob collisions.
      fix1:
        shape:
          !type:PhysShapeCircle
          radius: 0.35
        density: 185
        restitution: 0.0
        mask:
        - MobMask
        layer:
        - MobLayer
  - type: FloorOcclusion
  - type: RangedDamageSound
    soundGroups:
      Brute:
        collection:
          MeatBulletImpact
    soundTypes:
      Heat:
        collection:
          MeatLaserImpact
  - type: Reactive
    groups:
      Flammable: [ Touch ]
      Extinguish: [ Touch ]
      Acidic: [Touch, Ingestion]
    reactions:
    - reagents: [Water, SpaceCleaner]
      methods: [Touch]
      effects:
      - !type:WashCreamPie
  - type: StatusEffects
    allowed:
    - Electrocution
    - Pacified
    - Flashed
    - Adrenaline
  - type: Identity
  - type: IdExaminable
  - type: Internals
  - type: FloatingVisuals
  - type: Climbing
  - type: Cuffable
  - type: Ensnareable
    sprite: Objects/Misc/ensnare.rsi
    state: icon
  - type: AnimationPlayer
  - type: Buckle
  - type: CombatMode
    canDisarm: true
  - type: MeleeWeapon
    soundHit:
      collection: Punch
    angle: 30
    animation: WeaponArcFist
    attackRate: 1
    damage:
      types:
        Blunt: 5
  - type: SleepEmitSound
  - type: SSDIndicator
  - type: StandingState
  - type: Crawler
  - type: Dna
  - type: MindContainer
  - type: MindExaminable
  - type: CanEnterCryostorage
  - type: InteractionPopup
    successChance: 1
    interactSuccessString: hugging-success-generic
    interactSuccessSound: /Audio/Effects/thudswoosh.ogg
    messagePerceivedByOthers: hugging-success-generic-others
  - type: CanHostGuardian
  - type: NpcFactionMember
    factions:
    - NanoTrasen
  - type: CreamPied
    sprite:
      sprite: Effects/creampie.rsi
      state: creampie_human
  - type: ParcelWrapOverride
    parcelPrototype: WrappedParcelHumanoid
    wrapDelay: 5
  - type: Stripping
  - type: UserInterface
    interfaces:
      enum.HumanoidMarkingModifierKey.Key:
        type: HumanoidMarkingModifierBoundUserInterface
      enum.StrippingUiKey.Key:
        type: StrippableBoundUserInterface
  - type: Puller
  - type: Speech
    speechSounds: Alto
  - type: DamageForceSay
  - type: Vocal
    emoteSounds: MaleHuman
  - type: Emoting
  - type: BodyEmotes
    soundsId: GeneralBodyEmotes
  - type: Grammar
    attributes:
      proper: true
  - type: MobPrice
    price: 1500 # Kidnapping a living person and selling them for cred is a good move.
    deathPenalty: 0.01 # However they really ought to be living and intact, otherwise they're worth 100x less.
  - type: RandomPrice
    maxRandomPrice: 20000
  - type: Tag
    tags:
    - CanPilot
    - FootstepSound
    - DoorBumpOpener
    - AnomalyHost

- type: entity
  abstract: true
  parent:
  - MobBloodstream
  - MobRespirator
  - MobAtmosStandard
  - MobFlammable
  - BaseSpeciesMob
  - BaseMobDestructible
  - BaseHungerThirstSlowdown
  id: BaseSpeciesMobOrganic
  save: false
  components:
  - type: Satiation
    satiations:
      Hunger:
        prototype: NormalSatiationHunger
      Thirst:
        prototype: NormalSatiationThirst
  - type: Barotrauma
    damage:
      types:
        Blunt: 0.50
        Heat: 0.1
  - type: PassiveDamage
    intervalHaltOnDamageTaken: 5s
    allowedStates:
    - Alive
    damage:
      types:
        Heat: -0.07
        Blunt: -0.05
        Piercing: -0.05
        Slash: -0.05
  - type: Fingerprint
  - type: Blindable
  - type: Temperature
  - type: TemperatureDamage
    heatDamageThreshold: 325
    coldDamageThreshold: 273.15
    coldDamage:
      types:
        Cold: 0.1 #per second, scales with temperature & other constants
    heatDamage:
      types:
        Heat: 1.5 #per second, scales with temperature & other constants
  - type: TemperatureSpeed
    thresholds:
      293: 0.9
      280: 0.8
      260: 0.7
  - type: ThermalRegulator
    metabolismHeat: 800
    radiatedHeat: 100
    implicitHeatRegulation: 500
    sweatHeatRegulation: 2000
    shiveringHeatRegulation: 2000
    normalBodyTemperature: 310.15
    thermalRegulationTemperatureThreshold: 2
  - type: Perishable
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 5
  - type: Respirator
    damage:
      types:
        Asphyxiation: 1.0
    damageRecovery:
      types:
        Asphyxiation: -1.0
  - type: FireVisuals
    alternateState: Standing
  - type: StunVisuals
