From 1f2a89d453f49abbd624a18778e0dfea73f689a3 Mon Sep 17 00:00:00 2001 From: Nairod <110078045+Nairodian@users.noreply.github.com> Date: Fri, 5 Jan 2024 10:53:34 -0600 Subject: [PATCH] More Buildable Furniture + Tweaks (#23188) your PR will be my beginning of a maintainer journey --- .../Entities/Structures/Furniture/chairs.yml | 3 + .../Entities/Structures/Furniture/dresser.yml | 5 ++ .../Structures/Storage/filing_cabinets.yml | 51 +++++++++++++++++ .../Construction/Graphs/furniture/dresser.yml | 26 +++++++++ .../Graphs/furniture/filing_cabinet.yml | 57 +++++++++++++++++++ .../Construction/Graphs/furniture/seats.yml | 17 ++++++ .../Recipes/Construction/furniture.yml | 37 +++++++++++- .../Recipes/Construction/storage.yml | 51 +++++++++++++++++ 8 files changed, 246 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/furniture/dresser.yml create mode 100644 Resources/Prototypes/Recipes/Construction/Graphs/furniture/filing_cabinet.yml create mode 100644 Resources/Prototypes/Recipes/Construction/storage.yml diff --git a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml index ae8eddc9cf..26829aba2d 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/chairs.yml @@ -349,4 +349,7 @@ - type: Rotatable - type: Sprite state: steel-bench + - type: Construction + graph: Seat + node: chairSteelBench diff --git a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml index e3629fcf07..64c8a9dd99 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/dresser.yml @@ -40,6 +40,11 @@ - type: Tag tags: - Wooden + - type: Anchorable + - type: Rotatable + - type: Construction + graph: Dresser + node: dresser - type: entity id: DresserFilled diff --git a/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml b/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml index df25ed5238..ea49d5f04d 100644 --- a/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml +++ b/Resources/Prototypes/Entities/Structures/Storage/filing_cabinets.yml @@ -43,6 +43,30 @@ - type: ContainerContainer containers: storagebase: !type:Container + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + SheetSteel1: + min: 1 + max: 2 + - type: Construction + graph: FilingCabinet + node: filingCabinet + - type: StaticPrice + price: 20 - type: entity name: tall cabinet @@ -58,6 +82,9 @@ - state: tallcabinet-open map: ["openLayer"] - type: Appearance + - type: Construction + graph: FilingCabinet + node: tallCabinet - type: entity name: chest drawer @@ -105,6 +132,30 @@ - type: ContainerContainer containers: storagebase: !type:Container + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 50 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - !type:PlaySoundBehavior + sound: + path: /Audio/Effects/metalbreak.ogg + - !type:SpawnEntitiesBehavior + spawn: + SheetSteel1: + min: 1 + max: 2 + - type: Construction + graph: FilingCabinet + node: chestDrawer + - type: StaticPrice + price: 15 - type: entity abstract: true diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/dresser.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/dresser.yml new file mode 100644 index 0000000000..e765accd8a --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/dresser.yml @@ -0,0 +1,26 @@ +- type: constructionGraph + id: Dresser + start: start + graph: + - node: start + actions: + - !type:DestroyEntity {} + edges: + - to: dresser + completed: + - !type:SnapToGrid { } + steps: + - material: WoodPlank + amount: 3 + doAfter: 2 + - node: dresser + entity: Dresser + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: MaterialWoodPlank + amount: 3 + steps: + - tool: Prying + doAfter: 3 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/filing_cabinet.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/filing_cabinet.yml new file mode 100644 index 0000000000..72b33bb649 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/filing_cabinet.yml @@ -0,0 +1,57 @@ +- type: constructionGraph + id: FilingCabinet + start: start + graph: + - node: start + actions: + - !type:DestroyEntity {} + edges: + - to: filingCabinet + steps: + - material: Steel + amount: 4 + doAfter: 3 + - to: tallCabinet + steps: + - material: Steel + amount: 4 + doAfter: 3 + - to: chestDrawer + steps: + - material: Steel + amount: 3 + doAfter: 3 + + - node: filingCabinet + entity: filingCabinet + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 4 + steps: + - tool: Screwing + doAfter: 4 + - node: tallCabinet + entity: filingCabinetTall + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 4 + steps: + - tool: Screwing + doAfter: 4 + - node: chestDrawer + entity: filingCabinetDrawer + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 3 + steps: + - tool: Screwing + doAfter: 4 diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml index 30a988cb8f..fe8a17bfb8 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/furniture/seats.yml @@ -58,6 +58,11 @@ doAfter: 1 - material: MetalRod amount: 2 + - to: chairSteelBench + steps: + - material: Steel + amount: 2 + doAfter: 1 - node: chair entity: Chair @@ -179,3 +184,15 @@ - tool: Screwing doAfter: 1 + - node: chairSteelBench + entity: SteelBench + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + steps: + - tool: Screwing + doAfter: 1 + diff --git a/Resources/Prototypes/Recipes/Construction/furniture.yml b/Resources/Prototypes/Recipes/Construction/furniture.yml index e0b3a9d7bc..6e14834ff2 100644 --- a/Resources/Prototypes/Recipes/Construction/furniture.yml +++ b/Resources/Prototypes/Recipes/Construction/furniture.yml @@ -186,6 +186,23 @@ conditions: - !type:TileNotBlocked +- type: construction + name: steel bench + id: ChairSteelBench + graph: Seat + startNode: start + targetNode: chairSteelBench + category: construction-category-furniture + description: A long chair made for a metro. Really standard design. + icon: + sprite: Structures/Furniture/chairs.rsi + state: steel-bench + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + #tables - type: construction name: steel table @@ -358,7 +375,7 @@ conditions: - !type:TileNotBlocked -#beds +#bedroom - type: construction id: Bed name: bed @@ -410,6 +427,23 @@ conditions: - !type:TileNotBlocked +- type: construction + id: Dresser + name: dresser + description: Wooden dresser, can store things inside itself. + graph: Dresser + startNode: start + targetNode: dresser + category: construction-category-furniture + icon: + sprite: Structures/Furniture/furniture.rsi + state: dresser + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + #racks - type: construction id: Rack @@ -428,6 +462,7 @@ conditions: - !type:TileNotBlocked +#misc - type: construction id: MeatSpike name: meat spike diff --git a/Resources/Prototypes/Recipes/Construction/storage.yml b/Resources/Prototypes/Recipes/Construction/storage.yml new file mode 100644 index 0000000000..41abf881b6 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/storage.yml @@ -0,0 +1,51 @@ +#bureaucracy +- type: construction + id: FilingCabinet + name: filing cabinet + description: A cabinet for all your filing needs. + graph: FilingCabinet + startNode: start + targetNode: filingCabinet + category: construction-category-storage + icon: + sprite: Structures/Storage/cabinets.rsi + state: filingcabinet + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + id: TallCabinet + name: tall cabinet + description: A cabinet for all your filing needs. + graph: FilingCabinet + startNode: start + targetNode: tallCabinet + category: construction-category-storage + icon: + sprite: Structures/Storage/cabinets.rsi + state: tallcabinet + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + id: ChestDrawer + name: chest drawer + description: A small drawer for all your filing needs, Now with wheels! + graph: FilingCabinet + startNode: start + targetNode: chestDrawer + category: construction-category-storage + icon: + sprite: Structures/Storage/cabinets.rsi + state: chestdrawer + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked -- 2.51.2