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 */