# Implanters

- type: entity
  name: implanter
  description: A syringe exclusively designed for the injection and extraction of subdermal implants. Use care when extracting implants, as incorrect draw settings may injure the user.
  id: BaseImplanter
  parent: BaseItem
  abstract: true
  components:
    - type: ItemSlots
    - type: ContainerContainer
      containers:
        implanter_slot: !type:ContainerSlot { }
    - type: Implanter
      whitelist:
        components:
        - Body # no chair microbomb
      blacklist:
        components:
        - Guardian # no holoparasite macrobomb wombo combo
        tags:
        - Unimplantable
      currentMode: Draw
      implanterSlot:
        name: Implant
        locked: True
        priority: 0
        whitelist:
          tags:
            - SubdermalImplant
      allowDeimplantAll: false
      deimplantWhitelist:
      - SadTromboneImplant
      - LightImplant
      - BikeHornImplant
      - StorageImplant
      - FreedomImplant
      - UplinkImplant
      - EmpImplant
      - ScramImplant
      - DnaScramblerImplant
      - MicroBombImplant
      - MacroBombImplant
      - DeathAcidifierImplant
      - DeathRattleImplant
      - MindShieldImplant
      - MedicalTrackingImplant # Mono
      - RadioImplantFreelance # Mono
      - TrackingImplant # Moved Down, This is the TSFMC Tracker - Mono
      - FreelanceTrackingImplant # Mono
      - UsspTrackingImplant # Mono
      deimplantFailureDamage:
        types:
#          Cellular: 5 # 50->5 - Mono
          Heat: 0 # Mono
    - type: Sprite
      sprite: Objects/Specific/Medical/implanter.rsi
      state: implanter0
      layers:
        - state: implanter0
          map: [ "implantOnly" ]
          visible: true
        - state: implanter1
          map: [ "implantFull" ]
          visible: false
    - type: Item
      sprite: Objects/Specific/Medical/implanter.rsi
      heldPrefix: 0
      size: Small
    - type: Appearance
    - type: GenericVisualizer
      visuals:
        enum.ImplanterVisuals.Full:
          implantFull:
            True: {visible: true}
            False: {visible: false}
        enum.ImplanterImplantOnlyVisuals.ImplantOnly:
          implantOnly:
            True: {state: broken}
            False: {state: implanter0}
    - type: UserInterface
      interfaces:
        enum.DeimplantUiKey.Key:
          type: DeimplantBoundUserInterface
    - type: StaticPrice # Frontier
      price: 35 # Frontier

- type: entity
  id: Implanter
  parent: BaseImplanter
  description: A disposable syringe exclusively designed for the injection and extraction of subdermal implants.
  components:
    - type: Tag
      tags:
        - Trash

- type: entity
  parent: Implanter
  id: ImplanterAdmeme
  suffix: Admeme
  components:
  - type: Implanter
    # go wild with sentient chairs with macrobombs
    whitelist: null
    blacklist: null
    implantTime: 5
    drawTime: 5

- type: entity
  id: BaseImplantOnlyImplanter
  parent: Implanter
  description: A disposable syringe exclusively designed for the injection of subdermal implants.
  abstract: true
  components:
    - type: Sprite
      sprite: Objects/Specific/Medical/implanter.rsi
      state: implanter0
      layers:
        - state: implanter1
          map: [ "implantFull" ]
          visible: true
        - state: implanter0
          map: [ "implantOnly" ]
    - type: Implanter
      currentMode: Inject
      implantOnly: true

- type: entity
  id: BaseImplantOnlyImplanterSyndi
  parent: BaseImplantOnlyImplanter
  name: syndicate implanter
  description: A compact disposable syringe exclusively designed for the injection of subdermal implants.
  abstract: true
  components:
    - type: Item
      sprite: Objects/Specific/Medical/syndi_implanter.rsi
    - type: Sprite
      sprite: Objects/Specific/Medical/syndi_implanter.rsi
      state: implanter1
      layers:
        - state: implanter0
          map: [ "implantFull" ]
          visible: true
        - state: implanter1
          map: [ "implantOnly" ]
    - type: GenericVisualizer
      visuals:
        enum.ImplanterVisuals.Full:
          implantFull:
            True: {visible: true}
            False: {visible: false}
        enum.ImplanterImplantOnlyVisuals.ImplantOnly:
          implantOnly:
            True: {state: broken}
            False: {state: implanter1}
    - type: Tag
      tags: []

