aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/base/world_database.sql3
-rw-r--r--sql/updates/9775_world_spell_proc_event.sql3
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp10
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp3
-rw-r--r--src/server/game/Spells/Spell.cpp4
5 files changed, 21 insertions, 2 deletions
diff --git a/sql/base/world_database.sql b/sql/base/world_database.sql
index 4d77a07a18d..07a51568b49 100644
--- a/sql/base/world_database.sql
+++ b/sql/base/world_database.sql
@@ -19183,7 +19183,8 @@ INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFam
( 72417, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 60), -- Item - Icecrown Reputation Ring Caster Trigger
( 72413, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 60), -- Item - Icecrown Reputation Ring Melee
( 72419, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0, 0, 60), -- Item - Icecrown Reputation Ring Healer Trigger
-( 71404, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 45); -- Item - Icecrown Dungeon Melee Trinket
+( 71404, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 45), -- Item - Icecrown Dungeon Melee Trinket
+( 71564, 0x00, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0, 0, 0); -- Nevermelting Ice Crystal
/*!40000 ALTER TABLE `spell_proc_event` ENABLE KEYS */;
UNLOCK TABLES;
diff --git a/sql/updates/9775_world_spell_proc_event.sql b/sql/updates/9775_world_spell_proc_event.sql
new file mode 100644
index 00000000000..f4f8095397d
--- /dev/null
+++ b/sql/updates/9775_world_spell_proc_event.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_proc_event` WHERE `entry`=71564;
+INSERT INTO `spell_proc_event` (`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES
+(71564,0x00,0,0x00000000,0x00000000,0x00000000,0x00000000,0x00000002,0,0,0); -- Nevermelting Ice Crystal
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index d7f75932181..9ed36fe639c 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -8051,6 +8051,16 @@ bool Unit::HandleAuraProc(Unit * pVictim, uint32 damage, Aura * triggeredByAura,
switch(dummySpell->SpellFamilyName)
{
+ case SPELLFAMILY_GENERIC:
+ switch (dummySpell->Id)
+ {
+ // Nevermelting Ice Crystal
+ case 71564:
+ RemoveAuraFromStack(71564);
+ *handled = true;
+ break;
+ }
+ break;
case SPELLFAMILY_PALADIN:
{
// Infusion of Light
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 44534e66f64..5eb28396d85 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -5798,6 +5798,9 @@ void AuraEffect::HandleAuraDummy(AuraApplication const * aurApp, uint8 mode, boo
caster->CastCustomSpell(28836, SPELLVALUE_BASE_POINT0, damage, target);
}
break;
+ case 71563:
+ if (Aura* newAura = target->AddAura(71564, target))
+ newAura->SetStackAmount(newAura->GetSpellProto()->StackAmount);
}
}
// AT REMOVE
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index 7459602e2e7..2870fdc20af 100644
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -3339,13 +3339,15 @@ void Spell::cast(bool skipCheck)
if (m_customAttr & SPELL_ATTR_CU_LINK_CAST)
{
if (const std::vector<int32> *spell_triggered = sSpellMgr.GetSpellLinked(m_spellInfo->Id))
+ {
for (std::vector<int32>::const_iterator i = spell_triggered->begin(); i != spell_triggered->end(); ++i)
if (*i < 0)
m_caster->RemoveAurasDueToSpell(-(*i));
else
m_caster->CastSpell(m_targets.getUnitTarget() ? m_targets.getUnitTarget() : m_caster, *i, true);
-
}
+ }
+
if (m_caster->GetTypeId() == TYPEID_PLAYER)
m_caster->ToPlayer()->SetSpellModTakingSpell(this, false);