temperature reset on rejuvenate (#19142)

Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
deltanedas
2023-08-14 23:28:52 +01:00
committed by GitHub
parent 6e6189546c
commit 1edd6e53fb

View File

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