diff --git a/src/d_clisrv.c b/src/d_clisrv.c index 56cb58b47..807e55666 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2542,7 +2542,7 @@ void CL_ClearPlayer(INT32 playernum) int i; // Handle mobj_t pointers. - if (gamestate == GS_LEVEL) + if (G_GamestateUsesLevel() == true) { if (players[playernum].follower) { @@ -3771,9 +3771,6 @@ static void Got_AddBot(UINT8 **p, INT32 playernum) sprintf(player_names[newplayernum], "%s", skins[skinnum].realname); SetPlayerSkinByNum(newplayernum, skinnum); - players[newplayernum].spectator = !(gametyperules & GTR_BOTS) - || (grandprixinfo.gp == true && grandprixinfo.eventmode != GPEVENT_NONE); - if (netgame) { HU_AddChatText(va("\x82*Bot %d has been added to the game", newplayernum+1), false); diff --git a/src/g_game.c b/src/g_game.c index 98b03ec6e..9db0b8955 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2742,7 +2742,7 @@ void G_MovePlayerToSpawnOrStarpost(INT32 playernum) #else // Player's first spawn should be at the "map start". // I.e. level load or join mid game. - if (leveltime > starttime && players[playernum].jointime > 0) + if (leveltime > starttime && players[playernum].jointime > 1 && K_PodiumSequence() == false) P_MovePlayerToStarpost(playernum); else P_MovePlayerToSpawn(playernum, G_FindMapStart(playernum)); diff --git a/src/k_kart.c b/src/k_kart.c index c5e602f2a..92c75b889 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -8527,7 +8527,7 @@ static void K_UpdatePodiumWaypoints(player_t *const player) { if ((player->currentwaypoint == NULL) && (player->position > 0 && player->position <= MAXPLAYERS) - && (leveltime <= 2)) + && (leveltime <= introtime || player->jointime <= 1)) { // Initialize our first waypoint to the one that // matches our position. diff --git a/src/p_mobj.c b/src/p_mobj.c index 9de016f60..88f6718da 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -11746,8 +11746,7 @@ void P_SpawnPlayer(INT32 playernum) else if (p->bot) { if (K_PodiumSequence() == false - && grandprixinfo.gp == true - && grandprixinfo.eventmode != GPEVENT_NONE) + && (!(gametyperules & GTR_BOTS) || (grandprixinfo.gp == true && grandprixinfo.eventmode != GPEVENT_NONE))) { // Bots aren't supposed to be here. p->spectator = true; @@ -11811,7 +11810,7 @@ void P_SpawnPlayer(INT32 playernum) p->skincolor = skincolor_blueteam; } - if (leveltime > introtime) + if (leveltime > introtime && K_PodiumSequence() == false) p->flashing = K_GetKartFlashing(p); // Babysitting deterrent mobj = P_SpawnMobj(0, 0, 0, MT_PLAYER); diff --git a/src/p_setup.c b/src/p_setup.c index aaa335cef..5fc6058b6 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -7363,7 +7363,7 @@ static void P_InitPlayers(void) players[i].mo = NULL; - if (!(gametyperules & GTR_CIRCUIT)) + if (!(gametyperules & GTR_CIRCUIT) && K_PodiumSequence() == false) { G_DoReborn(i); }