make fire not burn through hardsuits (#27161)

* add FireProtection system and event

* minor optimisation + make flammable use fire protection event

* add fire protection values to some things, nerf firesuit heat resistance

* bruh

* unrevert laser nerfs, make elite hardsuit fully fireproof

---------

Co-authored-by: deltanedas <@deltanedas:kde.org>
This commit is contained in:
deltanedas
2024-05-09 07:12:48 +00:00
committed by GitHub
parent b96ed726f1
commit cd92046966
10 changed files with 109 additions and 12 deletions

View File

@@ -0,0 +1,33 @@
using Content.Shared.Inventory;
namespace Content.Shared.Atmos;
/// <summary>
/// Raised on a burning entity to check its fire protection.
/// Damage taken is multiplied by the final amount, but not temperature.
/// TemperatureProtection is needed for that.
/// </summary>
[ByRefEvent]
public sealed class GetFireProtectionEvent : EntityEventArgs, IInventoryRelayEvent
{
public SlotFlags TargetSlots { get; } = ~SlotFlags.POCKET;
/// <summary>
/// What to multiply the fire damage by.
/// If this is 0 then it's ignored
/// </summary>
public float Multiplier;
public GetFireProtectionEvent()
{
Multiplier = 1f;
}
/// <summary>
/// Reduce fire damage taken by a percentage.
/// </summary>
public void Reduce(float by)
{
Multiplier -= by;
}
}