# The mind roles specified here will be overwritten by the actual entities' GhostRoleComponent when they spawn
# But the mind roles specified here are the ones checked for role bans when taking a ghost role!
# TODO make this simpler

- type: entity
  abstract: true
  parent: MarkerBase
  id: BaseAntagSpawner
  name: ghost role spawn point
  components:
  - type: GhostRole
    raffle:
      settings: default
  - type: GhostRoleAntagSpawner

- type: entity
  id: SpawnPointGhostRatKing
  name: ghost role spawn point
  suffix: rat king
  parent: MarkerBase
  components:
  - type: GhostRole
    name: ghost-role-information-rat-king-name
    description: ghost-role-information-rat-king-description
    rules: ghost-role-information-antagonist-rules
    mindRoles:
    - MindRoleGhostRoleSoloAntagonist
    raffle:
      settings: default
  - type: GhostRoleMobSpawner
    prototype: MobRatKing
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
      - state: green
      - sprite: Mobs/Animals/regalrat.rsi
        state: icon

- type: entity
  id: SpawnPointGhostRemilia
  name: ghost role spawn point
  suffix: Remilia
  parent: MarkerBase
  components:
  - type: GhostRole
    name: ghost-role-information-remilia-name
    description: ghost-role-information-remilia-description
    rules: ghost-role-information-familiar-rules
    mindRoles:
    - MindRoleGhostRoleFamiliar
    raffle:
      settings: short
  - type: GhostRoleMobSpawner
    prototype: MobBatRemilia
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
      - state: green
      - sprite: Mobs/Animals/bat.rsi
        state: bat

- type: entity
  id: SpawnPointGhostCerberus
  name: ghost role spawn point
  suffix: cerberus
  parent: MarkerBase
  components:
  - type: GhostRole
    name: ghost-role-information-cerberus-name
    description: ghost-role-information-cerberus-description
    rules: ghost-role-information-familiar-rules
    mindRoles:
    - MindRoleGhostRoleFamiliar
    raffle:
      settings: default
  - type: GhostRoleMobSpawner
    prototype: MobCorgiCerberus
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
      - state: green
      - sprite: Mobs/Pets/corgi.rsi
        state: narsian

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  id: SpawnPointGhostNukeOperative
  name: ghost role spawn point
  suffix: nukeops
  parent: MarkerBase
  components:
  - type: GhostRole
    rules: ghost-role-information-rules-default-team-antagonist
    mindRoles:
    - MindRoleNukeops
    raffle:
      settings: default
  - type: GhostRoleMobSpawner
    prototype: MobHumanNukeOp
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
      - state: green
      - sprite: Structures/Wallmounts/signs.rsi
        state: radiation

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: BaseAntagSpawner
  id: SpawnPointLoneNukeOperative
  components:
  - type: GhostRole
    name: ghost-role-information-loneop-name
    description: ghost-role-information-loneop-description
    rules: ghost-role-information-loneop-rules
    mindRoles:
    - MindRoleLoneops
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
      - state: green
      - sprite: Structures/Wallmounts/signs.rsi
        state: radiation

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: SpawnPointLoneNukeOperative
  id: SpawnPointNukeopsCommander
  components:
  - type: GhostRole
    name: roles-antag-nuclear-operative-commander-name
    description: roles-antag-nuclear-operative-commander-objective
    rules: ghost-role-information-rules-default-team-antagonist
    mindRoles:
    - MindRoleNukeopsCommander

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: SpawnPointLoneNukeOperative
  id: SpawnPointNukeopsMedic
  components:
  - type: GhostRole
    name: roles-antag-nuclear-operative-agent-name
    description: roles-antag-nuclear-operative-agent-objective
    rules: ghost-role-information-rules-default-team-antagonist
    mindRoles:
    - MindRoleNukeopsMedic

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: SpawnPointLoneNukeOperative
  id: SpawnPointNukeopsOperative
  components:
  - type: GhostRole
    name: roles-antag-nuclear-operative-name
    description: roles-antag-nuclear-operative-objective
    rules: ghost-role-information-rules-default-team-antagonist
    mindRoles:
    - MindRoleNukeops

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: BaseAntagSpawner
  id: SpawnPointGhostDragon
  components:
  - type: GhostRole
    name: ghost-role-information-space-dragon-name
    description: ghost-role-information-space-dragon-description
    rules: ghost-role-information-space-dragon-rules
    mindRoles:
    - MindRoleDragon
  - type: Sprite
    layers:
    - state: green
    - sprite: Mobs/Aliens/Carps/dragon.rsi
      state: alive

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: BaseAntagSpawner
  id: SpawnPointGhostSpaceNinja
  components:
  - type: GhostRole
    name: ghost-role-information-space-ninja-name
    description: ghost-role-information-space-ninja-description
    rules: ghost-role-information-antagonist-rules
    mindRoles:
    - MindRoleNinja
    raffle:
      settings: default
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
    - state: green
    - sprite: Objects/Weapons/Melee/energykatana.rsi
      state: icon

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: BaseAntagSpawner
  id: SpawnPointGhostParadoxClone
  components:
  - type: GhostRole
    name: ghost-role-information-paradox-clone-name
    description: ghost-role-information-paradox-clone-description
    rules: ghost-role-information-antagonist-rules
    mindRoles:
    - MindRoleParadoxClone
    raffle:
      settings: default
  - type: Sprite
    layers:
    - sprite: Markers/jobs.rsi
      state: green
    - sprite: Mobs/Aliens/paradox_clone.rsi
      state: preview

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: SpawnPointGhostDerelictCyborg
  id: SpawnPointGhostDerelictEngineeringCyborg
  components:
  - type: GhostRole
    name: ghost-role-information-derelict-engineering-cyborg-name
    description: ghost-role-information-derelict-engineering-cyborg-description
    rules: ghost-role-information-silicon-rules
    raffle:
      settings: default

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: BaseAntagSpawner
  id: SpawnPointGhostDerelictCyborg
  components:
  - type: GhostRole
    name: ghost-role-information-derelict-cyborg-name
    description: ghost-role-information-derelict-cyborg-description
    rules: ghost-role-information-silicon-rules
    mindRoles:
    - MindRoleSubvertedSilicon
    raffle:
      settings: default
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
    - state: green
    - sprite: Mobs/Silicon/chassis.rsi
      state: derelict_icon

