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;