Fixed more mobj thinker iterator oversights and removed all mobj thinker function checks

Mobjs got their own thinker list after all, and disappearing thinkers are automatically purged from their lists and sent to the limbo list.
So it's safe to assume all thinkers inside the mobj list must be mobjs.

Signed-off-by: Nev3r <apophycens@gmail.com>
This commit is contained in:
Nev3r 2019-04-21 16:39:57 +02:00
parent a3174fb56f
commit a9110c0645
18 changed files with 109 additions and 353 deletions

View File

@ -4235,9 +4235,6 @@ static INT16 Consistancy(void)
} }
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo = (mobj_t *)th; mo = (mobj_t *)th;
if (mo->flags & (MF_SPECIAL | MF_SOLID | MF_PUSHABLE | MF_BOSS | MF_MISSILE | MF_SPRING | MF_MONITOR | MF_FIRE | MF_ENEMY | MF_PAIN | MF_STICKY)) if (mo->flags & (MF_SPECIAL | MF_SOLID | MF_PUSHABLE | MF_BOSS | MF_MISSILE | MF_SPRING | MF_MONITOR | MF_FIRE | MF_ENEMY | MF_PAIN | MF_STICKY))

View File

@ -4261,8 +4261,7 @@ static void Command_Archivetest_f(void)
// assign mobjnum // assign mobjnum
i = 1; i = 1;
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
if (th->function.acp1 == (actionf_p1)P_MobjThinker) ((mobj_t *)th)->mobjnum = i++;
((mobj_t *)th)->mobjnum = i++;
// allocate buffer // allocate buffer
buf = save_p = ZZ_Alloc(1024); buf = save_p = ZZ_Alloc(1024);

View File

@ -1663,9 +1663,6 @@ void F_TitleScreenTicker(boolean run)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (!mo2) if (!mo2)

View File

@ -2559,9 +2559,6 @@ void G_ChangePlayerReferences(mobj_t *oldmo, mobj_t *newmo)
// scan all thinkers // scan all thinkers
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (!(mo2->flags & MF_MISSILE)) if (!(mo2->flags & MF_MISSILE))
@ -4457,8 +4454,6 @@ void G_ConsGhostTic(void)
mobj = NULL; mobj = NULL;
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mobj = (mobj_t *)th; mobj = (mobj_t *)th;
if (mobj->type == (mobjtype_t)type && mobj->x == x && mobj->y == y && mobj->z == z) if (mobj->type == (mobjtype_t)type && mobj->x == x && mobj->y == y && mobj->z == z)
break; break;
@ -5853,9 +5848,6 @@ void G_DoPlayMetal(void)
// find metal sonic // find metal sonic
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo = (mobj_t *)th; mo = (mobj_t *)th;
if (mo->type != MT_METALSONIC_RACE) if (mo->type != MT_METALSONIC_RACE)
continue; continue;

View File

@ -1336,11 +1336,7 @@ static void HWR_SearchLightsInMobjs(void)
// search in the list of thinkers // search in the list of thinkers
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ HWR_AddMobjLights((mobj_t *)th);
// a mobj ?
if (th->function.acp1 == (actionf_p1)P_MobjThinker)
HWR_AddMobjLights((mobj_t *)th);
}
} }
#endif #endif

View File

