# Bounds Guide
#1D2L3U4R

- type: entity
  name: bat
  parent: SimpleMobBase
  id: MobBat
  description: Some cultures find them terrifying, others crunchy on the teeth.
  components:
  - type: MovementSpeedModifier
    baseWalkSpeed : 6
    baseSprintSpeed : 6
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: bat
      sprite: Mobs/Animals/bat.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.25
      mass: 5
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: bat
      crit: dead
      dead: dead
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 1
  - type: InteractionPopup
    successChance: 0.2
    interactSuccessString: petting-success-soft-floofy
    interactFailureString: petting-failure-bat
  - type: SentienceTarget
    flavorKind: organic
  - type: Bloodstream
    bloodMaxVolume: 50

- type: entity
  name: bee
  parent: SimpleMobBase
  id: MobBee
  description: Nice to have, but you can't build a civilization on a foundation of honey alone.
  components:
  - type: MovementSpeedModifier
    baseWalkSpeed : 7
    baseSprintSpeed : 7
  - type: RandomAppearance
    # relic
    key: enum.AsteroidRockVisuals.State
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: 0
      sprite: Mobs/Animals/bee.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.1
      mass: 5
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: MobState
    thresholds:
      0: !type:NormalMobState {}
      5: !type:CriticalMobState {}
      10: !type:DeadMobState {}
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: 0
      crit: dead
      dead: dead
  - type: Tag
    tags:
    - Bee
  - type: Bloodstream
    bloodMaxVolume: 0.1

- type: entity
  name: bee
  suffix: Angry
  parent: MobBee
  id: MobAngryBee
  description: How nice a bee. Oh no, it looks angry and wants my pizza.
  components:
  - type: UnarmedCombat
    range: 0.3
    arcwidth: 0
    arc: bite
    damage:
      types:
        Poison: 2
        Piercing: 1
  - type: UtilityAI
    behaviorSets:
    - UnarmedAttackHostiles
  - type: AiFactionTag
    factions:
    - SimpleHostile
  - type: Bloodstream
    bloodMaxVolume: 0.1


- type: entity
  name: chicken
  parent: SimpleMobBase
  id: MobChicken
  description: Comes before an egg, and IS a dinosaur!
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: chicken-0
      sprite: Mobs/Animals/chicken.rsi
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: chicken-0
      crit: dead-0
      dead: dead-0
  - type: Butcherable
    spawned:
    - id: FoodMeatChicken
      amount: 1
  - type: InteractionPopup
    successChance: 0.8
    interactSuccessString: petting-success-bird
    interactFailureString: petting-failure-generic
    interactSuccessSound:
      path: /Audio/Animals/chicken_cluck_happy.ogg
  - type: Bloodstream
    bloodMaxVolume: 100

- type: entity
  name: mallard duck #Quack
  parent: SimpleMobBase
  id: MobDuckMallard
  description: An adorable mallard duck, it's fluffy and soft!
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: duck-0
      sprite: Mobs/Animals/duck.rsi
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: duck-0
      crit: dead-0
      dead: dead-0
  - type: Butcherable
    spawned:
    - id: FoodMeatDuck
      amount: 1
  - type: InteractionPopup
    successChance: 0.9
    interactSuccessString: petting-success-bird
    interactFailureString: petting-failure-generic
    interactSuccessSound:
      path: /Audio/Animals/duck_quack_happy.ogg
  - type: Bloodstream
    bloodMaxVolume: 100

- type: entity
  name: white duck #Quack
  parent: SimpleMobBase
  id: MobDuckWhite
  description: An adorable white duck, it's fluffy and soft!
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: duck-1
      sprite: Mobs/Animals/duck.rsi
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: duck-1
      crit: dead-1
      dead: dead-1
  - type: Butcherable
    spawned:
    - id: FoodMeatDuck
      amount: 1
  - type: InteractionPopup
    successChance: 0.9
    interactSuccessString: petting-success-bird
    interactFailureString: petting-failure-generic
    interactSuccessSound:
      path: /Audio/Animals/duck_quack_happy.ogg
  - type: Bloodstream
    bloodMaxVolume: 100

