From ee14d677563f8a7f0fccd3c25a363358934133b5 Mon Sep 17 00:00:00 2001 From: DrSmugleaf Date: Sat, 8 Aug 2020 18:14:22 +0200 Subject: [PATCH] Make devastation the only explosion type that removes tiles entirely (#1612) * Make light and heavy explosions not destroy tiles to space * Change welding fuel tank and grenade explosion values --- Content.Server/Explosions/ExplosionHelper.cs | 36 +++++++++---------- .../Storage/StorageTanks/fuel_tank.yml | 4 +-- .../Weapons/Guns/Explosives/grenades.yml | 6 ++-- 3 files changed, 21 insertions(+), 25 deletions(-) diff --git a/Content.Server/Explosions/ExplosionHelper.cs b/Content.Server/Explosions/ExplosionHelper.cs index 3ba7bd1f53..5216036870 100644 --- a/Content.Server/Explosions/ExplosionHelper.cs +++ b/Content.Server/Explosions/ExplosionHelper.cs @@ -83,29 +83,25 @@ namespace Content.Server.Explosions continue; } var distanceFromTile = (int) tileLoc.Distance(mapManager, coords); - if (distanceFromTile < devastationRange) - { - mapGrid.SetTile(tileLoc, new Tile(tileDefinitionManager[baseTurfs[0]].TileId)); - } - else if (distanceFromTile < heavyImpactRange) - { - if (robustRandom.Prob(0.8f)) - { - mapGrid.SetTile(tileLoc, new Tile(tileDefinitionManager[baseTurfs[^1]].TileId)); - } - else - { - mapGrid.SetTile(tileLoc, new Tile(tileDefinitionManager[baseTurfs[0]].TileId)); - } - } + var zeroTile = new Tile(tileDefinitionManager[baseTurfs[0]].TileId); + var previousTile = new Tile(tileDefinitionManager[baseTurfs[^1]].TileId); - else if (distanceFromTile < lightImpactRange) + switch (distanceFromTile) { - if (robustRandom.Prob(0.5f)) - { - mapGrid.SetTile(tileLoc, new Tile(tileDefinitionManager[baseTurfs[^1]].TileId)); - } + case var d when d < devastationRange: + mapGrid.SetTile(tileLoc, zeroTile); + break; + case var d when d < heavyImpactRange + && !previousTile.IsEmpty + && robustRandom.Prob(0.8f): + mapGrid.SetTile(tileLoc, previousTile); + break; + case var d when d < lightImpactRange + && !previousTile.IsEmpty + && robustRandom.Prob(0.5f): + mapGrid.SetTile(tileLoc, previousTile); + break; } } diff --git a/Resources/Prototypes/Entities/Constructible/Storage/StorageTanks/fuel_tank.yml b/Resources/Prototypes/Entities/Constructible/Storage/StorageTanks/fuel_tank.yml index f42948da6c..cc088b766c 100644 --- a/Resources/Prototypes/Entities/Constructible/Storage/StorageTanks/fuel_tank.yml +++ b/Resources/Prototypes/Entities/Constructible/Storage/StorageTanks/fuel_tank.yml @@ -9,9 +9,9 @@ - type: Icon texture: Constructible/Misc/weldtank.png - type: Explosive - devastationRange: 1 + devastationRange: 0 heavyImpactRange: 2 - lightImpactRange: 4 + lightImpactRange: 6 flashRange: 5 - type: Solution contents: diff --git a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Explosives/grenades.yml b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Explosives/grenades.yml index e78d9e73da..8eb1973058 100644 --- a/Resources/Prototypes/Entities/Objects/Weapons/Guns/Explosives/grenades.yml +++ b/Resources/Prototypes/Entities/Objects/Weapons/Guns/Explosives/grenades.yml @@ -17,9 +17,9 @@ - type: OnUseTimerTrigger delay: 3.5 - type: Explosive - devastationRange: 1 - heavyImpactRange: 3 - lightImpactRange: 5 + devastationRange: 0 + heavyImpactRange: 2 + lightImpactRange: 4 flashRange: 7 - type: Damageable - type: Destructible