* Remove flashing from spheres in bonus time through #ifdef.

* Fix inconsistency in counting nummaprings.
* Prevent perfect bonus in non-special stage NiGHTS maps.
This commit is contained in:
toaster 2018-06-07 15:10:43 +01:00
parent e054208a31
commit 35a5f7447e
3 changed files with 18 additions and 5 deletions

View File

@ -8765,6 +8765,7 @@ mobj_t *P_SpawnMobj(fixed_t x, fixed_t y, fixed_t z, mobjtype_t type)
break; break;
case MT_RING: case MT_RING:
case MT_COIN: case MT_COIN:
case MT_NIGHTSSTAR:
nummaprings++; nummaprings++;
default: default:
break; break;

View File

@ -852,7 +852,12 @@ void P_ReloadRings(void)
mt->z = (INT16)(R_PointInSubsector(mt->x << FRACBITS, mt->y << FRACBITS) mt->z = (INT16)(R_PointInSubsector(mt->x << FRACBITS, mt->y << FRACBITS)
->sector->floorheight>>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++) for (i = 0; i < numHoops; i++)
@ -866,6 +871,11 @@ void P_SwitchSpheresBonusMode(boolean bonustime)
mobj_t *mo; mobj_t *mo;
thinker_t *th; 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 // scan the thinkers to find spheres to switch
for (th = thinkercap.next; th != &thinkercap; th = th->next) for (th = thinkercap.next; th != &thinkercap; th = th->next)
{ {

View File

@ -1577,11 +1577,13 @@ static void ST_drawNiGHTSHUD(void)
#endif #endif
ST_DrawTopLeftOverlayPatch(16, 8, nbracket); ST_DrawTopLeftOverlayPatch(16, 8, nbracket);
if (G_IsSpecialStage(gamemap)) if (G_IsSpecialStage(gamemap))
ST_DrawTopLeftOverlayPatch(24, 16, ((stplyr->bonustime && (leveltime & 4)) ? nssbon : nsshud)); ST_DrawTopLeftOverlayPatch(24, 16, (
else if (stplyr->bonustime) #ifdef MANIASPHERES
ST_DrawTopLeftOverlayPatch(24, 16, nbon[(leveltime/2)%12]); (stplyr->bonustime && (leveltime & 4)) ? nssbon :
#endif
nsshud));
else else
ST_DrawTopLeftOverlayPatch(24, 16, nhud[(leveltime/2)%12]); ST_DrawTopLeftOverlayPatch(24, 16, *(((stplyr->bonustime) ? nbon : nhud)+((leveltime/2)%12)));
if (G_IsSpecialStage(gamemap)) if (G_IsSpecialStage(gamemap))
{ {