diff options
author | ariel- <ariel-@users.noreply.github.com> | 2018-01-22 14:02:01 -0300 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-06-16 19:49:57 +0200 |
commit | b46d899ef16ce15e1f8403be076993545035cddc (patch) | |
tree | ff1aac2e51158418a6e6bb1d6a882cf30da0e253 /src | |
parent | df585571f108b3c44d3db1ab82683151f798cbf7 (diff) |
Core/PlayerAI: perform cast checks on auto ranged attack
Closes #19928
(cherry picked from commit 590d2518820d45e54a4a31cc554af18c0695bcd0)
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 be52282a482..edd59878942 100644 --- a/src/server/game/AI/PlayerAI/PlayerAI.cpp +++ b/src/server/game/AI/PlayerAI/PlayerAI.cpp @@ -614,7 +614,21 @@ void PlayerAI::DoRangedAttackIfReady() if (!rangedAttackSpell) return; - me->CastSpell(victim, rangedAttackSpell, TRIGGERED_CAST_DIRECTLY); + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(rangedAttackSpell, me->GetMap()->GetDifficultyID()); + 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); } |