InContainerPrecondition.cs 864 B

123456789101112131415161718192021222324252627
  1. using Robust.Server.Containers;
  2. namespace Content.Server.NPC.HTN.Preconditions;
  3. /// <summary>
  4. /// Checks if the owner in container or not
  5. /// </summary>
  6. public sealed partial class InContainerPrecondition : HTNPrecondition
  7. {
  8. private ContainerSystem _container = default!;
  9. [ViewVariables(VVAccess.ReadWrite)] [DataField("isInContainer")] public bool IsInContainer = true;
  10. public override void Initialize(IEntitySystemManager sysManager)
  11. {
  12. base.Initialize(sysManager);
  13. _container = sysManager.GetEntitySystem<ContainerSystem>();
  14. }
  15. public override bool IsMet(NPCBlackboard blackboard)
  16. {
  17. var owner = blackboard.GetValue<EntityUid>(NPCBlackboard.Owner);
  18. return IsInContainer && _container.IsEntityInContainer(owner) ||
  19. !IsInContainer && !_container.IsEntityInContainer(owner);
  20. }
  21. }