Code:
diff -r 396488cf587f -r e051f6434b01 sql/spell_proc_event.sql
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/sql/spell_proc_event.sql Tue Apr 27 00:44:47 2010 +0300
@@ -0,0 +1,11 @@
+DELETE FROM `spell_proc_event` WHERE `entry` IN (70799,70808,70817,70723,70805,70803,70854);
+INSERT INTO `spell_proc_event`
+(`entry`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`procFlags`,`procEx`,`ppmRate`,`CustomChance`,`Cooldown`) VALUES
+(70799,0,6,0x00000800,0,0,0,0,0,0,0), -- Priest T10 Healer 4P Bonus
+(70808,0,11,0x00000100,0,0,0,2,0,0,0), -- Shaman T10 Restoration 4P Bonus
+(70817,0,11,0,0x00001000,0,0x00010000,0,0,0,0), -- Shaman T10 Elemental 4P Bonus
+(70723,0,7,0x00000005,0,0,0,2,0,0,0), -- Druid T10 Balance 4P Bonus
+(70805,0,8,0,0x00020000,0,0x00004000,0,0,0,0), -- Rogue T10 2P Bonus
+(70803,0,8,4063232,0,0,0,0,0,0,0), -- Rogue T10 4P Bonus
+(70854,0,5,0,0x00000010,0,0,0,0,0,0); -- Warrior T10 Melee 2P Bonus
\ No newline at end of file
diff -r 396488cf587f -r e051f6434b01 src/game/SpellEffects.cpp
--- a/src/game/SpellEffects.cpp Mon Apr 26 22:22:34 2010 +0300
+++ b/src/game/SpellEffects.cpp Tue Apr 27 00:44:47 2010 +0300
@@ -1790,7 +1790,7 @@
// Last Stand
case 12975:
{
- int32 healthModSpellBasePoints0 = int32(m_caster->GetMaxHealth()*0.3);
+ int32 healthModSpellBasePoints0 = int32(m_caster->GetMaxHealth() * 0.3);
m_caster->CastCustomSpell(m_caster, 12976, &healthModSpellBasePoints0, NULL, NULL, true, NULL);
return;
}
@@ -1851,6 +1851,11 @@
SendCastResult(SPELL_FAILED_FIZZLE);
return;
}
+ // Item - Warrior T10 Melee 4P Bonus
+ if (m_spellInfo->Id == 46916 || m_spellInfo->Id == 52437)
+ if (Aura * aur = m_caster->GetAura(70847))
+ if (roll_chance_i(20))
+ m_caster->CastSpell(m_caster, 70849, true);
break;
case SPELLFAMILY_PRIEST:
// Penance
@@ -1897,6 +1902,14 @@
m_caster->CastSpell(unitTarget, damage, true);
return;
}
+ // Item - Druid T10 Balance 2P Bonus
+ if (m_spellInfo->Id == 16870 && m_caster->HasAura(70718))
+ m_caster->CastSpell(m_caster, 70721, true);
+
+ // Item - Druid T10 Feral 4P Bonus
+ if (m_spellInfo->Id == 5229 && m_caster->HasAura(70726))
+ m_caster->CastSpell(m_caster, 70725, true);
+
break;
case SPELLFAMILY_ROGUE:
// Hunger for Blood
diff -r 396488cf587f -r e051f6434b01 src/game/Unit.cpp
--- a/src/game/Unit.cpp Mon Apr 26 22:22:34 2010 +0300
+++ b/src/game/Unit.cpp Tue Apr 27 00:44:47 2010 +0300
@@ -6300,6 +6300,19 @@
triggered_spell_id = 28810;
break;
}
+ // Item - Priest T10 Healer 4P Bonus
+ case 70798:
+ {
+ if (GetTypeId() != TYPEID_PLAYER)
+ return false;
+
+ // Circle of Healing
+ this->ToPlayer()->RemoveSpellCategoryCooldown(1204, true);
+ // Penance
+ this->ToPlayer()->RemoveSpellCategoryCooldown(1230, true);
+
+ return true;
+ }
}
break;
}
@@ -6379,6 +6392,14 @@
triggered_spell_id = 54755;
break;
}
+ // Item - Druid T10 Balance 4P Bonus
+ case 70723:
+ {
+ basepoints0 = int32(triggerAmount * damage / 100);
+ basepoints0 = int32(basepoints0 / 2);
+ triggered_spell_id = 71023;
+ break;
+ }
// Healing Touch Refund (Idol of Longevity trinket)
case 28847:
{
@@ -6911,6 +6932,15 @@
basepoints0 = triggerAmount*damage/100;
break;
}
+ // Item - Paladin T10 Retribution 2P Bonus
+ case 70765:
+ {
+ if (GetTypeId() != TYPEID_PLAYER)
+ return false;
+
+ this->ToPlayer()->RemoveSpellCooldown(53385, true);
+ return true;
+ }
}
break;
}
@@ -7114,18 +7144,38 @@
// Shaman T8 Elemental 4P Bonus
case 64928:
{
- basepoints0 = int32(triggerAmount * damage / 100);
+ basepoints0 = int32(basepoints0 / 2);
triggered_spell_id = 64930; // Electrified
break;
}
- }
- // Shaman T9 Elemental 4P Bonus - Wrong need recheck target and avoid wrong triggers
- /*case 67228:
- {
- basepoints0 = int32( triggerAmount * damage / 100 );
- triggered_spell_id = 71824;
- break;
- }*/
+ // Shaman T9 Elemental 4P Bonus
+ case 67228:
+ {
+ basepoints0 = int32(basepoints0 / 3); // basepoints is for 1 tick, not the entire DoT amount
+ triggered_spell_id = 71824;
+ break;
+ }
+ // Item - Shaman T10 Restoration 4P Bonus
+ case 70808:
+ {
+ basepoints0 = int32( triggerAmount * damage / 100 );
+ basepoints0 = int32( basepoints0 / 3); // basepoints is for 1 tick, not all DoT amount
+ triggered_spell_id = 70809;
+ break;
+ }
+ // Item - Shaman T10 Elemental 4P Bonus
+ case 70817:
+ {
+ if (AuraEffect const * aura = pVictim->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_SHAMAN, 0x10000000, 0, 0))
+ {
+ int32 amount = aura->GetBase()->GetDuration() + triggerAmount * IN_MILISECONDS;
+ aura->GetBase()->SetDuration(amount);
+ //aura->SendAuraUpdate(false);
+ return true;
+ }
+ return false;
+ }
+ }
// Frozen Power
if (dummySpell->SpellIconID == 3780)
{
@@ -7492,6 +7542,16 @@
triggered_spell_id = 50526;
break;
}
+ // Item - Death Knight T10 Melee 4P Bonus
+ else if (dummySpell->Id == 70656)
+ {
+ if (GetTypeId() != TYPEID_PLAYER)
+ return false;
+
+ for (uint32 i = 0; i < MAX_RUNES; ++i)
+ if (this->ToPlayer()->GetRuneCooldown(i) == 0)
+ return false;
+ }
// Sudden Doom
if (dummySpell->SpellIconID == 1939 && GetTypeId() == TYPEID_PLAYER)
{
@@ -8047,6 +8107,16 @@
}
break;
}
+ case SPELLFAMILY_ROGUE:
+ {
+ // Item - Rogue T10 2P Bonus
+ if (auraSpellInfo->Id == 70805)
+ {
+ if (pVictim != this)
+ return false;
+ }
+ break;
+ }
case SPELLFAMILY_HUNTER:
{
if (auraSpellInfo->SpellIconID == 3247) // Piercing Shots
Share This Thread