+ if (new_client_nr == client_nr_wanted) /* switching succeeded */
+ {
+ struct user *u;
+
+ if (old_client_nr != client_nr_wanted) /* client's nr has changed */
+ {
+ sprintf(msgbuf, "client %d switches to # %d",
+ old_client_nr, new_client_nr);
+ sysmsg(msgbuf);
+ }
+ else if (old_client_nr == me.nr) /* local player keeps his nr */
+ {
+ sprintf(msgbuf, "keeping client # %d", new_client_nr);
+ sysmsg(msgbuf);
+ }
+
+ if (old_client_nr != new_client_nr)
+ {
+ /* copy existing player settings and change to new player */
+
+ *new_player = *old_player;
+ old_player->connected = FALSE;
+ }
+
+ u = finduser(old_client_nr);
+ u->nr = new_client_nr;
+
+ if (old_player == local_player) /* local player switched */
+ local_player = new_player;
+
+
+ TestPlayer = new_index_nr;
+ }
+ else if (old_client_nr == me.nr) /* failed -- local player? */