diff options
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/Creature.cpp | 14 | 
1 files changed, 4 insertions, 10 deletions
diff --git a/src/game/Creature.cpp b/src/game/Creature.cpp index c8ff97882d8..c627deb48e3 100644 --- a/src/game/Creature.cpp +++ b/src/game/Creature.cpp @@ -2187,28 +2187,22 @@ bool Creature::_IsTargetAcceptable(const Unit *target) const  {      assert(target); -    // if the target or myself are unattackable, the target is not acceptable -    if (!isAttackableByAOE() || !target->isAttackableByAOE()) -        return false; -      const Unit *myVictim = getAttackerForHelper(); +    const Unit *targetVictim = target->getAttackerForHelper();      // if I'm already fighting target, the target is acceptable -    if (myVictim == target || target->getVictim() == this) +    if (myVictim == target || targetVictim == this)          return true;      // if I'm hostile towards the target, the target is acceptable -    if (IsHostileTo(target)) -        return true; - -    const Unit *targetVictim = target->getAttackerForHelper(); +    if (!canAttack(target, false)) +        return false;      // if the target does not have a victim, the target is not acceptable      if (!targetVictim)          return false;      // if the target's victim is friendly, and the target is neutral, the target is acceptable -    // NOTE: !IsHostileTo(target) is true at this point      if (IsFriendlyTo(targetVictim) && !IsFriendlyTo(target))          return true;  | 
