Core/Spells: Implemented SpellAuraInterruptFlags2::ReleaseEmpower

This commit is contained in:
Shauren
2024-08-19 12:30:37 +02:00
parent 342bb55c5e
commit 2c06e7fcda
2 changed files with 4 additions and 3 deletions

View File

@@ -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);
}
}

View File

@@ -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);