- type: entity
  parent: Clothing
  id: IDCardStandard
  name: identification card
  description: A card necessary to access various areas aboard the station.
  abstract: true
  components:
  - type: Sprite
    sprite: Objects/Misc/id_cards.rsi
  - type: Clothing
    slots:
    - idcard
    sprite: Objects/Misc/id_cards.rsi
  - type: Item
    size: Small
    heldPrefix: default
    storedRotation: -90
  - type: Access
  - type: IdCard
  - type: StationRecordKeyStorage
  - type: Tag
    tags:
    - DoorBumpOpener
    - WhitelistChameleon
    - WhitelistChameleonIdCard
  - type: StealTarget
    stealGroup: IDCard
  - type: StaticPrice # Frontier
    price: 5 # Frontier The card need to cost less then the PDA that comes with a card and a pen in it.
  - type: CargoSellBlacklist # Frontier
  - type: ShipyardSellCondition # Frontier: Teleport to shipyard console on sale
    preserveOnSale: true

#IDs with layers

- type: entity
  parent: IDCardStandard
  id: PassengerIDCard
  name: passenger ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idpassenger
  - type: PresetIdCard
    job: Passenger

- type: entity
  parent: PassengerIDCard
  id: TechnicalAssistantIDCard
  name: technical assistant ID card
  components:
  - type: PresetIdCard
    job: TechnicalAssistant
  - type: Sprite
    layers:
    - state: default
    - state: idintern-tech

- type: entity
  parent: PassengerIDCard
  id: MedicalInternIDCard
  name: medical intern ID card
  components:
  - type: PresetIdCard
    job: MedicalIntern
  - type: Sprite
    layers:
    - state: default
    - state: idintern-med

- type: entity
  parent: PassengerIDCard
  id: ResearchAssistantIDCard
  name: research assistant ID card
  components:
  - type: PresetIdCard
    job: ResearchAssistant
  - type: Sprite
    layers:
    - state: default
    - state: idintern-sci

- type: entity
  parent: PassengerIDCard
  id: SecurityCadetIDCard
  name: security cadet ID card
  components:
  - type: PresetIdCard
    job: SecurityCadet
  - type: Sprite
    layers:
    - state: default
    - state: idintern-cadet

- type: entity
  parent: PassengerIDCard
  id: ServiceWorkerIDCard
  name: service worker ID card
  components:
  - type: PresetIdCard
    job: ServiceWorker
  - type: Sprite
    layers:
    - state: default
    - state: idintern-service

- type: entity
  parent: [IDCardStandard] # Frontier: Removed BaseSecurityCommandContraband
  id: CaptainIDCard
  name: captain ID card
  components:
  - type: Sprite
    layers:
    - state: gold
    - state: idcaptain
  - type: Item
    heldPrefix: gold
  - type: PresetIdCard
    job: Captain
  - type: Tag
    tags:
    - DoorBumpOpener
    - WhitelistChameleon
    - WhitelistChameleonIdCard
    - HighRiskItem
  - type: StealTarget
    stealGroup: CaptainIDCard

- type: entity
  parent: IDCardStandard
  id: SecurityIDCard
  name: security ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idsecurityofficer
  - type: PresetIdCard
    job: SecurityOfficer

- type: entity
  parent: IDCardStandard
  id: WardenIDCard
  name: warden ID card
  components:
    - type: Sprite
      layers:
        - state: default
        - state: idwarden
    - type: PresetIdCard
      job: Warden

- type: entity
  parent: IDCardStandard
  id: EngineeringIDCard
  name: engineer ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idstationengineer
  - type: PresetIdCard
    job: StationEngineer

- type: entity
  parent: IDCardStandard
  id: MedicalIDCard
  name: medical ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idmedicaldoctor
  - type: PresetIdCard
    job: MedicalDoctor

- type: entity
  parent: IDCardStandard
  id: ParamedicIDCard
  name: paramedic ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idparamedic
  - type: PresetIdCard
    job: Paramedic

- type: entity
  parent: IDCardStandard
  id: ChemistIDCard
  name: chemist ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idchemist
  - type: PresetIdCard
    job: Chemist

- type: entity
  parent: IDCardStandard
  id: CargoIDCard
  name: cargo ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idcargotechnician
  - type: PresetIdCard
    job: CargoTechnician

- type: entity
  parent: IDCardStandard
  id: SalvageIDCard
  name: salvage ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idshaftminer
  - type: PresetIdCard
    job: SalvageSpecialist

- type: entity
  parent: IDCardStandard
  id: QuartermasterIDCard
  name: quartermaster ID card
  components:
    - type: Sprite
      layers:
        - state: silver
        - state: idquartermaster
    - type: Item
      heldPrefix: silver
    - type: PresetIdCard
      job: Quartermaster

