diff --git a/src/p_mobj.c b/src/p_mobj.c index 694accbd3..1013d8521 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8492,7 +8492,22 @@ void P_MobjThinker(mobj_t *mobj) if (mobj->type == MT_GHOST && mobj->fuse > 0) // Not guaranteed to be MF_SCENERY or not MF_SCENERY! { - if (mobj->flags2 & MF2_BOSSNOTRAP) // "fast" flag + if (mobj->extravalue1 > 0) // Sonic Advance 2 mode + { + if (mobj->extravalue2 >= 2) + { + if (mobj->extravalue2 == 2) // I don't know why the normal logic doesn't work for this. + mobj->renderflags ^= RF_DONTDRAW; + else + { + if (mobj->fuse == mobj->extravalue2) + mobj->renderflags &= ~RF_DONTDRAW; + else + mobj->renderflags |= RF_DONTDRAW; + } + } + } + else if (mobj->flags2 & MF2_BOSSNOTRAP) // "fast" flag { if ((signed)((mobj->renderflags & RF_TRANSMASK) >> RF_TRANSSHIFT) < (NUMTRANSMAPS-1) - (2*mobj->fuse)/3) // fade out when nearing the end of fuse... @@ -8830,21 +8845,6 @@ void P_SceneryThinker(mobj_t *mobj) } } - // Sonic Advance 2 flashing afterimages - if (mobj->type == MT_GHOST && mobj->fuse > 0 - && mobj->extravalue1 > 0 && mobj->extravalue2 >= 2) - { - if (mobj->extravalue2 == 2) // I don't know why the normal logic doesn't work for this. - mobj->renderflags ^= RF_DONTDRAW; - else - { - if (mobj->fuse == mobj->extravalue2) - mobj->renderflags &= ~RF_DONTDRAW; - else - mobj->renderflags |= RF_DONTDRAW; - } - } - // momentum movement if (mobj->momx || mobj->momy) {