PickRandomRotationOperator.cs 680 B

1234567891011121314151617181920212223
  1. using System.Threading;
  2. using System.Threading.Tasks;
  3. using Robust.Shared.Random;
  4. namespace Content.Server.NPC.HTN.PrimitiveTasks.Operators;
  5. public sealed partial class PickRandomRotationOperator : HTNOperator
  6. {
  7. [Dependency] private readonly IRobustRandom _random = default!;
  8. [DataField("targetKey")]
  9. public string TargetKey = "RotateTarget";
  10. public override async Task<(bool Valid, Dictionary<string, object>? Effects)> Plan(NPCBlackboard blackboard,
  11. CancellationToken cancelToken)
  12. {
  13. var rotation = _random.NextAngle();
  14. return (true, new Dictionary<string, object>()
  15. {
  16. {TargetKey, rotation}
  17. });
  18. }
  19. }