# Bounds Guide
#1D2L3U4R

- type: entity
  name: bat
  parent: SimpleMobBase
  id: BatMob_Content
  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
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.30,-0.25,0.40,0.25"
      mass: 50
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: bat
      dead: dead

- type: entity
  name: bee
  parent: SimpleMobBase
  id: BeeMob_Content
  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: AsteroidRock
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: 0
      sprite: Mobs/Animals/bee.rsi
  - type: Physics
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.90,-0.50,0.05,0.50"
      mass: 90
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: 0
      dead: dead

- type: entity
  name: chicken
  parent: SimpleMobBase
  id: ChickenMob_Content
  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: Physics
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.45,-0.20,0.10,0.20"
      mass: 20
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: chicken-0
      dead: dead-0

- type: entity
  name: butterfly
  parent: SimpleMobBase
  id: ButterflyMob_Content
  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
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.20,-0.20,0.20,0.20"
      mass: 5
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - 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
      dead: dead

- type: entity
  name: cow
  parent: SimpleMobBase
  id: CowMob_Content
  description: Moo.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: cow
      sprite: Mobs/Animals/cow.rsi
  - type: Physics
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.60,-0.50,0.05,0.50"
      mass: 20
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: cow
      dead: dead

- type: entity
  name: crab
  parent: SimpleMobBase
  id: CrabMob_Content
  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
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.10,-0.10,0.10,0.10"
      mass: 5
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: crab
      dead: dead
    - type: AsteroidRockVisualizer

- type: entity
  name: goat
  parent: SimpleMobBase
  id: GoatMob_Content
  description: His spine consists of long sharp segments, no wonder he is so grumpy.
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: goat
      sprite: Mobs/Animals/goat.rsi
  - type: Physics
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.60,-0.50,0.05,0.50"
      mass: 20
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: goat
      dead: dead

# 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: GooseMob_Content
  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: Physics
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.45,-0.35,0.45,0.35"
      mass: 20
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: goose
      dead: dead

- type: entity
  name: gorilla
  parent: SimpleMobBase
  id: GorillaMob_Content
  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
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.30,-0.35,0.35,0.35"
      mass: 20
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: crawling
      dead: dead

- type: entity
  name: monkey
  id: MonkeyMob_Content
  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: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: monkey
      sprite: Mobs/Animals/monkey.rsi
  - type: Physics
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.30,-0.30,0.25,0.30"
      mass: 10
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: monkey
      dead: dead
    - type: FireVisualizer
      sprite: Mobs/Effects/onfire.rsi
      normalState: Monkey_burning

- type: entity
  name: mouse
  parent: SimpleMobBase
  id: MouseMob_Content
  description: Squeak!
  components:
  - type: Tag
    tags:
    - Grindable
  - type: GhostTakeoverAvailable
    makeSentient: true
    name: mouse
    description: A mouse in maint.
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: mouse-0
      sprite: Mobs/Animals/mouse.rsi
  - type: Clothing
    QuickEquip: false
    sprite: Mobs/Animals/mouse.rsi
    HeldPrefix: 0
    ClothingPrefix: 0
    Slots:
    - Helmet
  - type: Physics
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.30,-0.40,0.45,0.40"
      mass: 10
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: MovementSpeedModifier
    baseWalkSpeed : 5
    baseSprintSpeed : 5
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: mouse-0
      crit: dead-0
      dead: splat-0
# Eek! You can eat them alive for now until someone makes something that detects when
# a mob is dead or something idk
  - type: Food
  - type: LoopingSound
  - type: SolutionContainer
    contents:
      reagents:
      - ReagentId: Nutriment
        Quantity: 5
  - type: MouseAccent

- type: entity
  parent: MouseMob_Content
  id: MouseMob1_Content
  components:
  - type: Sprite
    drawdepth: Mobs
    layers:
    - map: ["enum.DamageStateVisualLayers.Base"]
      state: mouse-1
      sprite: Mobs/Animals/mouse.rsi
  - type: Clothing
    HeldPrefix: 1
    ClothingPrefix: 1
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: mouse-1
      crit: dead-1
      dead: splat-1

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

# Would be cool to have some functionality for the parrot to be able to sit on stuff
- type: entity
  name: parrot
  parent: SimpleMobBase
  id: ParrotMob_Content
  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
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.40,-0.35,0.20,0.35"
      mass: 10
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: parrot
      dead: dead

- type: entity
  name: penguin
  parent: SimpleMobBase
  id: PenguinMob_Content
  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
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.50,-0.30,0.35,0.30"
      mass: 10
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: penguin
      dead: penguin_dead

- type: entity
  name: snake
  parent: SimpleMobBase
  id: SnakeMob_Content
  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
    bodyType: KinematicController
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.50,-0.30,0.35,0.30"
      mass: 10
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: snake
# It's death animation is animated so hopefully this should push for separation between "dying" and "death" states.
      dead: dead

# 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: GiantSpiderMob_Content
  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
    bodyType: Dynamic
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.30,-0.40,0.45,0.40"
      mass: 10
      mask:
      - Impassable
      - VaultImpassable
      - SmallImpassable
      layer:
      - Opaque
  - type: Appearance
    visuals:
    - type: DamageStateVisualizer
      normal: tarantula
      dead: tarantula_dead
