CVar for explosive depressurization tile ripping.

This commit is contained in:
Vera Aguilera Puerto
2021-07-23 13:07:48 +02:00
parent 07c478afb6
commit da25266dd5
8 changed files with 29 additions and 25 deletions

View File

@@ -12,6 +12,7 @@ namespace Content.Server.Atmos.EntitySystems
public string? SpaceWindSound { get; private set; }
public bool MonstermosEqualization { get; private set; }
public bool MonstermosDepressurization { get; private set; }
public bool MonstermosRipTiles { get; private set; }
public bool Superconduction { get; private set; }
public bool ExcitedGroupsSpaceIsAllConsuming { get; private set; }
public float AtmosMaxProcessTime { get; private set; }
@@ -24,6 +25,7 @@ namespace Content.Server.Atmos.EntitySystems
_cfg.OnValueChanged(CCVars.SpaceWindSound, value => SpaceWindSound = value, true);
_cfg.OnValueChanged(CCVars.MonstermosEqualization, value => MonstermosEqualization = value, true);
_cfg.OnValueChanged(CCVars.MonstermosDepressurization, value => MonstermosDepressurization = value, true);
_cfg.OnValueChanged(CCVars.MonstermosRipTiles, value => MonstermosRipTiles = value, true);
_cfg.OnValueChanged(CCVars.Superconduction, value => Superconduction = value, true);
_cfg.OnValueChanged(CCVars.AtmosMaxProcessTime, value => AtmosMaxProcessTime = value, true);
_cfg.OnValueChanged(CCVars.AtmosTickRate, value => AtmosTickRate = value, true);

View File

@@ -64,7 +64,7 @@ namespace Content.Server.Atmos.EntitySystems
excitedGroup.DismantleCooldown = 0;
}
private void ExcitedGroupSelfBreakdown(GridAtmosphereComponent gridAtmosphere, ExcitedGroup excitedGroup, bool spaceIsAllConsuming = false)
private void ExcitedGroupSelfBreakdown(GridAtmosphereComponent gridAtmosphere, ExcitedGroup excitedGroup)
{
DebugTools.Assert(!excitedGroup.Disposed, "Excited group is disposed!");
DebugTools.Assert(gridAtmosphere.ExcitedGroups.Contains(excitedGroup), "Grid Atmosphere does not contain Excited Group!");
@@ -87,7 +87,7 @@ namespace Content.Server.Atmos.EntitySystems
Merge(combined, tile.Air);
if (!spaceIsAllConsuming || !tile.Air.Immutable)
if (!ExcitedGroupsSpaceIsAllConsuming || !tile.Air.Immutable)
continue;
combined.Clear();

View File

@@ -353,25 +353,12 @@ namespace Content.Server.Atmos.EntitySystems
#region Tile Pry
/// <summary>
/// Pries a tile in a grid.
/// </summary>
/// <param name="grid">The grid in question.</param>
/// <param name="tile">The indices of the tile.</param>
public void PryTile(GridId grid, Vector2i tile)
{
if (!_mapManager.TryGetGrid(grid, out var mapGrid))
return;
PryTile(mapGrid, tile);
}
/// <summary>
/// Pries a tile in a grid.
/// </summary>
/// <param name="mapGrid">The grid in question.</param>
/// <param name="tile">The indices of the tile.</param>
public void PryTile(IMapGrid mapGrid, Vector2i tile)
private void PryTile(IMapGrid mapGrid, Vector2i tile)
{
if (!mapGrid.TryGetTileRef(tile, out var tileRef))
return;

View File

@@ -41,7 +41,7 @@ namespace Content.Server.Atmos.EntitySystems
return;
}
PerformHotspotExposure(gridAtmosphere, tile);
PerformHotspotExposure(tile);
if (tile.Hotspot.Bypassing)
{
@@ -118,7 +118,7 @@ namespace Content.Server.Atmos.EntitySystems
}
}
private void PerformHotspotExposure(GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile)
private void PerformHotspotExposure(TileAtmosphere tile)
{
if (tile.Air == null || !tile.Hotspot.Valid) return;

View File

@@ -7,7 +7,7 @@ namespace Content.Server.Atmos.EntitySystems
{
public partial class AtmosphereSystem
{
private void ProcessCell(GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile, int fireCount, bool spaceWind = true)
private void ProcessCell(GridAtmosphereComponent gridAtmosphere, TileAtmosphere tile, int fireCount)
{
// Can't process a tile without air
if (tile.Air == null)
@@ -79,7 +79,7 @@ namespace Content.Server.Atmos.EntitySystems
{
var difference = Share(tile.Air!, enemyTile.Air!, adjacentTileLength);
if (spaceWind)
if (SpaceWind)
{
if (difference > 0)
{

View File

@@ -554,6 +554,9 @@ namespace Content.Server.Atmos.EntitySystems
private void HandleDecompressionFloorRip(IMapGrid mapGrid, TileAtmosphere tile, float sum)
{
if (!MonstermosRipTiles)
return;
var chance = MathHelper.Clamp(sum / 500, 0.005f, 0.5f);
if (sum > 20 && _robustRandom.Prob(chance))

View File

@@ -64,7 +64,7 @@ namespace Content.Server.Atmos.EntitySystems
var number = 0;
while (atmosphere.CurrentRunTiles.TryDequeue(out var tile))
{
ProcessCell(atmosphere, tile, atmosphere.UpdateCounter, SpaceWind);
ProcessCell(atmosphere, tile, atmosphere.UpdateCounter);
if (number++ < LagCheckIterations) continue;
number = 0;
@@ -90,7 +90,7 @@ namespace Content.Server.Atmos.EntitySystems
excitedGroup.DismantleCooldown++;
if(excitedGroup.BreakdownCooldown > Atmospherics.ExcitedGroupBreakdownCycles)
ExcitedGroupSelfBreakdown(gridAtmosphere, excitedGroup, ExcitedGroupsSpaceIsAllConsuming);
ExcitedGroupSelfBreakdown(gridAtmosphere, excitedGroup);
else if(excitedGroup.DismantleCooldown > Atmospherics.ExcitedGroupsDismantleCycles)
ExcitedGroupDismantle(gridAtmosphere, excitedGroup);