From 8d55affc341b611eca4a6cb5721de5e956db851a Mon Sep 17 00:00:00 2001 From: Alchebun <47635328+jimmy12or@users.noreply.github.com> Date: Mon, 9 Jun 2025 04:34:38 -0700 Subject: [PATCH] Buildable Wooden Fences (#1370) * Start of New PR * still figuring it out * This is confusing... * AHA! Progress! * Big Fences complete * smaller fence test * fixed smaller gates --------- Co-authored-by: Alchebun --- .../Entities/Structures/Fence/big_fence.yml | 6 + .../Entities/Structures/Fence/big_gate.yml | 6 + .../_CP14/Entities/Structures/Fence/fence.yml | 6 + .../_CP14/Entities/Structures/Fence/gate.yml | 7 +- .../Structures/Fences/big_fence_wooden.yml | 111 ++++++++++++++++++ .../Graphs/Structures/Fences/fence_wooden.yml | 111 ++++++++++++++++++ .../_CP14/Recipes/Construction/fences.yml | 103 ++++++++++++++++ 7 files changed, 349 insertions(+), 1 deletion(-) create mode 100644 Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Fences/big_fence_wooden.yml create mode 100644 Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Fences/fence_wooden.yml create mode 100644 Resources/Prototypes/_CP14/Recipes/Construction/fences.yml diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Fence/big_fence.yml b/Resources/Prototypes/_CP14/Entities/Structures/Fence/big_fence.yml index 527ef87c6b..ba9f6deddf 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Fence/big_fence.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Fence/big_fence.yml @@ -75,6 +75,9 @@ max: 4 - !type:DoActsBehavior acts: [ "Destruction" ] + - type: Construction + graph: CP14FenceBigWooden + node: CP14FenceBigWooden - type: entity parent: CP14FenceBigWooden @@ -85,6 +88,9 @@ sprite: _CP14/Structures/Fence/wooden_birch_big.rsi - type: Icon sprite: _CP14/Structures/Fence/wooden_birch_big.rsi + - type: Construction + graph: CP14FenceBigWoodenBirch + node: CP14FenceBigWoodenBirch - type: entity parent: CP14BaseFenceBig diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Fence/big_gate.yml b/Resources/Prototypes/_CP14/Entities/Structures/Fence/big_gate.yml index ba5d30e3d0..48009ab7bb 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Fence/big_gate.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Fence/big_gate.yml @@ -77,6 +77,9 @@ max: 4 - !type:DoActsBehavior acts: [ "Destruction" ] + - type: Construction + graph: CP14FenceGateBigWooden + node: CP14FenceGateBigWooden - type: entity parent: CP14FenceGateBigWooden @@ -87,6 +90,9 @@ sprite: _CP14/Structures/Fence/wooden_birch_big.rsi - type: Icon sprite: _CP14/Structures/Fence/wooden_birch_big.rsi + - type: Construction + graph: CP14FenceGateBigWoodenBirch + node: CP14FenceGateBigWoodenBirch - type: entity parent: diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Fence/fence.yml b/Resources/Prototypes/_CP14/Entities/Structures/Fence/fence.yml index 0521030b33..b50516cabc 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Fence/fence.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Fence/fence.yml @@ -73,6 +73,9 @@ max: 2 - !type:DoActsBehavior acts: [ "Destruction" ] + - type: Construction + graph: CP14FenceWooden + node: CP14FenceWooden - type: entity parent: CP14FenceWooden @@ -83,4 +86,7 @@ sprite: _CP14/Structures/Fence/wooden_birch.rsi - type: Icon sprite: _CP14/Structures/Fence/wooden_birch.rsi + - type: Construction + graph: CP14FenceWoodenBirch + node: CP14FenceWoodenBirch diff --git a/Resources/Prototypes/_CP14/Entities/Structures/Fence/gate.yml b/Resources/Prototypes/_CP14/Entities/Structures/Fence/gate.yml index 84108adfa6..5a028c94b4 100644 --- a/Resources/Prototypes/_CP14/Entities/Structures/Fence/gate.yml +++ b/Resources/Prototypes/_CP14/Entities/Structures/Fence/gate.yml @@ -77,6 +77,9 @@ max: 2 - !type:DoActsBehavior acts: [ "Destruction" ] + - type: Construction + graph: CP14FenceGateWooden + node: CP14FenceGateWooden - type: entity parent: CP14FenceGateWooden @@ -87,4 +90,6 @@ sprite: _CP14/Structures/Fence/wooden_birch.rsi - type: Icon sprite: _CP14/Structures/Fence/wooden_birch.rsi - + - type: Construction + graph: CP14FenceGateWooden + node: CP14FenceGateWooden diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Fences/big_fence_wooden.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Fences/big_fence_wooden.yml new file mode 100644 index 0000000000..196ae8bd99 --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Fences/big_fence_wooden.yml @@ -0,0 +1,111 @@ +- type: constructionGraph + id: CP14FenceBigWooden + start: start + graph: + - node: start + edges: + - to: CP14FenceBigWooden + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14WoodenPlanks + amount: 4 + doAfter: 2 + + - node: CP14FenceBigWooden + entity: CP14FenceBigWooden + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14WoodenPlanks1 + amount: 4 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 + +- type: constructionGraph + id: CP14FenceBigWoodenBirch + start: start + graph: + - node: start + edges: + - to: CP14FenceBigWoodenBirch + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14BirchWoodenPlanks + amount: 4 + doAfter: 2 + + - node: CP14FenceBigWoodenBirch + entity: CP14FenceBigWoodenBirch + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14BirchWoodenPlanks1 + amount: 4 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 + +- type: constructionGraph + id: CP14FenceGateBigWooden + start: start + graph: + - node: start + edges: + - to: CP14FenceGateBigWooden + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14WoodenPlanks + amount: 4 + doAfter: 2 + + - node: CP14FenceGateBigWooden + entity: CP14FenceGateBigWooden + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14WoodenPlanks1 + amount: 4 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 + +- type: constructionGraph + id: CP14FenceGateBigWoodenBirch + start: start + graph: + - node: start + edges: + - to: CP14FenceGateBigWoodenBirch + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14BirchWoodenPlanks + amount: 4 + doAfter: 2 + + - node: CP14FenceGateBigWoodenBirch + entity: CP14FenceGateBigWoodenBirch + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14BirchWoodenPlanks1 + amount: 4 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Fences/fence_wooden.yml b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Fences/fence_wooden.yml new file mode 100644 index 0000000000..f01b5bd17b --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Construction/Graphs/Structures/Fences/fence_wooden.yml @@ -0,0 +1,111 @@ +- type: constructionGraph + id: CP14FenceWooden + start: start + graph: + - node: start + edges: + - to: CP14FenceWooden + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14WoodenPlanks + amount: 2 + doAfter: 2 + + - node: CP14FenceWooden + entity: CP14FenceWooden + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14WoodenPlanks1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 + +- type: constructionGraph + id: CP14FenceWoodenBirch + start: start + graph: + - node: start + edges: + - to: CP14FenceWoodenBirch + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14BirchWoodenPlanks + amount: 2 + doAfter: 2 + + - node: CP14FenceWoodenBirch + entity: CP14FenceWoodenBirch + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14BirchWoodenPlanks1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 + +- type: constructionGraph + id: CP14FenceGateWooden + start: start + graph: + - node: start + edges: + - to: CP14FenceGateWooden + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14WoodenPlanks + amount: 2 + doAfter: 2 + + - node: CP14FenceGateWooden + entity: CP14FenceGateWooden + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14WoodenPlanks1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 + +- type: constructionGraph + id: CP14FenceGateWoodenBirch + start: start + graph: + - node: start + edges: + - to: CP14FenceGateWoodenBirch + completed: + - !type:SnapToGrid + southRotation: true + steps: + - material: CP14BirchWoodenPlanks + amount: 2 + doAfter: 2 + + - node: CP14FenceGateWoodenBirch + entity: CP14FenceGateWoodenBirch + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: CP14BirchWoodenPlanks1 + amount: 2 + - !type:DeleteEntity {} + steps: + - tool: Prying + doAfter: 2 diff --git a/Resources/Prototypes/_CP14/Recipes/Construction/fences.yml b/Resources/Prototypes/_CP14/Recipes/Construction/fences.yml new file mode 100644 index 0000000000..0526bbacc4 --- /dev/null +++ b/Resources/Prototypes/_CP14/Recipes/Construction/fences.yml @@ -0,0 +1,103 @@ +- type: construction + crystallPunkAllowed: true + id: CP14FenceBigWooden + graph: CP14FenceBigWooden + startNode: start + targetNode: CP14FenceBigWooden + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14FenceBigWoodenBirch + graph: CP14FenceBigWoodenBirch + startNode: start + targetNode: CP14FenceBigWoodenBirch + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14FenceGateBigWooden + graph: CP14FenceGateBigWooden + startNode: start + targetNode: CP14FenceGateBigWooden + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14FenceGateBigWoodenBirch + graph: CP14FenceGateBigWoodenBirch + startNode: start + targetNode: CP14FenceGateBigWoodenBirch + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14FenceWooden + graph: CP14FenceWooden + startNode: start + targetNode: CP14FenceWooden + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14FenceWoodenBirch + graph: CP14FenceWoodenBirch + startNode: start + targetNode: CP14FenceWoodenBirch + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14FenceGateWooden + graph: CP14FenceGateWooden + startNode: start + targetNode: CP14FenceGateWooden + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + crystallPunkAllowed: true + id: CP14FenceGateWoodenBirch + graph: CP14FenceGateWoodenBirch + startNode: start + targetNode: CP14FenceGateWoodenBirch + category: construction-category-structures + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked