- 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
  - 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:
      provided_container: !type:Container { }

- type: entity
  parent: BaseAction
  id: ActionBorgSwapModule
  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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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: 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
    moduleId: Cables # Frontier
    items:
    # - CableApcStackLingering10 # DeltaV
    # - CableMVStackLingering10 # DeltaV
    # - CableHVStackLingering10 # DeltaV
    - Wirecutter
    - Crowbar # Frontier
    - trayScanner
  # Begin DeltaV Additions - wires module can assemble electronics
  - type: DroppableBorgModule
    moduleId: Cables
    items:
    - id: CableApcStack
      whitelist:
        components:
        - CablePlacer
      displayName: borg-placeholder-display-name-cable-coil
    - id: CableMVStack
      whitelist:
        components:
        - CablePlacer
      displayName: borg-placeholder-display-name-cable-coil
    - id: CableHVStack
      whitelist:
        components:
        - CablePlacer
      displayName: borg-placeholder-display-name-cable-coil
  # End DeltaV Additions
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: wire-module }

- type: entity
  id: BorgModuleFireExtinguisher
  parent: [ BaseBorgModule, BaseProviderBorgModule ]
  name: fire extinguisher cyborg module # Frontier: thruster<fire extinguisher
  # 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! # Frontier
  description: A module to help extinguish fires.
  components:
  - type: Sprite
    layers:
    - state: generic
    - state: icon-fire-extinguisher
  - type: ItemBorgModule
    moduleId: FireExtinguisher # Frontier
    items:
    - BorgFireExtinguisher
  # - BorgHandheldGPSBasic # Frontier
  # - HandheldStationMapUnpowered # Frontier
  # - HandHeldMassScannerBorg # Frontier: todo - metal foam grenade? fire axe?
  - 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
    moduleId: Tools # Frontier
    items:
    - Crowbar
    - Wrench
    - Screwdriver
    - Wirecutter
    - WelderIndustrial
    - Multitool
    - MaintenanceJack # Frontier
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: tool-module }

# cargo modules
- type: entity
  id: BorgModuleAppraisal
  parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ]
  name: cargo cyborg module # Frontier: appraisal<cargo
  components:
  - type: Sprite
    layers:
    - state: cargo
    - state: icon-appraisal
  - type: ItemBorgModule
    moduleId: Appraisal # Frontier
    items:
    - AppraisalTool
    # - Pen # Frontier
    # - HandLabeler # Frontier
    # - RubberStampApproved # Frontier
    # - RubberStampDenied # Frontier
    # - RadioHandheld # Frontier
  # Frontier: droppable items
  - type: DroppableBorgModule
    moduleId: Appraisal
    items: []
    placeholders:
    - id: CrateTradeSecureNormal
      whitelist:
        components:
        - TradeCrate
      displayName: borg-placeholder-display-name-trading-crate
    - id: CrateTradeSecureNormal
      whitelist:
        components:
        - TradeCrate
      displayName: borg-placeholder-display-name-trading-crate
  # End Frontier
  - 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
    moduleId: Mining # Frontier
    items:
    - MiningDrill
    - Shovel
    - MineralScannerUnpowered
    # - BorgOreBag # Frontier
    - RadioHandheldNF # Frontier: RadioHandheld<RadioHandheldNF
  # Frontier: droppable borg items
  - type: DroppableBorgModule
    moduleId: Mining
    items:
    - id: OreBag
      whitelist:
        components:
        - NFOreBag
  # End Frontier: droppable borg items
  - 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
    moduleId: AdvancedMining # Frontier
    items:
    - MiningDrillDiamond
    - Shovel
    - AdvancedMineralScannerUnpowered
    # - OreBagOfHolding # Frontier
    - RadioHandheldNF # Frontier
  # Frontier: droppable items
  - type: DroppableBorgModule
    moduleId: AdvancedMining
    items:
    - id: OreBagOfHolding
      whitelist:
        components:
        - NFOreBag
  # End Frontier: droppable items
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-mining-module }

- type: entity
  id: BorgModuleTraversal
  parent: [ BaseBorgModuleCargo, BaseProviderBorgModule ]
  name: grappling gun cyborg module # Frontier: traversal<grappling gun (it is what it is)
  components:
  - type: Sprite
    layers:
    - state: cargo
    - state: icon-grappling-gun
  - type: ItemBorgModule
    moduleId: GrapplingGun # Frontier
    items:
    - WeaponGrapplingGun
    # - BorgFireExtinguisher # Frontier: just use the jetpack module
    - BorgHandheldGPSBasic
    - 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
    moduleId: AdvancedTools # Frontier
    items:
    - JawsOfLife
    - PowerDrill
    - WelderExperimental
    - Multitool
    - RemoteSignallerAdvanced
    - MaintenanceJack # Frontier
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: adv-tools-module }

- type: entity
  id: BorgModuleConstruction
  parent: [ BaseBorgModuleEngineering, BaseProviderBorgModule ]
  name: construction cyborg module
  components:
  - type: Sprite
    layers:
    - state: engineering
    - state: icon-construction
  # Frontier: ItemBorgModule replaced with droppable variants
  - type: DroppableBorgModule
    moduleId: Construction
    items:
    - id: ConstructionBag
      whitelist:
        components:
        - NFConstructionBag
    placeholders:
    - id: SheetSteel
      whitelist:
        tags:
        - Ingot
        - RodMetal1
        - Sheet
        components:
        - ConstructionMaterials
      displayName: borg-placeholder-display-name-construction-material
    - id: FloorTileItemSteel
      whitelist:
        tags:
        - Ingot
        - RodMetal1
        - Sheet
        components:
        - ConstructionMaterials
      displayName: borg-placeholder-display-name-construction-material
    - id: CapacitorStockPart
      whitelist:
        tags:
        - Ingot
        - RodMetal1
        - Sheet
        components:
        - ConstructionMaterials
      displayName: borg-placeholder-display-name-construction-material
    - id: ThrusterFlatpack
      whitelist:
        components:
        - Flatpack
      displayName: borg-placeholder-display-name-flatpack
    - id: StationRecordsComputerCircuitboard
      whitelist:
        components:
        - Electronics
        - MachineBoard
        - ComputerBoard
      displayName: borg-placeholder-display-name-electronics
  # End Frontier
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: construction-module }

- type: entity
  id: BorgModuleRCD
  parent: [ BaseBorgModuleEngineering, BaseProviderBorgModule ]
  name: advanced engineering cyborg module # Frontier: add "advanced"
  components:
  - type: Sprite
    layers:
    - state: engineering
    - state: icon-rcd
  - type: ItemBorgModule
    moduleId: RCD # Frontier
    items:
    - RCDRecharging
    # - BorgFireExtinguisher # Frontier: use jetpack module
    # - BorgHandheldGPSBasic # Frontier: use jetpack module
    - GasAnalyzer
    - HolofanProjectorBorg
    - 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
    moduleId: LightReplacer # Frontier
    items:
    - LightReplacer
    # - BorgTrashBag
    - Plunger
    # - SoapBorg
  # Frontier: droppable items
  - type: DroppableBorgModule
    moduleId: LightReplacer
    items: []
    placeholders:
    - id: LightBulb
      whitelist:
        components:
        - LightBulb
      displayName: borg-placeholder-display-name-lights
    - id: TrashBag
      whitelist:
        tags:
        - TrashBag
    - id: Soap
      whitelist:
        tags:
        - Soap
  # End Frontier
  - 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
    moduleId: Cleaning # Frontier
    items:
    # - MopItem # Frontier
    # - BorgBucket # Frontier
    # - BorgSprayBottle # Frontier
    - HoloprojectorBorg
  # Frontier: droppable items
  - type: DroppableBorgModule
    moduleId: Cleaning
    items:
    - id: MopItem
      whitelist:
        components:
        - Absorbent # go go borg towel
    - id: Bucket
      whitelist:
        tags:
        - Bucket
    - id: SprayBottle
      whitelist:
        components:
        - Spray
    placeholders:
    - id: CleanerGrenade
      whitelist:
        components:
        - NFCleanade
    - id: CleanerGrenade
      whitelist:
        components:
        - NFCleanade
  # End Frontier
  - 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
    moduleId: AdvancedCleaning # Frontier
    items:
    - AdvMopItem
    - BorgMegaSprayBottle
    - HoloprojectorBorg
    # - BorgDropper # Frontier
    # - BorgBeaker # Frontier
  # Frontier: droppable items
  - type: DroppableBorgModule
    moduleId: AdvancedCleaning
    items:
    - id: Bucket
      whitelist:
        tags:
        - GlassBeaker
        - Bucket
      displayName: borg-placeholder-display-name-glass-beaker
    placeholders:
    - id: CleanerGrenade
      whitelist:
        components:
        - NFCleanade
    - id: CleanerGrenade
      whitelist:
        components:
        - NFCleanade
  # End Frontier
  - 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
    moduleId: Diagnosis # Frontier
    items:
    - HandheldHealthAnalyzerUnpowered
    - ClothingNeckStethoscope
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: diagnosis-module }

