]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
Some wallmount .yml cleanup (#34329)
authorkosticia <kosticia46@gmail.com>
Sat, 26 Jul 2025 19:20:55 +0000 (22:20 +0300)
committerGitHub <noreply@github.com>
Sat, 26 Jul 2025 19:20:55 +0000 (15:20 -0400)
* Getting started

* Move some

* And some moves

* And some changes

* Some changes

* YAML LINTER FIX

* Nanomed and monitor fixes

* Vending machines change

* Add space...

* fix

* FIX

* yeeee

* sighs

* forgor

* Revert "forgor"

This reverts commit 61d7fc926e7141bb510c70a9deb2a2afed925166.

36 files changed:
Resources/Prototypes/Entities/Structures/Lighting/service_light.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/service_light.yml with 100% similarity]
Resources/Prototypes/Entities/Structures/Machines/Computers/wooden_television.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml
Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml
Resources/Prototypes/Entities/Structures/Power/apc.yml
Resources/Prototypes/Entities/Structures/Power/chargers.yml
Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml
Resources/Prototypes/Entities/Structures/Wallmounts/Misc/bell.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/bell.yml with 66% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/mirror.yml with 71% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Misc/noticeboard.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/noticeboard.yml with 90% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml
Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml
Resources/Prototypes/Entities/Structures/Wallmounts/Signs/flags.yml
Resources/Prototypes/Entities/Structures/Wallmounts/Signs/paintings.yml
Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml
Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/base_wallmount_cabinet.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/defib_cabinet.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/defib_cabinet.yml with 86% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/extinguisher_cabinet.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/extinguisher_cabinet.yml with 79% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/fireaxe_cabinet.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/fireaxe_cabinet.yml with 81% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/shotgun_cabinet.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/shotgun_cabinet.yml with 100% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Storage/shelfs.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/shelfs.yml with 98% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Storage/wall_dispensers.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/walldispenser.yml with 82% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Switches/switch.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/switch.yml with 79% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/Switches/switch_autolink.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/switch_autolink.yml with 100% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/telescreens.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/televisions.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/air_alarm.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml with 87% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/fire_alarm.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml with 85% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/intercom.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml with 93% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/screen.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/screen.yml with 68% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/station_map.yml with 86% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/surveillance_camera.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml with 100% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/timer.yml [moved from Resources/Prototypes/Entities/Structures/Wallmounts/timer.yml with 85% similarity]
Resources/Prototypes/Entities/Structures/Wallmounts/base_wallmount.yml [new file with mode: 0644]
Resources/Prototypes/Entities/Structures/Wallmounts/monitors_televisions.yml [deleted file]
Resources/Prototypes/Entities/Structures/lever.yml [new file with mode: 0644]

diff --git a/Resources/Prototypes/Entities/Structures/Machines/Computers/wooden_television.yml b/Resources/Prototypes/Entities/Structures/Machines/Computers/wooden_television.yml
new file mode 100644 (file)
index 0000000..b542687
--- /dev/null
@@ -0,0 +1,31 @@
+- type: entity
+  parent: ComputerSurveillanceWirelessCameraMonitor
+  id: ComputerTelevision
+  name: wooden television
+  description: Finally, some decent reception around here...
+  components:
+  - type: Sprite
+    noRot: true
+    drawdepth: SmallObjects
+    layers:
+    - map: ["computerLayerBody"]
+      state: television
+    - map: ["computerLayerScreen"]
+      state: detective_television
+  - type: Computer
+    board: ComputerTelevisionCircuitboard
+  - type: PointLight
+    radius: 1.5
+    energy: 1.6
+    color: "#b89f25"
+  - type: Fixtures
+    fixtures:
+      fix1:
+        shape:
+          !type:PhysShapeAabb
+          bounds: "-0.25,-0.25,0.25,0.25"
+        density: 200
+        mask:
+          - TabletopMachineMask
+        layer:
+          - TabletopMachineLayer
index 9cc83cf32c7d2a6a3d7dd5aefdd3f481a9b0232b..fe921e9a048f3424ac62b9bbbfc6e09b90def757 100644 (file)
@@ -1,3 +1,5 @@
+# base
+
 - type: entity
   id: VendingMachine
   parent: BaseMachinePowered
   - type: Appearance
   - type: WiresVisuals
 
+- type: entity
+  id: VendingMachineWallmount
+  parent: BaseWallmountMachine
+  name: vending machine
+  abstract: true
+  components:
+  - type: StationAiWhitelist
+  - type: AmbientOnPowered
+  - type: AmbientSound
+    volume: -9
+    range: 3
+    enabled: false
+    sound:
+      path: /Audio/Ambience/Objects/vending_machine_hum.ogg
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 100
+      behaviors:
+      - !type:DoActsBehavior
+        acts: ["Breakage"]
+      - !type:EjectVendorItems
+    - trigger:
+        !type:DamageTrigger
+        damage: 200
+      behaviors:
+      - !type:SpawnEntitiesBehavior
+        spawn:
+          SheetSteel1:
+            min: 1
+            max: 1
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
+      - !type:PlaySoundBehavior
+        sound:
+          collection: MetalGlassBreak
+  - type: Repairable
+    doAfterDelay: 8
+  - type: ActivatableUI
+    key: enum.VendingMachineUiKey.Key
+  - type: ActivatableUIRequiresPower
+  - type: UserInterface
+    interfaces:
+      enum.VendingMachineUiKey.Key:
+        type: VendingMachineBoundUserInterface
+      enum.WiresUiKey.Key:
+        type: WiresBoundUserInterface
+  - type: WiresPanel
+  - type: Wires
+    boardName: wires-board-name-vendingmachine
+    layoutId: Vending
+  - type: PointLight
+    enabled: false
+    castShadows: false
+    radius: 1.5
+  - type: LitOnPowered
+  - type: Appearance
+  - type: WiresVisuals
+  - type: Electrified
+    enabled: false
+    usesApcPower: true
+  - type: Rotatable
+
+# Vending machines
+
 - type: entity
   parent: VendingMachine
   id: VendingMachineCondiments
     energy: 1.6
     color: "#d4ab33"
 
-# wallmounted machines
-
-- type: entity
-  id: VendingMachineWallmount
-  parent: VendingMachine
-  name: vending machine
-  abstract: true
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
-  components:
-  - type: Sprite
-    drawdepth: WallMountedItems
-    snapCardinals: false
-  - type: Rotatable
-  - type: WallMount
-    arc: 175
-  - type: Transform
-    noRot: false
-
-- type: entity
-  parent: VendingMachineWallmount
-  id: VendingMachineWallMedical
-  name: NanoMed
-  description: "It's a wall-mounted medical equipment dispenser. Natural chemicals only!"
-  components:
-  - type: VendingMachine
-    pack: NanoMedInventory
-    offState: off
-    brokenState: broken
-    normalState: normal-unshaded
-    denyState: deny-unshaded
-  - type: Sprite
-    sprite: Structures/Machines/VendingMachines/wallmed.rsi
-    layers:
-    - state: "off"
-      map: ["enum.VendingMachineVisualLayers.Base"]
-    - state: "off"
-      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
-      shader: unshaded
-    - texture: Structures/Machines/VendingMachines/maintenance_panel.png
-      map: ["enum.WiresVisualLayers.MaintenancePanel"]
-  - type: PointLight
-    radius: 1.3
-    energy: 1.6
-    color: "#43ccb5"
-  - type: AccessReader
-    access: [["Medical"]]
-  - type: GuideHelp
-    guides:
-    - Medical
-
 # job clothing
 
 - type: entity
   - type: AccessReader
     access: [["SyndicateAgent"]]
 