- type: entity
  parent: IDCardStandard
  id: ResearchIDCard
  name: research ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idscientist
  - type: PresetIdCard
    job: Scientist

- type: entity
  parent: IDCardStandard
  id: ClownIDCard
  name: clown ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idclown
  - type: PresetIdCard
    job: Clown

- type: entity
  parent: IDCardStandard
  id: MimeIDCard
  name: mime ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idmime
  - type: PresetIdCard
    job: Mime

- type: entity
  parent: IDCardStandard
  id: ChaplainIDCard
  name: chaplain ID card
  components:
    - type: Sprite
      layers:
        - state: default
        - state: idchaplain
    - type: PresetIdCard
      job: Chaplain

- type: entity
  parent: IDCardStandard
  id: JanitorIDCard
  name: janitor ID card
  categories: [ HideSpawnMenu ] # Frontier
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idjanitor
  - type: PresetIdCard
    job: Janitor

- type: entity
  parent: IDCardStandard
  id: BartenderIDCard
  name: bartender ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idbartender
  - type: PresetIdCard
    job: Bartender

- type: entity
  parent: IDCardStandard
  id: PunPunIDCard
  name: pun pun ID card
  components:
    - type: Sprite
      layers:
        - state: default
        - state: idbartender
    - type: PresetIdCard
      job: Bartender
      name: Pun Pun
    - type: Tag #  Ignore Chameleon tags
      tags:
      - DoorBumpOpener

- type: entity
  parent: IDCardStandard
  id: ChefIDCard
  name: chef ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idcook
  - type: PresetIdCard
    job: Chef

- type: entity
  parent: IDCardStandard
  id: BotanistIDCard
  name: botanist ID card
  components:
    - type: Sprite
      layers:
        - state: default
        - state: idbotanist
    - type: PresetIdCard
      job: Botanist

- type: entity
  parent: IDCardStandard
  id: LibrarianIDCard
  name: librarian ID card
  components:
    - type: Sprite
      layers:
        - state: default
        - state: idcurator
    - type: PresetIdCard
      job: Librarian

- type: entity
  parent: IDCardStandard
  id: LawyerIDCard
  name: lawyer ID card
  components:
    - type: Sprite
      layers:
        - state: default
        - state: idlawyer
    - type: PresetIdCard
      job: Lawyer

- type: entity
  parent: IDCardStandard
  id: HoPIDCard
  name: head of personnel ID card
  components:
  - type: Sprite
    layers:
    - state: silver
    - state: idheadofpersonnel
  - type: Item
    heldPrefix: silver
  - type: PresetIdCard
    job: HeadOfPersonnel

- type: entity
  parent: IDCardStandard
  id: CEIDCard
  name: chief engineer ID card
  components:
  - type: Sprite
    layers:
    - state: silver
    - state: idchiefengineer
  - type: Item
    heldPrefix: silver
  - type: PresetIdCard
    job: ChiefEngineer

- type: entity
  parent: IDCardStandard
  id: CMOIDCard
  name: chief medical officer ID card
  components:
  - type: Sprite
    layers:
    - state: silver
    - state: idchiefmedicalofficer
  - type: Item
    heldPrefix: silver
  - type: PresetIdCard
    job: ChiefMedicalOfficer

- type: entity
  parent: IDCardStandard
  id: RDIDCard
  name: research director ID card
  components:
  - type: Sprite
    layers:
    - state: silver
    - state: idresearchdirector
  - type: Item
    heldPrefix: silver
  - type: PresetIdCard
    job: ResearchDirector

- type: entity
  parent: IDCardStandard
  id: HoSIDCard
  name: head of security ID card
  components:
  - type: Sprite
    layers:
    - state: silver
    - state: idheadofsecurity
  - type: Item
    heldPrefix: silver
  - type: PresetIdCard
    job: HeadOfSecurity

- type: entity
  parent: IDCardStandard
  id: VisitorIDCard
  name: visitor ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idvisitor
  - type: IdCard
    jobTitle: job-title-visitor
    jobIcon: JobIconVisitor
  - type: PresetIdCard
    job: Visitor

- type: entity
  parent: IDCardStandard
  id: BrigmedicIDCard
  name: brigmedic ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idbrigmedic
  - type: PresetIdCard # Frontier
    job: Brigmedic # Frontier

- type: entity
  parent: IDCardStandard
  id: CentcomIDCard
  name: command officer ID card
  components:
  - type: Sprite
    layers:
    - state: centcom
    - state: idcentcom
  - type: Item
    heldPrefix: blue
  - type: PresetIdCard
    job: CentralCommandOfficial

