Behavior tree - Can anyone tell why my selector is ignoring this sequence change command but not the other?

Doesn’t seem right. They both work the same way…

http://i.imgur.com/7cNQmfr.jpg

If you click on your “State is Combat” node you should see a property called “Observer aborts”. My guess is that this is set to “None” for you and so when “Block breaking” eventually becomes active it is not allowed to run (because “State is Combat” will never abort).

Try setting it to Observer aborts “Self” or “Both” (depending on your requirement) if you haven’t already done so.

If that doesn’t work, a screenshot of your actual BT and the each selector node’s details panel may provide further clues.

Thanks, this mostly gave me what I needed… what does Observer abort do, and what’s the difference between self, both, and low priority?

I wrote a post on that in another answer some time ago, here’s a revised summary though:

Abort self: Stop the current node whenever the decorator condition no longer evaluates to true to allow lower priority nodes (all nodes to the right of the this node) a chance to run assuming their decorators pass.

Abort lower priority: Automatically aborts lower priority nodes whenever the decorator of this node evaluates back to true. So even if the lower priority node isn’t marked as “Abort self” this will force it to abort and start executing its own tasks.

Abort both: Combination of both. i.e.this node will abort whenever its decorator is no longer true and it will also abort lower priority nodes as soon as the decorator evaluates back to true.

The behavior tree uses color coding (blue/purple IIRC) to tell you which nodes will currently be aborted based on your setup.

Frankly I’m yet to come across a usecase where I’ve left “Observer Aborts” to its default value. Maybe they should have used “Both” as the default.