- type: entity
  id: BorgModuleTopicals
  parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ]
  name: topicals cyborg module
  components:
  - type: Sprite
    layers:
    - state: medical
    - state: icon-treatment
  # Frontier: droppable borg modules (largely from Delta-V#3119, thank you deltanedas)
  - type: ItemBorgModule
    moduleId: Treatment # Frontier
    items:
    - HandheldHealthAnalyzerUnpowered
    # - Gauze10Lingering # Frontier
    # - Brutepack10Lingering # Frontier
    # - Ointment10Lingering # Frontier
    # - Bloodpack10Lingering # Frontier
    # - RegenerativeMeshLingering0 # Frontier
    # - MedicatedSutureLingering0 # Frontier
  - type: DroppableBorgModule
    moduleId: Treatment
    items:
    - id: Brutepack
      whitelist:
        components:
        - Healing
      displayName: borg-placeholder-display-name-topical-medication
    - id: Ointment
      whitelist:
        components:
        - Healing
      displayName: borg-placeholder-display-name-topical-medication
    - id: Gauze
      whitelist:
        components:
        - Healing
      displayName: borg-placeholder-display-name-topical-medication
    - id: Bloodpack
      whitelist:
        components:
        - Healing
      displayName: borg-placeholder-display-name-topical-medication
    - id: Syringe
      whitelist:
        tags:
        - Syringe
  # End Frontier
  - 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
    moduleId: Defibrillator # Frontier
    items:
    - HandheldHealthAnalyzerUnpowered
    - DefibrillatorOneHandedUnpowered
    # - BorgFireExtinguisher # Frontier
    # - BorgHandheldGPSBasic # Frontier
    - HandLabeler
  - 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-chem
  - type: ItemBorgModule
    moduleId: Chemical # Frontier
    items:
    - HandheldHealthAnalyzerUnpowered
    # - Syringe # Frontier
    - BorgDropper
    # - BorgVial # Frontier
    # - BorgVial # Frontier
    # - BorgVial # Frontier
  # Frontier: droppable vials
  - type: DroppableBorgModule
    moduleId: Artifact
    items:
    - id: Syringe
      whitelist:
        tags:
        - Syringe
    - id: BaseChemistryEmptyVial
      whitelist:
        tags:
        - CentrifugeCompatible
    - id: BaseChemistryEmptyVial
      whitelist:
        tags:
        - CentrifugeCompatible
    - id: BaseChemistryEmptyVial
      whitelist:
        tags:
        - CentrifugeCompatible
  # End Frontier
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: chem-module }

