A unit's appearance is the flingy its units.dat graphics field points at. Swap the flingy and the look changes, which is the cheapest way to make mobs look varied in an EUD map: keep one unit type and roll a new flingy each round.
There is a trap here. A flingy carries not just the sprite but the movement record - so writing a speed onto a flingy changes the speed of every unit wearing it. Dress a mob in the Marine's flingy and write a speed, and the Marines the player bought move at that speed too.
So the pool of looks a mob may wear must exclude everything the player owns - units sold in a shop, the worker they drive, and buildings too. This is correctness rather than taste, and it is worth checking automatically at build time.
The second trap is quieter. flingy.dat has a movementControl field that decides where the speed comes from: 0 means this record, 2 means iscript.bin. Almost every air flingy is 0, but a lot of ground ones are 2 and ship with topSpeed 1. A mob wearing one of those ignores the speed you wrote completely and crawls.
const fl = TrgUnit(u).flingy; Flingy(fl).movementControl = 0; // \uc774 \uae30\ub85d\uc744 \uae30\uc900\uc73c\ub85c / make this record authoritative Flingy(fl).topSpeed = speed;
This is hard to find from the symptom. If part of your wave is slow and the rest is fine, it is almost certainly this: the slow rounds are the ones that rolled a movementControl 2 flingy.