+# wallmount
+- type: entity
+  parent: VendingMachineWallmount
+  id: VendingMachineWallMedical
+  name: NanoMed
+  description: "It's a wall-mounted medical equipment dispenser. Natural chemicals only!"
+  components:
+  - type: VendingMachine
+    pack: NanoMedInventory
+    offState: off
+    brokenState: broken
+    normalState: normal-unshaded
+    denyState: deny-unshaded
+  - type: Sprite
+    sprite: Structures/Machines/VendingMachines/wallmed.rsi
+    layers:
+    - state: "off"
+      map: ["enum.VendingMachineVisualLayers.Base"]
+    - state: "off"
+      map: ["enum.VendingMachineVisualLayers.BaseUnshaded"]
+      shader: unshaded
+    - texture: Structures/Machines/VendingMachines/maintenance_panel.png
+      map: ["enum.WiresVisualLayers.MaintenancePanel"]
+  - type: PointLight
+    radius: 1.3
+    energy: 1.6
+    color: "#43ccb5"
+  - type: AccessReader
+    access: [["Medical"]]
+  - type: GuideHelp
+    guides:
+    - Medical
index 2be509e8e64ae79109f328d1cdc977270866077c..410df0502142ecbfb3c8bb7ad18dc132c0a6c099 100644 (file)
 - type: entity
   abstract: true
   id: BaseGeneratorWallmount
-  parent: BaseGenerator
+  parent: [ BaseGenerator, BaseWallmount ]
   name: wallmount generator
   description: A high efficiency thermoelectric generator stuffed in a wall cabinet.
-  placement:
-    mode: SnapgridCenter
   components:
   - type: AmbientOnPowered
   - type: AmbientSound
     color: "#3db83b"
     castShadows: false
     netsync: false
-  - type: Fixtures
-  - type: Transform
-    anchored: true
-  - type: Physics
-    bodyType: Static
-    canCollide: false
   - type: Sprite
     drawdepth: WallMountedItems
     sprite: Structures/Power/Generation/wallmount_generator.rsi
     supplyRate: 3000
     supplyRampRate: 500
     supplyRampTolerance: 500
-  - type: WallMount
   - type: GuideHelp
     guides:
     - ShuttleCraft
 # Construction Frames
 
 - type: entity
+  parent: BaseWallmountMetallic
   categories: [ HideSpawnMenu ]
   id: BaseGeneratorWallmountFrame
   name: wallmount generator frame
   description: A construction frame for a wallmount generator.
-  placement:
-    mode: SnapgridCenter
   components:
-  - type: Clickable
-  - type: InteractionOutline
-  - type: Physics
-    canCollide: false
-  - type: Fixtures
-  - type: Transform
-    anchored: true
   - type: Sprite
     drawdepth: WallMountedItems
     sprite: Structures/Power/Generation/wallmount_generator.rsi
   - type: Construction
     graph: WallmountGenerator
     node: frame
-  - type: WallMount
 
 # Generators in use
 
index 018cf2a2f1afaa40a75366128c494890f9c72d6f..75f61e7534fdcd7d7cf07d91e4023be17881e858 100644 (file)
@@ -1,4 +1,5 @@
 - type: entity
+  parent: BaseWallmount
   categories: [ HideSpawnMenu ]
   id: BaseAPC
   name: APC
     color: "#3db83b"
     castShadows: false
     netsync: false
-  - type: Clickable
   - type: AccessReader
     access: [["Engineering"]]
-  - type: InteractionOutline
-  - type: Transform
-    anchored: true
   - type: Sprite
     drawdepth: WallMountedItems
     sprite: Structures/Power/apc.rsi
 
 # APC under construction
 - type: entity
+  parent: BaseWallmountMetallic
   categories: [ HideSpawnMenu ]
   id: APCFrame
   name: APC frame
   placement:
     mode: SnapgridCenter
   components:
-  - type: Clickable
-  - type: InteractionOutline
-  - type: Transform
-    anchored: true
   - type: Sprite
-    drawdepth: WallMountedItems
     sprite: Structures/Power/apc.rsi
     state: frame
   - type: Construction
     graph: APC
     node: apcFrame
-  - type: WallMount
-  - type: Damageable
-    damageContainer: StructuralInorganic
-    damageModifierSet: StructuralMetallic
   - type: Destructible
     thresholds:
     - trigger:
index e529708abbfdf146964a79e25b465d4c737eb6d9..75e38f1187a11ce650cb8d097d4808ab3cf74c71 100644 (file)
           - PotatoBattery
 
 - type: entity
-  parent: BaseItemRecharger
+  parent: [ BaseItemRecharger, BaseWallmount ]
   id: WallWeaponCapacitorRecharger
   name: wall recharger
   components:
     - map: ["enum.PowerChargerVisualLayers.Light"]
       state: "light-off"
       shader: "unshaded"
-  - type: WallMount
   - type: Charger
     chargeRate: 25
   - type: ItemSlots
index c38a20a698c27ea1e8f1f4ea5801835b25637380..ba1ecfd7498bcabbce4aaa98b52ad7e46b17ab0f 100644 (file)
 
 #Wall Closet
 - type: entity
+  parent: BaseWallmountMetallic
   id: BaseWallCloset
-  placement:
-    mode: SnapgridCenter
   abstract: true
   name: wall closet
   description: A standard-issue Nanotrasen storage unit, now on walls.
   components:
-  - type: InteractionOutline
-  - type: Clickable
   - type: ResistLocker
   - type: Weldable
-  - type: WallMount
-    arc: 175
   - type: StaticPrice
     price: 75
-  - type: Transform
-    noRot: false
   - type: Sprite
     drawdepth: WallMountedItems
     noRot: false
     containers:
       entity_storage: !type:Container
         ents: []
-  - type: Damageable
-    damageContainer: StructuralInorganic
-    damageModifierSet: Metallic
   - type: Destructible
     thresholds:
     - trigger:
similarity index 66%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/bell.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/Misc/bell.yml
index 24e5cfda2af76c7dc7afba85d4a0f33d057f6290..c8d5840889e11c89022e6931627135fce01d2467 100644 (file)
@@ -1,15 +1,9 @@
 - type: entity
+  parent: BaseWallmountMetallic
   id: BoxingBell
   name: boxing bell
   description: Ding ding!
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
   components:
-  - type: Transform
-    anchored: true
-  - type: WallMount
   - type: Sprite
     sprite: Structures/Wallmounts/bell.rsi
     layers:
     successChance: 1
     interactSuccessSound:
       path: /Audio/Weapons/boxingbell.ogg
-  - type: Clickable
   - type: MeleeSound
     soundGroups:
       Brute:
         path:
           "/Audio/Weapons/boxingbell.ogg"
   - type: Appearance
-  - type: Rotatable
-  - type: CollisionWake
-    enabled: false
-  - type: Physics
-    canCollide: false
-    bodyType: Static
-  - type: Fixtures
-  - type: Damageable
-    damageContainer: Inorganic
   - type: Destructible
     thresholds:
     - trigger:
similarity index 71%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/mirror.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml
index 619e74e5642312c0ee4482c21fe4d176b59a2f24..c32a2731cdb9e6105d17b4ec5e33bfcfc606b7ab 100644 (file)
@@ -1,18 +1,14 @@
 - type: entity