- type: entity
  id: BorgModuleAdvancedChemical
  parent: [ BaseBorgModuleMedical, BaseProviderBorgModule ]
  name: advanced chemical 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-chemist
  - type: ItemBorgModule
    moduleId: AdvancedTreatment # Frontier
    items:
    - HandheldHealthAnalyzerUnpowered
    - BorgHypo
    # - Syringe # Frontier
    # - BorgDropper # Frontier
    # - BorgBeaker # Frontier
    # - BorgBeaker # Frontier
  # Frontier: droppable borg items
  - type: DroppableBorgModule
    moduleId: AdvancedTreatment
    items:
    - id: Syringe
      whitelist:
        tags:
        - Syringe
    - id: Beaker
      whitelist:
        tags:
        - GlassBeaker
    - id: Beaker
      whitelist:
        tags:
        - GlassBeaker
  # End Frontier: droppable borg items
  - 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
    moduleId: Artifact # Frontier
    items:
    - NodeScanner
    # - SprayBottle # Frontier
    - GasAnalyzer
    - BorgDropper
    # - BorgVial # Frontier
    - GeigerCounter
  # Frontier: droppable vials
  - type: DroppableBorgModule
    moduleId: Artifact
    items:
    - id: BaseChemistryEmptyVial
      whitelist:
        tags:
        - CentrifugeCompatible
    - id: SprayBottle
      whitelist:
        components:
        - Spray
  # End Frontier
  - 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
    moduleId: Anomaly # Frontier
    items:
    - AnomalyScanner
    - AnomalyLocatorUnpowered
    - AnomalyLocatorWideUnpowered
    - HandLabeler
    # - SheetRGlassLingering0 # Frontier
    # - SheetRPGlassLingering0 # Frontier
  # Frontier: droppable vials
  - type: DroppableBorgModule
    moduleId: Anomaly
    items: []
    placeholders:
    - id: SheetRGlass
      whitelist:
        tags:
        - Ingot
        - RodMetal1
        - Sheet
        components:
        - ConstructionMaterials
      displayName: borg-placeholder-display-name-construction-material
    - id: SheetRPGlass
      whitelist:
        tags:
        - Ingot
        - RodMetal1
        - Sheet
        components:
        - ConstructionMaterials
      displayName: borg-placeholder-display-name-construction-material
  # End Frontier
  - 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
  categories: [HideSpawnMenu] # Frontier: unused, use NF variants
  components:
  - type: Sprite
    layers:
    - state: service
    - state: icon-pen
  - type: ItemBorgModule
    moduleId: Service # Frontier
    items:
    - Pen
    #- BooksBag (Add back when hand whitelisting exists, at the moment they can only use it like an orebag.)
    - HandLabeler
    - RubberStampApproved
    - RubberStampDenied
    - BorgDropper
    - BorgVial
  - 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
  # Begin DeltaV Removals - replaced by hands
  #- type: ItemBorgModule
  #  moduleId: Music # Frontier
  #  items:
  #  - SynthesizerInstrument
  #  - ElectricGuitarInstrument
  #  - SaxophoneInstrument
  # End DeltaV Removals
  # Begin DeltaV Additions
  - type: DroppableBorgModule
    moduleId: Music # Frontier
    items:
    - id: SynthesizerInstrument
      whitelist:
        requireAll: true # no picking up harpies or grand pianos
        components:
        - Instrument
        - Item
      displayName: borg-placeholder-display-name-musical-instrument # Frontier
    - id: ElectricGuitarInstrument
      whitelist:
        requireAll: true
        components:
        - Instrument
        - Item
      displayName: borg-placeholder-display-name-musical-instrument # Frontier
    - id: SaxophoneInstrument
      whitelist:
        requireAll: true
        components:
        - Instrument
        - Item
      displayName: borg-placeholder-display-name-musical-instrument # Frontier
  # End DeltaV Additions
  - 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
    moduleId: Gardening # Frontier
    items:
    - HydroponicsToolMiniHoe
    - HydroponicsToolSpade
    - HydroponicsToolClippers
    # - Bucket # Frontier
    - BorgDropper # Frontier
  # Frontier: droppable borg items
  - type: DroppableBorgModule
    moduleId: Gardening
    items:
    - id: Bucket
      whitelist:
        tags:
        - Bucket
    placeholders:
    - id: AppleSeeds
      whitelist:
        components:
        - Seed
      displayName: borg-placeholder-display-name-seeds # Frontier
  # End Frontier
  - 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
    moduleId: Harvesting # Frontier
    items:
    - HydroponicsToolScythe
    - HydroponicsToolHatchet
    # - PlantBag # Frontier
  # Frontier: droppable borg items
  - type: DroppableBorgModule
    moduleId: Harvesting
    items:
    - id: PlantBag
      whitelist:
        components:
        - NFPlantBag
    placeholders:
    - id: FoodApple
      whitelist:
        components:
        - Produce
      displayName: borg-placeholder-display-name-produce # Frontier
    - id: WeedSpray
      whitelist:
        tags:
        - Spray
        - PlantBGone
  # End Frontier
  - 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
    moduleId: Clowning # Frontier
    items:
    - BikeHorn
    - ClownRecorder
    - BikeHornInstrument
  # Frontier: droppable items
  - type: DroppableBorgModule
    moduleId: Clowning # Frontier
    items: []
    placeholders:
    - id: TrashBananaPeel
      whitelist:
        tags:
        - BananaPeel
    - id: FoodPieBananaCream
      whitelist:
        components:
        - CreamPie
  # End Frontier: droppable items
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: clowning-module }

