aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/FULL/world_spell_full.sql270
-rw-r--r--sql/updates/4500_world_spell_bonus_data.sql246
-rw-r--r--sql/updates/4501_world_spell_bonus_data.sql31
-rw-r--r--sql/world.sql299
-rw-r--r--src/game/SharedDefines.h2
-rw-r--r--src/game/Spell.cpp3
-rw-r--r--src/game/SpellAuras.cpp66
-rw-r--r--src/game/SpellAuras.h1
-rw-r--r--src/game/SpellEffects.cpp78
-rw-r--r--src/game/SpellMgr.cpp22
-rw-r--r--src/game/SpellMgr.h3
-rw-r--r--src/game/Unit.cpp32
12 files changed, 595 insertions, 458 deletions
diff --git a/sql/FULL/world_spell_full.sql b/sql/FULL/world_spell_full.sql
index c8bdfd74594..cde8cd16655 100644
--- a/sql/FULL/world_spell_full.sql
+++ b/sql/FULL/world_spell_full.sql
@@ -33,7 +33,6 @@ INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comm
(-49011, 49009, 0, 'Wyvern Sting'),
(-49012, 49010, 0, 'Wyvern Sting'),
( 47585, 60069, 0, 'Dispersion (transform/regen)'),
-# (-47953, 60406, 0, 'Divine hymn buff to enemies'), removed in 313
( 48265, 49772, 2, 'Unholy Presence'),
( 49772, 55222, 2, 'Unholy Presence'),
( 48263, 61261, 2, 'Frost Presence'),
@@ -73,6 +72,7 @@ INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comm
(48395, 50171, 2, 'Improved Moonkin Form'),
(48396, 50172, 2, 'Improved Moonkin Form'),
( 20594, 65116, 2, 'Stoneform'),
+( 1038, 53055, 2, 'Hand of Salvation'),
-- Creature
( 36574, 36650, 0, 'Apply Phase Slip Vulnerability'),
@@ -1526,6 +1526,274 @@ INSERT INTO spell_enchant_proc_data (`entry`, `customChance`, `PPMChance`,`procE
(3769, 0, 8.53,0);
-- --------
+-- SPELL BONUS DATA
+-- --------
+TRUNCATE TABLE `spell_bonus_data`;
+INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`, `ap_dot_bonus`, `comments`) VALUES
+(49941, -1, -1, 0.04, -1, 'Death Knight - Blood Boil'),
+(48721, -1, -1, 0.04, -1, 'Death Knight - Blood Boil'),
+(55078, -1, -1, -1, 0.055, 'Death Knight - Blood Plague'),
+(50444, -1, -1, 0.105, -1, 'Death Knight - Corpse Explosion Triggered'),
+(52212, -1, -1, 0.0475, -1, 'Death Knight - Death and Decay'),
+(47632, -1, -1, 0.15, -1, 'Death Knight - Death Coil'),
+(47633, -1, -1, 0.15, -1, 'Death Knight - Death Coil Heal'),
+(55095, -1, -1, -1, 0.055, 'Death Knight - Frost Fever'),
+(49184, -1, -1, 0.1, -1, 'Death Knight - Howling Blast'),
+(45477, -1, -1, 0.1, -1, 'Death Knight - Icy Touch'),
+(56903, 0, 0, 0, 0, 'Death Knight - Lichflame'),
+(50842, -1, -1, 0.04, -1, 'Death Knight - Pestilence'),
+(50401, 0, 0, 0, 0, 'Death Knight - Razor Frost'),
+(47476, -1, -1, 0.06, -1, 'Death Knight - Strangulate'),
+(50536, -1, -1, 0.013, -1, 'Death Knight - Unholy Blight (Rank1)'),
+(339, -1, 0.1, -1, -1, 'Druid - Entangling Roots'),
+(5185, 1.611, -1, -1, -1, 'Druid - Healing Touch'),
+(42231, 0.12898, -1, -1, -1, 'Druid - Hurricane Triggered'),
+(5570, -1, 0.2, -1, -1, 'Druid - Insect Swarm'),
+(33763, 0.6453, 0.09518, -1, -1, 'Druid - Lifebloom'),
+(8921, 0.1515, 0.13, -1, -1, 'Druid - Moonfire'),
+(50464, 0.67305, -1, -1, -1, 'Druid - Nourish'),
+(8936, 0.539, 0.188, -1, -1, 'Druid - Regrowth'),
+(774, -1, 0.37604, -1, -1, 'Druid - Rejuvenation'),
+(50294, 0.0119, -1, -1, -1, 'Druid - Starfall AOE rank 1'),
+(53188, 0.0119, -1, -1, -1, 'Druid - Starfall AOE rank 2'),
+(53189, 0.0119, -1, -1, -1, 'Druid - Starfall AOE rank 3'),
+(53190, 0.0119, -1, -1, -1, 'Druid - Starfall AOE rank 4'),
+(50288, 0.0458, -1, -1, -1, 'Druid - Starfall rank 1'),
+(53191, 0.0458, -1, -1, -1, 'Druid - Starfall rank 2'),
+(53194, 0.0458, -1, -1, -1, 'Druid - Starfall rank 3'),
+(53195, 0.0458, -1, -1, -1, 'Druid - Starfall rank 4'),
+(2912, 1, -1, -1, -1, 'Druid - Starfire'),
+(18562, 0, 0, 0, 0, 'Druid - Swiftmend'),
+(44203, 0.538, -1, -1, -1, 'Druid - Tranquility Triggered'),
+(61391, 0.193, -1, -1, -1, 'Druid - Typhoon'),
+(48438, -1, 0.11505, -1, -1, 'Druid - Wild Growth'),
+(5176, 0.5714, -1, -1, -1, 'Druid - Wrath'),
+(55039, 0, 0, 0, 0, 'Item - Gnomish Lightning Generator'),
+(44425, 0.7143, -1, -1, -1, 'Mage - Arcane Barrage'),
+(30451, 0.7143, -1, -1, -1, 'Mage - Arcane Blast'),
+(1449, 0.2128, -1, -1, -1, 'Mage - Arcane Explosion'),
+(7268, 0.2857, -1, -1, -1, 'Mage - Arcane Missiles Triggered Spell Rank 1'),
+(7269, 0.2857, -1, -1, -1, 'Mage - Arcane Missiles Triggered Spell Rank 2'),
+(11113, 0.1936, -1, -1, -1, 'Mage - Blast Wave'),
+(42208, 0.1437, -1, -1, -1, 'Mage - Blizzard Triggered Spell'),
+(120, 0.214, -1, -1, -1, 'Mage - Cone of Cold'),
+(31661, 0.1936, -1, -1, -1, 'Mage - Dragons Breath'),
+(133, 1, -1, -1, -1, 'Mage - Fire Ball'),
+(2136, 0.4286, -1, -1, -1, 'Mage - Fire Blast'),
+(543, 0.1, -1, -1, -1, 'Mage - Fire Ward'),
+(2120, 0.2357, 0.122, -1, -1, 'Mage - Flamestrike'),
+(116, 0.8143, -1, -1, -1, 'Mage - Frost Bolt'),
+(122, 0.193, -1, -1, -1, 'Mage - Frost Nova'),
+(6143, 0.1, -1, -1, -1, 'Mage - Frost Ward'),
+(44614, 0.8571, -1, -1, -1, 'Mage - Frostfire Bolt'),
+(11426, 0.8053, -1, -1, -1, 'Mage - Ice Barrier'),
+(30455, 0.1429, -1, -1, -1, 'Mage - Ice Lance'),
+(44457, 0.4, 0.2, -1, -1, 'Mage - Living Bomb'),
+(1463, 0.8053, -1, -1, -1, 'Mage - Mana Shield'),
+(34913, 0, 0, 0, 0, 'Mage - Molten Armor Triggered Rank 1'),
+(11366, 1.15, 0.05, -1, -1, 'Mage - Pyroblast'),
+(2948, 0.4286, -1, -1, -1, 'Mage - Scorch'),
+(31935, 0.07, -1, 0.07, -1, 'Paladin - Avenger Shield'),
+(53742, -1, 0.0176, -1, 0.03, 'Paladin - Blood Corruption'),
+(26573, -1, 0.04, -1, 0.04, 'Paladin - Consecration'),
+(879, 0.15, -1, 0.15, -1, 'Paladin - Exorcism'),
+(19750, 1, -1, -1, -1, 'Paladin - Flash of Light'),
+(53595, 0, 0, 0, 0, 'Paladin - Hammer of the Righteous'),
+(24275, 0.15, -1, 0.15, -1, 'Paladin - Hammer of Wrath'),
+(635, 1.66, -1, -1, -1, 'Paladin - Holy Light'),
+(20925, 0.09, -1, 0.056, -1, 'Paladin - Holy Shield'),
+(25914, 0.81, -1, -1, -1, 'Paladin - Holy Shock Triggered Heal Rank 1'),
+(25912, 0.4286, -1, -1, -1, 'Paladin - Holy Shock Triggered Hurt Rank 1'),
+(31803, -1, 0.0176, -1, 0.03, 'Paladin - Holy Vengeance'),
+(2812, 0.07, -1, 0.07, -1, 'Paladin - Holy Wrath'),
+(31898, 0.25, -1, 0.16, -1, 'Paladin - Judgement of Blood Enemy'),
+(32220, 0.0833, -1, 0.0533, -1, 'Paladin - Judgement of Blood Self'),
+(20467, 0.25, -1, 0.16, -1, 'Paladin - Judgement of Command'),
+(53733, 0, 0, 0, 0, 'Paladin - Judgement of Corruption'),
+(20267, 0.1, -1, 0.1, -1, 'Paladin - Judgement of Light Proc'),
+(20187, 0.4, -1, 0.25, -1, 'Paladin - Judgement of Righteousness'),
+(53726, 0.25, -1, 0.16, -1, 'Paladin - Judgement of the Martyr Enemy'),
+(53725, 0.0833, -1, 0.0533, -1, 'Paladin - Judgement of the Martyr Self'),
+(31804, 0, 0, 0, 0, 'Paladin - Judgement of Vengeance'),
+(58597, 0.75, -1, -1, -1, 'Paladin - Sacred Shield'),
+(53601, 0.75, -1, -1, -1, 'Paladin - Sacred Shield'),
+(31893, 0, 0, 0, 0, 'Paladin - Seal of Blood Proc Enemy'),
+(32221, 0, 0, 0, 0, 'Paladin - Seal of Blood Proc Self'),
+(20424, 0, 0, 0, 0, 'Paladin - Seal of Command Proc'),
+(20167, 0.15, -1, 0.15, -1, 'Paladin - Seal of Light Proc'),
+(25742, 0.07, -1, 0.039, -1, 'Paladin - Seal of Righteousness Dummy Proc'),
+(53719, 0, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Enemy'),
+(53718, 0, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Self'),
+(53600, 0, 0, 0, 0, 'Paladin - Shield of Righteousness'),
+(32546, 0.8068, -1, -1, -1, 'Priest - Binding Heal'),
+(27813, 0, 0, 0, 0, 'Priest - Blessed Recovery Rank 1'),
+(34861, 0.402, -1, -1, -1, 'Priest - Circle of Healing'),
+(19236, 0.8068, -1, -1, -1, 'Priest - Desperate Prayer'),
+(2944, -1, 0.1849, -1, -1, 'Priest - Devouring Plague'),
+(2061, 0.8068, -1, -1, -1, 'Priest - Flash Heal'),
+(2060, 1.6135, -1, -1, -1, 'Priest - Greater Heal'),
+(14914, 0.5711, 0.024, -1, -1, 'Priest - Holy Fire'),
+(15237, 0.1606, -1, -1, -1, 'Priest - Holy Nova Damage'),
+(23455, 0.3035, -1, -1, -1, 'Priest - Holy Nova Heal Rank 1'),
+(8129, 0, 0, 0, 0, 'Priest - Mana Burn'),
+(8092, 0.428, -1, -1, -1, 'Priest - Mind Blast'),
+(15407, 0.257, -1, -1, -1, 'Priest - Mind Flay'),
+(49821, 0.2861, -1, -1, -1, 'Priest - Mind Sear Trigger Rank 1'),
+(47757, 1.6135, -1, -1, -1, 'Priest - Penance (Rank 1'),
+(52986, 1.6135, -1, -1, -1, 'Priest - Penance (Rank 2'),
+(52987, 1.6135, -1, -1, -1, 'Priest - Penance (Rank 3'),
+(52988, 1.6135, -1, -1, -1, 'Priest - Penance (Rank 4'),
+(17, 0.8068, -1, -1, -1, 'Priest - Power Word: Shield'),
+(596, 0.8068, -1, -1, -1, 'Priest - Prayer of Healing'),
+(33110, 0.8068, -1, -1, -1, 'Priest - Prayer of Mending Heal Proc'),
+(33619, 0, 0, 0, 0, 'Priest - Reflective Shield'),
+(139, -1, 0.376, -1, -1, 'Priest - Renew'),
+(32379, 0.4296, -1, -1, -1, 'Priest - Shadow Word: Death'),
+(589, -1, 0.1829, -1, -1, 'Priest - Shadow Word: Pain'),
+(34433, 0.65, -1, -1, -1, 'Priest - Shadowfiend'),
+(585, 0.714, -1, -1, -1, 'Priest - Smite'),
+(34914, -1, 0.4, -1, -1, 'Priest - Vampiric Touch'),
+(1064, 1.34, -1, -1, -1, 'Shaman - Chain Heal'),
+(421, 0.57, -1, -1, -1, 'Shaman - Chain Lightning'),
+(974, 0.4762, -1, -1, -1, 'Shaman - Earth Shield'),
+(379, 0, 0, 0, 0, 'Shaman - Earth Shield Triggered'),
+(8042, 0.3858, -1, -1, -1, 'Shaman - Earth Shock'),
+(8443, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 1'),
+(8504, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 2'),
+(8505, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 3'),
+(11310, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 4'),
+(11311, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 5'),
+(25538, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 6'),
+(25539, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 7'),
+(61651, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 8'),
+(61660, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 9'),
+(8050, 0.2142, 0.1, -1, -1, 'Shaman - Flame Shock'),
+(8026, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 1'),
+(58788, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 10'),
+(8028, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 2'),
+(8029, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 3'),
+(10445, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 4'),
+(16343, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 5'),
+(16344, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 6'),
+(25488, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 7'),
+(58786, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 8'),
+(58787, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 9'),
+(8056, 0.3858, -1, -1, -1, 'Shaman - Frost Shock'),
+(8034, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 1'),
+(8037, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 2'),
+(10458, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 3'),
+(16352, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 4'),
+(16353, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 5'),
+(25501, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 6'),
+(58797, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 7'),
+(58798, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 8'),
+(58799, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 9'),
+(2645, 0, 0, 0, 0, 'Shaman - Glyph of Ghost Wolf'),
+(52042, 0.045, -1, -1, -1, 'Shaman - Healing Stream Totem Triggered Heal'),
+(331, 1.6106, -1, -1, -1, 'Shaman - Healing Wave'),
+(51505, 0.5714, -1, -1, -1, 'Shaman - Lava Burst'),
+(8004, 0.8082, -1, -1, -1, 'Shaman - Lesser Healing Wave'),
+(403, 0.7143, -1, -1, -1, 'Shaman - Lightning Bolt'),
+(26364, 0.33, -1, -1, -1, 'Shaman - Lightning Shield Proc Rank 1'),
+(8188, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 1'),
+(10582, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 2'),
+(10583, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 3'),
+(10584, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 4'),
+(25551, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 5'),
+(58733, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 6'),
+(58736, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 7'),
+(61295, 0.4, 0.18, -1, -1, 'Shaman - Riptide'),
+(3606, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 1'),
+(58702, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 10'),
+(6350, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 2'),
+(6351, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 3'),
+(6352, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 4'),
+(10435, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 5'),
+(10436, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 6'),
+(25530, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 7'),
+(58700, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 8'),
+(58701, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 9'),
+(50796, 0.7139, -1, -1, -1, 'Warlock - Chaos Bolt'),
+(17962, 0, 0, 0, 0, 'Warlock - Conflagrate'),
+(172, -1, 0.2, -1, -1, 'Warlock - Corruption'),
+(980, -1, 0.1, -1, -1, 'Warlock - Curse of Agony'),
+(603, -1, 2, -1, -1, 'Warlock - Curse of Doom'),
+(18220, 0.96, -1, -1, -1, 'Warlock - Dark Pact Rank 1'),
+(6789, 0.214, -1, -1, -1, 'Warlock - Death Coil'),
+(689, -1, 0.143, -1, -1, 'Warlock - Drain Life'),
+(5138, 0, 0, 0, 0, 'Warlock - Drain Mana'),
+(1120, -1, 0.429, -1, -1, 'Warlock - Drain Soul'),
+(28176, 0, 0, 0, 0, 'Warlock - Fel Armor'),
+(18790, 0, 0, 0, 0, 'Warlock - Fel Stamina'),
+(48181, 0.4793, -1, -1, -1, 'Warlock - Haunt'),
+(755, -1, 0.4485, -1, -1, 'Warlock - Health Funnel'),
+(1949, -1, 0.0949, -1, -1, 'Warlock - Hellfire'),
+(5857, 0.145, -1, -1, -1, 'Warlock - Hellfire Effect on Enemy Rank 1'),
+(348, 0.2, 0.2, -1, -1, 'Warlock - Immolate'),
+(29722, 0.7139, -1, -1, -1, 'Warlock - Incinerate'),
+(42223, 0.286, -1, -1, -1, 'Warlock - Rain of Fire Triggered Rank 1'),
+(5676, 0.4293, -1, -1, -1, 'Warlock - Searing Pain'),
+(27243, 0.2129, 0.25, -1, -1, 'Warlock - Seed of Corruption'),
+(686, 0.8569, -1, -1, -1, 'Warlock - Shadow Bolt'),
+(6229, 0.3, -1, -1, -1, 'Warlock - Shadow Ward'),
+(17877, 0.4293, -1, -1, -1, 'Warlock - Shadowburn'),
+(47960, 0.1064, 0.0667, -1, -1, 'Warlock - Shadowflame Rank 1'),
+(61291, 0.1064, 0.0667, -1, -1, 'Warlock - Shadowflame Rank 2'),
+(30283, 0.1932, -1, -1, -1, 'Warlock - Shadowfury'),
+(63106, 0, 0, 0, 0, 'Warlock - Siphon Life Triggered'),
+(6353, 1.15, -1, -1, -1, 'Warlock - Soul Fire'),
+(30294, 0, 0, 0, 0, 'Warlock - Soul Leech'),
+(30108, -1, 0.2, -1, -1, 'Warlock - Unstable Affliction'),
+(31117, 1.8, -1, -1, -1, 'Warlock - Unstable Affliction Dispell'),
+(54158, 0.25, -1, 0.16, -1, 'Paladin - Jugdement (Seal of Light, Seal of Wisdom, Seal of Justice)'),
+(60089, -1, -1, 0.05, -1, 'Faerie Fire (feral)'),
+(58621, -1, -1, 0.08, -1, 'Death Knight - Glyph of Chains of Ice'),
+(13797, -1, -1, -1, 0.02, 'Hunter - Immolation Trap($RAP*0.1 / number of ticks)'),
+(3674, -1, -1, -1, 0.02, 'Hunter - Black Arrow($RAP*0.1 / number of ticks)'),
+(1978, -1, -1, -1, 0.04, 'Hunter - Serpent Sting($RAP*0.2 / number of ticks)'),
+(703, -1, -1, -1, 0.02, 'Rogue - Garrote'),
+(2818, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 1($AP*0.12 / number of ticks)'),
+(2819, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 2($AP*0.12 / number of ticks)'),
+(11353, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 3($AP*0.12 / number of ticks)'),
+(11354, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 4($AP*0.12 / number of ticks)'),
+(25349, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 5($AP*0.12 / number of ticks)'),
+(26968, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 6($AP*0.12 / number of ticks)'),
+(27187, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 7($AP*0.12 / number of ticks)'),
+(57969, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 8($AP*0.12 / number of ticks)'),
+(57970, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 9($AP*0.12 / number of ticks)'),
+(48628, -1, -1, -1, 0.15, 'Druid - Lock Jaw'),
+(1822, -1, -1, -1, 0.06, 'Druid - Rake ($AP*0.18 / number of ticks)'),
+(33745, -1, -1, -1, 0.01, 'Druid - Lacerate($AP*0.05 / number of ticks)'),
+(6572, -1, -1, 0.207, -1, 'Warrior - Revenge'),
+(57755, -1, -1, 0.5, -1, 'Warrior - Heroic Throw'),
+(6343, -1, -1, 0.12, -1, 'Warrior - Thunder Clap'),
+(50256, -1, -1, 0.08, -1, 'Druid - Swipe'),
+(1776, -1, -1, 0.21, -1, 'Rogue - Gouge'),
+(8680, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 1'),
+(8685, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 2'),
+(8689, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 3'),
+(11335, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 4'),
+(11336, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 5'),
+(11337, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 6'),
+(26890, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 7'),
+(57964, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 8'),
+(57965, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 9'),
+(13218, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 1'),
+(13222, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 2'),
+(13223, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 3'),
+(13224, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 4'),
+(27189, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 5'),
+(57974, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 6'),
+(57975, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 7'),
+(1495, -1, -1, 0.2, -1, 'Hunter - Mongoose Bite'),
+(19306, -1, -1, 0.2, -1, 'Hunter - Counterattack'),
+(3044, -1, -1, 0.15, -1, 'Hunter - Arcane Shot'),
+(56641, -1, -1, 0.1, -1, 'Hunter - Steady Shot'),
+(13812, -1, -1, 0.1, -1, 'Hunter - Explosive Trap Effect'),
+(20253, -1, -1, 0.12, -1, 'Warrior - Intercept'),
+(61491, -1, -1, 0.12, -1, 'Warrior - Intercept');
+
+-- --------
-- SPELL AFFECT
-- --------
diff --git a/sql/updates/4500_world_spell_bonus_data.sql b/sql/updates/4500_world_spell_bonus_data.sql
new file mode 100644
index 00000000000..2b8084e8cc7
--- /dev/null
+++ b/sql/updates/4500_world_spell_bonus_data.sql
@@ -0,0 +1,246 @@
+DROP TABLE IF EXISTS `spell_bonus_data`;
+CREATE TABLE `spell_bonus_data` (
+ `entry` smallint(5) unsigned NOT NULL,
+ `direct_bonus` float NOT NULL default '0',
+ `dot_bonus` float NOT NULL default '0',
+ `ap_bonus` float NOT NULL default '0',
+ `ap_dot_bonus` float NOT NULL default '0',
+ `comments` varchar(255) default NULL,
+ PRIMARY KEY (`entry`)
+) ENGINE=MyISAM DEFAULT CHARSET=utf8;
+INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`, `ap_dot_bonus`, `comments`) VALUES
+(49941, -1, -1, 0.04, -1, 'Death Knight - Blood Boil'),
+(48721, -1, -1, 0.04, -1, 'Death Knight - Blood Boil'),
+(55078, -1, -1, -1, 0.055, 'Death Knight - Blood Plague'),
+(50444, -1, -1, 0.105, -1, 'Death Knight - Corpse Explosion Triggered'),
+(52212, -1, -1, 0.0475, -1, 'Death Knight - Death and Decay'),
+(47632, -1, -1, 0.15, -1, 'Death Knight - Death Coil'),
+(47633, -1, -1, 0.15, -1, 'Death Knight - Death Coil Heal'),
+(55095, -1, -1, -1, 0.055, 'Death Knight - Frost Fever'),
+(49184, -1, -1, 0.1, -1, 'Death Knight - Howling Blast'),
+(45477, -1, -1, 0.1, -1, 'Death Knight - Icy Touch'),
+(56903, 0, 0, 0, 0, 'Death Knight - Lichflame'),
+(50842, -1, -1, 0.04, -1, 'Death Knight - Pestilence'),
+(50401, 0, 0, 0, 0, 'Death Knight - Razor Frost'),
+(47476, -1, -1, 0.06, -1, 'Death Knight - Strangulate'),
+(50536, -1, -1, 0.013, -1, 'Death Knight - Unholy Blight (Rank1)'),
+(339, -1, 0.1, -1, -1, 'Druid - Entangling Roots'),
+(5185, 1.611, -1, -1, -1, 'Druid - Healing Touch'),
+(42231, 0.12898, -1, -1, -1, 'Druid - Hurricane Triggered'),
+(5570, -1, 0.2, -1, -1, 'Druid - Insect Swarm'),
+(33763, 0.6453, 0.09518, -1, -1, 'Druid - Lifebloom'),
+(8921, 0.1515, 0.13, -1, -1, 'Druid - Moonfire'),
+(50464, 0.67305, -1, -1, -1, 'Druid - Nourish'),
+(8936, 0.539, 0.188, -1, -1, 'Druid - Regrowth'),
+(774, -1, 0.37604, -1, -1, 'Druid - Rejuvenation'),
+(50294, 0.0119, -1, -1, -1, 'Druid - Starfall AOE rank 1'),
+(53188, 0.0119, -1, -1, -1, 'Druid - Starfall AOE rank 2'),
+(53189, 0.0119, -1, -1, -1, 'Druid - Starfall AOE rank 3'),
+(53190, 0.0119, -1, -1, -1, 'Druid - Starfall AOE rank 4'),
+(50288, 0.0458, -1, -1, -1, 'Druid - Starfall rank 1'),
+(53191, 0.0458, -1, -1, -1, 'Druid - Starfall rank 2'),
+(53194, 0.0458, -1, -1, -1, 'Druid - Starfall rank 3'),
+(53195, 0.0458, -1, -1, -1, 'Druid - Starfall rank 4'),
+(2912, 1, -1, -1, -1, 'Druid - Starfire'),
+(18562, 0, 0, 0, 0, 'Druid - Swiftmend'),
+(44203, 0.538, -1, -1, -1, 'Druid - Tranquility Triggered'),
+(61391, 0.193, -1, -1, -1, 'Druid - Typhoon'),
+(48438, -1, 0.11505, -1, -1, 'Druid - Wild Growth'),
+(5176, 0.5714, -1, -1, -1, 'Druid - Wrath'),
+(55039, 0, 0, 0, 0, 'Item - Gnomish Lightning Generator'),
+(44425, 0.7143, -1, -1, -1, 'Mage - Arcane Barrage'),
+(30451, 0.7143, -1, -1, -1, 'Mage - Arcane Blast'),
+(1449, 0.2128, -1, -1, -1, 'Mage - Arcane Explosion'),
+(7268, 0.2857, -1, -1, -1, 'Mage - Arcane Missiles Triggered Spell Rank 1'),
+(7269, 0.2857, -1, -1, -1, 'Mage - Arcane Missiles Triggered Spell Rank 2'),
+(11113, 0.1936, -1, -1, -1, 'Mage - Blast Wave'),
+(42208, 0.1437, -1, -1, -1, 'Mage - Blizzard Triggered Spell'),
+(120, 0.214, -1, -1, -1, 'Mage - Cone of Cold'),
+(31661, 0.1936, -1, -1, -1, 'Mage - Dragons Breath'),
+(133, 1, -1, -1, -1, 'Mage - Fire Ball'),
+(2136, 0.4286, -1, -1, -1, 'Mage - Fire Blast'),
+(543, 0.1, -1, -1, -1, 'Mage - Fire Ward'),
+(2120, 0.2357, 0.122, -1, -1, 'Mage - Flamestrike'),
+(116, 0.8143, -1, -1, -1, 'Mage - Frost Bolt'),
+(122, 0.193, -1, -1, -1, 'Mage - Frost Nova'),
+(6143, 0.1, -1, -1, -1, 'Mage - Frost Ward'),
+(44614, 0.8571, -1, -1, -1, 'Mage - Frostfire Bolt'),
+(11426, 0.8053, -1, -1, -1, 'Mage - Ice Barrier'),
+(30455, 0.1429, -1, -1, -1, 'Mage - Ice Lance'),
+(44457, 0.4, 0.2, -1, -1, 'Mage - Living Bomb'),
+(1463, 0.8053, -1, -1, -1, 'Mage - Mana Shield'),
+(34913, 0, 0, 0, 0, 'Mage - Molten Armor Triggered Rank 1'),
+(11366, 1.15, 0.05, -1, -1, 'Mage - Pyroblast'),
+(2948, 0.4286, -1, -1, -1, 'Mage - Scorch'),
+(31935, 0.07, -1, 0.07, -1, 'Paladin - Avenger Shield'),
+(53742, -1, 0.0176, -1, 0.03, 'Paladin - Blood Corruption'),
+(26573, -1, 0.04, -1, 0.04, 'Paladin - Consecration'),
+(879, 0.15, -1, 0.15, -1, 'Paladin - Exorcism'),
+(19750, 1, -1, -1, -1, 'Paladin - Flash of Light'),
+(53595, 0, 0, 0, 0, 'Paladin - Hammer of the Righteous'),
+(24275, 0.15, -1, 0.15, -1, 'Paladin - Hammer of Wrath'),
+(635, 1.66, -1, -1, -1, 'Paladin - Holy Light'),
+(20925, 0.09, -1, 0.056, -1, 'Paladin - Holy Shield'),
+(25914, 0.81, -1, -1, -1, 'Paladin - Holy Shock Triggered Heal Rank 1'),
+(25912, 0.4286, -1, -1, -1, 'Paladin - Holy Shock Triggered Hurt Rank 1'),
+(31803, -1, 0.0176, -1, 0.03, 'Paladin - Holy Vengeance'),
+(2812, 0.07, -1, 0.07, -1, 'Paladin - Holy Wrath'),
+(31898, 0.25, -1, 0.16, -1, 'Paladin - Judgement of Blood Enemy'),
+(32220, 0.0833, -1, 0.0533, -1, 'Paladin - Judgement of Blood Self'),
+(20467, 0.25, -1, 0.16, -1, 'Paladin - Judgement of Command'),
+(53733, 0, 0, 0, 0, 'Paladin - Judgement of Corruption'),
+(20267, 0.1, -1, 0.1, -1, 'Paladin - Judgement of Light Proc'),
+(20187, 0.4, -1, 0.25, -1, 'Paladin - Judgement of Righteousness'),
+(53726, 0.25, -1, 0.16, -1, 'Paladin - Judgement of the Martyr Enemy'),
+(53725, 0.0833, -1, 0.0533, -1, 'Paladin - Judgement of the Martyr Self'),
+(31804, 0, 0, 0, 0, 'Paladin - Judgement of Vengeance'),
+(58597, 0.75, -1, -1, -1, 'Paladin - Sacred Shield'),
+(53601, 0.75, -1, -1, -1, 'Paladin - Sacred Shield'),
+(31893, 0, 0, 0, 0, 'Paladin - Seal of Blood Proc Enemy'),
+(32221, 0, 0, 0, 0, 'Paladin - Seal of Blood Proc Self'),
+(20424, 0, 0, 0, 0, 'Paladin - Seal of Command Proc'),
+(20167, 0.15, -1, 0.15, -1, 'Paladin - Seal of Light Proc'),
+(25742, 0.07, -1, 0.039, -1, 'Paladin - Seal of Righteousness Dummy Proc'),
+(53719, 0, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Enemy'),
+(53718, 0, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Self'),
+(53600, 0, 0, 0, 0, 'Paladin - Shield of Righteousness'),
+(32546, 0.8068, -1, -1, -1, 'Priest - Binding Heal'),
+(27813, 0, 0, 0, 0, 'Priest - Blessed Recovery Rank 1'),
+(34861, 0.402, -1, -1, -1, 'Priest - Circle of Healing'),
+(19236, 0.8068, -1, -1, -1, 'Priest - Desperate Prayer'),
+(2944, -1, 0.1849, -1, -1, 'Priest - Devouring Plague'),
+(2061, 0.8068, -1, -1, -1, 'Priest - Flash Heal'),
+(2060, 1.6135, -1, -1, -1, 'Priest - Greater Heal'),
+(14914, 0.5711, 0.024, -1, -1, 'Priest - Holy Fire'),
+(15237, 0.1606, -1, -1, -1, 'Priest - Holy Nova Damage'),
+(23455, 0.3035, -1, -1, -1, 'Priest - Holy Nova Heal Rank 1'),
+(8129, 0, 0, 0, 0, 'Priest - Mana Burn'),
+(8092, 0.428, -1, -1, -1, 'Priest - Mind Blast'),
+(15407, 0.257, -1, -1, -1, 'Priest - Mind Flay'),
+(49821, 0.2861, -1, -1, -1, 'Priest - Mind Sear Trigger Rank 1'),
+(47757, 1.6135, -1, -1, -1, 'Priest - Penance (Rank 1'),
+(52986, 1.6135, -1, -1, -1, 'Priest - Penance (Rank 2'),
+(52987, 1.6135, -1, -1, -1, 'Priest - Penance (Rank 3'),
+(52988, 1.6135, -1, -1, -1, 'Priest - Penance (Rank 4'),
+(17, 0.8068, -1, -1, -1, 'Priest - Power Word: Shield'),
+(596, 0.8068, -1, -1, -1, 'Priest - Prayer of Healing'),
+(33110, 0.8068, -1, -1, -1, 'Priest - Prayer of Mending Heal Proc'),
+(33619, 0, 0, 0, 0, 'Priest - Reflective Shield'),
+(139, -1, 0.376, -1, -1, 'Priest - Renew'),
+(32379, 0.4296, -1, -1, -1, 'Priest - Shadow Word: Death'),
+(589, -1, 0.1829, -1, -1, 'Priest - Shadow Word: Pain'),
+(34433, 0.65, -1, -1, -1, 'Priest - Shadowfiend'),
+(585, 0.714, -1, -1, -1, 'Priest - Smite'),
+(34914, -1, 0.4, -1, -1, 'Priest - Vampiric Touch'),
+(1064, 1.34, -1, -1, -1, 'Shaman - Chain Heal'),
+(421, 0.57, -1, -1, -1, 'Shaman - Chain Lightning'),
+(974, 0.4762, -1, -1, -1, 'Shaman - Earth Shield'),
+(379, 0, 0, 0, 0, 'Shaman - Earth Shield Triggered'),
+(8042, 0.3858, -1, -1, -1, 'Shaman - Earth Shock'),
+(8443, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 1'),
+(8504, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 2'),
+(8505, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 3'),
+(11310, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 4'),
+(11311, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 5'),
+(25538, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 6'),
+(25539, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 7'),
+(61651, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 8'),
+(61660, 0.2142, -1, -1, -1, 'Shaman - Fire Nova Totem Casted by Totem Rank 9'),
+(8050, 0.2142, 0.1, -1, -1, 'Shaman - Flame Shock'),
+(8026, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 1'),
+(58788, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 10'),
+(8028, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 2'),
+(8029, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 3'),
+(10445, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 4'),
+(16343, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 5'),
+(16344, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 6'),
+(25488, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 7'),
+(58786, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 8'),
+(58787, 0.1, -1, -1, -1, 'Shaman - Flametongue Weapon Proc Rank 9'),
+(8056, 0.3858, -1, -1, -1, 'Shaman - Frost Shock'),
+(8034, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 1'),
+(8037, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 2'),
+(10458, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 3'),
+(16352, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 4'),
+(16353, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 5'),
+(25501, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 6'),
+(58797, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 7'),
+(58798, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 8'),
+(58799, 0.1, -1, -1, -1, 'Shaman - Frostbrand Attack Rank 9'),
+(2645, 0, 0, 0, 0, 'Shaman - Glyph of Ghost Wolf'),
+(52042, 0.045, -1, -1, -1, 'Shaman - Healing Stream Totem Triggered Heal'),
+(331, 1.6106, -1, -1, -1, 'Shaman - Healing Wave'),
+(51505, 0.5714, -1, -1, -1, 'Shaman - Lava Burst'),
+(8004, 0.8082, -1, -1, -1, 'Shaman - Lesser Healing Wave'),
+(403, 0.7143, -1, -1, -1, 'Shaman - Lightning Bolt'),
+(26364, 0.33, -1, -1, -1, 'Shaman - Lightning Shield Proc Rank 1'),
+(8188, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 1'),
+(10582, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 2'),
+(10583, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 3'),
+(10584, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 4'),
+(25551, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 5'),
+(58733, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 6'),
+(58736, 0.1, -1, -1, -1, 'Shaman - Magma Totam Passive Rank 7'),
+(61295, 0.4, 0.18, -1, -1, 'Shaman - Riptide'),
+(3606, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 1'),
+(58702, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 10'),
+(6350, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 2'),
+(6351, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 3'),
+(6352, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 4'),
+(10435, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 5'),
+(10436, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 6'),
+(25530, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 7'),
+(58700, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 8'),
+(58701, 0.1667, -1, -1, -1, 'Shaman - Searing Totem Attack Rank 9'),
+(50796, 0.7139, -1, -1, -1, 'Warlock - Chaos Bolt'),
+(17962, 0, 0, 0, 0, 'Warlock - Conflagrate'),
+(172, -1, 0.2, -1, -1, 'Warlock - Corruption'),
+(980, -1, 0.1, -1, -1, 'Warlock - Curse of Agony'),
+(603, -1, 2, -1, -1, 'Warlock - Curse of Doom'),
+(18220, 0.96, -1, -1, -1, 'Warlock - Dark Pact Rank 1'),
+(6789, 0.214, -1, -1, -1, 'Warlock - Death Coil'),
+(689, -1, 0.143, -1, -1, 'Warlock - Drain Life'),
+(5138, 0, 0, 0, 0, 'Warlock - Drain Mana'),
+(1120, -1, 0.429, -1, -1, 'Warlock - Drain Soul'),
+(28176, 0, 0, 0, 0, 'Warlock - Fel Armor'),
+(18790, 0, 0, 0, 0, 'Warlock - Fel Stamina'),
+(48181, 0.4793, -1, -1, -1, 'Warlock - Haunt'),
+(755, -1, 0.4485, -1, -1, 'Warlock - Health Funnel'),
+(1949, -1, 0.0949, -1, -1, 'Warlock - Hellfire'),
+(5857, 0.145, -1, -1, -1, 'Warlock - Hellfire Effect on Enemy Rank 1'),
+(348, 0.2, 0.2, -1, -1, 'Warlock - Immolate'),
+(29722, 0.7139, -1, -1, -1, 'Warlock - Incinerate'),
+(42223, 0.286, -1, -1, -1, 'Warlock - Rain of Fire Triggered Rank 1'),
+(5676, 0.4293, -1, -1, -1, 'Warlock - Searing Pain'),
+(27243, 0.2129, 0.25, -1, -1, 'Warlock - Seed of Corruption'),
+(686, 0.8569, -1, -1, -1, 'Warlock - Shadow Bolt'),
+(6229, 0.3, -1, -1, -1, 'Warlock - Shadow Ward'),
+(17877, 0.4293, -1, -1, -1, 'Warlock - Shadowburn'),
+(47960, 0.1064, 0.0667, -1, -1, 'Warlock - Shadowflame Rank 1'),
+(61291, 0.1064, 0.0667, -1, -1, 'Warlock - Shadowflame Rank 2'),
+(30283, 0.1932, -1, -1, -1, 'Warlock - Shadowfury'),
+(63106, 0, 0, 0, 0, 'Warlock - Siphon Life Triggered'),
+(6353, 1.15, -1, -1, -1, 'Warlock - Soul Fire'),
+(30294, 0, 0, 0, 0, 'Warlock - Soul Leech'),
+(30108, -1, 0.2, -1, -1, 'Warlock - Unstable Affliction'),
+(31117, 1.8, -1, -1, -1, 'Warlock - Unstable Affliction Dispell'),
+(54158, 0.25, -1, 0.16, -1, 'Paladin - Jugdement (Seal of Light, Seal of Wisdom, Seal of Justice)'),
+(60089, -1, -1, 0.05, -1, 'Faerie Fire (feral)'),
+(58621, -1, -1, 0.08, -1, 'Death Knight - Glyph of Chains of Ice'),
+(13797, -1, -1, -1, 0.02, 'Hunter - Immolation Trap($RAP*0.1 / number of ticks)'),
+(3674, -1, -1, -1, 0.02, 'Hunter - Black Arrow($RAP*0.1 / number of ticks)'),
+(1978, -1, -1, -1, 0.04, 'Hunter - Serpent Sting($RAP*0.2 / number of ticks)'),
+(703, -1, -1, -1, 0.02, 'Rogue - Garrote'),
+(2818, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 1($AP*0.12 / number of ticks)'),
+(2819, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 2($AP*0.12 / number of ticks)'),
+(11353, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 3($AP*0.12 / number of ticks)'),
+(11354, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 4($AP*0.12 / number of ticks)'),
+(25349, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 5($AP*0.12 / number of ticks)'),
+(26968, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 6($AP*0.12 / number of ticks)'),
+(27187, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 7($AP*0.12 / number of ticks)'),
+(57969, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 8($AP*0.12 / number of ticks)'),
+(57970, -1, -1, -1, 0.03, 'Rogue - Deadly Poison Rank 9($AP*0.12 / number of ticks)'),
+(48628, -1, -1, -1, 0.15, 'Druid - Lock Jaw'),
+(1822, -1, -1, 0.01, 0.06, 'Druid - Rake ($AP*0.18 / number of ticks)'),
+(33745, -1, -1, -1, 0.01, 'Druid - Lacerate($AP*0.05 / number of ticks)');
+
diff --git a/sql/updates/4501_world_spell_bonus_data.sql b/sql/updates/4501_world_spell_bonus_data.sql
new file mode 100644
index 00000000000..337b293e62e
--- /dev/null
+++ b/sql/updates/4501_world_spell_bonus_data.sql
@@ -0,0 +1,31 @@
+DELETE FROM `spell_bonus_data` where `entry` IN(6572, 57755, 6343, 50256, 1776, 8680, 8685, 8689, 11335, 11336, 11337, 26890, 57964, 57965, 13218, 13222
+, 13223, 13224, 27189, 57974, 57975, 1495, 19306, 3044, 56641, 13812, 20253, 61491);
+INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`, `ap_dot_bonus`, `comments`) VALUES
+(6572, -1, -1, 0.207, -1, 'Warrior - Revenge'),
+(57755, -1, -1, 0.5, -1, 'Warrior - Heroic Throw'),
+(6343, -1, -1, 0.12, -1, 'Warrior - Thunder Clap'),
+(50256, -1, -1, 0.08, -1, 'Druid - Swipe'),
+(1776, -1, -1, 0.21, -1, 'Rogue - Gouge'),
+(8680, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 1'),
+(8685, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 2'),
+(8689, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 3'),
+(11335, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 4'),
+(11336, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 5'),
+(11337, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 6'),
+(26890, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 7'),
+(57964, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 8'),
+(57965, -1, -1, 0.1, -1, 'Rogue - Instant Poison Rank 9'),
+(13218, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 1'),
+(13222, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 2'),
+(13223, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 3'),
+(13224, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 4'),
+(27189, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 5'),
+(57974, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 6'),
+(57975, -1, -1, 0.04, -1, 'Rogue - Wound Poison Rank 7'),
+(1495, -1, -1, 0.2, -1, 'Hunter - Mongoose Bite'),
+(19306, -1, -1, 0.2, -1, 'Hunter - Counterattack'),
+(3044, -1, -1, 0.15, -1, 'Hunter - Arcane Shot'),
+(56641, -1, -1, 0.1, -1, 'Hunter - Steady Shot'),
+(13812, -1, -1, 0.1, -1, 'Hunter - Explosive Trap Effect'),
+(20253, -1, -1, 0.12, -1, 'Warrior - Intercept'),
+(61491, -1, -1, 0.12, -1, 'Warrior - Intercept');
diff --git a/sql/world.sql b/sql/world.sql
index 21e89f44d91..4f302a08aa0 100644
--- a/sql/world.sql
+++ b/sql/world.sql
@@ -13715,312 +13715,15 @@ UNLOCK TABLES;
--
DROP TABLE IF EXISTS `spell_bonus_data`;
-SET @saved_cs_client = @@character_set_client;
-SET character_set_client = utf8;
CREATE TABLE `spell_bonus_data` (
`entry` smallint(5) unsigned NOT NULL,
`direct_bonus` float NOT NULL default '0',
`dot_bonus` float NOT NULL default '0',
`ap_bonus` float NOT NULL default '0',
+ `ap_dot_bonus` float NOT NULL default '0',
`comments` varchar(255) default NULL,
PRIMARY KEY (`entry`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
-SET character_set_client = @saved_cs_client;
-
---
--- Dumping data for table `spell_bonus_data`
---
-
-LOCK TABLES `spell_bonus_data` WRITE;
-/*!40000 ALTER TABLE `spell_bonus_data` DISABLE KEYS */;
-INSERT INTO `spell_bonus_data` VALUES
-(49941, 0, 0, 0.04, 'Death Knight - Blood Boil'),
-(48721, 0, 0, 0.04, 'Death Knight - Blood Boil'),
-(55078, 0, 0, 0.055, 'Death Knight - Blood Plague'),
-(50444, 0, 0, 0.105, 'Death Knight - Corpse Explosion Triggered'),
-(52212, 0, 0, 0.0475, 'Death Knight - Death and Decay'),
-(47632, 0, 0, 0.15, 'Death Knight - Death Coil'),
-(47633, 0, 0, 0.15, 'Death Knight - Death Coil Heal'),
-(55095, 0, 0, 0.055, 'Death Knight - Frost Fever'),
-(49184, 0, 0, 0.1, 'Death Knight - Howling Blast'),
-(45477, 0, 0, 0.1, 'Death Knight - Icy Touch'),
-(56903, 0, 0, 0, 'Death Knight - Lichflame'),
-(50842, 0, 0, 0.04, 'Death Knight - Pestilence'),
-(50401, 0, 0, 0, 'Death Knight - Razor Frost'),
-(47476, 0, 0, 0.06, 'Death Knight - Strangulate'),
-(50536, 0, 0, 0.013, 'Death Knight - Unholy Blight (Rank1)'),
-(51373, 0, 0, 0.013, 'Death Knight - Unholy Blight (Rank2)'),
-(51374, 0, 0, 0.013, 'Death Knight - Unholy Blight (Rank3)'),
-(51375, 0, 0, 0.013, 'Death Knight - Unholy Blight (Rank4)'),
-(339, 0, 0.1, 0, 'Druid - Entangling Roots'),
-(5185, 1.611, 0, 0, 'Druid - Healing Touch'),
-(42231, 0.12898, 0, 0, 'Druid - Hurricane Triggered'),
-(5570, 0, 0.2, 0, 'Druid - Insect Swarm'),
-(33763, 0.6453, 0.09518, 0, 'Druid - Lifebloom'),
-(8921, 0.1515, 0.13, 0, 'Druid - Moonfire'),
-(50464, 0.67305, 0, 0, 'Druid - Nourish'),
-(8936, 0.539, 0.188, 0, 'Druid - Regrowth'),
-(774, 0, 0.37604, 0, 'Druid - Rejuvenation'),
-(50294, 0.0119, 0, 0, 'Druid - Starfall AOE rank 1'),
-(53188, 0.0119, 0, 0, 'Druid - Starfall AOE rank 2'),
-(53189, 0.0119, 0, 0, 'Druid - Starfall AOE rank 3'),
-(53190, 0.0119, 0, 0, 'Druid - Starfall AOE rank 4'),
-(50288, 0.0458, 0, 0, 'Druid - Starfall rank 1'),
-(53191, 0.0458, 0, 0, 'Druid - Starfall rank 2'),
-(53194, 0.0458, 0, 0, 'Druid - Starfall rank 3'),
-(53195, 0.0458, 0, 0, 'Druid - Starfall rank 4'),
-(2912, 1, 0, 0, 'Druid - Starfire'),
-(18562, 0, 0, 0, 'Druid - Swiftmend'),
-(44203, 0.538, 0, 0, 'Druid - Tranquility Triggered'),
-(61391, 0.193, 0, 0, 'Druid - Typhoon'),
-(48438, 0, 0.11505, 0, 'Druid - Wild Growth'),
-(5176, 0.5714, 0, 0, 'Druid - Wrath'),
-(60089, 0, 0, 0.05, 'Faerie Fire (feral)'),
-(55039, 0, 0, 0, 'Item - Gnomish Lightning Generator'),
-(44425, 0.7143, 0, 0, 'Mage - Arcane Barrage'),
-(30451, 0.7143, 0, 0, 'Mage - Arcane Blast'),
-(1449, 0.2128, 0, 0, 'Mage - Arcane Explosion'),
-(7268, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 1'),
-(38700, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 10'),
-(38703, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 11'),
-(42844, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 12'),
-(42845, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 13'),
-(7269, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 2'),
-(7270, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 3'),
-(8419, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 4'),
-(8418, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 5'),
-(10273, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 6'),
-(10274, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 7'),
-(25346, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 8'),
-(27076, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell Rank 9'),
-(11113, 0.1936, 0, 0, 'Mage - Blast Wave'),
-(42208, 0.1437, 0, 0, 'Mage - Blizzard Triggered Spell Rank 1'),
-(42209, 0.1437, 0, 0, 'Mage - Blizzard Triggered Spell Rank 2'),
-(42210, 0.1437, 0, 0, 'Mage - Blizzard Triggered Spell Rank 3'),
-(42211, 0.1437, 0, 0, 'Mage - Blizzard Triggered Spell Rank 4'),
-(42212, 0.1437, 0, 0, 'Mage - Blizzard Triggered Spell Rank 5'),
-(42213, 0.1437, 0, 0, 'Mage - Blizzard Triggered Spell Rank 6'),
-(42198, 0.1437, 0, 0, 'Mage - Blizzard Triggered Spell Rank 7'),
-(42937, 0.1437, 0, 0, 'Mage - Blizzard Triggered Spell Rank 8'),
-(42938, 0.1437, 0, 0, 'Mage - Blizzard Triggered Spell Rank 9'),
-(120, 0.214, 0, 0, 'Mage - Cone of Cold'),
-(31661, 0.1936, 0, 0, 'Mage - Dragons Breath'),
-(133, 1, 0, 0, 'Mage - Fire Ball'),
-(2136, 0.4286, 0, 0, 'Mage - Fire Blast'),
-(543, 0.1, 0, 0, 'Mage - Fire Ward'),
-(2120, 0.2357, 0.122, 0, 'Mage - Flamestrike'),
-(116, 0.8143, 0, 0, 'Mage - Frost Bolt'),
-(122, 0.193, 0, 0, 'Mage - Frost Nova'),
-(6143, 0.1, 0, 0, 'Mage - Frost Ward'),
-(44614, 0.8571, 0, 0, 'Mage - Frostfire Bolt'),
-(11426, 0.8053, 0, 0, 'Mage - Ice Barrier'),
-(30455, 0.1429, 0, 0, 'Mage - Ice Lance'),
-(44457, 0.4, 0.2, 0, 'Mage - Living Bomb'),
-(1463, 0.8053, 0, 0, 'Mage - Mana Shield'),
-(34913, 0, 0, 0, 'Mage - Molten Armor Triggered Rank 1'),
-(43043, 0, 0, 0, 'Mage - Molten Armor Triggered Rank 2'),
-(43044, 0, 0, 0, 'Mage - Molten Armor Triggered Rank 3'),
-(11366, 1.15, 0.05, 0, 'Mage - Pyroblast'),
-(2948, 0.4286, 0, 0, 'Mage - Scorch'),
-(31935, 0.07, 0, 0.07, 'Paladin - Avenger Shield'),
-(53742, 0, 0.0176, 0.03, 'Paladin - Blood Corruption'),
-(26573, 0, 0.04, 0.04, 'Paladin - Consecration'),
-(879, 0.15, 0, 0.15, 'Paladin - Exorcism'),
-(19750, 1, 0, 0, 'Paladin - Flash of Light'),
-(53595, 0, 0, 0, 'Paladin - Hammer of the Righteous'),
-(24275, 0.15, 0, 0.15, 'Paladin - Hammer of Wrath'),
-(635, 1.66, 0, 0, 'Paladin - Holy Light'),
-(20925, 0.09, 0, 0.056, 'Paladin - Holy Shield'),
-(25914, 0.81, 0, 0, 'Paladin - Holy Shock Triggered Heal Rank 1'),
-(25913, 0.81, 0, 0, 'Paladin - Holy Shock Triggered Heal Rank 2'),
-(25903, 0.81, 0, 0, 'Paladin - Holy Shock Triggered Heal Rank 3'),
-(27175, 0.81, 0, 0, 'Paladin - Holy Shock Triggered Heal Rank 4'),
-(33074, 0.81, 0, 0, 'Paladin - Holy Shock Triggered Heal Rank 5'),
-(48820, 0.81, 0, 0, 'Paladin - Holy Shock Triggered Heal Rank 6'),
-(48821, 0.81, 0, 0, 'Paladin - Holy Shock Triggered Heal Rank 7'),
-(25912, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt Rank 1'),
-(25911, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt Rank 2'),
-(25902, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt Rank 3'),
-(27176, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt Rank 4'),
-(33073, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt Rank 5'),
-(48822, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt Rank 6'),
-(48823, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt Rank 7'),
-(31803, 0, 0.0176, 0.03, 'Paladin - Holy Vengeance'),
-(2812, 0.07, 0, 0.07, 'Paladin - Holy Wrath'),
-(31898, 0.25, 0, 0.16, 'Paladin - Judgement of Blood Enemy'),
-(32220, 0.0833, 0, 0.0533, 'Paladin - Judgement of Blood Self'),
-(20467, 0.25, 0, 0.16, 'Paladin - Judgement of Command'),
-(53733, 0, 0, 0, 'Paladin - Judgement of Corruption'),
-(20267, 0.1, 0, 0.1, 'Paladin - Judgement of Light Proc'),
-(20187, 0.4, 0, 0.25, 'Paladin - Judgement of Righteousness'),
-(53726, 0.25, 0, 0.16, 'Paladin - Judgement of the Martyr Enemy'),
-(53725, 0.0833, 0, 0.0533, 'Paladin - Judgement of the Martyr Self'),
-(31804, 0, 0, 0, 'Paladin - Judgement of Vengeance'),
-(58597, 0.75, 0, 0, 'Paladin - Sacred Shield'),
-(53601, 0.75, 0, 0, 'Paladin - Sacred Shield'),
-(31893, 0, 0, 0, 'Paladin - Seal of Blood Proc Enemy'),
-(32221, 0, 0, 0, 'Paladin - Seal of Blood Proc Self'),
-(20424, 0, 0, 0, 'Paladin - Seal of Command Proc'),
-(20167, 0.15, 0, 0.15, 'Paladin - Seal of Light Proc'),
-(25742, 0.07, 0, 0.039, 'Paladin - Seal of Righteousness Dummy Proc'),
-(53719, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Enemy'),
-(53718, 0, 0, 0, 'Paladin - Seal of the Martyr Proc Self'),
-(53600, 0, 0, 0, 'Paladin - Shield of Righteousness'),
-(32546, 0.8068, 0, 0, 'Priest - Binding Heal'),
-(27813, 0, 0, 0, 'Priest - Blessed Recovery Rank 1'),
-(27817, 0, 0, 0, 'Priest - Blessed Recovery Rank 2'),
-(27818, 0, 0, 0, 'Priest - Blessed Recovery Rank 3'),
-(34861, 0.402, 0, 0, 'Priest - Circle of Healing'),
-(19236, 0.8068, 0, 0, 'Priest - Desperate Prayer'),
-(2944, 0, 0.1849, 0, 'Priest - Devouring Plague'),
-(2061, 0.8068, 0, 0, 'Priest - Flash Heal'),
-(2060, 1.6135, 0, 0, 'Priest - Greater Heal'),
-(14914, 0.5711, 0.024, 0, 'Priest - Holy Fire'),
-(15237, 0.1606, 0, 0, 'Priest - Holy Nova Damage'),
-(23455, 0.3035, 0, 0, 'Priest - Holy Nova Heal Rank 1'),
-(23458, 0.3035, 0, 0, 'Priest - Holy Nova Heal Rank 2'),
-(23459, 0.3035, 0, 0, 'Priest - Holy Nova Heal Rank 3'),
-(27803, 0.3035, 0, 0, 'Priest - Holy Nova Heal Rank 4'),
-(27804, 0.3035, 0, 0, 'Priest - Holy Nova Heal Rank 5'),
-(27805, 0.3035, 0, 0, 'Priest - Holy Nova Heal Rank 6'),
-(25329, 0.3035, 0, 0, 'Priest - Holy Nova Heal Rank 7'),
-(8129, 0, 0, 0, 'Priest - Mana Burn'),
-(8092, 0.428, 0, 0, 'Priest - Mind Blast'),
-(15407, 0.257, 0, 0, 'Priest - Mind Flay'),
-(49821, 0.2861, 0, 0, 'Priest - Mind Sear Trigger Rank 1'),
-(53022, 0.2861, 0, 0, 'Priest - Mind Sear Trigger Rank 2'),
-(47757, 1.6135, 0, 0, 'Priest - Penance (Rank 1'),
-(52986, 1.6135, 0, 0, 'Priest - Penance (Rank 2'),
-(52987, 1.6135, 0, 0, 'Priest - Penance (Rank 3'),
-(52988, 1.6135, 0, 0, 'Priest - Penance (Rank 4'),
-(17, 0.8068, 0, 0, 'Priest - Power Word: Shield'),
-(596, 0.8068, 0, 0, 'Priest - Prayer of Healing'),
-(33110, 0.8068, 0, 0, 'Priest - Prayer of Mending Heal Proc'),
-(33619, 0, 0, 0, 'Priest - Reflective Shield'),
-(139, 0, 0.376, 0, 'Priest - Renew'),
-(32379, 0.4296, 0, 0, 'Priest - Shadow Word: Death'),
-(589, 0, 0.1829, 0, 'Priest - Shadow Word: Pain'),
-(34433, 0.65, 0, 0, 'Priest - Shadowfiend'),
-(585, 0.714, 0, 0, 'Priest - Smite'),
-(34914, 0, 0.4, 0, 'Priest - Vampiric Touch'),
-(1064, 1.34, 0, 0, 'Shaman - Chain Heal'),
-(421, 0.57, 0, 0, 'Shaman - Chain Lightning'),
-(974, 0.4762, 0, 0, 'Shaman - Earth Shield'),
-(379, 0, 0, 0, 'Shaman - Earth Shield Triggered'),
-(8042, 0.3858, 0, 0, 'Shaman - Earth Shock'),
-(8443, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem Rank 1'),
-(8504, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem Rank 2'),
-(8505, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem Rank 3'),
-(11310, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem Rank 4'),
-(11311, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem Rank 5'),
-(25538, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem Rank 6'),
-(25539, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem Rank 7'),
-(61651, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem Rank 8'),
-(61660, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem Rank 9'),
-(8050, 0.2142, 0.1, 0, 'Shaman - Flame Shock'),
-(8026, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 1'),
-(58788, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 10'),
-(8028, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 2'),
-(8029, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 3'),
-(10445, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 4'),
-(16343, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 5'),
-(16344, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 6'),
-(25488, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 7'),
-(58786, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 8'),
-(58787, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc Rank 9'),
-(8056, 0.3858, 0, 0, 'Shaman - Frost Shock'),
-(8034, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 1'),
-(8037, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 2'),
-(10458, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 3'),
-(16352, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 4'),
-(16353, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 5'),
-(25501, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 6'),
-(58797, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 7'),
-(58798, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 8'),
-(58799, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 9'),
-(2645, 0, 0, 0, 'Shaman - Glyph of Ghost Wolf'),
-(52042, 0.045, 0, 0, 'Shaman - Healing Stream Totem Triggered Heal'),
-(331, 1.6106, 0, 0, 'Shaman - Healing Wave'),
-(51505, 0.5714, 0, 0, 'Shaman - Lava Burst'),
-(8004, 0.8082, 0, 0, 'Shaman - Lesser Healing Wave'),
-(403, 0.7143, 0, 0, 'Shaman - Lightning Bolt'),
-(26364, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 1'),
-(49278, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 10'),
-(49279, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 11'),
-(26365, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 2'),
-(26366, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 3'),
-(26367, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 4'),
-(26369, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 5'),
-(26370, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 6'),
-(26363, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 7'),
-(26371, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 8'),
-(26372, 0.33, 0, 0, 'Shaman - Lightning Shield Proc Rank 9'),
-(8188, 0.1, 0, 0, 'Shaman - Magma Totam Passive Rank 1'),
-(10582, 0.1, 0, 0, 'Shaman - Magma Totam Passive Rank 2'),
-(10583, 0.1, 0, 0, 'Shaman - Magma Totam Passive Rank 3'),
-(10584, 0.1, 0, 0, 'Shaman - Magma Totam Passive Rank 4'),
-(25551, 0.1, 0, 0, 'Shaman - Magma Totam Passive Rank 5'),
-(58733, 0.1, 0, 0, 'Shaman - Magma Totam Passive Rank 6'),
-(58736, 0.1, 0, 0, 'Shaman - Magma Totam Passive Rank 7'),
-(61295, 0.4, 0.18, 0, 'Shaman - Riptide'),
-(3606, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 1'),
-(58702, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 10'),
-(6350, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 2'),
-(6351, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 3'),
-(6352, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 4'),
-(10435, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 5'),
-(10436, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 6'),
-(25530, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 7'),
-(58700, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 8'),
-(58701, 0.1667, 0, 0, 'Shaman - Searing Totem Attack Rank 9'),
-(50796, 0.7139, 0, 0, 'Warlock - Chaos Bolt'),
-(17962, 0, 0, 0, 'Warlock - Conflagrate'),
-(172, 0, 0.2, 0, 'Warlock - Corruption'),
-(980, 0, 0.1, 0, 'Warlock - Curse of Agony'),
-(603, 0, 2, 0, 'Warlock - Curse of Doom'),
-(18220, 0.96, 0, 0, 'Warlock - Dark Pact Rank 1'),
-(18937, 0.96, 0, 0, 'Warlock - Dark Pact Rank 2'),
-(18938, 0.96, 0, 0, 'Warlock - Dark Pact Rank 3'),
-(27265, 0.96, 0, 0, 'Warlock - Dark Pact Rank 4'),
-(59092, 0.96, 0, 0, 'Warlock - Dark Pact Rank 5'),
-(6789, 0.214, 0, 0, 'Warlock - Death Coil'),
-(689, 0, 0.143, 0, 'Warlock - Drain Life'),
-(5138, 0, 0, 0, 'Warlock - Drain Mana'),
-(1120, 0, 0.429, 0, 'Warlock - Drain Soul'),
-(28176, 0, 0, 0, 'Warlock - Fel Armor'),
-(18790, 0, 0, 0, 'Warlock - Fel Stamina'),
-(48181, 0.4793, 0, 0, 'Warlock - Haunt'),
-(755, 0, 0.4485, 0, 'Warlock - Health Funnel'),
-(1949, 0, 0.0949, 0, 'Warlock - Hellfire'),
-(5857, 0.145, 0, 0, 'Warlock - Hellfire Effect on Enemy Rank 1'),
-(11681, 0.145, 0, 0, 'Warlock - Hellfire Effect on Enemy Rank 2'),
-(11682, 0.145, 0, 0, 'Warlock - Hellfire Effect on Enemy Rank 3'),
-(27214, 0.145, 0, 0, 'Warlock - Hellfire Effect on Enemy Rank 4'),
-(47822, 0.145, 0, 0, 'Warlock - Hellfire Effect on Enemy Rank 5'),
-(348, 0.2, 0.2, 0, 'Warlock - Immolate'),
-(29722, 0.7139, 0, 0, 'Warlock - Incinerate'),
-(42223, 0.286, 0, 0, 'Warlock - Rain of Fire Triggered Rank 1'),
-(42224, 0.286, 0, 0, 'Warlock - Rain of Fire Triggered Rank 2'),
-(42225, 0.286, 0, 0, 'Warlock - Rain of Fire Triggered Rank 3'),
-(42226, 0.286, 0, 0, 'Warlock - Rain of Fire Triggered Rank 4'),
-(42218, 0.286, 0, 0, 'Warlock - Rain of Fire Triggered Rank 5'),
-(47817, 0.286, 0, 0, 'Warlock - Rain of Fire Triggered Rank 6'),
-(47818, 0.286, 0, 0, 'Warlock - Rain of Fire Triggered Rank 7'),
-(5676, 0.4293, 0, 0, 'Warlock - Searing Pain'),
-(27243, 0.2129, 0.25, 0, 'Warlock - Seed of Corruption'),
-(686, 0.8569, 0, 0, 'Warlock - Shadow Bolt'),
-(6229, 0.3, 0, 0, 'Warlock - Shadow Ward'),
-(17877, 0.4293, 0, 0, 'Warlock - Shadowburn'),
-(47960, 0.1064, 0.0667, 0, 'Warlock - Shadowflame Rank 1'),
-(61291, 0.1064, 0.0667, 0, 'Warlock - Shadowflame Rank 2'),
-(30283, 0.1932, 0, 0, 'Warlock - Shadowfury'),
-(63106, 0, 0, 0, 'Warlock - Siphon Life Triggered'),
-(6353, 1.15, 0, 0, 'Warlock - Soul Fire'),
-(30294, 0, 0, 0, 'Warlock - Soul Leech'),
-(30108, 0, 0.2, 0, 'Warlock - Unstable Affliction'),
-(31117, 1.8, 0, 0, 'Warlock - Unstable Affliction Dispell');
-/*!40000 ALTER TABLE `spell_bonus_data` ENABLE KEYS */;
-UNLOCK TABLES;
--
-- Table structure for table `spell_disabled`
diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h
index 56e3214538f..1a9d5e470a4 100644
--- a/src/game/SharedDefines.h
+++ b/src/game/SharedDefines.h
@@ -271,7 +271,7 @@ enum SpellCategory
#define SPELL_ATTR_EX_UNK16 0x00010000 // 16 on immuniy
#define SPELL_ATTR_EX_UNAUTOCASTABLE_BY_PET 0x00020000 // 17
#define SPELL_ATTR_EX_UNK18 0x00040000 // 18
-#define SPELL_ATTR_EX_UNK19 0x00080000 // 19
+#define SPELL_ATTR_EX_CANT_TARGET_SELF 0x00080000 // 19 Applies only to unit target - for example Divine Intervention (19752)
#define SPELL_ATTR_EX_REQ_COMBO_POINTS1 0x00100000 // 20 Req combo points on target
#define SPELL_ATTR_EX_UNK21 0x00200000 // 21
#define SPELL_ATTR_EX_REQ_COMBO_POINTS2 0x00400000 // 22 Req combo points on target
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index a501f83710d..090749b32db 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -4341,6 +4341,9 @@ SpellCastResult Spell::CheckCast(bool strict)
if(m_spellInfo->excludeTargetAuraSpell && target->HasAura(m_spellInfo->excludeTargetAuraSpell))
return SPELL_FAILED_TARGET_AURASTATE;
+ if(target == m_caster && m_spellInfo->AttributesEx & SPELL_ATTR_EX_CANT_TARGET_SELF)
+ return SPELL_FAILED_BAD_TARGETS;
+
if(target != m_caster)
{
// target state requirements (apply to non-self only), to allow cast affects to self like Dirty Deeds
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index c0b130b6bdf..c10f8a47b4d 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -4606,7 +4606,7 @@ void AuraEffect::HandlePeriodicEnergize(bool apply, bool Real, bool changeAmount
if (m_spellProto->SpellIconID == 3184 && m_spellProto->SpellVisual[0] == 12495)
m_amount = m_target->GetMaxPower(POWER_MANA) * 25 / 10000;
else if (m_spellProto->Id == 29166) // Innervate
- m_amount = m_target->GetCreatePowers(POWER_MANA) * m_amount / ((GetParentAura()->GetAuraMaxDuration() / 10.0f) * (m_amplitude / IN_MILISECONDS));
+ m_amount = m_target->GetCreatePowers(POWER_MANA) * m_amount / (GetTotalTicks() * 100.0f);
}
}
@@ -4702,17 +4702,6 @@ void AuraEffect::HandlePeriodicDamage(bool apply, bool Real, bool changeAmount)
switch (m_spellProto->SpellFamilyName)
{
- case SPELLFAMILY_GENERIC:
- {
- // Pounce Bleed
- if ( m_spellProto->SpellIconID == 147 && m_spellProto->SpellVisual[0] == 0 )
- {
- // $AP*0.18/6 bonus per tick
- m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 3 / 100);
- return;
- }
- break;
- }
case SPELLFAMILY_WARRIOR:
{
// Rend
@@ -4741,20 +4730,6 @@ void AuraEffect::HandlePeriodicDamage(bool apply, bool Real, bool changeAmount)
}
case SPELLFAMILY_DRUID:
{
- // Rake
- if (m_spellProto->SpellFamilyFlags[0] & 0x1000)
- {
- // $AP*0.18 bonus per tick
- m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 18 / 100);
- return;
- }
- // Lacerate
- if (m_spellProto->SpellFamilyFlags[1] & 0x0000000100)
- {
- // $AP*0.05/5 bonus per tick
- m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) / 100);
- return;
- }
// Rip
if (m_spellProto->SpellVisual[0] == 3941)
{
@@ -4777,13 +4752,6 @@ void AuraEffect::HandlePeriodicDamage(bool apply, bool Real, bool changeAmount)
m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * cp / 100);
return;
}
- // Lock Jaw
- if (m_spellProto->SpellFamilyFlags[1] & 0x10000000)
- {
- // 0.15*$AP
- m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 15 / 100);
- return;
- }
break;
}
case SPELLFAMILY_ROGUE:
@@ -4804,38 +4772,6 @@ void AuraEffect::HandlePeriodicDamage(bool apply, bool Real, bool changeAmount)
m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * AP_per_combo[cp]);
return;
}
- // Garrote
- if (m_spellProto->SpellFamilyFlags[0] & 0x100)
- {
- // $AP*0.07 bonus per tick
- m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 7 / 100);
- return;
- }
- // Deadly Poison
- if (m_spellProto->SpellFamilyFlags[0] & 0x10000)
- {
- // 0.08*$AP / 4 * amount of stack
- m_amount += int32(caster->GetTotalAttackPowerValue(BASE_ATTACK) * 2 * GetParentAura()->GetStackAmount() / 100);
- return;
- }
- break;
- }
- case SPELLFAMILY_HUNTER:
- {
- // Serpent Sting
- if (m_spellProto->SpellFamilyFlags[0] & 0x4000)
- {
- // $RAP*0.1/5 bonus per tick
- m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 10 / 500);
- return;
- }
- // Immolation Trap
- if (m_spellProto->SpellFamilyFlags[0] & 0x4 && m_spellProto->SpellIconID == 678)
- {
- // $RAP*0.1/5 bonus per tick
- m_amount += int32(caster->GetTotalAttackPowerValue(RANGED_ATTACK) * 10 / 500);
- return;
- }
break;
}
default:
diff --git a/src/game/SpellAuras.h b/src/game/SpellAuras.h
index db747da3c54..4c37eeb121f 100644
--- a/src/game/SpellAuras.h
+++ b/src/game/SpellAuras.h
@@ -353,6 +353,7 @@ class TRINITY_DLL_SPEC AuraEffect
virtual void Update(uint32 diff);
uint32 GetTickNumber() const { return m_tickNumber; }
+ int32 GetTotalTicks () const { return m_amplitude ? (GetParentAura()->GetAuraMaxDuration() / m_amplitude) : 1;}
bool IsAreaAura() const { return m_isAreaAura; }
bool IsPeriodic() const { return m_isPeriodic; }
bool IsPersistent() const { return m_isPersistent; }
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index ebf0037781d..bd0b1766acb 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -386,13 +386,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
damage = 200;
break;
}
- // Intercept (warrior spell trigger)
- case 20253:
- case 61491:
- {
- damage+= uint32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.12f);
- break;
- }
// arcane charge. must only affect demons (also undead?)
case 45072:
{
@@ -426,9 +419,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
{
// Bloodthirst
if(m_spellInfo->SpellFamilyFlags[1] & 0x400)
- {
damage = uint32(damage * (m_caster->GetTotalAttackPowerValue(BASE_ATTACK)) / 100);
- }
// Shield Slam
else if(m_spellInfo->SpellFamilyFlags[1] & 0x200 && m_spellInfo->Category==1209)
damage += int32(m_caster->GetShieldBlockValue());
@@ -438,12 +429,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
damage = uint32(damage * m_caster->GetTotalAttackPowerValue(BASE_ATTACK) / 100);
m_caster->ModifyAuraState(AURA_STATE_WARRIOR_VICTORY_RUSH, false);
}
- // Revenge ${$m1+$AP*0.207} to ${$M1+$AP*0.207}
- else if(m_spellInfo->SpellFamilyFlags[0] & 0x400)
- damage+= uint32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.207f);
- // Heroic Throw ${$m1+$AP*.50}
- else if(m_spellInfo->SpellFamilyFlags[1] & 0x00000001)
- damage+= uint32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 0.5f);
// Shockwave ${$m3/100*$AP}
else if(m_spellInfo->SpellFamilyFlags[1] & 0x00008000)
{
@@ -452,12 +437,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
damage+= int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * pct / 100);
break;
}
- // Thunder Clap
- else if(m_spellInfo->SpellFamilyFlags[0] & 0x80)
- {
- damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) * 12 / 100);
- break;
- }
break;
}
case SPELLFAMILY_WARLOCK:
@@ -520,17 +499,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
damage += int32(energy * multiple);
damage += int32(((Player*)m_caster)->GetComboPoints() * ap * 7 / 100);
}
- // Rake
- else if(m_spellInfo->SpellFamilyFlags[0] & 0x1000 && m_spellInfo->Effect[2]==SPELL_EFFECT_ADD_COMBO_POINTS)
- {
- // $AP*0.01 bonus
- damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK) / 100);
- }
- // Swipe
- else if(m_spellInfo->SpellFamilyFlags[1] & 0x00100000)
- {
- damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.08f);
- }
break;
}
case SPELLFAMILY_ROGUE:
@@ -582,53 +550,14 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
damage += combo*40;
}
}
- // Gouge
- else if(m_spellInfo->SpellFamilyFlags[0] & 0x8)
- {
- damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.21f);
- }
- // Instant Poison
- else if(m_spellInfo->SpellFamilyFlags[0] & 0x2000)
- {
- damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.10f);
- }
- // Wound Poison
- else if(m_spellInfo->SpellFamilyFlags[0] & 0x10000000)
- {
- damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.04f);
- }
break;
}
case SPELLFAMILY_HUNTER:
{
- // Gore
- if (m_spellInfo->SpellIconID == 1578)
- {
- damage+= rand()%2 ? damage : 0;
- }
- // Mongoose Bite
- else if((m_spellInfo->SpellFamilyFlags[0] & 0x2) && m_spellInfo->SpellVisual[0]==342)
- {
- damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2f);
- }
- // Counterattack
- else if(m_spellInfo->SpellFamilyFlags[1] & 0x00080000)
- {
- damage += int32(m_caster->GetTotalAttackPowerValue(BASE_ATTACK)*0.2f);
- }
- // Arcane Shot
- else if((m_spellInfo->SpellFamilyFlags[0] & 0x00000800) && m_spellInfo->maxLevel > 0)
- {
- damage += int32(m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.15f);
- }
// Steady Shot
- else if(m_spellInfo->SpellFamilyFlags[1] & 0x1)
+ if(m_spellInfo->SpellFamilyFlags[1] & 0x1)
{
- int32 base = irand((int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MINDAMAGE),(int32)m_caster->GetWeaponDamageRange(RANGED_ATTACK, MAXDAMAGE));
- damage += int32(float(base)/m_caster->GetAttackTime(RANGED_ATTACK)*2800 + m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.1f);
-
bool found = false;
-
// check dazed affect
Unit::AuraEffectList const& decSpeedList = unitTarget->GetAurasByType(SPELL_AURA_MOD_DECREASE_SPEED);
for(Unit::AuraEffectList::const_iterator iter = decSpeedList.begin(); iter != decSpeedList.end(); ++iter)
@@ -644,11 +573,6 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
if(found)
damage += m_spellInfo->EffectBasePoints[1];
}
- // Explosive Trap Effect
- else if(m_spellInfo->SpellFamilyFlags[0] & 0x00000004)
- {
- damage += int32(m_caster->GetTotalAttackPowerValue(RANGED_ATTACK)*0.1f);
- }
break;
}
case SPELLFAMILY_PALADIN:
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index eecfcb6b1c8..0002e967304 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -1228,8 +1228,8 @@ void SpellMgr::LoadSpellBonusess()
{
mSpellBonusMap.clear(); // need for reload case
uint32 count = 0;
- // 0 1 2 3
- QueryResult *result = WorldDatabase.Query("SELECT entry, direct_bonus, dot_bonus, ap_bonus FROM spell_bonus_data");
+ // 0 1 2 3 4
+ QueryResult *result = WorldDatabase.Query("SELECT entry, direct_bonus, dot_bonus, ap_bonus, ap_dot_bonus FROM spell_bonus_data");
if( !result )
{
barGoLink bar( 1 );
@@ -1258,8 +1258,10 @@ void SpellMgr::LoadSpellBonusess()
sbe.direct_damage = fields[1].GetFloat();
sbe.dot_damage = fields[2].GetFloat();
sbe.ap_bonus = fields[3].GetFloat();
+ sbe.ap_dot_bonus = fields[4].GetFloat();
mSpellBonusMap[entry] = sbe;
+ ++count;
} while( result->NextRow() );
delete result;
@@ -1281,12 +1283,14 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const* spellPr
/* Check Periodic Auras
- * Both hots and dots can trigger if spell has no PROC_FLAG_SUCCESSFUL_DAMAGING_SPELL_HIT
- nor PROC_FLAG_SUCCESSFUL_HEALING_SPELL
+ *Dots can trigger if spell has no PROC_FLAG_SUCCESSFUL_NEGATIVE_MAGIC_SPELL
+ nor PROC_FLAG_TAKEN_POSITIVE_MAGIC_SPELL
+
+ *Only Hots can trigger if spell has PROC_FLAG_TAKEN_POSITIVE_MAGIC_SPELL
- *Only Hots can trigger if spell has PROC_FLAG_SUCCESSFUL_HEALING_SPELL
+ *Only dots can trigger if spell has both positivity flags or PROC_FLAG_SUCCESSFUL_NEGATIVE_MAGIC_SPELL
- *Only dots can trigger if spell has both positivity flags or PROC_FLAG_SUCCESSFUL_DAMAGING_SPELL_HIT
+ *Aura has to have PROC_FLAG_TAKEN_POSITIVE_MAGIC_SPELL or spellfamily specified to trigger from Hot
*/
@@ -1300,6 +1304,8 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const* spellPr
else if (EventProcFlag & PROC_FLAG_TAKEN_POSITIVE_MAGIC_SPELL
&& !(procExtra & PROC_EX_INTERNAL_HOT))
return false;
+ else if (procExtra & PROC_EX_INTERNAL_HOT)
+ procExtra |= PROC_EX_INTERNAL_REQ_FAMILY;
}
if (procFlags & PROC_FLAG_ON_TAKE_PERIODIC)
@@ -1312,6 +1318,8 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const* spellPr
else if (EventProcFlag & PROC_FLAG_TAKEN_POSITIVE_MAGIC_SPELL
&& !(procExtra & PROC_EX_INTERNAL_HOT))
return false;
+ else if (procExtra & PROC_EX_INTERNAL_HOT)
+ procExtra |= PROC_EX_INTERNAL_REQ_FAMILY;
}
// Trap casts are active by default
if (procFlags & PROC_FLAG_ON_TRAP_ACTIVATION)
@@ -1356,7 +1364,7 @@ bool SpellMgr::IsSpellProcEventCanTriggeredBy(SpellProcEventEntry const* spellPr
}
}
- if (procExtra & (PROC_EX_INTERNAL_REQ_FAMILY | PROC_EX_INTERNAL_HOT))
+ if (procExtra & (PROC_EX_INTERNAL_REQ_FAMILY))
{
if (!hasFamilyMask)
return false;
diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h
index fe5da3cda55..da23bddc4af 100644
--- a/src/game/SpellMgr.h
+++ b/src/game/SpellMgr.h
@@ -322,7 +322,7 @@ inline bool IsAutoRepeatRangedSpell(SpellEntry const* spellInfo)
inline bool IsRangedWeaponSpell(SpellEntry const* spellInfo)
{
//spell->DmgClass == SPELL_DAMAGE_CLASS_RANGED should be checked outside
- return (spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER) // for 53352, cannot find better way
+ return (spellInfo->SpellFamilyName == SPELLFAMILY_HUNTER && !(spellInfo->SpellFamilyFlags[1] & 0x100000000)) // for 53352, cannot find better way
|| (spellInfo->EquippedItemSubClassMask & ITEM_SUBCLASS_MASK_WEAPON_RANGED);
}
@@ -500,6 +500,7 @@ struct SpellBonusEntry
float direct_damage;
float dot_damage;
float ap_bonus;
+ float ap_dot_bonus;
};
typedef UNORDERED_MAP<uint32, SpellProcEventEntry> SpellProcEventMap;
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index c6154ab0853..15a52ff62f6 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -9320,21 +9320,29 @@ uint32 Unit::SpellDamageBonus(Unit *pVictim, SpellEntry const *spellProto, uint3
DoneAdvertisedBenefit += ((Guardian*)this)->GetBonusDamage();
// Check for table values
- float coeff;
+ float coeff = 0;
SpellBonusEntry const* bonus = spellmgr.GetSpellBonusData(spellProto->Id);
if (bonus)
{
if (damagetype == DOT)
+ {
coeff = bonus->dot_damage;
+ if (bonus->ap_dot_bonus > 0)
+ DoneTotal+=bonus->ap_dot_bonus * stack * ApCoeffMod * GetTotalAttackPowerValue(
+ (IsRangedWeaponSpell(spellProto) && spellProto->DmgClass !=SPELL_DAMAGE_CLASS_MELEE) ? RANGED_ATTACK : BASE_ATTACK);
+ }
else
+ {
coeff = bonus->direct_damage;
- if (bonus->ap_bonus)
- DoneTotal+=bonus->ap_bonus * GetTotalAttackPowerValue(BASE_ATTACK) * stack * ApCoeffMod;
+ if (bonus->ap_bonus > 0)
+ DoneTotal+=bonus->ap_dot_bonus * stack * ApCoeffMod * GetTotalAttackPowerValue(
+ (IsRangedWeaponSpell(spellProto) && spellProto->DmgClass !=SPELL_DAMAGE_CLASS_MELEE)? RANGED_ATTACK : BASE_ATTACK);
+ }
}
// Default calculation
if (DoneAdvertisedBenefit || TakenAdvertisedBenefit)
{
- if(!bonus)
+ if(!bonus || coeff < 0)
{
// Damage Done from spell damage bonus
int32 CastingTime = !IsChanneledSpell(spellProto) ? GetSpellCastTime(spellProto) : GetSpellDuration(spellProto);
@@ -9787,16 +9795,24 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint
// Check for table values
SpellBonusEntry const* bonus = !scripted ? spellmgr.GetSpellBonusData(spellProto->Id) : NULL;
- float coeff;
+ float coeff = 0;
float factorMod = 1.0f;
if (bonus)
{
if (damagetype == DOT)
+ {
coeff = bonus->dot_damage;
+ if (bonus->ap_dot_bonus > 0)
+ DoneTotal+=bonus->ap_dot_bonus * stack * GetTotalAttackPowerValue(
+ (IsRangedWeaponSpell(spellProto) && spellProto->DmgClass !=SPELL_DAMAGE_CLASS_MELEE)? RANGED_ATTACK : BASE_ATTACK);
+ }
else
+ {
coeff = bonus->direct_damage;
- if (bonus->ap_bonus)
- DoneTotal+=bonus->ap_bonus * GetTotalAttackPowerValue(BASE_ATTACK) * stack;
+ if (bonus->ap_bonus > 0)
+ DoneTotal+=bonus->ap_dot_bonus * stack * GetTotalAttackPowerValue(
+ (IsRangedWeaponSpell(spellProto) && spellProto->DmgClass !=SPELL_DAMAGE_CLASS_MELEE)? RANGED_ATTACK : BASE_ATTACK);
+ }
}
else // scripted bonus
{
@@ -9830,7 +9846,7 @@ uint32 Unit::SpellHealingBonus(Unit *pVictim, SpellEntry const *spellProto, uint
// Default calculation
if (DoneAdvertisedBenefit || TakenAdvertisedBenefit)
{
- if(!bonus && !scripted)
+ if((!bonus && !scripted) || coeff < 0)
{
// Damage Done from spell damage bonus
int32 CastingTime = !IsChanneledSpell(spellProto) ? GetSpellCastTime(spellProto) : GetSpellDuration(spellProto);