- type: entity
  id: ComputerFrame
  name: computer frame
  placement:
    mode: SnapgridCenter
  components:
    - type: Physics
      mass: 25
      anchored: true
      shapes:
      - !type:PhysShapeAabb
        bounds: "-0.5,-0.25,0.5,0.25"
        layer:
        - Impassable
        - MobImpassable
        - VaultImpassable
        - Opaque
        mask:
        - Impassable
        - MobImpassable
        - VaultImpassable
    - type: Clickable
    - type: InteractionOutline
    - type: Anchorable
    - type: Rotatable
    - type: Pullable
    - type: Construction
      graph: computer
      node: frameUnsecured
    - type: Sprite
      sprite: "Constructible/Misc/stock_parts.rsi"
      state: "0"

- type: entity
  id: ComputerBroken
  name: broken computer
  description: This computer has seen better days.
  abstract: true # We don't want this to show up in the entity spawner menu.
  components:
  - type: Physics
    mass: 25
    anchored: true
    shapes:
    - !type:PhysShapeAabb
      bounds: "-0.5,-0.25,0.5,0.25"
      layer:
      - Impassable
      - MobImpassable
      - VaultImpassable
      - Opaque
      mask:
      - Impassable
      - MobImpassable
      - VaultImpassable
  - type: Clickable
  - type: InteractionOutline
  - type: Anchorable
  - type: Construction
    graph: computer
    node: monitorBroken
  - type: Sprite
    sprite: "Constructible/Power/computers.rsi"
    state: "broken"

- type: entity
  id: ComputerBase
  name: computer
  abstract: true
  placement:
    mode: SnapgridCenter
  components:
  - type: Clickable
  - type: InteractionOutline
  - type: Construction
    graph: computer
    node: computer
  - type: Rotatable
  - type: Physics
    mass: 25
    anchored: true
    shapes:
    - !type:PhysShapeAabb
      bounds: "-0.5,-0.25,0.5,0.25"
      layer:
      - Impassable
      - MobImpassable
      - VaultImpassable
      - Opaque
      mask:
      - Impassable
      - MobImpassable
      - VaultImpassable
  - type: Computer
  - type: PowerReceiver
  - type: Anchorable
  - type: Pullable
  - type: Damageable
    resistances: metallicResistances
  - type: Destructible
    thresholds:
      100:
        behaviors:
        - !type:DoActsBehavior
          acts: ["Destruction"]
  - type: BreakableConstruction
    node: monitorBroken
  - 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
  id: ComputerAlert
  parent: ComputerBase
  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
  id: ComputerPowerMonitoring
  parent: ComputerBase
  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
  id: ComputerMedicalRecords
  parent: ComputerBase
  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
  id: ComputerResearchAndDevelopment
  parent: ComputerBase
  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
  id: ComputerId
  parent: ComputerBase
  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
  id: computerBodyScanner
  parent: ComputerBase
  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
  id: ComputerComms
  parent: ComputerBase
  name: communications computer
  description: This can be used for various important functions. Still under developement.
  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
  id: ComputerSolarControl
  parent: ComputerBase
  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
