# SPDX-FileCopyrightText: 2025 Aiden <28298836+Aidenkrz@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 Aiden <aiden@djkraz.com>
# SPDX-FileCopyrightText: 2025 BloodfiendishOperator <141253729+Diggy0@users.noreply.github.com>
# SPDX-FileCopyrightText: 2025 GoobBot <uristmchands@proton.me>
# SPDX-FileCopyrightText: 2025 SX-7 <sn1.test.preria.2002@gmail.com>
# SPDX-FileCopyrightText: 2025 Solstice <solsticeofthewinter@gmail.com>
# SPDX-FileCopyrightText: 2025 SolsticeOfTheWinter <solsticeofthewinter@gmail.com>
# SPDX-FileCopyrightText: 2025 coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
#
# SPDX-License-Identifier: AGPL-3.0-or-later
## Navy Shit

# Central Command!

- type: randomHumanoidSettings
  id: CentcommHumanoid
  speciesBlacklist:
  - Monkey
  - Kobold
  - Abductor
  - Yowie
  - IPC
  - Diona
  - Harpy
  - Vox # Pasha
  - Tajaran # Specism.
  - Resomi # Sprites look shit on them.
  - Oni # Same as above, plus it fucks over ERTs.
  - Gingerbread # Soecusn
  - Plasmaman
  - Reptilian
  - Moth
  - Shadowkin # One flash is all it takes...
  - Arachnid
  - Vulpkanin
  - Rodentia
  - SlimePerson
  - Dwarf
  - Feroxi
  - Chitinid
  components:
  - type: RandomHumanoidAppearance
    randomizeName: false
  - type: GhostTakeoverAvailable
  - type: MindShield
  - type: AntagImmune
  - type: Speech
    speechVerb: HolierThanThou
  - type: GhostRole
    requirements:
    - !type:DepartmentTimeRequirement
      department: Security
      time: 36000 # Ten Hours
    - !type:DepartmentTimeRequirement
      department: Command
      time: 108000 # Thirty hours. Fuck you.

# Navy Officer

- type: entity
  id: RandomHumanoidSpawnerNavyOfficer
  name: Navy Officer
  suffix: CentComm
  components:
  - type: Sprite
    sprite: _Goobstation/Clothing/Uniforms/Jumpsuit/navy_gold.rsi
    state: icon
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstLeader
    - NamesMilitaryLast
    nameFormat: name-format-standard
  - type: RandomHumanoidSpawner
    settings: NavyOfficer

- type: randomHumanoidSettings
  id: NavyOfficer
  parent: CentcommHumanoid
  randomizeName: false
  components:
  - type: AutoImplant
    implants: [ FreedomImplant, BluespaceLifelineImplant, RadioImplantCentcomm, StypticStimulatorImplant]
  - type: GhostRole
    name: ghost-role-information-navy-officer-name
    description: ghost-role-information-navy-officer-description
    rules: ghost-role-information-navy-officer-rules
    raffle:
      settings: short
  - type: Loadout
    prototypes: [ NavyOfficerGear ]
    roleLoadout: [ RoleSurvivalEVA ]
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstLeader
    - NamesMilitaryLast
    nameFormat: name-format-standard

# Navy Captain

- type: entity
  id: RandomHumanoidSpawnerNavyCaptain
  name: Navy Captain
  suffix: ADMIN ONLY, DO FUCKING NOT
  components:
  - type: Sprite
    sprite: _Goobstation/Clothing/Uniforms/Jumpsuit/navy_gold.rsi
    state: icon
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstHighRank
    - NamesMilitaryLast
    nameFormat: name-format-standard
  - type: RandomHumanoidSpawner
    settings: NavyCaptain

