- type: entity
  id: BaseBorgModule
  parent: BaseItem
  name: borg module
  description: A piece of tech that gives cyborgs new abilities.
  abstract: true
  components:
  - type: Item
    storedRotation: -90
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#8FCBCB"
      - state: base-module-inhand-left
        color: "#A1A1A1"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#7D7D7D"
      right:
      - state: base-icon-inhand-right
        color: "#8FCBCB"
      - state: base-module-inhand-right
        color: "#A1A1A1"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#7D7D7D"
  - type: Sprite
    sprite: Objects/Specific/Robotics/borgmodule.rsi
  - type: BorgModule
    borgFitTypes:
    - borg-type-all
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: no-action }
  - type: StaticPrice
    price: 100
  - type: Tag
    tags:
    - BorgModuleGeneric
  - type: GuideHelp
    guides:
    - Cyborgs
    - Robotics

- type: entity
  id: BaseProviderBorgModule
  abstract: true
  components:
  - type: SelectableBorgModule
  - type: ContainerContainer
    containers:
      holding_container: !type:Container { }

- type: entity
  parent: BaseAction
  id: ActionBorgSwapModule
  # Name and description will normally be changed by BorgSystem
  name: Swap Module
  description: Select this module, enabling you to use the tools it provides.
  components:
  - type: Action
    itemIconStyle: BigAction
    useDelay: 0.5
  - type: InstantAction
    event: !type:BorgModuleActionSelectedEvent

- type: entity
  id: BaseBorgModuleCargo
  parent: BaseBorgModule
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - borg-type-salvage
  - type: Tag
    tags:
    - BorgModuleCargo
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#EBD8B7"
      - state: base-module-inhand-left
        color: "#613D1D"
      - state: base-stripes-inhand-left
        color: "#593718"
      right:
      - state: base-icon-inhand-right
        color: "#EBD8B7"
      - state: base-module-inhand-right
        color: "#613D1D"
      - state: base-stripes-inhand-right
        color: "#593718"

- type: entity
  id: BaseBorgModuleEngineering
  parent: BaseBorgModule
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - borg-type-engineer
  - type: Tag
    tags:
    - BorgModuleEngineering
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#8FCBCB"
      - state: base-module-inhand-left
        color: "#BA3939"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#DEC343"
      right:
      - state: base-icon-inhand-right
        color: "#8FCBCB"
      - state: base-module-inhand-right
        color: "#BA3939"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#DEC343"

- type: entity
  id: BaseBorgModuleJanitor
  parent: BaseBorgModule
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - borg-type-janitor
  - type: Tag
    tags:
    - BorgModuleJanitor
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#CFA2E4"
      - state: base-module-inhand-left
        color: "#753186"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#404040"
      right:
      - state: base-icon-inhand-right
        color: "#CFA2E4"
      - state: base-module-inhand-right
        color: "#753186"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#404040"

- type: entity
  id: BaseBorgModuleMedical
  parent: BaseBorgModule
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - borg-type-medical
  - type: Tag
    tags:
    - BorgModuleMedical
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#EEF5F5"
      - state: base-module-inhand-left
        color: "#5A96BB"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#C3C3C3"
      right:
      - state: base-icon-inhand-right
        color: "#EEF5F5"
      - state: base-module-inhand-right
        color: "#5A96BB"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#C3C3C3"

- type: entity
  id: BaseBorgModuleScience
  parent: BaseBorgModule
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - borg-type-generic
  - type: Tag
    tags:
    - BorgModuleScience
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#FFAEB6"
      - state: base-module-inhand-left
        color: "#9C0DE1"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#C3C3C3"
      right:
      - state: base-icon-inhand-right
        color: "#FFAEB6"
      - state: base-module-inhand-right
        color: "#9C0DE1"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#C3C3C3"

- type: entity
  id: BaseBorgModuleService
  parent: BaseBorgModule
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - borg-type-service
  - type: Tag
    tags:
    - BorgModuleService
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#F3F3F3"
      - state: base-module-inhand-left
        color: "#3A3A3A"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#313131"
      right:
      - state: base-icon-inhand-right
        color: "#F3F3F3"
      - state: base-module-inhand-right
        color: "#3A3A3A"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#313131"

- type: entity
  id: BaseBorgModuleSyndicate
  parent: BaseBorgModule
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - borg-type-syndicate
  - type: Tag
    tags:
    - BorgModuleSyndicate
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#FF0000"
      - state: base-module-inhand-left
        color: "#891417"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#7B0F12"
      right:
      - state: base-icon-inhand-right
        color: "#FF0000"
      - state: base-module-inhand-right
        color: "#891417"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#7B0F12"


- type: entity
  id: BaseBorgModuleSyndicateAssault
  parent: BaseBorgModule
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - borg-type-syndicate-assault
  - type: Tag
    tags:
    - BorgModuleSyndicateAssault
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#FF0000"
      - state: base-module-inhand-left
        color: "#891417"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#7B0F12"
      right:
      - state: base-icon-inhand-right
        color: "#FF0000"
      - state: base-module-inhand-right
        color: "#891417"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#7B0F12"

- type: entity
  abstract: true
  parent: BaseBorgModule
  id: BaseXenoborgModuleGeneric
  components:
  - type: BorgModule
    borgFitTypes:
    - xenoborg-type-all
  - type: Tag
    tags:
    - XenoborgModuleGeneric
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#6E9EE0"
      - state: base-module-inhand-left
        color: "#337dd6"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#337dd6"
      right:
      - state: base-icon-inhand-right
        color: "#6E9EE0"
      - state: base-module-inhand-right
        color: "#337dd6"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#337dd6"

- type: entity
  abstract: true
  parent: BaseBorgModule
  id: BaseXenoborgModuleEngi
  components:
  - type: BorgModule
    borgFitTypes:
    - xenoborg-type-engi
  - type: Tag
    tags:
    - XenoborgModuleEngi
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#6E9EE0"
      - state: base-module-inhand-left
        color: "#337dd6"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#EDB45B"
      right:
      - state: base-icon-inhand-right
        color: "#6E9EE0"
      - state: base-module-inhand-right
        color: "#337dd6"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#EDB45B"

