From 13b709a10b2dc04e1ebd887c88514e9768b918a0 Mon Sep 17 00:00:00 2001 From: nos4r2zod Date: Sun, 26 Jul 2009 04:16:28 +0400 Subject: [PATCH] [8249] Implement support `spell_proc_item_enchant` table for ppm item enchantments triggering at hit. * Added a new SQL table, spell_proc_item_enchant, for "custom" ppmRates on Item Enchants that do not use auras. With table data this must fix ppm for effect from 8033 and ranks enchanting, and item 6947/10918 and ranks enchanting. * Implemented SPELLMOD_FREQUENCY_OF_SUCCESS (26). That must fix work talent 14113, spell 32645 with ranks, glyph 41094 and item set effect 64917 in frequency part. Thanks to MaS0n as author alternative patch that partly used in this patch. Thanks to Thenecromancer as author alternative patch that ideas inspire MaS0n's patch writing and then this patch also. Signed-off-by: VladimirMangos --- sql/mangos.sql | 571 ++++++++++-------- ...8249_01_mangos_spell_proc_item_enchant.sql | 13 + sql/updates/8249_02_mangos_spell_chain.sql | 31 + sql/updates/Makefile.am | 4 + src/game/Chat.cpp | 1 + src/game/Chat.h | 1 + src/game/Level3.cpp | 9 + src/game/Player.cpp | 15 +- src/game/SpellMgr.cpp | 57 ++ src/game/SpellMgr.h | 13 + src/game/Unit.cpp | 6 +- src/game/Unit.h | 5 +- src/game/World.cpp | 3 + src/shared/revision_nr.h | 2 +- 14 files changed, 468 insertions(+), 263 deletions(-) create mode 100644 sql/updates/8249_01_mangos_spell_proc_item_enchant.sql create mode 100644 sql/updates/8249_02_mangos_spell_chain.sql diff --git a/sql/mangos.sql b/sql/mangos.sql index 2666460ad..ea9b2ab1e 100644 --- a/sql/mangos.sql +++ b/sql/mangos.sql @@ -23,7 +23,7 @@ DROP TABLE IF EXISTS `db_version`; CREATE TABLE `db_version` ( `version` varchar(120) default NULL, `creature_ai_version` varchar(120) default NULL, - `required_8247_01_mangos_spell_bonus_data` bit(1) default NULL + `required_8249_02_mangos_spell_chain` bit(1) default NULL ) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes'; -- @@ -13569,6 +13569,273 @@ LOCK TABLES `spell_area` WRITE; /*!40000 ALTER TABLE `spell_area` ENABLE KEYS */; UNLOCK TABLES; +-- +-- Table structure for `spell_bonus_data` +-- + +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', + `comments` varchar(255) default NULL, + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- 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'), +('55078', '0', '0', '0.055', 'Death Knight - Blood Plague Dummy Proc'), +('50444', '0', '0', '0.105', 'Death Knight - Corpse Explosion Triggered'), +('52212', '0', '0', '0.0475', 'Death Knight - Death and Decay Triggered'), +('47632', '0', '0', '0.15', 'Death Knight - Death Coil Damage'), +('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'), +('50842', '0', '0', '0.04', 'Death Knight - Pestilence'), +('47476', '0', '0', '0.06', 'Death Knight - Strangulate'), +('50536', '0', '0', '0.013', 'Death Knight - Unholy Blight Triggered'), +('50401', '0', '0', '0', 'Death Knight - Razor Frost'), +('56903', '0', '0', '0', 'Death Knight - Lichflame'), +('5185', '1.6104', '0', '0', 'Druid - Healing Touch'), +('33763', '0', '0.09518', '0', 'Druid - Lifebloom'), +('774', '0', '0.37604', '0', 'Druid - Rejuvenation'), +('8936', '0.539', '0.188', '0', 'Druid - Regrowth'), +('50288', '0.05', '0', '0', 'Druid - Starfall'), +('50294', '0.012', '0', '0', 'Druid - Starfall AOE'), +('18562', '0', '0', '0', 'Druid - Swiftmend'), +('44203', '0.538', '0', '0', 'Druid - Tranquility Triggered'), +('48438', '0', '0.11505', '0', 'Druid - Wild Growth'), +('50464', '0.6611', '0', '0', 'Druid - Nourish'), +('339', '0', '0.1', '0', 'Druid - Entangling Roots'), +('42231', '0.12898', '0', '0', 'Druid - Hurricane Triggered'), +('5570', '0', '0.127', '0', 'Druid - Insect Swarm'), +('8921', '0.1515', '0.13', '0', 'Druid - Moonfire'), +('2912', '1', '0', '0', 'Druid - Starfire'), +('5176', '0.5714', '0', '0', 'Druid - Wrath'), +('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'), +('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'), +('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'), +('1463', '0.8053', '0', '0', 'Mage - Mana Shield'), +('44425', '0.8571', '0', '0', 'Mage - Arcane Barrage'), +('11113', '0.1357', '0', '0', 'Mage - Blast Wave Rank'), +('31661', '0.1357', '0', '0', 'Mage - Dragons Breath'), +('2136', '0.4286', '0', '0', 'Mage - Fire Blast'), +('133', '1', '0', '0', 'Mage - Fire Ball'), +('2120', '0.2357', '0.122', '0', 'Mage - Flamestrike'), +('11366', '1.15', '0.05', '0', 'Mage - Pyroblast'), +('2948', '0.4286', '0', '0', 'Mage - Scorch'), +('44614', '0.8571', '0', '0', 'Mage - Frostfire Bolt'), +('44457', '0.4', '0.2', '0', 'Mage - Living Bomb'), +('42208', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 1'), +('42209', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 2'), +('42210', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 3'), +('42211', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 4'), +('42212', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 5'), +('42213', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 6'), +('42198', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 7'), +('42937', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 8'), +('42938', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 9'), +('120', '0.1357', '0', '0', 'Mage - Cone of Cold'), +('122', '0.193', '0', '0', 'Mage - Frost Nova'), +('116', '0.8143', '0', '0', 'Mage - Frost Bolt'), +('11426', '0.8053', '0', '0', 'Mage - Ice Barrier'), +('30455', '0.1429', '0', '0', 'Mage - Ice Lance'), +('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'), +('19750','0.4286', '0', '0', 'Paladin - Flash of Light'), +('635', '0.7143', '0', '0', 'Paladin - Holy Light'), +('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'), +('25914', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 1'), +('25913', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 2'), +('25903', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 3'), +('27175', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 4'), +('33074', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 5'), +('48820', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 6'), +('48821', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 7'), +('31935', '0.07', '0', '0.07', 'Paladin - Avengers Shiled'), +('26573', '0', '0.04', '0.04', 'Paladin - Consecration'), +('879', '0.15', '0', '0.15', 'Paladin - Exorcism'), +('24275', '0.15', '0', '0.15', 'Paladin - Hammer of Wrath'), +('20925', '0.09', '0', '0.056', 'Paladin - Holy Shield'), +('2812', '0.07', '0', '0.07', 'Paladin - Holy Wrath'), +('31893', '0.25', '0', '0.16', 'Paladin - Seal of Blood Enemy Proc'), +('32221', '0.25', '0', '0.16', 'Paladin - Seal of Blood Self Proc'), +('20424', '0.25', '0', '0.16', 'Paladin - Seal of Command Proc'), +('379', '0', '0', '0', 'Shaman - Earth Shield Triggered'), +('20167', '0.25', '0', '0.16', 'Paladin - Seal of Light Proc'), +('53719', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Enemy Proc'), +('53718', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Self Proc'), +('25742', '0.07', '0', '0.039', 'Paladin - Seal of Righteousness Dummy Proc'), +('53595', '0', '0', '0','Paladin - Hammer of the Righteous'), +('31803', '0', '0.013', '0.15', 'Paladin - Holy Vengeance'), +('52042', '0.045', '0', '0', 'Shaman - Healing Stream Totem Triggered Heal'), +('32546', '0.8068', '0', '0', 'Priest - Binding Heal'), +('34861', '0.402', '0', '0', 'Priest - Circle of Healing'), +('19236', '0.8068', '0', '0', 'Priest - Desperate Prayer'), +('2061', '0.8068', '0', '0', 'Priest - Flash Heal'), +('2060', '1.6135', '0', '0', 'Priest - Greater Heal'), +('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'), +('17', '0.8068', '0', '0', 'Priest - Power Word: Shield'), +('596', '0.8086', '0', '0', 'Priest - Prayer of Healing'), +('33110', '0.8068', '0', '0', 'Priest - Prayer of Mending Heal Proc'), +('139', '0', '0.376', '0', 'Priest - Renew'), +('2944', '0.1849', '0', '0', 'Priest - Devouring Plague'), +('14914', '0.5711', '0.024', '0', 'Priest - Holy Fire'), +('15237', '0.1606', '0', '0', 'Priest - Holy Nova Damage'), +('8129', '0', '0', '0', 'Priest - Mana Burn'), +('8092', '0.4296', '0', '0', 'Priest - Mind Blast'), +('15407', '0.257', '0', '0', 'Priest - Mind Flay'), +('49821', '0.14286', '0', '0', 'Priest - Mind Sear Trigger Rank 1'), +('53022', '0.14286', '0', '0', 'Priest - Mind Sear Trigger Rank 2'), +('34433', '0.65', '0', '0', 'Priest - Shadowfiend'), +('32379', '0.4296', '0', '0', 'Priest - Shadow Word: Death'), +('589', '0', '0.1829', '0', 'Priest - Shadow Word: Pain'), +('585', '0.714', '0', '0', 'Priest - Smite'), +('34914', '0', '0.4', '0', 'Priest - Vampiric Touch'), +('974', '0.4762', '0', '0', 'Shaman - Earth Shield'), +('1064', '1.34', '0', '0', 'Shaman - Chain Heal'), +('331', '1.6106', '0', '0', 'Shaman - Healing Wave'), +('8004', '0.8082', '0', '0', 'Shaman - Lesser Healing Wave'), +('61295', '0.4', '0.18', '0', 'Shaman - Riptide'), +('421', '0.57', '0', '0', 'Shaman - Chain Lightning'), +('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'), +('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'), +('58788', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 10'), +('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'), +('51505', '0.5714', '0', '0', 'Shaman - Lava Burst'), +('403', '0.7143', '0', '0', 'Shaman - Lightning Bolt'), +('26364', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 1'), +('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'), +('49278', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 10'), +('49279', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 11'), +('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'), +('3606', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 1'), +('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'), +('58702', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 10'), +('980', '0', '0.1', '0', 'Warlock - Curse of Agony'), +('603', '0', '2', '0', 'Warlock - Curse of Doom'), +('172', '0', '0.3', '0', 'Warlock - Corruption'), +('348', '0.2', '0.2', '0', 'Warlock - Immolate'), +('27243', '0.22', '0.25', '0', 'Warlock - Seed of Corruption'), +('30108', '0', '0.24', '0', 'Warlock - Unstable Affliction'), +('31117', '1.8', '0', '0', 'Warlock - Unstable Affliction Dispell'), +('17962', '0', '0', '0', 'Warlock - Conflagrate'), +('6789', '0.22', '0', '0', 'Warlock - Death Coil'), +('28176', '0', '0', '0', 'Warlock - Fel Armor'), +('48181', '0.4729', '0', '0', 'Warlock - Haunt'), +('29722', '0.7143', '0', '0', 'Warlock - Incinerate'), +('5676', '0.4286', '0', '0', 'Warlock - Searing Pain'), +('686', '0.8571', '0', '0', 'Warlock - Shadow Bolt'), +('17877', '0.4286', '0', '0', 'Warlock - Shadowburn'), +('30283', '0.195', '0', '0', 'Warlock - Shadowfury'), +('6353', '1.15', '0', '0', 'Warlock - Soul Fire'), +('689', '0', '0.1428', '0', 'Warlock - Drain Life'), +('5138', '0', '0', '0', 'Warlock - Drain Mana'), +('1120', '0', '0.4286', '0', 'Warlock - Drain Soul'), +('755', '0', '0.4485', '0', 'Warlock - Health Funnel'), +('1949', '0', '0.0946', '0', 'Warlock - Hellfire'), +('5857', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 1'), +('11681', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 2'), +('11682', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 3'), +('27214', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 4'), +('47822', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 5'), +('42223', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 1'), +('42224', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 2'), +('42225', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 3'), +('42226', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 4'), +('42218', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 5'), +('47817', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 6'), +('47818', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 7'), +('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'), +('6229', '0.3', '0', '0', 'Warlock - Shadow Ward'), +('63106', '0', '0', '0', 'Warlock - Siphon Life Triggered'); +/*!40000 ALTER TABLE `spell_bonus_data` ENABLE KEYS */; +UNLOCK TABLES; + -- -- Table structure for table `spell_chain` -- @@ -13591,6 +13858,37 @@ LOCK TABLES `spell_chain` WRITE; /*!40000 ALTER TABLE `spell_chain` DISABLE KEYS */; INSERT INTO spell_chain VALUES /*------------------ +--(0) Not associated with skills +------------------*/ +/* Frostbrand Attack */ +(8034,0,8034,1,0), +(8037,8034,8034,2,0), +(10458,8037,8034,3,0), +(16352,10458,8034,4,0), +(16353,16352,8034,5,0), +(25501,16353,8034,6,0), +(58797,25501,8034,7,0), +(58798,58797,8034,8,0), +(58799,58798,8034,9,0), +/* Instant Poison */ +(8680,0,8680,1,0), +(8685,8680,8680,2,0), +(8689,8685,8680,3,0), +(11335,8689,8680,4,0), +(11336,11335,8680,5,0), +(11337,11336,8680,6,0), +(26890,11337,8680,7,0), +(57964,26890,8680,8,0), +(57965,57964,8680,9,0), +/* Wound Poison */ +(13218,0,13218,1,0), +(13222,13218,13218,2,0), +(13223,13222,13218,3,0), +(13224,13223,13218,4,0), +(27189,13224,13218,5,0), +(57974,27189,13218,6,0), +(57975,57974,13218,7,0), +/*------------------ --(6) Frost ------------------*/ /*Blizzard*/ @@ -17684,266 +17982,27 @@ INSERT INTO `spell_proc_event` VALUES UNLOCK TABLES; -- --- Table structure for spell_bonus_data +-- Table structure for spell_proc_item_enchant -- -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', - `comments` varchar(255) default NULL, + +DROP TABLE IF EXISTS `spell_proc_item_enchant`; +CREATE TABLE `spell_proc_item_enchant` ( + `entry` mediumint unsigned NOT NULL, + `ppmRate` float NOT NULL default '0', PRIMARY KEY (`entry`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8; -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'), -('55078', '0', '0', '0.055', 'Death Knight - Blood Plague Dummy Proc'), -('50444', '0', '0', '0.105', 'Death Knight - Corpse Explosion Triggered'), -('52212', '0', '0', '0.0475', 'Death Knight - Death and Decay Triggered'), -('47632', '0', '0', '0.15', 'Death Knight - Death Coil Damage'), -('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'), -('50842', '0', '0', '0.04', 'Death Knight - Pestilence'), -('47476', '0', '0', '0.06', 'Death Knight - Strangulate'), -('50536', '0', '0', '0.013', 'Death Knight - Unholy Blight Triggered'), -('50401', '0', '0', '0', 'Death Knight - Razor Frost'), -('56903', '0', '0', '0', 'Death Knight - Lichflame'), +-- +-- Dumping data for table `spell_proc_item_enchant` +-- -('5185', '1.6104', '0', '0', 'Druid - Healing Touch'), -('33763', '0', '0.09518', '0', 'Druid - Lifebloom'), -('774', '0', '0.37604', '0', 'Druid - Rejuvenation'), -('8936', '0.539', '0.188', '0', 'Druid - Regrowth'), -('50288', '0.05', '0', '0', 'Druid - Starfall'), -('50294', '0.012', '0', '0', 'Druid - Starfall AOE'), -('18562', '0', '0', '0', 'Druid - Swiftmend'), -('44203', '0.538', '0', '0', 'Druid - Tranquility Triggered'), -('48438', '0', '0.11505', '0', 'Druid - Wild Growth'), -('50464', '0.6611', '0', '0', 'Druid - Nourish'), -('339', '0', '0.1', '0', 'Druid - Entangling Roots'), -('42231', '0.12898', '0', '0', 'Druid - Hurricane Triggered'), -('5570', '0', '0.127', '0', 'Druid - Insect Swarm'), -('8921', '0.1515', '0.13', '0', 'Druid - Moonfire'), -('2912', '1', '0', '0', 'Druid - Starfire'), -('5176', '0.5714', '0', '0', 'Druid - Wrath'), -('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'), -('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'), -('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'), -('1463', '0.8053', '0', '0', 'Mage - Mana Shield'), -('44425', '0.8571', '0', '0', 'Mage - Arcane Barrage'), -('11113', '0.1357', '0', '0', 'Mage - Blast Wave Rank'), -('31661', '0.1357', '0', '0', 'Mage - Dragons Breath'), -('2136', '0.4286', '0', '0', 'Mage - Fire Blast'), -('133', '1', '0', '0', 'Mage - Fire Ball'), -('2120', '0.2357', '0.122', '0', 'Mage - Flamestrike'), -('11366', '1.15', '0.05', '0', 'Mage - Pyroblast'), -('2948', '0.4286', '0', '0', 'Mage - Scorch'), -('44614', '0.8571', '0', '0', 'Mage - Frostfire Bolt'), -('44457', '0.4', '0.2', '0', 'Mage - Living Bomb'), -('42208', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 1'), -('42209', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 2'), -('42210', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 3'), -('42211', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 4'), -('42212', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 5'), -('42213', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 6'), -('42198', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 7'), -('42937', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 8'), -('42938', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell Rank 9'), -('120', '0.1357', '0', '0', 'Mage - Cone of Cold'), -('122', '0.193', '0', '0', 'Mage - Frost Nova'), -('116', '0.8143', '0', '0', 'Mage - Frost Bolt'), -('11426', '0.8053', '0', '0', 'Mage - Ice Barrier'), -('30455', '0.1429', '0', '0', 'Mage - Ice Lance'), -('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'), -('19750','0.4286', '0', '0', 'Paladin - Flash of Light'), -('635', '0.7143', '0', '0', 'Paladin - Holy Light'), -('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'), -('25914', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 1'), -('25913', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 2'), -('25903', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 3'), -('27175', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 4'), -('33074', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 5'), -('48820', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 6'), -('48821', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal Rank 7'), -('31935', '0.07', '0', '0.07', 'Paladin - Avengers Shiled'), -('26573', '0', '0.04', '0.04', 'Paladin - Consecration'), -('879', '0.15', '0', '0.15', 'Paladin - Exorcism'), -('24275', '0.15', '0', '0.15', 'Paladin - Hammer of Wrath'), -('20925', '0.09', '0', '0.056', 'Paladin - Holy Shield'), -('2812', '0.07', '0', '0.07', 'Paladin - Holy Wrath'), -('31893', '0.25', '0', '0.16', 'Paladin - Seal of Blood Enemy Proc'), -('32221', '0.25', '0', '0.16', 'Paladin - Seal of Blood Self Proc'), -('20424', '0.25', '0', '0.16', 'Paladin - Seal of Command Proc'), -('379', '0', '0', '0', 'Shaman - Earth Shield Triggered'), -('20167', '0.25', '0', '0.16', 'Paladin - Seal of Light Proc'), -('53719', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Enemy Proc'), -('53718', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Self Proc'), -('25742', '0.07', '0', '0.039', 'Paladin - Seal of Righteousness Dummy Proc'), -('53595', '0', '0', '0','Paladin - Hammer of the Righteous'), -('31803', '0', '0.013', '0.15', 'Paladin - Holy Vengeance'), -('52042', '0.045', '0', '0', 'Shaman - Healing Stream Totem Triggered Heal'), -('32546', '0.8068', '0', '0', 'Priest - Binding Heal'), -('34861', '0.402', '0', '0', 'Priest - Circle of Healing'), -('19236', '0.8068', '0', '0', 'Priest - Desperate Prayer'), -('2061', '0.8068', '0', '0', 'Priest - Flash Heal'), -('2060', '1.6135', '0', '0', 'Priest - Greater Heal'), -('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'), -('17', '0.8068', '0', '0', 'Priest - Power Word: Shield'), -('596', '0.8086', '0', '0', 'Priest - Prayer of Healing'), -('33110', '0.8068', '0', '0', 'Priest - Prayer of Mending Heal Proc'), -('139', '0', '0.376', '0', 'Priest - Renew'), -('2944', '0.1849', '0', '0', 'Priest - Devouring Plague'), -('14914', '0.5711', '0.024', '0', 'Priest - Holy Fire'), -('15237', '0.1606', '0', '0', 'Priest - Holy Nova Damage'), -('8129', '0', '0', '0', 'Priest - Mana Burn'), -('8092', '0.4296', '0', '0', 'Priest - Mind Blast'), -('15407', '0.257', '0', '0', 'Priest - Mind Flay'), -('49821', '0.14286', '0', '0', 'Priest - Mind Sear Trigger Rank 1'), -('53022', '0.14286', '0', '0', 'Priest - Mind Sear Trigger Rank 2'), -('34433', '0.65', '0', '0', 'Priest - Shadowfiend'), -('32379', '0.4296', '0', '0', 'Priest - Shadow Word: Death'), -('589', '0', '0.1829', '0', 'Priest - Shadow Word: Pain'), -('585', '0.714', '0', '0', 'Priest - Smite'), -('34914', '0', '0.4', '0', 'Priest - Vampiric Touch'), -('974', '0.4762', '0', '0', 'Shaman - Earth Shield'), -('1064', '1.34', '0', '0', 'Shaman - Chain Heal'), -('331', '1.6106', '0', '0', 'Shaman - Healing Wave'), -('8004', '0.8082', '0', '0', 'Shaman - Lesser Healing Wave'), -('61295', '0.4', '0.18', '0', 'Shaman - Riptide'), -('421', '0.57', '0', '0', 'Shaman - Chain Lightning'), -('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'), -('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'), -('58788', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc Rank 10'), -('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'), -('51505', '0.5714', '0', '0', 'Shaman - Lava Burst'), -('403', '0.7143', '0', '0', 'Shaman - Lightning Bolt'), -('26364', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 1'), -('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'), -('49278', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 10'), -('49279', '0.33', '0', '0', 'Shaman - Lightning Shield Proc Rank 11'), -('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'), -('3606', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 1'), -('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'), -('58702', '0.1667', '0', '0', 'Shaman - Searing Totem Attack Rank 10'), -('980', '0', '0.1', '0', 'Warlock - Curse of Agony'), -('603', '0', '2', '0', 'Warlock - Curse of Doom'), -('172', '0', '0.3', '0', 'Warlock - Corruption'), -('348', '0.2', '0.2', '0', 'Warlock - Immolate'), -('27243', '0.22', '0.25', '0', 'Warlock - Seed of Corruption'), -('30108', '0', '0.24', '0', 'Warlock - Unstable Affliction'), -('31117', '1.8', '0', '0', 'Warlock - Unstable Affliction Dispell'), -('17962', '0', '0', '0', 'Warlock - Conflagrate'), -('6789', '0.22', '0', '0', 'Warlock - Death Coil'), -('28176', '0', '0', '0', 'Warlock - Fel Armor'), -('48181', '0.4729', '0', '0', 'Warlock - Haunt'), -('29722', '0.7143', '0', '0', 'Warlock - Incinerate'), -('5676', '0.4286', '0', '0', 'Warlock - Searing Pain'), -('686', '0.8571', '0', '0', 'Warlock - Shadow Bolt'), -('17877', '0.4286', '0', '0', 'Warlock - Shadowburn'), -('30283', '0.195', '0', '0', 'Warlock - Shadowfury'), -('6353', '1.15', '0', '0', 'Warlock - Soul Fire'), -('689', '0', '0.1428', '0', 'Warlock - Drain Life'), -('5138', '0', '0', '0', 'Warlock - Drain Mana'), -('1120', '0', '0.4286', '0', 'Warlock - Drain Soul'), -('755', '0', '0.4485', '0', 'Warlock - Health Funnel'), -('1949', '0', '0.0946', '0', 'Warlock - Hellfire'), -('5857', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 1'), -('11681', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 2'), -('11682', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 3'), -('27214', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 4'), -('47822', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy Rank 5'), -('42223', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 1'), -('42224', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 2'), -('42225', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 3'), -('42226', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 4'), -('42218', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 5'), -('47817', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 6'), -('47818', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered Rank 7'), -('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'), -('6229', '0.3', '0', '0', 'Warlock - Shadow Ward'), -('63106', '0', '0', '0', 'Warlock - Siphon Life Triggered'); -/*!40000 ALTER TABLE `spell_bonus_data` ENABLE KEYS */; +LOCK TABLES `spell_proc_item_enchant` WRITE; +/*!40000 ALTER TABLE `spell_proc_item_enchant` DISABLE KEYS */; +INSERT INTO `spell_proc_item_enchant` (`entry`, `ppmRate`) VALUES +(8034, 9), -- Frostbrand Weapon +(8680, 8.5714), -- Instant Poison +(13218, 21.4286); -- Wound Poison +/*!40000 ALTER TABLE `spell_proc_item_enchant` ENABLE KEYS */; UNLOCK TABLES; -- diff --git a/sql/updates/8249_01_mangos_spell_proc_item_enchant.sql b/sql/updates/8249_01_mangos_spell_proc_item_enchant.sql new file mode 100644 index 000000000..d1502ba40 --- /dev/null +++ b/sql/updates/8249_01_mangos_spell_proc_item_enchant.sql @@ -0,0 +1,13 @@ +ALTER TABLE db_version CHANGE COLUMN required_8247_01_mangos_spell_bonus_data required_8249_01_mangos_spell_proc_item_enchant bit; + +DROP TABLE IF EXISTS `spell_proc_item_enchant`; +CREATE TABLE `spell_proc_item_enchant` ( + `entry` mediumint unsigned NOT NULL, + `ppmRate` float NOT NULL default '0', + PRIMARY KEY (`entry`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +INSERT INTO `spell_proc_item_enchant` (`entry`, `ppmRate`) VALUES +(8034, 9), -- Frostbrand Weapon +(8680, 8.5714), -- Instant Poison +(13218, 21.4286); -- Wound Poison diff --git a/sql/updates/8249_02_mangos_spell_chain.sql b/sql/updates/8249_02_mangos_spell_chain.sql new file mode 100644 index 000000000..f3fda91c8 --- /dev/null +++ b/sql/updates/8249_02_mangos_spell_chain.sql @@ -0,0 +1,31 @@ +ALTER TABLE db_version CHANGE COLUMN required_8249_01_mangos_spell_proc_item_enchant required_8249_02_mangos_spell_chain bit; + +DELETE FROM `spell_chain` WHERE `spell_id` IN +(8034, 8037, 10458, 16352, 16353, 25501, 58797, 58798, 58799, 8680, 8685, 8689, 11335, 11336, 11337, 26890, 57964, 57965, 13218, 13222, 13223, 13224, 27189, 57974, 57975); + +INSERT INTO `spell_chain` (`spell_id`, `prev_spell`, `first_spell`, `rank`, `req_spell`) VALUES +(8034,0,8034,1,0), -- Frostbrand Attack +(8037,8034,8034,2,0), +(10458,8037,8034,3,0), +(16352,10458,8034,4,0), +(16353,16352,8034,5,0), +(25501,16353,8034,6,0), +(58797,25501,8034,7,0), +(58798,58797,8034,8,0), +(58799,58798,8034,9,0), +(8680,0,8680,1,0), -- Instant Poison +(8685,8680,8680,2,0), +(8689,8685,8680,3,0), +(11335,8689,8680,4,0), +(11336,11335,8680,5,0), +(11337,11336,8680,6,0), +(26890,11337,8680,7,0), +(57964,26890,8680,8,0), +(57965,57964,8680,9,0), +(13218,0,13218,1,0), -- Wound Poison +(13222,13218,13218,2,0), +(13223,13222,13218,3,0), +(13224,13223,13218,4,0), +(27189,13224,13218,5,0), +(57974,27189,13218,6,0), +(57975,57974,13218,7,0); diff --git a/sql/updates/Makefile.am b/sql/updates/Makefile.am index 584629ea5..5081f2f0b 100644 --- a/sql/updates/Makefile.am +++ b/sql/updates/Makefile.am @@ -252,6 +252,8 @@ pkgdata_DATA = \ 8227_01_mangos_spell_proc_event.sql \ 8237_01_mangos_creature_template.sql \ 8247_01_mangos_spell_bonus_data.sql \ + 8249_01_mangos_spell_proc_item_enchant.sql \ + 8249_02_mangos_spell_chain.sql \ README ## Additional files to include when running 'make dist' @@ -484,4 +486,6 @@ EXTRA_DIST = \ 8227_01_mangos_spell_proc_event.sql \ 8237_01_mangos_creature_template.sql \ 8247_01_mangos_spell_bonus_data.sql \ + 8249_01_mangos_spell_proc_item_enchant.sql \ + 8249_02_mangos_spell_chain.sql \ README diff --git a/src/game/Chat.cpp b/src/game/Chat.cpp index 3255e04d0..16484d272 100644 --- a/src/game/Chat.cpp +++ b/src/game/Chat.cpp @@ -451,6 +451,7 @@ ChatCommand * ChatHandler::getCommandTable() { "spell_loot_template", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadLootTemplatesSpellCommand, "", NULL }, { "spell_pet_auras", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadSpellPetAurasCommand, "", NULL }, { "spell_proc_event", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadSpellProcEventCommand, "", NULL }, + { "spell_proc_item_enchant", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadSpellProcItemEnchantCommand, "", NULL }, { "spell_script_target", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadSpellScriptTargetCommand, "", NULL }, { "spell_scripts", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadSpellScriptsCommand, "", NULL }, { "spell_target_position", SEC_ADMINISTRATOR, true, &ChatHandler::HandleReloadSpellTargetPositionCommand, "", NULL }, diff --git a/src/game/Chat.h b/src/game/Chat.h index 280d5505b..ac03a6f07 100644 --- a/src/game/Chat.h +++ b/src/game/Chat.h @@ -375,6 +375,7 @@ class ChatHandler bool HandleReloadSpellElixirCommand(const char* args); bool HandleReloadSpellLearnSpellCommand(const char* args); bool HandleReloadSpellProcEventCommand(const char* args); + bool HandleReloadSpellProcItemEnchantCommand(const char* args); bool HandleReloadSpellBonusesCommand(const char* args); bool HandleReloadSpellScriptTargetCommand(const char* args); bool HandleReloadSpellScriptsCommand(const char* args); diff --git a/src/game/Level3.cpp b/src/game/Level3.cpp index 2526652f5..c6ec6eacf 100644 --- a/src/game/Level3.cpp +++ b/src/game/Level3.cpp @@ -157,6 +157,7 @@ bool ChatHandler::HandleReloadAllSpellCommand(const char*) HandleReloadSpellLearnSpellCommand("a"); HandleReloadSpellProcEventCommand("a"); HandleReloadSpellBonusesCommand("a"); + HandleReloadSpellProcItemEnchantCommand("a"); HandleReloadSpellScriptTargetCommand("a"); HandleReloadSpellTargetPositionCommand("a"); HandleReloadSpellThreatsCommand("a"); @@ -528,6 +529,14 @@ bool ChatHandler::HandleReloadSpellBonusesCommand(const char*) return true; } +bool ChatHandler::HandleReloadSpellProcItemEnchantCommand(const char*) +{ + sLog.outString( "Re-Loading Spell Proc Item Enchant..." ); + spellmgr.LoadSpellProcItemEnchant(); + SendGlobalSysMessage("DB table `spell_proc_item_enchant` (item enchantment ppm) reloaded."); + return true; +} + bool ChatHandler::HandleReloadSpellScriptTargetCommand(const char*) { sLog.outString( "Re-Loading SpellsScriptTarget..." ); diff --git a/src/game/Player.cpp b/src/game/Player.cpp index f9874ae61..62fe327d7 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -6997,7 +6997,7 @@ void Player::CastItemCombatSpell(Unit* Target, WeaponAttackType attType) if(spellData.SpellPPMRate) { - uint32 WeaponSpeed = GetAttackTime(attType); + uint32 WeaponSpeed = proto->Delay; chance = GetPPMProcChance(WeaponSpeed, spellData.SpellPPMRate); } else if(chance > 100.0f) @@ -7027,7 +7027,18 @@ void Player::CastItemCombatSpell(Unit* Target, WeaponAttackType attType) continue; } - float chance = pEnchant->amount[s] != 0 ? float(pEnchant->amount[s]) : GetWeaponProcChance(); + // Use first rank to access spell item enchant procs + uint32 firstRank = spellmgr.GetFirstSpellInChain(spellInfo->Id); + float ppmRate = spellmgr.GetItemEnchantProcChance(firstRank); + + float chance = ppmRate + ? GetPPMProcChance(proto->Delay, ppmRate) + : pEnchant->amount[s] != 0 ? float(pEnchant->amount[s]) : GetWeaponProcChance(); + + + ApplySpellMod(spellInfo->Id,SPELLMOD_CHANCE_OF_SUCCESS,chance); + ApplySpellMod(spellInfo->Id,SPELLMOD_FREQUENCY_OF_SUCCESS,chance); + if (roll_chance_f(chance)) { if(IsPositiveSpell(pEnchant->spellid[s])) diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index ad3eda329..3ef401901 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -769,6 +769,63 @@ void SpellMgr::LoadSpellProcEvents() sLog.outString( ">> Loaded %u extra spell proc event conditions", count ); } +void SpellMgr::LoadSpellProcItemEnchant() +{ + mSpellProcItemEnchantMap.clear(); // need for reload case + + uint32 count = 0; + + // 0 1 + QueryResult *result = WorldDatabase.Query("SELECT entry, ppmRate FROM spell_proc_item_enchant"); + if( !result ) + { + + barGoLink bar( 1 ); + + bar.step(); + + sLog.outString(); + sLog.outString( ">> Loaded %u proc item enchant definitions", count ); + return; + } + + barGoLink bar( result->GetRowCount() ); + + do + { + Field *fields = result->Fetch(); + + bar.step(); + + uint32 entry = fields[0].GetUInt32(); + float ppmRate = fields[1].GetFloat(); + + SpellEntry const* spellInfo = sSpellStore.LookupEntry(entry); + + if (!spellInfo) + { + sLog.outErrorDb("Spell %u listed in `spell_proc_item_enchant` does not exist", entry); + continue; + } + + if ( GetFirstSpellInChain(entry) != entry ) + { + sLog.outErrorDb("Spell %u listed in `spell_proc_item_enchant` is not first rank in chain", entry); + // prevent loading since it won't have an effect anyway + continue; + } + + mSpellProcItemEnchantMap[entry] = ppmRate; + + ++count; + } while( result->NextRow() ); + + delete result; + + sLog.outString(); + sLog.outString( ">> Loaded %u proc item enchant definitions", count ); +} + void SpellMgr::LoadSpellBonusess() { mSpellBonusMap.clear(); // need for reload case diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index 2ac9e310b..bd76dcd9d 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -449,6 +449,7 @@ typedef UNORDERED_MAP SpellBonusMap; #define ELIXIR_SHATTRATH_MASK 0x8 typedef std::map SpellElixirMap; +typedef std::map SpellProcItemEnchantMap; // Spell script target related declarations (accessed using SpellMgr functions) enum SpellTargetType @@ -671,6 +672,16 @@ class SpellMgr return NULL; } + // Spell procs from item enchants + float GetItemEnchantProcChance(uint32 spellid) const + { + SpellProcItemEnchantMap::const_iterator itr = mSpellProcItemEnchantMap.find(spellid); + if(itr==mSpellProcItemEnchantMap.end()) + return 0.0f; + + return itr->second; + } + static bool IsSpellProcEventCanTriggeredBy( SpellProcEventEntry const * spellProcEvent, uint32 EventProcFlag, SpellEntry const * procSpell, uint32 procFlags, uint32 procExtra, bool active); // Spell bonus data @@ -898,6 +909,7 @@ class SpellMgr void LoadSpellScriptTarget(); void LoadSpellElixirs(); void LoadSpellProcEvents(); + void LoadSpellProcItemEnchant(); void LoadSpellBonusess(); void LoadSpellTargetPositions(); void LoadSpellThreats(); @@ -916,6 +928,7 @@ class SpellMgr SpellTargetPositionMap mSpellTargetPositions; SpellElixirMap mSpellElixirs; SpellProcEventMap mSpellProcEventMap; + SpellProcItemEnchantMap mSpellProcItemEnchantMap; SpellBonusMap mSpellBonusMap; SkillLineAbilityMap mSkillLineAbilityMap; SpellPetAuraMap mSpellPetAuraMap; diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index 1a46488d4..0b67a2f1d 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -8926,8 +8926,7 @@ float Unit::GetPPMProcChance(uint32 WeaponSpeed, float PPM) const { // proc per minute chance calculation if (PPM <= 0) return 0.0f; - uint32 result = uint32((WeaponSpeed * PPM) / 600.0f); // result is chance in percents (probability = Speed_in_sec * (PPM / 60)) - return result; + return WeaponSpeed * PPM / 600.0f; // result is chance in percents (probability = Speed_in_sec * (PPM / 60)) } void Unit::Mount(uint32 mount) @@ -11732,7 +11731,10 @@ bool Unit::IsTriggeredAtSpellProcEvent(Unit *pVictim, Aura* aura, SpellEntry con } // Apply chance modifer aura if(Player* modOwner = GetSpellModOwner()) + { modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_CHANCE_OF_SUCCESS,chance); + modOwner->ApplySpellMod(spellProto->Id,SPELLMOD_FREQUENCY_OF_SUCCESS,chance); + } return roll_chance_f(chance); } diff --git a/src/game/Unit.h b/src/game/Unit.h index 7abb97e6b..386f5181f 100644 --- a/src/game/Unit.h +++ b/src/game/Unit.h @@ -102,14 +102,15 @@ enum SpellModOp SPELLMOD_CRIT_DAMAGE_BONUS = 15, SPELLMOD_RESIST_MISS_CHANCE = 16, SPELLMOD_JUMP_TARGETS = 17, - SPELLMOD_CHANCE_OF_SUCCESS = 18, + SPELLMOD_CHANCE_OF_SUCCESS = 18, // Only used with SPELL_AURA_ADD_FLAT_MODIFIER and affects proc spells SPELLMOD_ACTIVATION_TIME = 19, SPELLMOD_EFFECT_PAST_FIRST = 20, SPELLMOD_CASTING_TIME_OLD = 21, SPELLMOD_DOT = 22, SPELLMOD_EFFECT3 = 23, SPELLMOD_SPELL_BONUS_DAMAGE = 24, - // spellmod 25, 26 unused + // spellmod 25 unused + SPELLMOD_FREQUENCY_OF_SUCCESS = 26, // Only used with SPELL_AURA_ADD_PCT_MODIFIER and affects used on proc spells SPELLMOD_MULTIPLE_VALUE = 27, SPELLMOD_RESIST_DISPEL_CHANCE = 28 }; diff --git a/src/game/World.cpp b/src/game/World.cpp index 0aec60ef4..869bf5357 100644 --- a/src/game/World.cpp +++ b/src/game/World.cpp @@ -1148,6 +1148,9 @@ void World::SetInitialWorldSettings() sLog.outString( "Loading Spell Bonus Data..." ); spellmgr.LoadSpellBonusess(); + sLog.outString( "Loading Spell Proc Item Enchant..." ); + spellmgr.LoadSpellProcItemEnchant(); // must be after LoadSpellChains + sLog.outString( "Loading Aggro Spells Definitions..."); spellmgr.LoadSpellThreats(); diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index edf27fdd1..ba58a49ca 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8248" + #define REVISION_NR "8249" #endif // __REVISION_NR_H__