+  parent: BaseWallmountGlass
   id: Mirror
   name: mirror
   description: 'Mirror mirror on the wall , who''s the most robust of them all?'
   placement:
     mode: SnapgridCenter
   components:
-  - type: WallMount
   - type: Sprite
     sprite: Structures/Wallmounts/mirror.rsi
     state: mirror
-  - type: InteractionOutline
-  - type: Clickable
-  - type: Transform
-    anchored: true
   - type: MagicMirror #instant and silent
     changeHairSound: null
     addSlotTime: 0
     interfaces:
       enum.MagicMirrorUiKey.Key:
         type: MagicMirrorBoundUserInterface
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 200
+      behaviors:
+      - !type:DoActsBehavior
+        acts: ["Destruction"]
+      - !type:PlaySoundBehavior
+        sound:
+          collection: MetalGlassBreak
 
 - type: entity
   parent: Mirror
similarity index 90%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/noticeboard.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/Misc/noticeboard.yml
index 76e17b3040cc7eaf15615928e86d2d4c8dd29cc7..7f38f6c5abdd969485ea1bd8342e7ece28d9ecd8 100644 (file)
@@ -1,11 +1,9 @@
 - type: entity
+  parent: BaseWallmount
   id: NoticeBoard
   name: notice board
   description: Is there a job for a witcher?
-  placement:
-    mode: SnapgridCenter
   components:
-  - type: WallMount
   - type: Sprite
     drawdepth: WallMountedItems
     sprite: Structures/Wallmounts/noticeboard.rsi
     maxFillLevels: 6
     fillBaseName: notice
   - type: Appearance
-  - type: InteractionOutline
-  - type: Clickable
-  - type: Transform
-    anchored: true
   - type: Damageable
     damageModifierSet: Wood
     damageContainer: StructuralInorganic
index f00216393bdbc5ac22c99600e62cda23bcdbe622..320a251218c61302143d4de3a06694651bb29a2e 100644 (file)
@@ -1,23 +1,15 @@
 - type: entity
   id: BaseBarSign
-  parent: BaseStructure
+  parent: [ BaseWallmountGlass, BaseWallmountMetallic ]
   name: bar sign
   abstract: true
   components:
-  - type: MeleeSound
-    soundGroups:
-      Brute:
-        collection: GlassSmash
   - type: WallMount
     arc: 360
   - type: Sprite
-    drawdepth: WallMountedItems
     sprite: Structures/Wallmounts/barsign.rsi
     state: empty
-  - type: ApcPowerReceiver
-  - type: ExtensionCableReceiver
   - type: BarSign
-  - type: InteractionOutline
   - type: AccessReader
     access: [["Bar"]]
   - type: ActivatableUIRequiresPower
@@ -31,8 +23,6 @@
       enum.WiresUiKey.Key:
         type: WiresBoundUserInterface
   - type: Appearance
-  - type: Damageable
-    damageContainer: StructuralInorganic
   - type: Destructible
     thresholds:
     - trigger:
index 35281d03835d9418eb1f87ea4b25243f9b6abc85..041a93e9358f2f22cadde1b3329857d9e9b6d28f 100644 (file)
@@ -1,26 +1,12 @@
 - type: entity
+  parent: BaseWallmountMetallic
   id: BaseSign
   name: base sign
   abstract: true
-  placement:
-    mode: SnapgridCenter
   components:
   - type: WallMount
     arc: 360
-  - type: Clickable
-  - type: InteractionOutline
   - type: Rotatable
-  - type: Physics
-    bodyType: Static
-    canCollide: false
-  - type: Fixtures
-    fixtures:
-      fix1:
-        shape:
-          !type:PhysShapeAabb {}
-  - type: Damageable
-    damageContainer: Inorganic
-    damageModifierSet: Metallic
   - type: Destructible
     thresholds:
     - trigger:
@@ -30,7 +16,6 @@
       - !type:DoActsBehavior
         acts: ["Destruction"]
   - type: Sprite
-    drawdepth: WallMountedItems
     sprite: Structures/Wallmounts/signs.rsi
     snapCardinals: true
   - type: StaticPrice
index 992f7a71e6f453a5d668729ea0f2da4e774f8d0a..21076f9f07df9fe22567aa2b6c1d84fd541c2df7 100644 (file)
@@ -3,10 +3,7 @@
   id: BaseFlag
   abstract: true
   components:
-  - type: WallMount
-    arc: 360
   - type: Sprite
-    drawdepth: WallMountedItems
     sprite: Structures/Wallmounts/flags.rsi
 
 - type: entity
@@ -35,7 +32,7 @@
   components:
   - type: Sprite
     state: syndie_flag
-    
+
 - type: entity
   parent: BaseFlag
   id: LGBTQFlag
@@ -44,7 +41,7 @@
   components:
   - type: Sprite
     state: lgbtq_flag
-    
+
 - type: entity
   parent: BaseFlag
   id: PirateFlag
@@ -52,4 +49,4 @@
   description: Raise the jolly roger, scallywags!
   components:
   - type: Sprite
-    state: pirate_flag
\ No newline at end of file
+    state: pirate_flag
index 4f26432c60af3e4b8917bc737c9f6ca547897f7d..cc43241d838de861ccaaa94ceca7a4a48ab80e4f 100644 (file)
@@ -3,10 +3,7 @@
   id: PaintingBase
   abstract: true
   components:
-  - type: WallMount
-    arc: 360
   - type: Sprite
-    drawdepth: WallMountedItems
     sprite: Structures/Wallmounts/paintings.rsi
 
 - type: entity
   description: This painting is a sad clown! It sparks joy.
   components:
   - type: Sprite
-    state: painting19  
+    state: painting19
index d4f8e29aa466f861eccfcf444a101a30eb2166ca..774667ce66d0c99c90ac1cdebc701b9b03864b71 100644 (file)
@@ -3,12 +3,8 @@
   id: PosterBase
   abstract: true
   components:
-  - type: WallMount
-    arc: 360
   - type: Sprite
-    drawdepth: WallMountedItems
     sprite: Structures/Wallmounts/posters.rsi
-    snapCardinals: true
   - type: Destructible
     thresholds:
     - trigger: # Excess damage, don't spawn entities
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/base_wallmount_cabinet.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/base_wallmount_cabinet.yml
new file mode 100644 (file)
index 0000000..69433c3
--- /dev/null
@@ -0,0 +1,9 @@
+- type: entity
+  parent: [BaseWallmountMetallic, BaseItemCabinet]
+  id: BaseWallmountCabinet
+  abstract: true
+
+- type: entity
+  parent: [BaseWallmountGlass, BaseItemCabinetGlass]
+  id: BaseWallmountCabinetGlass
+  abstract: true
similarity index 86%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/defib_cabinet.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/defib_cabinet.yml
index 3e5c2486ea185b237fe51a16cb36a6c31470bb76..0ca51b5c78e9f6a6d17ec42c945e8a9814fa0592 100644 (file)
@@ -1,18 +1,12 @@
 # TODO: same as other wallmount cabinets they should use a base structure prototype
 - type: entity
-  parent: BaseItemCabinet
+  parent: BaseWallmountCabinet
   id: DefibrillatorCabinet
   name: defibrillator cabinet
   description: A small wall mounted cabinet designed to hold a defibrillator.
   placement:
     mode: SnapgridCenter
   components:
-  - type: WallMount
-    arc: 175
-  - type: Transform
-    anchored: true
-  - type: Clickable
-  - type: InteractionOutline
   - type: Sprite
     sprite: Structures/Wallmounts/defib_cabinet.rsi
     noRot: false