- type: entity
  parent: BaseBorgModule
  id: BaseXenoborgModuleHeavy
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - xenoborg-type-heavy
  - type: Tag
    tags:
    - XenoborgModuleHeavy
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#6E9EE0"
      - state: base-module-inhand-left
        color: "#337dd6"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#962023"
      right:
      - state: base-icon-inhand-right
        color: "#6E9EE0"
      - state: base-module-inhand-right
        color: "#337dd6"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#962023"

- type: entity
  parent: BaseBorgModule
  id: BaseXenoborgModuleScout
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - xenoborg-type-scout
  - type: Tag
    tags:
    - XenoborgModuleScout
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#6E9EE0"
      - state: base-module-inhand-left
        color: "#337dd6"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#282828"
      right:
      - state: base-icon-inhand-right
        color: "#6E9EE0"
      - state: base-module-inhand-right
        color: "#337dd6"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#282828"

- type: entity
  parent: BaseBorgModule
  id: BaseXenoborgModuleStealth
  abstract: true
  components:
  - type: BorgModule
    borgFitTypes:
    - xenoborg-type-stealth
  - type: Tag
    tags:
    - XenoborgModuleStealth
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#6E9EE0"
      - state: base-module-inhand-left
        color: "#337dd6"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#FF00CC"
      right:
      - state: base-icon-inhand-right
        color: "#6E9EE0"
      - state: base-module-inhand-right
        color: "#337dd6"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#FF00CC"

# generic modules
- type: entity
  id: BorgModulePrying
  parent: [ BaseBorgModule ]
  name: prying module
  description: A universal cyborg module which allows the unit to pry open doors.
  components:
  - type: Sprite
    layers:
    - state: generic
    - state: icon-tools
  - type: ComponentBorgModule
    components:
    - type: Prying
      speedModifier: 1.5
      useSound:
        path: /Audio/Items/jaws_pry.ogg

- type: entity
  id: BorgModuleCable
  parent: [ BaseBorgModule, BaseProviderBorgModule ]
  name: cable cyborg module
  description: A universal cyborg module which allows the unit to install and manipulate electrical systems.
  components:
  - type: Sprite
    layers:
    - state: generic
    - state: icon-cables
  - type: ItemBorgModule
    hands:
    - item: CableApcStack10
      hand:
        emptyRepresentative: CableApcStack10
        emptyLabel: borg-slot-cables-empty
        whitelist:
          tags:
          - CableCoil
    - item: CableMVStack10
      hand:
        emptyRepresentative: CableMVStack10
        emptyLabel: borg-slot-cables-empty
        whitelist:
          tags:
          - CableCoil
    - item: CableHVStack10
      hand:
        emptyRepresentative: CableHVStack10
        emptyLabel: borg-slot-cables-empty
        whitelist:
          tags:
          - CableCoil
    - item: Wirecutter
    - item: Crowbar
    - item: trayScanner
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: wire-module }

- type: entity
  id: BorgModuleArtistry
  parent: [ BaseBorgModule, BaseProviderBorgModule ]
  name: artistry cyborg module
  description: A module for arts & crafts whilst the station burns!
  components:
  - type: Sprite
    layers:
    - state: generic
    - state: icon-artistry
  - type: ItemBorgModule
    hands:
    - item: SprayPainterBorg
    - item: CrayonBorg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: artistry-module }

- type: entity
  id: BorgModuleFireExtinguisher
  parent: [ BaseBorgModule, BaseProviderBorgModule ]
  name: thruster cyborg module
  description: NT assigned a team to design a jetpack for cyborg units, but they ran out of funding and just made a bigger fire extinguisher. It comes with a integrated GPS and mass scanner though!
  components:
  - type: Sprite
    layers:
    - state: generic
    - state: icon-fire-extinguisher
  - type: ItemBorgModule
    hands:
    - item: BorgFireExtinguisher
    - item: BorgHandheldGPSBasic
    - item: HandheldStationMapUnpowered
    - item: HandHeldMassScannerBorg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: extinguisher-module }

- type: entity
  id: BorgModuleTool
  parent: [ BaseBorgModule, BaseProviderBorgModule ]
  name: tool cyborg module
  components:
  - type: Sprite
    layers:
    - state: generic
    - state: icon-tools
  - type: ItemBorgModule
    hands:
    - item: Crowbar
    - item: Wrench
    - item: Screwdriver
    - item: Wirecutter
    - item: WelderIndustrial
    - item: Multitool
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: tool-module }

- type: entity
  id: BorgModuleInflatable
  parent: [ BaseBorgModule, BaseProviderBorgModule ]
  name: inflatable cyborg module
  components:
  - type: Sprite
    layers:
    - state: generic
    - state: icon-inflatable
  - type: ItemBorgModule
    hands:
    - item: InflatableDoorStack
      hand:
        emptyRepresentative: InflatableDoorStack
        emptyLabel: borg-slot-inflatable-door-empty
        whitelist:
          tags:
          - Inflatable
    - item: InflatableWallStack
      hand:
        emptyRepresentative: InflatableWallStack
        emptyLabel: borg-slot-inflatable-wall-empty
        whitelist:
          tags:
          - Inflatable
    - item: BoxInflatable
    - item: WeaponMeleeNeedle
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: inflatable-module }

# cargo modules
- type: entity
  id: BorgModuleAppraisal
  parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ]
  name: appraisal cyborg module
  components:
  - type: Sprite
    layers:
    - state: cargo
    - state: icon-appraisal
  - type: ItemBorgModule
    hands:
    - item: AppraisalTool
    - item: Pen
    - item: HandLabeler
    - item: RubberStampApproved
    - item: RubberStampDenied
    - item: RadioHandheld
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: appraisal-module }

