This commit is contained in:
Christoph Oelckers 2014-04-16 16:42:43 +02:00
commit 584dd78ba9

View file

@ -1542,7 +1542,6 @@ bool P_LookForEnemies (AActor *actor, INTBOOL allaround, FLookExParams *params)
bool P_LookForPlayers (AActor *actor, INTBOOL allaround, FLookExParams *params) bool P_LookForPlayers (AActor *actor, INTBOOL allaround, FLookExParams *params)
{ {
int c; int c;
int stop;
int pnum; int pnum;
player_t* player; player_t* player;
bool chasegoal = params? (!(params->flags & LOF_DONTCHASEGOAL)) : true; bool chasegoal = params? (!(params->flags & LOF_DONTCHASEGOAL)) : true;
@ -1615,20 +1614,22 @@ bool P_LookForPlayers (AActor *actor, INTBOOL allaround, FLookExParams *params)
{ {
pnum = actor->LastLookPlayerNumber; pnum = actor->LastLookPlayerNumber;
} }
stop = (pnum - 1) & (MAXPLAYERS-1);
for (;;) for (;;)
{ {
pnum = (pnum + 1) & (MAXPLAYERS-1); // [ED850] Each and every player should only ever be checked once.
if (!playeringame[pnum]) if (c++ < MAXPLAYERS)
continue;
if (actor->TIDtoHate == 0)
{ {
actor->LastLookPlayerNumber = pnum; pnum = (pnum + 1) & (MAXPLAYERS - 1);
} if (!playeringame[pnum])
continue;
if (++c == MAXPLAYERS-1 || pnum == stop) if (actor->TIDtoHate == 0)
{
actor->LastLookPlayerNumber = pnum;
}
}
else
{ {
// done looking // done looking
if (actor->target == NULL) if (actor->target == NULL)
@ -1692,11 +1693,11 @@ bool P_LookForPlayers (AActor *actor, INTBOOL allaround, FLookExParams *params)
&& P_AproxDistance (player->mo->velx, player->mo->vely) && P_AproxDistance (player->mo->velx, player->mo->vely)
< 5*FRACUNIT) < 5*FRACUNIT)
{ // Player is sneaking - can't detect { // Player is sneaking - can't detect
return false; continue;
} }
if (pr_lookforplayers() < 225) if (pr_lookforplayers() < 225)
{ // Player isn't sneaking, but still didn't detect { // Player isn't sneaking, but still didn't detect
return false; continue;
} }
} }
} }