- type: entity
  parent: ComputerRadar
  id: ComputerAdvancedRadar # Frontier
  name: advanced radar computer
  description: This advanced radar lets you detect far away objects for an increased tactical advantage.
  components:
  - type: Computer
    board: AdvancedRadarConsoleCircuitboard
  - type: DetectionRangeMultiplier
    infraredMultiplier: 1.2
    visualMultiplier: 1.5
  - type: RadarConsole
    maxIffRange: null # Frontier
  - type: Sprite
    layers:
    - map: ["computerLayerBody"]
      state: computer
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      state: eris_control
    - map: ["computerLayerKeys"]
      state: generic_keys

- type: entity
  name: cargo sale computer
  suffix: Normal
  parent: [BaseStructureDisableToolUse, BaseStructureIndestructible, BaseComputer]
  id: ComputerPalletConsoleNFMarket
  description: Used to sell goods loaded onto cargo pallets.
  abstract: true
  components:
  - type: Sprite
    layers:
    - map: ["computerLayerBody"]
      state: computer
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      sprite: _NF/Structures/Machines/computers.rsi
      state: cargo_sale
    - map: ["computerLayerKeys"]
      state: tech_key
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#b89f25"
  - type: CargoPalletConsole
  - type: ActivatableUI
    key: enum.CargoPalletConsoleUiKey.Sale
  - type: UserInterface
    interfaces:
      enum.CargoPalletConsoleUiKey.Sale:
        type: CargoPalletConsoleBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: Computer
    board: Null
  - type: MarketModifier
    buy: false # The user _sells_ things to this machine.

- type: entity
  parent: ComputerPalletConsoleNFMarket
  id: ComputerPalletConsoleNFVeryHighMarket
  suffix: VeryHigh
  components:
  - type: MarketModifier
    mod: 1.50

- type: entity
  parent: ComputerPalletConsoleNFMarket
  id: ComputerPalletConsoleNFHighMarket
  suffix: High
  components:
  - type: MarketModifier
    mod: 1.25

- type: entity
  parent: ComputerPalletConsoleNFMarket
  id: ComputerPalletConsoleNFNormalMarket
  suffix: Normal
  components:
  - type: MarketModifier
    mod: 1.0

- type: entity
  parent: ComputerPalletConsoleNFMarket
  id: ComputerPalletConsoleNFLowMarket
  suffix: Low
  components:
  - type: MarketModifier
    mod: 0.85 # Mono 0.75->0.85

- type: entity
  parent: ComputerPalletConsoleNFMarket
  id: ComputerPalletConsoleNFVeryLowMarket
  suffix: VeryLow
  components:
  - type: MarketModifier
    mod: 0.70 # Mono 0.5->0.7

- type: entity
  name: technology exchange computer
  parent: [BaseStructureDisableToolUse, BaseStructureIndestructible, BaseComputer]
  id: ComputerContrabandPalletConsole
  description: Sends off faction gear in exchange for FMC.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/computers.rsi
    layers:
    - map: ["computerLayerBody"]
      state: computer
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      state: contraband
    - map: ["computerLayerKeys"]
      state: telesci_key
  - type: ContrabandPalletConsole
  - type: ActivatableUI
    key: enum.ContrabandPalletConsoleUiKey.Contraband
  - type: UserInterface
    interfaces:
      enum.ContrabandPalletConsoleUiKey.Contraband:
        type: ContrabandPalletConsoleBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: Computer
    board: Null

- type: entity
  parent: ComputerShuttle
  id: ComputerShuttleAntag
  categories: [ HideSpawnMenu ]
  components:
  - type: Sprite
    layers:
    - map: ["computerLayerBody"]
      state: computer
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      state: syndishuttle
    - map: ["computerLayerKeys"]
      state: syndie_key
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#c94242"

- type: entity
  parent: [BaseStructureDisableToolUse, BaseStructureIndestructible, ComputerIFFSyndicate]
  id: ComputerIFFPOI
  name: IFF computer
  suffix: POI
  description: Allows you to control the IFF and stealth characteristics of this station.
  components:
  - type: IFFConsole
    allowedFlags:
      - Hide
  - type: ActivatableUI
    key: enum.IFFConsoleUiKey.Key
  - type: UserInterface
    interfaces:
      enum.IFFConsoleUiKey.Key:
        type: IFFConsoleBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: Computer
    board: Null