- type: randomHumanoidSettings
  id: NavyCaptain
  parent: CentcommHumanoid
  randomizeName: false
  components:
  - type: AutoImplant
    implants: [ FreedomImplant, BluespaceLifelineImplant, RadioImplantCentcomm, NutrimentPumpImplant, StypticStimulatorImplant]
  - type: GhostRole
    name: ghost-role-information-navy-captain-name
    description: ghost-role-information-navy-captain-description
    rules: ghost-role-information-navy-captain-rules
    raffle:
      settings: short
  - type: Loadout
    prototypes: [ NavyCaptainGear ]
    roleLoadout: [ RoleSurvivalEVA ]
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstHighRank
    - NamesMilitaryLast
    nameFormat: name-format-standard

# Navy Undercover Officer

- type: entity
  id: RandomHumanoidSpawnerNavyOfficerUndercover
  name: Undercover Navy Officer
  suffix: CentComm
  components:
  - type: Sprite
    sprite: _Goobstation/Clothing/Uniforms/Jumpsuit/navy_gold.rsi
    state: icon
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstLeader
    - NamesMilitaryLast
    nameFormat: name-format-standard
  - type: RandomHumanoidSpawner
    settings: NavyOfficerUndercover

- type: randomHumanoidSettings
  id: NavyOfficerUndercover
  parent: CentcommHumanoid
  randomizeName: false
  components:
  - type: AutoImplant
    implants: [ FreedomImplant, BluespaceLifelineImplant, RadioImplantCentcomm, NutrimentPumpImplant, StypticStimulatorImplant]
  - type: GhostRole
    name: ghost-role-information-navy-officer-undercover-name
    description: ghost-role-information-navy-officer-undercover-description
    rules: ghost-role-information-navy-officer-rules
    raffle:
      settings: short
  - type: Loadout
    prototypes: [  NavyOfficerUndercoverGear ]
    roleLoadout: [ RoleSurvivalEVA ]
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstLeader
    - NamesMilitaryLast
    nameFormat: name-format-standard

# Special Operations Officer

- type: entity
  id: RandomHumanoidSpawnerSpecialOperationsOfficers
  name: Special Operations Officer
  suffix: CentComm
  components:
  - type: Sprite
    sprite: _Goobstation/Clothing/Uniforms/Jumpsuit/navy_gold.rsi
    state: icon
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstHighRank
    - NamesMilitaryLast
    nameFormat: name-format-standard
  - type: RandomHumanoidSpawner
    settings: SpecialOperationsOfficer

- type: randomHumanoidSettings
  id: SpecialOperationsOfficer
  parent: CentcommHumanoid
  randomizeName: false
  components:
  - type: AutoImplant
    implants: [ FreedomImplant, BluespaceLifelineImplant, RadioImplantCentcomm, NutrimentPumpImplant, StypticStimulatorImplant]
  - type: GhostRole
    name: ghost-role-information-special-operations-officer-name
    description: ghost-role-information-special-operations-officer-description
    rules: ghost-role-information-special-operations-officer-rules
    raffle:
      settings: short
  - type: Loadout
    prototypes: [ SpecialOperationsOfficerGear ]
    roleLoadout: [ RoleSurvivalEVA ]
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstHighRank
    - NamesMilitaryLast
    nameFormat: name-format-standard

# Diplomat

- type: entity
  id: RandomHumanoidSpawnerDiplomat
  name: Diplomat
  suffix: CentComm
  components:
  - type: Sprite
    sprite: _Goobstation/Clothing/Uniforms/Jumpsuit/diplomat.rsi
    state: icon
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstPolitical
    - NamesLast
    nameFormat: name-format-standard
  - type: RandomHumanoidSpawner
    settings: DiplomatGear

- type: randomHumanoidSettings
  id: DiplomatGear
  parent: CentcommHumanoid
  randomizeName: false
  components:
  - type: AutoImplant
    implants: [ FreedomImplant, BluespaceLifelineImplant, RadioImplantCentcomm, NutrimentPumpImplant, StypticStimulatorImplant]
  - type: GhostRole
    name: ghost-role-information-diplomat-name
    description: ghost-role-information-diplomat-description
    rules: ghost-role-information-navy-officer-rules
    raffle:
      settings: short
  - type: Loadout
    prototypes: [ DiplomatGear ]
    roleLoadout: [ RoleSurvivalEVA ]
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstPolitical
    - NamesLast
    nameFormat: name-format-standard