- type: entity
  id: BorgModuleMining
  parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ]
  name: mining cyborg module
  components:
  - type: Sprite
    layers:
    - state: cargo
    - state: icon-mining
  - type: ItemBorgModule
    hands:
    - item: MiningDrill
    - item: Shovel
    - item: MineralScannerUnpowered
    - item: BorgOreBag
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: mining-module }

- type: entity
  id: BorgModuleAdvancedMining
  parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ]
  name: advanced mining cyborg module
  description: Advanced cargo module containing advanced mining equipment. Studies show it advances productivity of a cyborg by 150%.
  components:
  - type: Sprite
    layers:
    - state: cargo
    - state: icon-mining-adv
  - type: ItemBorgModule
    hands:
    - item: MiningDrillDiamond
    - item: Shovel
    - item: AdvancedMineralScannerUnpowered
    - item: BorgOreBagOfHolding
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-mining-module }

- type: entity
  id: BorgModuleTraversal
  parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ]
  name: traversal cyborg module
  components:
  - type: Sprite
    layers:
    - state: cargo
    - state: icon-grappling-gun
  - type: ItemBorgModule
    hands:
    - item: WeaponGrapplingGun
    - item: BorgFireExtinguisher
    - item: BorgHandheldGPSBasic
    - item: HandHeldMassScannerBorg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: grappling-module }

# engineering modules
- type: entity
  id: BorgModuleAdvancedTool
  parent: [ BaseBorgModuleEngineering, BaseProviderBorgModule ]
  name: advanced tool cyborg module
  description: Advanced engineering module containing cutting-edge tools.
  components:
  - type: Sprite
    layers:
    - state: engineering
    - state: icon-tools-adv
  - type: ItemBorgModule
    hands:
    - item: JawsOfLife
    - item: PowerDrill
    - item: WelderExperimental
    - item: Multitool
    - item: RemoteSignallerAdvanced
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-tools-module }

- type: entity
  id: BorgModuleConstructionMaterialPlaceholder
  parent: BaseItem
  components:
  - type: Sprite
    sprite: Objects/Materials/Sheets/other.rsi
    state: generic_materials

- type: entity
  id: BorgModuleConstruction
  parent: [ BaseBorgModuleEngineering, BaseProviderBorgModule ]
  name: construction cyborg module
  components:
  - type: Sprite
    layers:
    - state: engineering
    - state: icon-construction
  - type: ItemBorgModule
    hands:
    - hand:
        emptyRepresentative: BorgModuleConstructionMaterialPlaceholder
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
    - hand:
        emptyRepresentative: BorgModuleConstructionMaterialPlaceholder
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
    - hand:
        emptyRepresentative: BorgModuleConstructionMaterialPlaceholder
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
    - hand:
        emptyRepresentative: DoorElectronics
        emptyLabel: borg-slot-circuitboards-empty
        whitelist:
          components:
          - Circuitboard
        blacklist:
          components:
          - SiliconLawProvider
    - hand:
        emptyRepresentative: MicroManipulatorStockPart
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
    - hand:
        emptyRepresentative: SpaceHeaterFlatpack
        emptyLabel: borg-slot-flatpacks-empty
        whitelist:
          components:
          - Flatpack
    - hand:
        emptyRepresentative: FloorTileItemSteel
        emptyLabel: borg-slot-tiles-empty
        whitelist:
          components:
          - FloorTile
    - hand:
        emptyRepresentative: FloorTileItemWhite
        emptyLabel: borg-slot-tiles-empty
        whitelist:
          components:
          - FloorTile
    - hand:
        emptyRepresentative: FloorTileItemDark
        emptyLabel: borg-slot-tiles-empty
        whitelist:
          components:
          - FloorTile
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: construction-module }

- type: entity
  id: BorgModuleRCD
  parent: [ BaseBorgModuleEngineering, BaseProviderBorgModule ]
  name: engineering cyborg module
  components:
  - type: Sprite
    layers:
    - state: engineering
    - state: icon-rcd
  - type: ItemBorgModule
    hands:
    - item: RCDRecharging
    - item: BorgFireExtinguisher
    - item: BorgHandheldGPSBasic
    - item: GasAnalyzer
    - item: HolofanProjectorBorg
    - item: GeigerCounter
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: rcd-module }

# janitorial modules (this gets its own unique things because janis are epic)
- type: entity
  id: BorgModuleCustodial
  parent: [ BaseBorgModuleJanitor, BaseProviderBorgModule ]
  name: custodial cyborg module
  components:
  - type: Sprite
    layers:
    - state: janitor
    - state: icon-light-replacer
  - type: ItemBorgModule
    hands:
    - item: LightReplacerFilled
    - item: BorgTrashBag
    - item: Plunger
    - item: SoapNT
      hand:
        emptyLabel: borg-slot-soap-empty
        emptyRepresentative: SoapNT
        whitelist:
          tags:
          - Soap
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: light-replacer-module }

- type: entity
  id: BorgModuleCleaning
  parent: [ BaseBorgModuleJanitor, BaseProviderBorgModule ]
  name: cleaning cyborg module
  components:
  - type: Sprite
    layers:
    - state: janitor
    - state: icon-mop
  - type: ItemBorgModule
    hands:
    - item: MopItem
    - item: WireBrush
    - item: BorgBucket
    - item: BorgSprayBottle
    - item: HoloprojectorBorg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: cleaning-module }

- type: entity
  id: BorgModuleAdvancedCleaning
  parent: [ BaseBorgModuleJanitor, BaseProviderBorgModule ]
  name: advanced cleaning cyborg module
  description: Advanced janitorial module containing, well... advanced janitor equipment. What were you expecting?
  components:
  - type: Sprite
    layers:
    - state: janitor
    - state: icon-mop-adv
  - type: ItemBorgModule
    hands:
    - item: AdvMopItem
    - item: WireBrushElectrical
    - item: BorgMegaSprayBottle
    - item: HoloprojectorBorg
    - item: BorgDropper
    - item: Beaker
      hand:
        emptyLabel: borg-slot-beakers-empty
        emptyRepresentative: Beaker
        whitelist:
          components:
          - FitsInDispenser
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-cleaning-module }

