diff --git a/src/k_kart.c b/src/k_kart.c index 95e208cbd..91c28b0aa 100644 --- a/src/k_kart.c +++ b/src/k_kart.c @@ -4317,20 +4317,15 @@ void K_DebtStingPlayer(player_t *player, mobj_t *source) void K_HandleBumperChanges(player_t *player, UINT8 prevBumpers) { + (void)player; + (void)prevBumpers; + if (!(gametyperules & GTR_BUMPERS)) { // Bumpers aren't being used return; } - if (player->bumpers == 0 && prevBumpers > 0) - { - if (battlecapsules || bossinfo.valid) - { - player->pflags |= (PF_NOCONTEST|PF_ELIMINATED); - } - } - K_CalculateBattleWanted(); K_CheckBumpers(); } diff --git a/src/p_inter.c b/src/p_inter.c index e703cdf7a..08e0c186a 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -39,6 +39,7 @@ #include "p_spec.h" #include "k_objects.h" #include "k_roulette.h" +#include "k_boss.h" // CTF player names #define CTFTEAMCODE(pl) pl->ctfteam ? (pl->ctfteam == 1 ? "\x85" : "\x84") : "" @@ -1395,6 +1396,11 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget P_PlayDeathSound(target); } + + if (battlecapsules || bossinfo.valid) + { + target->player->pflags |= (PF_NOCONTEST|PF_ELIMINATED); + } break; case MT_METALSONIC_RACE: @@ -1937,13 +1943,21 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source, switch (type) { case DMG_DEATHPIT: - // Respawn kill types - K_DoIngameRespawn(player); + // Battle player->mo->health -= K_DestroyBumpers(player, 1); - return false; + + if (player->mo->health <= 0) + { + return true; + } + + // Quick respawn; does not kill + return K_DoIngameRespawn(player), false; + case DMG_SPECTATOR: // disappearifies, but still gotta put items back in play break; + default: // Everything else REALLY kills if (leveltime < starttime)