diff --git a/src/k_grandprix.c b/src/k_grandprix.c index 6b19b8f06..151ab7724 100644 --- a/src/k_grandprix.c +++ b/src/k_grandprix.c @@ -17,6 +17,7 @@ #include "g_game.h" #include "k_bot.h" #include "k_kart.h" +#include "k_podium.h" #include "m_random.h" #include "p_local.h" #include "r_things.h" @@ -326,6 +327,9 @@ void K_UpdateGrandPrixBots(void) UINT16 newrivalscore = 0; UINT8 i; + if (K_PodiumSequence()) + return; + for (i = 0; i < MAXPLAYERS; i++) { if (!playeringame[i] || !players[i].bot) diff --git a/src/k_podium.c b/src/k_podium.c index 0a33844de..46de1eb79 100644 --- a/src/k_podium.c +++ b/src/k_podium.c @@ -258,9 +258,13 @@ boolean K_StartCeremony(void) // and be present for the podium for (i = 0; i < MAXPLAYERS; i++) { - if (playeringame[i] && !players[i].spectator && !players[i].bot) + if (playeringame[i]) { - players[i].lives = max(1, players[i].lives); + if (players[i].lives < 1) + players[i].lives = 1; + + if (players[i].bot) + players[i].spectator = false; } } diff --git a/src/p_mobj.c b/src/p_mobj.c index fbe4d90c2..4d87491b1 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -11645,8 +11645,11 @@ void P_SpawnPlayer(INT32 playernum) } else if (p->bot) { - if (K_PodiumSequence() == false - && (!(gametyperules & GTR_BOTS) || (grandprixinfo.gp == true && grandprixinfo.eventmode != GPEVENT_NONE))) + if (K_PodiumSequence() == true) + ; // This is too late to correct spectator status. Whatever state we're in at this point, our (dog) bed is made. + else if (!(gametyperules & GTR_BOTS) + || (grandprixinfo.gp == true + && grandprixinfo.eventmode != GPEVENT_NONE)) { // Bots aren't supposed to be here. p->spectator = true;