diff --git a/src/k_kart.c b/src/k_kart.c index 56035c778..1304e2b58 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -1149,6 +1149,7 @@ static void K_UpdateOffroad(player_t *player) player->offroad = offroadstrength; if (player->roundconditions.touched_offroad == false + && !(player->exiting || (player->pflags & PF_NOCONTEST)) && player->offroad > (2*offroadstrength) / TICRATE) { player->roundconditions.touched_offroad = true; @@ -6089,6 +6090,7 @@ void K_DoSneaker(player_t *player, INT32 type) const fixed_t intendedboost = FRACUNIT/2; if (player->roundconditions.touched_sneakerpanel == false + && !(player->exiting || (player->pflags & PF_NOCONTEST)) && player->floorboost != 0) { player->roundconditions.touched_sneakerpanel = true; diff --git a/src/p_inter.c b/src/p_inter.c index 1d17fd172..3ed158c62 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -2377,6 +2377,8 @@ static boolean P_PlayerHitsPlayer(mobj_t *target, mobj_t *inflictor, mobj_t *sou static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, UINT8 type) { + const boolean beforeexit = !(player->exiting || (player->pflags & PF_NOCONTEST)); + if (type == DMG_SPECTATOR && (G_GametypeHasTeams() || G_GametypeHasSpectators())) { P_SetPlayerSpectator(player-players); @@ -2424,7 +2426,8 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, { case DMG_DEATHPIT: // Fell off the stage - if (player->roundconditions.fell_off == false) + if (player->roundconditions.fell_off == false + && beforeexit == false) { player->roundconditions.fell_off = true; player->roundconditions.checkthisframe = true; diff --git a/src/p_user.c b/src/p_user.c index f57f6c976..7126afb9a 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -519,7 +519,9 @@ INT32 P_GivePlayerRings(player_t *player, INT32 num_rings) player->rings += num_rings; - if (player->roundconditions.debt_rings == false && player->rings < 0) + if (player->roundconditions.debt_rings == false + && !(player->exiting || (player->pflags & PF_NOCONTEST)) + && player->rings < 0) { player->roundconditions.debt_rings = true; player->roundconditions.checkthisframe = true;