From c2b2cd9a43a1252983b7311d8f0f53a36338e267 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 19 Sep 2022 23:37:29 -0700 Subject: [PATCH] Reenable item box respawning Old code was shit so I removed it (4d67cc632). Turns out none of that bullshit actually mattered to make this box respawn and it just needs to go to an invisible state! Makes use of some nifty flickering code (that was already there but effectively disabled) shortly before it actually respawns. --- src/info.c | 2 +- src/p_enemy.c | 8 ++++++-- src/p_mobj.c | 4 ---- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/src/info.c b/src/info.c index ce37b51ad..3c868d4c0 100644 --- a/src/info.c +++ b/src/info.c @@ -3849,7 +3849,7 @@ state_t states[NUMSTATES] = {SPR_RNDM, 18|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, 4, {NULL}, 1, 1, S_RANDOMITEM11}, // S_RANDOMITEM10 {SPR_RNDM, 20|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, 4, {NULL}, 1, 1, S_RANDOMITEM12}, // S_RANDOMITEM11 {SPR_RNDM, 22|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, 4, {NULL}, 1, 1, S_RANDOMITEM1}, // S_RANDOMITEM12 - {SPR_NULL, 0, 0, {A_ItemPop}, 0, 0, S_NULL}, // S_DEADRANDOMITEM + {SPR_NULL, 0, 0, {A_ItemPop}, 0, 0, S_RANDOMITEM1}, // S_DEADRANDOMITEM {SPR_SBOX, FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, 4, {NULL}, 1, 1, S_SPHEREBOX2}, // S_SPHEREBOX1 {SPR_SBOX, 2|FF_FULLBRIGHT|FF_ANIMATE|FF_GLOBALANIM, 4, {NULL}, 1, 1, S_SPHEREBOX3}, // S_SPHEREBOX2 diff --git a/src/p_enemy.c b/src/p_enemy.c index 879d01350..901c2a2b2 100644 --- a/src/p_enemy.c +++ b/src/p_enemy.c @@ -13184,6 +13184,12 @@ void A_ItemPop(mobj_t *actor) actor->flags |= MF_NOCLIP; P_SetThingPosition(actor); + // RF_DONTDRAW will flicker as the object's fuse gets + // closer to running out (see P_FuseThink) + actor->renderflags |= RF_DONTDRAW|RF_TRANS50; + actor->color = SKINCOLOR_GREY; + actor->colorized = true; + Obj_SpawnItemDebrisEffects(actor, actor->target); if (locvar1 == 1) @@ -13194,8 +13200,6 @@ void A_ItemPop(mobj_t *actor) // Here at mapload in battle? if ((gametyperules & GTR_BUMPERS) && (actor->flags2 & MF2_BOSSNOTRAP)) numgotboxes++; - - P_RemoveMobj(actor); } void A_JawzChase(mobj_t *actor) diff --git a/src/p_mobj.c b/src/p_mobj.c index ee005d960..1c34a1b1e 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -12683,10 +12683,6 @@ static boolean P_SetupSpawnedMapThing(mapthing_t *mthing, mobj_t *mobj, boolean P_SetThingPosition(mobj); } } - else - { - P_SpawnMobj(mobj->x, mobj->y, mobj->z, MT_EXPLODE); - } break; } case MT_ITEMCAPSULE: