diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-08-19 12:30:37 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2024-08-19 12:30:37 +0200 |
commit | 2c06e7fcdab677df4e5908f69b9655577e08fe69 (patch) | |
tree | fa27171fba5c17ff146556ae0f856403f80aebec /src | |
parent | 342bb55c5eb052ad3244040286a2eb6875793ff4 (diff) |
Core/Spells: Implemented SpellAuraInterruptFlags2::ReleaseEmpower
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Spells/SpellDefines.h | 1 |
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); |