aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorQAston <none@none>2009-06-11 22:42:36 +0200
committerQAston <none@none>2009-06-11 22:42:36 +0200
commitbb01747ad181cb07c76d1ea2cbaf0bbeae67004e (patch)
tree48b10edf710ae60179a40c24e68e75b213961340 /src
parent6d5d23faf6453539cecddea6a4d497ad35aa5b4a (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.cpp10
-rw-r--r--src/game/Unit.h2
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);