# medical modules
- type: entity
  id: BorgModuleDiagnosis # todo: reuse when med refractor is finished
  parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ]
  name: diagnosis cyborg module
  components:
  - type: Sprite
    layers:
    - state: medical
    - state: icon-diagnosis
  - type: ItemBorgModule
    hands:
    - item: HandheldHealthAnalyzer
    - item: ClothingNeckStethoscope
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: diagnosis-module }

- type: entity
  id: BorgModuleTopicals
  parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ]
  name: first aid cyborg module
  components:
  - type: Sprite
    layers:
    - state: medical
    - state: icon-treatment
  - type: ItemBorgModule
    hands:
    - item: HandheldHealthAnalyzer
    - item: AdvancedJetInjector
    - item: Gauze
      hand:
        emptyLabel: borg-slot-topicals-empty
        emptyRepresentative: Gauze
        whitelist:
          components:
          - Healing
    - item: Brutepack
      hand:
        emptyLabel: borg-slot-topicals-empty
        emptyRepresentative: Brutepack
        whitelist:
          components:
          - Healing
    - item: Ointment
      hand:
        emptyLabel: borg-slot-topicals-empty
        emptyRepresentative: Ointment
        whitelist:
          components:
          - Healing
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: treatment-module }

- type: entity
  id: BorgModuleRescue
  parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ]
  name: rescue cyborg module
  components:
  - type: Sprite
    layers:
    - state: medical
    - state: icon-defib
  - type: ItemBorgModule
    hands:
    - item: HandheldHealthAnalyzer
    - item: DefibrillatorOneHandedUnpowered
    - item: Crowbar
    - item: BorgFireExtinguisher
    - item: BorgHandheldGPSBasic
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: defib-module }

- type: entity
  id: BorgModuleChemical
  parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ]
  name: chemical cyborg module
  components:
  - type: Sprite
    layers:
    - state: medical
    - state: icon-chemist
  - type: ItemBorgModule
    hands:
    - item: HandLabeler
    - item: Syringe
      hand:
        emptyLabel: borg-slot-injector-dropper-empty
        emptyRepresentative: Syringe
        whitelist:
          tags:
          - Dropper
          - Syringe
    - item: PillCanister
      hand:
        emptyLabel: borg-slot-small-containers-empty
        emptyRepresentative: PillCanister
        whitelist:
          tags:
          - PillCanister
          - Bottle
          - Pill
    - item: Beaker
      hand:
        emptyLabel: borg-slot-chemical-containers-empty
        emptyRepresentative: Beaker
        whitelist:
          components:
          - FitsInDispenser
          tags:
          - ChemDispensable
    - item: Beaker
      hand:
        emptyLabel: borg-slot-chemical-containers-empty
        emptyRepresentative: Beaker
        whitelist:
          components:
          - FitsInDispenser
          tags:
          - ChemDispensable
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: chem-module }

- type: entity
  id: BorgModuleAdvancedTopical
  parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ]
  name: advanced first aid cyborg module
  description: Advanced medical module containing the cyborg adaptation of the highly coveted hypospray. Now your cyborgs can inject crew-harmers with chloral hydrate even faster!
  components:
  - type: Sprite
    layers:
    - state: medical
    - state: icon-chem
  - type: ItemBorgModule
    hands:
    - item: HandheldHealthAnalyzer
    - item: BorgHypo
    - item: Gauze
      hand:
        emptyLabel: borg-slot-topicals-empty
        emptyRepresentative: Gauze
        whitelist:
          components:
          - Healing
    - item: Brutepack
      hand:
        emptyLabel: borg-slot-topicals-empty
        emptyRepresentative: Brutepack
        whitelist:
          components:
          - Healing
    - item: Ointment
      hand:
        emptyLabel: borg-slot-topicals-empty
        emptyRepresentative: Ointment
        whitelist:
          components:
          - Healing
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-chem-module }

# science modules
# todo: if science ever gets their own custom robot, add more "sci" modules.
- type: entity
  id: BorgModuleArtifact
  parent: [ BaseBorgModuleScience, BaseProviderBorgModule ]
  name: artifact cyborg module
  components:
  - type: Sprite
    layers:
    - state: science
    - state: icon-artifacts
  - type: ItemBorgModule
    hands:
    - item: NodeScanner
    - item: SprayBottle
    - item: GasAnalyzer
    - item: BorgDropper
    - item: ChemistryEmptyVial
      hand:
        emptyLabel: borg-slot-small-containers-empty
        emptyRepresentative: ChemistryEmptyVial
        whitelist:
          components:
          - FitsInDispenser
    - item: GeigerCounter
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: node-scanner-module }

- type: entity
  id: BorgModuleAnomaly
  parent: [ BaseBorgModuleScience, BaseProviderBorgModule ]
  name: anomaly cyborg module
  components:
  - type: Sprite
    layers:
    - state: science
    - state: icon-anomalies
  - type: ItemBorgModule
    hands:
    - item: AnomalyScanner
    - item: AnomalyLocatorUnpowered
    - item: AnomalyLocatorWideUnpowered
    - item: HandLabeler
    - hand:
        emptyRepresentative: SheetRGlass
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
    - hand:
        emptyRepresentative: SheetRPGlass
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: anomaly-module }

# service modules
- type: entity
  id: BorgModuleService
  parent: [ BaseBorgModuleService, BaseProviderBorgModule ]
  name: service cyborg module
  components:
  - type: Sprite
    layers:
    - state: service
    - state: icon-pen
  - type: ItemBorgModule
    hands:
    - item: Pen
    - item: BooksBag
    - hand:
        emptyLabel: borg-slot-documents-empty
        emptyRepresentative: BookBase
        whitelist:
          tags:
          - Book
          - Dice
          - Document
          - Figurine
          - TabletopBoard
          - Write
    - hand:
        emptyLabel: borg-slot-documents-empty
        emptyRepresentative: Paper
        whitelist:
          tags:
          - Book
          - Dice
          - Document
          - Figurine
          - TabletopBoard
          - Write
    - item: HandLabeler
    - item: RubberStampApproved
    - item: RubberStampDenied
    - item: BorgDropper
    - item: DrinkShaker
      hand:
        emptyLabel: borg-slot-small-containers-empty
        emptyRepresentative: DrinkShaker
        whitelist:
          components:
          - FitsInDispenser
    - item: BarSpoon
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: service-module }

