idle.yml 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. # Picks a random location for the NPC to move to and idle.
  2. - type: htnCompound
  3. id: IdleCompound
  4. branches:
  5. - tasks:
  6. - !type:HTNPrimitiveTask
  7. operator: !type:WaitOperator
  8. key: IdleTime
  9. preconditions:
  10. - !type:KeyExistsPrecondition
  11. key: IdleTime
  12. # Pick a new spot and wait there.
  13. - preconditions:
  14. - !type:BuckledPrecondition
  15. isBuckled: false
  16. - !type:PulledPrecondition
  17. isPulled: false
  18. tasks:
  19. - !type:HTNPrimitiveTask
  20. operator: !type:PickAccessibleOperator
  21. rangeKey: IdleRange
  22. - !type:HTNPrimitiveTask
  23. operator: !type:MoveToOperator
  24. pathfindInPlanning: false
  25. - !type:HTNPrimitiveTask
  26. operator: !type:RandomOperator
  27. targetKey: IdleTime
  28. minKey: MinimumIdleTime
  29. maxKey: MaximumIdleTime
  30. - !type:HTNPrimitiveTask
  31. operator: !type:WaitOperator
  32. key: IdleTime
  33. preconditions:
  34. - !type:KeyExistsPrecondition
  35. key: IdleTime
  36. # Spin to a random rotation and idle.
  37. - type: htnCompound
  38. id: IdleSpinCompound
  39. branches:
  40. - tasks:
  41. - !type:HTNPrimitiveTask
  42. operator: !type:WaitOperator
  43. key: IdleTime
  44. preconditions:
  45. - !type:KeyExistsPrecondition
  46. key: IdleTime
  47. # Pick a new angle and spin there
  48. - tasks:
  49. - !type:HTNPrimitiveTask
  50. operator: !type:PickRandomRotationOperator
  51. targetKey: RotateTarget
  52. - !type:HTNPrimitiveTask
  53. operator: !type:RotateToTargetOperator
  54. targetKey: RotateTarget
  55. - !type:HTNPrimitiveTask
  56. operator: !type:RandomOperator
  57. targetKey: IdleTime
  58. minKey: MinimumIdleTime
  59. maxKey: MaximumIdleTime
  60. - !type:HTNPrimitiveTask
  61. operator: !type:WaitOperator
  62. key: IdleTime
  63. preconditions:
  64. - !type:KeyExistsPrecondition
  65. key: IdleTime