diff --git a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs index 9fdfc70ac0..a5c47efb8a 100644 --- a/Content.Server/Atmos/EntitySystems/FlammableSystem.cs +++ b/Content.Server/Atmos/EntitySystems/FlammableSystem.cs @@ -292,10 +292,11 @@ namespace Content.Server.Atmos.EntitySystems public void Extinguish(EntityUid uid, FlammableComponent? flammable = null) { - if (!Resolve(uid, ref flammable)) + if (!Resolve(uid, ref flammable) || !flammable.CanExtinguish) return; - if (!flammable.OnFire || !flammable.CanExtinguish) + RemCompDeferred(uid); + if (!flammable.OnFire) return; _adminLogger.Add(LogType.Flammable, $"{ToPrettyString(uid):entity} stopped being on fire damage"); @@ -314,6 +315,7 @@ namespace Content.Server.Atmos.EntitySystems if (!Resolve(uid, ref flammable, false)) // Lavaland Change: SHUT THE FUCK UP FLAMMABLE return; + EnsureComp(uid); if (flammable.AlwaysCombustible) { flammable.FireStacks = Math.Max(flammable.FirestacksOnIgnite, flammable.FireStacks); @@ -407,9 +409,15 @@ namespace Content.Server.Atmos.EntitySystems _timer -= UpdateTime; // TODO: This needs cleanup to take off the crust from TemperatureComponent and shit. - var query = EntityQueryEnumerator(); - while (query.MoveNext(out var uid, out var flammable, out _)) + var query = EntityQueryEnumerator(); + while (query.MoveNext(out var uid, out _)) { + if (!TryComp(uid, out FlammableComponent? flammable)) + { + RemCompDeferred(uid); + continue; + } + // Slowly dry ourselves off if wet. if (flammable.FireStacks < 0) { @@ -420,6 +428,7 @@ namespace Content.Server.Atmos.EntitySystems { _alertsSystem.ClearAlert(uid, flammable.FireAlert); RaiseLocalEvent(uid, new MoodRemoveEffectEvent("OnFire")); + RemCompDeferred(uid); continue; } diff --git a/Content.Shared/Atmos/Components/OnFireComponent.cs b/Content.Shared/Atmos/Components/OnFireComponent.cs new file mode 100644 index 0000000000..141aa4acd5 --- /dev/null +++ b/Content.Shared/Atmos/Components/OnFireComponent.cs @@ -0,0 +1,6 @@ +using Robust.Shared.GameStates; + +namespace Content.Shared.Atmos.Components; + +[RegisterComponent, NetworkedComponent] +public sealed partial class OnFireComponent : Component { }