diff options
author | megamage <none@none> | 2008-11-28 12:58:12 -0600 |
---|---|---|
committer | megamage <none@none> | 2008-11-28 12:58:12 -0600 |
commit | beddd274303c9e342fdbe30a4eeb7e9e29695598 (patch) | |
tree | d0e4a3471063ed659d0afa5273968765064fcc0c /src/game/SpellHandler.cpp | |
parent | c72bf6e8c40e5b826c5d2d79bd19fae6386919e7 (diff) |
*Aura Consolidation + MaxModifier. By Authorius, modified by Deafboy and thenecromancer, adapted by Muhaha.
--HG--
branch : trunk
Diffstat (limited to 'src/game/SpellHandler.cpp')
-rw-r--r-- | src/game/SpellHandler.cpp | 22 |
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)) { |