forked from SpaceStation14-Shenanigans/Monolith
Added Pain Numbness Trait (#34538)
* added pain-numbness component and system * added numb as a trait that pulls the pain numbness component * removed new event as mob threshold event as already being fired * checked for MobThresholdsComponent first before running VerifyThresholds * refacted force say to using LocalizedDatasetPrototype and added numb messages * added severity check alert * added comment for BeforeForceSayEvent * removed space formatting * changed Cancelled to CancelUpdate, fixed spacing and added two more damage-force-say-numb * changed prefix damage-force-say-numb to 5 (whoops)
This commit is contained in:
@@ -0,0 +1,16 @@
|
||||
using Content.Shared.Dataset;
|
||||
using Robust.Shared.GameStates;
|
||||
using Robust.Shared.Prototypes;
|
||||
|
||||
namespace Content.Shared.Traits.Assorted;
|
||||
|
||||
[RegisterComponent, NetworkedComponent]
|
||||
public sealed partial class PainNumbnessComponent : Component
|
||||
{
|
||||
/// <summary>
|
||||
/// The fluent string prefix to use when picking a random suffix
|
||||
/// This is only active for those who have the pain numbness component
|
||||
/// </summary>
|
||||
[DataField]
|
||||
public ProtoId<LocalizedDatasetPrototype> ForceSayNumbDataset = "ForceSayNumbDataset";
|
||||
}
|
||||
@@ -0,0 +1,46 @@
|
||||
using Content.Shared.Damage.Events;
|
||||
using Content.Shared.Mobs.Components;
|
||||
using Content.Shared.Mobs.Events;
|
||||
using Content.Shared.Mobs.Systems;
|
||||
|
||||
namespace Content.Shared.Traits.Assorted;
|
||||
|
||||
public sealed class PainNumbnessSystem : EntitySystem
|
||||
{
|
||||
[Dependency] private readonly MobThresholdSystem _mobThresholdSystem = default!;
|
||||
|
||||
public override void Initialize()
|
||||
{
|
||||
SubscribeLocalEvent<PainNumbnessComponent, ComponentInit>(OnComponentInit);
|
||||
SubscribeLocalEvent<PainNumbnessComponent, ComponentRemove>(OnComponentRemove);
|
||||
SubscribeLocalEvent<PainNumbnessComponent, BeforeForceSayEvent>(OnChangeForceSay);
|
||||
SubscribeLocalEvent<PainNumbnessComponent, BeforeAlertSeverityCheckEvent>(OnAlertSeverityCheck);
|
||||
}
|
||||
|
||||
private void OnComponentRemove(EntityUid uid, PainNumbnessComponent component, ComponentRemove args)
|
||||
{
|
||||
if (!HasComp<MobThresholdsComponent>(uid))
|
||||
return;
|
||||
|
||||
_mobThresholdSystem.VerifyThresholds(uid);
|
||||
}
|
||||
|
||||
private void OnComponentInit(EntityUid uid, PainNumbnessComponent component, ComponentInit args)
|
||||
{
|
||||
if (!HasComp<MobThresholdsComponent>(uid))
|
||||
return;
|
||||
|
||||
_mobThresholdSystem.VerifyThresholds(uid);
|
||||
}
|
||||
|
||||
private void OnChangeForceSay(Entity<PainNumbnessComponent> ent, ref BeforeForceSayEvent args)
|
||||
{
|
||||
args.Prefix = ent.Comp.ForceSayNumbDataset;
|
||||
}
|
||||
|
||||
private void OnAlertSeverityCheck(Entity<PainNumbnessComponent> ent, ref BeforeAlertSeverityCheckEvent args)
|
||||
{
|
||||
if (args.CurrentAlert == "HumanHealth")
|
||||
args.CancelUpdate = true;
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user