diff --git a/Content.Client/Wall/ShuttleWallVisuals.cs b/Content.Client/Wall/ShuttleWallVisuals.cs new file mode 100644 index 00000000000..9060e892a8a --- /dev/null +++ b/Content.Client/Wall/ShuttleWallVisuals.cs @@ -0,0 +1,6 @@ +namespace Content.Client.Wall; + +public enum ShuttleWallVisualLayers : byte +{ + Deconstruction, +} diff --git a/Content.Shared/Wall/ShuttleWallVisuals.cs b/Content.Shared/Wall/ShuttleWallVisuals.cs new file mode 100644 index 00000000000..31fef9f399c --- /dev/null +++ b/Content.Shared/Wall/ShuttleWallVisuals.cs @@ -0,0 +1,8 @@ +namespace Content.Shared.Wall; +using Robust.Shared.Serialization; + +[Serializable, NetSerializable] +public enum ShuttleWallVisuals +{ + DeconstructionStage, +} diff --git a/Resources/Prototypes/Entities/Structures/Walls/girders.yml b/Resources/Prototypes/Entities/Structures/Walls/girders.yml index 04b2aa1af06..a1ed2332b99 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/girders.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/girders.yml @@ -6,7 +6,7 @@ components: - type: Transform anchored: true - noRot: true + noRot: false - type: Physics bodyType: Static - type: Fixtures diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml index 66929958d5d..1daa13dff97 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml @@ -441,7 +441,7 @@ key: walls base: plastitanium - type: Reflect - reflectProb: 0.75 + reflectProb: 0.1 - type: entity parent: WallPlastitaniumIndestructible @@ -466,7 +466,7 @@ - !type:DoActsBehavior acts: [ "Destruction" ] - type: Reflect - reflectProb: 0.15 + reflectProb: 0.1 - type: entity parent: WallShuttleDiagonal @@ -490,7 +490,7 @@ sprite: Structures/Walls/plastitanium_diagonal.rsi state: state0 - type: Reflect - reflectProb: 0.15 + reflectProb: 0.1 - type: entity parent: BaseWall @@ -517,10 +517,15 @@ !type:DamageTrigger damage: 600 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: reinf_over @@ -645,10 +650,11 @@ key: walls base: silver +#shuttle walls - type: entity id: WallShuttleDiagonal name: shuttle wall - suffix: diagonal + suffix: Diagonal description: Keeps the air in and the greytide out. placement: mode: SnapgridCenter @@ -674,7 +680,7 @@ state: state0 - type: Damageable damageContainer: Inorganic - damageModifierSet: Metallic + damageModifierSet: StrongMetallic - type: Physics bodyType: Static - type: Reflect @@ -710,6 +716,8 @@ !type:DamageTrigger damage: 300 behaviors: + - !type:ChangeConstructionNodeBehavior + node: girder - !type:PlaySoundBehavior sound: path: /Audio/Effects/metalbreak.ogg @@ -717,44 +725,60 @@ acts: ["Destruction"] destroySound: path: /Audio/Effects/metalbreak.ogg + - type: Construction + graph: Girder + node: diagonalshuttleWall - type: entity - parent: BaseWall + parent: WallReinforced id: WallShuttle name: shuttle wall + suffix: Reinforced, Exterior components: - - type: Tag - tags: - - Wall - - RCDDeconstructWhitelist - type: Sprite sprite: Structures/Walls/shuttle.rsi - type: Icon sprite: Structures/Walls/shuttle.rsi - - type: Destructible - thresholds: - - trigger: - !type:DamageTrigger - damage: 1000 - behaviors: - - !type:DoActsBehavior - acts: [ "Destruction" ] - - trigger: - !type:DamageTrigger - damage: 500 - behaviors: - - !type:PlaySoundBehavior - sound: - path: /Audio/Effects/metalbreak.ogg - - !type:DoActsBehavior - acts: ["Destruction"] - destroySound: - path: /Audio/Effects/metalbreak.ogg + state: full + - type: Construction + graph: Girder + node: shuttleWall + - type: IconSmooth + key: walls + base: state + - type: Appearance + - type: GenericVisualizer + visuals: + enum.ShuttleWallVisuals.DeconstructionStage: + ShuttleWallVisualLayers.Deconstruction: + -1: { visible: false } + 0: { state: shuttle_construct-0, visible: true} + 1: { state: shuttle_construct-1, visible: true} + 2: { state: shuttle_construct-2, visible: true} + 3: { state: shuttle_construct-3, visible: true} + 4: { state: shuttle_construct-4, visible: true} + 5: { state: shuttle_construct-5, visible: true} - type: Reflect reflectProb: 0.1 + +- type: entity + parent: WallSolid + id: WallShuttleInterior + name: shuttle wall + suffix: Interior + components: + - type: Sprite + sprite: Structures/Walls/shuttleinterior.rsi + - type: Icon + sprite: Structures/Walls/shuttleinterior.rsi + - type: Construction + graph: Girder + node: shuttleInteriorWall - type: IconSmooth key: walls base: state + - type: Reflect + reflectProb: 0.1 - type: entity parent: BaseWall diff --git a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml index 07fca0e4d8a..29453998351 100644 --- a/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml +++ b/Resources/Prototypes/Entities/Structures/Windows/shuttle.yml @@ -8,6 +8,9 @@ sprite: Structures/Windows/shuttle_window.rsi - type: Icon sprite: Structures/Windows/shuttle_window.rsi + - type: Repairable + fuelCost: 15 + doAfterDelay: 3 - type: Damageable damageContainer: Inorganic damageModifierSet: RGlass @@ -38,6 +41,9 @@ acts: [ "Destruction" ] - type: IconSmooth base: swindow + - type: Construction + graph: Window + node: shuttleWindow - type: Appearance - type: DamageVisuals thresholds: [4, 8, 12] @@ -46,4 +52,42 @@ damageOverlay: sprite: Structures/Windows/cracks.rsi - type: StaticPrice - price: 25 + price: 25 # Frontier - Note that upstream upped this from 25 to 100, its back to 25 here. + +- type: entity + parent: ShuttleWindow + id: ShuttleWindowDiagonal + name: diagonal shuttle window + suffix: diagonal + placement: + mode: SnapgridCenter + snap: + - Window + components: + - type: Sprite + drawdepth: WallTops + sprite: Structures/Windows/shuttle_window_diagonal.rsi + state: state0 + - type: IconSmooth + mode: Diagonal + key: windows + base: state + - type: Icon + sprite: Structures/Windows/shuttle_window_diagonal.rsi + state: state0 + - type: Fixtures + fixtures: + fix1: + shape: + !type:PolygonShape + vertices: + - "-0.5,-0.5" + - "0.5,0.5" + - "0.5,-0.5" + mask: + - FullTileMask + layer: + - GlassLayer + - type: DamageVisuals + damageOverlay: + sprite: Structures/Windows/cracks_diagonal.rsi diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml index e652cfbec87..0ccb3033341 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/girder.yml @@ -43,7 +43,7 @@ - to: reinforcedGirder completed: - !type:SnapToGrid - southRotation: true + southRotation: false conditions: - !type:EntityAnchored {} steps: @@ -145,6 +145,22 @@ amount: 2 doAfter: 2 + - to: shuttleInteriorWall + completed: + - !type:SnapToGrid + southRotation: true + conditions: + - !type:EntityAnchored { } + steps: + - material: MetalRod + amount: 2 + doAfter: 1 + - tool: Screwing + doAfter: 1 + - material: Steel + amount: 2 + doAfter: 1 + - node: wall entity: WallSolid edges: @@ -263,6 +279,23 @@ - tool: Prying doAfter: 5 + - node: shuttleInteriorWall + entity: WallShuttleInterior + edges: + - to: girder + completed: + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 2 + - !type:SpawnPrototype + prototype: PartRodMetal1 + amount: 2 + steps: + - tool: Welding + doAfter: 10 + - tool: Screwing + doAfter: 1 + - node: reinforcedGirder entity: ReinforcedGirder edges: @@ -277,6 +310,38 @@ amount: 2 doAfter: 1 + - to: shuttleWall + completed: + - !type:SnapToGrid + southRotation: true + conditions: + - !type:EntityAnchored { } + steps: + - material: MetalRod + amount: 4 + doAfter: 1 + - tool: Screwing + doAfter: 2 + - material: Plasteel + amount: 2 + doAfter: 1 + + - to: diagonalshuttleWall + completed: + - !type:SnapToGrid + southRotation: false + conditions: + - !type:EntityAnchored { } + steps: + - material: Steel + amount: 1 + doAfter: 1 + - tool: Welding + doAfter: 4 + - material: Plasteel + amount: 1 + doAfter: 1 + - to: girder completed: - !type:SnapToGrid @@ -342,6 +407,97 @@ - tool: Cutting doAfter: 1 + - node: shuttleWall + entity: WallShuttle + edges: + - to: reinforcedGirder + completed: + - !type:SpawnPrototype + prototype: SheetPlasteel1 + amount: 2 + - !type:SpawnPrototype + prototype: PartRodMetal1 + amount: 4 + steps: + - tool: Welding + doAfter: 10 + - tool: Cutting + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.ShuttleWallVisuals.DeconstructionStage" + data: 5 + - tool: Screwing + doAfter: 2 + - tool: Welding + doAfter: 5 + completed: + - !type:VisualizerDataInt + key: "enum.ShuttleWallVisuals.DeconstructionStage" + data: 4 + - tool: Prying + doAfter: 2 + - tool: Anchoring + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.ShuttleWallVisuals.DeconstructionStage" + data: 3 + - tool: Welding + doAfter: 10 + completed: + - !type:VisualizerDataInt + key: "enum.ShuttleWallVisuals.DeconstructionStage" + data: 2 + - tool: Prying + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.ShuttleWallVisuals.DeconstructionStage" + data: 1 + - tool: Screwing + doAfter: 1 + completed: + - !type:VisualizerDataInt + key: "enum.ShuttleWallVisuals.DeconstructionStage" + data: 0 + - tool: Cutting + doAfter: 4 + + - node: diagonalshuttleWall + entity: WallShuttleDiagonal + edges: + - to: reinforcedGirder + completed: + - !type:SpawnPrototype + prototype: SheetPlasteel1 + amount: 1 + - !type:SpawnPrototype + prototype: SheetSteel1 + amount: 1 + steps: + #To-Do: Add deconstruct visuals + - tool: Welding + doAfter: 5 + - tool: Cutting + doAfter: 1 + - tool: Screwing + doAfter: 1 + - tool: Welding + doAfter: 5 + - tool: Prying + doAfter: 1 + - tool: Anchoring + doAfter: 1 + - tool: Welding + doAfter: 10 + - tool: Prying + doAfter: 1 + - tool: Screwing + doAfter: 1 + - tool: Cutting + doAfter: 1 + - node: wallrust entity: WallSolidRust edges: diff --git a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml index d029ee6b907..10284bdca26 100644 --- a/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml +++ b/Resources/Prototypes/Recipes/Construction/Graphs/structures/window.yml @@ -46,6 +46,14 @@ amount: 2 doAfter: 3 + - to: shuttleWindow + steps: + - material: Plasteel + amount: 2 + - material: ReinforcedGlass + amount: 2 + doAfter: 4 + - node: window entity: Window edges: @@ -186,3 +194,34 @@ doAfter: 2 - tool: Anchoring doAfter: 3 + + - node: shuttleWindow + entity: ShuttleWindow + edges: + - to: start + completed: + - !type:SpawnPrototype + prototype: SheetRGlass1 + amount: 2 + - !type:SpawnPrototype + prototype: SheetPlasteel1 + amount: 2 + - !type:DeleteEntity {} + steps: + #To-Do: Add deconstruct visuals + - tool: Welding + doAfter: 6 + - tool: Screwing + doAfter: 2 + - tool: Prying + doAfter: 3 + - tool: Welding + doAfter: 5 + - tool: Screwing + doAfter: 1 + - tool: Prying + doAfter: 2 + - tool: Welding + doAfter: 4 + - tool: Anchoring + doAfter: 1 diff --git a/Resources/Prototypes/Recipes/Construction/structures.yml b/Resources/Prototypes/Recipes/Construction/structures.yml index d1b711ec0a7..301b214d32d 100644 --- a/Resources/Prototypes/Recipes/Construction/structures.yml +++ b/Resources/Prototypes/Recipes/Construction/structures.yml @@ -178,6 +178,61 @@ conditions: - !type:TileNotBlocked +- type: construction + name: shuttle wall + id: ShuttleWall + graph: Girder + startNode: start + targetNode: shuttleWall + category: construction-category-structures + description: Keeps the air in and the greytide out. + icon: + sprite: Structures/Walls/shuttle.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canRotate: false + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + +- type: construction + name: interior shuttle wall + id: InteriorShuttleWall + graph: Girder + startNode: start + targetNode: shuttleInteriorWall + category: construction-category-structures + description: Keeps the air in and the greytide out. + icon: + sprite: Structures/Walls/shuttleinterior.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canRotate: false + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + + +- type: construction + name: diagonal shuttle wall + id: DiagonalShuttleWall + graph: Girder + startNode: start + targetNode: diagonalshuttleWall + category: construction-category-structures + description: Keeps the air in and the greytide out. + icon: + sprite: Structures/Walls/shuttle_diagonal.rsi + state: state0 + objectType: Structure + placementMode: SnapgridCenter + canRotate: true + canBuildInImpassable: false + conditions: + - !type:TileNotBlocked + - type: construction name: bananium wall id: ClownWall @@ -327,6 +382,25 @@ placementMode: SnapgridCenter canRotate: false +- type: construction + name: shuttle window + id: ShuttleWindow + graph: Window + startNode: start + targetNode: shuttleWindow + category: construction-category-structures + canBuildInImpassable: true + description: Extra sturdy to resist the pressure of FTL or sustain damage from munitions. + conditions: + - !type:EmptyOrWindowValidInTile + - !type:NoWindowsInTile + icon: + sprite: Structures/Windows/shuttle_window.rsi + state: full + objectType: Structure + placementMode: SnapgridCenter + canRotate: false + - type: construction name: directional window id: WindowDirectional diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json b/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json index 97ca2aa3b00..9aff20a66c8 100644 --- a/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json +++ b/Resources/Textures/Structures/Walls/shuttle.rsi/meta.json @@ -41,6 +41,24 @@ { "name": "state7", "directions": 4 + }, + { + "name": "shuttle_construct-0" + }, + { + "name": "shuttle_construct-1" + }, + { + "name": "shuttle_construct-2" + }, + { + "name": "shuttle_construct-3" + }, + { + "name": "shuttle_construct-4" + }, + { + "name": "shuttle_construct-5" } ] -} \ No newline at end of file +} diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-0.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-0.png new file mode 100644 index 00000000000..dde7f67085c Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-0.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-1.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-1.png new file mode 100644 index 00000000000..c68cfbac68a Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-1.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-2.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-2.png new file mode 100644 index 00000000000..d2f5bc0c3bc Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-2.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-3.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-3.png new file mode 100644 index 00000000000..7098ec309a4 Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-3.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-4.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-4.png new file mode 100644 index 00000000000..120b1638c4e Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-4.png differ diff --git a/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-5.png b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-5.png new file mode 100644 index 00000000000..c29bdb3197c Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttle.rsi/shuttle_construct-5.png differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/full.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/full.png new file mode 100644 index 00000000000..f336d4c73bc Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/full.png differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/meta.json b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/meta.json new file mode 100644 index 00000000000..97ca2aa3b00 --- /dev/null +++ b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/meta.json @@ -0,0 +1,46 @@ +{ + "version": 1, + "size": { + "x": 32, + "y": 32 + }, + "license": "CC-BY-SA-3.0", + "copyright": "https://github.com/tgstation/tgstation/blob/9ddb8cf084e292571d4e9c79745db25befbd82fe/icons/turf/walls/shuttle_wall.dmi", + "states": [ + { + "name": "full" + }, + { + "name": "state0", + "directions": 4 + }, + { + "name": "state1", + "directions": 4 + }, + { + "name": "state2", + "directions": 4 + }, + { + "name": "state3", + "directions": 4 + }, + { + "name": "state4", + "directions": 4 + }, + { + "name": "state5", + "directions": 4 + }, + { + "name": "state6", + "directions": 4 + }, + { + "name": "state7", + "directions": 4 + } + ] +} \ No newline at end of file diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state0.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state0.png new file mode 100644 index 00000000000..f53131b1be4 Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state0.png differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state1.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state1.png new file mode 100644 index 00000000000..3041fa3daf8 Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state1.png differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state2.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state2.png new file mode 100644 index 00000000000..f53131b1be4 Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state2.png differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state3.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state3.png new file mode 100644 index 00000000000..1263f7a1bad Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state3.png differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state4.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state4.png new file mode 100644 index 00000000000..92ab8365c2a Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state4.png differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state5.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state5.png new file mode 100644 index 00000000000..430bab8398b Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state5.png differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state6.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state6.png new file mode 100644 index 00000000000..c8c28b2600f Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state6.png differ diff --git a/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state7.png b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state7.png new file mode 100644 index 00000000000..629e4e3154f Binary files /dev/null and b/Resources/Textures/Structures/Walls/shuttleinterior.rsi/state7.png differ