From 35a5f7447ea72804e029d81e9cd37524246c6448 Mon Sep 17 00:00:00 2001 From: toaster Date: Thu, 7 Jun 2018 15:10:43 +0100 Subject: [PATCH] * Remove flashing from spheres in bonus time through #ifdef. * Fix inconsistency in counting nummaprings. * Prevent perfect bonus in non-special stage NiGHTS maps. --- src/p_mobj.c | 1 + src/p_setup.c | 12 +++++++++++- src/st_stuff.c | 10 ++++++---- 3 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/p_mobj.c b/src/p_mobj.c index 301536ef4..99ffdc871 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -8765,6 +8765,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type) break; case MT_RING: case MT_COIN: + case MT_NIGHTSSTAR: nummaprings++; default: break; diff --git a/src/p_setup.c b/src/p_setup.c index 556428cbb..17cf3bfc7 100644 --- a/src/p_setup.c +++ b/src/p_setup.c @@ -852,7 +852,12 @@ void P_ReloadRings(void) mt->z = (INT16)(R_PointInSubsector(mt->x << FRACBITS, mt->y << FRACBITS) ->sector->floorheight>>FRACBITS); - P_SpawnHoopsAndRings(mt, true); + P_SpawnHoopsAndRings(mt, +#ifdef MANIASPHERES + true); +#else + !G_IsSpecialStage(gamemap)); // prevent flashing spheres in special stages +#endif } } for (i = 0; i < numHoops; i++) @@ -866,6 +871,11 @@ void P_SwitchSpheresBonusMode(boolean bonustime) mobj_t *mo; thinker_t *th; +#ifndef MANIASPHERES + if (G_IsSpecialStage(gamemap)) // prevent flashing spheres in special stages + return; +#endif + // scan the thinkers to find spheres to switch for (th = thinkercap.next; th != &thinkercap; th = th->next) { diff --git a/src/st_stuff.c b/src/st_stuff.c index baa17e9f3..1fd6a6186 100644 --- a/src/st_stuff.c +++ b/src/st_stuff.c @@ -1577,11 +1577,13 @@ static void ST_drawNiGHTSHUD(void) #endif ST_DrawTopLeftOverlayPatch(16, 8, nbracket); if (G_IsSpecialStage(gamemap)) - ST_DrawTopLeftOverlayPatch(24, 16, ((stplyr->bonustime && (leveltime & 4)) ? nssbon : nsshud)); - else if (stplyr->bonustime) - ST_DrawTopLeftOverlayPatch(24, 16, nbon[(leveltime/2)%12]); + ST_DrawTopLeftOverlayPatch(24, 16, ( +#ifdef MANIASPHERES + (stplyr->bonustime && (leveltime & 4)) ? nssbon : +#endif + nsshud)); else - ST_DrawTopLeftOverlayPatch(24, 16, nhud[(leveltime/2)%12]); + ST_DrawTopLeftOverlayPatch(24, 16, *(((stplyr->bonustime) ? nbon : nhud)+((leveltime/2)%12))); if (G_IsSpecialStage(gamemap)) {