- type: entity
  name: brown duck #Quack
  parent: SimpleMobBase
  id: MobDuckBrown
  description: An adorable brown duck, it's fluffy and soft!
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: duck-2
      sprite: Mobs/Animals/duck.rsi
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: duck-2
      crit: dead-2
      dead: dead-2
  - type: Butcherable
    spawned:
    - id: FoodMeatDuck
      amount: 1
  - type: InteractionPopup
    successChance: 0.9
    interactSuccessString: petting-success-bird
    interactFailureString: petting-failure-generic
    interactSuccessSound:
      path: /Audio/Animals/duck_quack_happy.ogg
  - type: Bloodstream
    bloodMaxVolume: 100

- type: entity
  name: butterfly
  parent: SimpleMobBase
  id: MobButterfly
  description: Despite popular misconceptions, it's not actually made of butter.
  components:
  - type: MovementSpeedModifier
    baseWalkSpeed : 6
    baseSprintSpeed : 6
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: butterfly
      sprite: Mobs/Animals/butterfly.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.2
      mass: 5
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: MobState
    thresholds:
      0: !type:NormalMobState {}
      5: !type:CriticalMobState {}
      10: !type:DeadMobState {}
  - type: RandomSpriteColor
    state: butterfly
    colors:
      blue: "#1861d5"
      red: "#951710"
      pink: "#d5188d"
      brown: "#a05212"
      green: "#0e7f1b"
      cyan: "#18a2d5"
      yellow: "#d58c18"
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: butterfly
      crit: dead
      dead: dead
  - type: Bloodstream
    bloodMaxVolume: 0.1

- type: entity
  name: cow
  parent: SimpleMobBase
  id: MobCow
  description: Moo.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: cow
      sprite: Mobs/Animals/cow.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.40
      mass: 45
      mask:
      - Impassable
      - MobImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: cow
      crit: dead
      dead: dead
  - type: SolutionContainerManager
    solutions:
      udder:
        maxVol: 250
        reagents:
        - ReagentId: Milk
          Quantity: 30
  - type: Udder
    reagentId: Milk
    targetSolution: udder
    quantity: 25
    updateRate: 30
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 5
  - type: Grammar
    attributes:
      gender: female # Here because of UdderComponent
  - type: InteractionPopup
    successChance: 0.7
    interactSuccessString: petting-success-soft-floofy
    interactFailureString: petting-failure-generic


- type: entity
  name: crab
  parent: SimpleMobBase
  id: MobCrab
  description: A folk legend goes around that his claw snaps spacemen out of existance over distasteful remarks. Be polite and tolerant for your own safety.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: crab
      sprite: Mobs/Animals/crab.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.35
      mass: 5
      mask:
      - Impassable
      - MobImpassable #Bullets!?
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: crab
      crit: dead
      dead: dead
    - type: AsteroidRockVisualizer
  - type: Butcherable
    spawned:
    - id: FoodMeatCrab
      amount: 2
  - type: InteractionPopup
    successChance: 0.5
    interactSuccessString: petting-success-crab
    interactFailureString: petting-failure-crab
  - type: Bloodstream
    bloodMaxVolume: 50

- type: entity
  name: goat
  parent: SimpleMobBase
  id: MobGoat
  description: Her spine consists of long sharp segments, no wonder she is so grumpy.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: goat
      sprite: Mobs/Animals/goat.rsi
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: goat
      crit: dead
      dead: dead
  - type: SolutionContainerManager
    solutions:
      udder:
        maxVol: 250
        reagents:
        - ReagentId: MilkGoat
          Quantity: 30
  - type: Udder
    reagentId: MilkGoat
    targetSolution: udder
    quantity: 25
    updateRate: 20
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 4
  - type: Grammar
    attributes:
      gender: female # Here because of UdderComponent
  - type: InteractionPopup
    successChance: 0.2
    interactSuccessString: petting-success-goat
    interactFailureString: petting-failure-goat

