diff options
author | Shauren <none@none> | 2010-09-05 13:39:10 +0200 |
---|---|---|
committer | Shauren <none@none> | 2010-09-05 13:39:10 +0200 |
commit | 14c8fa492563ca1aa3aebd8951c044be9f8041a5 (patch) | |
tree | 4f9a570295f3ffd406e884576431f595513d1021 | |
parent | d42cfb6aa64aa8ce948a58fe911ecd12e868081a (diff) |
Core/Spells: Fixed Nevermelting Ice Crystal trinket
--HG--
branch : trunk
-rw-r--r-- | sql/base/world_database.sql | 3 | ||||
-rw-r--r-- | sql/updates/9775_world_spell_proc_event.sql | 3 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 10 | ||||
-rw-r--r-- | src/server/game/Spells/Auras/SpellAuraEffects.cpp | 3 | ||||
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 4 |
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); |