- type: entity
  categories: [ Spawner ]
  parent: BaseAntagSpawner
  id: SpawnPointGhostRoleMothershipCore
  components:
  - type: Tag
    tags:
    - ForceFixRotations
    - MothershipCoreGhostrole
  - type: GhostRole
    name: ghost-role-information-mothership-core-name
    description: ghost-role-information-mothership-core-desc
    rules: ghost-role-information-silicon-rules
    mindRoles:
    - MindRoleMothershipCore
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
    - state: green
    - sprite: Mobs/Silicon/mothership_core.rsi
      state: core-idle

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: BaseAntagSpawner
  id: SpawnPointGhostRoleXenoborg
  components:
  - type: Tag
    tags:
    - ForceFixRotations
    - XenoborgGhostrole
  - type: GhostRole
    name: ghost-role-information-xenoborg-name
    description: ghost-role-information-xenoborg-desc
    rules: ghost-role-information-silicon-rules
    mindRoles:
    - MindRoleXenoborg
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
    - state: green
    - sprite: Mobs/Silicon/chassis.rsi
      state: xenoborg_engi

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: SpawnPointGhostDerelictCyborg
  id: SpawnPointGhostDerelictJanitorCyborg
  components:
  - type: GhostRole
    name: ghost-role-information-derelict-janitor-cyborg-name
    description: ghost-role-information-derelict-janitor-cyborg-description
    rules: ghost-role-information-silicon-rules
    raffle:
      settings: default

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: SpawnPointGhostDerelictCyborg
  id: SpawnPointGhostDerelictMedicalCyborg
  components:
  - type: GhostRole
    name: ghost-role-information-derelict-medical-cyborg-name
    description: ghost-role-information-derelict-medical-cyborg-description
    rules: ghost-role-information-silicon-rules
    raffle:
      settings: default

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: SpawnPointGhostDerelictCyborg
  id: SpawnPointGhostDerelictMiningCyborg
  components:
  - type: GhostRole
    name: ghost-role-information-derelict-mining-cyborg-name
    description: ghost-role-information-derelict-mining-cyborg-description
    rules: ghost-role-information-silicon-rules
    raffle:
      settings: default

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: SpawnPointGhostDerelictCyborg
  id: SpawnPointGhostDerelictSyndicateAssaultCyborg
  components:
  - type: GhostRole
    name: ghost-role-information-derelict-syndicate-assault-cyborg-name
    description: ghost-role-information-derelict-syndicate-assault-cyborg-description
    rules: ghost-role-information-silicon-rules
    raffle:
      settings: default

- type: entity
  categories: [ HideSpawnMenu, Spawner ]
  parent: BaseAntagSpawner
  id: SpawnPointGhostWizard
  name: ghost role spawn point
  suffix: wizard
  components:
  - type: GhostRole
    name: ghost-role-information-wizard-name
    description: ghost-role-information-wizard-desc
    rules: ghost-role-information-antagonist-rules
    mindRoles:
    - MindRoleWizard
    raffle:
      settings: default
  - type: Sprite
    sprite: Markers/jobs.rsi
    layers:
    - state: green
    - sprite: Clothing/Head/Hats/wizardhat.rsi
      state: icon
