diff --git a/Content.Server/Construction/Commands/TileWallsCommand.cs b/Content.Server/Construction/Commands/TileWallsCommand.cs index 001b33913b..a27caec423 100644 --- a/Content.Server/Construction/Commands/TileWallsCommand.cs +++ b/Content.Server/Construction/Commands/TileWallsCommand.cs @@ -25,6 +25,7 @@ public sealed class TileWallsCommand : IConsoleCommand [ValidatePrototypeId] public const string WallTag = "Wall"; + public const string DiagonalTag = "Diagonal"; public void Execute(IConsoleShell shell, string argStr, string[] args) { @@ -85,6 +86,11 @@ public sealed class TileWallsCommand : IConsoleCommand continue; } + if (tagSystem.HasTag(child, DiagonalTag)) + { + continue; + } + var childTransform = _entManager.GetComponent(child); if (!childTransform.Anchored) diff --git a/Resources/Prototypes/Entities/Structures/Walls/walls.yml b/Resources/Prototypes/Entities/Structures/Walls/walls.yml index 4e675bcafe..6718f61cba 100644 --- a/Resources/Prototypes/Entities/Structures/Walls/walls.yml +++ b/Resources/Prototypes/Entities/Structures/Walls/walls.yml @@ -1,7 +1,7 @@ - type: entity abstract: true parent: BaseStructure - id: BaseWall + id: BaseStructureWall name: basewall description: Keeps the air in and the greytide out. placement: @@ -44,7 +44,6 @@ layer: - WallLayer density: 1000 - - type: Occluder - type: Airtight - type: StaticPrice #was DynamicPrice price: 75 @@ -53,6 +52,46 @@ - type: BlockWeather - type: SunShadowCast +- type: entity + abstract: true + parent: BaseStructureWall + id: BaseWall + components: + - type: Occluder # Breaks on diagonal walls + +- type: entity + abstract: true + parent: BaseStructureWall + id: WallDiagonalBase + suffix: Diagonal + components: + - type: Tag + tags: + - Wall + - Diagonal + - type: IconSmooth + mode: Diagonal + key: walls + base: state + - type: Airtight + noAirWhenFullyAirBlocked: false + airBlockedDirection: + - South + - East + - type: Fixtures + fixtures: + fix1: + shape: + !type:PolygonShape + vertices: + - "-0.5,-0.5" + - "0.5,0.5" + - "0.5,-0.5" + mask: + - FullTileMask + layer: + - WallLayer + - type: entity parent: BaseWall id: WallBrick @@ -79,7 +118,6 @@ max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] - - type: IconSmooth key: walls base: brick @@ -91,9 +129,6 @@ id: WallClock name: clock wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/clock.rsi - type: Icon @@ -125,9 +160,6 @@ id: WallClown name: bananium wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/clown.rsi - type: Icon @@ -197,9 +229,6 @@ id: WallCult name: cult wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/cult.rsi - type: Icon @@ -257,9 +286,6 @@ id: WallDiamond name: diamond wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/diamond.rsi - type: Icon @@ -292,9 +318,6 @@ id: WallGold name: gold wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/gold.rsi - type: Icon @@ -339,9 +362,6 @@ id: WallIce name: ice wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/ice.rsi - type: Icon @@ -370,9 +390,6 @@ id: WallPlasma name: plasma wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/plasma.rsi - type: Icon @@ -419,9 +436,6 @@ id: WallPlastic name: plastic wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/plastic.rsi - type: Icon @@ -467,9 +481,6 @@ name: plastitanium wall suffix: indestructible components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/plastitanium.rsi - type: Icon @@ -477,6 +488,11 @@ - type: IconSmooth key: walls base: plastitanium + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: StructuralMetallicStrong + - type: RadiationBlocker + resistance: 5 - type: entity parent: WallPlastitaniumIndestructible @@ -484,9 +500,6 @@ name: plastitanium wall suffix: "" components: - - type: Tag - tags: - - Wall - type: Destructible thresholds: - trigger: @@ -502,23 +515,34 @@ acts: [ "Destruction" ] - type: entity - parent: WallShuttleDiagonal - id: WallPlastitaniumDiagonal + parent: WallDiagonalBase + id: WallPlastitaniumDiagonalIndestructible name: plastitanium wall - suffix: diagonal - placement: - mode: SnapgridCenter - snap: - - Wall + suffix: diagonal, indestructible + components: + - type: Sprite + drawdepth: Walls + sprite: Structures/Walls/plastitanium_diagonal.rsi + state: state0 + - type: Icon + sprite: Structures/Walls/plastitanium_diagonal.rsi + state: state0 + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: StructuralMetallicStrong + - type: RadiationBlocker + resistance: 5 + +- type: entity + parent: WallPlastitaniumDiagonalIndestructible + id: WallPlastitaniumDiagonal + name: plastitanium wall + suffix: diagonal components: - type: Sprite drawdepth: Walls sprite: Structures/Walls/plastitanium_diagonal.rsi state: state0 - - type: IconSmooth - mode: Diagonal - key: walls - base: state - type: Icon sprite: Structures/Walls/plastitanium_diagonal.rsi state: state0 @@ -526,73 +550,18 @@ thresholds: - trigger: !type:DamageTrigger - damage: 2000 + damage: 1000 behaviors: + - !type:SpawnEntitiesBehavior + spawn: + Girder: + min: 1 + max: 1 - !type:DoActsBehavior acts: [ "Destruction" ] - !type:PlaySoundBehavior sound: collection: MetalSlam - - trigger: - !type:DamageTrigger - damage: 1000 - behaviors: - - !type:ChangeConstructionNodeBehavior - node: girder - - !type:PlaySoundBehavior - sound: - collection: MetalSlam - - !type:DoActsBehavior - acts: ["Destruction"] - -- type: entity - id: WallPlastitaniumDiagonalIndestructible - name: plastitanium wall - suffix: diagonal, indestructible - description: Keeps the air in and the greytide out. - placement: - mode: SnapgridCenter - snap: - - Wall - components: - - type: Transform - anchored: true - - type: Clickable - - type: Tag - tags: - - Wall - - Diagonal - - type: Sprite - drawdepth: Walls - sprite: Structures/Walls/plastitanium_diagonal.rsi - state: state0 - - type: IconSmooth - mode: Diagonal - key: walls - base: state - - type: Icon - sprite: Structures/Walls/plastitanium_diagonal.rsi - state: state0 - - type: Physics - bodyType: Static - - type: Airtight - noAirWhenFullyAirBlocked: false - airBlockedDirection: - - South - - East - - type: Fixtures - fixtures: - fix1: - shape: - !type:PolygonShape - vertices: - - "-0.5,-0.5" - - "0.5,0.5" - - "0.5,-0.5" - mask: - - FullTileMask - layer: - - WallLayer - type: entity parent: BaseWall @@ -700,29 +669,44 @@ convertTo: WallCosmicCult - type: entity - parent: WallShuttleDiagonal + parent: WallDiagonalBase id: WallReinforcedDiagonal name: reinforced wall - suffix: diagonal - placement: - mode: SnapgridCenter - snap: - - Wall components: - - type: Tag - tags: - - Diagonal - type: Sprite drawdepth: Walls sprite: Structures/Walls/reinforced_diagonal.rsi state: state0 - - type: IconSmooth - mode: Diagonal - key: walls - base: state - type: Icon sprite: Structures/Walls/reinforced_diagonal.rsi state: state0 + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: StructuralMetallicStrong + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + collection: MetalSlam + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:ChangeConstructionNodeBehavior + node: girder + - !type:PlaySoundBehavior + sound: + collection: MetalSlam + - !type:DoActsBehavior + acts: ["Destruction"] + - type: RadiationBlocker + resistance: 5 # Riveting - type: entity @@ -730,9 +714,6 @@ id: WallRiveted name: riveted wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/riveted.rsi - type: Icon @@ -764,9 +745,6 @@ id: WallSandstone name: sandstone wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/sandstone.rsi - type: Icon @@ -797,9 +775,6 @@ id: WallSilver name: silver wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/silver.rsi - type: Icon @@ -840,59 +815,22 @@ convertTo: WallCosmicCult - type: entity + parent: WallDiagonalBase id: WallShuttleDiagonal name: shuttle wall - suffix: diagonal - description: Keeps the air in and the greytide out. - placement: - mode: SnapgridCenter - snap: - - Wall components: - - type: Transform - anchored: true - - type: Clickable - - type: Tag - tags: - - Wall - - Diagonal - type: Sprite drawdepth: Walls sprite: Structures/Walls/shuttle_diagonal.rsi state: state0 - - type: IconSmooth - mode: Diagonal - key: walls - base: state - type: Icon sprite: Structures/Walls/shuttle_diagonal.rsi state: state0 - - type: Damageable - damageContainer: StructuralInorganic - damageModifierSet: StructuralMetallic - - type: Physics - bodyType: Static - type: Reflect reflectProb: 1 - - type: Pullable - - type: Airtight - noAirWhenFullyAirBlocked: false - airBlockedDirection: - - South - - East - - type: Fixtures - fixtures: - fix1: - shape: - !type:PolygonShape - vertices: - - "-0.5,-0.5" - - "0.5,0.5" - - "0.5,-0.5" - mask: - - FullTileMask - layer: - - WallLayer + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: StructuralMetallicStrong - type: Destructible thresholds: - trigger: @@ -921,6 +859,10 @@ - type: Construction graph: Girder node: diagonalshuttleWall + - type: RadiationBlocker + resistance: 5 + - type: StaticPrice + price: 200 - type: entity parent: BaseWall @@ -990,9 +932,6 @@ id: WallSolid name: solid wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: _DV/Structures/Walls/solid.rsi #Delta V - Resprite walls - type: WallReplacementMarker @@ -1034,26 +973,39 @@ convertTo: WallCosmicCult - type: entity - parent: WallShuttleDiagonal + parent: WallDiagonalBase id: WallSolidDiagonal name: solid wall - suffix: diagonal - placement: - mode: SnapgridCenter - snap: - - Wall components: - type: Sprite drawdepth: Walls sprite: Structures/Walls/solid_diagonal.rsi state: state0 - - type: IconSmooth - mode: Diagonal - key: walls - base: state - type: Icon sprite: Structures/Walls/solid_diagonal.rsi state: state0 + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 400 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + collection: MetalSlam + - trigger: + !type:DamageTrigger + damage: 200 + behaviors: + - !type:ChangeConstructionNodeBehavior + node: girder + - !type:PlaySoundBehavior + sound: + collection: MetalSlam + - !type:DoActsBehavior + acts: ["Destruction"] - type: entity parent: WallSolid @@ -1185,7 +1137,6 @@ name: web wall description: Keeps the spiders in and the greytide out. components: - - type: Clickable - type: MeleeSound soundGroups: Brute: @@ -1193,9 +1144,6 @@ "/Audio/Weapons/slash.ogg" - type: Damageable damageModifierSet: Web - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/web.rsi - type: Icon @@ -1231,9 +1179,6 @@ id: WallNecropolis name: stone wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/necropolis.rsi - type: Icon @@ -1257,9 +1202,6 @@ id: WallMining name: mining wall components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/mining.rsi - type: Icon @@ -1284,26 +1226,45 @@ convertTo: WallCosmicCult - type: entity - parent: WallShuttleDiagonal + parent: WallDiagonalBase id: WallMiningDiagonal name: mining wall - suffix: diagonal - placement: - mode: SnapgridCenter - snap: - - Wall components: - type: Sprite drawdepth: Walls sprite: Structures/Walls/mining_diagonal.rsi state: state0 - - type: IconSmooth - mode: Diagonal - key: walls - base: state - type: Icon sprite: Structures/Walls/mining_diagonal.rsi state: state0 + - type: Damageable + damageContainer: StructuralInorganic + damageModifierSet: StructuralMetallicStrong + - type: Destructible + thresholds: + - trigger: + !type:DamageTrigger + damage: 600 + behaviors: + - !type:DoActsBehavior + acts: [ "Destruction" ] + - !type:PlaySoundBehavior + sound: + collection: MetalSlam + - trigger: + !type:DamageTrigger + damage: 300 + behaviors: + - !type:SpawnEntitiesBehavior + spawn: + Girder: + min: 1 + max: 1 + - !type:PlaySoundBehavior + sound: + collection: MetalSlam + - !type:DoActsBehavior + acts: ["Destruction"] # Vault Walls @@ -1417,9 +1378,6 @@ name: cobblestone brick wall description: Stone by stone, perfectly fitted together to form a wall. components: - - type: Tag - tags: - - Wall - type: Sprite sprite: Structures/Walls/cobblebrick.rsi - type: Icon