@@ -30,9 +24,6 @@
         whitelist:
           components:
           - Defibrillator
-  - type: Damageable
-    damageContainer: StructuralInorganic
-    damageModifierSet: Metallic
   - type: Destructible
     thresholds:
     - trigger: !type:DamageTrigger
similarity index 79%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/extinguisher_cabinet.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/extinguisher_cabinet.yml
index 30db2d8e4d5c2ceeb43ca34780b804a2a364210b..1e051ed75edd245bd065fc85f1fdc737c0d8ff5d 100644 (file)
@@ -1,19 +1,9 @@
-# TODO: this could probably use some kind of base structure prototype
-# every wallmount cabinet copypastes placement and like 8 components
 - type: entity
-  parent: BaseItemCabinet
+  parent: BaseWallmountCabinet
   id: ExtinguisherCabinet
   name: extinguisher cabinet
   description: A small wall mounted cabinet designed to hold a fire extinguisher.
-  placement:
-    mode: SnapgridCenter
   components:
-    - type: WallMount
-      arc: 360
-    - type: Transform
-      anchored: true
-    - type: Clickable
-    - type: InteractionOutline
     - type: Sprite
       sprite: Structures/Wallmounts/extinguisher_cabinet.rsi
       snapCardinals: true
@@ -31,9 +21,6 @@
           whitelist:
             components:
             - SpraySafety
-    - type: Damageable
-      damageContainer: StructuralInorganic
-      damageModifierSet: Metallic
     - type: Destructible
       thresholds:
         - trigger:
similarity index 81%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/fireaxe_cabinet.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/fireaxe_cabinet.yml
index c2d3c6767f85ac5589924aa482e259ce0d6f2c3e..0c97f046e718300e1c477c24a2f77b46bd48c3aa 100644 (file)
@@ -1,15 +1,11 @@
-# TODO: same as fire extinguisher make it use a base structure theres lots of copy paste
 - type: entity
-  parent: BaseItemCabinetGlass
+  parent: BaseWallmountCabinetGlass
   id: FireAxeCabinet
   name: fire axe cabinet
   description: There is a small label that reads "For Emergency use only" along with details for safe use of the axe. As if.
   placement:
     mode: SnapgridCenter
   components:
-  - type: Damageable
-    damageContainer: StructuralInorganic
-    damageModifierSet: Glass
   - type: Destructible
     thresholds:
     - trigger:
       - !type:PlaySoundBehavior
         sound:
           collection: MetalGlassBreak
-  - type: MeleeSound
-    soundGroups:
-      Brute:
-        collection: GlassSmash
-  - type: WallMount
-  - type: Clickable
-  - type: InteractionOutline
   - type: Sprite
     sprite: Structures/Wallmounts/fireaxe_cabinet.rsi
     layers:
similarity index 98%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/shelfs.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/Storage/shelfs.yml
index 892a5ebb92a2d7a205d8d69f185e8d6e7b799ded..aeceba8f2e8b82ffda70d52317791b9c4a44ad79 100644 (file)
@@ -1,23 +1,15 @@
 # Parents
 - type: entity
-  abstract: true
+  parent: BaseWallmount
   id: ShelfBase
+  abstract: true
   name: shelf
   description: A strange place to place, well, anything really. You feel like you shouldn't be seeing this.
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
   components:
-  - type: Clickable
-  - type: Tag
-    tags:
-    - Structure
   - type: Sprite
     drawdepth: WallMountedItems
     sprite: Structures/Storage/Shelfs/wood.rsi
     state: base
-  - type: Transform
   - type: Damageable
     damageModifierSet: Wood
     damageContainer: StructuralInorganic
@@ -32,7 +24,6 @@
           collection: WoodDestroyHeavy
       - !type:DoActsBehavior
         acts: ["Destruction"]
-  - type: WallMount
   - type: Storage
     grid:
     - 0,0,3,1
@@ -42,7 +33,6 @@
     interfaces:
      enum.StorageUiKey.Key:
       type: StorageBoundUserInterface
-  - type: InteractionOutline
   - type: ContainerContainer
     containers:
       storagebase: !type:Container
similarity index 82%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/walldispenser.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/Storage/wall_dispensers.yml
index 945bfb1a6c2b54a93d59d1279d3b0a871c1d17bf..962963c341ff852af2ffd3092a92f905a262e8ee 100644 (file)
@@ -1,25 +1,12 @@
 - type: entity
-  id: CleanerDispenser
-  name: space cleaner dispenser
-  description: Wallmount reagent dispenser.
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
+  parent: BaseWallmountMetallic
+  id: BaseDispenser
+  abstract: true
   components:
-  - type: WallMount
-    arc: 175
   - type: Sprite
     sprite: Structures/Storage/tanks.rsi
     state: cleanerdispenser
   - type: Appearance
-  - type: InteractionOutline
-  - type: Clickable
-  - type: Transform
-    anchored: true
-  - type: Damageable
-    damageContainer: StructuralInorganic
-    damageModifierSet: Metallic
   - type: Destructible
     thresholds:
     - trigger:
           collection: MetalBreak
       - !type:DoActsBehavior
         acts: ["Destruction"]
-  - type: SolutionContainerManager
-    solutions:
-      tank:
-        reagents:
-        - ReagentId: SpaceCleaner
-          Quantity: 5000
   - type: DrainableSolution
     solution: tank
   - type: ReagentTank
@@ -66,7 +47,7 @@
     solution: tank
 
 - type: entity
-  parent: CleanerDispenser
+  parent: BaseDispenser
   id: FuelDispenser
   name: fuel dispenser
   components:
     weldingDamage:
       types:
         Heat: 20
+
+- type: entity
+  parent: BaseDispenser
+  id: CleanerDispenser
+  name: space cleaner dispenser
+  components:
+  - type: SolutionContainerManager
+    solutions:
+      tank:
+        reagents:
+        - ReagentId: SpaceCleaner
+          Quantity: 5000
+  - type: ReagentTank
similarity index 79%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/switch.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/Switches/switch.yml
index c19c73eb89deabd5bc6ec33c4b2bf68db6cd270c..bbc673344123956cb55be9e789d9ca764e425656 100644 (file)
@@ -1,19 +1,12 @@
 - type: entity
+  parent: BaseWallmountMetallic
   id: SignalSwitch
   name: signal switch
   description: It's a switch for toggling power to things.
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
   components:
-  - type: StationAiWhitelist
   - type: WallMount
     arc: 360
-  - type: Clickable
-  - type: InteractionOutline
-  - type: Physics
-    canCollide: false
+  - type: StationAiWhitelist
   - type: Sprite
     drawdepth: SmallObjects
     sprite: Structures/Wallmounts/switch.rsi
@@ -25,7 +18,6 @@
   - type: Construction
     graph: SignalSwitchGraph
     node: SignalSwitchNode
-  - type: Fixtures
   - type: DeviceNetwork
     deviceNetId: Wireless
   - type: WirelessNetworkConnection
     - Status
     lastSignals:
       Status: false
-  - type: Tag
-    tags:
-    - Structure
+  - type: Destructible
+    thresholds:
+      - trigger:
+          !type:DamageTrigger
+          damage: 80
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+      - trigger:
+          !type:DamageTrigger
+          damage: 40
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+          - !type:PlaySoundBehavior
+            sound:
+              collection: MetalBreak
+              params:
+                volume: -8
 
 - type: entity
