diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs index 4693761b33..df9fbd7c1e 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.CVars.cs @@ -15,6 +15,7 @@ namespace Content.Server.Atmos.EntitySystems public bool MonstermosRipTiles { get; private set; } public bool GridImpulse { get; private set; } public bool Superconduction { get; private set; } + public bool ExcitedGroups { get; private set; } public bool ExcitedGroupsSpaceIsAllConsuming { get; private set; } public float AtmosMaxProcessTime { get; private set; } public float AtmosTickRate { get; private set; } @@ -31,6 +32,7 @@ namespace Content.Server.Atmos.EntitySystems _cfg.OnValueChanged(CCVars.Superconduction, value => Superconduction = value, true); _cfg.OnValueChanged(CCVars.AtmosMaxProcessTime, value => AtmosMaxProcessTime = value, true); _cfg.OnValueChanged(CCVars.AtmosTickRate, value => AtmosTickRate = value, true); + _cfg.OnValueChanged(CCVars.ExcitedGroups, value => ExcitedGroups = value, true); _cfg.OnValueChanged(CCVars.ExcitedGroupsSpaceIsAllConsuming, value => ExcitedGroupsSpaceIsAllConsuming = value, true); } } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.LINDA.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.LINDA.cs index 12c7179a45..2629bb4d33 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.LINDA.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.LINDA.cs @@ -38,7 +38,7 @@ namespace Content.Server.Atmos.EntitySystems var shouldShareAir = false; - if (tile.ExcitedGroup != null && enemyTile.ExcitedGroup != null) + if (ExcitedGroups && tile.ExcitedGroup != null && enemyTile.ExcitedGroup != null) { if (tile.ExcitedGroup != enemyTile.ExcitedGroup) { @@ -53,21 +53,24 @@ namespace Content.Server.Atmos.EntitySystems AddActiveTile(gridAtmosphere, enemyTile); } - var excitedGroup = tile.ExcitedGroup; - excitedGroup ??= enemyTile.ExcitedGroup; - - if (excitedGroup == null) + if (ExcitedGroups) { - excitedGroup = new ExcitedGroup(); - gridAtmosphere.ExcitedGroups.Add(excitedGroup); + var excitedGroup = tile.ExcitedGroup; + excitedGroup ??= enemyTile.ExcitedGroup; + + if (excitedGroup == null) + { + excitedGroup = new ExcitedGroup(); + gridAtmosphere.ExcitedGroups.Add(excitedGroup); + } + + if (tile.ExcitedGroup == null) + ExcitedGroupAddTile(excitedGroup, tile); + + if(enemyTile.ExcitedGroup == null) + ExcitedGroupAddTile(excitedGroup, enemyTile); } - if (tile.ExcitedGroup == null) - ExcitedGroupAddTile(excitedGroup, tile); - - if(enemyTile.ExcitedGroup == null) - ExcitedGroupAddTile(excitedGroup, enemyTile); - shouldShareAir = true; } @@ -102,7 +105,7 @@ namespace Content.Server.Atmos.EntitySystems if (ConsiderSuperconductivity(gridAtmosphere, tile, true)) remove = false; - if(tile.ExcitedGroup == null && remove) + if(ExcitedGroups && tile.ExcitedGroup == null && remove) RemoveActiveTile(gridAtmosphere, tile); } diff --git a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs index 184e0bf9f5..db87ed7c10 100644 --- a/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs +++ b/Content.Server/Atmos/EntitySystems/AtmosphereSystem.Processing.cs @@ -281,7 +281,8 @@ namespace Content.Server.Atmos.EntitySystems } atmosphere.ProcessingPaused = false; - atmosphere.State = AtmosphereProcessingState.ExcitedGroups; + // Next state depends on whether excited groups are enabled or not. + atmosphere.State = ExcitedGroups ? AtmosphereProcessingState.ExcitedGroups : AtmosphereProcessingState.HighPressureDelta; continue; case AtmosphereProcessingState.ExcitedGroups: if (!ProcessExcitedGroups(atmosphere)) diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index 966377ae77..3b2091492c 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -291,7 +291,6 @@ namespace Content.Shared.CCVar public static readonly CVarDef AtmosGridImpulse = CVarDef.Create("atmos.grid_impulse", false, CVar.SERVERONLY); - /// /// Whether atmos superconduction is enabled. /// @@ -299,10 +298,17 @@ namespace Content.Shared.CCVar public static readonly CVarDef Superconduction = CVarDef.Create("atmos.superconduction", false, CVar.SERVERONLY); + /// + /// Whether excited groups will be processed and created. + /// + public static readonly CVarDef ExcitedGroups = + CVarDef.Create("atmos.excited_groups", true, 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. + /// Needs to be enabled to work. /// public static readonly CVarDef ExcitedGroupsSpaceIsAllConsuming = CVarDef.Create("atmos.excited_groups_space_is_all_consuming", false, CVar.SERVERONLY);