@Gankra On a related note, you might be amused to know:
The line `char.grit.gotoAndStop(char.grit.currentFrame+(1-char.grit.currentFrame)/6);` has a specific bug that led us to some emulation fixes in Ruffle. That line results in attempting to call gotoAndStop(62.666666666666664) and similar decimal values, which flash - for some reason - interprets as a STRING, looking for a labelled frame named "62.666666666666664". Nowadays going to an nonexistent label just throws an error, but in janky swfs from 2009 it instead silently goes to frame 1.
The result in flash was that the grit vial empties instantly instead of interpolating it for a few frames. The result in Ruffle is that the game locked up, until we figured out that old SWF versions had different behaviour and how to emulate it.
https://github.com/ruffle-rs/ruffle/issues/8954