- type: entity
  id: CombatMech
  abstract: true
  categories: [ HideSpawnMenu ]
  components:
  - type: Mech
    equipmentWhitelist:
      tags:
      - CombatMech

- type: entity
  id: IndustrialMech
  abstract: true
  categories: [ HideSpawnMenu ]
  components:
  - type: Mech
    equipmentWhitelist:
      tags:
      - IndustrialMech
  - type: MeleeThrowOnHit
    speed: 10
    distance: 1

- type: entity
  id: SpecialMech
  abstract: true
  categories: [ HideSpawnMenu ]
  components:
  - type: Mech
    equipmentWhitelist:
      tags:
      - SpecialMech

- type: entity
  id: SmallMech
  abstract: true
  categories: [ HideSpawnMenu ]
  components:
  - type: Mech
    equipmentWhitelist:
      tags:
      - SmallMech

- type: entity
  id: NanotrasenMech
  abstract: true
  categories: [ HideSpawnMenu ]
  components:
  - type: Mech
    firstStart: true
    lowPowerSound:
      path: /Audio/Mecha/lowpowernano.ogg
    nominalSound:
      path: /Audio/Mecha/nominalnano.ogg

- type: entity
  id: SyndieMech
  abstract: true
  categories: [ HideSpawnMenu ]
  components:
  - type: Mech
    firstStart: true
    lowPowerSound:
      path: /Audio/Mecha/lowpowersyndi.ogg
    nominalSound:
      path: /Audio/Mecha/nominalsyndi.ogg
    nominalLongSound:
      path: /Audio/Mecha/longsyndiactivation.ogg
    criticalDamageSound:
      path: /Audio/Mecha/critdestrsyndi.ogg

- type: entity
  parent: MechHonkerBattery
  id: MechHonkerFilled
  suffix: Battery, Filled
  components:
  - type: Mech
    startingEquipment:
      - WeaponMechSpecialBananaMortar
      - WeaponMechSpecialMousetrapMortar
      - MechEquipmentHorn

# Ripley MK-II
- type: entity
  id: MechRipley2
  parent: [ BaseMech, IndustrialMech, BaseCargoContraband ]
  name: Ripley APLU MK-II
  description: The "MK-II" has a pressurized cabin for space operations, and stronger clamps are able to force doors open, but the added weight has slowed it down. # 🌟Starlight-Change
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/ripleymkii.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
    - type: Mech
      maxIntegrity: 250 # Plasteel armor grants this mech superior durability
      equipmentWhitelist:
        tags:
          - IndustrialMech
          - PaddyUpgradeKit
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Blunt: 25 #brought in line with Ripley
    - type: MovementSpeedModifier
      baseWalkSpeed: 2 #All mechs walk at the same speed
      baseSprintSpeed: 3.0 #Mk II is still slower, but not unusably slow
    - type: Damageable
      damageModifierSet: MediumArmorNT
    - type: PointLight
      mask: /Textures/Effects/LightMasks/cone.png
      autoRot: true
      radius: 3
      energy: 5
      enabled: false
    - type: Construction
      graph: PaddyUpgrade
      node: start
      defaultTarget: paddy
    - type: Prying
      pryPowered: true

- type: entity
  id: MechRipley2Battery
  parent: MechRipley2
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorHigh
        mech-gas-tank-slot:
          - MechAirTankFilled

# Paddy
- type: entity
  id: MechPaddy
  parent: [ BaseMech, CombatMech, IndustrialMech, BaseSecurityContraband ]
  name: Paddy
  description: Autonomous Power Loader Unit Subtype Paddy. A Modified MK-II Ripley design intended for light security use.
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/paddy.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
        - state: base-sirens
          map: [ "enum.MechVisualLayers.Siren" ]
          shader: unshaded
          visible: false
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
    - type: Mech
      equipmentWhitelist:
        tags:
          - IndustrialMech
          - CombatMech
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      maxIntegrity: 250
      maxEquipmentAmount: 4
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MechSiren
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      bluntStaminaDamageFactor: 1.5
      damage:
        types:
          Blunt: 30 #Decent for a loader, but without the high structural damage of a combat mech. #
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 4
    - type: PointLight
      mask: /Textures/Effects/LightMasks/cone.png
      autoRot: true
      radius: 5
      energy: 5
      enabled: false
    - type: Prying
      pryPowered: true