- type: entity
  id: BorgModuleMusique
  parent: [ BaseBorgModuleService, BaseProviderBorgModule ]
  name: musique cyborg module
  components:
  - type: Sprite
    layers:
    - state: service
    - state: icon-musique
  - type: ItemBorgModule
    hands:
    - item: SynthesizerInstrument
      hand:
        emptyLabel: borg-slot-instruments-empty
        emptyRepresentative: SynthesizerInstrument
        whitelist:
          components:
          - Instrument
    - item: ElectricGuitarInstrument
      hand:
        emptyLabel: borg-slot-instruments-empty
        emptyRepresentative: ElectricGuitarInstrument
        whitelist:
          components:
          - Instrument
    - item: SaxophoneInstrument
      hand:
        emptyLabel: borg-slot-instruments-empty
        emptyRepresentative: SaxophoneInstrument
        whitelist:
          components:
          - Instrument
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: musical-module }

- type: entity
  id: BorgModuleGardening
  parent: [ BaseBorgModuleService, BaseProviderBorgModule ]
  name: gardening cyborg module
  components:
  - type: Sprite
    layers:
    - state: service
    - state: icon-gardening
  - type: ItemBorgModule
    hands:
    - item: HydroponicsToolMiniHoe
    - item: HydroponicsToolSpade
    - item: HydroponicsToolClippers
    - item: Bucket
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: gardening-module }

- type: entity
  id: BorgModuleHarvesting
  parent: [ BaseBorgModuleService, BaseProviderBorgModule ]
  name: harvesting cyborg module
  components:
  - type: Sprite
    layers:
    - state: service
    - state: icon-harvesting
  - type: ItemBorgModule
    hands:
    - item: HydroponicsToolScythe
    - item: HydroponicsToolHatchet
    - item: PlantBag
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: harvesting-module }

- type: entity
  id: BorgModuleClowning
  parent: [ BaseBorgModuleService, BaseProviderBorgModule ]
  name: clowning cyborg module
  components:
  - type: Sprite
    layers:
    - state: service
    - state: icon-clown
  - type: ItemBorgModule
    hands:
    - item: BikeHorn
    - item: ClownRecorder
    - item: BikeHornInstrument
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: clowning-module }

- type: entity
  id: BorgModuleAdvancedClowning
  parent: [ BaseBorgModuleService, BaseProviderBorgModule ]
  name: advanced clowning cyborg module
  description: Advanced service module for only the silliest cyborgs! Comes with a built-in oven that bakes pies automatically over time, a holopeel projector, and a push horn.
  components:
  - type: Sprite
    layers:
    - state: service
    - state: icon-clown-adv
  - type: ItemBorgModule
    hands:
    - item: HoloprojectorClownBorg
    - item: BorgLauncherCreamPie
    - item: ClownRecorder
    - item: PushHorn
    - item: BikeHornInstrument
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-clowning-module }

#syndicate modules
- type: entity
  parent: [ BaseBorgModule, BaseProviderBorgModule, BaseSyndicateContraband ]
  id: BorgModuleSyndicateWeapon
  name: weapon cyborg module
  components:
  - type: Sprite
    layers:
    - state: syndicate
    - state: icon-syndicate
  - type: ItemBorgModule
    hands:
    - item: WeaponPistolEchis
    - item: EnergyDaggerLoud
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-weapon-module }
  - type: Item
    inhandVisuals:
      left:
      - state: base-icon-inhand-left
        color: "#FF0000"
      - state: base-module-inhand-left
        color: "#891417"
      - state: base-part-inhand-left
      - state: base-stripes-inhand-left
        color: "#7B0F12"
      right:
      - state: base-icon-inhand-right
        color: "#FF0000"
      - state: base-module-inhand-right
        color: "#891417"
      - state: base-part-inhand-right
      - state: base-stripes-inhand-right
        color: "#7B0F12"
  - type: StaticPrice
    price: 2500

- type: entity
  parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseSyndicateContraband ]
  id: BorgModuleOperative
  name: operative cyborg module
  description: A module that comes with a crowbar, an Emag, an Access Breaker and a syndicate pinpointer.
  components:
    - type: Sprite
      layers:
      - state: syndicate
      - state: icon-syndicate
    - type: ItemBorgModule
      hands:
      - item: Crowbar
      - item: Emag
      - item: AccessBreaker
      - item: PinpointerSyndicateNuclear
    - type: BorgModuleIcon
      icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-operative-module }

- type: entity
  parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseSyndicateContraband ]
  id: BorgModuleEsword
  name: energy sword cyborg module
  description: A weapons module that comes with an energy sword.
  components:
  - type: Sprite
    layers:
    - state: syndicate
    - state: icon-syndicate
  - type: ItemBorgModule
    hands:
    - item: CyborgEnergySword
    - item: PinpointerSyndicateNuclear
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-esword-module }

- type: entity
  id: BorgModuleDoubleEsword
  parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseSyndicateContraband ]
  name: double energy sword cyborg module
  description: A weapons module that comes with a double energy sword.
  components:
  - type: Sprite
    layers:
    - state: syndicate
    - state: icon-syndicate
  - type: ItemBorgModule
    hands:
    - item: CyborgEnergySwordDouble
    - item: PinpointerSyndicateNuclear
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-desword-module }

