Move Break the Capsules and Boss elimination condition to P_KillMobj

This commit is contained in:
James R 2023-03-07 19:35:02 -08:00
parent 3843f0c3cd
commit a1558f1fbd
2 changed files with 20 additions and 11 deletions

View file

@ -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();
}

View file

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