I have a question regarding Behivetree.

  1. Editor starts.
  2. PrintHelloBP is executed.
  3. TargetActor is successfully found (e.g., BP_Player).
  4. The HasTarget decorator allows the node to execute.
  5. The MoveTo task inside the HasTarget sequence finishes, and then the following Wait node begins.
  6. During the wait (about 2 seconds in), TargetActor becomes nullptr.
  7. However, the Wait (5s) still completes (because the decorator uses “Observer Aborts: Lower Priority”).

Expected behavior:
Since the HasTarget decorator uses “Lower Priority”, I expected all the subsequent nodes in the same Sequence — including PrintByeBP — to be skipped, and for the tree to restart from the top (starting from PrintHelloBP again).


Actual behavior:
The top-level Sequence continues executing after the Selector, and the next node (PrintByeBP) runs as usual. “Bye” is printed.


:red_question_mark:Question:

So, is this the expected behavior?

My guess is that the Selector returns success, which allows the rest of the Sequence to continue. The sequence that had the HasTarget decorator finishes (because Wait completes), and thus the entire Selector is considered successful.

But I expected that since the HasTarget decorator uses “Lower Priority”, all the nodes under that part of the tree (with the blue border) would be aborted and skipped once TargetActor becomes nullptr.

Did I miss something here?