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)
This commit is contained in:
toaster 2023-10-18 00:27:44 +01:00
parent acdb7fd869
commit 417afd0ac9
3 changed files with 9 additions and 2 deletions

View file

@ -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;

View file

@ -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;

View file

@ -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;