mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2025-01-18 07:22:28 +00:00
Make Bonus Time Start executor into a general Egg Capsule Touch executor
* Entrance/exit flags * Enough/not-enough-rings flags (with "doesn't matter" line option)
This commit is contained in:
parent
8c57218027
commit
3f312ce114
3 changed files with 12 additions and 8 deletions
11
src/p_spec.c
11
src/p_spec.c
|
@ -1418,17 +1418,20 @@ void P_RunNightsLapExecutors(mobj_t *actor)
|
|||
}
|
||||
|
||||
//
|
||||
// P_RunNightsBonusTimeExecutors
|
||||
// P_RunNightsCapsuleTouchExecutors
|
||||
//
|
||||
void P_RunNightsBonusTimeExecutors(mobj_t *actor, boolean preblowup)
|
||||
void P_RunNightsCapsuleTouchExecutors(mobj_t *actor, boolean entering, boolean enoughspheres)
|
||||
{
|
||||
size_t i;
|
||||
|
||||
for (i = 0; i < numlines; i++)
|
||||
{
|
||||
if ((lines[i].special == 329 || lines[i].special == 330)
|
||||
&& ((preblowup && (lines[i].flags & ML_BOUNCY))
|
||||
|| (!preblowup && !(lines[i].flags & ML_BOUNCY))))
|
||||
&& ((entering && (lines[i].flags & ML_TFERLINE))
|
||||
|| (!entering && !(lines[i].flags & ML_TFERLINE)))
|
||||
&& ((lines[i].flags & ML_DONTPEGTOP)
|
||||
|| (enoughspheres && !(lines[i].flags & ML_BOUNCY))
|
||||
|| (!enoughspheres && (lines[i].flags & ML_BOUNCY))))
|
||||
P_RunTriggerLinedef(&lines[i], actor, NULL);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -69,7 +69,7 @@ void P_ChangeSectorTag(UINT32 sector, INT16 newtag);
|
|||
void P_RunNightserizeExecutors(mobj_t *actor);
|
||||
void P_RunDeNightserizeExecutors(mobj_t *actor);
|
||||
void P_RunNightsLapExecutors(mobj_t *actor);
|
||||
void P_RunNightsBonusTimeExecutors(mobj_t *actor, boolean preblowup);
|
||||
void P_RunNightsCapsuleTouchExecutors(mobj_t *actor, boolean entering, boolean enoughspheres);
|
||||
|
||||
ffloor_t *P_GetFFloorByID(sector_t *sec, UINT16 id);
|
||||
|
||||
|
|
|
@ -6009,8 +6009,8 @@ static void P_DoNiGHTSCapsule(player_t *player)
|
|||
}
|
||||
}
|
||||
|
||||
if (player->capsule->extravalue2 <= 0 && player->spheres >= player->capsule->health)
|
||||
P_RunNightsBonusTimeExecutors(player->mo, true); // run pre-blowup executors
|
||||
if (player->capsule->extravalue2 <= 0)
|
||||
P_RunNightsCapsuleTouchExecutors(player->mo, true, player->spheres >= player->capsule->health); // run capsule entrance executors
|
||||
|
||||
// Time to blow it up!
|
||||
if (player->mo->x == player->capsule->x
|
||||
|
@ -6104,7 +6104,7 @@ static void P_DoNiGHTSCapsule(player_t *player)
|
|||
P_SetTarget(&players[i].capsule, NULL); // Remove capsule from everyone now that it is dead!
|
||||
S_StartScreamSound(player->mo, sfx_ngdone);
|
||||
P_SwitchSpheresBonusMode(true);
|
||||
P_RunNightsBonusTimeExecutors(player->mo, false); // run post blow-up executors
|
||||
P_RunNightsCapsuleTouchExecutors(player->mo, false, true); // run capsule exit executors, and we destroyed it
|
||||
}
|
||||
}
|
||||
else
|
||||
|
@ -6114,6 +6114,7 @@ static void P_DoNiGHTSCapsule(player_t *player)
|
|||
player->textvar = 3; // Get more rings!
|
||||
player->capsule->reactiontime = 0;
|
||||
player->capsule->extravalue1 = player->capsule->extravalue2 = -1;
|
||||
P_RunNightsCapsuleTouchExecutors(player->mo, false, false); // run capsule exit executors, and we lacked rings
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
Loading…
Reference in a new issue