- type: entity
  parent: [ BaseBorgModuleSyndicateAssault, BaseProviderBorgModule, BaseSyndicateContraband ]
  id: BorgModuleL6C
  name: L6C ROW cyborg module
  description: A weapons module that comes with a L6C.
  components:
  - type: Sprite
    layers:
    - state: syndicate
    - state: icon-syndicate
  - type: ItemBorgModule
    hands:
    - item: WeaponLightMachineGunL6C
    - item: PinpointerSyndicateNuclear
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-l6c-module }

- type: entity
  parent: [ BaseBorgModuleSyndicateAssault, BaseProviderBorgModule, BaseSyndicateContraband ]
  id: BorgModuleC20r
  name: C-20r ROW cyborg module
  description: A weapons module that comes with a burst-fire C-20r.
  components:
  - type: Sprite
    layers:
    - state: syndicate
    - state: icon-syndicate
  - type: ItemBorgModule
    hands:
    - item: WeaponSubMachineGunC20rROW
    - item: PinpointerSyndicateNuclear
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-c20r-module }

- type: entity
  parent: [ BaseBorgModule, BaseProviderBorgModule, BaseSyndicateContraband ]
  id: BorgModuleMartyr
  name: martyr cyborg module
  description: "A module that comes with an explosive you probably don't want to handle yourself."
  components:
    - type: Sprite
      layers:
        - state: syndicateborgbomb
        - state: icon-bomb
    - type: ItemBorgModule
      hands:
      - item: SelfDestructSeq
    - type: BorgModuleIcon
      icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-martyr-module }
    - type: Item
      inhandVisuals:
        left:
        - state: base-icon-inhand-left
          color: "#FF0000"
        - state: base-module-inhand-left
          color: "#891417"
        - state: base-part-inhand-left
        - state: base-stripes-inhand-left
          color: "#7B0F12"
        right:
        - state: base-icon-inhand-right
          color: "#FF0000"
        - state: base-module-inhand-right
          color: "#891417"
        - state: base-part-inhand-right
        - state: base-stripes-inhand-right
          color: "#7B0F12"
    - type: StaticPrice
      price: 2000

# mothership module
- type: entity
  parent: [ BaseXenoborgModuleGeneric, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: MothershipModule
  name: mothership module
  description: A module that helps the mothership borg brains and install other modules.
  components:
  - type: Tag
    tags:
    - MothershipModule
  - type: Sprite
    layers:
    - state: xenoborg_generic
    - state: icon-xenoborg-basic
  - type: ItemBorgModule
    hands:
    - item: DoorRemoteXenoborg
    - hand:
        emptyRepresentative: MMIFilled
        emptyLabel: borg-slot-brains-empty
        whitelist:
          components:
          - Brain
          - BorgBrain
    - hand:
        emptyRepresentative: XenoborgModuleBasic
        emptyLabel: borg-slot-modules-empty
        whitelist:
          components:
          - BorgModule
    - hand:
        emptyRepresentative: MaterialXenoborgCrystal
        emptyLabel: borg-slot-xenoborg-crystal-empty
        whitelist:
          tags:
          - XenoborgCrystal
    - hand:
        emptyRepresentative: BorgModuleConstructionMaterialPlaceholder
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
    - hand:
        emptyRepresentative: PowerCellHigh
        emptyLabel: borg-slot-powercell-empty
        whitelist:
          components:
          - PowerCell
    - item: JawsOfLife
    - item: PowerDrill
    - item: WelderExperimental
    - item: Multitool
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-module-module }

# xenoborg modules
- type: entity
  parent: [ BaseXenoborgModuleGeneric, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleBasic
  name: basic xenoborg module
  description: Essential items for any Xenoborg.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_generic
    - state: icon-xenoborg-basic
  - type: ItemBorgModule
    hands:
    - hand:
        emptyRepresentative: MaterialXenoborgCrystal
        emptyLabel: borg-slot-xenoborg-crystal-empty
        whitelist:
          tags:
          - XenoborgCrystal
    - hand:
        emptyRepresentative: BorgModuleConstructionMaterialPlaceholder
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
    - item: XenoborgMaterialBag
    - item: PinpointerMothership
    - item: HandheldGPSBasic
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-basic-module }

