I was looking over the socket code, to see why t-mode can change, but the
client doesn't beep or change the "T" flag until several seconds later, and I
noticed this:

void
updateStatus(int force)
/* if force is false, packet only sent when status->tourn changes */
{
/* Update status every 10 seconds? */
    if (repCount % efticks(50) == 0)
        if ( clientStatus.tourn != status->tourn
             || (force && (ntohl(clientStatus.timeprod) != timeprod_int()))) {

#ifdef LTD_STATS
            /* Hey, Tmode changed.  Do I have an enemy? */
            setEnemy(me->p_team, me);
#endif /* LTD_STATS */

            /* send the packet.... deleted */
        }
}


Ok, now from the comment it looks like setEnemy should be called when t-mode
changes.  But this code should get called every 10 seconds during t-mode.
Maybe someone who knows how LTD stats work will know, if calling setEnemy every
10 seconds is ok.

Secondly, the code in the if statments will only be run every 10 seconds at
most.  If t-mode changes, it could be 10 seconds before the code is run.  This
is why the client sometimes takes a while to figure out t-mode has changed.

Suppose you have a fed-rom game in t-mode.  The roms quit, t-mode is lost, and
then some klis join, t-mode is regained, over a period of less than 10
seconds.  setEnemy will not get called, even though you had a fed-rom game and
now a fed-kli game.

Anyway, I'm going to fix this so t-mode changes are sent when they happen, not
upto 10 seconds later.  I also wonder if stats code inside the network
functions is really a good idea, it seems like a bad place to me.