]> git.smokeofanarchy.ru Git - space-station-14.git/commitdiff
New HTN precondition: has status effect (#39781)
authorDeserty0 <86846189+Deserty0@users.noreply.github.com>
Tue, 7 Oct 2025 18:53:25 +0000 (04:53 +1000)
committerGitHub <noreply@github.com>
Tue, 7 Oct 2025 18:53:25 +0000 (18:53 +0000)
* Create HasStatusEffectPrecondition.cs

* Update HasStatusEffectPrecondition.cs

* ok now it works

* Update HasStatusEffectPrecondition.cs

Content.Server/NPC/HTN/Preconditions/HasStatusEffectPrecondition.cs [new file with mode: 0644]

diff --git a/Content.Server/NPC/HTN/Preconditions/HasStatusEffectPrecondition.cs b/Content.Server/NPC/HTN/Preconditions/HasStatusEffectPrecondition.cs
new file mode 100644 (file)
index 0000000..d11a99e
--- /dev/null
@@ -0,0 +1,28 @@
+using Content.Shared.StatusEffectNew;
+using Robust.Shared.Prototypes;
+
+namespace Content.Server.NPC.HTN.Preconditions;
+
+/// <summary>
+/// Returns true if entity have specified status effect
+/// </summary>
+public sealed partial class HasStatusEffectPrecondition : HTNPrecondition
+{
+    private StatusEffectsSystem _statusEffects = default!;
+
+    [DataField(required: true)]
+    public EntProtoId StatusEffect;
+
+    public override void Initialize(IEntitySystemManager sysManager)
+    {
+        base.Initialize(sysManager);
+        _statusEffects =  sysManager.GetEntitySystem<StatusEffectsSystem>();
+    }
+
+    public override bool IsMet(NPCBlackboard blackboard)
+    {
+        var owner = blackboard.GetValue<EntityUid>(NPCBlackboard.Owner);
+
+        return _statusEffects.HasStatusEffect(owner, StatusEffect);
+    }
+}