aboutsummaryrefslogtreecommitdiff
path: root/src/game/SpellHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/game/SpellHandler.cpp')
-rw-r--r--src/game/SpellHandler.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/src/game/SpellHandler.cpp b/src/game/SpellHandler.cpp
index f0d004a0329..77f2ab8f1d6 100644
--- a/src/game/SpellHandler.cpp
+++ b/src/game/SpellHandler.cpp
@@ -362,6 +362,28 @@ void WorldSession::HandleCancelAuraOpcode( WorldPacket& recvPacket)
if(!IsPositiveSpell(spellId) || (spellInfo->Attributes & SPELL_ATTR_CANT_CANCEL))
return;
+ // lifebloom must delete final heal effect
+ if (spellInfo->SpellFamilyName == SPELLFAMILY_DRUID && (spellInfo->SpellFamilyFlags & 0x1000000000LL) )
+ {
+ Unit::AuraMap::iterator iter;
+ while((iter = _player->m_Auras.find(Unit::spellEffectPair(spellId, 1))) != _player->m_Auras.end())
+ {
+ _player->m_modAuras[SPELL_AURA_DUMMY].remove(iter->second);
+
+ Aura* Aur = iter->second;
+ _player->m_Auras.erase(iter);
+ ++_player->m_removedAuras; // internal count used by unit update
+
+ delete Aur;
+
+ if( _player->m_Auras.empty() )
+ iter = _player->m_Auras.end();
+ else
+ iter = _player->m_Auras.begin();
+
+ }
+ }
+
// channeled spell case (it currently casted then)
if(IsChanneledSpell(spellInfo))
{