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.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<TemperatureComponent, OnTemperatureChangeEvent>(EnqueueDamage);
SubscribeLocalEvent<TemperatureComponent, AtmosExposedUpdateEvent>(OnAtmosExposedUpdate);
SubscribeLocalEvent<TemperatureComponent, RejuvenateEvent>(OnRejuvenate);
SubscribeLocalEvent<AlertsComponent, OnTemperatureChangeEvent>(ServerAlert);
SubscribeLocalEvent<TemperatureProtectionComponent, InventoryRelayedEvent<ModifyChangedTemperatureEvent>>(
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<DamageableComponent>(uid))
if (!HasComp<DamageableComponent>(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;
}
}