diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 9a3652cc..d0b6f13e 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -1228,7 +1228,7 @@ static inline void CL_DrawConnectionStatus(void) cltext = M_GetText("Server full, waiting for a slot..."); else cltext = M_GetText("Requesting to join..."); - + break; #ifdef HAVE_CURL case CL_PREPAREHTTPFILES: @@ -2029,7 +2029,7 @@ void CL_QueryServerList (msg_server_t *server_list) static void M_ConfirmConnect(event_t *ev) { -#ifndef NONET +#ifndef NONET if (ev->type == ev_keydown) { if (ev->data1 == ' ' || ev->data1 == 'y' || ev->data1 == KEY_ENTER || ev->data1 == gamecontrol[gc_accelerate][0] || ev->data1 == gamecontrol[gc_accelerate][1]) @@ -2052,7 +2052,7 @@ static void M_ConfirmConnect(event_t *ev) } else cl_mode = CL_LOADFILES; - + M_ClearMenus(true); } else if (ev->data1 == 'n' || ev->data1 == KEY_ESCAPE|| ev->data1 == gamecontrol[gc_brake][0] || ev->data1 == gamecontrol[gc_brake][1]) @@ -2300,7 +2300,7 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic { boolean waitmore; INT32 i; - + #ifdef NONET (void)tmpsave; #endif @@ -2337,7 +2337,7 @@ static boolean CL_ServerConnectionTicker(const char *tmpsave, tic_t *oldtic, tic { curl_transfers++; } - + cl_mode = CL_DOWNLOADHTTPFILES; } break; @@ -5011,7 +5011,7 @@ FILESTAMP { node = (SINT8)doomcom->remotenode; - if (netbuffer->packettype == PT_CLIENTJOIN && server) + if (netbuffer->packettype == PT_CLIENTJOIN && server && !levelloading) { HandleConnect(node); continue; @@ -5222,7 +5222,7 @@ static void CL_SendClientKeepAlive(void) static void SV_SendServerKeepAlive(void) { INT32 n; - + for (n = 1; n < MAXNETNODES; n++) { if (nodeingame[n]) @@ -5769,7 +5769,7 @@ FILESTAMP { SV_SendServerKeepAlive(); } - + // No else because no tics are being run and we can't resynch during this Net_AckTicker(); diff --git a/src/d_main.c b/src/d_main.c index d570ae35..2c02565d 100644 --- a/src/d_main.c +++ b/src/d_main.c @@ -1597,9 +1597,9 @@ void D_SRB2Main(void) { pagename = "TITLESKY"; levelstarttic = gametic; + G_SetGamestate(GS_LEVEL); if (!P_SetupLevel(false)) I_Quit(); // fail so reset game stuff - G_SetGamestate(GS_LEVEL); } #ifdef HAVE_DISCORDRPC diff --git a/src/g_game.c b/src/g_game.c index 4eb195e9..d9d7b7f1 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -1733,20 +1733,6 @@ void G_DoLoadLevel(boolean resetplayer) Y_EndIntermission(); if (gamestate == GS_VOTING) Y_EndVote(); - // Don't allow people to download a partial/corrupted - // save while the server's loading the map/during the wipe. - // (this addresses "map" command usage, which means - // transitions/different gamestates would be skipped.) - if (gamestate == GS_LEVEL) - gamestate = GS_WAITINGPLAYERS; - - // Setup the level. - if (!P_SetupLevel(false)) - { - // fail so reset game stuff - Command_ExitGame_f(); - return; - } G_SetGamestate(GS_LEVEL); @@ -1756,6 +1742,14 @@ void G_DoLoadLevel(boolean resetplayer) players[i].playerstate = PST_REBORN; } + // Setup the level. + if (!P_SetupLevel(false)) + { + // fail so reset game stuff + Command_ExitGame_f(); + return; + } + if (!resetplayer) P_FindEmerald();