diff options
author | ariel- <ariel-@users.noreply.github.com> | 2018-01-22 14:02:01 -0300 |
---|---|---|
committer | ariel- <ariel-@users.noreply.github.com> | 2018-01-22 14:02:01 -0300 |
commit | 590d2518820d45e54a4a31cc554af18c0695bcd0 (patch) | |
tree | d52a84e3230f1dc8385b51fa7abc3285e2d06ab0 /src | |
parent | 514c847881a9fff504e90f1186a1209c0b8a3674 (diff) |
Core/PlayerAI: perform cast checks on auto ranged attack
Closes #19928
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/PlayerAI/PlayerAI.cpp | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/server/game/AI/PlayerAI/PlayerAI.cpp b/src/server/game/AI/PlayerAI/PlayerAI.cpp index 25826b42a50..69a5bc45f1f 100644 --- a/src/server/game/AI/PlayerAI/PlayerAI.cpp +++ b/src/server/game/AI/PlayerAI/PlayerAI.cpp @@ -729,7 +729,21 @@ void PlayerAI::DoRangedAttackIfReady() if (!rangedAttackSpell) return; - me->CastSpell(victim, rangedAttackSpell, TRIGGERED_CAST_DIRECTLY); + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(rangedAttackSpell); + if (!spellInfo) + return; + + Spell* spell = new Spell(me, spellInfo, TRIGGERED_CAST_DIRECTLY); + if (spell->CheckPetCast(victim) != SPELL_CAST_OK) + { + delete spell; + return; + } + + SpellCastTargets targets; + targets.SetUnitTarget(victim); + spell->prepare(targets); + me->resetAttackTimer(RANGED_ATTACK); } |