- type: entity
  id: BaseMech
  save: false
  abstract: true
  components:
  - type: MobMover
  - type: Mech
    maxEquipmentAmount: 2
  - type: MechAir
  - type: AirFilter
    # everything except oxygen and nitrogen
    gases:
    - CarbonDioxide
    - Plasma
    - Tritium
    - WaterVapor
    - Ammonia
    - NitrousOxide
    - Frezon
    - BZ #Funky/Goob
    - Healium #Funky/Goob
    - Nitrium #Funky/Goob
    #- Helium3 TODO: fusion
    # remove everything except oxygen to maintain oxygen ratio
    overflowGases:
    - Nitrogen
    - CarbonDioxide
    - Plasma
    - Tritium
    - WaterVapor
    - Ammonia
    - NitrousOxide
    - Frezon
    - BZ #Funky/Goob
    - Healium #Funky/Goob
    - Nitrium #Funky/Goob
    - Pluoxium #Funky/Goob
    #- Helium3 TODO: fusion
  - type: AirIntake
  # for intake and filter to work
  - type: AtmosDevice
    requireAnchored: false
    joinSystem: true
  - type: DoAfter
  - type: Repairable
    fuelCost: 25
    doAfterDelay: 10
  - type: UserInterface
    interfaces:
      enum.MechUiKey.Key:
        type: MechBoundUserInterface
      enum.RadarConsoleUiKey.Key:
        type: RadarConsoleBoundUserInterface
  - type: MeleeWeapon
    canWideSwing: false
    hidden: true
    attackRate: 0.75
    damage:
      types:
        Blunt: 25 #thwack
        Structural: 20
    soundHit:
      collection: MetalThud
  - type: Puller
    needsHands: false
  - type: InputMover
  - type: InteractionOutline
  - type: MovementSpeedModifier
    baseWalkSpeed: 1
    baseSprintSpeed: 2
    baseWeightlessModifier: 5 # Mono
  - type: Tag
    tags:
    - DoorBumpOpener
    - FootstepSound
  - type: Pullable
  - type: Physics
    bodyType: KinematicController
  - type: Clickable
  - type: WiresPanel
  - type: Fixtures
    fixtures:
      fix1:
        shape:
          !type:PhysShapeCircle
          radius: 0.45
        density: 1000
        mask:
        - MobMask
        layer:
        - MobLayer
  - type: Appearance
  - type: ContainerContainer
    containers:
      mech-pilot-slot: !type:ContainerSlot
      mech-equipment-container: !type:Container
      mech-battery-slot: !type:ContainerSlot
      paper_label: !type:ContainerSlot # Goobstation
  - type: Damageable
    damageContainer: StructuralInorganic # Mono
    damageModifierSet: MechArmorLight # Mono
  - type: FootstepModifier
    footstepSoundCollection:
      path: /Audio/Mecha/mechmove03.ogg
  - type: GuideHelp
    guides:
    - Robotics
  - type: Destructible
    thresholds:
    - trigger:
        !type:DamageTrigger
        damage: 5000 # Mono
      behaviors:
      - !type:PlaySoundBehavior
        sound:
          collection: MetalBreak
      - !type:ChangeConstructionNodeBehavior
        node: start
      - !type:DoActsBehavior
        acts: ["Destruction"]
  # Goobstation Change Start
  - type: UnpoweredFlashlight # Goobstation mech lights for all mechs its unpowered to match hardsuits
  - type: PointLight
    enabled: false
    softness: 5
    autoRot: true
    mask: /Textures/Effects/LightMasks/cone.png
    radius: 7
    energy: 3
    netsync: false
  - type: GenericVisualizer
    visuals:
      enum.PaperLabelVisuals.HasLabel:
        enum.PaperLabelVisuals.Layer:
          True: { visible: true }
          False: { visible: false }
      enum.PaperLabelVisuals.LabelType:
        enum.PaperLabelVisuals.Layer:
          Paper: { state: paper }
          Bounty: { state: bounty }
          CaptainsPaper: { state: captains_paper }
          Invoice: { state: invoice }
  - type: PaperLabel
    labelSlot:
      insertVerbText: Attach Label
      ejectVerbText: Remove Label
      whitelist:
        components:
        - Paper
      blacklist:
        tags:
        - Book
  - type: StaticPrice
    price: 450
  - type: DragDropTargetable
  # Goobstation Change End
  # <Mono>
  - type: RadarConsole
    followEntity: true
  - type: Magboots
  # </Mono>

- type: entity
  id: MechRipley
  parent: [ BaseMech, IndustrialMech ] # Goobstation
  name: Ripley APLU
  description: Versatile and lightly armored, the Ripley is useful for almost any heavy work scenario. The "APLU" stands for Autonomous Power Loading Unit.
  components:
  - type: Sprite
    drawdepth: Mobs
    noRot: true
    sprite: Objects/Specific/Mech/mecha.rsi
    layers:
    - map: [ "enum.MechVisualLayers.Base" ]
      state: ripley
  - type: FootstepModifier
    footstepSoundCollection:
      path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
  - type: Mech
    baseState: ripley
    openState: ripley-open
    brokenState: ripley-broken
    mechToPilotDamageMultiplier: 0.75
    pilotWhitelist:
      components:
        - HumanoidAppearance
        - BorgChassis # Goobstation - Let borgs pilot mechs
  - type: MeleeWeapon
    hidden: true
    attackRate: 1
    damage:
      types:
        Blunt: 14 #intentionally shit so people realize that going into combat with the ripley is usually a bad idea.
  - type: MovementSpeedModifier
    baseWalkSpeed: 2.25
    baseSprintSpeed: 3.6
  - type: Tag
    tags:
    - DoorBumpOpener
    - CivilianMechBounty # Mono
  - type: Prying # Mono
    pryPowered: true
    speedModifier: 2
    useSound:
      path: /Audio/Items/jaws_pry.ogg

