While this didnt work it did tell me what was wrong, the first node never changes status, its the second node that does. Which apparently does not trigger the conditional abort, which makes sense. I can fix this now, thanks!Your conditional abort should be set to "self" instead of "lower priority" I think. In this tree, you're telling your second sub-tree (the "go to workplace" one) to be interrupted whenever any node of your first sub-tree (the "is storage full" one) changes status. What it does right now, since "idle" does nothing at all, and nothing else happens, is constantly re-evaluate "is storage full" without noticing any change, so nothing gets aborted anyway and your NPC keeps twiddling its virtual thumbs.
Makes sense, I opted for a more performant solution in the end. Its messier but will only run the check every X seconds instead of every tickWelcome!
Indeed conditional aborts check only conditional nodes, I think (needs to be confirmed but that's how I understand it), so your "is storage full" conditional needs to change status in order to trigger a "self" conditional abort located in the sequence containing it.
Welcome!
Indeed conditional aborts check only conditional nodes, I think (needs to be confirmed but that's how I understand it), so your "is storage full" conditional needs to change status in order to trigger a "self" conditional abort located in the sequence containing it.
Conditional aborts work by triggering when the status changes, not only when the task returns success. Looking at your screenshot it looks like your left branch returned failure and Is Storage Full / Can Find Storage Source continue to return their same status so the abort never triggers.
In cases where you need more direct control over aborts you should use the interrupt and perform interruption tasks. This gives you direct control over when to do the abort. The Mini Gauntlet (or RTS sample project) has an example of these interruptions.
Yes, you can use the Stacked Conditional task.Is there some way to make a conditional abort evaluate all children before triggering? Meaning if I have 3 conditional children in the sequence, the conditional abort only triggers if all 3 return success (if the last return was a failure).
Yes, you can use the Stacked Conditional task.
I just tested the stacked conditional with dynamic variables and it worked. Are you using the fast enter to playmode? If so it could be related to this and I'll send you a fix.
I just tested the stacked conditional with dynamic variables and it worked. Are you using the fast enter to playmode? If so it could be related to this and I'll send you a fix.
Can you send me a small repro scene so I can take a look at it? The only other thing that I can think of is that the dynamic variable type is different between the tasks so then it won't be shared.