diff --git a/src/k_kart.c b/src/k_kart.c index f20d9b332..ea30ff8c3 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -7236,7 +7236,9 @@ void K_KartPlayerHUDUpdate(player_t *player) player->karthud[khud_ringspblock] = (leveltime % 14); // reset to normal anim next time } - if (player->exiting) + if (player->exiting + && (specialstageinfo.valid == false + || !(player->pflags & PF_NOCONTEST))) { if (player->karthud[khud_finish] <= 2*TICRATE) player->karthud[khud_finish]++; diff --git a/src/p_inter.c b/src/p_inter.c index b6a864a0d..e8ca672d6 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1901,6 +1901,12 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, { (void)source; + if (!player->exiting && specialstageinfo.valid == true) + { + player->pflags |= PF_NOCONTEST; + P_DoPlayerExit(player); + } + if (player->exiting) { player->mo->destscale = 1; diff --git a/src/p_spec.c b/src/p_spec.c index 7af6c6e7c..e252bf374 100644 --- a/src/p_spec.c +++ b/src/p_spec.c @@ -2011,8 +2011,11 @@ static void K_HandleLapIncrement(player_t *player) player->pflags |= PF_NOCONTEST; } } + P_DoPlayerExit(player); - P_SetupSignExit(player); + + if (!(player->pflags & PF_NOCONTEST)) + P_SetupSignExit(player); } else { diff --git a/src/p_user.c b/src/p_user.c index 88a4f98ed..c469528c4 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -1314,7 +1314,7 @@ void P_DoPlayerExit(player_t *player) { if (specialstageinfo.valid == true && losing == true) { - exitcountdown = (5*TICRATE)/2; + exitcountdown = TICRATE; } else {