aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Spells/Spell.cpp6
-rw-r--r--src/server/game/Spells/SpellDefines.h1
2 files changed, 4 insertions, 3 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 40c604c9c71..31d5757cd93 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -4347,7 +4347,7 @@ void Spell::update(uint32 difftime)
if (IsEmpowerSpell())
{
- auto getCompletedEmpowerStages = [&]() -> int32
+ int32 completedStages = [&]() -> int32
{
Milliseconds passed(m_channeledDuration - m_timer);
for (std::size_t i = 0; i < m_empower->StageDurations.size(); ++i)
@@ -4358,9 +4358,8 @@ void Spell::update(uint32 difftime)
}
return m_empower->StageDurations.size();
- };
+ }();
- int32 completedStages = getCompletedEmpowerStages();
if (completedStages != m_empower->CompletedStages)
{
WorldPackets::Spells::SpellEmpowerSetStage empowerSetStage;
@@ -4380,6 +4379,7 @@ void Spell::update(uint32 difftime)
m_empower->IsReleased = true;
m_timer = 0;
CallScriptEmpowerCompletedHandlers(m_empower->CompletedStages);
+ m_caster->ToUnit()->RemoveAurasWithInterruptFlags(SpellAuraInterruptFlags2::ReleaseEmpower, m_spellInfo);
}
}
diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h
index 9fd45a0b200..c7d914d31f9 100644
--- a/src/server/game/Spells/SpellDefines.h
+++ b/src/server/game/Spells/SpellDefines.h
@@ -143,6 +143,7 @@ enum class SpellAuraInterruptFlags2 : uint32
ChallengeModeStart = 0x00400000, // Implemented in Unit::AtStartOfEncounter
StartOfEncounter = 0x00800000, // Implemented in Unit::AtStartOfEncounter
EndOfEncounter = 0x01000000, // Implemented in Unit::AtEndOfEncounter
+ ReleaseEmpower = 0x02000000, // Implemented in Spell::update
};
DEFINE_ENUM_FLAG(SpellAuraInterruptFlags2);