# Note that we gotta make this bitch vomit someday when you feed it anthrax or sumthin. Needs to be a small item thief too and aggressive if attacked.
- type: entity
  name: goose
  parent: SimpleMobBase
  id: MobGoose
  description: Its stomach and mind are an enigma beyond human comprehension.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: goose
      sprite: Mobs/Animals/goose.rsi
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: goose
      crit: dead
      dead: dead
  - type: Butcherable
    spawned:
    - id: FoodMeatChicken
      amount: 2
  - type: InteractionPopup # TODO: Make it so there's a separate chance to make certain animals outright hostile towards you.
    successChance: 0.1 # Yeah, good luck with that.
    interactSuccessString: petting-success-goose
    interactFailureString: petting-failure-goose
  - type: Bloodstream
    bloodMaxVolume: 100

- type: entity
  name: gorilla
  parent: SimpleMobBase
  id: MobGorilla
  description: Smashes, roars, looks cool. Don't stand near one.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: crawling
      sprite: Mobs/Animals/gorilla.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.48
      mass: 20
      mask:
      - Impassable
      - MobImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: crawling
      crit: dead
      dead: dead
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 4
  - type: Bloodstream
    bloodMaxVolume: 300

- type: entity
  name: kangaroo
  parent: SimpleMobBase
  id: MobKangaroo
  description: A large marsupial herbivore. It has powerful hind legs, with nails that resemble long claws.
  components:
  - type: MovementSpeedModifier
    baseWalkSpeed: 4
    baseSprintSpeed: 6
  - type: Sprite
    drawdepth: Mobs
    layers:
      - map: ["enum.DamageStateVisualLayers.Base"]
        state: kangaroo
        sprite: Mobs/Animals/kangaroo.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
      - shape:
          !type:PhysShapeCircle
          radius: 0.25
        mass: 60
        mask:
          - Impassable
          - MobImpassable #Bullets?!
          - SmallImpassable
        layer:
          - Opaque
  - type: Appearance
    visuals:
      - type: DamageStateVisualizer
        normal: kangaroo
        # SKIPPY NO!
        crit: kangaroo-dead
        dead: kangaroo-dead

- type: entity
  name: boxing kangaroo
  parent: MobKangaroo
  id: MobKangarooBoxer
  description: A large marsupial herbivore. It has powerful hind legs and... boxing gloves?
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
      - map: ["enum.DamageStateVisualLayers.Base"]
        state: kangaroo-boxing
        sprite: Mobs/Animals/kangaroo.rsi
  - type: Appearance
    visuals:
      - type: DamageStateVisualizer
        normal: kangaroo-boxing
        crit: kangaroo-boxing-dead
        dead: kangaroo-boxing-dead
  - type: UnarmedCombat
    range: 1.5
    arcwidth: 0
    arc: claw
    damage:
      types:
        Blunt: 10
  - type: UtilityAI
    behaviorSets:
    - UnarmedAttackHostiles
  - type: AiFactionTag
    factions:
    - SimpleHostile

- type: entity
  name: monkey
  id: MobMonkey
  parent: SimpleMobBase
  description: New church of neo-darwinists actually believe that EVERY animal evolved from a monkey. Tastes like pork, and killing them is both fun and relaxing.
  components:
  - type: NameIdentifier
    group: Monkey
  - type: SentienceTarget
    flavorKind: primate
  - type: Inventory
    templateId: monkey
  - type: Strippable
  - type: UserInterface
    interfaces:
    - key: enum.StrippingUiKey.Key
      type: StrippableBoundUserInterface
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: monkey
      sprite: Mobs/Animals/monkey.rsi
  - type: Hands
  - type: Body
    template: PrimateTemplate
    preset: PrimatePreset
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: monkey
      crit: dead
      dead: dead
    - type: FireVisualizer
      sprite: Mobs/Effects/onfire.rsi
      normalState: Monkey_burning
  - type: Butcherable
    butcheringType: Spike
    spawned:
    - id: FoodMeat
      amount: 3
  - type: MonkeyAccent

