Remove Bumper Death animation
This commit is contained in:
parent
32b9b82dc2
commit
daf5fdf748
7 changed files with 12 additions and 179 deletions
|
|
@ -685,8 +685,6 @@ _(SINK_SHIELD)
|
|||
_(SINKTRAIL)
|
||||
|
||||
_(BATTLEBUMPER) // Battle Mode bumpers
|
||||
_(BATTLEBUMPER_DEBRIS)
|
||||
_(BATTLEBUMPER_BLAST)
|
||||
|
||||
_(DEZLASER)
|
||||
|
||||
|
|
|
|||
|
|
@ -3003,44 +3003,6 @@ _(BATTLEBUMPER1)
|
|||
_(BATTLEBUMPER2)
|
||||
_(BATTLEBUMPER3)
|
||||
|
||||
_(BATTLEBUMPER_EXCRYSTALA1)
|
||||
_(BATTLEBUMPER_EXCRYSTALA2)
|
||||
_(BATTLEBUMPER_EXCRYSTALA3)
|
||||
_(BATTLEBUMPER_EXCRYSTALA4)
|
||||
|
||||
_(BATTLEBUMPER_EXCRYSTALB1)
|
||||
_(BATTLEBUMPER_EXCRYSTALB2)
|
||||
_(BATTLEBUMPER_EXCRYSTALB3)
|
||||
_(BATTLEBUMPER_EXCRYSTALB4)
|
||||
|
||||
_(BATTLEBUMPER_EXCRYSTALC1)
|
||||
_(BATTLEBUMPER_EXCRYSTALC2)
|
||||
_(BATTLEBUMPER_EXCRYSTALC3)
|
||||
_(BATTLEBUMPER_EXCRYSTALC4)
|
||||
|
||||
_(BATTLEBUMPER_EXSHELLA1)
|
||||
_(BATTLEBUMPER_EXSHELLA2)
|
||||
|
||||
_(BATTLEBUMPER_EXSHELLB1)
|
||||
_(BATTLEBUMPER_EXSHELLB2)
|
||||
|
||||
_(BATTLEBUMPER_EXSHELLC1)
|
||||
_(BATTLEBUMPER_EXSHELLC2)
|
||||
|
||||
_(BATTLEBUMPER_EXDEBRIS1)
|
||||
_(BATTLEBUMPER_EXDEBRIS2)
|
||||
|
||||
_(BATTLEBUMPER_EXBLAST1)
|
||||
_(BATTLEBUMPER_EXBLAST2)
|
||||
_(BATTLEBUMPER_EXBLAST3)
|
||||
_(BATTLEBUMPER_EXBLAST4)
|
||||
_(BATTLEBUMPER_EXBLAST5)
|
||||
_(BATTLEBUMPER_EXBLAST6)
|
||||
_(BATTLEBUMPER_EXBLAST7)
|
||||
_(BATTLEBUMPER_EXBLAST8)
|
||||
_(BATTLEBUMPER_EXBLAST9)
|
||||
_(BATTLEBUMPER_EXBLAST10)
|
||||
|
||||
// DEZ Laser respawn
|
||||
_(DEZLASER)
|
||||
|
||||
|
|
|
|||
|
|
@ -255,7 +255,7 @@ void K_CheckBumpers(void)
|
|||
}
|
||||
else if (numingame <= 1)
|
||||
{
|
||||
if (!itembreaker)
|
||||
if (!itembreaker && cv_kartitembreaker.value)
|
||||
{
|
||||
// Reset map to turn on battle capsules
|
||||
D_MapChange(gamemap, gametype, encoremode, true, 0, false, false);
|
||||
|
|
|
|||
|
|
@ -584,20 +584,6 @@ boolean K_DropTargetCollide(mobj_t *t1, mobj_t *t2)
|
|||
ghost->destscale = 15*ghost->destscale/2;
|
||||
ghost->fuse = 10;
|
||||
ghost->scalespeed = (ghost->destscale - ghost->scale)/ghost->fuse;
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
mobj_t *blast = P_SpawnMobjFromMobj(t1, 0, 0, FixedDiv(t1->height, t1->scale), MT_BATTLEBUMPER_BLAST);
|
||||
P_SetScale(blast, 5*blast->scale/2);
|
||||
|
||||
blast->angle = R_PointToAngle2(0, 0, t1->momx, t1->momy) + ANGLE_45;
|
||||
if (i & 1)
|
||||
{
|
||||
blast->angle += ANGLE_90;
|
||||
}
|
||||
|
||||
blast->destscale *= 10;
|
||||
}
|
||||
}
|
||||
|
||||
t1->flags |= MF_SHOOTABLE;
|
||||
|
|
|
|||
|
|
@ -2227,6 +2227,10 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da
|
|||
|
||||
K_TryHurtSoundExchange(target, source);
|
||||
}
|
||||
else if (source && source == player->mo && source->player)
|
||||
{
|
||||
K_DestroyBumpers(player, 1);
|
||||
}
|
||||
|
||||
if (!(type == DMG_NORMAL || type == DMG_WIPEOUT || type == DMG_VOLTAGE))
|
||||
{
|
||||
|
|
|
|||
130
src/p_mobj.c
130
src/p_mobj.c
|
|
@ -5726,117 +5726,6 @@ static void P_MobjSceneryThink(mobj_t *mobj)
|
|||
}
|
||||
break;
|
||||
case MT_BATTLEBUMPER:
|
||||
if (mobj->health <= 0)
|
||||
{
|
||||
mobj->fuse--;
|
||||
|
||||
if (!S_SoundPlaying(mobj, sfx_cdfm71))
|
||||
{
|
||||
S_StartSound(mobj, sfx_cdfm71);
|
||||
}
|
||||
|
||||
if (mobj->fuse <= 0)
|
||||
{
|
||||
statenum_t curState = (mobj->state - states);
|
||||
|
||||
if (curState == S_BATTLEBUMPER1)
|
||||
{
|
||||
P_SetMobjState(mobj, S_BATTLEBUMPER_EXCRYSTALA1);
|
||||
|
||||
if (mobj->tracer && !P_MobjWasRemoved(mobj->tracer))
|
||||
{
|
||||
P_SetMobjState(mobj->tracer, S_BATTLEBUMPER_EXSHELLA1);
|
||||
}
|
||||
|
||||
mobj->shadowscale *= 2;
|
||||
mobj->fuse = 12;
|
||||
}
|
||||
else if (curState >= S_BATTLEBUMPER_EXCRYSTALA1 && curState <= S_BATTLEBUMPER_EXCRYSTALA4)
|
||||
{
|
||||
P_SetMobjState(mobj, S_BATTLEBUMPER_EXCRYSTALB1);
|
||||
|
||||
if (mobj->tracer && !P_MobjWasRemoved(mobj->tracer))
|
||||
{
|
||||
P_SetMobjState(mobj->tracer, S_BATTLEBUMPER_EXSHELLB1);
|
||||
}
|
||||
|
||||
mobj->shadowscale *= 2;
|
||||
mobj->fuse = 24;
|
||||
break;
|
||||
}
|
||||
else if (curState >= S_BATTLEBUMPER_EXCRYSTALB1 && curState <= S_BATTLEBUMPER_EXCRYSTALB4)
|
||||
{
|
||||
P_SetMobjState(mobj, S_BATTLEBUMPER_EXCRYSTALC1);
|
||||
|
||||
if (mobj->tracer && !P_MobjWasRemoved(mobj->tracer))
|
||||
{
|
||||
P_SetMobjState(mobj->tracer, S_BATTLEBUMPER_EXSHELLC1);
|
||||
}
|
||||
|
||||
mobj->shadowscale *= 2;
|
||||
mobj->fuse = 32;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
const INT16 spacing = 64;
|
||||
UINT8 i;
|
||||
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
mobj_t *debris = P_SpawnMobjFromMobj(
|
||||
mobj,
|
||||
P_RandomRange(-spacing, spacing) * FRACUNIT,
|
||||
P_RandomRange(-spacing, spacing) * FRACUNIT,
|
||||
P_RandomRange(-spacing, spacing) * FRACUNIT,
|
||||
MT_BATTLEBUMPER_DEBRIS
|
||||
);
|
||||
|
||||
P_SetScale(debris, (debris->destscale *= 2));
|
||||
debris->color = mobj->color;
|
||||
|
||||
debris->momz = -debris->scale * P_MobjFlip(debris);
|
||||
}
|
||||
|
||||
for (i = 0; i < 2; i++)
|
||||
{
|
||||
mobj_t *blast = P_SpawnMobjFromMobj(mobj, 0, 0, 0, MT_BATTLEBUMPER_BLAST);
|
||||
|
||||
blast->angle = R_PointToAngle2(0, 0, mobj->momx, mobj->momy) + ANGLE_45;
|
||||
if (i & 1)
|
||||
{
|
||||
blast->angle += ANGLE_90;
|
||||
S_StartSound(blast, sfx_cdfm64);
|
||||
}
|
||||
blast->angle = blast->angle;
|
||||
|
||||
blast->destscale *= 4;
|
||||
}
|
||||
|
||||
for (i = 0; i < 10; i++)
|
||||
{
|
||||
mobj_t *puff = P_SpawnMobjFromMobj(
|
||||
mobj,
|
||||
P_RandomRange(-spacing, spacing) * FRACUNIT,
|
||||
P_RandomRange(-spacing, spacing) * FRACUNIT,
|
||||
P_RandomRange(-spacing, spacing) * FRACUNIT,
|
||||
MT_DUST
|
||||
);
|
||||
|
||||
P_SetScale(puff, (puff->destscale *= 5));
|
||||
puff->momz = puff->scale * P_MobjFlip(puff);
|
||||
|
||||
P_Thrust(puff, R_PointToAngle2(mobj->x, mobj->y, puff->x, puff->y), puff->scale);
|
||||
}
|
||||
|
||||
P_RemoveMobj(mobj);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
if (mobj->target && !P_MobjWasRemoved(mobj->target) && mobj->target->player
|
||||
&& mobj->target->health > 0 && !mobj->target->player->spectator)
|
||||
{
|
||||
|
|
@ -5908,29 +5797,24 @@ static void P_MobjSceneryThink(mobj_t *mobj)
|
|||
P_SetThingPosition(mobj);
|
||||
}
|
||||
|
||||
// Was this so hard?
|
||||
if (mobj->target->player->bumper <= mobj->threshold)
|
||||
{
|
||||
// Do bumper destruction
|
||||
P_KillMobj(mobj, NULL, NULL, DMG_NORMAL);
|
||||
break;
|
||||
P_RemoveMobj(mobj);
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
else if ((mobj->health > 0
|
||||
&& (!mobj->target || !mobj->target->player || !mobj->target->player->mo || mobj->target->health <= 0 || mobj->target->player->spectator))
|
||||
|| (mobj->health <= 0 && P_IsObjectOnGround(mobj))
|
||||
|| P_CheckDeathPitCollide(mobj)) // When in death state
|
||||
{
|
||||
// Sliently remove
|
||||
P_RemoveMobj(mobj);
|
||||
return;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case MT_BATTLEBUMPER_DEBRIS:
|
||||
if (mobj->state == states + S_BATTLEBUMPER_EXDEBRIS2)
|
||||
{
|
||||
mobj->renderflags ^= RF_DONTDRAW;
|
||||
}
|
||||
break;
|
||||
|
||||
// see also K_drawKartItem in k_hud.c
|
||||
case MT_PLAYERARROW:
|
||||
if (mobj->target && mobj->target->health
|
||||
|
|
|
|||
|
|
@ -7865,7 +7865,6 @@ static void P_InitLevelSettings(boolean reloadinggamestate)
|
|||
stackingactive = false;
|
||||
chainingactive = false;
|
||||
slipdashactive = false;
|
||||
|
||||
|
||||
if (cv_kartrings.value)
|
||||
ringsactive = true;
|
||||
|
|
|
|||
Loading…
Reference in a new issue