Sorry for late reply.
Actualy your first idea is correct. You can use Selector for this, but remeber to make it Dynamic. If the received event is lower in priority (left) than the current Running child, then it will interrupt that child. The whole behaviour tree parading is based on layering behaviours in priorities such as this.
I have attached an image for you for a possible approach.
So in this example, Attack is the highest priority behaviour. If the unit is still attacking, firing a Gather event will not have any meaning, because attack is more important. If though the unity was patroling and we fire a Gather or Attack, since both are more important, Patrol will be interrupted and that other behaviour will start.
Similarily, if the last event is consumed and the relevant behaviour is done, thus the unity has nothing to do, it just stays idle without an event needed for that.
This is what behaviour trees are based upon really 🙂
Let me know if that sounds usefull or not relevant to your situation maybe.
Cheers!
(ps: the guard decorator is mostly there as a resource guard for when using multiple BTs running in the same owner 🙂
In truth there are really countless types of nodes you can create with BTs, especialy decorators. While I have come up with some more, I really dont want to include more as to not be confusing what to use where. Instead I was even thinking of removing some, at least from the main package.)