From ab4e2ef74fc17ded52e24ec6adad68febb6ee93c Mon Sep 17 00:00:00 2001 From: ChilbroBaggins <107660393+ChilbroBaggins@users.noreply.github.com> Date: Sat, 13 Aug 2022 08:34:02 -0500 Subject: [PATCH] Material Wall Graphs (#10062) Co-authored-by: Jeff --- .../Entities/Structures/Walls/walls.yml | 144 ++++++++++++----- .../Construction/Graphs/structures/girder.yml | 150 ++++++++++++++++++ .../Recipes/Construction/structures.yml | 108 +++++++++++++ 3 files changed, 361 insertions(+), 41 deletions(-) diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml index b6cad460d8..7330a78fbe 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml @@ -241,19 +241,30 @@ sprite: Structures/Walls/gold.rsi - type: Icon sprite: Structures/Walls/gold.rsi + - type: Construction + graph: Girder + node: goldWall - type: Destructible thresholds: - trigger: !type:DamageTrigger damage: 300 behaviors: - - !type:SpawnEntitiesBehavior - spawn: - Girder: - min: 1 - max: 1 - !type:DoActsBehavior - acts: [ "Destruction" ] + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:ChangeConstructionNodeBehavior + node: girder + - !type:DoActsBehavior + acts: ["Destruction"] + destroySound: + path: /Audio/Effects/metalbreak.ogg - type: IconSmooth key: walls base: gold @@ -301,19 +312,30 @@ sprite: Structures/Walls/plasma.rsi - type: Icon sprite: Structures/Walls/plasma.rsi + - type: Construction + graph: Girder + node: plasmaWall - type: Destructible thresholds: - trigger: !type:DamageTrigger damage: 300 behaviors: - - !type:SpawnEntitiesBehavior - spawn: - Girder: - min: 1 - max: 1 - !type:DoActsBehavior - acts: [ "Destruction" ] + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:ChangeConstructionNodeBehavior + node: girder + - !type:DoActsBehavior + acts: ["Destruction"] + destroySound: + path: /Audio/Effects/metalbreak.ogg - type: IconSmooth key: walls base: plasma @@ -331,19 +353,30 @@ sprite: Structures/Walls/plastic.rsi - type: Icon sprite: Structures/Walls/plastic.rsi + - type: Construction + graph: Girder + node: plasticWall - type: Destructible thresholds: - trigger: !type:DamageTrigger damage: 300 behaviors: - - !type:SpawnEntitiesBehavior - spawn: - Girder: - min: 1 - max: 1 - !type:DoActsBehavior - acts: [ "Destruction" ] + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:ChangeConstructionNodeBehavior + node: girder + - !type:DoActsBehavior + acts: ["Destruction"] + destroySound: + path: /Audio/Effects/metalbreak.ogg - type: IconSmooth key: walls base: plastic @@ -460,19 +493,30 @@ sprite: Structures/Walls/silver.rsi - type: Icon sprite: Structures/Walls/silver.rsi + - type: Construction + graph: Girder + node: silverWall - type: Destructible thresholds: - trigger: !type:DamageTrigger damage: 300 behaviors: - - !type:SpawnEntitiesBehavior - spawn: - Girder: - min: 1 - max: 1 - !type:DoActsBehavior - acts: [ "Destruction" ] + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:ChangeConstructionNodeBehavior + node: girder + - !type:DoActsBehavior + acts: ["Destruction"] + destroySound: + path: /Audio/Effects/metalbreak.ogg - type: IconSmooth key: walls base: silver @@ -655,19 +699,30 @@ sprite: Structures/Walls/uranium.rsi - type: Icon sprite: Structures/Walls/uranium.rsi + - type: Construction + graph: Girder + node: uraniumWall - type: Destructible thresholds: - trigger: !type:DamageTrigger damage: 300 behaviors: - - !type:SpawnEntitiesBehavior - spawn: - Girder: - min: 1 - max: 1 - !type:DoActsBehavior - acts: [ "Destruction" ] + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:ChangeConstructionNodeBehavior + node: girder + - !type:DoActsBehavior + acts: ["Destruction"] + destroySound: + path: /Audio/Effects/metalbreak.ogg - type: IconSmooth key: walls base: uranium @@ -677,27 +732,34 @@ id: WallWood name: wood wall components: - - type: Tag - tags: - - Wall - - RCDDeconstructWhitelist - type: Sprite sprite: Structures/Walls/wood.rsi - type: Icon sprite: Structures/Walls/wood.rsi + - type: Construction + graph: Girder + node: woodWall - type: Destructible thresholds: - trigger: !type:DamageTrigger - damage: 300 + damage: 300 # #excess damage (nuke?). avoid computational cost of spawning entities. behaviors: - - !type:SpawnEntitiesBehavior - spawn: - Girder: - min: 1 - max: 1 - !type:DoActsBehavior - acts: [ "Destruction" ] + acts: ["Destruction"] + - trigger: + !type:DamageTrigger + damage: 150 + behaviors: + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:ChangeConstructionNodeBehavior + node: girder + - !type:DoActsBehavior + acts: ["Destruction"] + destroySound: + path: /Audio/Effects/metalbreak.ogg - type: IconSmooth key: walls base: wood diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml index 8f58d761e0..d5c97cecf8 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml @@ -56,6 +56,76 @@ amount: 2 doAfter: 1 + - to: woodWall + completed: + - !type:SnapToGrid + southRotation: true + conditions: + - !type:EntityAnchored {} + steps: + - material: WoodPlank + amount: 2 + doAfter: 2 + + - to: uraniumWall + completed: + - !type:SnapToGrid + southRotation: true + conditions: + - !type:EntityAnchored {} + steps: + - material: Uranium + amount: 2 + - tool: Welding + doAfter: 10 + + - to: silverWall + completed: + - !type:SnapToGrid + southRotation: true + conditions: + - !type:EntityAnchored {} + steps: + - material: Silver + amount: 2 + - tool: Welding + doAfter: 20 + + - to: plasticWall + completed: + - !type:SnapToGrid + southRotation: true + conditions: + - !type:EntityAnchored {} + steps: + - material: Plastic + amount: 2 + doAfter: 2 + + - to: plasmaWall + completed: + - !type:SnapToGrid + southRotation: true + conditions: + - !type:EntityAnchored {} + steps: + - material: Plasma + amount: 2 + - tool: Welding + doAfter: 20 + + - to: goldWall + completed: + - !type:SnapToGrid + southRotation: true + conditions: + - !type:EntityAnchored {} + steps: + - material: Gold + amount: 2 + - tool: Welding + doAfter: 20 + - node: wall entity: WallSolid edges: @@ -68,6 +138,86 @@ - tool: Welding doAfter: 10 + - node: woodWall + entity: WallWood + edges: + - to: girder + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank1 + amount: 2 + steps: + - tool: Prying + doAfter: 10 + + - node: uraniumWall + entity: WallUranium + edges: + - to: girder + completed: + - !type:SpawnPrototype + prototype: SheetUranium1 + amount: 2 + steps: + - tool: Welding + doAfter: 10 + - tool: Prying + doAfter: 10 + + - node: silverWall + entity: WallSilver + edges: + - to: girder + completed: + - !type:SpawnPrototype + prototype: IngotSilver1 + amount: 2 + steps: + - tool: Welding + doAfter: 20 + - tool: Prying + doAfter: 10 + + - node: plasticWall + entity: WallPlastic + edges: + - to: girder + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + steps: + - tool: Prying + doAfter: 10 + + - node: plasmaWall + entity: WallPlasma + edges: + - to: girder + completed: + - !type:SpawnPrototype + prototype: SheetPlasma1 + amount: 2 + steps: + - tool: Welding + doAfter: 20 + - tool: Prying + doAfter: 10 + + - node: goldWall + entity: WallGold + edges: + - to: girder + completed: + - !type:SpawnPrototype + prototype: IngotGold1 + amount: 2 + steps: + - tool: Welding + doAfter: 20 + - tool: Prying + doAfter: 10 + - node: reinforcedGirder actions: - !type:SpriteChange diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index f5194eb5ac..926646b429 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -51,6 +51,114 @@ canBuildInImpassable: false conditions: - !type:TileNotBlocked +# here +- type: construction + name: wood wall + id: WoodWall + graph: Girder + startNode: start + targetNode: woodWall + category: Structures + description: Keeps the air in and the greytide out. + icon: + sprite: Structures/Walls/wood.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canRotate: false + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: uranium wall + id: UraniumWall + graph: Girder + startNode: start + targetNode: uraniumWall + category: Structures + description: Keeps the air in and the greytide out. + icon: + sprite: Structures/Walls/uranium.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canRotate: false + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: silver wall + id: SilverWall + graph: Girder + startNode: start + targetNode: silverWall + category: Structures + description: Keeps the air in and the greytide out. + icon: + sprite: Structures/Walls/silver.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canRotate: false + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: plastic wall + id: PlasticWall + graph: Girder + startNode: start + targetNode: plasticWall + category: Structures + description: Keeps the air in and the greytide out. + icon: + sprite: Structures/Walls/plastic.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canRotate: false + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: plasma wall + id: PlasmaWall + graph: Girder + startNode: start + targetNode: plasmaWall + category: Structures + description: Keeps the air in and the greytide out. + icon: + sprite: Structures/Walls/plasma.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canRotate: false + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: gold wall + id: GoldWall + graph: Girder + startNode: start + targetNode: goldWall + category: Structures + description: Keeps the air in and the greytide out. + icon: + sprite: Structures/Walls/gold.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canRotate: false + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked - type: construction name: grille