aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Spells/SpellEffects.cpp9
-rw-r--r--src/server/game/Spells/SpellMgr.h3
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);