#syndicate modules
- type: entity
  id: BorgModuleSyndicateWeapon
  parent: [ BaseBorgModule, BaseProviderBorgModule, BaseC3SyndicateContraband ] # Frontier: BaseSyndicateContraband<BaseC3SyndicateContraband
  name: weapon cyborg module
  components:
  - type: Sprite
    layers:
    - state: syndicate
    - state: icon-syndicate
  - type: ItemBorgModule
    moduleId: Weapons # Frontier
    items:
    - NFWeaponPistolEchis # Frontier: WeaponPistolEchis<WeaponPistolEchis
    - 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
  id: BorgModuleOperative
  parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseC3SyndicateContraband ] # Frontier: BaseSyndicateContraband<BaseC3SyndicateContraband
  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
      moduleId: Operative # Frontier
      items:
      - Crowbar
      - Emag
      - AccessBreaker
      - PinpointerSyndicateNuclear
    - type: BorgModuleIcon
      icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-operative-module }

- type: entity
  id: BorgModuleEsword
  parent: [ BaseBorgModuleSyndicate, BaseProviderBorgModule, BaseC3SyndicateContraband ] # Frontier: BaseSyndicateContraband<BaseC3SyndicateContraband
  name: energy sword cyborg module
  description: A module that comes with a double energy sword.
  components:
    - type: Sprite
      layers:
      - state: syndicate
      - state: icon-syndicate
    - type: ItemBorgModule
      moduleId: EnergySword # Frontier
      items:
      - CyborgEnergySwordDouble
      - PinpointerSyndicateNuclear
    - type: BorgModuleIcon
      icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-esword-module }

- type: entity
  id: BorgModuleL6C
  parent: [ BaseBorgModuleSyndicateAssault, BaseProviderBorgModule, BaseC3SyndicateContraband ] # Frontier: BaseSyndicateContraband<BaseC3SyndicateContraband
  name: cyborg GSW LMG-6 module # Frontier: "L6C ROW cyborg module"<"cyborg GSW LMG-6 module"
  description: A module that comes with a GSW LMG-6. # Frontier
  components:
    - type: Sprite
      layers:
      - state: syndicate
      - state: icon-syndicate
    - type: ItemBorgModule
      moduleId: L6CROW # Frontier
      items:
        - NFWeaponLightMachineGunL6C # Frontier: WeaponLightMachineGunL6C<NFWeaponLightMachineGunL6C
        - PinpointerSyndicateNuclear
    - type: BorgModuleIcon
      icon: { sprite: Interface/Actions/actions_borg.rsi, state: syndicate-l6c-module }

