]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Computer wirepanel (#32273)
authorErrant <35878406+Errant-4@users.noreply.github.com>
Mon, 23 Sep 2024 10:51:48 +0000 (12:51 +0200)
committerGitHub <noreply@github.com>
Mon, 23 Sep 2024 10:51:48 +0000 (12:51 +0200)
* Computer wirehacking

* Power wire now shocks

* deconstruction fix

* updated tests

* Better parenting

* maintenance panel sprite

* new sprite for maintenance panel open

Content.IntegrationTests/Tests/Construction/Interaction/ComputerContruction.cs
Resources/Locale/en-US/wires/wire-names.ftl
Resources/Prototypes/Entities/Structures/Machines/Computers/base_structurecomputers.yml
Resources/Prototypes/Entities/Structures/Machines/Computers/computers.yml
Resources/Prototypes/Recipes/Construction/Graphs/machines/computer.yml
Resources/Prototypes/Wires/layouts.yml
Resources/Textures/Structures/Machines/computers.rsi/generic_panel_open.png [new file with mode: 0644]
Resources/Textures/Structures/Machines/computers.rsi/meta.json

index 8af5edaf31652987f04b09f7da35bf24e0e59dd1..9a819b257bc2bfed2b4234dc5c70d9c0d78f317c 100644 (file)
@@ -39,7 +39,7 @@ public sealed class ComputerConstruction : InteractionTest
         await StartDeconstruction(ComputerId);
 
         // Initial interaction turns id computer into generic computer
-        await InteractUsing(Screw);
+        await InteractUsing(Pry);
         AssertPrototype(ComputerFrame);
 
         // Perform deconstruction steps
@@ -69,7 +69,7 @@ public sealed class ComputerConstruction : InteractionTest
         await SpawnTarget(ComputerId);
 
         // Initial interaction turns id computer into generic computer
-        await InteractUsing(Screw);
+        await InteractUsing(Pry);
         AssertPrototype(ComputerFrame);
 
         // Perform partial deconstruction steps
index 1ac2ae89123f35667492fbfb784137bf5bce95c0..16ae068eaafc5e2f26046dda8cb69e1647773579 100644 (file)
@@ -40,6 +40,7 @@ wires-board-name-fatextractor = FatExtractor
 wires-board-name-flatpacker = Flatpacker
 wires-board-name-spaceheater = Space Heater
 wires-board-name-jukebox = Jukebox
+wires-board-name-computer = Computer
 
 # names that get displayed in the wire hacking hud & admin logs.
 
index 204e06c8600a3dc7bdfa30352e0924c1428661d8..9baca8b4b6b2bf69627c015b7973a12ac9f0c60b 100644 (file)
@@ -30,6 +30,8 @@
       state: generic
     - map: ["computerLayerKeys"]
       state: generic_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: Appearance
   - type: GenericVisualizer
     visuals:
         computerLayerKeys:
           True: { visible: true, shader: unshaded }
           False: { visible: true, shader: shaded }
+      enum.WiresVisuals.MaintenancePanelState:
+        enum.WiresVisualLayers.MaintenancePanel:
+          True: { visible: false }
+          False: { visible: true }
   - type: LitOnPowered
   - type: PointLight
     radius: 1.5
   - type: LightningTarget
     priority: 1
   - type: RequireProjectileTarget
+  - type: Electrified
+    enabled: false
+    usesApcPower: true
+  - type: WiresPanel
+  - type: WiresVisuals
+  - type: Wires
+    boardName: wires-board-name-computer
+    layoutId: Computer
+#
+#     This is overwritten by children, so needs to be defined there
+#  - type: UserInterface
+#    interfaces:
+#      enum.WiresUiKey.Key:
+#        type: WiresBoundUserInterface
+
+- type: entity
+  parent: BaseComputer
+  id: BaseComputerAiAccess
+  components:
+  - type: StationAiWhitelist
+  - type: Wires
+    boardName: wires-board-name-computer
+    layoutId: ComputerAi
index f9fd10152f60254138b0a8eb598ebd57d3c0a06d..4cd596e9b448824f0dff7b8a005607ca824f19e4 100644 (file)
@@ -1,10 +1,9 @@
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerAlert
   name: atmospheric alerts computer
   description: Used to access the station's atmospheric automated alert system.
   components:
-  - type: StationAiWhitelist
   - type: Computer
     board: AlertsComputerCircuitboard
   - type: Sprite
@@ -17,6 +16,8 @@
       state: alert-0
     - map: ["computerLayerKeys"]
       state: atmos_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: GenericVisualizer
     visuals:
       enum.ComputerVisuals.Powered:
@@ -25,7 +26,7 @@
           False: { visible: false }
         computerLayerKeys:
           True: { visible: true, shader: unshaded }
-          False: { visible: true, shader: shaded }   
+          False: { visible: true, shader: shaded }
       enum.AtmosAlertsComputerVisuals.ComputerLayerScreen:
         computerLayerScreen:
           0: { state: alert-0 }
           2: { state: alert-1 }
           3: { state: alert-2 }
           4: { state: alert-2 }
+      enum.WiresVisuals.MaintenancePanelState:
+        enum.WiresVisualLayers.MaintenancePanel:
+          True: { visible: false }
+          False: { visible: true }
   - type: AtmosAlertsComputer
   - type: ActivatableUI
     singleUser: true
@@ -41,6 +46,8 @@
     interfaces:
         enum.AtmosAlertsComputerUiKey.Key:
             type: AtmosAlertsComputerBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
 
 - type: entity
   parent: BaseComputer
@@ -58,6 +65,8 @@
     interfaces:
         enum.EmergencyConsoleUiKey.Key:
           type: EmergencyConsoleBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
   - type: PointLight
     radius: 1.5
     energy: 1.6
@@ -79,6 +88,8 @@
     interfaces:
         enum.ShuttleConsoleUiKey.Key:
           type: ShuttleConsoleBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
   - type: RadarConsole
   - type: WorldLoader
     radius: 256
       state: shuttle
     - map: ["computerLayerKeys"]
       state: generic_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: Computer
     board: ShuttleConsoleCircuitboard
 
       state: syndishuttle
     - map: ["computerLayerKeys"]
       state: syndie_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: Tag
     tags:
       - Syndicate
       state: shuttle
     - map: ["computerLayerKeys"]
       state: generic_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: DroneConsole
     components:
       - type: CargoShuttle
     stealGroup: CargoShuttleConsoleCircuitboard
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerIFF
   name: IFF computer
   description: Allows you to control the IFF characteristics of this vessel.
   components:
-  - type: StationAiWhitelist
   - type: IFFConsole
   - type: Sprite
     layers:
       state: helm
     - map: ["computerLayerKeys"]
       state: generic_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: ActivatableUI
     key: enum.IFFConsoleUiKey.Key
   - type: UserInterface
     interfaces:
         enum.IFFConsoleUiKey.Key:
           type: IFFConsoleBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
   - type: Computer
     board: ComputerIFFCircuitboard
 
     interfaces:
         enum.IFFConsoleUiKey.Key:
           type: IFFConsoleBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
   - type: Computer
     board: ComputerIFFSyndicateCircuitboard
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerPowerMonitoring
   name: power monitoring computer
   description: It monitors power levels across the station.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: power_monitor
     - map: ["computerLayerKeys"]
       state: power_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: PointLight
     radius: 1.5
     energy: 1.6
     interfaces:
       enum.PowerMonitoringConsoleUiKey.Key:
         type: PowerMonitoringConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerMedicalRecords
   name: medical records computer
   description: This can be used to check medical records.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: medcomp
     - map: ["computerLayerKeys"]
       state: med_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: PointLight
     radius: 1.5
     energy: 1.6
     board: MedicalRecordsComputerCircuitboard
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerCriminalRecords
   name: criminal records computer
   description: This can be used to check criminal records. Only security can modify them.
   components:
-  - type: StationAiWhitelist
   - type: CriminalRecordsConsole
   - type: UserInterface
     interfaces:
       enum.CriminalRecordsConsoleKey.Key:
         type: CriminalRecordsConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: ActivatableUI
     key: enum.CriminalRecordsConsoleKey.Key
   - type: Sprite
       state: explosive
     - map: ["computerLayerKeys"]
       state: security_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: PointLight
     radius: 1.5
     energy: 1.6
     - CriminalRecords
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerStationRecords
   name: station records computer
   description: This can be used to check station records.
   components:
-  - type: StationAiWhitelist
   - type: GeneralStationRecordConsole
   - type: UserInterface
     interfaces:
         enum.GeneralStationRecordConsoleKey.Key:
           type: GeneralStationRecordConsoleBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
   - type: ActivatableUI
     key: enum.GeneralStationRecordConsoleKey.Key
   - type: PointLight
     - Forensics
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerCrewMonitoring
   name: crew monitoring console
   description: Used to monitor active health sensors built into most of the crew's uniforms.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: crew
     - map: ["computerLayerKeys"]
       state: med_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: PointLight
     radius: 1.5
     energy: 1.6
     interfaces:
         enum.CrewMonitoringUIKey.Key:
           type: CrewMonitoringBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
   - type: CrewMonitoringConsole
   - type: DeviceNetwork
     deviceNetId: Wireless
     range: 1200
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerResearchAndDevelopment
   name: R&D computer
   description: A computer used to interface with R&D tools.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: rdcomp
     - map: ["computerLayerKeys"]
       state: rd_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: ResearchClient
   - type: ResearchConsole
   - type: ActiveRadio
         type: ResearchConsoleBoundUserInterface
       enum.ResearchClientUiKey.Key:
         type: ResearchClientBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: ApcPowerReceiver
     powerLoad: 1000
   - type: Computer
     - Science
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerAnalysisConsole
   name: analysis console
   description: A computer used to interface with the artifact analyzer.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: artifact
     - map: ["computerLayerKeys"]
       state: tech_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: ResearchClient
   - type: AnalysisConsole
     reportEntityId: PaperArtifactAnalyzer
         type: AnalysisConsoleBoundUserInterface
       enum.ResearchClientUiKey.Key:
         type: ResearchClientBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: ApcPowerReceiver
     powerLoad: 1000
   - type: Computer
     - Xenoarchaeology
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerId
   name: ID card computer
   description: Terminal for programming Nanotrasen employee ID cards to access parts of the station.
   components:
-  - type: StationAiWhitelist
   - type: IdCardConsole
     privilegedIdSlot:
       name: id-card-console-privileged-id
     interfaces:
       enum.IdCardConsoleUiKey.Key:
         type: IdCardConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: CrewManifestViewer
     ownerKey: enum.IdCardConsoleUiKey.Key
   - type: Sprite
       state: id
     - map: ["computerLayerKeys"]
       state: id_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: Computer
     board: IDComputerCircuitboard
   - type: PointLight
       IdCardConsole-targetId: !type:ContainerSlot
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: computerBodyScanner
   name: body scanner computer
   description: A body scanner.
   components:
-  - type: StationAiWhitelist
   - type: ApcPowerReceiver
     powerLoad: 500
   - type: Computer
     color: "#1f8c28"
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerComms
   name: communications computer
   description: A computer used to make station wide announcements via keyboard, set the appropriate alert level, and call the emergency shuttle.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: comm
     - map: ["computerLayerKeys"]
       state: generic_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: AccessReader
     access: [[ "Command" ]]
   - type: CommunicationsConsole
     interfaces:
       enum.CommunicationsConsoleUiKey.Key:
         type: CommunicationsConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: Computer
     board: CommsComputerCircuitboard
   - type: PointLight
       state: comm_syndie
     - map: ["computerLayerKeys"]
       state: syndie_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: AccessReader
     access: [[ "NuclearOperative" ]]
   - type: CommunicationsConsole
     color: "#f71713"
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerSolarControl
   name: solar control computer
   description: A controller for solar panel arrays.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: solar_screen
     - map: ["computerLayerKeys"]
       state: generic_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: SolarControlConsole
   - type: ActivatableUI
     key: enum.SolarControlConsoleUiKey.Key
     interfaces:
       enum.SolarControlConsoleUiKey.Key:
         type: SolarControlConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: Computer
     board: SolarControlComputerCircuitboard
   - type: PointLight
     color: "#e6e227"
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerRadar
   name: mass scanner computer
   description: A computer for detecting nearby bodies, displaying them by position and mass.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: solar_screen
     - map: ["computerLayerKeys"]
       state: generic_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: RadarConsole
   - type: ActivatableUI
     key: enum.RadarConsoleUiKey.Key
     interfaces:
         enum.RadarConsoleUiKey.Key:
           type: RadarConsoleBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
   - type: Computer
     board: RadarConsoleCircuitboard
   - type: PointLight
 
 - type: entity
   id: ComputerCargoShuttle
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   name: cargo shuttle computer
   description: Used to order the shuttle.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: supply
     - map: ["computerLayerKeys"]
       state: tech_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: CargoShuttleConsole
   - type: ActivatableUI
     key: enum.CargoConsoleUiKey.Shuttle
     interfaces:
       enum.CargoConsoleUiKey.Shuttle:
         type: CargoShuttleConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: Computer
     board: CargoShuttleComputerCircuitboard
   - type: PointLight
 
 - type: entity
   id: ComputerCargoOrders
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   name: cargo request computer
   description: Used to order supplies and approve requests.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: request
     - map: ["computerLayerKeys"]
       state: tech_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: CargoOrderConsole
   - type: BankClient
   - type: ActiveRadio
     interfaces:
       enum.CargoConsoleUiKey.Orders:
         type: CargoOrderConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: Computer
     board: CargoRequestComputerCircuitboard
   - type: PointLight
 
 - type: entity
   id: ComputerCargoBounty
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   name: cargo bounty computer
   description: Used to manage currently active bounties.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: bounty
     - map: ["computerLayerKeys"]
       state: tech_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: CargoBountyConsole
   - type: ActivatableUI
     key: enum.CargoConsoleUiKey.Bounty
     interfaces:
       enum.CargoConsoleUiKey.Bounty:
         type: CargoBountyConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: Computer
     board: CargoBountyComputerCircuitboard
   - type: PointLight
     - Cargo
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerCloningConsole
   name: cloning console computer
   description: The centerpiece of the cloning system, medicine's greatest accomplishment. It has lots of ports and wires.
   components:
-  - type: StationAiWhitelist
   - type: CloningConsole
   - type: DeviceList
   - type: DeviceNetwork
       state: dna
     - map: ["computerLayerKeys"]
       state: generic_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: ApcPowerReceiver
     powerLoad: 3100 #We want this to fail first so I transferred most of the scanner and pod's power here. (3500 in total)
   - type: Computer
     interfaces:
         enum.CloningConsoleUiKey.Key:
           type: CloningConsoleBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
   - type: Speech
     speechVerb: Robotic
     speechSounds: Pai
 
 - type: entity
   id: ComputerSalvageExpedition
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   name: salvage expeditions computer
   description: Used to accept salvage missions, if you're tough enough.
   components:
-    - type: StationAiWhitelist
     - type: Sprite
       layers:
         - map: ["computerLayerBody"]
           state: mining
         - map: ["computerLayerKeys"]
           state: tech_key
+        - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+          state: generic_panel_open
     - type: Appearance
     - type: GenericVisualizer
       visuals:
           computerLayerKeys:
             True: { visible: true, shader: unshaded }
             False: { visible: true }
+        enum.WiresVisuals.MaintenancePanelState:
+          enum.WiresVisualLayers.MaintenancePanel:
+            True: { visible: false }
+            False: { visible: true }
     - type: SalvageExpeditionConsole
     - type: ActivatableUI
       key: enum.SalvageConsoleUiKey.Expedition
       interfaces:
         enum.SalvageConsoleUiKey.Expedition:
           type: SalvageExpeditionConsoleBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
     - type: Computer
       board: SalvageExpeditionsComputerCircuitboard
     - type: PointLight
       state: cameras
     - map: ["computerLayerKeys"]
       state: tech_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: Computer
     board: SurveillanceCameraMonitorCircuitboard
   - type: DeviceNetwork
     interfaces:
         enum.SurveillanceCameraMonitorUiKey.Key:
           type: SurveillanceCameraMonitorBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
 
 - type: entity
   parent: BaseComputer
       state: cameras
     - map: ["computerLayerKeys"]
       state: tech_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: Computer
     board: SurveillanceWirelessCameraMonitorCircuitboard
   - type: DeviceNetwork
     interfaces:
         enum.SurveillanceCameraMonitorUiKey.Key:
           type: SurveillanceCameraMonitorBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
 
 - type: entity
   id: ComputerPalletConsole
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   name: cargo sale computer
   description: Used to sell goods loaded onto cargo pallets.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: request
     - map: ["computerLayerKeys"]
       state: tech_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: Anchorable
     flags:
     - Anchorable
     interfaces:
       enum.CargoPalletConsoleUiKey.Sale:
         type: CargoPalletConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: Computer
     board: CargoSaleComputerCircuitboard
   - type: PointLight
     - Cargo
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerMassMedia
   name: news manager console
   description: Write your message to the world!
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: service
     - map: ["computerLayerKeys"]
       state: service_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: Computer
     board: ComputerMassMediaCircuitboard
   - type: DeviceNetworkRequiresPower
     interfaces:
         enum.NewsWriterUiKey.Key:
           type: NewsWriterBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
 
 - type: entity
   parent: BaseComputer
           state: sensors
         - map: ["computerLayerKeys"]
           state: atmos_key
+        - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+          state: generic_panel_open
     - type: PointLight
       radius: 1.5
       energy: 1.6
       interfaces:
         enum.SensorMonitoringConsoleUiKey.Key:
           type: SensorMonitoringConsoleBoundUserInterface
+        enum.WiresUiKey.Key:
+          type: WiresBoundUserInterface
     - type: DeviceNetwork
       deviceNetId: AtmosDevices
       receiveFrequencyId: AtmosMonitor
     - type: AtmosDevice
 
 - type: entity
-  parent: BaseComputer
+  parent: BaseComputerAiAccess
   id: ComputerRoboticsControl
   name: robotics control console
   description: Used to remotely monitor, disable and destroy the station's cyborgs.
   components:
-  - type: StationAiWhitelist
   - type: Sprite
     layers:
     - map: ["computerLayerBody"]
       state: robot
     - map: ["computerLayerKeys"]
       state: rd_key
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: RoboticsConsole
   - type: ActiveRadio
     channels:
     interfaces:
       enum.RoboticsConsoleUiKey.Key:
         type: RoboticsConsoleBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
   - type: ApcPowerReceiver
     powerLoad: 1000
   - type: DeviceNetwork
       state: aiupload
     - map: [ "computerLayerKeys" ]
       state: generic_keys
+    - map: [ "enum.WiresVisualLayers.MaintenancePanel" ]
+      state: generic_panel_open
   - type: ApcPowerReceiver
     powerLoad: 1000
   - type: Computer
index 4792bb216f3eae1304bc1082ab766d98ecd73a02..b3c9cac926226d53900f0a0d4a59d430b4440261 100644 (file)
               amount: 2
           steps:
             - tool: Prying
+              doAfter: 1
 
     - node: computer
       entity: !type:BoardNodeEntity { container: board }
       edges:
         - to: monitorUnsecured
-          conditions:
-            - !type:AllWiresCut {}
           steps:
-            - tool: Screwing
+            - tool: Prying
+              doAfter: 1
 
     - node: monitorBroken
       entity: ComputerBroken
index 7b42ef8b75303fcf2268bed7a03a476ee00c177e..955bae0104a6069908cc53b39b635a62b1164e86 100644 (file)
   id: TrainingDefusable
   dummyWires: 0
   wires:
-    - !type:ActivateWireAction
-    - !type:BoltWireAction
-    - !type:DelayWireAction
-    - !type:ProceedWireAction
-    - !type:BoomWireAction
-    
+  - !type:ActivateWireAction
+  - !type:BoltWireAction
+  - !type:DelayWireAction
+  - !type:ProceedWireAction
+  - !type:BoomWireAction
+
 - type: wireLayout
   id: Jukebox
   dummyWires: 2
   wires:
-    - !type:PowerWireAction
-    - !type:AiInteractWireAction
-    
+  - !type:PowerWireAction
+  - !type:AiInteractWireAction
+
 - type: wireLayout
   id: AnomalyGenerator
   dummyWires: 2
   wires:
-    - !type:PowerWireAction
-    - !type:AiInteractWireAction
+  - !type:PowerWireAction
+  - !type:AiInteractWireAction
+
+- type: wireLayout
+  id: Computer
+  dummyWires: 3
+  wires:
+  - !type:PowerWireAction
+
+- type: wireLayout
+  id: ComputerAi
+  dummyWires: 2
+  wires:
+  - !type:PowerWireAction
+  - !type:AiInteractWireAction
diff --git a/Resources/Textures/Structures/Machines/computers.rsi/generic_panel_open.png b/Resources/Textures/Structures/Machines/computers.rsi/generic_panel_open.png
new file mode 100644 (file)
index 0000000..ac7f9f6
Binary files /dev/null and b/Resources/Textures/Structures/Machines/computers.rsi/generic_panel_open.png differ
index b6741b195d2ae11c49450cd5f5eecd7ffbcb1a69..5355f379ab121afade72e908557b1cfe748286d7 100644 (file)
@@ -1,7 +1,7 @@
 {
   "version": 1,
   "license": "CC-BY-SA-3.0",
-  "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bd6873fd4dd6a61d7e46f1d75cd4d90f64c40894. comm_syndie made by Veritius, based on comm.",
+  "copyright": "Taken from tgstation at commit https://github.com/tgstation/tgstation/commit/bd6873fd4dd6a61d7e46f1d75cd4d90f64c40894. comm_syndie made by Veritius, based on comm. generic_panel_open made by Errant, commit https://github.com/space-wizards/space-station-14/pull/32273.",
   "size": {
     "x": 32,
     "y": 32
             "name": "generic_keys",
             "directions": 4
         },
+        {
+            "name": "generic_panel_open",
+            "directions": 4
+        },
         {
             "name": "generic_keyboard",
             "directions": 4