- type: entity
  parent: IDCardStandard
  id: ERTLeaderIDCard
  name: ERT leader ID card
  components:
  - type: Sprite
    layers:
    - state: gold
    - state: ert_commander
  - type: PresetIdCard
    job: ERTLeader
  - type: Item
    heldPrefix: gold

- type: entity
  parent: IDCardStandard
  id: ERTChaplainIDCard
  name: ERT chaplain ID card
  components:
  - type: Sprite
    layers:
    - state: gold
    - state: ert_chaplain # we have the sprite for the id but dont have chaplain ERT equipment for now.
  - type: PresetIdCard
    job: ERTChaplain
  - type: Item
    heldPrefix: blue

- type: entity
  parent: IDCardStandard
  id: ERTEngineerIDCard
  name: ERT engineer ID card
  components:
  - type: Sprite
    layers:
    - state: gold
    - state: ert_engineer
  - type: PresetIdCard
    job: ERTEngineer

- type: entity
  parent: IDCardStandard
  id: ERTJanitorIDCard
  name: ERT janitor ID card
  components:
  - type: Sprite
    layers:
    - state: gold
    - state: ert_janitor
  - type: PresetIdCard
    job: ERTJanitor

- type: entity
  parent: IDCardStandard
  id: ERTMedicIDCard
  name: ERT medic ID card
  components:
  - type: Sprite
    layers:
    - state: gold
    - state: ert_medic
  - type: PresetIdCard
    job: ERTMedical

- type: entity
  parent: IDCardStandard
  id: ERTSecurityIDCard
  name: ERT security ID card
  components:
  - type: Sprite
    layers:
    - state: gold
    - state: ert_security
  - type: PresetIdCard
    job: ERTSecurity

- type: entity
  parent: IDCardStandard
  id: MusicianIDCard
  name: musician ID card
  components:
    - type: Sprite
      layers:
        - state: default
        - state: idmusician
    - type: PresetIdCard
      job: Musician

- type: entity
  parent: IDCardStandard
  id: CentcomIDCardDeathsquad
  name: death squad ID card
  components:
  - type: Sprite
    layers:
    - state: centcom
  - type: Item
    heldPrefix: blue
  - type: PresetIdCard
    job: DeathSquad

- type: entity
  name: contractor ID card # Frontier: passenger<contractor
  parent: [IDCardStandard, BaseChameleon, BaseC3SyndicateContraband] # Frontier: Add BaseC3SyndicateContraband
  id: AgentIDCard
  suffix: Agent
  components:
  - type: PresetIdCard
    job: Contractor # Frontier: Passenger<Contractor
  - type: Access
    tags:
    - Maintenance
    - SyndicateAgent
  - type: Sprite
    layers:
    - state: default
    - state: idcontractor # Frontier: idpassenger<idcontractor
      sprite: _NF/Objects/Misc/id_cards.rsi # Frontier
  - type: AgentIDCard
  - type: UIRequiresLock
  - type: ActivatableUI
    key: enum.AgentIDCardUiKey.Key
    inHandsOnly: true
    verbText: agent-id-open-ui-verb
  - type: Tag
    tags:
    - DoorBumpOpener
  - type: ChameleonClothing
    slot: [idcard]
    default: ContractorIDCard # Frontier: PassengerIDCard<ContractorIDCard
    requireTag: WhitelistChameleonIdCard
  - type: UserInterface
    interfaces:
      enum.AgentIDCardUiKey.Key:
        type: AgentIDCardBoundUserInterface
      enum.ChameleonUiKey.Key:
        type: ChameleonBoundUserInterface
  - type: Contraband # Frontier
    hideValues: true # Frontier

- type: entity
  name: contractor ID card # Frontier: passenger<contractor
  parent: AgentIDCard
  id: NukieAgentIDCard
  suffix: Nukie
  components:
  - type: Access
    tags:
    - Maintenance
    - SyndicateAgent
    - NuclearOperative

- type: entity
  parent: IDCardStandard
  id: AtmosIDCard
  name: atmospheric technician ID card
  components:
  - type: Sprite
    layers:
    - state: orange
    - state: idatmospherictechnician
  - type: PresetIdCard
    job: AtmosphericTechnician

- type: entity
  parent: [ BaseC3SyndicateContraband, IDCardStandard ] # Frontier: BaseSyndicateContraband<BaseC3SyndicateContraband
  id: SyndicateIDCard
  name: syndicate ID card
  components:
  - type: Sprite
    layers:
    - state: syndie
  - type: Access
    tags:
    - NuclearOperative
    - SyndicateAgent

