aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/AI/SmartScripts
diff options
context:
space:
mode:
authorccrs <ccrs@users.noreply.github.com>2017-08-12 18:19:18 +0200
committerccrs <ccrs@users.noreply.github.com>2017-08-12 18:19:18 +0200
commitee5cbf28bc003ecc52347fdd612e27432bd87c24 (patch)
treebaacabe0dabc742e709d12ccfd532cf8eff179f7 /src/server/game/AI/SmartScripts
parentd117a0e4d4aa29960c04d09ba90d2d0798a5c1b6 (diff)
Core/AI: add missing checks on AssistPlayerInCombatAgainst
Diffstat (limited to 'src/server/game/AI/SmartScripts')
-rw-r--r--src/server/game/AI/SmartScripts/SmartAI.cpp17
1 files changed, 15 insertions, 2 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp
index b886f0d98ad..77a6ba642be 100644
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp
@@ -515,11 +515,24 @@ bool SmartAI::AssistPlayerInCombatAgainst(Unit* who)
if (!who->EnsureVictim()->GetCharmerOrOwnerPlayerOrPlayerItself())
return false;
- // never attack friendly
+ if (!who->isInAccessiblePlaceFor(me))
+ return false;
+
+ if (!CanAIAttack(who))
+ return false;
+
+ // we cannot attack in evade mode
+ if (me->IsInEvadeMode())
+ return false;
+
+ // or if enemy is in evade mode
+ if (who->GetTypeId() == TYPEID_UNIT && who->ToCreature()->IsInEvadeMode())
+ return false;
+
if (!me->IsValidAssistTarget(who->GetVictim()))
return false;
- // too far away and no free sight?
+ // too far away and no free sight
if (me->IsWithinDistInMap(who, SMART_MAX_AID_DIST) && me->IsWithinLOSInMap(who))
{
me->EngageWithTarget(who);