# Inspector

- type: entity
  id: RandomHumanoidSpawnerInspector
  name: Inspector
  suffix: CentComm
  components:
  - type: Sprite
    sprite: _Goobstation/Clothing/Uniforms/Jumpsuit/navy_gold.rsi
    state: icon
  - type: RandomMetadata
    nameSegments:
    - NamesFirstInspector
    - NamesLast
    nameFormat: name-format-standard
  - type: RandomHumanoidSpawner
    settings: InspectorGear

- type: randomHumanoidSettings
  id: InspectorGear
  parent: CentcommHumanoid
  randomizeName: false
  components:
  - type: AutoImplant
    implants: [ FreedomImplant, BluespaceLifelineImplant, RadioImplantCentcomm, NutrimentPumpImplant, StypticStimulatorImplant]
  - type: GhostRole
    name: ghost-role-information-inspector-name
    description: ghost-role-information-inspector-description
    rules: ghost-role-information-navy-officer-rules
    raffle:
      settings: short
  - type: Loadout
    prototypes: [ InspectorGear ]
    roleLoadout: [ RoleSurvivalEVA ]
  - type: RandomMetadata
    nameSegments:
    - NamesFirstInspector
    - NamesLast
    nameFormat: name-format-standard

## Other Shit

# Chrono Legioneer

- type: entity
  id: RandomHumanoidSpawnerChronolegioneer
  name: chrono legionnaire
  components:
  - type: Sprite
    sprite: Mobs/Species/Human/parts.rsi
    state: full
  - type: RandomMetadata
    nameSegments: [ NamesBorer ]
  - type: RandomHumanoidSpawner
    settings: ChronoLegionnaire

- type: randomHumanoidSettings
  parent: EventHumanoidMindShielded
  id: ChronoLegionnaire
  components:
  - type: Loadout
    prototypes: [ ChronoLegionnaireGear ]
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstLeader
    - NamesMilitaryLast
    nameFormat: name-format-standard

# HECU

- type: entity
  id: RandomHumanoidHECUSpawner
  name: HECU Operative
  suffix: ERTRole
  components:
  - type: Sprite
    sprite: Mobs/Species/Human/parts.rsi
    state: full
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirst
    - NamesMilitaryLast
    nameFormat: name-format-standard
  - type: RandomHumanoidSpawner
    settings: HecuSoldier

- type: randomHumanoidSettings
  id: HecuSoldier
  parent: EventHumanMindShielded
  components:
  - type: AutoImplant
    implants: [ FreedomImplant ]
  - type: GhostRole
    name: ghost-role-information-Hecu-name
    description: ghost-role-information-Hecu-description
    rules: ghost-role-information-Hecu-rules
    raffle:
      settings: short
  - type: Loadout
    prototypes: [HECUOperativeGear]
  - type: RandomMetadata
    nameSegments:
    - NamesMilitaryFirstLeader
    - NamesMilitaryLast
    nameFormat: name-format-standard

# G-Man

- type: entity
  id: TheGmanSpawer
  name: The G-Man
  suffix: Admeme
  components:
  - type: Sprite
    sprite: Mobs/Species/Human/parts.rsi
    state: full
  - type: RandomHumanoidSpawner
    settings: Gman

