giles: so suppose we have a group of code id 1 (max 3) and another group id 2 (max 2). suppose the bot complete id 1 successfully on first try, and dies while doing id 2. now the bot will do id 1 again (because it has max 3), then id 2. what i want is it skips id 1 because it already successfully pass that group of code.
Use the "disable previous" flag. I'll re-paste a small sample snippet from post #1 (also be sure to check out the sample profile attached to the first post, it's very useful!

)
Code:
<TrinityMaxDeaths questId="1" max="3" />
<TrinityUseOnce questId="1" id="20" max="2">
<TrinityLog questId="1" output="Now Running A3 Cursed Towers" />
<!-- insert cursed towers profile stuff -->
</TrinityUseOnce>
<TrinityUseOnce questId="1" id="21" max="2" disableprevious="true">
<TrinityLog questId="1" output="Now Running A3 Battlefields" />
<!-- insert battlefields profile stuff -->
</TrinityUseOnce>
<LeaveGame reason="Run is done!" />
Once it reaches ID 21 - that "disableprevious" tag means all previous useonce tags that have EVER been hit *EXCEPT* the one it's currently doing, will be disabled from any further use (so 21 will *NOT* be disabled since that tag is in 21... but tag 20 and any other tags would be disabled).
For example, my code for the tower of the damned lvl1 looks like this:
Code:
Some MoveTos
<!--TrinityUseOnce id="10"-->
BIG chain of MoveTos
<TrinityUseOnce id="8">
A single MoveTo
</TrinityUseOnce>
Some MoveTos
<TrinityUseOnce id="9">
Some MoveTos
</TrinityUseOnce>
Some MoveTos
<!--/TrinityUseOnce-->
Some MoveTos
The id=10 tag does a full run of the external circle (A3CH Style, starting and ending at the WP), 8 and 9 handle the small corridors in the bottom left, the final movetos cover the path from the WP.
Right now if I die inside the id=10, the whole section is skipped. If I use max=2, that won't happen, but say I die after completing the useonce tag, in my way to the stairs, then I'll have to walk the entire outer cycle again, which beats the intend of the UseOnce tag...
I understand there are some scenarios where the UseOnce as it is now is useful (although I can't think of one now that won't work if the id is flagged upon completion instead of the way it is now), but having a <TrinityCompleteOnce> tag that works as awww and I suggested would be really nice to cover cases as the one exposed here.
Also, please take into consideration the idea of the <TrinityAlreadyUsed> tag of my previous post.
Use the disable flag to disable all previously met useonce ID's from being run again. I'm not actually entirely clear what you are trying to do with your sample code, but I think you want to do this;
Code:
Some MoveTos
<TrinityUseOnce id="10" max="3">
BIG chain of MoveTos
<TrinityUseOnce id="8">
A single MoveTo
</TrinityUseOnce>
Some MoveTos
<TrinityUseOnce id="9">
Some MoveTos
</TrinityUseOnce>
Some MoveTos
</TrinityUseOnce>
<TrinityUseOnce id="666" disableprevious="true">
</TrinityUseOnce>
Some MoveTos
So if it dies inside of #10, it can re-do #10 again (but it won't re-do ID 8 if ID 8 has already been done, and it won't re-do ID 9 if ID 9 has already been done, since they have no max).
But once it finished ID 10, it'll hit the "empty" ID 666 - which is simply there to disable all previous ID's - so if it dies after hitting ID 666 - it'll skip ID 10 next time even if it's only done ID 10 once.
NOTE: Currently disableprevious disables *ALL* ID's except the ID listed in that tag. I think I need to change it so it DOESN'T disable parent ID's? Currently, in your above example, if you had a "disableprevious" in ID 9 - it would disable it's "parent" ID 10, too. I think it should always ignore ITSELF, and the parent?
Perhaps I could even add a specific disable tag, eh;
<TrinityDisableUseOnce id="10" />
Would disable ID 10 from ever being done again, that might be a safer way of doing it?
^^ Given all the above, is there still a use for having a... what did you want... specifically a COMPLETED tag? You can kind of do that already, if at the *END* of ID 10 (but still inside ID 10), you did this;
Code:
<TrinityRandomRoll id="123" min="5" max="5" />
^^ That would make Random ID 123 ALWAYS be 5.
Then if you use RandomIf;
Code:
<TrinityIfRandom id="123" result="5">
</TrinityIfRandom>
That will only happen *IF* 123 has been set to 5.