I tried out using flick() for DragonSnot, in an attempt to move the animation to the client. However, I ran into some timing inconsistencies: three times in a row it would take the same number of ticks, then it might take one more or less.
This morning it occurred to me that I'm tracking this using world.time, but that the client is probably rendering it in realtime.
Is that correct?
If so, in games where the animations are coordinated down to the tick, what is probably needed to make flick() work is for the upcoming icon object to be able to report when the animation is actually completed. I was thinking through a callback...but it would actually work better in this case if in each game tick the icon could be checked to see if it had finished animating yet.
Although, in that case maybe I can still handle it manually by just using realtime for my timing calculations.
Darn, I won't be able to play with this until tomorrow!

I'm bumping this up 'cause even with realtime I am not having luck here...any ideas on how I can be sure of the tick when an animation completes?