diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.CVars.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.CVars.cs index 1f03109333..3332d3a4f5 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.CVars.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.CVars.cs @@ -11,7 +11,8 @@ public sealed partial class ExplosionSystem : EntitySystem public int ThrowLimit { get; private set; } public bool SleepNodeSys { get; private set; } public bool IncrementalTileBreaking { get; private set; } - public int SingleTickAreaLimit {get; private set; } + public int SingleTickAreaLimit { get; private set; } + public bool CanCreateVacuum { get; private set; } private void SubscribeCvars() { @@ -23,5 +24,6 @@ public sealed partial class ExplosionSystem : EntitySystem Subs.CVar(_cfg, CCVars.ExplosionMaxProcessingTime, value => MaxProcessingTime = value, true); Subs.CVar(_cfg, CCVars.ExplosionIncrementalTileBreaking, value => IncrementalTileBreaking = value, true); Subs.CVar(_cfg, CCVars.ExplosionSingleTickAreaLimit, value => SingleTickAreaLimit = value, true); + Subs.CVar(_cfg, CCVars.ExplosionCanCreateVacuum, value => CanCreateVacuum = value, true); } } diff --git a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs index 6e100fe656..a93157a175 100644 --- a/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs +++ b/Content.Server/Explosion/EntitySystems/ExplosionSystem.Processing.cs @@ -1,4 +1,5 @@ using System.Numerics; +using Content.Server.Atmos.EntitySystems; using Content.Shared.CCVar; using Content.Shared.Damage; using Content.Shared.Explosion; @@ -16,7 +17,6 @@ using Robust.Shared.Random; using Robust.Shared.Timing; using Robust.Shared.Utility; using TimedDespawnComponent = Robust.Shared.Spawners.TimedDespawnComponent; -using Content.Server.Atmos.EntitySystems; namespace Content.Server.Explosion.EntitySystems; @@ -490,7 +490,9 @@ public sealed partial class ExplosionSystem if (_tileDefinitionManager[tileRef.Tile.TypeId] is not ContentTileDefinition tileDef) return; - if (tileDef.MapAtmosphere) + if (!CanCreateVacuum) + canCreateVacuum = false; + else if (tileDef.MapAtmosphere) canCreateVacuum = true; // is already a vacuum. int tileBreakages = 0; diff --git a/Content.Shared/CCVar/CCVars.cs b/Content.Shared/CCVar/CCVars.cs index cbc035140f..36de8857fb 100644 --- a/Content.Shared/CCVar/CCVars.cs +++ b/Content.Shared/CCVar/CCVars.cs @@ -1,3 +1,4 @@ +using Content.Shared.Maps; using Robust.Shared; using Robust.Shared.Configuration; @@ -905,6 +906,13 @@ namespace Content.Shared.CCVar public static readonly CVarDef ExplosionSingleTickAreaLimit = CVarDef.Create("explosion.single_tick_area_limit", 400, CVar.SERVERONLY); + /// + /// Whether or not explosions are allowed to create tiles that have + /// set to true. + /// + public static readonly CVarDef ExplosionCanCreateVacuum = + CVarDef.Create("explosion.can_create_vacuum", true, CVar.SERVERONLY); + /* * Radiation */ @@ -1994,7 +2002,7 @@ namespace Content.Shared.CCVar // Clippy! public static readonly CVarDef TippyEntity = CVarDef.Create("tippy.entity", "Tippy", CVar.SERVER | CVar.REPLICATED); - + /* * DEBUG */