+#if USE_NEW_PLAYER_ASSIGNMENTS
+ /* check if any connected player was not found in playfield */
+ for (i = 0; i < MAX_PLAYERS; i++)
+ {
+ struct PlayerInfo *player = &stored_player[i];
+
+ if (player->connected && !player->present)
+ {
+ for (j = 0; j < MAX_PLAYERS; j++)
+ {
+ struct PlayerInfo *some_player = &stored_player[j];
+ int jx = some_player->jx, jy = some_player->jy;
+
+ /* assign first free player found that is present in the playfield */
+ if (some_player->present && !some_player->connected)
+ {
+ player->present = FALSE;
+ player->active = FALSE;
+
+ some_player->present = TRUE;
+ some_player->active = TRUE;
+
+ /*
+ player->initial_element = some_player->initial_element;
+ player->artwork_element = some_player->artwork_element;
+
+ player->block_last_field = some_player->block_last_field;
+ player->block_delay_adjustment = some_player->block_delay_adjustment;
+ */
+
+ StorePlayer[jx][jy] = some_player->element_nr;
+
+ some_player->jx = some_player->last_jx = jx;
+ some_player->jy = some_player->last_jy = jy;
+
+ if (local_player == player)
+ local_player = some_player;
+
+ break;
+ }
+ }
+ }
+ }
+
+#else
+