Modify damage logging. (#5579)

This commit is contained in:
Leon Friedrich
2021-11-29 02:34:44 +13:00
committed by GitHub
parent b807250021
commit 0de4b7bc9f
28 changed files with 265 additions and 62 deletions

View File

@@ -1,10 +1,12 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Content.Server.Administration.Logs;
using Content.Server.Alert;
using Content.Server.Atmos.Components;
using Content.Server.Atmos.EntitySystems;
using Content.Server.Temperature.Components;
using Content.Shared.Administration.Logs;
using Content.Shared.Alert;
using Content.Shared.Damage;
using Content.Shared.FixedPoint;
@@ -17,6 +19,7 @@ namespace Content.Server.Temperature.Systems
{
[Dependency] private readonly DamageableSystem _damageableSystem = default!;
[Dependency] private readonly AtmosphereSystem _atmosphereSystem = default!;
[Dependency] private readonly AdminLogSystem _logSystem = default!;
/// <summary>
/// All the components that will have their damage updated at the end of the tick.
@@ -160,17 +163,34 @@ namespace Content.Server.Temperature.Systems
if (temperature.CurrentTemperature >= temperature.HeatDamageThreshold)
{
if (!temperature.TakingDamage)
{
_logSystem.Add(LogType.Temperature, $"{temperature.Owner} started taking high temperature damage");
temperature.TakingDamage = true;
}
var diff = Math.Abs(temperature.CurrentTemperature - temperature.HeatDamageThreshold);
var tempDamage = c / (1 + a * Math.Pow(Math.E, -heatK * diff)) - y;
_damageableSystem.TryChangeDamage(uid, temperature.HeatDamage * tempDamage);
}
else if (temperature.CurrentTemperature <= temperature.ColdDamageThreshold)
{
if (!temperature.TakingDamage)
{
_logSystem.Add(LogType.Temperature, $"{temperature.Owner} started taking low temperature damage");
temperature.TakingDamage = true;
}
var diff = Math.Abs(temperature.CurrentTemperature - temperature.ColdDamageThreshold);
var tempDamage =
Math.Sqrt(diff * (Math.Pow(temperature.DamageCap.Double(), 2) / temperature.ColdDamageThreshold));
_damageableSystem.TryChangeDamage(uid, temperature.ColdDamage * tempDamage);
}
else if (temperature.TakingDamage)
{
_logSystem.Add(LogType.Temperature, $"{temperature.Owner} stopped taking temperature damage");
temperature.TakingDamage = false;
}
}
private void OnTemperatureChangeAttempt(EntityUid uid, TemperatureProtectionComponent component, ModifyChangedTemperatureEvent args)