- type: entity
  id: BorgModuleMartyr
  parent: [ BaseBorgModule, BaseProviderBorgModule, BaseC3SyndicateContraband ] # Frontier: BaseSyndicateContraband<BaseC3SyndicateContraband
  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
      moduleId: Martyr # Frontier
      items:
        - 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

# 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
    moduleId: XenoborgBasic # Frontier
    items:
    - MaterialBag
    - PinpointerMothership
    - 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
    moduleId: XenoborgTool # Frontier
    items:
    - Crowbar
    - Wrench
    - Screwdriver
    - Wirecutter
    - Multitool
    - RefuelingWelder
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-tool-module }

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleAccessBreaker
  name: access breaker xenoborg module
  description: Module with a access breaker.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-access-breaker
  - type: ItemBorgModule
    moduleId: XenoborgAccessBreaker # Frontier
    items:
    - AccessBreaker
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-access-breaker-module }

- type: entity
  parent: [ BaseXenoborgModuleEngi, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleFireExtinguisher
  name: fire extinguisher xenoborg module
  description: Module with a self-refueling fire extinguisher.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_engi
    - state: icon-xenoborg-fire-extinguisher
  - type: ItemBorgModule
    moduleId: XenoborgFireExtinguisher # Frontier
    items:
    - SelfRechargingFireExtinguisher
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-extinguisher-module }

- 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
    moduleId: XenoborgJammer # Frontier
    items:
    - 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: ItemBorgModule
    moduleId: XenoborgLaser # Frontier
    items: [] # Frontier: empty set
    # - XenoborgLaserGun # Frontier
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-laser-module }

- type: entity
  parent: [ BaseXenoborgModuleHeavy, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleHeavyLaser
  name: heavy laser xenoborg module
  description: Module with a heavy laser gun.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_heavy
    - state: icon-xenoborg-laser2
  - type: ItemBorgModule
    moduleId: XenoborgLaserHeavy # Frontier
    items: [] # Frontier
    # - XenoborgHeavyLaserGun # Frontier
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-laser2-module }

- 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
    moduleId: XenoborgSpaceMovement # Frontier
    items:
    - HandheldGPSBasic
    - HandHeldMassScannerBorg
    - HandheldStationMapUnpowered
    - WeaponGrapplingGun
    - JetpackXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-space-movement-module }

- type: entity
  parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleSword
  name: sword xenoborg module
  description: Module with a kukri knife.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_scout
    - state: icon-xenoborg-sword
  - type: ItemBorgModule
    moduleId: XenoborgSword # Frontier
    items:
    - KukriKnife
    - JetpackXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-sword-module }

- type: entity
  parent: [ BaseXenoborgModuleScout, BaseProviderBorgModule, BaseXenoborgContraband ]
  id: XenoborgModuleEnergySword
  name: energy sword xenoborg module
  description: Module with an energy dagger.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_scout
    - state: icon-xenoborg-sword2
  - type: ItemBorgModule
    moduleId: XenoborgSwordFast # Frontier
    items:
    - EnergyDaggerLoudBlue
    - JetpackXenoborg
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-sword2-module }

- 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: ItemBorgModule
    moduleId: XenoborgHypo # Frontier
    items:
    - NocturineHypo
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-hypo-module }

- 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
    moduleId: XenoborgProjector # Frontier
    items:
    - ChameleonProjector
  - 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 invisible for some time.
  components:
  - type: Sprite
    layers:
    - state: xenoborg_stealth
    - state: icon-xenoborg-cloak
  - type: ItemBorgModule
    moduleId: XenoborgCloaking # Frontier
    items:
    - CloakingDevice
  - type: BorgModuleIcon
    icon: { sprite: Interface/Actions/actions_borg.rsi, state: xenoborg-eye-module }
