From: kosticia Date: Sat, 26 Jul 2025 19:20:55 +0000 (+0300) Subject: Some wallmount .yml cleanup (#34329) X-Git-Url: https://git.smokeofanarchy.ru/gitweb.cgi?a=commitdiff_plain;h=21d47364c0ceb8745e36db4c53638b24d3c89fc1;p=space-station-14.git Some wallmount .yml cleanup (#34329) * 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. --- diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/service_light.yml b/Resources/Prototypes/Entities/Structures/Lighting/service_light.yml similarity index 100% rename from Resources/Prototypes/Entities/Structures/Wallmounts/service_light.yml rename to Resources/Prototypes/Entities/Structures/Lighting/service_light.yml 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 index 0000000000..b542687b57 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Machines/Computers/wooden_television.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml index 9cc83cf32c..fe921e9a04 100644 --- a/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml +++ b/Resources/Prototypes/Entities/Structures/Machines/vending_machines.yml @@ -1,3 +1,5 @@ +# base + - type: entity id: VendingMachine parent: BaseMachinePowered @@ -105,6 +107,72 @@ - 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 @@ -1436,59 +1504,6 @@ 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 @@ -2225,3 +2240,35 @@ - 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 diff --git a/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml b/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml index 2be509e8e6..410df05021 100644 --- a/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml +++ b/Resources/Prototypes/Entities/Structures/Power/Generation/generators.yml @@ -96,11 +96,9 @@ - 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 @@ -114,12 +112,6 @@ 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 @@ -142,7 +134,6 @@ supplyRate: 3000 supplyRampRate: 500 supplyRampTolerance: 500 - - type: WallMount - type: GuideHelp guides: - ShuttleCraft @@ -150,20 +141,12 @@ # 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 @@ -172,7 +155,6 @@ - type: Construction graph: WallmountGenerator node: frame - - type: WallMount # Generators in use diff --git a/Resources/Prototypes/Entities/Structures/Power/apc.yml b/Resources/Prototypes/Entities/Structures/Power/apc.yml index 018cf2a2f1..75f61e7534 100644 --- a/Resources/Prototypes/Entities/Structures/Power/apc.yml +++ b/Resources/Prototypes/Entities/Structures/Power/apc.yml @@ -1,4 +1,5 @@ - type: entity + parent: BaseWallmount categories: [ HideSpawnMenu ] id: BaseAPC name: APC @@ -19,12 +20,8 @@ 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 @@ -156,6 +153,7 @@ # APC under construction - type: entity + parent: BaseWallmountMetallic categories: [ HideSpawnMenu ] id: APCFrame name: APC frame @@ -163,21 +161,12 @@ 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: diff --git a/Resources/Prototypes/Entities/Structures/Power/chargers.yml b/Resources/Prototypes/Entities/Structures/Power/chargers.yml index e529708abb..75e38f1187 100644 --- a/Resources/Prototypes/Entities/Structures/Power/chargers.yml +++ b/Resources/Prototypes/Entities/Structures/Power/chargers.yml @@ -193,7 +193,7 @@ - PotatoBattery - type: entity - parent: BaseItemRecharger + parent: [ BaseItemRecharger, BaseWallmount ] id: WallWeaponCapacitorRecharger name: wall recharger components: @@ -205,7 +205,6 @@ - map: ["enum.PowerChargerVisualLayers.Light"] state: "light-off" shader: "unshaded" - - type: WallMount - type: Charger chargeRate: 25 - type: ItemSlots diff --git a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml index c38a20a698..ba1ecfd749 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/Closets/base_structureclosets.yml @@ -129,23 +129,16 @@ #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 @@ -170,9 +163,6 @@ containers: entity_storage: !type:Container ents: [] - - type: Damageable - damageContainer: StructuralInorganic - damageModifierSet: Metallic - type: Destructible thresholds: - trigger: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/bell.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/bell.yml similarity index 66% rename from Resources/Prototypes/Entities/Structures/Wallmounts/bell.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/Misc/bell.yml index 24e5cfda2a..c8d5840889 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/bell.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/bell.yml @@ -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: @@ -18,22 +12,12 @@ 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: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/mirror.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml similarity index 71% rename from Resources/Prototypes/Entities/Structures/Wallmounts/mirror.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml index 619e74e564..c32a2731cd 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/mirror.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/mirror.yml @@ -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 @@ -26,6 +22,17 @@ 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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/noticeboard.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/noticeboard.yml similarity index 90% rename from Resources/Prototypes/Entities/Structures/Wallmounts/noticeboard.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/Misc/noticeboard.yml index 76e17b3040..7f38f6c5ab 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/noticeboard.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Misc/noticeboard.yml @@ -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 @@ -17,10 +15,6 @@ maxFillLevels: 6 fillBaseName: notice - type: Appearance - - type: InteractionOutline - - type: Clickable - - type: Transform - anchored: true - type: Damageable damageModifierSet: Wood damageContainer: StructuralInorganic diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml index f00216393b..320a251218 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/bar_sign.yml @@ -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: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml index 35281d0383..041a93e935 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/base_structuresigns.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/flags.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/flags.yml index 992f7a71e6..21076f9f07 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/flags.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/flags.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/paintings.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/paintings.yml index 4f26432c60..cc43241d83 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/paintings.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/paintings.yml @@ -3,10 +3,7 @@ id: PaintingBase abstract: true components: - - type: WallMount - arc: 360 - type: Sprite - drawdepth: WallMountedItems sprite: Structures/Wallmounts/paintings.rsi - type: entity @@ -187,4 +184,4 @@ description: This painting is a sad clown! It sparks joy. components: - type: Sprite - state: painting19 + state: painting19 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml index d4f8e29aa4..774667ce66 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Signs/posters.yml @@ -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 index 0000000000..69433c3a7d --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/base_wallmount_cabinet.yml @@ -0,0 +1,9 @@ +- type: entity + parent: [BaseWallmountMetallic, BaseItemCabinet] + id: BaseWallmountCabinet + abstract: true + +- type: entity + parent: [BaseWallmountGlass, BaseItemCabinetGlass] + id: BaseWallmountCabinetGlass + abstract: true diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/defib_cabinet.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/defib_cabinet.yml 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 3e5c2486ea..0ca51b5c78 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/defib_cabinet.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/defib_cabinet.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/extinguisher_cabinet.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/extinguisher_cabinet.yml 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 30db2d8e4d..1e051ed75e 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/extinguisher_cabinet.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/extinguisher_cabinet.yml @@ -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: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/fireaxe_cabinet.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/fireaxe_cabinet.yml 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 c2d3c6767f..0c97f046e7 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/fireaxe_cabinet.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/fireaxe_cabinet.yml @@ -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: @@ -28,13 +24,6 @@ - !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: diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/shotgun_cabinet.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/shotgun_cabinet.yml similarity index 100% rename from Resources/Prototypes/Entities/Structures/Wallmounts/shotgun_cabinet.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/Storage/Cabinets/shotgun_cabinet.yml diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/shelfs.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/shelfs.yml similarity index 98% rename from Resources/Prototypes/Entities/Structures/Wallmounts/shelfs.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/Storage/shelfs.yml index 892a5ebb92..aeceba8f2e 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/shelfs.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/shelfs.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/walldispenser.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/wall_dispensers.yml similarity index 82% rename from Resources/Prototypes/Entities/Structures/Wallmounts/walldispenser.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/Storage/wall_dispensers.yml index 945bfb1a6c..962963c341 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/walldispenser.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Storage/wall_dispensers.yml @@ -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: @@ -53,12 +40,6 @@ 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: @@ -86,3 +67,16 @@ 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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/switch.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Switches/switch.yml similarity index 79% rename from Resources/Prototypes/Entities/Structures/Wallmounts/switch.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/Switches/switch.yml index c19c73eb89..bbc6733441 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/switch.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/Switches/switch.yml @@ -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 @@ -37,26 +29,35 @@ - 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: @@ -101,100 +98,29 @@ 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/switch_autolink.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/Switches/switch_autolink.yml similarity index 100% rename from Resources/Prototypes/Entities/Structures/Wallmounts/switch_autolink.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/Switches/switch_autolink.yml 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 index 0000000000..fd2ba1d072 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/telescreens.yml @@ -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 index 0000000000..b600ece985 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/Monitors/televisions.yml @@ -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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/air_alarm.yml 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 d8c50211cc..609f6e21ea 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/air_alarm.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/air_alarm.yml @@ -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 @@ -119,17 +111,11 @@ - 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: @@ -147,6 +133,25 @@ 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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/fire_alarm.yml 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 93e398a974..1f2a20dc30 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/fire_alarm.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/fire_alarm.yml @@ -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 @@ -108,19 +107,13 @@ 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: @@ -136,12 +129,25 @@ - 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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/intercom.yml similarity index 93% rename from Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/intercom.yml index 7a343ab6ad..6d04ada47c 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/intercom.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/intercom.yml @@ -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: @@ -123,19 +113,12 @@ 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 @@ -154,12 +137,6 @@ - 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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/screen.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/screen.yml similarity index 68% rename from Resources/Prototypes/Entities/Structures/Wallmounts/screen.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/screen.yml index 9d5cf06d51..bb794e8ac0 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/screen.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/screen.yml @@ -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 @@ -24,14 +14,8 @@ 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 diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/station_map.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml 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 becdfc7f65..5e3b29e36f 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/station_map.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/station_map.yml @@ -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: @@ -30,17 +23,16 @@ 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 @@ -97,15 +86,25 @@ 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: @@ -122,9 +121,3 @@ - type: Construction graph: StationMap node: assembly - - type: Transform - anchored: true - placement: - mode: SnapgridCenter - snap: - - Wallmount diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/surveillance_camera.yml similarity index 100% rename from Resources/Prototypes/Entities/Structures/Wallmounts/surveillance_camera.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/surveillance_camera.yml diff --git a/Resources/Prototypes/Entities/Structures/Wallmounts/timer.yml b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/timer.yml similarity index 85% rename from Resources/Prototypes/Entities/Structures/Wallmounts/timer.yml rename to Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/timer.yml index 278d93df68..895b84eb7b 100644 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/timer.yml +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/WallmountMachines/timer.yml @@ -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 @@ -35,12 +28,9 @@ interfaces: enum.SignalTimerUiKey.Key: type: SignalTimerBoundUserInterface - - type: ApcPowerReceiver - powerLoad: 100 - type: Electrified enabled: false usesApcPower: true - - type: ExtensionCableReceiver - type: ActivatableUIRequiresPower - type: Construction graph: Timer @@ -102,17 +92,10 @@ # 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 @@ -121,3 +104,4 @@ 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 index 0000000000..824a446013 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/Wallmounts/base_wallmount.yml @@ -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 index 8c98831e1f..0000000000 --- a/Resources/Prototypes/Entities/Structures/Wallmounts/monitors_televisions.yml +++ /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 index 0000000000..7efb4cea57 --- /dev/null +++ b/Resources/Prototypes/Entities/Structures/lever.yml @@ -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