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(OnEffectApplied); SubscribeLocalEvent(OnEffectRemoved); SubscribeLocalEvent>(OnChangeForceSay); SubscribeLocalEvent>(OnAlertSeverityCheck); } private void OnEffectApplied(Entity ent, ref StatusEffectAppliedEvent args) { if (!HasComp(args.Target)) return; _mobThresholdSystem.VerifyThresholds(args.Target); } private void OnEffectRemoved(Entity ent, ref StatusEffectRemovedEvent args) { if (!HasComp(args.Target)) return; _mobThresholdSystem.VerifyThresholds(args.Target); } private void OnChangeForceSay(Entity ent, ref StatusEffectRelayedEvent args) { if (ent.Comp.ForceSayNumbDataset != null) args.Args.Prefix = ent.Comp.ForceSayNumbDataset.Value; } private void OnAlertSeverityCheck(Entity ent, ref StatusEffectRelayedEvent args) { if (args.Args.CurrentAlert == "HumanHealth") args.Args.CancelUpdate = true; } }