- type: entity
  id: ComputerFrame
  parent: BaseConstructibleDynamic
  name: computer frame
  description: A computer under construction. It needs a circuit board.
  components:
  - type: Physics
    bodyType: Static
    fixtures:
    - shape:
        !type:PhysShapeAabb
          bounds: "-0.5,-0.25,0.5,0.25"
      mass: 25
      mask:
        - MobImpassable
      layer:
        - Opaque
        - MobImpassable
        - SmallImpassable
        - VaultImpassable
  - type: InteractionOutline
  - type: Rotatable
  - type: Construction
    graph: computer
    node: frameUnsecured
  - type: Sprite
    sprite: "Constructible/Misc/stock_parts.rsi"
    state: "0"
  - type: Damageable
    resistances: metallicResistances
  - type: Destructible
    thresholds:
    - trigger:
        !type:DamageTrigger
        damage: 100
      behaviors:
      - !type:PlaySoundCollectionBehavior
        soundCollection: GlassBreak
      - !type:ChangeConstructionNodeBehavior
        node: monitorBroken
      - !type:DoActsBehavior
        acts: ["Destruction"]

- type: entity
  parent: ComputerFrame
  id: ComputerBroken
  name: broken computer
  description: This computer has seen better days.
  components:
  - type: Construction
    graph: computer
    node: monitorBroken
  - type: Sprite
    sprite: "Constructible/Power/computers.rsi"
    state: "broken"
  - type: Destructible
    thresholds:
    - trigger:
        !type:DamageTrigger
        damage: 50
      behaviors:
      - !type:PlaySoundBehavior
        sound: /Audio/Effects/metalbreak.ogg
      - !type:SpawnEntitiesBehavior
        spawn:
          SheetSteel1:
            min: 1
            max: 1
      - !type:DoActsBehavior
        acts: [ "Destruction" ]

- type: entity
  abstract: true
  parent: ComputerFrame
  id: ComputerBase
  name: computer
  placement:
    mode: SnapgridCenter
  components:
  - type: Construction
    graph: computer
    node: computer
  - type: Computer
  - type: PowerReceiver
  - type: Sprite
    sprite: Constructible/Power/computers.rsi
    layers:
    - state: computer
      map: ["enum.ComputerVisualizer+Layers.Body"]
    - state: generic_key_off
      map: ["enum.ComputerVisualizer+Layers.Keyboard"]
    - state: generic
      shader: unshaded
      map: ["enum.ComputerVisualizer+Layers.Screen"]
    - state: generic_key
      shader: unshaded
      map: ["enum.ComputerVisualizer+Layers.KeyboardOn"]
  - type: Appearance
    visuals:
    - type: ComputerVisualizer
      key: generic_key
      screen: generic

- type: entity
  parent: ComputerBase
  id: ComputerAlert
  name: alerts computer
  description: Used to access the station's automated alert system.
  components:
  - type: Appearance
    visuals:
    - type: ComputerVisualizer
      key: atmos_key
      screen: "alert-2"

- type: entity
  parent: ComputerBase
  id: ComputerPowerMonitoring
  name: power monitoring computer
  description: It monitors power levels across the station.
  components:
  - type: Appearance
    visuals:
    - type: ComputerVisualizer
      key: power_key
      screen: power_monitor

- type: entity
  parent: ComputerBase
  id: ComputerMedicalRecords
  name: medical records computer
  description: This can be used to check medical records.
  components:
  - type: Appearance
    visuals:
    - type: ComputerVisualizer
      key: med_key
      screen: medcomp

- type: entity
  parent: ComputerBase
  id: ComputerResearchAndDevelopment
  name: R&D computer
  description: A computer used to interface with R&D tools.
  components:
  - type: Appearance
    visuals:
    - type: ComputerVisualizer
      key: rd_key
      screen: rdcomp
  - type: ResearchClient
  - type: ResearchConsole
  - type: TechnologyDatabase
  - type: UserInterface
    interfaces:
    - key: enum.ResearchConsoleUiKey.Key
      type: ResearchConsoleBoundUserInterface
    - key: enum.ResearchClientUiKey.Key
      type: ResearchClientBoundUserInterface
  - type: PowerReceiver
    load: 200
    priority: Low
  - type: Computer
    board: ResearchComputerCircuitboard

- type: entity
  parent: ComputerBase
  id: ComputerId
  name: ID card computer
  description: Terminal for programming Nanotrasen employee ID cards to access parts of the station.
  components:
  - type: AccessReader
    access: [["HeadOfPersonnel"]]
  - type: IdCardConsole
  - type: UserInterface
    interfaces:
    - key: enum.IdCardConsoleUiKey.Key
      type: IdCardConsoleBoundUserInterface
  - type: Appearance
    visuals:
    - type: ComputerVisualizer
      key: id_key
      screen: id
  - type: Computer
    board: IDComputerCircuitboard

- type: entity
  parent: ComputerBase
  id: computerBodyScanner
  name: body scanner computer
  description: That's a body scanner.
  components:
  - type: BodyScanner
  - type: UserInterface
    interfaces:
    - key: enum.BodyScannerUiKey.Key
      type: BodyScannerBoundUserInterface
  - type: Appearance
    visuals:
    - type: ComputerVisualizer
      key: generic_key
      screen: generic
  - type: Computer
    board: BodyScannerComputerCircuitboard

- type: entity
  parent: ComputerBase
  id: ComputerComms
  name: communications computer
  description: This can be used for various important functions. Still under development.
  components:
  - type: Appearance
    visuals:
    - type: ComputerVisualizer
      key: generic_key
      screen: comm
  - type: CommunicationsConsole
  - type: UserInterface
    interfaces:
    - key: enum.CommunicationsConsoleUiKey.Key
      type: CommunicationsConsoleBoundUserInterface
  - type: Computer
    board: CommsComputerCircuitboard

- type: entity
  parent: ComputerBase
  id: ComputerSolarControl
  name: solar control computer
  description: A controller for solar panel arrays.
  components:
  - type: Appearance
    visuals:
    - type: ComputerVisualizer
      key: generic_key
      screen: solar_screen
  - type: SolarControlConsole
  - type: UserInterface
    interfaces:
    - key: enum.SolarControlConsoleUiKey.Key
      type: SolarControlConsoleBoundUserInterface
  - type: Computer
    board: SolarControlComputerCircuitboard
