GAME_CHECK_DROID shouldn't do anything, unless the game is out of synch, now. And should print, if the droid isn't in _exactly_ the same place on all screens.
GAME_BUILD should fix the structure ID of the structure being built. GAME_BUILD and GAME_BUILDFINISHED shouldn't do anything other than that, unless the game is out of synch, now.
Sanity check all use of selectedPlayer. It should be used for deciding how the interface works, not for changing the game state in random places for no good reason...
Fix destroying droid templates. Can probably go out of synch, if destroying a template just before the droid is produced, due to trying to produce an unknown type of droid (so the other players would see the new droid, but the droid owner wouldn't).
Check what validLocation is used for, make sure that putting delivery points under locations where buildings are going to be placed can't cause synch errors.
In destroyStruct, check that psTile->illumination can't affect the game state. Or make it consistent, so all players see the same scorch marks.
Check the researchResult function. Should a message be sent there, and if so, then should wait for it?
***************
* src/order.c *
***************
Just before transporterAddDroid, it changes the droid state directly. Should either not test for selectedPlayer, or should not change the droid state directly. See also: unloadTransporter.