From 327ca462b1c7660844b7d9ae2f1384c846a735b9 Mon Sep 17 00:00:00 2001 From: IngvarJackal Date: Thu, 28 May 2026 01:53:04 +0200 Subject: [PATCH 1/3] make sinks drains movable --- Resources/Prototypes/Entities/Structures/Furniture/sink.yml | 2 ++ .../Prototypes/Entities/Structures/Specific/Janitor/drain.yml | 2 ++ 2 files changed, 4 insertions(+) diff --git a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml index 6d6245051e4..92cdbf8fa76 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml @@ -65,6 +65,8 @@ range: 8 sound: path: /Audio/Ambience/Objects/drain.ogg + - type: Anchorable # Triad: can move + - type: Pullable # Triad: can move - type: Physics # Hardlight bodyType: Static canCollide: false diff --git a/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml b/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml index 01ac6aaf47f..3212d9a005b 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml @@ -17,6 +17,8 @@ - type: Clickable - type: Transform anchored: true + - type: Anchorable # Triad: can move + - type: Pullable # Triad: can move - type: Physics bodyType: Static canCollide: false From 82345a3bb5e3669814175c2f6582e75eeeefe5c1 Mon Sep 17 00:00:00 2001 From: IngvarJackal Date: Thu, 28 May 2026 03:50:17 +0200 Subject: [PATCH 2/3] add construction graphs for sinks and drains --- .../Entities/Structures/Furniture/sink.yml | 9 ++ .../Structures/Specific/Janitor/drain.yml | 3 + .../Graphs/furniture/bathroom.yml | 112 ++++++++++++++++++ .../_Triad/Recipes/Construction/furniture.yml | 70 +++++++++++ 4 files changed, 194 insertions(+) create mode 100644 Resources/Prototypes/_Triad/Recipes/Construction/Graphs/furniture/bathroom.yml create mode 100644 Resources/Prototypes/_Triad/Recipes/Construction/furniture.yml diff --git a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml index 92cdbf8fa76..73c700e520b 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml @@ -80,6 +80,9 @@ parent: SinkEmpty suffix: Water components: + - type: Construction + graph: SinkGraph + node: sink - type: SolutionContainerManager solutions: drainBuffer: @@ -94,6 +97,9 @@ id: SinkWide parent: Sink components: + - type: Construction + graph: SinkGraph + node: sinkWide - type: Sprite sprite: Structures/Furniture/sink.rsi layers: @@ -127,6 +133,9 @@ parent: SinkStemless suffix: Water components: + - type: Construction + graph: SinkGraph + node: sinkStemless - type: SolutionContainerManager solutions: drainBuffer: diff --git a/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml b/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml index 3212d9a005b..93c9c51283d 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml @@ -17,6 +17,9 @@ - type: Clickable - type: Transform anchored: true + - type: Construction + graph: FloorDrainGraph + node: floorDrain - type: Anchorable # Triad: can move - type: Pullable # Triad: can move - type: Physics diff --git a/Resources/Prototypes/_Triad/Recipes/Construction/Graphs/furniture/bathroom.yml b/Resources/Prototypes/_Triad/Recipes/Construction/Graphs/furniture/bathroom.yml new file mode 100644 index 00000000000..6a170246afc --- /dev/null +++ b/Resources/Prototypes/_Triad/Recipes/Construction/Graphs/furniture/bathroom.yml @@ -0,0 +1,112 @@ +# Triad: Construction graphs for bathroom fixtures (sinks and floor drains). +# Toilets already have a graph in the base game (Graphs/furniture/toilet.yml). + +- type: constructionGraph + id: SinkGraph + start: start + graph: + - node: start + edges: + - to: sink + completed: + - !type:SnapToGrid {} + steps: + - material: Steel + amount: 4 + doAfter: 2 + - to: sinkWide + completed: + - !type:SnapToGrid {} + steps: + - material: Steel + amount: 6 + doAfter: 2 + - to: sinkStemless + completed: + - !type:SnapToGrid {} + steps: + - material: Steel + amount: 3 + doAfter: 2 + + - node: sink + entity: Sink + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 4 + - !type:EmptyAllContainers {} + - !type:DestroyEntity {} + conditions: + - !type:EntityAnchored + anchored: false + steps: + - tool: Welding + doAfter: 2 + + - node: sinkWide + entity: SinkWide + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 6 + - !type:EmptyAllContainers {} + - !type:DestroyEntity {} + conditions: + - !type:EntityAnchored + anchored: false + steps: + - tool: Welding + doAfter: 2 + + - node: sinkStemless + entity: SinkStemlessWater + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 3 + - !type:EmptyAllContainers {} + - !type:DestroyEntity {} + conditions: + - !type:EntityAnchored + anchored: false + steps: + - tool: Welding + doAfter: 2 + +- type: constructionGraph + id: FloorDrainGraph + start: start + graph: + - node: start + edges: + - to: floorDrain + completed: + - !type:SnapToGrid {} + steps: + - material: Steel + amount: 2 + doAfter: 1 + + - node: floorDrain + entity: FloorDrain + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:EmptyAllContainers {} + - !type:DestroyEntity {} + conditions: + - !type:EntityAnchored + anchored: false + steps: + - tool: Welding + doAfter: 1 diff --git a/Resources/Prototypes/_Triad/Recipes/Construction/furniture.yml b/Resources/Prototypes/_Triad/Recipes/Construction/furniture.yml new file mode 100644 index 00000000000..0d7acdcf9c6 --- /dev/null +++ b/Resources/Prototypes/_Triad/Recipes/Construction/furniture.yml @@ -0,0 +1,70 @@ +# Triad: Construction menu entries for bathroom fixtures. +# Toilet is already registered in the base game (Recipes/Construction/furniture.yml). + +- type: construction + id: SinkConstruct + name: sink + description: A stemmed basin with a faucet. Refills with water automatically. + graph: SinkGraph + startNode: start + targetNode: sink + category: construction-category-furniture + icon: + sprite: Structures/Furniture/sink.rsi + state: sink_stem + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + id: SinkWideConstruct + name: wide sink + description: A wider basin with a faucet. Refills with water automatically. + graph: SinkGraph + startNode: start + targetNode: sinkWide + category: construction-category-furniture + icon: + sprite: Structures/Furniture/sink.rsi + state: sink_wide + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + id: SinkStemlessConstruct + name: stemless sink + description: A basin without a raised faucet stem. Refills with water automatically. + graph: SinkGraph + startNode: start + targetNode: sinkStemless + category: construction-category-furniture + icon: + sprite: Structures/Furniture/sink.rsi + state: sink + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + id: FloorDrainConstruct + name: floor drain + description: Drains puddles and liquid from the surrounding floor area. + graph: FloorDrainGraph + startNode: start + targetNode: floorDrain + category: construction-category-furniture + icon: + sprite: Objects/Specific/Janitorial/drain.rsi + state: icon + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked From 42827c08ee8a81653305e30a7cdd8e39130674bc Mon Sep 17 00:00:00 2001 From: IngvarJackal Date: Thu, 28 May 2026 13:10:02 +0200 Subject: [PATCH 3/3] Revert "add construction graphs for sinks and drains" This reverts commit 82345a3bb5e3669814175c2f6582e75eeeefe5c1. --- .../Entities/Structures/Furniture/sink.yml | 9 -- .../Structures/Specific/Janitor/drain.yml | 3 - .../Graphs/furniture/bathroom.yml | 112 ------------------ .../_Triad/Recipes/Construction/furniture.yml | 70 ----------- 4 files changed, 194 deletions(-) delete mode 100644 Resources/Prototypes/_Triad/Recipes/Construction/Graphs/furniture/bathroom.yml delete mode 100644 Resources/Prototypes/_Triad/Recipes/Construction/furniture.yml diff --git a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml index 73c700e520b..92cdbf8fa76 100644 --- a/Resources/Prototypes/Entities/Structures/Furniture/sink.yml +++ b/Resources/Prototypes/Entities/Structures/Furniture/sink.yml @@ -80,9 +80,6 @@ parent: SinkEmpty suffix: Water components: - - type: Construction - graph: SinkGraph - node: sink - type: SolutionContainerManager solutions: drainBuffer: @@ -97,9 +94,6 @@ id: SinkWide parent: Sink components: - - type: Construction - graph: SinkGraph - node: sinkWide - type: Sprite sprite: Structures/Furniture/sink.rsi layers: @@ -133,9 +127,6 @@ parent: SinkStemless suffix: Water components: - - type: Construction - graph: SinkGraph - node: sinkStemless - type: SolutionContainerManager solutions: drainBuffer: diff --git a/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml b/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml index 93c9c51283d..3212d9a005b 100644 --- a/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml +++ b/Resources/Prototypes/Entities/Structures/Specific/Janitor/drain.yml @@ -17,9 +17,6 @@ - type: Clickable - type: Transform anchored: true - - type: Construction - graph: FloorDrainGraph - node: floorDrain - type: Anchorable # Triad: can move - type: Pullable # Triad: can move - type: Physics diff --git a/Resources/Prototypes/_Triad/Recipes/Construction/Graphs/furniture/bathroom.yml b/Resources/Prototypes/_Triad/Recipes/Construction/Graphs/furniture/bathroom.yml deleted file mode 100644 index 6a170246afc..00000000000 --- a/Resources/Prototypes/_Triad/Recipes/Construction/Graphs/furniture/bathroom.yml +++ /dev/null @@ -1,112 +0,0 @@ -# Triad: Construction graphs for bathroom fixtures (sinks and floor drains). -# Toilets already have a graph in the base game (Graphs/furniture/toilet.yml). - -- type: constructionGraph - id: SinkGraph - start: start - graph: - - node: start - edges: - - to: sink - completed: - - !type:SnapToGrid {} - steps: - - material: Steel - amount: 4 - doAfter: 2 - - to: sinkWide - completed: - - !type:SnapToGrid {} - steps: - - material: Steel - amount: 6 - doAfter: 2 - - to: sinkStemless - completed: - - !type:SnapToGrid {} - steps: - - material: Steel - amount: 3 - doAfter: 2 - - - node: sink - entity: Sink - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetSteel1 - amount: 4 - - !type:EmptyAllContainers {} - - !type:DestroyEntity {} - conditions: - - !type:EntityAnchored - anchored: false - steps: - - tool: Welding - doAfter: 2 - - - node: sinkWide - entity: SinkWide - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetSteel1 - amount: 6 - - !type:EmptyAllContainers {} - - !type:DestroyEntity {} - conditions: - - !type:EntityAnchored - anchored: false - steps: - - tool: Welding - doAfter: 2 - - - node: sinkStemless - entity: SinkStemlessWater - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetSteel1 - amount: 3 - - !type:EmptyAllContainers {} - - !type:DestroyEntity {} - conditions: - - !type:EntityAnchored - anchored: false - steps: - - tool: Welding - doAfter: 2 - -- type: constructionGraph - id: FloorDrainGraph - start: start - graph: - - node: start - edges: - - to: floorDrain - completed: - - !type:SnapToGrid {} - steps: - - material: Steel - amount: 2 - doAfter: 1 - - - node: floorDrain - entity: FloorDrain - edges: - - to: start - completed: - - !type:SpawnPrototype - prototype: SheetSteel1 - amount: 2 - - !type:EmptyAllContainers {} - - !type:DestroyEntity {} - conditions: - - !type:EntityAnchored - anchored: false - steps: - - tool: Welding - doAfter: 1 diff --git a/Resources/Prototypes/_Triad/Recipes/Construction/furniture.yml b/Resources/Prototypes/_Triad/Recipes/Construction/furniture.yml deleted file mode 100644 index 0d7acdcf9c6..00000000000 --- a/Resources/Prototypes/_Triad/Recipes/Construction/furniture.yml +++ /dev/null @@ -1,70 +0,0 @@ -# Triad: Construction menu entries for bathroom fixtures. -# Toilet is already registered in the base game (Recipes/Construction/furniture.yml). - -- type: construction - id: SinkConstruct - name: sink - description: A stemmed basin with a faucet. Refills with water automatically. - graph: SinkGraph - startNode: start - targetNode: sink - category: construction-category-furniture - icon: - sprite: Structures/Furniture/sink.rsi - state: sink_stem - objectType: Structure - placementMode: SnapgridCenter - canBuildInImpassable: false - conditions: - - !type:TileNotBlocked - -- type: construction - id: SinkWideConstruct - name: wide sink - description: A wider basin with a faucet. Refills with water automatically. - graph: SinkGraph - startNode: start - targetNode: sinkWide - category: construction-category-furniture - icon: - sprite: Structures/Furniture/sink.rsi - state: sink_wide - objectType: Structure - placementMode: SnapgridCenter - canBuildInImpassable: false - conditions: - - !type:TileNotBlocked - -- type: construction - id: SinkStemlessConstruct - name: stemless sink - description: A basin without a raised faucet stem. Refills with water automatically. - graph: SinkGraph - startNode: start - targetNode: sinkStemless - category: construction-category-furniture - icon: - sprite: Structures/Furniture/sink.rsi - state: sink - objectType: Structure - placementMode: SnapgridCenter - canBuildInImpassable: false - conditions: - - !type:TileNotBlocked - -- type: construction - id: FloorDrainConstruct - name: floor drain - description: Drains puddles and liquid from the surrounding floor area. - graph: FloorDrainGraph - startNode: start - targetNode: floorDrain - category: construction-category-furniture - icon: - sprite: Objects/Specific/Janitorial/drain.rsi - state: icon - objectType: Structure - placementMode: SnapgridCenter - canBuildInImpassable: false - conditions: - - !type:TileNotBlocked