- type: entity
  name: cargo market computer
  abstract: true
  parent: [BaseStructureDisableToolUse, BaseStructureIndestructible, BaseComputer]
  id: ComputerMarketConsoleNFBase
  description: Used to buy goods from the station's market system.
  placement:
    mode: SnapgridCenter
  components:
  - type: Sprite
    layers:
    - map: ["computerLayerBody"]
      state: computer
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      sprite: _NF/Structures/Machines/computers.rsi
      state: cargo_market
    - map: ["computerLayerKeys"]
      state: tech_key
  - type: MarketConsole
  - type: ActivatableUI
    key: enum.MarketConsoleUiKey.Default
  - type: UserInterface
    interfaces:
      enum.MarketConsoleUiKey.Default:
        type: MarketConsoleBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: MarketModifier
    mod: 1
  - type: Computer
    board: Null

- type: entity
  name: cargo market computer
  parent: ComputerMarketConsoleNFBase
  id: ComputerMarketConsoleNFLow
  suffix: Low
  components:
  - type: MarketModifier
    mod: 1.5 #Mono: 4 >> 1.5

- type: entity
  name: cargo market computer
  parent: ComputerMarketConsoleNFBase
  id: ComputerMarketConsoleNFNormal
  suffix: Normal
  components:
  - type: MarketModifier
    mod: 2 #Mono: 6 >> 2

- type: entity
  name: cargo market computer
  parent: ComputerMarketConsoleNFBase
  id: ComputerMarketConsoleNFHigh
  suffix: High
  components:
  - type: MarketModifier
    mod: 4 #Mono: 8 >> 4

- type: entity
  id: ComputerPirateBounty
  parent: BaseComputer
  name: rogue bounty console
  description: Pull up active contracts, track targets, and get paid in chits.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/computers.rsi
    layers:
    - map: ["computerLayerBody"]
      state: computer_blackmarket
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      state: piratebounty
    - map: ["computerLayerKeys"]
      state: blackmarket_key
  - type: PirateBountyConsole
    spawnChestSound:
      path: /Audio/Effects/Lightning/lightningbolt.ogg
      params:
        volume: -5
        variation: 0.2
  - type: ActivatableUI
    key: enum.PirateConsoleUiKey.Bounty
  - type: UserInterface
    interfaces:
      enum.PirateConsoleUiKey.Bounty:
        type: PirateBountyConsoleBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: Computer
    board: Null # Really shouldn't spawn anything on destruction
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#b89f25"
  # - type: GuideHelp # Frontier
  #   guides: # Frontier
  #   - Pirate # Frontier: eventually?  maybe?

- type: entity
  name: technology hand-in console
  parent: ComputerContrabandPalletConsole
  id: ComputerContrabandPalletConsolePirate
  description: Takes faction tech to be sent off to research and grants DC in exchange.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/computers.rsi
    layers:
    - map: ["computerLayerBody"]
      state: computer_blackmarket
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      state: contraband # TODO: replace this
    - map: ["computerLayerKeys"]
      state: blackmarket_key
  - type: Computer
    board: Null # Really shouldn't spawn anything on destruction
  - type: ContrabandPalletConsole
    cashType: Doubloon
    faction: Pirates
    locStringPrefix: pirate-

- type: entity
  name: bounty redemption console
  parent: ComputerPirateBounty
  id: ComputerPirateBountyRedemption
  description: Contract completed? Redeem your chit and claim your payout.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/computers.rsi
    layers:
    - map: ["computerLayerBody"]
      state: computer_blackmarket
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      state: piratebounty_pad
    - map: ["computerLayerKeys"]
      state: blackmarket_key
  - type: PirateBountyRedemptionConsole
  - type: ActivatableUI
    key: enum.PirateConsoleUiKey.BountyRedemption
  - type: UserInterface
    interfaces:
      enum.PirateConsoleUiKey.BountyRedemption:
        type: PirateBountyRedemptionConsoleBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: Computer
    board: Null
  - type: PointLight
    radius: 1.5
    energy: 1.6
    color: "#b89f25"

- type: entity
  id: ComputerSalvageExpeditionDebug
  parent: ComputerSalvageExpedition
  suffix: Debug
  components:
    - type: SalvageExpeditionConsole
      debug: true

