diff --git a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml index 5f1440d3bc..549c840d2b 100644 --- a/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml +++ b/Resources/Prototypes/Entities/Structures/Doors/Shutter/shutters.yml @@ -79,6 +79,9 @@ parent: BaseShutter components: - type: Occluder + - type: Construction + graph: Shutters + node: Shutters - type: entity id: ShuttersNormalOpen @@ -87,6 +90,9 @@ components: - type: Door state: Open + - type: Construction + graph: Shutters + node: Shutters - type: entity id: ShuttersRadiation @@ -101,6 +107,9 @@ - state: closed map: ["enum.DoorVisualLayers.Base"] - type: Occluder + - type: Construction + graph: Shutters + node: ShuttersRadiation - type: entity id: ShuttersRadiationOpen @@ -109,6 +118,9 @@ components: - type: Door state: Open + - type: Construction + graph: Shutters + node: ShuttersRadiation - type: entity id: ShuttersWindow @@ -122,6 +134,9 @@ layers: - state: closed map: ["enum.DoorVisualLayers.Base"] + - type: Construction + graph: Shutters + node: ShuttersWindow - type: entity id: ShuttersWindowOpen @@ -130,3 +145,43 @@ components: - type: Door state: Open + - type: Construction + graph: Shutters + node: ShuttersWindow + +# Frame for construction +- type: entity + id: ShuttersFrame + parent: BaseStructureDynamic + name: shutter frame + description: A frame for constructing a shutter. + components: + - type: Sprite + sprite: Structures/Doors/Shutters/shutters.rsi + state: frame + netsync: false + - type: Construction + graph: Shutters + node: frame1 + - type: InteractionOutline + - type: Damageable + damageContainer: Inorganic + damageModifierSet: Metallic + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 500 + behaviors: + - !type:DoActsBehavior + acts: ["Destruction"] + - type: Physics + bodyType: Dynamic + - type: Fixtures + fixtures: + - shape: + !type:PhysShapeAabb + bounds: "-0.49,-0.49,0.49,0.49" + mass: 50 + layer: + - Opaque \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/shutter.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/shutter.yml new file mode 100644 index 0000000000..d41614d921 --- /dev/null +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/shutter.yml @@ -0,0 +1,179 @@ +- type: constructionGraph + id: Shutters + start: start + graph: + - node: start + edges: + - to: frame1 + completed: + - !type:SnapToGrid { } + steps: + - material: Steel + amount: 3 + doAfter: 1 + + + - node: frame1 + entity: ShuttersFrame + edges: + - to: frame2 + conditions: + - !type:EntityAnchored + anchored: true + steps: + - material: Cable + amount: 2 + doAfter: 1 + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 3 + - !type:DeleteEntity {} + conditions: + - !type:EntityAnchored + anchored: true + steps: + - tool: Welding + doAfter: 1 + + - node: frame2 + edges: + - to: frame3 + conditions: + - !type:EntityAnchored + anchored: true + steps: + - tag: DoorElectronics + name: Door Electronics + icon: + sprite: "Objects/Misc/module.rsi" + state: "door_electronics" + - to: frame1 + completed: + - !type:SpawnPrototype + prototype: CableApcStack1 + amount: 2 + conditions: + - !type:EntityAnchored + anchored: true + steps: + - tool: Cutting + doAfter: 1.5 + + - node: frame3 + edges: + - to: frame4 + conditions: + - !type:EntityAnchored + anchored: true + steps: + - tool: Screwing + doAfter: 0.25 + + - node: frame4 + edges: + - to: Shutters + conditions: + - !type:EntityAnchored + anchored: true + steps: + - tool: Anchoring + doAfter: 1 + - to: ShuttersWindowFrame + conditions: + - !type:EntityAnchored + anchored: true + steps: + - material: Glass + amount: 2 + doAfter: 2 + - to: ShuttersRadiationFrame + conditions: + - !type:EntityAnchored + anchored: true + steps: + - material: Steel + amount: 2 + doAfter: 2 + - to: frame2 + completed: + - !type:SpawnPrototype + prototype: DoorElectronics + amount: 1 + conditions: + - !type:EntityAnchored + anchored: true + steps: + - tool: Screwing + doAfter: 0.75 + + - node: Shutters + entity: ShuttersNormalOpen + edges: + - to: frame4 + conditions: + - !type:DoorWelded + welded: true + steps: + - tool: Anchoring + doAfter: 0.25 + + - node: ShuttersWindowFrame + edges: + - to: ShuttersWindow + conditions: + - !type:EntityAnchored + anchored: true + steps: + - tool: Anchoring + doAfter: 1 + - to: frame4 + completed: + - !type:SpawnPrototype + prototype: SheetGlass1 + amount: 2 + steps: + - tool: Screwing + doAfter: 1 + + + - node: ShuttersWindow + entity: ShuttersWindowOpen + edges: + - to: ShuttersWindowFrame + conditions: + - !type:EntityAnchored + anchored: true + steps: + - tool: Anchoring + doAfter: 1 + + - node: ShuttersRadiationFrame + edges: + - to: ShuttersRadiation + conditions: + - !type:EntityAnchored + anchored: true + steps: + - tool: Anchoring + doAfter: 1 + - to: frame4 + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + steps: + - tool: Screwing + doAfter: 1 + + - node: ShuttersRadiation + entity: ShuttersRadiationOpen + edges: + - to: frame4 + conditions: + - !type:DoorWelded + welded: true + steps: + - tool: Anchoring + doAfter: 0.25 \ No newline at end of file diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index 4b2e3e66b2..575d99cdc3 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -252,6 +252,22 @@ canBuildInImpassable: false conditions: - !type:TileNotBlocked + +- type: construction + name: shutter + id: Shutters + graph: Shutters + startNode: start + targetNode: Shutters + category: Structures + description: This is a shutter - connect it to a button to open and close it. + icon: + sprite: Structures/Doors/Shutters/shutters.rsi + state: closed + objectType: Structure + placementMode: SnapgridCenter + canBuildInImpassable: true + - type: construction name: catwalk diff --git a/Resources/Textures/Structures/Doors/Shutters/shutters.rsi/frame.png b/Resources/Textures/Structures/Doors/Shutters/shutters.rsi/frame.png new file mode 100644 index 0000000000..5e3c7061c9 Binary files /dev/null and b/Resources/Textures/Structures/Doors/Shutters/shutters.rsi/frame.png differ diff --git a/Resources/Textures/Structures/Doors/Shutters/shutters.rsi/meta.json b/Resources/Textures/Structures/Doors/Shutters/shutters.rsi/meta.json index f9c84fe2fa..130943aa80 100644 --- a/Resources/Textures/Structures/Doors/Shutters/shutters.rsi/meta.json +++ b/Resources/Textures/Structures/Doors/Shutters/shutters.rsi/meta.json @@ -1 +1 @@ -{"name":1,"size":{"x":32,"y":32},"states":[{"name":"closing","directions":1,"delays":[[0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05]]},{"name":"opening","directions":1,"delays":[[0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05]]},{"name":"open","directions":1},{"name":"closed","directions":1}],"license":"CC-BY-SA-3.0","copyright":"Tgstation at 97b0.05295aca9f31a7500.0556e0.050730d05b5837e39fc","version":1} \ No newline at end of file +{"name":1,"size":{"x":32,"y":32},"states":[{"name":"closing","directions":1,"delays":[[0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05]]},{"name":"opening","directions":1,"delays":[[0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05,0.05]]},{"name":"open","directions":1},{"name":"frame","directions":1},{"name":"closed","directions":1}],"license":"CC-BY-SA-3.0","copyright":"Tgstation at 97b0.05295aca9f31a7500.0556e0.050730d05b5837e39fc","version":1} \ No newline at end of file