- type: entity
  name: mouse
  parent: SimpleMobBase
  id: MobMouse
  description: Squeak!
  components:
  - type: GhostTakeoverAvailable
    makeSentient: true
    name: mouse
    description: A hungry and mischievous mouse.
  - type: Sprite
    drawdepth: FloorObjects
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: mouse-0
      sprite: Mobs/Animals/mouse.rsi
  - type: Clothing
    quickEquip: false
    sprite: Mobs/Animals/mouse.rsi
    HeldPrefix: 0
    Slots:
    - HEAD
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.2
      mass: 10
      mask:
      - SmallImpassable
      - MobImpassable
      layer:
      - Opaque
  - type: MobState
    thresholds:
      0: !type:NormalMobState {}
      10: !type:CriticalMobState {}
      20: !type:DeadMobState {}
  - type: MovementSpeedModifier
    baseWalkSpeed : 5
    baseSprintSpeed : 5
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: mouse-0
      crit: dead-0
      dead: splat-0
  - type: Food
  - type: Hunger
    baseDecayRate: 0.5 # I'm very hungry! Give me. The cheese.
  - type: Extractable
    grindableSolutionName: food
  - type: SolutionContainerManager
    solutions:
      food:
        reagents:
        - ReagentId: Nutriment
          Quantity: 5
        - ReagentId: Blood
          Quantity: 50
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 1
  - type: ReplacementAccent
    accent: mouse
  - type: Tag
    tags:
    - Trash
  - type: Recyclable
  - type: Respirator
    damage:
      types:
        Asphyxiation: 0.25
    damageRecovery:
      types:
        Asphyxiation: -0.25
  - type: Barotrauma
    damage:
      types:
        Blunt: 0.1
  - type: HumanoidAppearance # no this doesnt make sense but its needed for vocal
  - type: Vocal
    # mice are gender neutral who cares
    maleScream: /Audio/Animals/mouse_squeak.ogg
    femaleScream: /Audio/Animals/mouse_squeak.ogg
  # TODO: Remove CombatMode when Prototype Composition is added
  - type: CombatMode
    combatToggleAction:
      enabled: false
      autoPopulate: false
    disarmAction:
      enabled: false
      autoPopulate: false
  - type: Bloodstream
    bloodMaxVolume: 50
  - type: DiseaseCarrier #The other class lab animal and disease vector


- type: entity
  parent: MobMouse
  id: MobMouse1
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: mouse-1
      sprite: Mobs/Animals/mouse.rsi
  - type: Clothing
    HeldPrefix: 1
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: mouse-1
      crit: dead-1
      dead: splat-1
  - type: Bloodstream
    bloodMaxVolume: 50
  - type: DiseaseCarrier #Why doesn't this save if it's only on the parent wtf


- type: entity
  parent: MobMouse
  id: MobMouse2
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: mouse-2
      sprite: Mobs/Animals/mouse.rsi
  - type: Clothing
    HeldPrefix: 1
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: mouse-2
      crit: dead-2
      dead: splat-2
  - type: Bloodstream
    bloodMaxVolume: 50
  - type: DiseaseCarrier


- type: entity
  name: lizard #Weh
  parent: SimpleMobBase
  id: MobLizard
  description: I think it's lost.
  components:
  - type: MovementSpeedModifier
    baseWalkSpeed : 2
    baseSprintSpeed : 3
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: lizard
      sprite: Mobs/Animals/lizard.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.2
      mass: 5
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: lizard
      crit: dead
      dead: dead
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 1
  - type: InteractionPopup
    successChance: 0.3
    interactSuccessString: petting-success-reptile
    interactFailureString: petting-failure-generic
  - type: Bloodstream
    bloodMaxVolume: 50
  - type: Damageable
    damageContainer: Biological
    damageModifierSet: Scale