- type: entity
  parent: [ BaseStructureIndestructible, BaseStructureDisableToolUse, BaseComputer ]
  id: GasSaleConsole
  name: gas sale console
  description: Sells gas pumped into a linked gas sale port/point.
  components:
  - type: Sprite
    sprite: _NF/Structures/Machines/computers.rsi
    layers:
    - map: ["computerLayerBody"]
      state: computer
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      state: gas_sale_point
    - map: ["computerLayerKeys"]
      state: atmos_key
  - type: GasSaleConsole
  - type: ActivatableUI
    key: enum.GasSaleConsoleUiKey.Key
  - type: UserInterface
    interfaces:
      enum.GasSaleConsoleUiKey.Key:
        type: GasSaleConsoleBoundUserInterface
      enum.WiresUiKey.Key:
        type: WiresBoundUserInterface
  - type: Computer
    board: Null # FIXME
  - type: MarketModifier
    mod: 1

- type: entity
  parent: GasSaleConsole
  id: GasSaleConsoleVeryHigh
  components:
  - type: MarketModifier
    mod: 1.5

- type: entity
  parent: GasSaleConsole
  id: GasSaleConsoleHigh
  components:
  - type: MarketModifier
    mod: 1.25

- type: entity
  parent: GasSaleConsole
  id: GasSaleConsoleLow
  components:
  - type: MarketModifier
    mod: 0.75

- type: entity
  parent: GasSaleConsole
  id: GasSaleConsoleVeryLow
  components:
  - type: MarketModifier
    mod: 0.5

# Station Traffic Controller consoles
- type: entity
  id: BaseComputerTraffic
  abstract: true
  components:
  - type: RadarConsole
  - type: DetectionRangeMultiplier
    infraredMultiplier: 1
    visualMultiplier: 3
  - type: Computer
    board: Null
  - type: Sprite
    drawdepth: SmallObjects
    layers:
    - map: ["computerLayerBody"]
      state: computer
    - map: ["computerLayerKeyboard"]
      state: generic_keyboard
    - map: ["computerLayerScreen"]
      sprite: Structures/Machines/computers.rsi
      state: shuttle
    - map: ["computerLayerKeys"]
      sprite: Structures/Machines/computers.rsi
      state: generic_keys
  - type: AccessReader
    access: [["StationTrafficController"]]
  - type: ActivatableUIRequiresAccess
  - type: WorldLoader
    disabled: true
    radius: 0 # Just in case.

- type: entity
  parent: [BaseStructureDisableToolUse, BaseStructureIndestructible, BaseStructureAccessReaderImmuneToEmag, BaseComputerShuttle, BaseComputerTraffic]
  id: BaseComputerTrafficRemote
  abstract: true

- type: entity
  parent: [BaseStructureDisableToolUse, BaseStructureIndestructible, BaseStructureAccessReaderImmuneToEmag, ComputerShuttle, BaseShuttleIntercom, BaseComputerTraffic]
  id: BaseComputerTrafficLocal
  abstract: true

- type: entity
  parent: BaseComputerTrafficLocal
  id: ComputerShuttleFrontierOutpostLocal
  name: Colonial Outpost traffic console
  description: Monitors the traffic around Colonial Outpost.
  suffix: Local
  components:
  - type: NFDroneConsoleTarget
    id: Frontier

- type: entity
  parent: BaseComputerTrafficRemote
  id: ComputerShuttleFrontierOutpostRemote
  name: Colonial Outpost traffic console
  description: Monitors the traffic around Colonial Outpost.
  suffix: Remote
  components:
  - type: NFDroneConsole
    id: Frontier

- type: entity
  parent: BaseComputerTrafficLocal
  id: ComputerShuttleTradeOutpostLocal
  name: Trade Outpost traffic console
  suffix: Local
  description: Monitors the traffic around the Trade Outpost.
  components:
  - type: NFDroneConsoleTarget
    id: Trade

- type: entity
  parent: BaseComputerTrafficRemote
  id: ComputerShuttleTradeOutpostRemote
  name: Trade Outpost traffic console
  suffix: Remote
  description: Monitors the traffic around the Trade Outpost.
  components:
  - type: NFDroneConsole
    id: Trade
