NPC refactor (#10122)
Co-authored-by: metalgearsloth <metalgearsloth@gmail.com>
This commit is contained in:
27
Content.Server/NPC/HTN/Preconditions/PulledPrecondition.cs
Normal file
27
Content.Server/NPC/HTN/Preconditions/PulledPrecondition.cs
Normal file
@@ -0,0 +1,27 @@
|
||||
using Content.Shared.Pulling;
|
||||
|
||||
namespace Content.Server.NPC.HTN.Preconditions;
|
||||
|
||||
/// <summary>
|
||||
/// Checks if the owner is being pulled or not.
|
||||
/// </summary>
|
||||
public sealed class PulledPrecondition : HTNPrecondition
|
||||
{
|
||||
private SharedPullingSystem _pulling = default!;
|
||||
|
||||
[ViewVariables(VVAccess.ReadWrite)] [DataField("isPulled")] public bool IsPulled = true;
|
||||
|
||||
public override void Initialize(IEntitySystemManager sysManager)
|
||||
{
|
||||
base.Initialize(sysManager);
|
||||
_pulling = sysManager.GetEntitySystem<SharedPullingSystem>();
|
||||
}
|
||||
|
||||
public override bool IsMet(NPCBlackboard blackboard)
|
||||
{
|
||||
var owner = blackboard.GetValue<EntityUid>(NPCBlackboard.Owner);
|
||||
|
||||
return IsPulled && _pulling.IsPulled(owner) ||
|
||||
!IsPulled && !_pulling.IsPulled(owner);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user