Closes https://github.com/ppy/osu/issues/21732.
While the problem of multiple judgements in one frame and ordering of
`RevertResult()` calls as described in the issue is a real one, this
commit is a bit of a sidestep of the entire issue.
The idea here that while *snapshots* of instantaneous combo values are
susceptible to such ordering foibles on revert, *deltas* are not - and
such, when deltas are using to update the combo counts on revert,
ordering stops mattering so much.
I can't mentally figure out *what* is causing the issue here, but in the
case where `prepareDrawables` is called from
`JudgementBody.OnSkinChanged` (only happens in a non-pooled scenario),
things go very wrong.
I think a smell test is enough for anyone to agree that the flow was
very bad. Removing this call doesn't seem to cause any issues.
`runAnimation` should always be called in `PrepareForUse` (both pooled
and non-pooled scenarios) so things should still always be in a correct
state.
Closes#29398.
Previously, some judgement results were not reverted
when the source DHO is not alive (e.g. frames skipped in editor).
Now, all results are reverted in the exact reverse order.