diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs
index 3ab492f850..6495373c1b 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs
@@ -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);
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.ExcitedGroup.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.ExcitedGroup.cs
index 8f18d63e4f..982f192bb0 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.ExcitedGroup.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.ExcitedGroup.cs
@@ -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();
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Grid.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Grid.cs
index 5806ef1332..8aba21897a 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Grid.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Grid.cs
@@ -353,25 +353,12 @@ namespace Content.Server.Atmos.EntitySystems
#region Tile Pry
- ///
- /// Pries a tile in a grid.
- ///
- /// The grid in question.
- /// The indices of the tile.
- public void PryTile(GridId grid, Vector2i tile)
- {
- if (!_mapManager.TryGetGrid(grid, out var mapGrid))
- return;
-
- PryTile(mapGrid, tile);
- }
-
///
/// Pries a tile in a grid.
///
/// The grid in question.
/// The indices of the tile.
- public void PryTile(IMapGrid mapGrid, Vector2i tile)
+ private void PryTile(IMapGrid mapGrid, Vector2i tile)
{
if (!mapGrid.TryGetTileRef(tile, out var tileRef))
return;
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs
index 37b59f0f6a..d16ff4e002 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Hotspot.cs
@@ -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;
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.LINDA.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.LINDA.cs
index 608d1d3c94..93b73458b1 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.LINDA.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.LINDA.cs
@@ -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)
{
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs
index 887cb95b41..68101922b0 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Monstermos.cs
@@ -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))
diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs
index 2580f4b223..184e0bf9f5 100644
--- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs
+++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs
@@ -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);
diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs
index e9d333244d..4677de532a 100644
--- a/Content.Shared/CCVar/CCVars.cs
+++ b/Content.Shared/CCVar/CCVars.cs
@@ -262,6 +262,13 @@ namespace Content.Shared.CCVar
public static readonly CVarDef MonstermosDepressurization =
CVarDef.Create("atmos.monstermos_depressurization", true, CVar.SERVERONLY);
+ ///
+ /// Whether monstermos explosive depressurization will rip tiles..
+ /// Needs and to be enabled to work.
+ ///
+ public static readonly CVarDef MonstermosRipTiles =
+ CVarDef.Create("atmos.monstermos_rip_tiles", true, CVar.SERVERONLY);
+
///
/// Whether atmos superconduction is enabled.
///
@@ -269,6 +276,14 @@ namespace Content.Shared.CCVar
public static readonly CVarDef Superconduction =
CVarDef.Create("atmos.superconduction", false, CVar.SERVERONLY);
+ ///
+ /// Whether all tiles in an excited group will clear themselves once being exposed to space.
+ /// Similar to , without none of the tile ripping or
+ /// things being thrown around very violently.
+ ///
+ public static readonly CVarDef ExcitedGroupsSpaceIsAllConsuming =
+ CVarDef.Create("atmos.excited_groups_space_is_all_consuming", false, CVar.SERVERONLY);
+
///
/// Maximum time in milliseconds that atmos can take processing.
///
@@ -281,9 +296,6 @@ namespace Content.Shared.CCVar
public static readonly CVarDef AtmosTickRate =
CVarDef.Create("atmos.tickrate", 26f, CVar.SERVERONLY);
- public static readonly CVarDef ExcitedGroupsSpaceIsAllConsuming =
- CVarDef.Create("atmos.excited_groups_space_is_all_consuming", false, CVar.SERVERONLY);
-
/*
* MIDI instruments
*/