- type: entity
  parent: [ BaseXenoborgModuleGeneric, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleTool
  name: tool xenoborg module
  description: Simple tools for most Xenoborgs.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_generic
    - state: icon-xenoborg-tools
  - type: ItemBorgModule
    hands:
    - item: Crowbar
    - item: Wrench
    - item: Screwdriver
    - item: Wirecutter
    - item: Multitool
    - item: RefuelingWelder
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-tool-module }

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleAdvancedTool
  name: advanced tool xenoborg module
  description: Advanced engineering module containing advanced xenoborg technology.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-construction
  - type: ItemBorgModule
    hands:
    - item: XenoborgJawsOfLife
    - item: PowerDrill
    - item: WelderExperimental
    - item: Multitool
    - item: trayScanner
    - item: RCDRecharging
    - item: SelfRechargingFireExtinguisher
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-adv-tools-module }

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleAccessBreaker
  name: access breaker xenoborg module
  description: Module with an access breaker.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-access-breaker
  - type: BorgModuleWhitelist
    moduleBlacklist:
      tags:
      - XenoborgModuleAccessBreaker
  - type: ItemBorgModule
    hands:
    - item: XenoborgAccessBreaker
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-access-breaker-module }
  - type: Tag
    tags:
    - XenoborgModuleEngi
    - XenoborgModuleAccessBreaker

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleConstruction
  name: construction xenoborg module
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-construction
  - type: ItemBorgModule
    hands:
    - hand:
        emptyRepresentative: BorgModuleConstructionMaterialPlaceholder
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
    - hand:
        emptyRepresentative: CableApcStack10
        emptyLabel: borg-slot-cables-empty
        whitelist:
          tags:
          - CableCoil
    - hand:
        emptyRepresentative: FloorTileItemExoBorg
        emptyLabel: borg-slot-tiles-empty
        whitelist:
          components:
          - FloorTile
    - hand:
        emptyRepresentative: MicroManipulatorStockPart
        emptyLabel: borg-slot-construction-empty
        whitelist:
          tags:
          - ConstructionMaterial
    - hand:
        emptyRepresentative: DoorElectronics
        emptyLabel: borg-slot-circuitboards-empty
        whitelist:
          components:
          - Circuitboard
        blacklist:
          components:
          - SiliconLawProvider
    - hand:
        emptyRepresentative: SpaceHeaterFlatpack
        emptyLabel: borg-slot-flatpacks-empty
        whitelist:
          components:
          - Flatpack
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-construction-module }

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleDeflectorField
  name: deflector field xenoborg module
  description: Module with a self-recharging deflector field projector.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-shield
  - type: ItemBorgModule
    hands:
    - item: HoloprojectorXenoField
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-deflector-module }

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleDoorControl
  name: door control xenoborg module
  description: Module that allows Xenoborgs to control airlocks.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-access-breaker
  - type: BorgModuleWhitelist
    moduleBlacklist:
      tags:
      - XenoborgModuleAccessBreaker
  - type: ItemBorgModule
    hands:
    - item: DoorRemoteXenoborg
    - item: XenoborgAccessBreaker
    - item: AccessConfiguratorXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-door-remote-module }
  - type: Tag
    tags:
    - XenoborgModuleEngi
    - XenoborgModuleAccessBreaker

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleTileGun
  name: tile gun xenoborg module
  description: Module with a tile gun. wait, a what?
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-tile
  - type: BorgModuleWhitelist
    moduleBlacklist: &secondaryWeapon
      tags:
      - XenoborgModuleSecondaryWeapon
  - type: ItemBorgModule
    hands:
    - item: WeaponTileGun
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-tile-module }
  - type: Tag
    tags:
    - XenoborgModuleEngi
    - XenoborgModuleSecondaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseXenoborgContraband ]
  id: XenoborgModuleZap
  name: zap xenoborg module
  description: Module that disables the grounding of the xenoborg, making them electrified. Shocking!
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-zap
  - type: ComponentBorgModule
    components:
    - type: Electrified
      requirePower: false
      shockDamage: 15
      shockDelay: 6
      shockTime: 0.25

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleOilGun
  name: oil gun xenoborg module
  description: Module with a gun that shoots ampoules filled with flammable oil.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-oil
  - type: BorgModuleWhitelist
    moduleBlacklist: &primaryWeapon
      tags:
      - XenoborgModulePrimaryWeapon
  - type: ItemBorgModule
    hands:
    - item: WeaponOilGun
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-oil-gun-module }
  - type: Tag
    tags:
    - XenoborgModuleEngi
    - XenoborgModulePrimaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleNaniteGun
  name: nanite gun xenoborg module
  description: Module that allows Xenoborgs to have a crystal firing nanite gun.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-nanite-gun
  - type: BorgModuleWhitelist
    moduleBlacklist: *primaryWeapon
  - type: ItemBorgModule
    hands:
    - item: WeaponNaniteGun
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-nanite-module }
  - type: Tag
    tags:
    - XenoborgModuleEngi
    - XenoborgModulePrimaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleJammer
  name: jammer xenoborg module
  description: Module with a communication jammer.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_heavy
    - state: icon-xenoborg-jammer
  - type: ItemBorgModule
    hands:
    - item: XenoborgRadioJammer
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-jammer-module }

- type: entity
  parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleLaser
  name: laser xenoborg module
  description: Module with a laser gun.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_heavy
    - state: icon-xenoborg-laser
  - type: BorgModuleWhitelist
    moduleBlacklist: *primaryWeapon
  - type: ItemBorgModule
    hands:
    - item: WeaponLaserGunXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-laser-module }
  - type: Tag
    tags:
    - XenoborgModuleHeavy
    - XenoborgModulePrimaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleHeavyLaser
  name: laser cannon xenoborg module
  description: Module with a laser cannon.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_heavy
    - state: icon-xenoborg-laser2
  - type: BorgModuleWhitelist
    moduleBlacklist: *primaryWeapon
  - type: ItemBorgModule
    hands:
    - item: WeaponLaserCannonXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-laser2-module }
  - type: Tag
    tags:
    - XenoborgModuleHeavy
    - XenoborgModulePrimaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleGuidedMissileLauncher
  name: guided missile launcher xenoborg module
  description: Module with guided missile launcher and a range finder to set targets.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_heavy
    - state: icon-xenoborg-guided-missile
  - type: BorgModuleWhitelist
    moduleBlacklist:
      tags:
      - XenoborgModuleSecondaryWeapon
      - XenoborgModuleWithSimpleOverlay
  - type: ComponentBorgModule
    components:
    - type: SimpleSpriteOverlay
      overlaySprite:
        sprite: Mobs/Silicon/chassis.rsi
        state: xenoborg_heavy_missile_launcher
  - type: ItemBorgModule
    hands:
    - item: WeaponGuidedMissileLauncherXenoborg
    - item: WeaponRangeFinderXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-guided-missile-module }
  - type: Tag
    tags:
    - XenoborgModuleHeavy
    - XenoborgModuleSecondaryWeapon
    - XenoborgModuleWithSimpleOverlay

- type: entity
  parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleRocket
  name: rocket module
  description: A module with a rocket launcher designed to destroy structures.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_heavy
    - state: icon-xenoborg-rocket
  - type: BorgModuleWhitelist
    moduleBlacklist:
      tags:
      - XenoborgModuleSecondaryWeapon
      - XenoborgModuleWithSimpleOverlay
  - type: ItemBorgModule
    hands:
    - item: WeaponRocketLauncherXenoborg
    - item: WeaponRocketLauncherXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-rocket-module }
  - type: ComponentBorgModule
    components:
    - type: SimpleSpriteOverlay
      overlaySprite:
        sprite: Mobs/Silicon/rockets.rsi
        state: heavy_xenoborg_rockets
  - type: Tag
    tags:
    - XenoborgModuleHeavy
    - XenoborgModuleSecondaryWeapon
    - XenoborgModuleWithSimpleOverlay

