Since all of that is now fixed, I have only one small reservation: do you think it would still be possible to trigger the bug with frame-perfect timing, by hitting Terra with Stop or having someone else enter Quick just as the Morph timer ran out, but before Revert could be executed? I can't make it happen during testing, but I don't have the patience for testing with frame-perfect input. This is the difference between "fixed" and "well hidden" that will gnaw at my conscience late at night.
given C2/4BB2 is being made *more* permissive by the suggested patch, i hope this would not be an issue.
what i think could happen is the reverse:
- Morph timer is near running down
- cast Flare on a monster (nice long animation, good for testing)
- monster queues a counter, let's say a Stop spell
- during Flare animation, Morph timer expires, queues Revert
- you get Stopped
- more permissive C2/4BB2 allows Revert to go through, even though the character is now stopped.
- ..........does that bother us?
i'd actually tested the above, but with a periodic damage/healing timer in place of Morph timer, so it's not purely theoretical. C2/4BDD indeed tried to execute the Regen "turn", but it didn't heal me, i believe because of C2/5018 exiting.
afaik, the Revert command has no such exit. which is good from the standpoint of not having the reversion disappear into a black hole. but a little bad from the standpoint that we're very briefly waiving the time stoppage to complete the command.
------------
as for waiting for the Revert on Sleep/Freeze, i've considered having C2/1211 check for those statuses, and if so, refusing to perform the final Morph tick (i.e. one where the deduction exceeds the current timer). this should be effectively pretty similar, without trying to wrangle the disconnect between expiration and reversion that other coding approaches might have.
yes, it's arbitrary to do every tick except the last. but in my mind, no more arbitrary than a Morph-expired character somehow still having the status. (pardon the repeat complaint. ;) )
note that because this change would probably be done _instead_ of relaxing C2/4BB2, i wonder if it might allow the worse scenario you asked about above.