From 5310acc84e39ef05c15d20edb89fe1affaa79844 Mon Sep 17 00:00:00 2001 From: toaster Date: Thu, 18 Feb 2021 11:11:50 +0000 Subject: [PATCH] * As predicted, remove FAULTing from simply becoming a spectator at the start of the race - only apply it if you attempt to rejoin! * Mark FAULTing players as in pain, preventing you from using your rings in mid-air (which is especially egregrious when re-entering the race from being a spectator uses the item button). --- src/p_inter.c | 13 +++++++------ src/p_mobj.c | 2 +- src/p_user.c | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/src/p_inter.c b/src/p_inter.c index 5c536b541..635a3f11b 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1751,17 +1751,18 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, // Respawn kill types K_DoIngameRespawn(player); return false; + case DMG_SPECTATOR: + // disappearifies, but still gotta put items back in play + break; default: // Everything else REALLY kills + if (leveltime < starttime) + { + K_DoFault(player); + } break; } - // FAULT - if (leveltime < starttime) - { - K_DoFault(player); - } - K_DropEmeraldsFromPlayer(player, player->powers[pw_emeralds]); K_SetHitLagForObjects(player->mo, inflictor, 15); diff --git a/src/p_mobj.c b/src/p_mobj.c index 953124820..ac645a4e8 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -10638,7 +10638,7 @@ void P_MovePlayerToSpawn(INT32 playernum, mapthing_t *mthing) mobj->angle = angle; // FAULT - if (leveltime > introtime) + if (leveltime > introtime && !p->spectator) { K_DoIngameRespawn(p); } diff --git a/src/p_user.c b/src/p_user.c index b64c9e713..a4d5d7908 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -461,7 +461,7 @@ UINT8 P_FindHighestLap(void) // boolean P_PlayerInPain(player_t *player) { - if (player->kartstuff[k_spinouttimer] || player->tumbleBounces > 0) + if (player->kartstuff[k_spinouttimer] || (player->tumbleBounces > 0) || (player->pflags & PF_FAULT)) return true; return false;