From db78edb5a371497637adb3644196324d7e44f5df Mon Sep 17 00:00:00 2001 From: Steve Date: Mon, 2 May 2016 11:58:27 +0100 Subject: [PATCH] Disabled target AI bug fixes. --- src/battle/ai.c | 37 ++++++++++++++++++++----------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/battle/ai.c b/src/battle/ai.c index 59242cb..e67d42c 100644 --- a/src/battle/ai.c +++ b/src/battle/ai.c @@ -148,7 +148,7 @@ static void doFighterAI(void) self->target = NULL; } - if (!self->target || self->target->systemPower <= 0) + if (!self->target || (self->target->systemPower <= 0 && (self->target->flags & EF_MUST_DISABLE))) { findTarget(); @@ -344,18 +344,26 @@ static int canAttack(Entity *e) return 0; } - if (!(e->flags & EF_AI_TARGET)) + if (!(self->aiFlags & AIF_ASSASSIN)) { - if (e->aiFlags & (AIF_AVOIDS_COMBAT | AIF_EVADE) || e->flags & EF_SECONDARY_TARGET) + if (e->flags & EF_MUST_DISABLE) { - return !(rand() % 5); + return e->systemPower > 0; + } + + if (!(e->flags & EF_AI_TARGET)) + { + if (e->aiFlags & (AIF_AVOIDS_COMBAT | AIF_EVADE) || e->flags & EF_SECONDARY_TARGET) + { + return !(rand() % 5); + } + } + + /* low chance of attacking something else */ + if ((self->aiFlags & AIF_TARGET_FOCUS) && (!(e->flags & EF_AI_TARGET))) + { + return !(rand() % 100); } - } - - /* low chance of attacking something else */ - if ((self->aiFlags & AIF_TARGET_FOCUS) && (!(e->flags & EF_AI_TARGET))) - { - return !(rand() % 100); } return 1; @@ -370,12 +378,7 @@ static int selectWeaponForTarget(Entity *e) { if (e->flags & EF_MUST_DISABLE) { - if (e->systemPower > 0) - { - return selectWeapon(BT_MAG); - } - - return 0; + return selectWeapon(BT_MAG); } if (e->flags & EF_NO_KILL) @@ -482,7 +485,7 @@ static void preAttack(void) { fireGuns(self); } - else if (self->missiles && (!(self->target->flags & EF_NO_KILL)) && getDistance(self->x, self->y, self->target->x, self->target->y) >= 350) + else if (self->missiles && (!(self->target->flags & (EF_NO_KILL|EF_MUST_DISABLE))) && getDistance(self->x, self->y, self->target->x, self->target->y) >= 350) { fireMissile(self);