diff --git a/src/p_tick.c b/src/p_tick.c index f009ecc2c15d589983dcff5c4ee79c859c78c491..bc70c3324cebf3a458d1e37931df5a85c32c2989 100644 --- a/src/p_tick.c +++ b/src/p_tick.c @@ -303,6 +303,19 @@ static inline void P_RunThinkers(void) } } +static inline void P_RunPlayerThinkers(void) +{ + for (currentthinker = thinkercap.next; currentthinker != &thinkercap; currentthinker = currentthinker->next) + { + if (currentthinker->function.acp1 == (actionf_p1)P_MobjThinker) + { + mobj_t *mobj = (mobj_t *)currentthinker; + if (mobj->type == MT_PLAYER) + currentthinker->function.acp1(currentthinker); + } + } +} + // // P_DoAutobalanceTeams() // @@ -592,19 +605,16 @@ void P_Ticker(boolean run) P_MapStart(); - if (run) - { - postimgtype = postimgtype2 = postimg_none; + postimgtype = postimgtype2 = postimg_none; - if (demorecording) - G_WriteDemoTiccmd(&players[consoleplayer].cmd, 0); - if (demoplayback) - G_ReadDemoTiccmd(&players[consoleplayer].cmd, 0); + if (demorecording) + G_WriteDemoTiccmd(&players[consoleplayer].cmd, 0); + if (demoplayback) + G_ReadDemoTiccmd(&players[consoleplayer].cmd, 0); - for (i = 0; i < MAXPLAYERS; i++) - if (playeringame[i] && players[i].mo && !P_MobjWasRemoved(players[i].mo)) - P_PlayerThink(&players[i]); - } + for (i = 0; i < MAXPLAYERS; i++) + if (playeringame[i] && players[i].mo && !P_MobjWasRemoved(players[i].mo)) + P_PlayerThink(&players[i]); // Keep track of how long they've been playing! totalplaytime++; @@ -616,18 +626,18 @@ void P_Ticker(boolean run) P_EmeraldManager(); // Power stone mode if (run) - { P_RunThinkers(); + else + P_RunPlayerThinkers(); - // Run any "after all the other thinkers" stuff - for (i = 0; i < MAXPLAYERS; i++) - if (playeringame[i] && players[i].mo && !P_MobjWasRemoved(players[i].mo)) - P_PlayerAfterThink(&players[i]); + // Run any "after all the other thinkers" stuff + for (i = 0; i < MAXPLAYERS; i++) + if (playeringame[i] && players[i].mo && !P_MobjWasRemoved(players[i].mo)) + P_PlayerAfterThink(&players[i]); #ifdef HAVE_BLUA - LUAh_ThinkFrame(); + LUAh_ThinkFrame(); #endif - } // Run shield positioning P_RunShields();