lookForLeader() added to main doAI function.

This commit is contained in:
Steve 2015-12-27 18:18:50 +00:00
parent 6cebdd6a89
commit 568abb25f4
1 changed files with 13 additions and 7 deletions

View File

@ -40,7 +40,7 @@ static int nearItems(void);
static void moveToItem(void); static void moveToItem(void);
static int nearTowableCraft(void); static int nearTowableCraft(void);
static void moveToTowableCraft(void); static void moveToTowableCraft(void);
static void lookForPlayer(void); static int lookForPlayer(void);
static int lookForLeader(void); static int lookForLeader(void);
static void fleeEnemies(void); static void fleeEnemies(void);
static int isRetreating(void); static int isRetreating(void);
@ -100,15 +100,20 @@ void doAI(void)
return; return;
} }
if (self->aiFlags & (AIF_FOLLOWS_PLAYER|AIF_MOVES_TO_PLAYER)) if (self->aiFlags & AIF_MOVES_TO_LEADER && lookForLeader())
{
return;
}
if ((self->aiFlags & (AIF_FOLLOWS_PLAYER|AIF_MOVES_TO_PLAYER)) && lookForPlayer())
{ {
lookForPlayer();
return; return;
} }
if (self->aiFlags & AIF_WANDERS) if (self->aiFlags & AIF_WANDERS)
{ {
doWander(); doWander();
return;
} }
/* no idea - just stay where you are */ /* no idea - just stay where you are */
@ -717,17 +722,17 @@ static void moveToTowableCraft(void)
nextAction(); nextAction();
} }
static void lookForPlayer(void) static int lookForPlayer(void)
{ {
int range = (self->aiFlags & AIF_MOVES_TO_PLAYER) ? MAX_TARGET_RANGE : 2000; int range = (self->aiFlags & AIF_MOVES_TO_PLAYER) ? MAX_TARGET_RANGE : 2000;
if (player != NULL && getDistance(self->x, self->y, player->x, player->y) < range) if (player != NULL && getDistance(self->x, self->y, player->x, player->y) < range)
{ {
moveToPlayer(); moveToPlayer();
return; return 1;
} }
applyFighterBrakes(); return 0;
} }
static int lookForLeader(void) static int lookForLeader(void)
@ -736,6 +741,7 @@ static int lookForLeader(void)
Entity *e; Entity *e;
self->leader = NULL; self->leader = NULL;
closest = 0;
for (e = battle.entityHead.next ; e != NULL ; e = e->next) for (e = battle.entityHead.next ; e != NULL ; e = e->next)
{ {
@ -743,7 +749,7 @@ static int lookForLeader(void)
{ {
distance = getDistance(self->x, self->y, e->x, e->y); distance = getDistance(self->x, self->y, e->x, e->y);
if (distance < closest) if (!closest || distance < closest)
{ {
self->leader = e; self->leader = e;
closest = distance; closest = distance;