JukeOperator.cs 1.0 KB

12345678910111213141516171819202122232425262728293031
  1. using Content.Server.NPC.Components;
  2. namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators.Combat;
  3. public sealed partial class JukeOperator : HTNOperator, IHtnConditionalShutdown
  4. {
  5. [Dependency] private readonly IEntityManager _entManager = default!;
  6. [DataField("jukeType")]
  7. public JukeType JukeType = JukeType.AdjacentTile;
  8. [DataField("shutdownState")]
  9. public HTNPlanState ShutdownState { get; private set; } = HTNPlanState.PlanFinished;
  10. public override void Startup(NPCBlackboard blackboard)
  11. {
  12. base.Startup(blackboard);
  13. var juke = _entManager.EnsureComponent<NPCJukeComponent>(blackboard.GetValue<EntityUid>(NPCBlackboard.Owner));
  14. juke.JukeType = JukeType;
  15. }
  16. public override HTNOperatorStatus Update(NPCBlackboard blackboard, float frameTime)
  17. {
  18. return HTNOperatorStatus.Finished;
  19. }
  20. public void ConditionalShutdown(NPCBlackboard blackboard)
  21. {
  22. _entManager.RemoveComponent<NPCJukeComponent>(blackboard.GetValue<EntityUid>(NPCBlackboard.Owner));
  23. }
  24. }