+  parent: BaseWallmountMetallic
   id: SignalButton
   name: signal button
   description: It's a button for activating something.
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
   components:
-  - type: StationAiWhitelist
   - type: WallMount
     arc: 360
-  - type: Clickable
-  - type: InteractionOutline
-  - type: Physics
-    canCollide: false
+  - type: StationAiWhitelist
   - type: Sprite
     drawdepth: SmallObjects
     sprite: Structures/Wallmounts/switch.rsi
@@ -71,7 +72,6 @@
   - type: Construction
     graph: SignalButtonGraph
     node: SignalButtonNode
-  - type: Fixtures
   - type: DeviceNetwork
     deviceNetId: Wireless
   - type: WirelessNetworkConnection
@@ -79,9 +79,6 @@
   - type: DeviceLinkSource
     ports:
       - Pressed
-  - type: Damageable
-    damageContainer: Inorganic
-    damageModifierSet: Metallic
   - type: Destructible
     thresholds:
       - trigger:
               collection: MetalBreak
               params:
                 volume: -8
-  - type: Tag
-    tags:
-    - Structure
 
 - type: entity
+  parent: BaseWallmountMetallic
   id: ApcNetSwitch
   name: apc net switch
   description: It's a switch for toggling lights that are connected to the same apc.
-  placement:
-    mode: SnapgridCenter
-    snap:
-      - Wallmount
-  components:
-    - type: WallMount
-      arc: 360
-    - type: Clickable
-    - type: InteractionOutline
-    - type: Physics
-      canCollide: false
-    - type: Transform
-      anchored: true
-    - type: Sprite
-      drawdepth: SmallObjects
-      sprite: Structures/Wallmounts/switch.rsi
-      state: on
-    - type: Rotatable
-    - type: ExtensionCableReceiver
-    - type: DeviceNetwork
-      deviceNetId: Apc
-      transmitFrequencyId: SmartLight # assuming people want to use it for light switches.
-    - type: ApcNetworkConnection
-    - type: ApcNetSwitch
-    - type: Construction
-      graph: LightSwitchGraph
-      node: LightSwitchNode
-    - type: Fixtures
-    - type: Tag
-      tags:
-      - Structure
-
-- type: entity
-  id: TwoWayLever
-  name: two way lever
-  description: A two way lever.
-  placement:
-    mode: SnapgridCenter
   components:
-    - type: StationAiWhitelist
-    - type: Clickable
-    - type: InteractionOutline
-    - type: Sprite
-      drawdepth: HighFloorObjects
-      sprite: Structures/conveyor.rsi
-      noRot: true
-      layers:
-        - state: switch-off
-          map: ["enabled", "enum.TwoWayLeverState.Middle"]
-    - type: TwoWayLever
-    - type: UseDelay
-      delay: 0.2 # prevent light-toggling auto-clickers.
-    - type: Appearance
-    - type: GenericVisualizer
-      visuals:
-        enum.TwoWayLeverVisuals.State:
-          enabled:
-            Right: { state: switch-fwd }
-            Middle: { state: switch-off }
-            Left: { state: switch-rev }
-    - type: Damageable
-      damageContainer: Inorganic
-      damageModifierSet: Metallic
-    - type: Destructible
-      thresholds:
-      - trigger:
-          !type:DamageTrigger
-          damage: 100
-        behaviors:
-        - !type:DoActsBehavior
-          acts: [ "Destruction" ]
-    - type: Construction
-      graph: LeverGraph
-      node: LeverNode
-    - type: DeviceNetwork
-      deviceNetId: Wireless
-    - type: WirelessNetworkConnection
-      range: 200
-    - type: DeviceLinkSource
-      ports:
-        - Left
-        - Right
-        - Middle
-    - type: Tag
-      tags:
-      - Structure
+  - type: WallMount
+    arc: 360
+  - type: Sprite
+    drawdepth: SmallObjects
+    sprite: Structures/Wallmounts/switch.rsi
+    state: on
+  - type: Rotatable
+  - type: ExtensionCableReceiver
+  - type: DeviceNetwork
+    deviceNetId: Apc
+    transmitFrequencyId: SmartLight # assuming people want to use it for light switches.
+  - type: ApcNetworkConnection
+  - type: ApcNetSwitch
+  - type: Construction
+    graph: LightSwitchGraph
+    node: LightSwitchNode
 
 #directional
 
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/telescreens.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/telescreens.yml
new file mode 100644 (file)
index 0000000..fd2ba1d
--- /dev/null
@@ -0,0 +1,72 @@
+- type: entity
+  parent: BaseWallmountMachine
+  id: WallmountTelescreen
+  suffix: camera monitor
+  name: telescreen
+  description: Finally, some decent reception around here...
+  components:
+  - type: Sprite
+    sprite: Structures/Machines/computers.rsi
+    layers:
+      - map: ["computerLayerBody"]
+        state: telescreen_frame
+      - map: ["computerLayerScreen"]
+        state: telescreen
+  - type: Construction
+    graph: WallmountTelescreen
+    node: Telescreen
+  - type: PointLight
+    radius: 1.5
+    energy: 1.6
+    color: "#b89f25"
+  - type: DeviceNetwork
+    deviceNetId: Wired
+    receiveFrequencyId: SurveillanceCamera
+    transmitFrequencyId: SurveillanceCamera
+  - type: WiredNetworkConnection
+  - type: DeviceNetworkRequiresPower
+  - type: SurveillanceCameraMonitor
+  - type: ActivatableUI
+    key: enum.SurveillanceCameraMonitorUiKey.Key
+  - type: ActivatableUIRequiresPower
+  - type: ActivatableUIRequiresVision
+  - type: UserInterface
+    interfaces:
+        enum.SurveillanceCameraMonitorUiKey.Key:
+          type: SurveillanceCameraMonitorBoundUserInterface
+
+- type: entity
+  parent: BaseWallmountMetallic
+  id: WallmountTelescreenFrame
+  name: telescreen frame
+  description: Finally, some decent reception around here...
+  components:
+  - type: Construction
+    graph: WallmountTelescreen
+    node: TelescreenFrame
+  - type: Sprite
+    sprite: Structures/Machines/computers.rsi
+    layers:
+      - map: ["computerLayerBody"]
+        state: telescreen_frame
+      - map: ["computerLayerScreen"]
+        state: telescreen
+  - type: Destructible
+    thresholds:
+    - trigger:
+        !type:DamageTrigger
+        damage: 200
+      behaviors: #excess damage, don't spawn entities.
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
+    - trigger:
+        !type:DamageTrigger
+        damage: 50
+      behaviors:
+      - !type:SpawnEntitiesBehavior
+        spawn:
+          SheetSteel1:
+            min: 1
+            max: 1
+      - !type:DoActsBehavior
+        acts: [ "Destruction" ]
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/televisions.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/televisions.yml
new file mode 100644 (file)
index 0000000..b600ece
--- /dev/null
@@ -0,0 +1,96 @@
+- type: entity
+  parent: BaseWallmountMachine
+  id: WallmountTelevision
+  suffix: entertainment
+  name: television
+  description: Finally, some decent reception around here...
+  components:
+  - type: Construction
+    graph: WallmountTelevision
+    node: Television
+  - type: Sprite
+    sprite: Structures/Wallmounts/flatscreentv.rsi
+    layers:
+      - map: ["computerLayerBody"]
+        state: television_wall
+      - map: ["computerLayerScreen"]
+        state: television_wallscreen
+  - type: DeviceNetwork
+    deviceNetId: Wireless
+    receiveFrequencyId: SurveillanceCamera
+    transmitFrequencyId: SurveillanceCamera
+  - type: WirelessNetworkConnection
+    range: 200
+  - type: DeviceNetworkRequiresPower
+  - type: Speech
+  - type: SurveillanceCameraSpeaker
+  - type: SurveillanceCameraMonitor
+  - type: ActivatableUI
+    key: enum.SurveillanceCameraMonitorUiKey.Key
+  - type: ActivatableUIRequiresPower
+  - type: ActivatableUIRequiresVision
+  - type: UserInterface
+    interfaces:
+        enum.SurveillanceCameraMonitorUiKey.Key:
+          type: SurveillanceCameraMonitorBoundUserInterface
+  - type: PointLight
+    radius: 1.5
+    energy: 1.6
+    color: "#b89f25"
+  - type: Destructible
+    thresholds:
+      - trigger:
+          !type:DamageTrigger
+          damage: 200
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+      - trigger:
+          !type:DamageTrigger
+          damage: 100
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+          - !type:PlaySoundBehavior
+            sound:
+              collection: MetalGlassBreak
+              params:
+                volume: -4
+  - type: StationAiWhitelist
+
+- type: entity
+  parent: BaseWallmountGlass
+  id: WallmountTelevisionFrame
+  name: television frame
+  description: Finally, some decent reception around here...
+  components:
+  - type: Construction
+    graph: WallmountTelevision
+    node: TelevisionFrame
+  - type: Sprite
+    drawdepth: WallMountedItems
+    sprite: Structures/Wallmounts/flatscreentv.rsi
+    layers:
+      - map: ["computerLayerBody"]
+        state: television_wall
+      - map: ["computerLayerScreen"]
+        state: television_wallscreen
+  - type: Destructible
+    thresholds:
+      - trigger:
+          !type:DamageTrigger
+          damage: 20
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+      - trigger:
+          !type:DamageTrigger
+          damage: 15
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+          - !type:PlaySoundBehavior
+            sound:
+              collection: MetalGlassBreak
+              params:
+                volume: -4
similarity index 87%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/air_alarm.yml
index d8c50211cc798a350eac4c845aa8933759a018ec..609f6e21ea93e50cb6bfcb865b3dad4c8ac37367 100644 (file)
@@ -1,19 +1,13 @@
 - type: entity
