Files
space-station-14/Content.Shared/Traits/Assorted/PainNumbnessSystem.cs
SlamBamActionman d0a784b9e6 Add status effect support to Traits, change PainNumbness to be a status effect (#41646)
* Initial commit

* Review comments

* Jobify

* Prototype(effect)
2025-12-03 11:55:29 +00:00

49 lines
1.9 KiB
C#

using Content.Shared.Damage.Events;
using Content.Shared.Mobs.Components;
using Content.Shared.Mobs.Events;
using Content.Shared.Mobs.Systems;
using Content.Shared.StatusEffectNew;
namespace Content.Shared.Traits.Assorted;
public sealed class PainNumbnessSystem : EntitySystem
{
[Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!;
public override void Initialize()
{
SubscribeLocalEvent<PainNumbnessStatusEffectComponent, StatusEffectAppliedEvent>(OnEffectApplied);
SubscribeLocalEvent<PainNumbnessStatusEffectComponent, StatusEffectRemovedEvent>(OnEffectRemoved);
SubscribeLocalEvent<PainNumbnessStatusEffectComponent, StatusEffectRelayedEvent<BeforeForceSayEvent>>(OnChangeForceSay);
SubscribeLocalEvent<PainNumbnessStatusEffectComponent, StatusEffectRelayedEvent<BeforeAlertSeverityCheckEvent>>(OnAlertSeverityCheck);
}
private void OnEffectApplied(Entity<PainNumbnessStatusEffectComponent> ent, ref StatusEffectAppliedEvent args)
{
if (!HasComp<MobThresholdsComponent>(args.Target))
return;
_mobThresholdSystem.VerifyThresholds(args.Target);
}
private void OnEffectRemoved(Entity<PainNumbnessStatusEffectComponent> ent, ref StatusEffectRemovedEvent args)
{
if (!HasComp<MobThresholdsComponent>(args.Target))
return;
_mobThresholdSystem.VerifyThresholds(args.Target);
}
private void OnChangeForceSay(Entity<PainNumbnessStatusEffectComponent> ent, ref StatusEffectRelayedEvent<BeforeForceSayEvent> args)
{
if (ent.Comp.ForceSayNumbDataset != null)
args.Args.Prefix = ent.Comp.ForceSayNumbDataset.Value;
}
private void OnAlertSeverityCheck(Entity<PainNumbnessStatusEffectComponent> ent, ref StatusEffectRelayedEvent<BeforeAlertSeverityCheckEvent> args)
{
if (args.Args.CurrentAlert == "HumanHealth")
args.Args.CancelUpdate = true;
}
}