diff options
author | QAston <none@none> | 2009-06-11 22:42:36 +0200 |
---|---|---|
committer | QAston <none@none> | 2009-06-11 22:42:36 +0200 |
commit | bb01747ad181cb07c76d1ea2cbaf0bbeae67004e (patch) | |
tree | 48b10edf710ae60179a40c24e68e75b213961340 /src | |
parent | 6d5d23faf6453539cecddea6a4d497ad35aa5b4a (diff) |
*Fix Glyph of Icy Veins.
--HG--
branch : trunk
rename : sql/updates/3914_world_spell_proc_event.sql => sql/updates/3927_world_spell_proc_event.sql
Diffstat (limited to 'src')
-rw-r--r-- | src/game/Unit.cpp | 10 | ||||
-rw-r--r-- | src/game/Unit.h | 2 |
2 files changed, 9 insertions, 3 deletions
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 2f7ecda0731..e6f8a3fd1fe 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -4135,13 +4135,14 @@ void Unit::RemoveAurasDueToItemSpell(Item* castItem,uint32 spellId) } } -void Unit::RemoveAurasByType(AuraType auraType, uint64 casterGUID, Aura * except) +void Unit::RemoveAurasByType(AuraType auraType, uint64 casterGUID, Aura * except, bool negative, bool positive) { for (AuraEffectList::iterator iter = m_modAuras[auraType].begin(); iter != m_modAuras[auraType].end();) { Aura * aur = (*iter)->GetParentAura(); ++iter; - if (aur != except && (!casterGUID || aur->GetCasterGUID()==casterGUID)) + if (aur != except && (!casterGUID || aur->GetCasterGUID()==casterGUID) + && ((negative && !aur->IsPositive()) || (positive && aur->IsPositive()))) { uint32 removedAuras = m_removedAurasCount; RemoveAura(aur); @@ -5376,6 +5377,11 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, AuraEffect* trigger } switch(dummySpell->Id) { + // Glyph of Icy Veins + case 56374: + RemoveAurasByType(SPELL_AURA_MOD_HASTE, 0, 0, true, false); + RemoveAurasByType(SPELL_AURA_MOD_DECREASE_SPEED); + break; // Ignite case 11119: case 11120: diff --git a/src/game/Unit.h b/src/game/Unit.h index bbc28433344..6f8b6990129 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -1403,7 +1403,7 @@ class TRINITY_DLL_SPEC Unit : public WorldObject void RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler); void RemoveAurasDueToSpellBySteal(uint32 spellId, uint64 casterGUID, Unit *stealer); void RemoveAurasDueToItemSpell(Item* castItem,uint32 spellId); - void RemoveAurasByType(AuraType auraType, uint64 casterGUID = 0, Aura * except=NULL); + void RemoveAurasByType(AuraType auraType, uint64 casterGUID = 0, Aura * except=NULL, bool negative = true, bool positive = true); void RemoveAurasByTypeWithDispel(AuraType auraType, Spell * spell = NULL); void RemoveNotOwnSingleTargetAuras(); bool RemoveNoStackAurasDueToAura(Aura *Aur); |