Files
tbd-station-14/Content.Server/_Offbrand/Wounds/ShockGaspThresholdsSystem.cs
Janet Blackquill 5fa17e22a1 De-MPL Offbrand
2025-09-27 22:43:24 -04:00

47 lines
1.4 KiB
C#

using System.Linq;
using Content.Server.Chat.Systems;
using Content.Shared._Offbrand.Wounds;
namespace Content.Server._Offbrand.Wounds;
public sealed class ShockGaspThresholdsSystem : EntitySystem
{
[Dependency] private readonly ChatSystem _chat = default!;
[Dependency] private readonly PainSystem _pain = default!;
public override void Initialize()
{
base.Initialize();
SubscribeLocalEvent<ShockGaspThresholdsComponent, AfterShockChangeEvent>(OnAfterShockChange);
}
private void OnAfterShockChange(Entity<ShockGaspThresholdsComponent> ent, ref AfterShockChangeEvent args)
{
var shock = _pain.GetShock(ent.Owner);
var message = ent.Comp.MessageThresholds.HighestMatch(shock);
if (message == ent.Comp.CurrentMessage)
return;
var previousMessage = ent.Comp.CurrentMessage;
ent.Comp.CurrentMessage = message;
Dirty(ent);
if (previousMessage is { } previous)
{
var previousKey = ent.Comp.MessageThresholds.FirstOrDefault(x => x.Value == previous).Key;
var currentKey = ent.Comp.MessageThresholds.FirstOrDefault(x => x.Value == message).Key;
if (previousKey >= currentKey)
{
return;
}
}
if (message is { } msg)
_chat.TryEmoteWithChat(ent.Owner, msg, ignoreActionBlocker: true);
}
}