aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/3927_world_spell_proc_event.sql (renamed from sql/updates/3914_world_spell_proc_event.sql)7
-rw-r--r--sql/world_spell_full.sql5
-rw-r--r--src/game/Unit.cpp10
-rw-r--r--src/game/Unit.h2
4 files changed, 16 insertions, 8 deletions
diff --git a/sql/updates/3914_world_spell_proc_event.sql b/sql/updates/3927_world_spell_proc_event.sql
index 54ee080f1a4..a5ae39bc18e 100644
--- a/sql/updates/3914_world_spell_proc_event.sql
+++ b/sql/updates/3927_world_spell_proc_event.sql
@@ -1,4 +1,5 @@
-DELETE FROM `spell_proc_event` WHERE `entry` IN (59088, 59089, 58388);
+DELETE FROM `spell_proc_event` WHERE `entry` IN (59088, 59089, 58388, 56374);
INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `procFlags`, `procEx`, `ppmRate`, `CustomChance`, `Cooldown`) VALUES
-(59088, 0x00, 4, 0x00000000, 0x00000002, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Improved Spell Reflection
-(59089, 0x00, 4, 0x00000000, 0x00000002, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0); -- Improved Spell Reflection \ No newline at end of file
+(59088, 0x00, 4, 0x00000000, 0x00000002, 0x00000000, 0x00004000, 0x00000000, 0, 0, 0), -- Improved Spell Reflection
+(59089, 0x00, 4, 0x00000000, 0x00000002, 0x00000000, 0x00004000, 0x00000000, 0, 0, 0), -- Improved Spell Reflection
+(56374, 0x00, 3, 0x00000000, 0x00004000, 0x00000000, 0x00004000, 0x00000000, 0, 0, 0); -- Glyph of icy veins \ No newline at end of file
diff --git a/sql/world_spell_full.sql b/sql/world_spell_full.sql
index 0305998be26..0ca4fc884d1 100644
--- a/sql/world_spell_full.sql
+++ b/sql/world_spell_full.sql
@@ -1442,6 +1442,7 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell
(56355, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0, 0, 0), -- Titanium Shield Spike
(56364, 0x00, 3, 0x00000000, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Glyph of Remove Curse
(56372, 0x00, 3, 0x00000000, 0x00000080, 0x00000000, 0x00004000, 0x00000000, 0, 0, 0), -- Glyph of Ice Block
+(56374, 0x00, 3, 0x00000000, 0x00004000, 0x00000000, 0x00004000, 0x00000000, 0, 0, 0), -- Glyph of Icy Veins
(56451, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 3), -- Earth Shield
(56611, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Wrecking Crew (Rank 2)
(56612, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Wrecking Crew (Rank 3)
@@ -1483,8 +1484,8 @@ INSERT INTO `spell_proc_event` (`entry`, `SchoolMask`, `SpellFamilyName`, `Spell
(58874, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000040, 0, 0, 0), -- Damage Shield (Rank 2)
(58901, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Tears of Anguish
(59057, 0x00, 15, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Rime (Rank 3)
-(59088, 0x00, 4, 0x00000000, 0x00000002, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Improved Spell Reflection
-(59089, 0x00, 4, 0x00000000, 0x00000002, 0x00000000, 0x00010000, 0x00000000, 0, 0, 0), -- Improved Spell Reflection
+(59088, 0x00, 4, 0x00000000, 0x00000002, 0x00000000, 0x00004000, 0x00000000, 0, 0, 0), -- Improved Spell Reflection
+(59089, 0x00, 4, 0x00000000, 0x00000002, 0x00000000, 0x00004000, 0x00000000, 0, 0, 0), -- Improved Spell Reflection
(59176, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0), -- Spell Damping
(59327, 0x00, 15, 0x08000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 0), -- Glyph of Rune Tap
(59725, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000800, 0, 0, 0), -- Spell Reflection
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);