+  parent: BaseWallmountMachine
   id: AirAlarm
   name: air alarm
   description: An air alarm. Alarms... air?
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
   components:
   - type: StationAiWhitelist
-  - type: WallMount
-  - type: ApcPowerReceiver
   - type: Electrified
     enabled: false
     usesApcPower: true
-  - type: ExtensionCableReceiver
   - type: DeviceNetwork
     deviceNetId: AtmosDevices
     receiveFrequencyId: AtmosMonitor
@@ -86,8 +80,6 @@
       map: ["airAlarmState"] # TODO: fire alarm enum
     - state: alarmx
       map: ["enum.WiresVisualLayers.MaintenancePanel"]
-  - type: Transform
-    anchored: true
   - type: Construction
     graph: AirAlarm
     node: air_alarm
     - DeviceMonitoringAndControl
 
 - type: entity
+  parent: BaseWallmountMetallic
   id: AirAlarmAssembly
   name: air alarm assembly
   description: An air alarm. Doesn't look like it'll be alarming air any time soon.
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
   components:
-  - type: WallMount
-  - type: Clickable
-  - type: InteractionOutline
   - type: Sprite
     sprite: Structures/Wallmounts/air_monitors.rsi
     layers:
     node: assembly
   - type: Transform
     anchored: true
+  - type: Destructible
+    thresholds:
+      - trigger:
+          !type:DamageTrigger
+          damage: 20
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+      - trigger:
+          !type:DamageTrigger
+          damage: 15
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+          - !type:PlaySoundBehavior
+            sound:
+              collection: MetalGlassBreak
+              params:
+                volume: -4
 
 - type: entity
   id: AirAlarmXeno
similarity index 85%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/fire_alarm.yml
index 93e398a974d383d65196d25ef59b9d62d94dded9..1f2a20dc30faed4864137da4cf7fc16d925609d6 100644 (file)
@@ -1,10 +1,11 @@
 - type: entity
+  parent: BaseWallmountMachine
   id: FireAlarm
   name: fire alarm
   description: A fire alarm. Spicy!
   components:
-  - type: WallMount
-  - type: ApcPowerReceiver
+  - type: LightningTarget
+    priority: 0
   - type: Electrified
     enabled: false
     usesApcPower: true
@@ -39,8 +40,6 @@
   - type: Tag
     tags:
       - FireAlarm
-  - type: Clickable
-  - type: InteractionOutline
   - type: FireAlarm
   - type: AtmosAlertsDevice
     group: FireAlarm
               params:
                 volume: -4
   - type: StationAiWhitelist
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
 
 - type: entity
+  parent: BaseWallmountMetallic
   id: FireAlarmAssembly
   name: fire alarm assembly
   description: A fire alarm assembly. Very mild.
   components:
-  - type: WallMount
-  - type: Clickable
-  - type: InteractionOutline
   - type: Sprite
     sprite: Structures/Wallmounts/air_monitors.rsi
     layers:
   - type: Construction
     graph: FireAlarm
     node: assembly
-  - type: Transform
-    anchored: true
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
+  - type: Destructible
+    thresholds:
+      - trigger:
+          !type:DamageTrigger
+          damage: 20
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+      - trigger:
+          !type:DamageTrigger
+          damage: 15
+        behaviors:
+          - !type:DoActsBehavior
+            acts: [ "Destruction" ]
+          - !type:PlaySoundBehavior
+            sound:
+              collection: MetalGlassBreak
+              params:
+                volume: -4
 
 - type: entity
   id: FireAlarmXeno
similarity index 93%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/intercom.yml
index 7a343ab6ad75ff29fbd2fffb1bab9385b11142b4..6d04ada47c6ffe7373e3d8ee3119f8ebf87e516e 100644 (file)
@@ -1,12 +1,11 @@
 - type: entity
+  parent: BaseWallmountMachine
   id: BaseIntercom
   name: intercom
   description: An intercom. For when the station just needs to know something.
   abstract: true
   components:
   - type: StationAiWhitelist
-  - type: WallMount
-  - type: ApcPowerReceiver
   - type: Electrified
     enabled: false
     usesApcPower: true
@@ -27,9 +26,6 @@
   - type: VoiceOverride # This is for the wire that makes an electricity zapping noise.
     speechVerbOverride: Electricity
     enabled: false
-  - type: ExtensionCableReceiver
-  - type: Clickable
-  - type: InteractionOutline
   - type: Appearance
   - type: WiresVisuals
   - type: WiresPanelSecurity
@@ -60,9 +56,6 @@
     - state: panel
       map: ["enum.WiresVisualLayers.MaintenancePanel"]
       visible: false
-  - type: Transform
-    noRot: false
-    anchored: true
   - type: WiresPanel
   - type: Wires
     boardName: wires-board-name-intercom
@@ -83,9 +76,6 @@
     containers:
     - board
     - key_slots
-  - type: Damageable
-    damageContainer: StructuralInorganic
-    damageModifierSet: StructuralMetallic
   - type: Destructible
     thresholds:
       - trigger:
         enum.RadioDeviceVisualLayers.Speaker:
           True: { visible: true }
           False: { visible: false }
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
 
 - type: entity
   id: IntercomAssembly
   name: intercom assembly
   description: An intercom. It doesn't seem very helpful right now.
   components:
