aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-05-22 18:55:17 +0200
committerShauren <shauren.trinity@gmail.com>2023-05-22 18:55:17 +0200
commit206369934aecfcac9a49583f3f7e98f0d69ad55b (patch)
tree0da3b37b7d518d92da95de1538b851bcf9cfe805 /src
parentc2884612cedb33c12e3a0c30883903efd6d700e0 (diff)
Core/Spells: Implemented new proc hit type PROC_HIT_DISPEL
Diffstat (limited to 'src')
-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);