aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2011-11-16 19:09:51 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2011-11-16 19:09:51 +0100
commitc67af87eda3001a141288cfc55a39cc233719618 (patch)
tree4cb6b1151e80da856c17816995c20b25839215c0 /src
parent6cd78a520a61ba59ecf721f47fc5ac9166b139e5 (diff)
Core/Spells: Fix SPELL_EFFECT_SEND_EVENT handler being executed more than once when targets != (0, 0). Closes #3934
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 3767b6ba560..db48f2b8693 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -2141,6 +2141,16 @@ void Spell::EffectSendEvent(SpellEffIndex effIndex)
&& effectHandleMode != SPELL_EFFECT_HANDLE_HIT)
return;
+ //! it's possible for spells with this spell effect to either have a target or no target
+ //! in case of a target, we will execute this handler on SPELL_EFFECT_HANDLE_HIT_TARGET
+ //! with all relevant variables, and we will skip SPELL_EFFECT_HANDLE_HIT
+ if (effectHandleMode == SPELL_EFFECT_HANDLE_HIT)
+ {
+ if (GetSpellInfo()->Effects[effIndex].TargetA.GetTarget() != 0 ||
+ GetSpellInfo()->Effects[effIndex].TargetB.GetTarget() != 0)
+ return;
+ }
+
WorldObject* target = NULL;
// call events for target if present