diff options
author | QAston <qaston@gmail.com> | 2012-06-17 03:20:44 -0700 |
---|---|---|
committer | QAston <qaston@gmail.com> | 2012-06-17 03:20:44 -0700 |
commit | 33873cc37c1e46bb948c753592e7473465b1832e (patch) | |
tree | 663fbb8ace340980b17209f4229edf843854d10c | |
parent | 14430c5884fbfabb8761ef069faa2e836a6f319a (diff) | |
parent | 3164ba627b3405ac201539f975bb3a57333a5070 (diff) |
Merge pull request #6820 from Elron103/pull-requests
Core/Combat: Fix CanAIAttack implementation
-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; } |