-  - type: WallMount
-  - type: Clickable
-  - type: InteractionOutline
   - type: Sprite
     drawdepth: SmallObjects
     sprite: Structures/Wallmounts/intercom.rsi
   - type: Construction
     graph: Intercom
     node: assembly
-  - type: Transform
-    anchored: true
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
 
 # this weird inheritance BS exists for construction shitcode
 - type: entity
similarity index 68%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/screen.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/screen.yml
index 9d5cf06d511e1104d1ebc351a11e1c8ee2d52031..bb794e8ac08c3b6f0d8f2066cfeac280ec5e8fae 100644 (file)
@@ -1,19 +1,9 @@
 - type: entity
+  parent: BaseWallmountMachine
   id: Screen
   name: screen
   description: Displays text or time.
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
   components:
-  - type: Transform
-    anchored: true
-  - type: WallMount
-    arc: 360
-  - type: InteractionOutline
-  - type: Clickable
-  - type: Appearance
   - type: Rotatable
   - type: TextScreenVisuals
     textOffset: 0,3
     sprite: Structures/Wallmounts/screen.rsi
     state: screen
     noRot: true
-  - type: Construction
-    graph: Timer
-    node: screen
   - type: ApcPowerReceiver
     powerLoad: 100
-  - type: Electrified
-    enabled: false
-    usesApcPower: true
   - type: ExtensionCableReceiver
   - type: Screen
   - type: DeviceNetwork
@@ -42,6 +26,7 @@
   id: ArrivalsShuttleTimer
   parent: Screen
   name: arrivals screen
+  description: Displays time of arrivals shuttle ETA.
   components:
   - type: DeviceNetwork
     deviceNetId: Private
similarity index 86%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/station_map.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml
index becdfc7f659e2f879774b3cf13f6b993b0b5d2ea..5e3b29e36f174416792a3d457bdfdf2bf6dde304 100644 (file)
@@ -1,22 +1,15 @@
 - type: entity
+  parent: BaseWallmountMetallic
   id: StationMapBroken
   name: station map
   description: A virtual map of the surrounding station.
   suffix: Wall broken
-  placement:
-    mode: SnapgridCenter
   components:
-    - type: InteractionOutline
-    - type: Clickable
-    - type: Transform
-      anchored: true
     - type: Sprite
       sprite: Structures/Machines/station_map.rsi
       drawdepth: WallMountedItems
       layers:
         - state: station_map_broken
-    - type: Damageable
-      damageContainer: StructuralInorganic
     - type: Destructible
       thresholds:
         - trigger:
               acts: [ "Destruction" ]
 
 - type: entity
+  parent: BaseWallmountMachine
   id: StationMap
   name: station map
-  parent: BaseComputer
   description: A virtual map of the surrounding station.
   suffix: Wall
-  placement:
-    mode: SnapgridCenter
   components:
+    - type: WallMount
+      arc: 360
+    - type: Appearance
     - type: StationMap
-    - type: Transform
-      anchored: true
     - type: Sprite
       sprite: Structures/Machines/station_map.rsi
       layers:
@@ -59,9 +51,6 @@
         board: !type:Container
     - type: ApcPowerReceiver
       powerLoad: 200
-    - type: WallMount
-      arc: 360
-    - type: ExtensionCableReceiver
     - type: Construction
       graph: StationMap
       node: station_map
       interfaces:
         enum.StationMapUiKey.Key:
           type: StationMapBoundUserInterface
+    - type: EmitSoundOnUIOpen
+      sound:
+        collection: Keyboard
+        params:
+          volume: -1
+          variation: 0.10
+          pitch: 1.10  # low pitch keyboard sounds feel kinda weird
+      blacklist:
+        tags:
+        - NoConsoleSound
 
 - type: entity
+  parent: BaseWallmountMetallic
   id: StationMapAssembly
   name: station map assembly
   description: A station map assembly.
   components:
   - type: WallMount
-  - type: Clickable
-  - type: InteractionOutline
+    arc: 360
   - type: Sprite
     sprite: Structures/Machines/station_map.rsi
     layers:
   - type: Construction
     graph: StationMap
     node: assembly
-  - type: Transform
-    anchored: true
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
similarity index 85%
rename from Resources/Prototypes/Entities/Structures/Wallmounts/timer.yml
rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/timer.yml
index 278d93df6801c4492ece8c76db98231f8cb5ec77..895b84eb7b72b460e256437b9014c63be6b3bcce 100644 (file)
@@ -1,19 +1,12 @@
 - type: entity
+  parent: BaseWallmountMachine
   id: SignalTimer
   name: signal timer
   description: It's a timer for sending timed signals to things.
-  placement:
-    mode: SnapgridCenter
-    snap:
-    - Wallmount
   components:
   - type: StationAiWhitelist
-  - type: Transform
-    anchored: true
   - type: WallMount
     arc: 360
-  - type: Clickable
-  - type: InteractionOutline
   - type: Sprite
     drawdepth: SmallObjects
     sprite: Structures/Wallmounts/switch.rsi
     interfaces:
       enum.SignalTimerUiKey.Key:
         type: SignalTimerBoundUserInterface
-  - type: ApcPowerReceiver
-    powerLoad: 100
   - type: Electrified
     enabled: false
     usesApcPower: true
-  - type: ExtensionCableReceiver
   - type: ActivatableUIRequiresPower
   - type: Construction
     graph: Timer
 # Construction Frame
 
 - type: entity
-  categories: [ HideSpawnMenu ]
   id: TimerFrame
   name: timer frame
   description: A construction frame for a timer.
-  placement:
-    mode: SnapgridCenter
   components:
-  - type: Clickable
-  - type: InteractionOutline
-  - type: Transform
-    anchored: true
   - type: Sprite
     drawdepth: WallMountedItems
     sprite: Structures/Wallmounts/signalscreen.rsi
     graph: Timer
     node: frame
   - type: WallMount