#Fun implanters

- type: entity
  id: SadTromboneImplanter
  suffix: sad trombone
  parent: BaseImplantOnlyImplanter
  components:
    - type: Implanter
      implant: SadTromboneImplant

- type: entity
  id: LightImplanter
  suffix: light
  parent: BaseImplantOnlyImplanter
  components:
    - type: Implanter
      implant: LightImplant

- type: entity
  id: BikeHornImplanter
  suffix: bike horn
  parent: BaseImplantOnlyImplanter
  components:
    - type: Implanter
      implant: BikeHornImplant

#Security implanters

- type: entity
  id: TrackingImplanter
  parent: BaseImplantOnlyImplanter
  suffix: tracking
  components:
    - type: Implanter
      implant: TrackingImplant

#Traitor implanters

- type: entity
  id: StorageImplanter
  suffix: storage
  parent: BaseImplantOnlyImplanterSyndi
  components:
    - type: Implanter
      implant: StorageImplant

- type: entity
  id: FreedomImplanter
  suffix: freedom
  parent: BaseImplantOnlyImplanterSyndi
  components:
    - type: Implanter
      implant: FreedomImplant

- type: entity
  id: RadioImplanter
  suffix: radio Syndicate
  parent: BaseImplantOnlyImplanterSyndi
  components:
  - type: Implanter
    implant: RadioImplant

- type: entity
  id: UplinkImplanter
  suffix: uplink
  parent: BaseImplantOnlyImplanterSyndi
  components:
  - type: Implanter
    implant: UplinkImplant

- type: entity
  id: EmpImplanter
  suffix: EMP
  parent: BaseImplantOnlyImplanterSyndi
  components:
    - type: Implanter
      implant: EmpImplant

- type: entity
  id: ScramImplanter
  suffix: scram
  parent: BaseImplantOnlyImplanterSyndi
  components:
    - type: Implanter
      implant: ScramImplant

- type: entity
  id: DnaScramblerImplanter
  suffix: DNA scrambler
  parent: BaseImplantOnlyImplanterSyndi
  components:
    - type: Implanter
      implant: DnaScramblerImplant

#Nuclear Operative/Special implanters

- type: entity
  id: MicroBombImplanter
  suffix: micro-bomb
  parent: BaseImplantOnlyImplanterSyndi
  components:
    - type: Implanter
      implant: MicroBombImplant

- type: entity
  id: MacroBombImplanter
  suffix: macro-bomb
  parent: BaseImplantOnlyImplanterSyndi
  components:
    - type: Implanter
      implant: MacroBombImplant

- type: entity
  id: DeathRattleImplanter
  suffix: death rattle
  parent: BaseImplantOnlyImplanterSyndi
  components:
    - type: Implanter
      implant: DeathRattleImplant

- type: entity
  id: DeathAcidifierImplanter
  suffix: death acidifier
  parent: BaseImplantOnlyImplanterSyndi
  components:
  - type: Implanter
    implant: DeathAcidifierImplant

- type: entity
  id: FakeMindShieldImplanter
  suffix: fake mindshield
  parent: BaseImplantOnlyImplanterSyndi
  components:
  - type: Implanter
    implant: FakeMindShieldImplant

# Security and Command implanters

- type: entity
  id: MindShieldImplanter
  parent: BaseImplantOnlyImplanter
  suffix: mindshield
  components:
    - type: Implanter
      implant: MindShieldImplant

# Centcomm implanters

- type: entity
  id: RadioImplanterCentcomm
  suffix: radio Centcomm
  parent: BaseImplantOnlyImplanter
  components:
  - type: Implanter
    implant: RadioImplantCentcomm