@ -579,9 +579,6 @@ void Command_Teleport_f(void)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type != MT_STARPOST) if (mo2->type != MT_STARPOST)
@ -1071,9 +1068,6 @@ static mapthing_t *OP_CreateNewMapThing(player_t *player, UINT16 type, boolean c
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo = (mobj_t *)th; mo = (mobj_t *)th;
// get offset from mt, which points to old mapthings, then add new location // get offset from mt, which points to old mapthings, then add new location
if (mo->spawnpoint) if (mo->spawnpoint)

View File

@ -3514,11 +3514,8 @@ void A_BossDeath(mobj_t *mo)
// scan the remaining thinkers to see // scan the remaining thinkers to see
// if all bosses are dead // if all bosses are dead
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2 != mo && (mo2->flags & MF_BOSS) && mo2->health > 0) if (mo2 != mo && (mo2->flags & MF_BOSS) && mo2->health > 0)
goto bossjustdie; // other boss not dead - just go straight to dying! goto bossjustdie; // other boss not dead - just go straight to dying!
@ -3573,11 +3570,8 @@ bossjustdie:
// Flee! Flee! Find a point to escape to! If none, just shoot upward! // Flee! Flee! Find a point to escape to! If none, just shoot upward!
// scan the thinkers to find the runaway point // scan the thinkers to find the runaway point
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_BOSSFLYPOINT) if (mo2->type == MT_BOSSFLYPOINT)
@ -5759,11 +5753,8 @@ void A_RingExplode(mobj_t *actor)
S_StartSound(actor, sfx_prloop); S_StartSound(actor, sfx_prloop);
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2 == actor) // Don't explode yourself! Endless loop! if (mo2 == actor) // Don't explode yourself! Endless loop!
@ -7435,11 +7426,8 @@ void A_Boss3Path(mobj_t *actor)
// scan the thinkers // scan the thinkers
// to find a point that matches // to find a point that matches
// the number // the number
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_BOSS3WAYPOINT && mo2->spawnpoint && mo2->spawnpoint->angle == actor->threshold) if (mo2->type == MT_BOSS3WAYPOINT && mo2->spawnpoint && mo2->spawnpoint->angle == actor->threshold)
{ {
@ -7826,11 +7814,8 @@ void A_FindTarget(mobj_t *actor)
CONS_Debug(DBG_GAMELOGIC, "A_FindTarget called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2); CONS_Debug(DBG_GAMELOGIC, "A_FindTarget called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2);
// scan the thinkers // scan the thinkers
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == (mobjtype_t)locvar1) if (mo2->type == (mobjtype_t)locvar1)
@ -7891,11 +7876,8 @@ void A_FindTracer(mobj_t *actor)
CONS_Debug(DBG_GAMELOGIC, "A_FindTracer called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2); CONS_Debug(DBG_GAMELOGIC, "A_FindTracer called from object type %d, var1: %d, var2: %d\n", actor->type, locvar1, locvar2);
// scan the thinkers // scan the thinkers
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == (mobjtype_t)locvar1) if (mo2->type == (mobjtype_t)locvar1)
@ -8454,11 +8436,8 @@ void A_RemoteAction(mobj_t *actor)
fixed_t dist1 = 0, dist2 = 0; fixed_t dist1 = 0, dist2 = 0;
// scan the thinkers // scan the thinkers
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == (mobjtype_t)locvar1) if (mo2->type == (mobjtype_t)locvar1)
@ -8720,11 +8699,8 @@ void A_SetObjectTypeState(mobj_t *actor)
return; return;
#endif #endif
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == (mobjtype_t)loc2lw) if (mo2->type == (mobjtype_t)loc2lw)
@ -9358,11 +9334,8 @@ void A_CheckThingCount(mobj_t *actor)
return; return;
#endif #endif
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == (mobjtype_t)loc1up) if (mo2->type == (mobjtype_t)loc1up)

View File

