mirror of
https://github.com/KartKrewDev/RingRacers.git
synced 2025-12-02 14:12:47 +00:00
Shuffle some of player death handling in p_inter.c around
Permits a dying player to have its wavedash indicator actually removed (was made very obvious by the new sliptide segment in Drifting)
This commit is contained in:
parent
06390642ac
commit
8ccf5f3b89
1 changed files with 41 additions and 47 deletions
|
|
@ -1922,6 +1922,44 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (target->player->spectator == false)
|
||||||
|
{
|
||||||
|
UINT32 skinflags = (demo.playback)
|
||||||
|
? demo.skinlist[demo.currentskinid[(target->player-players)]].flags
|
||||||
|
: skins[target->player->skin]->flags;
|
||||||
|
|
||||||
|
if (skinflags & SF_IRONMAN)
|
||||||
|
{
|
||||||
|
target->skin = skins[target->player->skin];
|
||||||
|
target->player->charflags = skinflags;
|
||||||
|
K_SpawnMagicianParticles(target, 5);
|
||||||
|
S_StartSound(target, sfx_slip);
|
||||||
|
}
|
||||||
|
|
||||||
|
target->renderflags &= ~RF_DONTDRAW;
|
||||||
|
}
|
||||||
|
|
||||||
|
K_DropEmeraldsFromPlayer(target->player, target->player->emeralds);
|
||||||
|
|
||||||
|
target->player->carry = CR_NONE;
|
||||||
|
|
||||||
|
K_KartResetPlayerColor(target->player);
|
||||||
|
|
||||||
|
P_ResetPlayer(target->player);
|
||||||
|
|
||||||
|
#define PlayerPointerRemove(field) \
|
||||||
|
if (P_MobjWasRemoved(field) == false) \
|
||||||
|
{ \
|
||||||
|
P_RemoveMobj(field); \
|
||||||
|
P_SetTarget(&field, NULL); \
|
||||||
|
}
|
||||||
|
|
||||||
|
PlayerPointerRemove(target->player->stumbleIndicator);
|
||||||
|
PlayerPointerRemove(target->player->wavedashIndicator);
|
||||||
|
PlayerPointerRemove(target->player->trickIndicator);
|
||||||
|
|
||||||
|
#undef PlayerPointerRemove
|
||||||
|
|
||||||
if (gametyperules & GTR_BUMPERS)
|
if (gametyperules & GTR_BUMPERS)
|
||||||
{
|
{
|
||||||
if (battleovertime.enabled >= 10*TICRATE) // Overtime Barrier is armed
|
if (battleovertime.enabled >= 10*TICRATE) // Overtime Barrier is armed
|
||||||
|
|
@ -2684,7 +2722,6 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source,
|
||||||
|
|
||||||
if (modeattacking & ATTACKING_SPB)
|
if (modeattacking & ATTACKING_SPB)
|
||||||
{
|
{
|
||||||
P_DamageMobj(player->mo, NULL, NULL, 1, DMG_INSTAKILL);
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -2700,6 +2737,9 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source,
|
||||||
// disappearifies, but still gotta put items back in play
|
// disappearifies, but still gotta put items back in play
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case DMG_TIMEOVER:
|
||||||
|
player->pflags |= PF_ELIMINATED;
|
||||||
|
//FALLTHRU
|
||||||
default:
|
default:
|
||||||
// Everything else REALLY kills
|
// Everything else REALLY kills
|
||||||
if (leveltime < starttime)
|
if (leveltime < starttime)
|
||||||
|
|
@ -2709,52 +2749,6 @@ static boolean P_KillPlayer(player_t *player, mobj_t *inflictor, mobj_t *source,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (player->spectator == false)
|
|
||||||
{
|
|
||||||
UINT32 skinflags = (demo.playback)
|
|
||||||
? demo.skinlist[demo.currentskinid[(player-players)]].flags
|
|
||||||
: skins[player->skin]->flags;
|
|
||||||
|
|
||||||
if (skinflags & SF_IRONMAN)
|
|
||||||
{
|
|
||||||
player->mo->skin = skins[player->skin];
|
|
||||||
player->charflags = skinflags;
|
|
||||||
K_SpawnMagicianParticles(player->mo, 5);
|
|
||||||
S_StartSound(player->mo, sfx_slip);
|
|
||||||
}
|
|
||||||
|
|
||||||
player->mo->renderflags &= ~RF_DONTDRAW;
|
|
||||||
}
|
|
||||||
|
|
||||||
K_DropEmeraldsFromPlayer(player, player->emeralds);
|
|
||||||
//K_SetHitLagForObjects(player->mo, inflictor, source, MAXHITLAGTICS, true);
|
|
||||||
|
|
||||||
player->carry = CR_NONE;
|
|
||||||
|
|
||||||
K_KartResetPlayerColor(player);
|
|
||||||
|
|
||||||
P_ResetPlayer(player);
|
|
||||||
|
|
||||||
P_SetPlayerMobjState(player->mo, player->mo->info->deathstate);
|
|
||||||
|
|
||||||
#define PlayerPointerRemove(field) \
|
|
||||||
if (P_MobjWasRemoved(field) == false) \
|
|
||||||
{ \
|
|
||||||
P_RemoveMobj(field); \
|
|
||||||
P_SetTarget(&field, NULL); \
|
|
||||||
}
|
|
||||||
|
|
||||||
PlayerPointerRemove(player->stumbleIndicator);
|
|
||||||
PlayerPointerRemove(player->wavedashIndicator);
|
|
||||||
PlayerPointerRemove(player->trickIndicator);
|
|
||||||
|
|
||||||
#undef PlayerPointerRemove
|
|
||||||
|
|
||||||
if (type == DMG_TIMEOVER)
|
|
||||||
{
|
|
||||||
player->pflags |= PF_ELIMINATED;
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue