Behavior trees are nifty but lack abort ability at two levels.
Firstly is an overall ‘abort (or interrupt) the tree and restart at the top’. This is useful if the AI gets shot at and wants to immediately stop what it was doing and defend.
Second (and better) is a modified version. It would be nifty to have a node type that is an abort stop point. If the sub-tree below the node aborts, the abort causes the AbortStop node to immediately return false. This could impliment the above first example. Then external blueprints could trigger a tree abort possibly with a depth enum such as All, ToAbortStop. In conjunction with this would be a TreeState memento that one could hold onto and restore the tree execution state back to where it was before the abort.
In effect this lets the environment poke the AI as opposed to the AI scanning for external events.
The current alternative is to have a check method that all Tasks call every tick to check for special external state changes and then return false from the Task and then propegate the effective abort up the tree, or use a Abort return from the task. But this is clumsy for a single idea, respond to external environment triggers.
This is all much easier in a State Machine because one can have a state stack and push the current state (and environment), respond to the interruption, and then pop the state back.