- type: entity
  id: MechPaddyBattery
  parent: MechPaddy
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorHigh
        mech-gas-tank-slot:
          - MechAirTankFilled

- type: entity
  id: MechPaddyFilled
  parent: MechPaddyBattery
  suffix: Battery, Air, Filled
  components:
    - type: Mech
      startingEquipment:
        - WeaponMechCombatDisabler
        - WeaponMechCombatFlashbangLauncher

# Clarke
- type: entity
  id: MechClarke
  parent: [ BaseMech, IndustrialMech, BaseCargoContraband ]
  name: Clarke
  description: A special-purpose mech for heavy-duty mining operations. Outfitted with treads for stable locomotion in hazardous terrain.
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/clarke.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
    - type: Mech
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Blunt: 26
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 4.5
    - type: MechThrusters
    - type: PointLight
      mask: /Textures/Effects/LightMasks/cone.png
      autoRot: true
      radius: 7
      energy: 6
      enabled: false

- type: entity
  id: MechClarkeBattery
  parent: MechClarke
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorHigh
        mech-gas-tank-slot:
          - MechAirTankFilled

# Combat-Station Mechs

# Gygax
- type: entity
  id: MechGygax
  parent: [ BaseMech, CombatMech, BaseSecurityContraband ]
  name: Gygax
  description: While lightly armored, the Gygax has incredible mobility thanks to its ability that lets it smash through walls at high speeds.
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/gygax.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
    - type: Mech
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      maxIntegrity: 325
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Blunt: 30 #THWACK
          Structural: 180
    - type: MeleeThrowOnHit
      speed: 15
      distance: 2.5
    - type: MovementSpeedModifier
      baseWalkSpeed: 2 #All mechs walk at the same speed
      baseSprintSpeed: 4.0
    - type: Damageable
      damageModifierSet: GygaxArmor
    - type: MechThrusters
    - type: PointLight
      mask: /Textures/Effects/LightMasks/cone.png
      autoRot: true
      radius: 6
      energy: 5
      enabled: false
    - type: Prying
      pryPowered: true

- type: entity
  id: MechGygaxBattery
  parent: MechGygax
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorHigh
        mech-gas-tank-slot:
          - MechAirTankFilled

# Durand
- type: entity
  id: MechDurand
  parent: [ BaseMech, CombatMech, BaseSecurityContraband ]
  name: Durand
  description: A slow but beefy combat exosuit that is extra scary in confined spaces due to its punches. Xenos hate it!
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/durand.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
    - type: Mech
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      maxIntegrity: 465
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Blunt: 40
          Structural: 220
    - type: MeleeThrowOnHit
      speed: 18
      distance: 4
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 2.8
    - type: Damageable
      damageModifierSet: DurandArmor
    - type: MechThrusters
    - type: PointLight
      mask: /Textures/Effects/LightMasks/cone.png
      autoRot: true
      radius: 7
      energy: 5
      enabled: false
    - type: Prying
      pryPowered: true

- type: entity
  id: MechDurandBattery
  parent: MechDurand
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorHigh
        mech-gas-tank-slot:
          - MechAirTankFilled

# NanoTrasen Combat Mechs

# Marauder
- type: entity
  id: MechMarauder
  parent: [ BaseMech, CombatMech, BaseCentcommContraband, NanotrasenMech ]
  name: Marauder
  description: Looks like we're all saved. # ERT mech
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/marauder.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
    - type: Mech
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      maxIntegrity: 575
      maxEquipmentAmount: 4
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Blunt: 40
          Structural: 200
    - type: MeleeThrowOnHit
      speed: 20
      distance: 5
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 2.2
    - type: Damageable
      damageModifierSet: HeavyArmorNT
    - type: MechThrusters
    - type: Prying
      pryPowered: true

- type: entity
  id: MechMarauderBattery
  parent: MechMarauder
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorHyper
        mech-gas-tank-slot:
          - MechAirTankFilled

