diff --git a/src/g_game.c b/src/g_game.c index 1e6dde37..6ace117e 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -2491,7 +2491,7 @@ void G_PlayerReborn(INT32 player) } } - if (leveltime > 157) + if (leveltime > 157 && !p->spectator) p->kartstuff[k_lakitu] = 48; // Lakitu Spawner if (gametype == GT_COOP) diff --git a/src/k_kart.c b/src/k_kart.c index a0ae7c50..d7084ec2 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -946,9 +946,9 @@ void K_LakituChecker(player_t *player) newx = player->mo->x + P_ReturnThrustX(player->mo, newangle, 0); newy = player->mo->y + P_ReturnThrustY(player->mo, newangle, 0); if (player->mo->eflags & MFE_VERTICALFLIP) - newz = player->mo->z - 128*FRACUNIT; + newz = player->mo->z - 128*(mapheaderinfo[gamemap-1]->mobj_scale); else - newz = player->mo->z + 64*FRACUNIT; + newz = player->mo->z + 64*(mapheaderinfo[gamemap-1]->mobj_scale); mo = P_SpawnMobj(newx, newy, newz, MT_LAKITU); if (mo) { diff --git a/src/p_user.c b/src/p_user.c index 1aa60f33..3849a6cd 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -9257,7 +9257,7 @@ void P_PlayerThink(player_t *player) // Check if all the players in the race have finished. If so, end the level. for (i = 0; i < MAXPLAYERS; i++) { - if (playeringame[i]) + if (playeringame[i] && !players[i].spectator) { if (!players[i].exiting && players[i].lives > 0) break; @@ -9279,7 +9279,7 @@ void P_PlayerThink(player_t *player) // If you've hit the countdown and you haven't made // it to the exit, you're a goner! else */ - if (countdown == 1 && !player->exiting && player->lives > 0) + if (countdown == 1 && !player->exiting && !player->spectator && player->lives > 0) { if (netgame && player->health > 0) CONS_Printf(M_GetText("%s ran out of time.\n"), player_names[player-players]);