PainNumbnessSystem.cs 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using Content.Shared.Damage.Events;
  2. using Content.Shared.Mobs.Components;
  3. using Content.Shared.Mobs.Events;
  4. using Content.Shared.Mobs.Systems;
  5. namespace Content.Shared.Traits.Assorted;
  6. public sealed class PainNumbnessSystem : EntitySystem
  7. {
  8. [Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!;
  9. public override void Initialize()
  10. {
  11. SubscribeLocalEvent<PainNumbnessComponent, ComponentInit>(OnComponentInit);
  12. SubscribeLocalEvent<PainNumbnessComponent, ComponentRemove>(OnComponentRemove);
  13. SubscribeLocalEvent<PainNumbnessComponent, BeforeForceSayEvent>(OnChangeForceSay);
  14. SubscribeLocalEvent<PainNumbnessComponent, BeforeAlertSeverityCheckEvent>(OnAlertSeverityCheck);
  15. }
  16. private void OnComponentRemove(EntityUid uid, PainNumbnessComponent component, ComponentRemove args)
  17. {
  18. if (!HasComp<MobThresholdsComponent>(uid))
  19. return;
  20. _mobThresholdSystem.VerifyThresholds(uid);
  21. }
  22. private void OnComponentInit(EntityUid uid, PainNumbnessComponent component, ComponentInit args)
  23. {
  24. if (!HasComp<MobThresholdsComponent>(uid))
  25. return;
  26. _mobThresholdSystem.VerifyThresholds(uid);
  27. }
  28. private void OnChangeForceSay(Entity<PainNumbnessComponent> ent, ref BeforeForceSayEvent args)
  29. {
  30. args.Prefix = ent.Comp.ForceSayNumbDataset;
  31. }
  32. private void OnAlertSeverityCheck(Entity<PainNumbnessComponent> ent, ref BeforeAlertSeverityCheckEvent args)
  33. {
  34. if (args.CurrentAlert == "HumanHealth")
  35. args.CancelUpdate = true;
  36. }
  37. }