- type: entity
  parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleBurstFireLaser
  name: burst fire laser xenoborg module
  description: Module with a burst fire incendiary laser.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_heavy
    - state: icon-xenoborg-laser3
  - type: BorgModuleWhitelist
    moduleBlacklist: *primaryWeapon
  - type: ItemBorgModule
    hands:
    - item: WeaponBurstFireLaserXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-laser3-module }
  - type: Tag
    tags:
    - XenoborgModuleHeavy
    - XenoborgModulePrimaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleHeavy, BaseXenoborgContraband ]
  id: XenoborgModuleHeavyRadioactive
  name: radioactive xenoborg module
  description: Module that causes a xenoborg to emanate radioactive energy.
  components:
  - type: PointLight
    color: green
    radius: 5
    energy: 1
  - type: Sprite
    layers:
      - state: xenoborg_heavy
      - state: icon-xenoborg-radioactive
  - type: BorgModuleWhitelist
    moduleBlacklist: &moduleWithSimpleOverlay
      tags:
      - XenoborgModuleWithSimpleOverlay
  - type: ComponentBorgModule
    components:
    - type: SimpleSpriteOverlay
      overlaySprite:
        sprite: Mobs/Silicon/chassis.rsi
        state: xenoborg_heavy_rad
      shader: unshaded
    - type: RadiationSource
      intensity: 4
      slope: 1
    - type: AmbientSound
      range: 6
      volume: -3
      sound:
        path: /Audio/Ambience/Objects/xenoborg_radioactive.ogg
  - type: Tag
    tags:
    - XenoborgModuleHeavy
    - XenoborgModuleWithSimpleOverlay

- type: entity
  parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleSpaceMovement
  name: space movement xenoborg module
  description: Module that helps a Xenoborg move better in space.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_scout
    - state: icon-xenoborg-space-movement
  - type: ItemBorgModule
    hands:
    - item: HandheldGPSBasic
    - item: HandHeldMassScannerBorg
    - item: PinpointerMothership
    - item: HandheldStationMapUnpowered
    - item: WeaponGrapplingGun
    - item: JetpackXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-space-movement-module }

- type: entity
  parent: [ BaseXenoborgModuleScout, BaseXenoborgContraband ]
  id: XenoborgModuleJump
  name: xenoborg jump module
  description: Module that allows a xenoborg to jump forward.
  components:
  - type: ComponentBorgModule
    components:
    - type: JumpAbility
      action: ActionJumpBoost
      jumpDistance: 4
      jumpSound: /Audio/Effects/stealthoff.ogg
  - type: Sprite
    layers:
    - state: xenoborg_scout
    - state: icon-xenoborg-jump

- type: entity
  parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleSword
  name: knife xenoborg module
  description: Module with a kukri knife.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_scout
    - state: icon-xenoborg-sword
  - type: BorgModuleWhitelist
    moduleBlacklist: *primaryWeapon
  - type: ItemBorgModule
    hands:
    - item: KukriKnife
    - item: JetpackXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-sword-module }
  - type: Tag
    tags:
    - XenoborgModuleScout
    - XenoborgModulePrimaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleEnergySword
  name: energy dagger xenoborg module
  description: Module with an energy dagger.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_scout
    - state: icon-xenoborg-sword2
  - type: BorgModuleWhitelist
    moduleBlacklist: *primaryWeapon
  - type: ItemBorgModule
    hands:
    - item: EnergyDaggerLoudBlue
    - item: JetpackXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-sword2-module }
  - type: Tag
    tags:
    - XenoborgModuleScout
    - XenoborgModulePrimaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleBioKinfe
  name: bio knife xenoborg module
  description: Module with an bio knife.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_scout
    - state: icon-xenoborg-sword2
  - type: BorgModuleWhitelist
    moduleBlacklist: *primaryWeapon
  - type: ItemBorgModule
    hands:
    - item: XenoborgBioKnife
    - item: JetpackXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-bio-knife }
  - type: Tag
    tags:
    - XenoborgModuleScout
    - XenoborgModulePrimaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleStealth, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleHypo
  name: nocturine hypo xenoborg module
  description: Module with a self-refilling nocturine hypo.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_stealth
    - state: icon-xenoborg-hypo
  - type: BorgModuleWhitelist
    moduleBlacklist: *primaryWeapon
  - type: ItemBorgModule
    hands:
    - item: NocturineHypo
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-hypo-module }
  - type: Tag
    tags:
    - XenoborgModuleStealth
    - XenoborgModulePrimaryWeapon

- type: entity
  parent: [ BaseXenoborgModuleStealth, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleChameleonProjector
  name: chameleon projector xenoborg module
  description: Module with a chameleon projector.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_stealth
    - state: icon-xenoborg-projector
  - type: ItemBorgModule
    hands:
    - item: ChameleonProjectorNoBattery
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-projector-module }

- type: entity
  parent: [ BaseXenoborgModuleStealth, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleCloakDevice
  name: cloaking device xenoborg module
  description: Module with a device that allows xenoborgs to become semi-invisible for some time.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_stealth
    - state: icon-xenoborg-cloak
  - type: BorgModuleWhitelist
    moduleBlacklist:
      tags:
      - XenoborgModuleInvisibility
  - type: ItemBorgModule
    hands:
    - item: CloakingDevice
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-eye-module }
  - type: Tag
    tags:
    - XenoborgModuleStealth
    - XenoborgModuleInvisibility

- type: entity
  parent: [ BaseXenoborgModuleStealth, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleSuperCloakDevice
  name: invisibility device xenoborg module
  description: Module with a device that allows xenoborgs to become truly invisible for a short amount of time.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_stealth
    - state: icon-xenoborg-cloak2
  - type: BorgModuleWhitelist
    moduleBlacklist:
      tags:
      - XenoborgModuleInvisibility
  - type: ItemBorgModule
    hands:
    - item: SuperCloakingDevice
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-eye2-module }
  - type: Tag
    tags:
    - XenoborgModuleStealth
    - XenoborgModuleInvisibility