+    arc: 360
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/base_wallmount.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/base_wallmount.yml
new file mode 100644 (file)
index 0000000..824a446
--- /dev/null
@@ -0,0 +1,51 @@
+- type: entity
+  id: BaseWallmount
+  abstract: true
+  placement:
+    mode: SnapgridCenter
+    snap:
+    - Wallmount
+  components:
+  - type: Clickable
+  - type: WallMount
+  - type: InteractionOutline
+  - type: Transform
+    anchored: true
+  - type: Tag
+    tags:
+    - Structure
+  - type: Sprite
+    drawdepth: WallMountedItems
+
+- type: entity
+  parent: BaseWallmount
+  id: BaseWallmountGlass
+  abstract: true
+  components:
+  - type: MeleeSound
+    soundGroups:
+      Brute:
+        collection: GlassSmash
+  - type: Damageable
+    damageContainer: StructuralInorganic
+    damageModifierSet: Glass
+
+- type: entity
+  parent: BaseWallmount
+  id: BaseWallmountMetallic
+  abstract: true
+  components:
+  - type: Damageable
+    damageContainer: StructuralInorganic
+    damageModifierSet: StructuralMetallic
+
+- type: entity
+  parent: BaseWallmountMetallic
+  id: BaseWallmountMachine
+  abstract: true
+  components:
+  - type: ApcPowerReceiver
+    powerLoad: 100
+  - type: ExtensionCableReceiver
+  - type: LightningTarget
+    priority: 1
diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/monitors_televisions.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/monitors_televisions.yml
deleted file mode 100644 (file)
index 8c98831..0000000
+++ /dev/null
@@ -1,179 +0,0 @@
-- type: entity
-  parent: ComputerSurveillanceWirelessCameraMonitor
-  id: ComputerTelevision
-  name: wooden television
-  description: Finally, some decent reception around here...
-  components:
-  - type: Sprite
-    noRot: true
-    drawdepth: SmallObjects
-    layers:
-    - map: ["computerLayerBody"]
-      state: television
-    - map: ["computerLayerScreen"]
-      state: detective_television
-  - type: Computer
-    board: ComputerTelevisionCircuitboard
-  - type: PointLight
-    radius: 1.5
-    energy: 1.6
-    color: "#b89f25"
-  - type: Fixtures
-    fixtures:
-      fix1:
-        shape:
-          !type:PhysShapeAabb
-          bounds: "-0.25,-0.25,0.25,0.25"
-        density: 200
-        mask:
-          - TabletopMachineMask
-        layer:
-          - TabletopMachineLayer
-
-- type: entity
-  parent: BaseComputer
-  id: WallmountTelescreenFrame
-  name: telescreen frame
-  description: Finally, some decent reception around here...
-  components:
-  - type: Construction
-    graph: WallmountTelescreen
-    node: TelescreenFrame
-  - type: Sprite
-    drawdepth: WallMountedItems
-    sprite: Structures/Machines/computers.rsi
-    layers:
-      - map: ["computerLayerBody"]
-        state: telescreen_frame
-      - map: ["computerLayerScreen"]
-        state: telescreen
-  - type: Fixtures
-    fixtures:
-      fix1:
-        shape:
-          !type:PhysShapeAabb
-          bounds: "-0.20,-0.10,0.25,0.35"
-        density: 250
-        mask:
-          - FullTileMask
-        layer:
-          - WallLayer
-  - type: WallMount
-  - type: Damageable
-    damageContainer: StructuralInorganic
-    damageModifierSet: Metallic
-  - type: Destructible
-    thresholds:
-    - trigger:
-        !type:DamageTrigger
-        damage: 200
-      behaviors: #excess damage, don't spawn entities.
-      - !type:DoActsBehavior
-        acts: [ "Destruction" ]
-    - trigger:
-        !type:DamageTrigger
-        damage: 50
-      behaviors:
-      - !type:SpawnEntitiesBehavior
-        spawn:
-          SheetSteel1:
-            min: 1
-            max: 1
-      - !type:DoActsBehavior
-        acts: [ "Destruction" ]
-  - type: Transform
-    anchored: true
-
-- type: entity
-  parent: WallmountTelescreenFrame
-  id: WallmountTelescreen
-  suffix: camera monitor
-  name: telescreen
-  description: Finally, some decent reception around here...
-  components:
-  - type: Construction
-    graph: WallmountTelescreen
-    node: Telescreen
-  - type: PointLight
-    radius: 1.5
-    energy: 1.6
-    color: "#b89f25"
-  - type: DeviceNetwork
-    deviceNetId: Wired
-    receiveFrequencyId: SurveillanceCamera
-    transmitFrequencyId: SurveillanceCamera
-  - type: WiredNetworkConnection
-  - type: DeviceNetworkRequiresPower
-  - type: SurveillanceCameraMonitor
-  - type: ActivatableUI
-    key: enum.SurveillanceCameraMonitorUiKey.Key
-  - type: ActivatableUIRequiresPower
-  - type: ActivatableUIRequiresVision
-  - type: UserInterface
-    interfaces:
-        enum.SurveillanceCameraMonitorUiKey.Key:
-          type: SurveillanceCameraMonitorBoundUserInterface
-
-# Wall Televisions
-
-- type: entity
-  parent: WallmountTelescreenFrame
-  id: WallmountTelevisionFrame
-  name: television frame
-  description: Finally, some decent reception around here...
-  components:
-  - type: Fixtures
-    fixtures:
-      fix1:
-        shape:
-          !type:PhysShapeAabb
-          bounds: "-0.75,-0.10,0.75,0.35"
-        density: 75
-        mask:
-          - FullTileMask
-        layer:
-          - WallLayer
-  - type: Construction
-    graph: WallmountTelevision
-    node: TelevisionFrame
-  - type: Sprite
-    drawdepth: WallMountedItems
-    sprite: Structures/Wallmounts/flatscreentv.rsi
-    layers:
-      - map: ["computerLayerBody"]
-        state: television_wall
-      - map: ["computerLayerScreen"]
-        state: television_wallscreen
-
-- type: entity
-  parent: WallmountTelevisionFrame
-  id: WallmountTelevision
-  suffix: entertainment
-  name: television
-  description: Finally, some decent reception around here...
-  components:
-  - type: Construction
-    graph: WallmountTelevision
-    node: Television
-  - type: DeviceNetwork
-    deviceNetId: Wireless
-    receiveFrequencyId: SurveillanceCamera
-    transmitFrequencyId: SurveillanceCamera
-  - type: WirelessNetworkConnection
-    range: 200
-  - type: DeviceNetworkRequiresPower
-  - type: Speech
-  - type: SurveillanceCameraSpeaker
-  - type: SurveillanceCameraMonitor
-  - type: ActivatableUI
-    key: enum.SurveillanceCameraMonitorUiKey.Key
-  - type: ActivatableUIRequiresPower
-  - type: ActivatableUIRequiresVision
-  - type: UserInterface
-    interfaces:
-        enum.SurveillanceCameraMonitorUiKey.Key:
-          type: SurveillanceCameraMonitorBoundUserInterface
-  - type: PointLight
-    radius: 1.5
-    energy: 1.6
-    color: "#b89f25"
diff --git a/Resources/Prototypes/Entities/Structures/lever.yml b/Resources/Prototypes/Entities/Structures/lever.yml
new file mode 100644 (file)
index 0000000..7efb4ce
--- /dev/null
@@ -0,0 +1,53 @@
+- type: entity
+  id: TwoWayLever
+  name: two way lever
+  description: A two way lever.
+  placement:
+    mode: SnapgridCenter
+  components:
+    - type: StationAiWhitelist
+    - type: Clickable
+    - type: InteractionOutline
+    - type: Sprite
+      drawdepth: FloorObjects
+      sprite: Structures/conveyor.rsi
+      layers:
+        - state: switch-off
+          map: ["enabled", "enum.TwoWayLeverState.Middle"]
+    - type: TwoWayLever
+    - type: UseDelay
+      delay: 0.2 # prevent light-toggling auto-clickers.
+    - type: Appearance
+    - type: GenericVisualizer
+      visuals:
+        enum.TwoWayLeverVisuals.State:
+          enabled:
+            Right: { state: switch-fwd }
+            Middle: { state: switch-off }
+            Left: { state: switch-rev }
+    - type: Damageable
+      damageContainer: Inorganic
+      damageModifierSet: Metallic
+    - type: Destructible
+      thresholds:
+      - trigger:
+          !type:DamageTrigger
+          damage: 100
+        behaviors:
+        - !type:DoActsBehavior
+          acts: [ "Destruction" ]
+    - type: Construction
+      graph: LeverGraph
+      node: LeverNode
+    - type: DeviceNetwork
+      deviceNetId: Wireless
+    - type: WirelessNetworkConnection
+      range: 200
+    - type: DeviceLinkSource
+      ports:
+        - Left
+        - Right
+        - Middle
+    - type: Tag
+      tags:
+      - Structure