temperature reset on rejuvenate (#19142)
Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user