Dynamic instantiation and assignment of External Behavior Trees

Overall I think that you are on the right track. Conditional aborts make a specific type of functionality really easy for a common behavior tree setup but shouldn't be used in absolutely every case that you need to bail out of a branch. In that situation you can use the Interrupt / Perform Interruption tasks. Within your Scriptable Object you could get a reference to the Interrupt decorator and call DoInterrupt manually (this is all that the Perform Interruption task is doing). This will then allow you to decide exactly when to abort, and can issue your own events.
 
Top