EquipOperator.cs 929 B

123456789101112131415161718192021222324252627282930
  1. using Content.Server.Hands.Systems;
  2. namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Interactions;
  3. public sealed partial class EquipOperator : HTNOperator
  4. {
  5. [Dependency] private readonly IEntityManager _entManager = default!;
  6. [DataField("target")]
  7. public string Target = "Target";
  8. public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime)
  9. {
  10. if (!blackboard.TryGetValue<EntityUid>(Target, out var target, _entManager))
  11. {
  12. return HTNOperatorStatus.Failed;
  13. }
  14. var owner = blackboard.GetValue<EntityUid>(NPCBlackboard.Owner);
  15. var handsSystem = _entManager.System<HandsSystem>();
  16. // TODO: As elsewhere need some generic interaction cooldown system
  17. if (handsSystem.TryPickup(owner, target))
  18. {
  19. return HTNOperatorStatus.Finished;
  20. }
  21. return HTNOperatorStatus.Failed;
  22. }
  23. }