From 8c5abf41ea700abef567cca862b6cae0fb23dadd Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Mon, 16 Nov 2020 01:20:55 -0500 Subject: [PATCH] Bumper destruction starts with the normal bumper sprite before transitioning into the giant bumper --- src/info.c | 2 +- src/p_inter.c | 6 ++---- src/p_mobj.c | 18 +++++++++++++++--- 3 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/info.c b/src/info.c index 4331e66b0..e9376c607 100644 --- a/src/info.c +++ b/src/info.c @@ -24113,7 +24113,7 @@ mobjinfo_t mobjinfo[NUMMOBJTYPES] = sfx_None, // painsound S_NULL, // meleestate S_NULL, // missilestate - S_BATTLEBUMPER_EXCRYSTALA1, // deathstate + S_BATTLEBUMPER1, // deathstate S_NULL, // xdeathstate sfx_None, // deathsound 4*FRACUNIT, // speed diff --git a/src/p_inter.c b/src/p_inter.c index 29c4cb887..3a97433a1 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1469,9 +1469,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget } target->momz += (24 * target->scale) * P_MobjFlip(target); - - target->shadowscale *= 3; - target->fuse = 16; + target->fuse = 8; overlay = P_SpawnMobjFromMobj(target, 0, 0, 0, MT_OVERLAY); @@ -1479,7 +1477,7 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget P_SetTarget(&overlay->target, target); overlay->color = target->color; - P_SetMobjState(overlay, S_BATTLEBUMPER_EXSHELLA1); + P_SetMobjState(overlay, S_INVISIBLE); } break; diff --git a/src/p_mobj.c b/src/p_mobj.c index 0b0661a60..348059be3 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -5290,7 +5290,19 @@ static void P_MobjSceneryThink(mobj_t *mobj) { statenum_t curState = (mobj->state - states); - if (curState >= S_BATTLEBUMPER_EXCRYSTALA1 && curState <= S_BATTLEBUMPER_EXCRYSTALA4) + 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); @@ -5299,7 +5311,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) P_SetMobjState(mobj->tracer, S_BATTLEBUMPER_EXSHELLB1); } - mobj->shadowscale *= 3; + mobj->shadowscale *= 2; mobj->fuse = 24; break; } @@ -5312,7 +5324,7 @@ static void P_MobjSceneryThink(mobj_t *mobj) P_SetMobjState(mobj->tracer, S_BATTLEBUMPER_EXSHELLC1); } - mobj->shadowscale *= 3; + mobj->shadowscale *= 2; mobj->fuse = 32; break; }