From 417afd0ac9cbc1bf616f2ced0e5415b5773b15f3 Mon Sep 17 00:00:00 2001 From: toaster Date: Wed, 18 Oct 2023 00:27:44 +0100 Subject: [PATCH] UCRP_FALLOFF, UCRP_TOUCHOFFROAD, UCRP_TOUCHSNEAKERPANEL, UCRP_RINGDEBT: Don't flag if it happens to the player after they exit UCRP_FALLOFF, // Fall off (or don't) UCRP_TOUCHOFFROAD, // Touch offroad (or don't) UCRP_TOUCHSNEAKERPANEL, // Either touch sneaker panel (or don't) UCRP_RINGDEBT, // Go into debt (or don't) --- src/k_kart.c | 2 ++ src/p_inter.c | 5 ++++- src/p_user.c | 4 +++- 3 files changed, 9 insertions(+), 2 deletions(-) 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;