diff options
author | Elron103 <scarymovie87@gmx.de> | 2012-06-16 20:21:57 +0200 |
---|---|---|
committer | Elron103 <scarymovie87@gmx.de> | 2012-06-16 20:55:07 +0200 |
commit | 3164ba627b3405ac201539f975bb3a57333a5070 (patch) | |
tree | af2b86fb2e8620603efc692d90c68fe63d39cdae /src | |
parent | 1c8211e85222ca85e46079bfa809192e68c30fda (diff) |
Core/Combat: Fix CanAIAttack implementation
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Combat/ThreatManager.cpp | 4 | ||||
-rwxr-xr-x | src/server/game/Entities/Unit/Unit.cpp | 4 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/server/game/Combat/ThreatManager.cpp b/src/server/game/Combat/ThreatManager.cpp index 9737d4584ea..0c43c9ece0e 100755 --- a/src/server/game/Combat/ThreatManager.cpp +++ b/src/server/game/Combat/ThreatManager.cpp @@ -354,7 +354,9 @@ HostileReference* ThreatContainer::selectNextVictim(Creature* attacker, HostileR // list sorted and and we check current target, then this is best case if (currentVictim == currentRef || currentRef->getThreat() <= 1.1f * currentVictim->getThreat()) { - currentRef = currentVictim; // for second case + if (currentVictim != currentRef && attacker->canCreatureAttack(currentVictim->getTarget())) + currentRef = currentVictim; // for second case, if currentvictim is attackable + found = true; break; } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 82cdb73a5ba..2646eae5351 100755 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -12958,7 +12958,7 @@ Unit* Creature::SelectVictim() else return NULL; - if (target && _IsTargetAcceptable(target)) + if (target && _IsTargetAcceptable(target) && canCreatureAttack(target)) { SetInFront(target); return target; @@ -12984,7 +12984,7 @@ Unit* Creature::SelectVictim() { target = SelectNearestTargetInAttackDistance(m_CombatDistance ? m_CombatDistance : ATTACK_DISTANCE); - if (target && _IsTargetAcceptable(target)) + if (target && _IsTargetAcceptable(target) && canCreatureAttack(target)) return target; } |