If you create a custom task using the MoveToLocationOrActor node, that node will not be aborted if a decorator result change occurs, regardless if the abort mode is “self” or “lower”.
The only way I could find to abort the task was to add a BBKey boolean to it and check it during “Tick”, using the “End Task” node on the output of the MoveTo node’s “Async Task Proxy” output pin.
In cases where a decorator is attached directly to the custom move node (“self” abort), workarounds using a service are somewhat feasible, but for “lower” or “both” cases the management of bools to be checked becomes extremely unwieldy.
Any ideas on how to work around this, or when a fix might be coming? I need that specific node, since other forms of movement apparently are unable to deal with partial paths.
In your Decorator blueprint, you can look under the Class Defaults section, and you’ll see the Observer Aborts dropdown.
There is currently a bug in, UE-32077 for the fact that Observer Aborts will be ignored if it is set in the Behavior Tree, but it seems to be working if set in the Decorator blueprint itself.
Thanks , that’s great to know. I was wondering already why my own decorators wouldn’t abort tasks properly.
In this specific case however, it is one of the pre-built decorators (the ‘Blackboard’ check one) that come with the engine. It aborts all standard tasks just fine, including most custom tasks, except for the one using the MoveToLocationOrActor node. Could you please look into that problem as well?
I’ve tested this, and have noticed similar behavior. In my original test, I was using MoveToLocationOrActor, so it’s likely that this is also stemming from that same bug report I mentioned above. UE-32077. The fix for this is scheduled for release in a later version, but when the fix is available, feel free to come back to this post and let me know if you’re still seeing it occur.