- type: entity
  id: MechMarauderFilled
  parent: MechMarauderBattery
  suffix: Battery, Filled
  components:
    - type: Mech
      startingEquipment:
        - WeaponMechChainSword
        - WeaponMechCombatPulseRifle
        - WeaponMechCombatUltraRifle
        - WeaponMechCombatMissileRack8

# Seraph
- type: entity
  id: MechSeraph
  parent: [ BaseMech, CombatMech, BaseNanoTrasenContraband, NanotrasenMech ]
  name: Seraph
  description: That's the last thing you'll see. # Death Squad mech
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/seraph.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
    - type: Mech
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      maxIntegrity: 700
      maxEquipmentAmount: 5
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Blunt: 60
          Structural: 400
    - type: MeleeThrowOnHit
      speed: 20
      distance: 5
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 3.7
    - type: Damageable
      damageModifierSet: HeavyArmorNT
    - type: MechThrusters
    - type: Prying
      pryPowered: true

- type: entity
  id: MechSeraphBattery
  parent: MechSeraph
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorAntique
        mech-gas-tank-slot:
          - MechAirTankFilled

- type: entity
  id: MechSeraphFilled
  parent: MechSeraphBattery
  suffix: Battery, Filled
  components:
    - type: Mech
      startingEquipment:
        - WeaponMechChainSword
        - WeaponMechCombatPulseRifle
        - WeaponMechCombatShotgun
        - WeaponMechCombatMissileRack6
        - WeaponMechCombatUltraRifle

# Syndicate Combat Mech

# Dark Gygax
- type: entity
  id: MechGygaxSyndie
  parent: [ BaseMech, CombatMech, BaseSyndicateContraband, SyndieMech ]
  name: Dark Gygax
  description: A modified Gygax used for nefarious purposes. On the back of the armor plate there is an inscription "Cybersun Inc."
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/darkgygax.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
    - type: Mech
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      maxIntegrity: 375
      maxEquipmentAmount: 4
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Blunt: 30
          Structural: 200
    - type: MeleeThrowOnHit
      speed: 15
      distance: 3
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 4.5
    - type: Damageable
      damageModifierSet: MediumArmorSyndi
    - type: MechThrusters
    - type: PointLight
      mask: /Textures/Effects/LightMasks/cone.png
      autoRot: true
      radius: 7
      energy: 6
      enabled: false
    - type: Prying
      pryPowered: true

- type: entity
  id: MechGygaxSyndieBattery
  parent: MechGygaxSyndie
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorMicro
        mech-gas-tank-slot:
          - MechAirTankFilled

- type: entity
  id: MechGygaxSyndieFilled
  parent: MechGygaxSyndieBattery
  suffix: Battery, Filled
  components:
    - type: Mech
      startingEquipment:
        - WeaponMechChainSword
        - WeaponMechCombatShotgun
        - WeaponMechCombatMissileRack8
        - WeaponMechCombatTeslaCannon

# Mauler
- type: entity
  id: MechMaulerSyndie
  parent: [ BaseMech, CombatMech, BaseSyndicateContraband, SyndieMech ]
  name: Mauler
  description: A modified Marauder used by the Syndicate that's not as maneuverable as the Dark Gygax, but it makes up for that in armor and sheer firepower. On the back of the armor plate there is an inscription "Cybersun Inc."
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/mauler.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
    - type: Mech
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      maxIntegrity: 550
      maxEquipmentAmount: 5
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Blunt: 50
          Structural: 400
    - type: MeleeThrowOnHit
      speed: 20
      distance: 5
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 2.2
    - type: Damageable
      damageModifierSet: MaulerArmor
    - type: MechThrusters
    - type: Magboots
    - type: PointLight
      mask: /Textures/Effects/LightMasks/cone.png
      autoRot: true
      radius: 6
      energy: 5
      color: "#ff0000"
      enabled: false
    - type: Prying
      pryPowered: true

- type: entity
  id: MechMaulerSyndieBattery
  parent: MechMaulerSyndie
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorMicro
        mech-gas-tank-slot:
          - MechAirTankFilled