@ -1981,11 +1981,8 @@ void T_ThwompSector(levelspecthink_t *thwomp)
if (!rover || (rover->flags & FF_EXISTS)) if (!rover || (rover->flags & FF_EXISTS))
{ {
// scan the thinkers to find players! // scan the thinkers to find players!
for (th = thlist[THINK_MAIN].next; th != &thlist[THINK_MAIN]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo = (mobj_t *)th; mo = (mobj_t *)th;
if (mo->type == MT_PLAYER && mo->health && mo->player && !mo->player->spectator if (mo->type == MT_PLAYER && mo->health && mo->player && !mo->player->spectator
&& mo->z <= thwomp->sector->ceilingheight && mo->z <= thwomp->sector->ceilingheight

View File

@ -99,9 +99,6 @@ void P_ClearStarPost(INT32 postnum)
// scan the thinkers // scan the thinkers
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type != MT_STARPOST) if (mo2->type != MT_STARPOST)
@ -128,9 +125,6 @@ void P_ResetStarposts(void)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
post = (mobj_t *)th; post = (mobj_t *)th;
if (post->type == MT_STARPOST) if (post->type == MT_STARPOST)
@ -809,9 +803,6 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
// scan the thinkers to find the corresponding anchorpoint // scan the thinkers to find the corresponding anchorpoint
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_IDEYAANCHOR) if (mo2->type == MT_IDEYAANCHOR)
@ -903,9 +894,6 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
// scan the remaining thinkers // scan the remaining thinkers
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2 == special) if (mo2 == special)
@ -953,9 +941,6 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
// in from the paraloop. Isn't this just so efficient? // in from the paraloop. Isn't this just so efficient?
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (P_AproxDistance(P_AproxDistance(mo2->x - x, mo2->y - y), mo2->z - z) > gatherradius) if (P_AproxDistance(P_AproxDistance(mo2->x - x, mo2->y - y), mo2->z - z) > gatherradius)
@ -1327,9 +1312,6 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
// scan the remaining thinkers to find koopa // scan the remaining thinkers to find koopa
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_KOOPA) if (mo2->type == MT_KOOPA)
{ {
@ -1426,9 +1408,6 @@ void P_TouchSpecialThing(mobj_t *special, mobj_t *toucher, boolean heightcheck)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type != MT_STARPOST) if (mo2->type != MT_STARPOST)
@ -2463,9 +2442,6 @@ void P_KillMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, UINT8 damaget
// this can happen if the boss was hurt earlier than expected // this can happen if the boss was hurt earlier than expected
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo = (mobj_t *)th; mo = (mobj_t *)th;
if (mo->type == (mobjtype_t)target->info->mass && mo->tracer == target) if (mo->type == (mobjtype_t)target->info->mass && mo->tracer == target)
{ {

View File

@ -715,9 +715,6 @@ void P_EmeraldManager(void)
for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next) for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next)
{ {
if (think->function.acp1 != (actionf_p1)P_MobjThinker)
continue; // not a mobj thinker
mo = (mobj_t *)think; mo = (mobj_t *)think;
if (mo->type == MT_EMERALDSPAWN) if (mo->type == MT_EMERALDSPAWN)
@ -3701,9 +3698,6 @@ void P_DestroyRobots(void)
for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next) for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next)
{ {
if (think->function.acp1 != (actionf_p1)P_MobjThinker)
continue; // not a mobj thinker
mo = (mobj_t *)think; mo = (mobj_t *)think;
if (mo->health <= 0 || !(mo->flags & (MF_ENEMY|MF_BOSS))) if (mo->health <= 0 || !(mo->flags & (MF_ENEMY|MF_BOSS)))
continue; // not a valid enemy continue; // not a valid enemy
@ -4485,9 +4479,6 @@ static void P_Boss3Thinker(mobj_t *mobj)
// this can happen if the boss was hurt earlier than expected // this can happen if the boss was hurt earlier than expected
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == (mobjtype_t)mobj->info->mass && mo2->tracer == mobj) if (mo2->type == (mobjtype_t)mobj->info->mass && mo2->tracer == mobj)
{ {
@ -4576,9 +4567,6 @@ static void P_Boss3Thinker(mobj_t *mobj)
// the number // the number
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_BOSS3WAYPOINT && mo2->spawnpoint && mo2->spawnpoint->angle == mobj->threshold) if (mo2->type == MT_BOSS3WAYPOINT && mo2->spawnpoint && mo2->spawnpoint->angle == mobj->threshold)
{ {
@ -5197,9 +5185,6 @@ static void P_Boss7Thinker(mobj_t *mobj)
// Find waypoint he is closest to // Find waypoint he is closest to
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_BOSS3WAYPOINT && mo2->spawnpoint) if (mo2->type == MT_BOSS3WAYPOINT && mo2->spawnpoint)
{ {
@ -5252,9 +5237,6 @@ static void P_Boss7Thinker(mobj_t *mobj)
// the waypoint to use // the waypoint to use
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_BOSS3WAYPOINT && mo2->spawnpoint && (mo2->spawnpoint->options & 7) == waypointNum) if (mo2->type == MT_BOSS3WAYPOINT && mo2->spawnpoint && (mo2->spawnpoint->options & 7) == waypointNum)
{ {
@ -5384,9 +5366,6 @@ static void P_Boss9Thinker(mobj_t *mobj)
// Build a hoop linked list of 'em! // Build a hoop linked list of 'em!
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_BOSS9GATHERPOINT) if (mo2->type == MT_BOSS9GATHERPOINT)
{ {
@ -5850,9 +5829,6 @@ mobj_t *P_GetClosestAxis(mobj_t *source)
// scan the thinkers to find the closest axis point // scan the thinkers to find the closest axis point
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_AXIS) if (mo2->type == MT_AXIS)
@ -11087,9 +11063,6 @@ ML_EFFECT4 : Don't clip inside the ground
// See if other starposts exist in this level that have the same value. // See if other starposts exist in this level that have the same value.
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2 == mobj) if (mo2 == mobj)

View File

@ -1510,29 +1510,26 @@ void Polyobj_InitLevel(void)
// the mobj_t pointers on a queue for use below. // the mobj_t pointers on a queue for use below.
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 == (actionf_p1)P_MobjThinker) mobj_t *mo = (mobj_t *)th;
if (mo->info->doomednum == POLYOBJ_SPAWN_DOOMEDNUM ||
mo->info->doomednum == POLYOBJ_SPAWNCRUSH_DOOMEDNUM)
{ {
mobj_t *mo = (mobj_t *)th; ++numPolyObjects;
if (mo->info->doomednum == POLYOBJ_SPAWN_DOOMEDNUM || qitem = malloc(sizeof(mobjqitem_t));
mo->info->doomednum == POLYOBJ_SPAWNCRUSH_DOOMEDNUM) memset(qitem, 0, sizeof(mobjqitem_t));
{ qitem->mo = mo;
++numPolyObjects; M_QueueInsert(&(qitem->mqitem), &spawnqueue);
}
else if (mo->info->doomednum == POLYOBJ_ANCHOR_DOOMEDNUM)
{
++numAnchors;
qitem = malloc(sizeof(mobjqitem_t)); qitem = malloc(sizeof(mobjqitem_t));
memset(qitem, 0, sizeof(mobjqitem_t)); memset(qitem, 0, sizeof(mobjqitem_t));
qitem->mo = mo; qitem->mo = mo;
M_QueueInsert(&(qitem->mqitem), &spawnqueue); M_QueueInsert(&(qitem->mqitem), &anchorqueue);
}
else if (mo->info->doomednum == POLYOBJ_ANCHOR_DOOMEDNUM)
{
++numAnchors;
qitem = malloc(sizeof(mobjqitem_t));
memset(qitem, 0, sizeof(mobjqitem_t));
qitem->mo = mo;
M_QueueInsert(&(qitem->mqitem), &anchorqueue);
}
} }
} }
@ -1818,9 +1815,6 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
// We redo this each tic to make savegame compatibility easier. // We redo this each tic to make savegame compatibility easier.
for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next) for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next)
{ {
if (wp->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)wp; mo2 = (mobj_t *)wp;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -1899,9 +1893,6 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
// Find next waypoint // Find next waypoint
for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next) for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next)
{ {
if (wp->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)wp; mo2 = (mobj_t *)wp;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -1938,9 +1929,6 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next) for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next)
{ {
if (wp->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)wp; mo2 = (mobj_t *)wp;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -1975,9 +1963,6 @@ void T_PolyObjWaypoint(polywaypoint_t *th)
for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next) for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next)
{ {
if (wp->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)wp; mo2 = (mobj_t *)wp;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -2526,9 +2511,6 @@ INT32 EV_DoPolyObjWaypoint(polywaypointdata_t *pwdata)
// Find the first waypoint we need to use // Find the first waypoint we need to use
for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next) for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next)
{ {
if (wp->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)wp; mo2 = (mobj_t *)wp;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -2597,9 +2579,6 @@ INT32 EV_DoPolyObjWaypoint(polywaypointdata_t *pwdata)
target = first; target = first;
/*for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next) /*for (wp = thlist[THINK_MOBJ].next; wp != &thlist[THINK_MOBJ]; wp = wp->next)
{ {
if (wp->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)wp; mo2 = (mobj_t *)wp;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)

View File

@ -2424,9 +2424,6 @@ mobj_t *P_FindNewPosition(UINT32 oldposition)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mobj = (mobj_t *)th; mobj = (mobj_t *)th;
if (mobj->mobjnum == oldposition) if (mobj->mobjnum == oldposition)
return mobj; return mobj;
@ -3722,11 +3719,8 @@ static inline void P_FinishMobjs(void)
for (currentthinker = thlist[THINK_MOBJ].next; currentthinker != &thlist[THINK_MOBJ]; for (currentthinker = thlist[THINK_MOBJ].next; currentthinker != &thlist[THINK_MOBJ];
currentthinker = currentthinker->next) currentthinker = currentthinker->next)
{ {
if (currentthinker->function.acp1 == (actionf_p1)P_MobjThinker) mobj = (mobj_t *)currentthinker;
{ mobj->info = &mobjinfo[mobj->type];
mobj = (mobj_t *)currentthinker;
mobj->info = &mobjinfo[mobj->type];
}
} }
} }
@ -3740,83 +3734,80 @@ static void P_RelinkPointers(void)
for (currentthinker = thlist[THINK_MOBJ].next; currentthinker != &thlist[THINK_MOBJ]; for (currentthinker = thlist[THINK_MOBJ].next; currentthinker != &thlist[THINK_MOBJ];
currentthinker = currentthinker->next) currentthinker = currentthinker->next)
{ {
if (currentthinker->function.acp1 == (actionf_p1)P_MobjThinker) mobj = (mobj_t *)currentthinker;
if (mobj->type == MT_HOOP || mobj->type == MT_HOOPCOLLIDE || mobj->type == MT_HOOPCENTER)
continue;
if (mobj->tracer)
{ {
mobj = (mobj_t *)currentthinker; temp = (UINT32)(size_t)mobj->tracer;
mobj->tracer = NULL;
if (mobj->type == MT_HOOP || mobj->type == MT_HOOPCOLLIDE || mobj->type == MT_HOOPCENTER) if (!P_SetTarget(&mobj->tracer, P_FindNewPosition(temp)))
continue; CONS_Debug(DBG_GAMELOGIC, "tracer not found on %d\n", mobj->type);
}
if (mobj->tracer) if (mobj->target)
{ {
temp = (UINT32)(size_t)mobj->tracer; temp = (UINT32)(size_t)mobj->target;
mobj->tracer = NULL; mobj->target = NULL;
if (!P_SetTarget(&mobj->tracer, P_FindNewPosition(temp))) if (!P_SetTarget(&mobj->target, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "tracer not found on %d\n", mobj->type); CONS_Debug(DBG_GAMELOGIC, "target not found on %d\n", mobj->type);
} }
if (mobj->target) if (mobj->hnext)
{ {
temp = (UINT32)(size_t)mobj->target; temp = (UINT32)(size_t)mobj->hnext;
mobj->target = NULL; mobj->hnext = NULL;
if (!P_SetTarget(&mobj->target, P_FindNewPosition(temp))) if (!(mobj->hnext = P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "target not found on %d\n", mobj->type); CONS_Debug(DBG_GAMELOGIC, "hnext not found on %d\n", mobj->type);
} }
if (mobj->hnext) if (mobj->hprev)
{ {
temp = (UINT32)(size_t)mobj->hnext; temp = (UINT32)(size_t)mobj->hprev;
mobj->hnext = NULL; mobj->hprev = NULL;
if (!(mobj->hnext = P_FindNewPosition(temp))) if (!(mobj->hprev = P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "hnext not found on %d\n", mobj->type); CONS_Debug(DBG_GAMELOGIC, "hprev not found on %d\n", mobj->type);
} }
if (mobj->hprev) if (mobj->player && mobj->player->capsule)
{ {
temp = (UINT32)(size_t)mobj->hprev; temp = (UINT32)(size_t)mobj->player->capsule;
mobj->hprev = NULL; mobj->player->capsule = NULL;
if (!(mobj->hprev = P_FindNewPosition(temp))) if (!P_SetTarget(&mobj->player->capsule, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "hprev not found on %d\n", mobj->type); CONS_Debug(DBG_GAMELOGIC, "capsule not found on %d\n", mobj->type);
} }
if (mobj->player && mobj->player->capsule) if (mobj->player && mobj->player->axis1)
{ {
temp = (UINT32)(size_t)mobj->player->capsule; temp = (UINT32)(size_t)mobj->player->axis1;
mobj->player->capsule = NULL; mobj->player->axis1 = NULL;
if (!P_SetTarget(&mobj->player->capsule, P_FindNewPosition(temp))) if (!P_SetTarget(&mobj->player->axis1, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "capsule not found on %d\n", mobj->type); CONS_Debug(DBG_GAMELOGIC, "axis1 not found on %d\n", mobj->type);
} }
if (mobj->player && mobj->player->axis1) if (mobj->player && mobj->player->axis2)
{ {
temp = (UINT32)(size_t)mobj->player->axis1; temp = (UINT32)(size_t)mobj->player->axis2;
mobj->player->axis1 = NULL; mobj->player->axis2 = NULL;
if (!P_SetTarget(&mobj->player->axis1, P_FindNewPosition(temp))) if (!P_SetTarget(&mobj->player->axis2, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "axis1 not found on %d\n", mobj->type); CONS_Debug(DBG_GAMELOGIC, "axis2 not found on %d\n", mobj->type);
} }
if (mobj->player && mobj->player->axis2) if (mobj->player && mobj->player->awayviewmobj)
{ {
temp = (UINT32)(size_t)mobj->player->axis2; temp = (UINT32)(size_t)mobj->player->awayviewmobj;
mobj->player->axis2 = NULL; mobj->player->awayviewmobj = NULL;
if (!P_SetTarget(&mobj->player->axis2, P_FindNewPosition(temp))) if (!P_SetTarget(&mobj->player->awayviewmobj, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "axis2 not found on %d\n", mobj->type); CONS_Debug(DBG_GAMELOGIC, "awayviewmobj not found on %d\n", mobj->type);
} }
if (mobj->player && mobj->player->awayviewmobj) if (mobj->player && mobj->player->followmobj)
{ {
temp = (UINT32)(size_t)mobj->player->awayviewmobj; temp = (UINT32)(size_t)mobj->player->followmobj;
mobj->player->awayviewmobj = NULL; mobj->player->followmobj = NULL;
if (!P_SetTarget(&mobj->player->awayviewmobj, P_FindNewPosition(temp))) if (!P_SetTarget(&mobj->player->followmobj, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "awayviewmobj not found on %d\n", mobj->type); CONS_Debug(DBG_GAMELOGIC, "followmobj not found on %d\n", mobj->type);
} }
if (mobj->player && mobj->player->followmobj) if (mobj->player && mobj->player->drone)
{ {
temp = (UINT32)(size_t)mobj->player->followmobj; temp = (UINT32)(size_t)mobj->player->drone;
mobj->player->followmobj = NULL; mobj->player->drone = NULL;
if (!P_SetTarget(&mobj->player->followmobj, P_FindNewPosition(temp))) if (!P_SetTarget(&mobj->player->drone, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "followmobj not found on %d\n", mobj->type); CONS_Debug(DBG_GAMELOGIC, "drone not found on %d\n", mobj->type);
}
if (mobj->player && mobj->player->drone)
{
temp = (UINT32)(size_t)mobj->player->drone;
mobj->player->drone = NULL;
if (!P_SetTarget(&mobj->player->drone, P_FindNewPosition(temp)))
CONS_Debug(DBG_GAMELOGIC, "drone not found on %d\n", mobj->type);
}
} }
} }
} }
@ -4120,13 +4111,10 @@ void P_SaveNetGame(void)
// Assign the mobjnumber for pointer tracking // Assign the mobjnumber for pointer tracking
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 == (actionf_p1)P_MobjThinker) mobj = (mobj_t *)th;
{ if (mobj->type == MT_HOOP || mobj->type == MT_HOOPCOLLIDE || mobj->type == MT_HOOPCENTER)
mobj = (mobj_t *)th; continue;
if (mobj->type == MT_HOOP || mobj->type == MT_HOOPCOLLIDE || mobj->type == MT_HOOPCENTER) mobj->mobjnum = i++;
continue;
mobj->mobjnum = i++;
}
} }
P_NetArchivePlayers(); P_NetArchivePlayers();

View File

@ -816,9 +816,6 @@ void P_ReloadRings(void)
// scan the thinkers to find rings/spheres/hoops to unset // scan the thinkers to find rings/spheres/hoops to unset
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo = (mobj_t *)th; mo = (mobj_t *)th;
if (mo->type == MT_HOOPCENTER) if (mo->type == MT_HOOPCENTER)
@ -885,9 +882,6 @@ void P_SwitchSpheresBonusMode(boolean bonustime)
// scan the thinkers to find spheres to switch // scan the thinkers to find spheres to switch
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo = (mobj_t *)th; mo = (mobj_t *)th;
if (mo->type != MT_BLUESPHERE && mo->type != MT_NIGHTSCHIP if (mo->type != MT_BLUESPHERE && mo->type != MT_NIGHTSCHIP
@ -2300,9 +2294,6 @@ void P_LoadThingsOnly(void)
for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next) for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next)
{ {
if (think->function.acp1 != (actionf_p1)P_MobjThinker)
continue; // not a mobj thinker
mo = (mobj_t *)think; mo = (mobj_t *)think;
if (mo) if (mo)

View File

@ -3974,9 +3974,6 @@ void P_SetupSignExit(player_t *player)
// spin all signposts in the level then. // spin all signposts in the level then.
for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next) for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next)
{ {
if (think->function.acp1 != (actionf_p1)P_MobjThinker)
continue; // not a mobj thinker
thing = (mobj_t *)think; thing = (mobj_t *)think;
if (thing->type != MT_SIGN) if (thing->type != MT_SIGN)
continue; continue;
@ -4006,9 +4003,6 @@ boolean P_IsFlagAtBase(mobjtype_t flag)
for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next) for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next)
{ {
if (think->function.acp1 != (actionf_p1)P_MobjThinker)
continue; // not a mobj thinker
mo = (mobj_t *)think; mo = (mobj_t *)think;
if (mo->type != flag) if (mo->type != flag)
@ -4439,9 +4433,6 @@ void P_ProcessSpecialSector(player_t *player, sector_t *sector, sector_t *rovers
// The chimps are my friends.. heeheeheheehehee..... - LouisJM // The chimps are my friends.. heeheeheheehehee..... - LouisJM
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_EGGTRAP) if (mo2->type == MT_EGGTRAP)
P_KillMobj(mo2, NULL, player->mo, 0); P_KillMobj(mo2, NULL, player->mo, 0);
@ -4745,9 +4736,6 @@ DoneSection2:
// to find the first waypoint // to find the first waypoint
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_TUBEWAYPOINT && mo2->threshold == sequence if (mo2->type == MT_TUBEWAYPOINT && mo2->threshold == sequence
@ -4824,9 +4812,6 @@ DoneSection2:
// to find the last waypoint // to find the last waypoint
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_TUBEWAYPOINT && mo2->threshold == sequence) if (mo2->type == MT_TUBEWAYPOINT && mo2->threshold == sequence)
@ -4976,9 +4961,6 @@ DoneSection2:
// to find the first waypoint // to find the first waypoint
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -5014,9 +4996,6 @@ DoneSection2:
// Find waypoint before this one (waypointlow) // Find waypoint before this one (waypointlow)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -5041,9 +5020,6 @@ DoneSection2:
// Find waypoint after this one (waypointhigh) // Find waypoint after this one (waypointhigh)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)

View File

@ -141,9 +141,6 @@ void Command_CountMobjs_f(void)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
if (((mobj_t *)th)->type == i) if (((mobj_t *)th)->type == i)
count++; count++;
} }
@ -161,9 +158,6 @@ void Command_CountMobjs_f(void)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
if (((mobj_t *)th)->type == i) if (((mobj_t *)th)->type == i)
count++; count++;
} }

View File

@ -345,9 +345,6 @@ UINT8 P_FindLowestMare(void)
// to find the egg capsule with the lowest mare // to find the egg capsule with the lowest mare
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_EGGCAPSULE && mo2->health > 0) if (mo2->type == MT_EGGCAPSULE && mo2->health > 0)
@ -394,9 +391,6 @@ boolean P_TransferToNextMare(player_t *player)
// to find the closest axis point // to find the closest axis point
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_AXIS) if (mo2->type == MT_AXIS)
@ -445,9 +439,6 @@ static mobj_t *P_FindAxis(INT32 mare, INT32 axisnum)
// to find the closest axis point // to find the closest axis point
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
// Axis things are only at beginning of list. // Axis things are only at beginning of list.
@ -478,9 +469,6 @@ static mobj_t *P_FindAxisTransfer(INT32 mare, INT32 axisnum, mobjtype_t type)
// to find the closest axis point // to find the closest axis point
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
// Axis things are only at beginning of list. // Axis things are only at beginning of list.
@ -517,9 +505,6 @@ void P_TransferToAxis(player_t *player, INT32 axisnum)
// to find the closest axis point // to find the closest axis point
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_AXIS) if (mo2->type == MT_AXIS)
@ -617,9 +602,6 @@ static void P_DeNightserizePlayer(player_t *player)
// Check to see if the player should be killed. // Check to see if the player should be killed.
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (!(mo2->type == MT_NIGHTSDRONE)) if (!(mo2->type == MT_NIGHTSDRONE))
continue; continue;
@ -1569,9 +1551,6 @@ void P_SpawnShieldOrb(player_t *player)
// blaze through the thinkers to see if an orb already exists! // blaze through the thinkers to see if an orb already exists!
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
shieldobj = (mobj_t *)th; shieldobj = (mobj_t *)th;
if (shieldobj->type == orbtype && shieldobj->target == player->mo) if (shieldobj->type == orbtype && shieldobj->target == player->mo)
@ -4440,9 +4419,6 @@ void P_Telekinesis(player_t *player, fixed_t thrust, fixed_t range)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2 == player->mo) if (mo2 == player->mo)
@ -5637,9 +5613,6 @@ static void P_NightsTransferPoints(player_t *player, fixed_t xspeed, fixed_t rad
// Find next waypoint // Find next waypoint
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
// Axis things are only at beginning of list. // Axis things are only at beginning of list.
@ -5673,9 +5646,6 @@ static void P_NightsTransferPoints(player_t *player, fixed_t xspeed, fixed_t rad
{ {
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
// Axis things are only at beginning of list. // Axis things are only at beginning of list.
@ -5701,9 +5671,6 @@ static void P_NightsTransferPoints(player_t *player, fixed_t xspeed, fixed_t rad
{ {
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
// Axis things are only at beginning of list. // Axis things are only at beginning of list.
@ -6408,9 +6375,6 @@ static void P_NiGHTSMovement(player_t *player)
// to find the closest axis point // to find the closest axis point
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_AXIS) if (mo2->type == MT_AXIS)
@ -7218,9 +7182,6 @@ static void P_MovePlayer(player_t *player)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_EGGCAPSULE if (mo2->type == MT_EGGCAPSULE
@ -8126,9 +8087,6 @@ static void P_DoZoomTube(player_t *player)
// Find next waypoint // Find next waypoint
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -8260,9 +8218,6 @@ static void P_DoRopeHang(player_t *player)
// Find next waypoint // Find next waypoint
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -8285,9 +8240,6 @@ static void P_DoRopeHang(player_t *player)
// Wrap around back to first waypoint // Wrap around back to first waypoint
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker) // Not a mobj thinker
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type != MT_TUBEWAYPOINT) if (mo2->type != MT_TUBEWAYPOINT)
@ -8351,9 +8303,6 @@ static void P_NukeAllPlayers(player_t *player)
for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next) for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next)
{ {
if (think->function.acp1 != (actionf_p1)P_MobjThinker)
continue; // not a mobj thinker
mo = (mobj_t *)think; mo = (mobj_t *)think;
if (!mo->player) if (!mo->player)
@ -8399,9 +8348,6 @@ void P_NukeEnemies(mobj_t *inflictor, mobj_t *source, fixed_t radius)
for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next) for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next)
{ {
if (think->function.acp1 != (actionf_p1)P_MobjThinker)
continue; // not a mobj thinker
mo = (mobj_t *)think; mo = (mobj_t *)think;
if (!(mo->flags & MF_SHOOTABLE) && !(mo->type == MT_EGGGUARD || mo->type == MT_MINUS)) if (!(mo->flags & MF_SHOOTABLE) && !(mo->type == MT_EGGGUARD || mo->type == MT_MINUS))
@ -8450,9 +8396,6 @@ mobj_t *P_LookForEnemies(player_t *player, boolean nonenemies, boolean bullet)
for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next) for (think = thlist[THINK_MOBJ].next; think != &thlist[THINK_MOBJ]; think = think->next)
{ {
if (think->function.acp1 != (actionf_p1)P_MobjThinker)
continue; // not a mobj thinker
mo = (mobj_t *)think; mo = (mobj_t *)think;
if (!(mo->flags & (MF_ENEMY|MF_BOSS|MF_MONITOR|MF_SPRING)) == !(mo->flags2 & MF2_INVERTAIMABLE)) // allows if it has the flags desired XOR it has the invert aimable flag if (!(mo->flags & (MF_ENEMY|MF_BOSS|MF_MONITOR|MF_SPRING)) == !(mo->flags2 & MF2_INVERTAIMABLE)) // allows if it has the flags desired XOR it has the invert aimable flag
continue; // not a valid target continue; // not a valid target
@ -8589,9 +8532,6 @@ void P_FindEmerald(void)
// to find all emeralds // to find all emeralds
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_EMERHUNT) if (mo2->type == MT_EMERHUNT)
{ {
@ -10015,9 +9955,6 @@ void P_PlayerThink(player_t *player)
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (!(mo2->type == MT_RING || mo2->type == MT_COIN if (!(mo2->type == MT_RING || mo2->type == MT_COIN

View File

@ -2243,8 +2243,7 @@ void R_PrecacheLevel(void)
if (spritepresent == NULL) I_Error("%s: Out of memory looking up sprites", "R_PrecacheLevel"); if (spritepresent == NULL) I_Error("%s: Out of memory looking up sprites", "R_PrecacheLevel");
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
if (th->function.acp1 == (actionf_p1)P_MobjThinker) spritepresent[((mobj_t *)th)->sprite] = 1;
spritepresent[((mobj_t *)th)->sprite] = 1;
spritememory = 0; spritememory = 0;
for (i = 0; i < numsprites; i++) for (i = 0; i < numsprites; i++)

View File

@ -2291,8 +2291,6 @@ static void ST_doItemFinderIconsAndSound(void)
// Scan thinkers to find emblem mobj with these ids // Scan thinkers to find emblem mobj with these ids
for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next) for (th = thlist[THINK_MOBJ].next; th != &thlist[THINK_MOBJ]; th = th->next)
{ {
if (th->function.acp1 != (actionf_p1)P_MobjThinker)
continue;
mo2 = (mobj_t *)th; mo2 = (mobj_t *)th;
if (mo2->type == MT_EMBLEM) if (mo2->type == MT_EMBLEM)