From daf5fdf748ca6cc601500d3a49dd12ce5b7a7c53 Mon Sep 17 00:00:00 2001 From: NepDisk Date: Mon, 7 Apr 2025 21:00:43 -0400 Subject: [PATCH] Remove Bumper Death animation --- src/info/mobjs.h | 2 - src/info/states.h | 38 -------------- src/k_battle.c | 2 +- src/k_collide.c | 14 ----- src/p_inter.c | 4 ++ src/p_mobj.c | 130 +++------------------------------------------- src/p_setup.c | 1 - 7 files changed, 12 insertions(+), 179 deletions(-) diff --git a/src/info/mobjs.h b/src/info/mobjs.h index 156830034..d46d3e983 100644 --- a/src/info/mobjs.h +++ b/src/info/mobjs.h @@ -685,8 +685,6 @@ _(SINK_SHIELD) _(SINKTRAIL) _(BATTLEBUMPER) // Battle Mode bumpers -_(BATTLEBUMPER_DEBRIS) -_(BATTLEBUMPER_BLAST) _(DEZLASER) diff --git a/src/info/states.h b/src/info/states.h index daa934a27..b47b954dc 100644 --- a/src/info/states.h +++ b/src/info/states.h @@ -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) diff --git a/src/k_battle.c b/src/k_battle.c index e164b08ba..fc8f6ab45 100644 --- a/src/k_battle.c +++ b/src/k_battle.c @@ -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); diff --git a/src/k_collide.c b/src/k_collide.c index 5709f587b..88adcabff 100644 --- a/src/k_collide.c +++ b/src/k_collide.c @@ -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; diff --git a/src/p_inter.c b/src/p_inter.c index 3b4b14a57..402d715ab 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -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)) { diff --git a/src/p_mobj.c b/src/p_mobj.c index e8df336f2..3e22ac8ff 100644 --- a/src/p_mobj.c +++ b/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 diff --git a/src/p_setup.c b/src/p_setup.c index ec68f5bdd..7dc209f93 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -7865,7 +7865,6 @@ static void P_InitLevelSettings(boolean reloadinggamestate) stackingactive = false; chainingactive = false; slipdashactive = false; - if (cv_kartrings.value) ringsactive = true;