- type: entity
  name: frog
  parent: SimpleMobBase
  id: MobFrog
  description: Hop hop hop. Lookin' moist.
  components:
  - type: MovementSpeedModifier
    baseWalkSpeed : 4
    baseSprintSpeed : 6
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: frog
      sprite: Mobs/Animals/frog.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.2
      mass: 2
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: frog
      crit: dead
      dead: dead
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 1
  - type: InteractionPopup
    successChance: 0.6
    interactSuccessString: petting-success-frog
    interactFailureString: petting-failure-generic
  - type: Bloodstream
    bloodMaxVolume: 50

# Would be cool to have some functionality for the parrot to be able to sit on stuff
- type: entity
  name: parrot
  parent: SimpleMobBase
  id: MobParrot
  description: Infiltrates your domain, spies on you, and somehow still a cool pet.
  components:
  - type: MovementSpeedModifier
    baseWalkSpeed : 6
    baseSprintSpeed : 6
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: parrot
      sprite: Mobs/Animals/parrot.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.25
      mass: 5
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: parrot
      crit: dead
      dead: dead
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 1
  - type: InteractionPopup
    successChance: 0.6
    interactSuccessString: petting-success-bird
    interactFailureString: petting-failure-generic
  - type: Bloodstream
    bloodMaxVolume: 50

- type: entity
  name: penguin
  parent: SimpleMobBase
  id: MobPenguin
  description: Their lives are constant pain due to their inner-body knees.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: penguin
      sprite: Mobs/Animals/penguin.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.25
      mass: 10
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: penguin
      crit: penguin_dead
      dead: penguin_dead
  - type: Butcherable
    spawned:
    - id: FoodMeatPenguin
      amount: 3
  - type: InteractionPopup
    successChance: 0.5
    interactSuccessString: petting-success-bird
    interactFailureString: petting-failure-generic

- type: entity
  name: grenade penguin
  parent: SimpleMobBase
  id: MobGrenadePenguin
  description: A small penguin with a grenade strapped around its neck. Harvested by the Syndicate from icy shit-hole planets.
  components:
  - type: MovementSpeedModifier
    baseWalkSpeed : 7
    baseSprintSpeed : 7
  - type: UtilityAI
    behaviorSets:
    - UnarmedAttackHostiles
  - type: AiFactionTag
    factions:
    - SimpleHostile
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: penguin
      sprite: Mobs/Animals/grenadepenguin.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.25
      mass: 10
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: penguin
      crit: dead
      dead: dead
  - type: Butcherable
    spawned:
    - id: FoodMeatPenguin
      amount: 3
  - type: UnarmedCombat
    range: 0.5
    arcwidth: 0
    arc: bite
    damage:
      groups:
        Brute: 5
  - type: Item
    size: 80
  - type: OnUseTimerTrigger
    delay: 10
    beepSound:
      path: /Audio/Weapons/Guns/MagOut/pistol_magout.ogg #funny sfx use
    beepInterval: 1
  - type: Explosive
    devastationRange: 1
    heavyImpactRange: 2
    lightImpactRange: 3
    flashRange: 6
  - type: ExplodeOnTrigger

- type: entity
  name: snake
  parent: SimpleMobBase
  id: MobSnake
  description: Hissss! Bites aren't poisonous.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: snake
      sprite: Mobs/Animals/snake.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.25
      mass: 8
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: RotationVisualizer
    - type: DamageStateVisualizer
      normal: snake
# It's death animation is animated so hopefully this should push for separation between "dying" and "death" states.
     # looks stupid, Rotation visualizer for now
     # dead: dead
     # crit: dead
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 1
  - type: InteractionPopup
    successChance: 0.6
    interactSuccessString: petting-success-reptile
    interactFailureString: petting-failure-generic
  - type: Bloodstream
    bloodMaxVolume: 50
  - type: Damageable
    damageContainer: Biological
    damageModifierSet: Scale

# Code unique spider prototypes or combine them all into one spider and get a
# random sprite state when you spawn it.
- type: entity
  name: tarantula
  parent: SimpleMobBase
  id: MobGiantSpider
  description: Widely recognized to be the literal worst thing in existence.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: tarantula
      sprite: Mobs/Animals/spider.rsi
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.35
      mass: 25
      mask:
      - Impassable
      - MobImpassable #Bullets?!
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: tarantula
      crit: tarantula_dead
      dead: tarantula_dead
  - type: Butcherable
    spawned:
    - id: FoodMeatSpider
      amount: 2
  - type: InteractionPopup
    successChance: 0.5
    interactSuccessString: petting-success-tarantula
    interactFailureString: petting-failure-generic

- type: entity
  name: tarantula
  parent: MobGiantSpider
  id: MobGiantSpiderAngry
  components:
    - type: AiFactionTag
      factions:
        - Xeno
    - type: UtilityAI
      behaviorSets:
        - Idle
        - UnarmedAttackHostiles

- type: entity
  name: possum
  parent: SimpleMobBase
  id: MobPossum
  description: '"O Possum! My Possum!" -- Walt Whitman, 1865'
  components:
  - type: Sprite
    drawdepth: Mobs
    sprite: Mobs/Animals/possum.rsi
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: possum
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.35
      mass: 10
      mask:
      - Impassable
      - MobImpassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: possum
      crit: possum_dead # TODO: Make it so possums can "play dead." Probably need AI changes
      dead: possum_dead
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 3
  - type: InteractionPopup
    successChance: 0.2 # Low when undomesticated.
    interactSuccessString: petting-success-possum # Possums don't really make much noise when they're happy. They make clicking noises as a mating call, but that is NOT the same thing!
    interactFailureString: petting-failure-possum
    interactFailureSound:
      path: /Audio/Animals/cat_hiss.ogg # This sound effect is intended for generic hissing. For easy reference it's named after the animal it came from IRL.
  - type: Grammar
    attributes:
      gender: epicene

- type: entity
  name: Morty
  parent: MobPossum
  id: MobPossumMorty
  description: The station's resident Didelphis virginiana. A sensitive but resilient kind of guy.
  components:
  - type: InteractionPopup
    successChance: 1.0 # Hey, c'mon, this is Morty we're talking about here.
  - type: Grammar
    attributes:
      proper: true
      gender: male

- type: entity
  name: raccoon
  parent: SimpleMobBase
  id: MobRaccoon
  description: Trash panda!
  components:
  - type: Sprite
    drawdepth: Mobs
    sprite: Mobs/Animals/raccoon.rsi
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: raccoon
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.35
      mass: 10
      mask:
      - Impassable
      - MobImpassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: raccoon
      crit: raccoon_dead
      dead: raccoon_dead
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 3
  - type: InteractionPopup
    successChance: 0.2 # Low when undomesticated.
    interactSuccessString: petting-success-soft-floofy
    interactFailureString: petting-failure-generic
  - type: Grammar
    attributes:
      gender: epicene

- type: entity
  name: Morticia
  parent: MobRaccoon
  id: MobRaccoonMorticia
  description: A powerful creature of the night. Her eyeshadow is always on point.
  components:
  - type: InteractionPopup
    successChance: 0.7
  - type: Grammar
    attributes:
      proper: true
      gender: female

- type: entity
  name: fox
  parent: SimpleMobBase
  id: MobFox
  description: They're a fox.
  components:
  - type: Sprite
    drawdepth: Mobs
    sprite: Mobs/Animals/fox.rsi
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: fox
  - type: Physics
  - type: Fixtures
    fixtures:
    - shape:
        !type:PhysShapeCircle
        radius: 0.35
      mass: 10
      mask:
      - Impassable
      - MobImpassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: fox
      crit: fox_dead
      dead: fox_dead
  - type: Butcherable
    spawned:
    - id: FoodMeat
      amount: 3
  - type: InteractionPopup
    successChance: 0.5
    interactSuccessString: petting-success-soft-floofy
    interactFailureString: petting-failure-generic
  - type: Grammar
    attributes:
      gender: epicene
  - type: Bloodstream
    bloodMaxVolume: 100

- type: entity
  name: Renault
  parent: MobFox
  id: MobFoxRenault
  description: The captain's trustworthy fox.
  components:
  - type: InteractionPopup
    successChance: 1
  - type: Grammar
    attributes:
      proper: true
      gender: female
