  *  If there is a quiz popup, then the BEGIN_TURN and END_TURN messages are not sent on that turn.
  *  Setting Arrived/Departed sets whether or not the ARRIVED and DEPARTED messages are received, although only the low 24-bits are readable. All bits are used when setting though; if it is set to a nonzero value (whether or not any of the low 24-bits are set), then the message will be sent, and if set to zero, then the message is cancelled.
  *  The From argument to the BEGIN_TURN message is the last object found with the Player flag.
  *  Jumping doesn't seem to affect OF_MOVED (it doesn't send the MOVED message). Probably, it is instead set at the "movesuccceeded" label.
  *  To broadcast to all objects, specify 0 as the class, not -1.
  *  Broadcasts (as well as the INIT and POSTINIT messages automatically sent) send the messages to objects in the reverse order of their creation (the most recently created object receives the message first).
  *  The FlushObj() function clears Arrived, Busy, Inertia, Moved, and UserSignal. It does not clear Distance, KeyCleared, or UserState.
  *  If inside of a ForEachObjAt block, it calls recursively the same block even if in another object of the same class, it will not continue, presumably because it stores the coordinates and up flag together with the P-code (like arrays do); in Free Hero Mesh we can allocate a global variable for this.