diff options
author | Machiavelli <machiavelli.trinity@gmail.com> | 2011-11-16 19:09:51 +0100 |
---|---|---|
committer | Machiavelli <machiavelli.trinity@gmail.com> | 2011-11-16 19:09:51 +0100 |
commit | c67af87eda3001a141288cfc55a39cc233719618 (patch) | |
tree | 4cb6b1151e80da856c17816995c20b25839215c0 | |
parent | 6cd78a520a61ba59ecf721f47fc5ac9166b139e5 (diff) |
Core/Spells: Fix SPELL_EFFECT_SEND_EVENT handler being executed more than once when targets != (0, 0). Closes #3934
-rwxr-xr-x | src/server/game/Spells/SpellEffects.cpp | 10 |
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 |