- type: entity
  id: MechMaulerSyndieFilled
  parent: MechMaulerSyndieBattery
  suffix: Battery, Filled
  components:
    - type: Mech
      startingEquipment:
        - WeaponMechChainSword
        - WeaponMechCombatUltraRifle
        - WeaponMechCombatShotgun
        - WeaponMechCombatMissileRack6
        - WeaponMechCombatTeslaCannon

# Dark H.O.N.K.
- type: entity
  parent: [ BaseMech, SpecialMech, SyndieMech, BaseSyndicateContraband ]
  id: MechHonkerDark
  name: Dark H.O.N.K.
  description: A Cybersun-modified H.O.N.K. that strikes fear into the hearts of all who hear its squeaking footsteps.
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: Objects/Specific/Mech/Mechs/Basic/honker.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: dark
    - type: FootstepModifier
      footstepSoundCollection:
        collection: FootstepClown
        params:
          variation: 0.17
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Structural: 400 # Heeeeeere's H.O.N.K.ie!!!
      soundHit:
        path: /Audio/Items/bikehorn.ogg
    - type: MeleeThrowOnHit
      speed: 1
      distance: 4 # To be even more annoying
    - type: Mech
      baseState: dark
      openState: dark-open
      brokenState: dark-broken
      mechToPilotDamageMultiplier: 0.0
      maxIntegrity: 550
      maxEquipmentAmount: 5
      airtight: true # Space Honks is real.
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: Prying
      pryPowered: true

- type: entity
  parent: MechHonkerDark
  id: MechHonkerDarkBattery
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorMicro
        mech-gas-tank-slot:
          - MechAirTankFilled

- type: entity
  parent: MechHonkerDarkBattery
  id: MechHonkerDarkFilled
  suffix: Battery, Filled
  components:
    - type: Mech
      startingEquipment:
        - WeaponMechSpecialBananaMortar
        - WeaponMechSpecialMousetrapMortar
        - MechEquipmentHorn
        - WeaponMechSpecialPieCannon

# Reticence
- type: entity
  id: MechMimeSyndie
  parent: [ BaseMech, CombatMech, BaseSyndicateContraband, SyndieMech ]
  name: Reticence
  description: A lightweight mech favored by mime assassins. Whisper-quiet servos and shock absorber arrays result in drastically reduced footstep sound.
  components:
    - type: Sprite
      drawdepth: Mobs
      noRot: true
      sprite: _Starlight/Objects/Specific/Mechs/Mechs/reticence.rsi
      layers:
        - map: [ "enum.MechVisualLayers.Base" ]
          state: base
    - type: FootstepModifier
      footstepSoundCollection:
        path: /Audio/Mecha/sound_mecha_powerloader_step.ogg
        params:
          volume: -12
    - type: Mech
      baseState: base
      openState: base-open
      brokenState: base-broken
      mechToPilotDamageMultiplier: 0.0
      airtight: true
      maxIntegrity: 250
      maxEquipmentAmount: 4
      pilotWhitelist:
        components:
          - HumanoidAppearance
    - type: MeleeWeapon
      hidden: true
      attackRate: 1
      damage:
        types:
          Blunt: 20
          Structural: 150
    - type: MeleeThrowOnHit
      speed: 15
      distance: 3
    - type: MovementSpeedModifier
      baseWalkSpeed: 2
      baseSprintSpeed: 4.5
    - type: Damageable
      damageModifierSet: MediumArmorSyndi
    - type: MechThrusters
    - type: PointLight
      mask: /Textures/Effects/LightMasks/cone.png
      autoRot: true
      radius: 7
      energy: 6
      enabled: false
    - type: Prying
      pryPowered: true

- type: entity
  parent: MechMimeSyndie
  id: MechMimeSyndieBattery
  suffix: Battery, Air
  components:
    - type: ContainerFill
      containers:
        mech-battery-slot:
          - MechReactorMicro
        mech-gas-tank-slot:
          - MechAirTankFilled

- type: entity
  parent: MechMimeSyndieBattery
  id: MechMimeSyndieFilled
  suffix: Battery, Filled
  components:
    - type: Mech
      startingEquipment:
        - WeaponMechSniperMime
