diff options
| author | ccrs <ccrs@users.noreply.github.com> | 2017-08-12 18:19:18 +0200 | 
|---|---|---|
| committer | ccrs <ccrs@users.noreply.github.com> | 2017-08-12 18:19:18 +0200 | 
| commit | ee5cbf28bc003ecc52347fdd612e27432bd87c24 (patch) | |
| tree | baacabe0dabc742e709d12ccfd532cf8eff179f7 /src/server/game/AI/SmartScripts | |
| parent | d117a0e4d4aa29960c04d09ba90d2d0798a5c1b6 (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.cpp | 17 | 
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); | 