- type: entity
  id: MechRipleyBattery
  parent: MechRipley
  suffix: Battery
  components:
  - type: ContainerFill
    containers:
      mech-battery-slot:
      - PowerCellHigh

- type: entity
  parent: [ BaseMech, SpecialMech ] # Goobstation
  id: MechHonker
  name: H.O.N.K.
  description: "Produced by \"Tyranny of Honk, INC\", this exosuit is designed as heavy clown-support. Used to spread the fun and joy of life. HONK!"
  components:
  - type: Sprite
    drawdepth: Mobs
    noRot: true
    sprite: Objects/Specific/Mech/mecha.rsi
    layers:
    - map: [ "enum.MechVisualLayers.Base" ]
      state: honker
  - type: FootstepModifier
    footstepSoundCollection:
      collection: FootstepClown
      params:
        variation: 0.17
  - type: Mech
    maxEquipmentAmount: 2
    baseState: honker
    openState: honker-open
    brokenState: honker-broken
    mechToPilotDamageMultiplier: 0.5
    airtight: true # Goobstation - Space Honk is real.
    pilotWhitelist:
      components:
      - HumanoidAppearance
      - BorgChassis # Goobstation - Let borgs pilot mechs
  - type: Tag
    tags:
    - DoorBumpOpener
    - CivilianMechBounty # Mono
  - type: Prying # Mono
    pryPowered: true
    speedModifier: 2
    useSound:
      path: /Audio/Items/jaws_pry.ogg

- type: entity
  parent: MechHonker
  id: MechHonkerBattery
  suffix: Battery
  components:
  - type: ContainerFill
    containers:
      mech-battery-slot:
      - PowerCellHigh

- type: entity
  parent: [ BaseMech, SmallMech ] # Goobstation
  id: MechHamtr
  name: HAMTR
  description: "An experimental mech which uses a brain–computer interface to connect directly to a hamsters brain."
  components:
  - type: Sprite
    drawdepth: Mobs
    noRot: true
    sprite: Objects/Specific/Mech/mecha.rsi
    layers:
    - map: [ "enum.MechVisualLayers.Base" ]
      state: hamtr
  - type: FootstepModifier
    footstepSoundCollection:
      path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
  - type: Mech
    baseState: hamtr
    openState: hamtr-open
    brokenState: hamtr-broken
    mechToPilotDamageMultiplier: 0.2
    maxEquipmentAmount: 2
    airtight: true
    pilotWhitelist:
      tags:
      - Hamster
  - type: MeleeWeapon
    hidden: true
    attackRate: 0.8
    damage:
      types:
        Blunt: 10 #thwack
        Structural: 2
  - type: MovementSpeedModifier
    baseWalkSpeed: 2.4
    baseSprintSpeed: 3.7
  - type: Prying # Mono
    pryPowered: true
    speedModifier: 2
    useSound:
      path: /Audio/Items/jaws_pry.ogg

- type: entity
  parent: MechHamtr
  id: MechHamtrBattery
  suffix: Battery
  components:
  - type: ContainerFill
    containers:
      mech-battery-slot:
      - PowerCellHigh

# Vim!!!!!!!

- type: entity
  parent: BaseMech
  id: MechVim
  name: Vim
  description: A miniature exosuit from Nanotrasen, developed to let the irreplaceable station pets live a little longer.
  components:
  - type: Sprite
    drawdepth: Mobs
    noRot: true
    sprite: Objects/Specific/Mech/mecha.rsi
    layers:
    - map: [ "enum.MechVisualLayers.Base" ]
      state: vim
  - type: Fixtures
    fixtures:
      fix1:
        shape:
          !type:PhysShapeCircle
          radius: 0.15
        density: 80
        mask:
        - MobMask
        layer:
        - MobLayer
  - type: FootstepModifier
    footstepSoundCollection:
      path: /Audio/Mecha/mechmove03.ogg
      params:
        volume: -10
  - type: Mech
    baseState: vim
    openState: vim-open
    brokenState: vim-broken
    maxEquipmentAmount: 2 # Frontier 0<2
    # keep mouse safe
    mechToPilotDamageMultiplier: 0.1
    airtight: true
    equipmentWhitelist: # Frontier
      tags: # Frontier
      - SmallMech # Frontier
    pilotWhitelist:
      tags:
      - VimPilot
  - type: MeleeWeapon
    hidden: true
    attackRate: 0.8
    damage:
      types:
        Blunt: 10 #thwack
        Structural: 2
  - type: MovementSpeedModifier
    baseWalkSpeed: 2.25
    baseSprintSpeed: 3.6
  - type: Access
    groups: # Frontier: contractor access
    - GeneralAccess # Frontier
    # tags: # Frontier
    # - Maintenance # Frontier
  # TOOD: buzz / chime actions
  # TODO: builtin flashlight
  - type: Prying # Mono
    pryPowered: true
    speedModifier: 2
    useSound:
      path: /Audio/Items/jaws_pry.ogg

- type: entity
  parent: MechVim
  id: MechVimBattery
  suffix: Battery
  components:
  - type: ContainerFill
    containers:
      mech-battery-slot:
      - PowerCellHigh
