Initial checkpoint for NiGHTS LE triggers

This commit is contained in:
mazmazz 2018-03-31 10:11:27 -04:00
parent c09991d3d4
commit 3d72c105df
3 changed files with 112 additions and 45 deletions

View File

@ -1374,6 +1374,48 @@ void P_ChangeSectorTag(UINT32 sector, INT16 newtag)
}
}
//
// P_RunNightserizeExecutors
//
void P_RunNightserizeExecutors(mobj_t *actor)
{
size_t i;
for (i = 0; i < numlines; i++)
{
if (lines[i].special == 323 || lines[i].special == 324)
P_RunTriggerLinedef(&lines[i], actor, NULL);
}
}
//
// P_RunDeNightserizeExecutors
//
void P_RunDeNightserizeExecutors(mobj_t *actor)
{
size_t i;
for (i = 0; i < numlines; i++)
{
if (lines[i].special == 325 || lines[i].special == 326)
P_RunTriggerLinedef(&lines[i], actor, NULL);
}
}
//
// P_RunNightsLapExecutors
//
void P_RunNightsLapExecutors(mobj_t *actor)
{
size_t i;
for (i = 0; i < numlines; i++)
{
if (lines[i].special == 327 || lines[i].special == 328)
P_RunTriggerLinedef(&lines[i], actor, NULL);
}
}
/** Hashes the sector tags across the sectors and linedefs.
*
* \sa P_FindSectorFromTag, P_ChangeSectorTag
@ -1667,6 +1709,69 @@ boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller
return false;
}
break;
case 323: // each time
case 324: // once
{ // nightserize
INT32 mareinput = sides[triggerline->sidenum[0]].textureoffset>>FRACBITS;
INT32 lapinput = sides[triggerline->sidenum[0]].rowoffset>>FRACBITS;
BOOL ltemare = triggerline->flags & ML_NOCLIMB;
BOOL gtemare = triggerline->flags & ML_BLOCKMONSTERS;
BOOL ltelap = triggerline->flags & ML_EFFECT1;
BOOL gtelap = triggerline->flags & ML_EFFECT2;
BOOL lapfrombonustime = triggerline->flags & ML_EFFECT3;
BOOL doglobal = triggerline->flags & ML_EFFECT4;
BOOL donomares = triggerline->flags & ML_EFFECT5; // unused for nights lap
BOOL fromnonights = triggerline->flags & ML_BOUNCY; // unused for nights lap
CONS_Printf("Trigger Nightserize %i\n", triggerline->special);
CONS_Printf("M-I %i | M-V %i | M-GTE %i | M-LTE %i | L-I %i | L-V %i/%i | L-GTE %i | L-LTE %i\n"
, mareinput, actor->player->mare, gtemare, ltemare
, lapinput, actor->player->marebonuslap, actor->player->marelap, gtelap, ltelap);
CONS_Printf("L-Bonus %i | Global %i | No Mares %i | From No NiGHTS %i\n", lapfrombonustime, doglobal, donomares, fromnonights);
}
break;
case 325: // each time
case 326: // once
{ // denightserize
INT32 mareinput = sides[triggerline->sidenum[0]].textureoffset>>FRACBITS;
INT32 lapinput = sides[triggerline->sidenum[0]].rowoffset>>FRACBITS;
BOOL ltemare = triggerline->flags & ML_NOCLIMB;
BOOL gtemare = triggerline->flags & ML_BLOCKMONSTERS;
BOOL ltelap = triggerline->flags & ML_EFFECT1;
BOOL gtelap = triggerline->flags & ML_EFFECT2;
BOOL lapfrombonustime = triggerline->flags & ML_EFFECT3;
BOOL doglobal = triggerline->flags & ML_EFFECT4;
BOOL donomares = triggerline->flags & ML_EFFECT5; // all no nights // unused for nights lap
BOOL fromnonights = triggerline->flags & ML_BOUNCY; // unused for nights lap
CONS_Printf("Trigger DeNightserize %i\n", triggerline->special);
CONS_Printf("M-I %i | M-V %i | M-GTE %i | M-LTE %i | L-I %i | L-V %i/%i | L-GTE %i | L-LTE %i\n"
, mareinput, actor->player->mare, gtemare, ltemare
, lapinput, actor->player->marebonuslap, actor->player->marelap, gtelap, ltelap);
CONS_Printf("L-Bonus %i | Global %i | No Mares %i | From No NiGHTS %i\n", lapfrombonustime, doglobal, donomares, fromnonights);
}
break;
case 327: // each time
case 328: // once
{ // nights lap
INT32 mareinput = sides[triggerline->sidenum[0]].textureoffset>>FRACBITS;
INT32 lapinput = sides[triggerline->sidenum[0]].rowoffset>>FRACBITS;
BOOL ltemare = triggerline->flags & ML_NOCLIMB;
BOOL gtemare = triggerline->flags & ML_BLOCKMONSTERS;
BOOL ltelap = triggerline->flags & ML_EFFECT1;
BOOL gtelap = triggerline->flags & ML_EFFECT2;
BOOL lapfrombonustime = triggerline->flags & ML_EFFECT3;
BOOL doglobal = triggerline->flags & ML_EFFECT4;
BOOL donomares = triggerline->flags & ML_EFFECT5; // unused for nights lap
BOOL fromnonights = triggerline->flags & ML_BOUNCY; // unused for nights lap
CONS_Printf("Trigger NiGHTS Lap %i\n", triggerline->special);
CONS_Printf("M-I %i | M-V %i | M-GTE %i | M-LTE %i | L-I %i | L-V %i/%i | L-GTE %i | L-LTE %i\n"
, mareinput, actor->player->mare, gtemare, ltemare
, lapinput, actor->player->marebonuslap, actor->player->marelap, gtelap, ltelap);
CONS_Printf("L-Bonus %i | Global %i | No Mares %i | From No NiGHTS %i\n", lapfrombonustime, doglobal, donomares, fromnonights);
}
break;
default:
break;
}
@ -5487,48 +5592,6 @@ static void P_RunLevelLoadExecutors(void)
}
}
//
// P_RunNightserizeExecutors
//
static void P_RunNightserizeExecutors(mobj_t *actor)
{
size_t i;
for (i = 0; i < numlines; i++)
{
if (lines[i].special == 323 || lines[i].special == 324)
P_RunTriggerLinedef(&lines[i], actor, NULL);
}
}
//
// P_RunDeNightserizeExecutors
//
static void P_RunDeNightserizeExecutors(mobj_t *actor)
{
size_t i;
for (i = 0; i < numlines; i++)
{
if (lines[i].special == 325 || lines[i].special == 326)
P_RunTriggerLinedef(&lines[i], actor, NULL);
}
}
//
// P_RunNightsLapExecutors
//
static void P_RunNightsLapExecutors(mobj_t *actor)
{
size_t i;
for (i = 0; i < numlines; i++)
{
if (lines[i].special == 327 || lines[i].special == 328)
P_RunTriggerLinedef(&lines[i], actor, NULL);
}
}
/** Before things are loaded, initialises certain stuff in case they're needed
* by P_ResetDynamicSlopes or P_LoadThings. This was split off from
* P_SpawnSpecials, in case you couldn't tell.

View File

@ -66,6 +66,9 @@ void P_SwitchWeather(INT32 weathernum);
boolean P_RunTriggerLinedef(line_t *triggerline, mobj_t *actor, sector_t *caller);
void P_LinedefExecute(INT16 tag, mobj_t *actor, sector_t *caller);
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);
ffloor_t *P_GetFFloorByID(sector_t *sec, UINT16 id);

View File

@ -639,7 +639,7 @@ static void P_DeNightserizePlayer(player_t *player)
// Restore from drowning music
P_RestoreMusic(player);
P_RunDeNightserizeExecutors();
P_RunDeNightserizeExecutors(player->mo);
}
//
@ -774,9 +774,10 @@ void P_NightserizePlayer(player_t *player, INT32 nighttime)
player->texttimer = (UINT8)(110 - timeinmap);
}
player->powers[pw_carry] = CR_NIGHTSMODE;
// Do this before setting CR_NIGHTSMODE so we can tell if player was non-NiGHTS
P_RunNightserizeExecutors(player->mo);
player->powers[pw_carry] = CR_NIGHTSMODE;
}
pflags_t P_GetJumpFlags(player_t *player)