aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-05-27 01:40:14 -0300
committerfunjoker <funjoker109@gmail.com>2020-06-14 23:49:03 +0200
commit25f47e468060407610c14b46e857ba1b9cc94203 (patch)
tree5f11ac8bd06078d28df201f2bd3b9a9959274b3e
parentb161447b47ffa2b37a640ee403fdddd32fdca57f (diff)
Core/Spell: abort channeling if no valid targets are found after searching
Closes #17624 (cherry picked from commit 2f19d97d210c70eade4fb87c1d86642d77bbcd69)
-rw-r--r--src/server/game/Spells/Spell.cpp8
1 files changed, 8 insertions, 0 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 270843e6e92..f0b84cc3c45 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -778,6 +778,14 @@ void Spell::SelectSpellTargets()
if (m_spellInfo->IsChanneled())
{
+ // maybe do this for all spells?
+ if (m_UniqueTargetInfo.empty() && m_UniqueGOTargetInfo.empty() && m_UniqueItemInfo.empty())
+ {
+ SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS);
+ finish(false);
+ return;
+ }
+
uint32 mask = (1 << effect->EffectIndex);
for (std::vector<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
{