diff --git a/Content.Server/Temperature/Systems/TemperatureSystem.cs b/Content.Server/Temperature/Systems/TemperatureSystem.cs index 6e422765e0..9c56754861 100644 --- a/Content.Server/Temperature/Systems/TemperatureSystem.cs +++ b/Content.Server/Temperature/Systems/TemperatureSystem.cs @@ -6,9 +6,11 @@ using Content.Server.Atmos.Components; using Content.Server.Atmos.EntitySystems; using Content.Server.Temperature.Components; using Content.Shared.Alert; +using Content.Shared.Atmos; using Content.Shared.Damage; using Content.Shared.Database; using Content.Shared.Inventory; +using Content.Shared.Rejuvenate; using Content.Shared.Temperature; using Robust.Server.GameObjects; @@ -37,6 +39,7 @@ namespace Content.Server.Temperature.Systems { SubscribeLocalEvent(EnqueueDamage); SubscribeLocalEvent(OnAtmosExposedUpdate); + SubscribeLocalEvent(OnRejuvenate); SubscribeLocalEvent(ServerAlert); SubscribeLocalEvent>( OnTemperatureChangeAttempt); @@ -66,10 +69,11 @@ namespace Content.Server.Temperature.Systems { MetaDataComponent? metaData = null; - if (Deleted(comp.Owner, metaData) || Paused(comp.Owner, metaData)) + var uid = comp.Owner; + if (Deleted(uid, metaData) || Paused(uid, metaData)) continue; - ChangeDamage(comp.Owner, comp); + ChangeDamage(uid, comp); } ShouldUpdateDamage.Clear(); @@ -77,14 +81,14 @@ namespace Content.Server.Temperature.Systems public void ForceChangeTemperature(EntityUid uid, float temp, TemperatureComponent? temperature = null) { - if (Resolve(uid, ref temperature)) - { - float lastTemp = temperature.CurrentTemperature; - float delta = temperature.CurrentTemperature - temp; - temperature.CurrentTemperature = temp; - RaiseLocalEvent(uid, new OnTemperatureChangeEvent(temperature.CurrentTemperature, lastTemp, delta), - true); - } + if (!Resolve(uid, ref temperature)) + return; + + float lastTemp = temperature.CurrentTemperature; + float delta = temperature.CurrentTemperature - temp; + temperature.CurrentTemperature = temp; + RaiseLocalEvent(uid, new OnTemperatureChangeEvent(temperature.CurrentTemperature, lastTemp, delta), + true); } public void ChangeHeat(EntityUid uid, float heatAmount, bool ignoreHeatResistance = false, @@ -126,6 +130,11 @@ namespace Content.Server.Temperature.Systems ChangeHeat(uid, heat * temperature.AtmosTemperatureTransferEfficiency, temperature: temperature); } + private void OnRejuvenate(EntityUid uid, TemperatureComponent comp, RejuvenateEvent args) + { + ForceChangeTemperature(uid, Atmospherics.T20C, comp); + } + private void ServerAlert(EntityUid uid, AlertsComponent status, OnTemperatureChangeEvent args) { switch (args.CurrentTemperature) @@ -174,7 +183,7 @@ namespace Content.Server.Temperature.Systems private void ChangeDamage(EntityUid uid, TemperatureComponent temperature) { - if (!EntityManager.HasComponent(uid)) + if (!HasComp(uid)) return; // See this link for where the scaling func comes from: @@ -192,8 +201,7 @@ namespace Content.Server.Temperature.Systems { if (!temperature.TakingDamage) { - _adminLogger.Add(LogType.Temperature, - $"{ToPrettyString(temperature.Owner):entity} started taking high temperature damage"); + _adminLogger.Add(LogType.Temperature, $"{ToPrettyString(uid):entity} started taking high temperature damage"); temperature.TakingDamage = true; } @@ -205,8 +213,7 @@ namespace Content.Server.Temperature.Systems { if (!temperature.TakingDamage) { - _adminLogger.Add(LogType.Temperature, - $"{ToPrettyString(temperature.Owner):entity} started taking low temperature damage"); + _adminLogger.Add(LogType.Temperature, $"{ToPrettyString(uid):entity} started taking low temperature damage"); temperature.TakingDamage = true; } @@ -217,8 +224,7 @@ namespace Content.Server.Temperature.Systems } else if (temperature.TakingDamage) { - _adminLogger.Add(LogType.Temperature, - $"{ToPrettyString(temperature.Owner):entity} stopped taking temperature damage"); + _adminLogger.Add(LogType.Temperature, $"{ToPrettyString(uid):entity} stopped taking temperature damage"); temperature.TakingDamage = false; } }