- type: entity
  parent: [ BaseC3PirateContraband, IDCardStandard ] # Frontier: BaseMajorContraband<BaseC3PirateContraband
  id: PirateIDCard
  name: pirate ID card
  categories: [ HideSpawnMenu ] # Frontier
  components:
  - type: Sprite
    layers:
    - state: pirate
  - type: Access
    tags:
    - NuclearOperative
    - SyndicateAgent

- type: entity
  parent: IDCardStandard
  id: PsychologistIDCard
  name: psychologist ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idpsychologist
  - type: PresetIdCard
    job: Psychologist

- type: entity
  parent: IDCardStandard
  id: ReporterIDCard
  name: reporter ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idreporter
  - type: PresetIdCard
    job: Reporter

- type: entity
  parent: IDCardStandard
  id: BoxerIDCard
  name: boxer ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idboxer
  - type: PresetIdCard
    job: Boxer

- type: entity
  parent: IDCardStandard
  id: ZookeeperIDCard
  name: zookeeper ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idzookeeper
  - type: PresetIdCard
    job: Zookeeper

- type: entity
  parent: IDCardStandard
  id: DetectiveIDCard
  name: detective ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: iddetective
  - type: PresetIdCard
    job: Detective

- type: entity
  parent: IDCardStandard
  id: PrisonerIDCard
  name: prisoner ID card
  categories: [HideSpawnMenu] # Frontier: use NF variant
  description: A generically printed ID card for scummy prisoners.
  components:
  - type: Sprite
    layers:
    - state: orange
  - type: Item
    heldPrefix: orange
  - type: Access
    tags:
    - GenpopEnter
  - type: GenpopIdCard
  - type: IdCard
    jobTitle: job-name-prisoner
    jobIcon: JobIconPrisoner
    canMicrowave: false
  - type: ExpireIdCard
    expireMessage: genpop-prisoner-id-expire
    expiredAccess:
    - GenpopLeave
  - type: Speech
    speechVerb: Robotic
  - type: Tag
    tags:
    - DoorBumpOpener
    - WhitelistChameleon
    - WhitelistChameleonIdCard
    - Recyclable
  - type: StaticPrice # these are infinitely producible.
    price: 0

- type: entity
  parent: CentcomIDCard
  id: CBURNIDcard
  name: CBURN ID card
  suffix: CBURN
  components:
  - type: Sprite
    layers:
    - state: centcom
  - type: Item
    heldPrefix: blue
  - type: PresetIdCard
    job: CBURN

- type: entity
  parent: IDCardStandard
  id: CluwneIDCard
  name: cluwne ID card
  suffix: Unremoveable
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idcluwne
  - type: IdCard
    jobTitle: job-title-cluwne
    jobIcon: JobIconCluwne
  - type: Unremoveable

- type: entity
  parent: EngineeringIDCard
  id: SeniorEngineerIDCard
  name: senior engineer ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idseniorengineer

- type: entity
  parent: ResearchIDCard
  id: SeniorResearcherIDCard
  name: senior researcher ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idseniorresearcher

- type: entity
  parent: MedicalIDCard
  id: SeniorPhysicianIDCard
  name: senior physician ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idseniorphysician

- type: entity
  parent: SecurityIDCard
  id: SeniorOfficerIDCard
  name: senior officer ID card
  components:
  - type: Sprite
    layers:
    - state: default
    - state: idseniorofficer
  - type: PresetIdCard
    job: SeniorOfficer

- type: entity
  parent: IDCardStandard
  id: WizardIDCard
  name: wizard ID card
  components:
  - type: Sprite
    layers:
    - state: wizard
    - state: idwizard
  - type: Access
    tags:
    - Wizard
    - External
    - Maintenance

- type: entity
  parent: IDCardStandard
  id: UniversalIDCard
  name: universal ID card
  suffix: Admin
  description: An ID card that gives you access beyond your wildest dreams.
  components:
  - type: Sprite
    sprite: Objects/Misc/id_cards.rsi
    layers:
    - state: admin
    - state: idadmin
  - type: Clothing
    sprite: Objects/Misc/id_cards.rsi
  - type: Item
    heldPrefix: green
  - type: IdCard
    jobTitle: job-title-universal
    jobIcon: JobIconAdmin
  - type: Access
    groups:
    - AllAccess
    - Silicon
    tags:
    - CentralCommand
    - NuclearOperative
    - SyndicateAgent
    - Wizard
    - Xenoborg
    - Pirate # Frontier
  - type: Tag #  Ignore Chameleon tags
    tags:
    - DoorBumpOpener
  - type: AgentIDCard
  - type: ActivatableUI
    key: enum.AgentIDCardUiKey.Key
    inHandsOnly: true
  - type: UserInterface
    interfaces:
      enum.AgentIDCardUiKey.Key:
        type: AgentIDCardBoundUserInterface
