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
This commit is contained in:
DrSmugleaf
2020-08-08 18:14:22 +02:00
committed by GitHub
parent 9681907006
commit ee14d67756
3 changed files with 21 additions and 25 deletions

View File

@@ -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;
}
}