diff options
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 9 | ||||
-rw-r--r-- | src/server/game/Spells/SpellMgr.h | 3 |
2 files changed, 11 insertions, 1 deletions
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 9f878275a6e..d90f7cd7342 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -2131,6 +2131,8 @@ void Spell::EffectDispel() m_caster->SendMessageToSet(spellDispellLog.Write(), true); CallScriptSuccessfulDispel(SpellEffIndex(effectInfo->EffectIndex)); + + m_hitMask |= PROC_HIT_DISPEL; } void Spell::EffectDualWield() @@ -4105,8 +4107,13 @@ void Spell::EffectDispelMechanic() dispel_list.emplace_back(aura->GetId(), aura->GetCasterGUID()); } + if (dispel_list.empty()) + return; + for (auto itr = dispel_list.begin(); itr != dispel_list.end(); ++itr) unitTarget->RemoveAura(itr->first, itr->second, 0, AURA_REMOVE_BY_ENEMY_SPELL); + + m_hitMask |= PROC_HIT_DISPEL; } void Spell::EffectResurrectPet() @@ -4645,6 +4652,8 @@ void Spell::EffectStealBeneficialBuff() } m_caster->SendMessageToSet(spellDispellLog.Write(), true); + + m_hitMask |= PROC_HIT_DISPEL; } void Spell::EffectKillCreditPersonal() diff --git a/src/server/game/Spells/SpellMgr.h b/src/server/game/Spells/SpellMgr.h index 21d3e8ee88e..b547c154c79 100644 --- a/src/server/game/Spells/SpellMgr.h +++ b/src/server/game/Spells/SpellMgr.h @@ -283,7 +283,8 @@ enum ProcFlagsHit : uint32 PROC_HIT_REFLECT = 0x0000800, PROC_HIT_INTERRUPT = 0x0001000, PROC_HIT_FULL_BLOCK = 0x0002000, - PROC_HIT_MASK_ALL = 0x0003FFF + PROC_HIT_DISPEL = 0x0004000, + PROC_HIT_MASK_ALL = 0x0007FFF }; DEFINE_ENUM_FLAG(ProcFlagsHit); |