- type: randomHumanoidSettings
  id: Gman
  parent: EventHumanMindShielded
  components:
  - type: AutoImplant
    implants: [ VaporizeImplant, ShiftImplant, BlinkImplant, FreedomImplant, ScramImplant, StopTimeImplant, NutrimentPumpImplant, SpaceProofImplant, StypticStimulatorImplant ]
  - type: RandomHumanoidAppearance
    randomizeName: false
  - type: GhostRole
    name: ghost-role-information-Gman-name
    description: ghost-role-information-Gman-description
    rules: ghost-role-information-Gman-rules
    raffle:
      settings: short
  - type: Loadout
    prototypes: [GovernmentManGear]
  - type: RandomMetadata
    nameSegments: [ NamesGman ]
  - type: Tag
    tags:
    - InstantDoAfters
    - CanPilot
    - BypassInteractionRangeChecks
    - BypassDropChecks
    - NoConsoleSound
    - FootstepSound
    - DoorBumpOpener
  - type: Puller
    needsHands: false
  - type: Thieving
    stripTimeReduction: 9999
    stealthy: true
  - type: BypassInteractionChecks
  - type: SupermatterImmune
  - type: MovementIgnoreGravity

# ... Conquest? What the fuck.
# STAND READY FOR MY ARRIVAL WORM.
# YOU WERE GIVEN ORDERS, YOU WERE GIVEN TIME, YOU WERE GIVEN MORE LEEWAY THAN MOST
# AND YET I FIND THIS PLANET UNPREPARED FOR THE ARRIVAL OF OUR VILTRUM EMPIRE!

- type: entity
  id: ConquestSpawner
  name: Conquest
  suffix: Admeme
  components:
  - type: Sprite
    sprite: Mobs/Species/Human/parts.rsi
    state: full
  - type: RandomHumanoidSpawner
    settings: Conquest

- type: randomHumanoidSettings
  id: Conquest
  parent: EventHumanMindShielded
  components:
  - type: AutoImplant
    implants: [ FreedomImplant, NutrimentPumpImplant, SpaceProofImplant ]
  - type: RandomHumanoidAppearance
    randomizeName: false
    hair: HairBald
  - type: GhostRole
    name: ghost-role-information-conquest-name
    description: ghost-role-information-conquest-description
    rules: ghost-role-information-conquest-rules
    raffle:
      settings: short
  - type: Loadout
    prototypes: [ConquestGear]
  - type: RandomMetadata
    nameSegments: [ NamesConquest ]
  - type: Puller
    needsHands: false
    throwCooldown: 0.1
    stageChangeCooldown: 0.1
    grabThrowDamageModifier: 100
    grabThrownSpeed: 50
    softGrabSpeedModifier: 4
    hardGrabSpeedModifier: 4
    chokeGrabSpeedModifier: 4
  - type: MeleeWeapon
    altDisarm: false
    heavyStaminaCost: 1.5
    damage:
      types:
        Blunt: 15
  - type: NoWieldNeeded
  - type: Fixtures
    fixtures: # TODO: This needs a second fixture just for mob collisions.
      fix1:
        shape:
          !type:PhysShapeCircle
          radius: 0.45
        density: 10000 # Lol. Lmao even.
        restitution: 0.0
        mask:
        - MobMask
        layer:
        - MobLayer
  - type: MobThresholds
    thresholds:
      0: Alive
      1500: Critical
      2000: Dead
  - type: Destructible
    thresholds:
    - trigger:
        !type:DamageTypeTrigger
        damageType: Blunt
        damage: 60000
      behaviors:
      - !type:GibBehavior { }
  - type: NoSlip
  - type: Temperature
    heatDamageThreshold: 5000
    currentTemperature: 310.15
    specificHeat: 42
    heatDamage:
      types:
        Heat: -1
  - type: MovementIgnoreGravity
  - type: SlowOnDamage
    speedModifierThresholds:
      500: 1.2
      1000: 1.5
      1500: 2
  - type: Stamina
    critThreshold: 100000
  - type: PassiveDamage
    allowedStates:
    - Alive
    - Critical
    - Dead
    damageCap: 0
    damage:
      types:
        Heat: -3
      groups:
        Brute: -3
  - type: StatusEffects
    allowed:
    - PressureImmunity
    - Adrenaline
