mirror of
https://github.com/mangosfour/server.git
synced 2025-12-13 22:37:03 +00:00
Merge commit 'origin/master' into 320
This commit is contained in:
commit
6f2b9a7e80
48 changed files with 574 additions and 281 deletions
340
sql/mangos.sql
340
sql/mangos.sql
|
|
@ -24,7 +24,7 @@ CREATE TABLE `db_version` (
|
|||
`version` varchar(120) default NULL,
|
||||
`creature_ai_version` varchar(120) default NULL,
|
||||
`cache_id` int(10) default '0',
|
||||
`required_8482_01_mangos_spell_elixir` bit(1) default NULL
|
||||
`required_8498_01_mangos_spell_proc_event` bit(1) default NULL
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED COMMENT='Used DB version notes';
|
||||
|
||||
--
|
||||
|
|
@ -13594,152 +13594,159 @@ LOCK TABLES `spell_bonus_data` WRITE;
|
|||
/*!40000 ALTER TABLE `spell_bonus_data` DISABLE KEYS */;
|
||||
INSERT INTO `spell_bonus_data` VALUES
|
||||
/* Death Knight */
|
||||
('48721', '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'),
|
||||
(48721, 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'),
|
||||
(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 Triggered'),
|
||||
/* Druid */
|
||||
('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'),
|
||||
(5185, 1.6104, 0, 0, 'Druid - Healing Touch'),
|
||||
(339, 0, 0.1, 0, 'Druid - Entangling Roots'),
|
||||
(42231, 0.12898,0, 0, 'Druid - Hurricane Triggered'),
|
||||
(5570, 0, 0.2, 0, 'Druid - Insect Swarm'),
|
||||
(33763, 0, 0.09518, 0, 'Druid - Lifebloom'),
|
||||
(8921, 0.1515, 0.13, 0, 'Druid - Moonfire'),
|
||||
(50464, 0.6611, 0, 0, 'Druid - Nourish'),
|
||||
(8936, 0.539, 0.188, 0, 'Druid - Regrowth'),
|
||||
(774, 0, 0.37604, 0, 'Druid - Rejuvenation'),
|
||||
(50288, 0.05, 0, 0, 'Druid - Starfall'),
|
||||
(50294, 0.012, 0, 0, 'Druid - Starfall AOE'),
|
||||
(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'),
|
||||
/* Mage */
|
||||
('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'),
|
||||
('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'),
|
||||
('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'),
|
||||
(44425, 0.714286,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'),
|
||||
(42208, 0.1437, 0, 0, 'Mage - Blizzard Triggered'),
|
||||
(2136, 0.4286, 0, 0, 'Mage - Fire Blast'),
|
||||
(133, 1, 0, 0, 'Mage - Fire Ball'),
|
||||
(2120, 0.2357, 0.122, 0, 'Mage - Flamestrike'),
|
||||
(122, 0.193, 0, 0, 'Mage - Frost Nova'),
|
||||
(116, 0.8143, 0, 0, 'Mage - Frost Bolt'),
|
||||
(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'),
|
||||
(11366, 1.15, 0.05, 0, 'Mage - Pyroblast'),
|
||||
(2948, 0.4286, 0, 0, 'Mage - Scorch'),
|
||||
/* Paladin */
|
||||
('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'),
|
||||
('25914', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal'),
|
||||
('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'),
|
||||
(31935, 0.07, 0, 0.07, 'Paladin - Avengers Shiled'),
|
||||
(53742, 0, 0.0156, 0.03, 'Paladin - Blood Corruption'),
|
||||
(26573, 0, 0.04, 0.04, 'Paladin - Consecration'),
|
||||
(879, 0.15, 0, 0.15, 'Paladin - Exorcism'),
|
||||
(25997, 0, 0, 0, 'Paladin - Eye for an Eye'),
|
||||
(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'),
|
||||
(25912, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt'),
|
||||
(20925, 0.09, 0, 0.056, 'Paladin - Holy Shield'),
|
||||
(31803, 0, 0.0156, 0.03, 'Paladin - Holy Vengeance'),
|
||||
(2812, 0.07, 0, 0.07, 'Paladin - Holy Wrath'),
|
||||
(31898, 0.18, 0, 0.11, 'Paladin - Judgement of Blood Enemy'),
|
||||
(32220, 0.0594, 0, 0.0363,'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.32, 0, 0, 'Paladin - Judgement of Righteousness'),
|
||||
(53726, 0.18, 0, 0.11, 'Paladin - Judgement of the Martyr Enemy'),
|
||||
(53725, 0.0594, 0, 0.0363,'Paladin - Judgement of the Martyr Self'),
|
||||
(31804, 0, 0, 0, 'Paladin - Judgement of Vengeance'),
|
||||
(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'),
|
||||
(53739, 0, 0.00156, 0.003, 'Paladin - Seal of Corruption (full stack 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'),
|
||||
(42463, 0, 0.00156, 0.003, 'Paladin - Seal of Vengeance (full stack proc)'),
|
||||
(53600, 0, 0, 0, 'Paladin - Shield of Righteousness'),
|
||||
/* Priest */
|
||||
('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'),
|
||||
('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'),
|
||||
('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'),
|
||||
(32546, 0.8068, 0, 0, 'Priest - Binding Heal'),
|
||||
(27813, 0, 0, 0, 'Priest - Blessed Recovery'),
|
||||
(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'),
|
||||
(14914, 0.5711, 0.024, 0, 'Priest - Holy Fire'),
|
||||
(15237, 0.1606, 0, 0, 'Priest - Holy Nova Damage'),
|
||||
(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'),
|
||||
(8129, 0, 0, 0, 'Priest - Mana Burn'),
|
||||
(58381, 0.257143,0, 0, 'Priest - Mind Flay Triggered'),
|
||||
(49821, 0.14286,0, 0, 'Priest - Mind Sear Trigger'),
|
||||
(17, 0.8068, 0, 0, 'Priest - Power Word: Shield'),
|
||||
(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'),
|
||||
/* Shaman */
|
||||
('974', '0.4762', '0', '0', 'Shaman - Earth Shield'),
|
||||
('1064', '1.34', '0', '0', 'Shaman - Chain Heal'),
|
||||
('331', '1.6106', '0', '0', 'Shaman - Healing Wave'),
|
||||
('52042', '0.045', '0', '0', 'Shaman - Healing Stream Totem Triggered Heal'),
|
||||
('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'),
|
||||
('8050', '0.2142', '0.1', '0', 'Shaman - Flame Shock'),
|
||||
('8026', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc'),
|
||||
('8056', '0.3858', '0', '0', 'Shaman - Frost Shock'),
|
||||
('8034', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 1'),
|
||||
('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'),
|
||||
('8188', '0.1', '0', '0', 'Shaman - Magma Totam Passive'),
|
||||
('3606', '0.1667', '0', '0', 'Shaman - Searing Totem Attack'),
|
||||
(974, 0.4762, 0, 0, 'Shaman - Earth Shield'),
|
||||
(379, 0, 0, 0, 'Shaman - Earth Shield Triggered'),
|
||||
(1064, 1.34, 0, 0, 'Shaman - Chain Heal'),
|
||||
(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'),
|
||||
(8050, 0.2142, 0.1, 0, 'Shaman - Flame Shock'),
|
||||
(8026, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc'),
|
||||
(8056, 0.3858, 0, 0, 'Shaman - Frost Shock'),
|
||||
(8034, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 1'),
|
||||
(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'),
|
||||
(8188, 0.1, 0, 0, 'Shaman - Magma Totam Passive'),
|
||||
(61295, 0.4, 0.18, 0, 'Shaman - Riptide'),
|
||||
(3606, 0.1667, 0, 0, 'Shaman - Searing Totem Attack'),
|
||||
/* Warlock */
|
||||
('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'),
|
||||
('42223', '0.952', '0', '0', 'Warlock - Rain of Fire Triggered'),
|
||||
('18220', '0.96', '0', '0', 'Warlock - Dark Pact'),
|
||||
('6229', '0.3', '0', '0', 'Warlock - Shadow Ward'),
|
||||
('63106', '0', '0', '0', 'Warlock - Siphon Life Triggered'),
|
||||
(17962, 0, 0, 0, 'Warlock - Conflagrate'),
|
||||
(172, 0, 0.3, 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'),
|
||||
(5138, 0, 0, 0, 'Warlock - Drain Mana'),
|
||||
(1120, 0, 0.4286, 0, 'Warlock - Drain Soul'),
|
||||
(28176, 0, 0, 0, 'Warlock - Fel Armor'),
|
||||
(18790, 0, 0, 0, 'Warlock - Fel Stamina'),
|
||||
(48181, 0.4729, 0, 0, 'Warlock - Haunt'),
|
||||
(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'),
|
||||
(348, 0.2, 0.2, 0, 'Warlock - Immolate'),
|
||||
(42223, 0.285714,0, 0, 'Warlock - Rain of Fire Triggered'),
|
||||
(27243, 0.2129, 0.25, 0, 'Warlock - Seed of Corruption'),
|
||||
(6229, 0.3, 0, 0, 'Warlock - Shadow Ward'),
|
||||
(47960, 0, 0.06666, 0, 'Warlock - Shadowflame DoT'),
|
||||
(47897, 0.1064, 0, 0, 'Warlock - Shadowflame Direct'),
|
||||
(63106, 0, 0, 0, 'Warlock - Siphon Life Triggered'),
|
||||
(6353, 1.15, 0, 0, 'Warlock - Soul Fire'),
|
||||
(30294, 0, 0, 0, 'Warlock - Soul Leech'),
|
||||
(31117, 1.8, 0, 0, 'Warlock - Unstable Affliction Dispell'),
|
||||
/* Item */
|
||||
(40293, 0, 0, 0, 'Item - Siphon Essence');
|
||||
(40293, 0, 0, 0, 'Item - Siphon Essence');
|
||||
/*!40000 ALTER TABLE `spell_bonus_data` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
|
@ -14255,6 +14262,10 @@ INSERT INTO spell_chain VALUES
|
|||
/*Body and Soul*/
|
||||
(64127,0,64127,1,0),
|
||||
(64129,64127,64127,2,0),
|
||||
/*Blessed Recovery Proc*/
|
||||
(27813,0,27813,1,0),
|
||||
(27817,27813,27813,2,0),
|
||||
(27818,27817,27813,3,0),
|
||||
/*Circle of Healing*/
|
||||
(34861,0,34861,1,0),
|
||||
(34863,34861,34861,2,0),
|
||||
|
|
@ -16255,6 +16266,12 @@ INSERT INTO spell_chain VALUES
|
|||
(53225,53223,50516,3,0),
|
||||
(53226,53225,50516,4,0),
|
||||
(61384,53226,50516,5,0),
|
||||
/*Typhoon Triggered*/
|
||||
(61391,0,61391,1,0),
|
||||
(61390,61391,61391,2,0),
|
||||
(61388,61390,61391,3,0),
|
||||
(61387,61388,61391,4,0),
|
||||
(53227,61387,61391,5,0),
|
||||
/*Wrath*/
|
||||
(5176,0,5176,1,0),
|
||||
(5177,5176,5176,2,0),
|
||||
|
|
@ -16821,9 +16838,9 @@ INSERT INTO spell_chain VALUES
|
|||
(34769,0,34769,1,0),
|
||||
(34767,34769,34769,2,33391),
|
||||
/*------------------
|
||||
--(780)Pet-ExoticChimaera
|
||||
--(780)Pet-Exotic Chimaera
|
||||
------------------*/
|
||||
/*FroststormBreath*/
|
||||
/*Froststorm Breath*/
|
||||
(54644,0,54644,1,0),
|
||||
(55488,54644,54644,2,0),
|
||||
(55489,55488,54644,3,0),
|
||||
|
|
@ -16831,9 +16848,9 @@ INSERT INTO spell_chain VALUES
|
|||
(55491,55490,54644,5,0),
|
||||
(55492,55491,54644,6,0),
|
||||
/*------------------
|
||||
--(781)Pet-ExoticDevlisaur
|
||||
--(781)Pet-Exotic Devlisaur
|
||||
------------------*/
|
||||
/*MonstrousBite*/
|
||||
/*Monstrous Bite*/
|
||||
(54680,0,54680,1,0),
|
||||
(55495,54680,54680,2,0),
|
||||
(55496,55495,54680,3,0),
|
||||
|
|
@ -16841,7 +16858,7 @@ INSERT INTO spell_chain VALUES
|
|||
(55498,55497,54680,5,0),
|
||||
(55499,55498,54680,6,0),
|
||||
/*------------------
|
||||
--(784)Pet-ExoticWorm
|
||||
--(784)Pet-Exotic Worm
|
||||
------------------*/
|
||||
/*AcidSpit*/
|
||||
(55749,0,55749,1,0),
|
||||
|
|
@ -16861,9 +16878,9 @@ INSERT INTO spell_chain VALUES
|
|||
(56630,56629,56626,5,0),
|
||||
(56631,56630,56626,6,0),
|
||||
/*------------------
|
||||
--(787)Pet-ExoticCoreHound
|
||||
--(787)Pet-Exotic Core Hound
|
||||
------------------*/
|
||||
/*LavaBreath*/
|
||||
/*Lava Breath*/
|
||||
(58604,0,58604,1,0),
|
||||
(58607,58604,58604,2,0),
|
||||
(58608,58607,58604,3,0),
|
||||
|
|
@ -16871,16 +16888,27 @@ INSERT INTO spell_chain VALUES
|
|||
(58610,58609,58604,5,0),
|
||||
(58611,58610,58604,6,0),
|
||||
/*------------------
|
||||
--(788)Pet-ExoticSpiritBeast
|
||||
--(788)Pet-Exotic Spirit Beast
|
||||
------------------*/
|
||||
/*SpiritStrike*/
|
||||
/*Spirit Strike*/
|
||||
(61193,0,61193,1,0),
|
||||
(61194,61193,61193,2,0),
|
||||
(61195,61194,61193,3,0),
|
||||
(61196,61195,61193,4,0),
|
||||
(61197,61196,61193,5,0),
|
||||
(61198,61197,61193,6,0),
|
||||
|
||||
/*------------------
|
||||
--(-) Not listed in skill abilities
|
||||
------------------*/
|
||||
/*Hurricane*/
|
||||
(42231, 0,42231,1,0),
|
||||
(42232,42231,42231,2,0),
|
||||
(42233,42232,42231,3,0),
|
||||
(42230,42233,42231,4,0),
|
||||
(48466,42230,42231,5,0),
|
||||
/*Shadowflame Triggered DoT*/
|
||||
(47960,0,47960,1,0),
|
||||
(61291,47960,47960,2,0),
|
||||
/*Tranquility*/
|
||||
(44203, 0,44203,1,0),
|
||||
(44205,44203,44203,2,0),
|
||||
|
|
@ -16888,13 +16916,7 @@ INSERT INTO spell_chain VALUES
|
|||
(44207,44206,44203,4,0),
|
||||
(44208,44207,44203,5,0),
|
||||
(48444,44208,44203,6,0),
|
||||
(48445,48444,44203,7,0),
|
||||
/*Hurricane*/
|
||||
(42231, 0,42231,1,0),
|
||||
(42232,42231,42231,2,0),
|
||||
(42233,42232,42231,3,0),
|
||||
(42230,42233,42231,4,0),
|
||||
(48466,42230,42231,5,0);
|
||||
(48445,48444,44203,7,0);
|
||||
/*!40000 ALTER TABLE `spell_chain` ENABLE KEYS */;
|
||||
UNLOCK TABLES;
|
||||
|
||||
|
|
@ -17485,7 +17507,6 @@ INSERT INTO `spell_proc_event` VALUES
|
|||
(31570, 0x00000000, 3, 0x00010000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(31785, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00008800, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(31794, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00010000, 0.000000, 0.000000, 0),
|
||||
(31801, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000,20.000000, 0.000000, 0),
|
||||
(31833, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(31835, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(31836, 0x00000000, 10, 0x80000000, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||
|
|
@ -17828,6 +17849,9 @@ INSERT INTO `spell_proc_event` VALUES
|
|||
(53224, 0x00000000, 9, 0x00000000, 0x00000001, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(53228, 0x00000000, 9, 0x00000020, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(53232, 0x00000000, 9, 0x00000020, 0x01000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(53234, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||
(53237, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||
(53238, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||
(53256, 0x00000000, 9, 0x00000800, 0x00800001, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||
(53259, 0x00000000, 9, 0x00000800, 0x00800001, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||
(53260, 0x00000000, 9, 0x00000800, 0x00800001, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||
|
|
|
|||
|
|
@ -406,4 +406,8 @@ INSERT INTO spell_check (spellid,SpellFamilyName,SpellFamilyMaskA,SpellFamilyMas
|
|||
( 0, 7,0x0010000000000000,0x00000000, -1, -1, -1, 2, -1,-1,'Swipe', 'Spell::EffectSchoolDMG'),
|
||||
( 0, 4,0x0000000000000080,0x00000000, -1, -1, -1, 2, -1,-1,'Thunder Clap', 'Spell::EffectSchoolDMG'),
|
||||
( 0, 4,0x0000010000000000,0x00000000, -1, -1, -1, 2, -1,-1,'Victory Rush', 'Spell::EffectSchoolDMG'),
|
||||
( 0, 8,0x0000000010000000,0x00000000, -1, -1, -1, 2, -1,-1,'Wound Poison', 'Spell::EffectSchoolDMG');
|
||||
( 0, 8,0x0000000010000000,0x00000000, -1, -1, -1, 2, -1,-1,'Wound Poison', 'Spell::EffectSchoolDMG'),
|
||||
|
||||
/* some random spells from not proccessed files sorted by spell ids */
|
||||
/*id fm familyMaskA fmMaskB icon vis cat eff aur ef name code */
|
||||
(53563,-1, -1, -1, -1, -1, -1, -1, 4,-1,'Beacon of Light', 'Aura::HandleAuraDummy'); /* will outdated in 3.2.x */
|
||||
|
|
|
|||
|
|
@ -6,4 +6,4 @@ CREATE TABLE `item_required_target` (
|
|||
`type` tinyint(3) unsigned NOT NULL default '0',
|
||||
`targetEntry` mediumint(8) unsigned NOT NULL default '0',
|
||||
UNIQUE KEY `entry_type_target` (`entry`,`type`,`targetEntry`)
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED
|
||||
) ENGINE=MyISAM DEFAULT CHARSET=utf8 ROW_FORMAT=FIXED;
|
||||
|
|
|
|||
|
|
@ -4,4 +4,4 @@ UPDATE IGNORE character_spell
|
|||
SET spell = 64901
|
||||
WHERE spell = 64904;
|
||||
|
||||
DELETE FROM character_spell WHERE spell = 64904;
|
||||
DELETE FROM character_spell WHERE spell = 64904;
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8021_01_mangos_spell_proc_event required_8030_03_mangos_npc_trainer bit;
|
||||
|
||||
DELETE FROM npc_trainer WHERE spell = 64904;
|
||||
DELETE FROM npc_trainer WHERE spell = 64904;
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8030_03_mangos_npc_trainer required_8050_01_mangos_spell_proc_event bit;
|
||||
|
||||
DELETE FROM spell_proc_event WHERE entry = 63108;
|
||||
INSERT INTO spell_proc_event VALUES (63108, 0x00, 5, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
|
||||
INSERT INTO spell_proc_event VALUES (63108, 0x00, 5, 0x00000002, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8050_01_mangos_spell_proc_event required_8050_02_mangos_spell_bonus_data bit;
|
||||
|
||||
DELETE FROM spell_bonus_data WHERE entry = 63106;
|
||||
INSERT INTO spell_bonus_data VALUES (63106, 0, 0, 0, 'Warlock - Siphon Life Triggered');
|
||||
INSERT INTO spell_bonus_data VALUES (63106, 0, 0, 0, 'Warlock - Siphon Life Triggered');
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8064_01_mangos_spell_chain required_8065_01_mangos_spell_proc_event bit;
|
||||
|
||||
DELETE FROM spell_proc_event WHERE entry IN (47535, 47536, 47537, 58435);
|
||||
DELETE FROM spell_proc_event WHERE entry IN (47535, 47536, 47537, 58435);
|
||||
|
|
|
|||
|
|
@ -3,4 +3,4 @@ ALTER TABLE db_version CHANGE COLUMN required_8098_02_mangos_playercreateinfo_ac
|
|||
DELETE FROM spell_proc_event WHERE entry IN (63156, 63158);
|
||||
INSERT INTO spell_proc_event VALUES
|
||||
(63156, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(63158, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
|
||||
(63158, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0);
|
||||
|
|
|
|||
|
|
@ -4,4 +4,4 @@ DELETE FROM spell_proc_event WHERE entry IN (31876, 31877, 31878);
|
|||
INSERT INTO spell_proc_event VALUES
|
||||
(31876, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(31877, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0),
|
||||
(31878, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0);
|
||||
(31878, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8212_01_mangos_spell_proc_event required_8213_01_mangos_spell_bonus_data bit;
|
||||
|
||||
DELETE FROM `spell_bonus_data` where entry='17962';
|
||||
INSERT INTO `spell_bonus_data` (`entry`) VALUES ('17962');
|
||||
INSERT INTO `spell_bonus_data` (`entry`) VALUES ('17962');
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8227_01_mangos_spell_proc_event required_8237_01_mangos_creature_template bit;
|
||||
|
||||
UPDATE creature_template
|
||||
SET mindmg = ROUND(mindmg + attackpower), maxdmg=ROUND(maxdmg+attackpower);
|
||||
SET mindmg = ROUND(mindmg + attackpower), maxdmg=ROUND(maxdmg+attackpower);
|
||||
|
|
|
|||
|
|
@ -1,3 +1,3 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8249_02_mangos_spell_chain required_8250_01_mangos_spell_threat bit;
|
||||
|
||||
DELETE FROM `spell_threat` WHERE `entry` IN (778,9749,9907,14274,15629,15630,15631,15632,17390,17391,17392,26993,27011);
|
||||
DELETE FROM `spell_threat` WHERE `entry` IN (778,9749,9907,14274,15629,15630,15631,15632,17390,17391,17392,26993,27011);
|
||||
|
|
|
|||
|
|
@ -17,4 +17,4 @@ CREATE TABLE `guild_eventlog` (
|
|||
|
||||
-- The reason i decided for such dramatic change is that old guild_eventlog table didn't have Primary key and
|
||||
-- used LogGuids from 0 to infinity
|
||||
-- New system uses LogGuids from 0 to number defined in config.
|
||||
-- New system uses LogGuids from 0 to number defined in config.
|
||||
|
|
|
|||
|
|
@ -20,4 +20,4 @@ CREATE TABLE `guild_bank_eventlog` (
|
|||
|
||||
-- The reason i decided for such dramatic change is that old guild_bank_eventlog table used `TabId` = 0 for Money events and
|
||||
-- used `LogGuid` from 0 to infinity
|
||||
-- New system uses `LogGuid` from 0 to number defined in config.
|
||||
-- New system uses `LogGuid` from 0 to number defined in config.
|
||||
|
|
|
|||
|
|
@ -14,4 +14,4 @@ ALTER TABLE guild ADD COLUMN createdate bigint(20) NOT NULL default '0' AFTER mo
|
|||
-- copy data to new column
|
||||
UPDATE guild set createdate = created_temp;
|
||||
-- remove old column
|
||||
ALTER TABLE guild DROP COLUMN created_temp;
|
||||
ALTER TABLE guild DROP COLUMN created_temp;
|
||||
|
|
|
|||
|
|
@ -13,4 +13,4 @@ INSERT INTO character_account_data
|
|||
SELECT c.guid as guid, a.type as type, a.time as time, a.data as data
|
||||
FROM characters c LEFT JOIN account_data a ON c.account = a.account WHERE a.type IN (1, 3, 5, 6, 7);
|
||||
|
||||
DELETE FROM account_data WHERE type IN (1, 3, 5, 6, 7);
|
||||
DELETE FROM account_data WHERE type IN (1, 3, 5, 6, 7);
|
||||
|
|
|
|||
20
sql/updates/8487_01_mangos_spell_bonus_data.sql
Normal file
20
sql/updates/8487_01_mangos_spell_bonus_data.sql
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8482_01_mangos_spell_elixir required_8487_01_mangos_spell_bonus_data bit;
|
||||
|
||||
DELETE FROM `spell_bonus_data` where entry in (20424, 20467, 42463, 53739, 31803, 53742, 31804, 53733, 31893, 32221, 32220, 31898, 53719, 53718, 53725, 53726);
|
||||
INSERT INTO `spell_bonus_data` VALUES
|
||||
(20424, 0, 0, 0, "Paladin - Seal of Command Proc"),
|
||||
(20467, 0.25, 0, 0.16, "Paladin - Judgement of Command"),
|
||||
(42463, 0, 0.00156, 0.003, "Paladin - Seal of Vengeance (full stack proc)"),
|
||||
(53739, 0, 0.00156, 0.003, "Paladin - Seal of Corruption (full stack proc)"),
|
||||
(31803, 0, 0.0156, 0.03, "Paladin - Holy Vengeance"),
|
||||
(53742, 0, 0.0156, 0.03, "Paladin - Blood Corruption"),
|
||||
(31804, 0, 0, 0, "Paladin - Judgement of Vengeance"),
|
||||
(53733, 0, 0, 0, "Paladin - Judgement of Corruption"),
|
||||
(31893, 0, 0, 0, "Paladin - Seal of Blood Proc Enemy"),
|
||||
(32221, 0, 0, 0, "Paladin - Seal of Blood Proc Self"),
|
||||
(31898, 0.18, 0, 0.11, "Paladin - Judgement of Blood Enemy"),
|
||||
(32220, 0.0594, 0, 0.0363, "Paladin - Judgement of Blood Self"),
|
||||
(53719, 0, 0, 0, "Paladin - Seal of the Martyr Proc Enemy"),
|
||||
(53718, 0, 0, 0, "Paladin - Seal of the Martyr Proc Self"),
|
||||
(53726, 0.18, 0, 0.11, "Paladin - Judgement of the Martyr Enemy"),
|
||||
(53725, 0.0594, 0, 0.0363, "Paladin - Judgement of the Martyr Self");
|
||||
3
sql/updates/8487_02_mangos_spell_proc_event.sql
Normal file
3
sql/updates/8487_02_mangos_spell_proc_event.sql
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8487_01_mangos_spell_bonus_data required_8487_02_mangos_spell_proc_event bit;
|
||||
|
||||
DELETE FROM `spell_proc_event` WHERE `entry` IN (31801, 53736);
|
||||
18
sql/updates/8488_01_mangos_spell_chain.sql
Normal file
18
sql/updates/8488_01_mangos_spell_chain.sql
Normal file
|
|
@ -0,0 +1,18 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8487_02_mangos_spell_proc_event required_8488_01_mangos_spell_chain bit;
|
||||
|
||||
DELETE FROM `spell_chain` WHERE `spell_id` IN (27813, 27817, 27818, 61391, 61390, 61388, 61387, 53227, 47960, 61291);
|
||||
|
||||
INSERT INTO `spell_chain` (`spell_id`, `prev_spell`, `first_spell`, `rank`, `req_spell`) VALUES
|
||||
/*Blessed Recovery Proc*/
|
||||
('27813', '0', '27813', '1', '0'),
|
||||
('27817', '27813', '27813', '2', '0'),
|
||||
('27818', '27817', '27813', '3', '0'),
|
||||
/*Typhoon Triggered*/
|
||||
('61391', '0', '61391', '1', '0'),
|
||||
('61390', '61391', '61391', '2', '0'),
|
||||
('61388', '61390', '61391', '3', '0'),
|
||||
('61387', '61388', '61391', '4', '0'),
|
||||
('53227', '61387', '61391', '5', '0'),
|
||||
/*Shadowflame Triggered DoT*/
|
||||
('47960','0','47960','1','0'),
|
||||
('61291','47960','47960','2','0');
|
||||
30
sql/updates/8488_02_mangos_spell_bonus_data.sql
Normal file
30
sql/updates/8488_02_mangos_spell_bonus_data.sql
Normal file
|
|
@ -0,0 +1,30 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8488_01_mangos_spell_chain required_8488_02_mangos_spell_bonus_data bit;
|
||||
|
||||
DELETE FROM `spell_bonus_data` WHERE `entry` IN
|
||||
-- Spells that would be better off using default calculations (and should be removed from base MaNGOS tables)
|
||||
(689, 30108, 6789, 29722, 5676, 686, 17877, 30283, 11113, 31661, 120, 25914, 596, 8092, 15407,
|
||||
-- Spells that are getting entries below
|
||||
18790, 42223, 27243, 30294, 47960, 47897, 44425, 42208, 19750, 635, 20167, 20267, 20187, 53600, 25997, 2944, 58381, 27813, 33619, 5570, 61391);
|
||||
|
||||
INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`, `ap_bonus`, `comments`) VALUES
|
||||
('18790', '0', '0', '0','Warlock - Fel Stamina'),
|
||||
('42223', '0.285714', '0', '0', 'Warlock - Rain of Fire Triggered'), -- should be same as default calc (2/7), but this is a triggered spell
|
||||
('27243', '0.2129', '0.25', '0', 'Warlock - Seed of Corruption'),
|
||||
('30294', '0', '0', '0', 'Warlock - Soul Leech'),
|
||||
('47960', '0', '0.06666', '0', 'Warlock - Shadowflame DoT'),
|
||||
('47897', '0.1064', '0', '0', 'Warlock - Shadowflame Direct'),
|
||||
('44425', '0.714286', '0', '0', 'Mage - Arcane Barrage'), -- treat as 2.5 second cast time (as of 3.0.9)
|
||||
('42208', '0.1437', '0', '0', 'Mage - Blizzard Triggered'),
|
||||
('19750', '1', '0', '0', 'Paladin - Flash of Light'),
|
||||
('635', '1.66', '0', '0', 'Paladin - Holy Light'), -- These two Paladin heals are their default calculations multiplied by 7/3, not sure why that is
|
||||
('20167', '0.15', '0', '0.15', 'Paladin - Seal of Light Proc'),
|
||||
('20267', '0.1', '0', '0.1', 'Paladin - Judgement of Light Proc'),
|
||||
('20187', '0.32', '0', '0', 'Paladin - Judgement of Righteousness'),
|
||||
('53600', '0', '0', '0', 'Paladin - Shield of Righteousness'),
|
||||
('25997', '0', '0', '0', 'Paladin - Eye for an Eye'),
|
||||
('2944', '0', '0.1849', '0', 'Priest - Devouring Plague'),
|
||||
('58381', '0.257143', '0', '0', 'Priest - Mind Flay Triggered'), -- Treated as 2.7 sec channel instead of 3?
|
||||
('27813', '0', '0', '0', 'Priest - Blessed Recovery'),
|
||||
('33619', '0', '0', '0', 'Priest - Reflective Shield'),
|
||||
('5570', '0', '0.2', '0', 'Druid - Insect Swarm'),
|
||||
('61391', '0.193', '0', '0', 'Druid - Typhoon');
|
||||
8
sql/updates/8498_01_mangos_spell_proc_event.sql
Normal file
8
sql/updates/8498_01_mangos_spell_proc_event.sql
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
ALTER TABLE db_version CHANGE COLUMN required_8488_02_mangos_spell_bonus_data required_8498_01_mangos_spell_proc_event bit;
|
||||
|
||||
DELETE FROM `spell_proc_event` WHERE `entry` IN (53234, 53237, 53238);
|
||||
|
||||
INSERT INTO spell_proc_event VALUES
|
||||
(53234, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||
(53237, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0),
|
||||
(53238, 0x00000000, 0, 0x00000000, 0x00000000, 0x00000000, 0x00000000, 0x00000002, 0.000000, 0.000000, 0);
|
||||
|
|
@ -101,6 +101,11 @@ pkgdata_DATA = \
|
|||
8462_01_mangos_creature_ai_texts.sql \
|
||||
8469_01_characters_character_spell.sql \
|
||||
8482_01_mangos_spell_elixir.sql \
|
||||
8487_01_mangos_spell_bonus_data.sql \
|
||||
8487_02_mangos_spell_proc_event.sql \
|
||||
8488_01_mangos_spell_chain.sql \
|
||||
8488_02_mangos_spell_bonus_data.sql \
|
||||
8498_01_mangos_spell_proc_event.sql \
|
||||
README
|
||||
|
||||
## Additional files to include when running 'make dist'
|
||||
|
|
@ -182,4 +187,9 @@ EXTRA_DIST = \
|
|||
8462_01_mangos_creature_ai_texts.sql \
|
||||
8469_01_characters_character_spell.sql \
|
||||
8482_01_mangos_spell_elixir.sql \
|
||||
8487_01_mangos_spell_bonus_data.sql \
|
||||
8487_02_mangos_spell_proc_event.sql \
|
||||
8488_01_mangos_spell_chain.sql \
|
||||
8488_02_mangos_spell_bonus_data.sql \
|
||||
8498_01_mangos_spell_proc_event.sql \
|
||||
README
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@
|
|||
#define MANGOS_GRIDNOTIFIERS_H
|
||||
|
||||
#include "ObjectGridLoader.h"
|
||||
#include "ByteBuffer.h"
|
||||
#include "UpdateData.h"
|
||||
#include <iostream>
|
||||
|
||||
|
|
|
|||
|
|
@ -65,7 +65,7 @@ void WorldSession::HandleMoveWorldportAckOpcode()
|
|||
GetPlayer()->SetSemaphoreTeleportFar(false);
|
||||
|
||||
// relocate the player to the teleport destination
|
||||
GetPlayer()->SetMap(MapManager::Instance().CreateMap(loc.mapid, GetPlayer())); GetPlayer()->Relocate(loc.coord_x, loc.coord_y, loc.coord_z, loc.orientation);
|
||||
GetPlayer()->SetMap(MapManager::Instance().CreateMap(loc.mapid, GetPlayer()));
|
||||
GetPlayer()->Relocate(loc.coord_x, loc.coord_y, loc.coord_z, loc.orientation);
|
||||
|
||||
GetPlayer()->SendInitialPacketsBeforeAddToMap();
|
||||
|
|
|
|||
|
|
@ -85,7 +85,6 @@ enum PhaseMasks
|
|||
|
||||
class WorldPacket;
|
||||
class UpdateData;
|
||||
class ByteBuffer;
|
||||
class WorldSession;
|
||||
class Creature;
|
||||
class Player;
|
||||
|
|
|
|||
|
|
@ -451,12 +451,23 @@ ObjectAccessor::UpdateObjectVisibility(WorldObject *obj)
|
|||
|
||||
void ObjectAccessor::UpdateVisibilityForPlayer( Player* player )
|
||||
{
|
||||
CellPair p = MaNGOS::ComputeCellPair(player->GetPositionX(), player->GetPositionY());
|
||||
Cell cell(p);
|
||||
WorldObject const* viewPoint = player->GetViewPoint();
|
||||
Map* m = player->GetMap();
|
||||
|
||||
CellPair p(MaNGOS::ComputeCellPair(player->GetPositionX(), player->GetPositionY()));
|
||||
Cell cell(p);
|
||||
|
||||
m->UpdatePlayerVisibility(player, cell, p);
|
||||
m->UpdateObjectsVisibilityFor(player, cell, p);
|
||||
|
||||
if (player!=viewPoint)
|
||||
{
|
||||
CellPair pView(MaNGOS::ComputeCellPair(viewPoint->GetPositionX(), viewPoint->GetPositionY()));
|
||||
Cell cellView(pView);
|
||||
|
||||
m->UpdateObjectsVisibilityFor(player, cellView, pView);
|
||||
}
|
||||
else
|
||||
m->UpdateObjectsVisibilityFor(player, cell, p);
|
||||
}
|
||||
|
||||
/// Define the static member of HashMapHolder
|
||||
|
|
|
|||
|
|
@ -25,7 +25,6 @@
|
|||
#include "Utilities/UnorderedMap.h"
|
||||
#include "Policies/ThreadingModel.h"
|
||||
|
||||
#include "ByteBuffer.h"
|
||||
#include "UpdateData.h"
|
||||
|
||||
#include "GridDefines.h"
|
||||
|
|
|
|||
|
|
@ -3638,20 +3638,17 @@ void ObjectMgr::LoadQuests()
|
|||
qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell);
|
||||
qinfo->RewSpell = 0; // no spell reward will display for this quest
|
||||
}
|
||||
|
||||
if(!SpellMgr::IsSpellValid(spellInfo))
|
||||
else if(!SpellMgr::IsSpellValid(spellInfo))
|
||||
{
|
||||
sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is broken, quest will not have a spell reward.",
|
||||
qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell);
|
||||
qinfo->RewSpell = 0; // no spell reward will display for this quest
|
||||
}
|
||||
|
||||
if(GetTalentSpellCost(qinfo->RewSpell))
|
||||
else if(GetTalentSpellCost(qinfo->RewSpell))
|
||||
{
|
||||
sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is talent, quest will not have a spell reward.",
|
||||
qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell);
|
||||
qinfo->RewSpell = 0; // no spell reward will display for this quest
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -3665,20 +3662,17 @@ void ObjectMgr::LoadQuests()
|
|||
qinfo->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast);
|
||||
qinfo->RewSpellCast = 0; // no spell will be casted on player
|
||||
}
|
||||
|
||||
if(!SpellMgr::IsSpellValid(spellInfo))
|
||||
else if(!SpellMgr::IsSpellValid(spellInfo))
|
||||
{
|
||||
sLog.outErrorDb("Quest %u has `RewSpellCast` = %u but spell %u is broken, quest will not have a spell reward.",
|
||||
qinfo->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast);
|
||||
qinfo->RewSpellCast = 0; // no spell will be casted on player
|
||||
}
|
||||
|
||||
if(GetTalentSpellCost(qinfo->RewSpellCast))
|
||||
else if(GetTalentSpellCost(qinfo->RewSpellCast))
|
||||
{
|
||||
sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is talent, quest will not have a spell reward.",
|
||||
qinfo->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast);
|
||||
qinfo->RewSpellCast = 0; // no spell will be casted on player
|
||||
continue;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1008,13 +1008,6 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
|
|||
caster->ProcDamageAndSpell(unitTarget, procAttacker, procVictim, procEx, damageInfo.damage, m_attackType, m_spellInfo);
|
||||
|
||||
caster->DealSpellDamage(&damageInfo, true);
|
||||
|
||||
// Judgement of Blood
|
||||
if (m_spellInfo->SpellFamilyName == SPELLFAMILY_PALADIN && (m_spellInfo->SpellFamilyFlags & UI64LIT(0x0000000800000000)) && m_spellInfo->SpellIconID==153)
|
||||
{
|
||||
int32 damagePoint = damageInfo.damage * 33 / 100;
|
||||
m_caster->CastCustomSpell(m_caster, 32220, &damagePoint, NULL, NULL, true);
|
||||
}
|
||||
}
|
||||
// Passive spell hits/misses or active spells only misses (only triggers)
|
||||
else
|
||||
|
|
|
|||
|
|
@ -489,6 +489,9 @@ Unit *caster, Item* castItem) : Aura(spellproto, eff, currentBasePoints, target,
|
|||
m_areaAuraType = AREA_AURA_RAID;
|
||||
if (target->GetTypeId() == TYPEID_UNIT && ((Creature*)target)->isTotem())
|
||||
m_modifier.m_auraname = SPELL_AURA_NONE;
|
||||
// Light's Beacon not applied to caster itself (TODO: more generic check for another simialr spell if any?)
|
||||
else if (target == caster_ptr && m_spellProto->Id == 53651)
|
||||
m_modifier.m_auraname = SPELL_AURA_NONE;
|
||||
break;
|
||||
case SPELL_EFFECT_APPLY_AREA_AURA_FRIEND:
|
||||
m_areaAuraType = AREA_AURA_FRIEND;
|
||||
|
|
@ -782,7 +785,40 @@ void AreaAura::Update(uint32 diff)
|
|||
|
||||
for(std::list<Unit *>::iterator tIter = targets.begin(); tIter != targets.end(); tIter++)
|
||||
{
|
||||
if((*tIter)->HasAura(GetId(), m_effIndex))
|
||||
// flag for seelction is need apply aura to current iteration target
|
||||
bool apply = true;
|
||||
|
||||
// we need ignore present caster self applied are auras sometime
|
||||
// in cases if this only auras applied for spell effect
|
||||
Unit::spellEffectPair spair = Unit::spellEffectPair(GetId(), m_effIndex);
|
||||
for(Unit::AuraMap::const_iterator i = (*tIter)->GetAuras().lower_bound(spair); i != (*tIter)->GetAuras().upper_bound(spair); ++i)
|
||||
{
|
||||
if (i->second->IsDeleted())
|
||||
continue;
|
||||
|
||||
switch(m_areaAuraType)
|
||||
{
|
||||
case AREA_AURA_ENEMY:
|
||||
// non caster self-casted auras (non stacked)
|
||||
if(i->second->GetModifier()->m_auraname != SPELL_AURA_NONE)
|
||||
apply = false;
|
||||
break;
|
||||
case AREA_AURA_RAID:
|
||||
// non caster self-casted auras (stacked from diff. casters)
|
||||
if(i->second->GetModifier()->m_auraname != SPELL_AURA_NONE || i->second->GetCasterGUID() == GetCasterGUID())
|
||||
apply = false;
|
||||
break;
|
||||
default:
|
||||
// in generic case not allow stacking area auras
|
||||
apply = false;
|
||||
break;
|
||||
}
|
||||
|
||||
if(!apply)
|
||||
break;
|
||||
}
|
||||
|
||||
if(!apply)
|
||||
continue;
|
||||
|
||||
if(SpellEntry const *actualSpellInfo = spellmgr.SelectAuraRankForPlayerLevel(GetSpellProto(), (*tIter)->getLevel()))
|
||||
|
|
@ -815,7 +851,7 @@ void AreaAura::Update(uint32 diff)
|
|||
caster->IsFriendlyTo(m_target) != needFriendly
|
||||
)
|
||||
{
|
||||
m_target->RemoveAura(GetId(), GetEffIndex());
|
||||
m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(),GetCasterGUID());
|
||||
}
|
||||
else if( m_areaAuraType == AREA_AURA_PARTY) // check if in same sub group
|
||||
{
|
||||
|
|
@ -847,16 +883,16 @@ void AreaAura::Update(uint32 diff)
|
|||
{
|
||||
Player* checkTarget = m_target->GetCharmerOrOwnerPlayerOrPlayerItself();
|
||||
if(!checkTarget)
|
||||
m_target->RemoveAura(GetId(), GetEffIndex());
|
||||
m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(), GetCasterGUID());
|
||||
}
|
||||
else
|
||||
m_target->RemoveAura(GetId(), GetEffIndex());
|
||||
m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(), GetCasterGUID());
|
||||
}
|
||||
}
|
||||
else if( m_areaAuraType == AREA_AURA_PET || m_areaAuraType == AREA_AURA_OWNER )
|
||||
{
|
||||
if( m_target->GetGUID() != caster->GetCharmerOrOwnerGUID() )
|
||||
m_target->RemoveAura(GetId(), GetEffIndex());
|
||||
m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(), GetCasterGUID());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -897,6 +933,32 @@ void Aura::ApplyModifier(bool apply, bool Real)
|
|||
SetInUse(false);
|
||||
}
|
||||
|
||||
bool Aura::IsNeedVisibleSlot(Unit const* caster) const
|
||||
{
|
||||
bool totemAura = caster && caster->GetTypeId() == TYPEID_UNIT && ((Creature*)caster)->isTotem();
|
||||
|
||||
// passive auras (except totem auras) do not get placed in the slots
|
||||
if (m_isPassive && !totemAura)
|
||||
return false;
|
||||
|
||||
// generic not caster case
|
||||
if (m_target != caster)
|
||||
return true;
|
||||
|
||||
// special area auras case at caster
|
||||
switch(m_spellProto->Effect[GetEffIndex()])
|
||||
{
|
||||
case SPELL_EFFECT_APPLY_AREA_AURA_ENEMY:
|
||||
return false;
|
||||
case SPELL_EFFECT_APPLY_AREA_AURA_RAID:
|
||||
// not sure is totemAura need, just preserve old code results
|
||||
return totemAura || m_modifier.m_auraname != SPELL_AURA_NONE;
|
||||
default: break;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void Aura::_AddAura()
|
||||
{
|
||||
if (!GetId())
|
||||
|
|
@ -954,10 +1016,7 @@ void Aura::_AddAura()
|
|||
}
|
||||
}
|
||||
|
||||
// passive auras (except totem auras) do not get placed in the slots
|
||||
// area auras with SPELL_AURA_NONE are not shown on target
|
||||
if((!m_isPassive || (caster && caster->GetTypeId() == TYPEID_UNIT && ((Creature*)caster)->isTotem())) &&
|
||||
(m_spellProto->Effect[GetEffIndex()] != SPELL_EFFECT_APPLY_AREA_AURA_ENEMY || m_target != caster))
|
||||
if (IsNeedVisibleSlot(caster))
|
||||
{
|
||||
SetAuraSlot( slot );
|
||||
if(slot < MAX_AURAS) // slot found send data to client
|
||||
|
|
@ -2418,6 +2477,20 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
|
|||
}
|
||||
break;
|
||||
}
|
||||
case SPELLFAMILY_PALADIN:
|
||||
{
|
||||
// Beacon of Light
|
||||
if (GetId() == 53563)
|
||||
{
|
||||
if(apply)
|
||||
// original caster must be target (beacon)
|
||||
m_target->CastSpell(m_target,53651,true,NULL,this,m_target->GetGUID());
|
||||
else
|
||||
m_target->RemoveAurasByCasterSpell(53651,m_target->GetGUID());
|
||||
return;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SPELLFAMILY_DRUID:
|
||||
{
|
||||
switch(GetId())
|
||||
|
|
|
|||
|
|
@ -383,6 +383,7 @@ class MANGOS_DLL_SPEC Aura
|
|||
uint32 m_in_use; // > 0 while in Aura::ApplyModifier call/Aura::Update/etc
|
||||
private:
|
||||
void CleanupTriggeredSpells();
|
||||
bool IsNeedVisibleSlot(Unit const* caster) const; // helper for check req. visibility slot
|
||||
};
|
||||
|
||||
class MANGOS_DLL_SPEC AreaAura : public Aura
|
||||
|
|
|
|||
|
|
@ -610,9 +610,17 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
|
|||
}
|
||||
case SPELLFAMILY_PALADIN:
|
||||
{
|
||||
// Judgement of Vengeance ${1+0.22*$SPH+0.14*$AP} + 10% for each application of Holy Vengeance on the target
|
||||
// Judgement of Vengeance/Corruption ${1+0.22*$SPH+0.14*$AP} + 10% for each application of Holy Vengeance/Blood Corruption on the target
|
||||
if ((m_spellInfo->SpellFamilyFlags & UI64LIT(0x800000000)) && m_spellInfo->SpellIconID==2292)
|
||||
{
|
||||
uint32 debuf_id;
|
||||
switch(m_spellInfo->Id)
|
||||
{
|
||||
case 53733: debuf_id = 53742; break;// Judgement of Corruption -> Blood Corruption
|
||||
case 31804: debuf_id = 31803; break;// Judgement of Vengeance -> Holy Vengeance
|
||||
default: return;
|
||||
}
|
||||
|
||||
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
||||
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
|
||||
m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget);
|
||||
|
|
@ -621,11 +629,13 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
|
|||
uint32 stacks = 0;
|
||||
Unit::AuraList const& auras = unitTarget->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
||||
for(Unit::AuraList::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr)
|
||||
if((*itr)->GetId() == 31803 && (*itr)->GetCasterGUID()==m_caster->GetGUID())
|
||||
{
|
||||
if( ((*itr)->GetId() == debuf_id) && (*itr)->GetCasterGUID()==m_caster->GetGUID())
|
||||
{
|
||||
stacks = (*itr)->GetStackAmount();
|
||||
break;
|
||||
}
|
||||
}
|
||||
// + 10% for each application of Holy Vengeance on the target
|
||||
if(stacks)
|
||||
damage += damage * stacks * 10 /100;
|
||||
|
|
@ -1670,25 +1680,7 @@ void Spell::EffectDummy(uint32 i)
|
|||
if (!spell_proto)
|
||||
return;
|
||||
|
||||
if (!unitTarget->hasUnitState(UNIT_STAT_STUNNED) && m_caster->GetTypeId()==TYPEID_PLAYER)
|
||||
{
|
||||
// decreased damage (/2) for non-stunned target.
|
||||
SpellModifier *mod = new SpellModifier;
|
||||
mod->op = SPELLMOD_DAMAGE;
|
||||
mod->value = -50;
|
||||
mod->type = SPELLMOD_PCT;
|
||||
mod->spellId = m_spellInfo->Id;
|
||||
mod->mask = UI64LIT(0x0000020000000000);
|
||||
mod->mask2= UI64LIT(0x0);
|
||||
|
||||
((Player*)m_caster)->AddSpellMod(mod, true);
|
||||
m_caster->CastSpell(unitTarget, spell_proto, true, NULL);
|
||||
// mod deleted
|
||||
((Player*)m_caster)->AddSpellMod(mod, false);
|
||||
}
|
||||
else
|
||||
m_caster->CastSpell(unitTarget, spell_proto, true, NULL);
|
||||
|
||||
m_caster->CastSpell(unitTarget, spell_proto, true, NULL);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
|
@ -3508,6 +3500,11 @@ void Spell::EffectDispel(uint32 i)
|
|||
std::list < std::pair<uint32,uint64> > success_list;// (spell_id,casterGuid)
|
||||
std::list < uint32 > fail_list; // spell_id
|
||||
int32 list_size = dispel_list.size();
|
||||
|
||||
// some spells have effect value = 0 and all from its by meaning expect 1
|
||||
if(!damage)
|
||||
damage = 1;
|
||||
|
||||
// Dispell N = damage buffs (or while exist buffs for dispel)
|
||||
for (int32 count=0; count < damage && list_size > 0; ++count)
|
||||
{
|
||||
|
|
@ -4645,13 +4642,33 @@ void Spell::EffectWeaponDmg(uint32 i)
|
|||
if(m_caster->GetTypeId()==TYPEID_PLAYER)
|
||||
((Player*)m_caster)->AddComboPoints(unitTarget, 1);
|
||||
}
|
||||
|
||||
// Mangle (Cat): CP
|
||||
if (m_spellInfo->SpellFamilyName==SPELLFAMILY_DRUID && (m_spellInfo->SpellFamilyFlags==UI64LIT(0x0000040000000000)))
|
||||
else if (m_spellInfo->SpellFamilyName==SPELLFAMILY_DRUID && (m_spellInfo->SpellFamilyFlags==UI64LIT(0x0000040000000000)))
|
||||
{
|
||||
if(m_caster->GetTypeId()==TYPEID_PLAYER)
|
||||
((Player*)m_caster)->AddComboPoints(unitTarget, 1);
|
||||
}
|
||||
else if(m_spellInfo->SpellFamilyName==SPELLFAMILY_PALADIN)
|
||||
{
|
||||
// Judgement of Blood/of the Martyr backlash damage (33%)
|
||||
if(m_spellInfo->SpellFamilyFlags & 0x0000000800000000LL && m_spellInfo->SpellIconID==153)
|
||||
{
|
||||
int32 damagePoint = m_damage * 33 / 100;
|
||||
if(m_spellInfo->Id == 31898)
|
||||
m_caster->CastCustomSpell(m_caster, 32220, &damagePoint, NULL, NULL, true);
|
||||
else
|
||||
m_caster->CastCustomSpell(m_caster, 53725, &damagePoint, NULL, NULL, true);
|
||||
}
|
||||
// Seal of Blood/of the Martyr backlash damage (10%)
|
||||
else if(m_spellInfo->SpellIconID==2293)
|
||||
{
|
||||
int32 damagePoint = m_damage * 10 / 100;
|
||||
if(m_spellInfo->Id == 31893)
|
||||
m_caster->CastCustomSpell(m_caster, 32221, &damagePoint, NULL, NULL, true);
|
||||
else
|
||||
m_caster->CastCustomSpell(m_caster, 53718, &damagePoint, NULL, NULL, true);
|
||||
}
|
||||
}
|
||||
|
||||
// take ammo
|
||||
if(m_attackType == RANGED_ATTACK && m_caster->GetTypeId() == TYPEID_PLAYER)
|
||||
|
|
|
|||
|
|
@ -1571,6 +1571,10 @@ bool SpellMgr::IsNoStackSpellDueToSpell(uint32 spellId_1, uint32 spellId_2) cons
|
|||
if ((spellInfo_1->SpellFamilyFlags2 & 0x00000020) && (spellInfo_2->SpellIconID == 291 || spellInfo_2->SpellIconID == 3028) ||
|
||||
(spellInfo_2->SpellFamilyFlags2 & 0x00000020) && (spellInfo_1->SpellIconID == 291 || spellInfo_1->SpellIconID == 3028))
|
||||
return false;
|
||||
|
||||
// Beacon of Light and Light's Beacon
|
||||
if ((spellInfo_1->SpellIconID == 3032) && (spellInfo_2->SpellIconID == 3032))
|
||||
return false;
|
||||
}
|
||||
|
||||
// Combustion and Fire Protection Aura (multi-family check)
|
||||
|
|
|
|||
|
|
@ -427,7 +427,7 @@ enum ProcFlags
|
|||
PROC_FLAG_KILLED = 0x00000001, // 00 Killed by agressor
|
||||
PROC_FLAG_KILL = 0x00000002, // 01 Kill target (in most cases need XP/Honor reward)
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_MILEE_HIT = 0x00000004, // 02 Successful melee auto attack
|
||||
PROC_FLAG_SUCCESSFUL_MELEE_HIT = 0x00000004, // 02 Successful melee auto attack
|
||||
PROC_FLAG_TAKEN_MELEE_HIT = 0x00000008, // 03 Taken damage from melee auto attack hit
|
||||
|
||||
PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT = 0x00000010, // 04 Successful attack by Spell that use melee weapon
|
||||
|
|
@ -461,7 +461,7 @@ enum ProcFlags
|
|||
PROC_FLAG_SUCCESSFUL_OFFHAND_HIT = 0x00800000 // 23 Successful off-hand melee attacks
|
||||
};
|
||||
|
||||
#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MILEE_HIT | \
|
||||
#define MELEE_BASED_TRIGGER_MASK (PROC_FLAG_SUCCESSFUL_MELEE_HIT | \
|
||||
PROC_FLAG_TAKEN_MELEE_HIT | \
|
||||
PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT | \
|
||||
PROC_FLAG_TAKEN_MELEE_SPELL_HIT | \
|
||||
|
|
|
|||
|
|
@ -1205,12 +1205,12 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
|
|||
switch (attackType)
|
||||
{
|
||||
case BASE_ATTACK:
|
||||
damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MILEE_HIT;
|
||||
damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_HIT;
|
||||
damageInfo->procVictim = PROC_FLAG_TAKEN_MELEE_HIT;
|
||||
damageInfo->HitInfo = HITINFO_NORMALSWING2;
|
||||
break;
|
||||
case OFF_ATTACK:
|
||||
damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MILEE_HIT | PROC_FLAG_SUCCESSFUL_OFFHAND_HIT;
|
||||
damageInfo->procAttacker = PROC_FLAG_SUCCESSFUL_MELEE_HIT | PROC_FLAG_SUCCESSFUL_OFFHAND_HIT;
|
||||
damageInfo->procVictim = PROC_FLAG_TAKEN_MELEE_HIT;//|PROC_FLAG_TAKEN_OFFHAND_HIT // not used
|
||||
damageInfo->HitInfo = HITINFO_LEFTSWING;
|
||||
break;
|
||||
|
|
@ -3417,6 +3417,7 @@ bool Unit::AddAura(Aura *Aur)
|
|||
return false;
|
||||
}
|
||||
|
||||
// m_auraname can be modified to SPELL_AURA_NONE for area auras, this expected for this value
|
||||
AuraType aurName = Aur->GetModifier()->m_auraname;
|
||||
|
||||
spellEffectPair spair = spellEffectPair(Aur->GetId(), Aur->GetEffIndex());
|
||||
|
|
@ -3445,10 +3446,15 @@ bool Unit::AddAura(Aura *Aur)
|
|||
}
|
||||
|
||||
bool stop = false;
|
||||
switch(aurName)
|
||||
|
||||
// m_auraname can be modified to SPELL_AURA_NONE for area auras, use original
|
||||
AuraType aurNameReal = AuraType(aurSpellInfo->EffectApplyAuraName[Aur->GetEffIndex()]);
|
||||
|
||||
switch(aurNameReal)
|
||||
{
|
||||
// DoT/HoT/etc
|
||||
case SPELL_AURA_PERIODIC_DAMAGE: // allow stack
|
||||
case SPELL_AURA_DUMMY: // allow stack
|
||||
case SPELL_AURA_PERIODIC_DAMAGE:
|
||||
case SPELL_AURA_PERIODIC_DAMAGE_PERCENT:
|
||||
case SPELL_AURA_PERIODIC_LEECH:
|
||||
case SPELL_AURA_PERIODIC_HEAL:
|
||||
|
|
@ -3752,6 +3758,22 @@ void Unit::RemoveAurasByCasterSpell(uint32 spellId, uint64 casterGUID)
|
|||
}
|
||||
}
|
||||
|
||||
void Unit::RemoveAurasByCasterSpell(uint32 spellId, uint32 effindex, uint64 casterGUID)
|
||||
{
|
||||
spellEffectPair spair = spellEffectPair(spellId, effindex);
|
||||
for(AuraMap::iterator iter = m_Auras.lower_bound(spair); iter != m_Auras.upper_bound(spair);)
|
||||
{
|
||||
Aura *aur = iter->second;
|
||||
if (aur->GetId() == spellId && aur->GetCasterGUID() == casterGUID)
|
||||
{
|
||||
RemoveAura(iter);
|
||||
iter = m_Auras.lower_bound(spair);
|
||||
}
|
||||
else
|
||||
++iter;
|
||||
}
|
||||
}
|
||||
|
||||
void Unit::RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler)
|
||||
{
|
||||
for (AuraMap::iterator iter = m_Auras.begin(); iter != m_Auras.end(); )
|
||||
|
|
@ -5110,7 +5132,7 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
|
|||
}
|
||||
|
||||
CastSpell(this, 28682, true, castItem, triggeredByAura);
|
||||
return (procEx & PROC_EX_CRITICAL_HIT);// charge update only at crit hits, no hidden cooldowns
|
||||
return (procEx & PROC_EX_CRITICAL_HIT); // charge update only at crit hits, no hidden cooldowns
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
|
@ -5737,6 +5759,43 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
|
|||
return false;
|
||||
|
||||
triggered_spell_id = 31803;
|
||||
|
||||
// Add 5-stack effect
|
||||
int8 stacks = 0;
|
||||
AuraList const& auras = target->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
||||
for(AuraList::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr)
|
||||
{
|
||||
if( ((*itr)->GetId() == 31803) && (*itr)->GetCasterGUID()==GetGUID())
|
||||
{
|
||||
stacks = (*itr)->GetStackAmount();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(stacks >= 5)
|
||||
CastSpell(target,42463,true,NULL,triggeredByAura);
|
||||
break;
|
||||
}
|
||||
// Seal of Corruption (damage calc on apply aura)
|
||||
case 53736:
|
||||
{
|
||||
if(effIndex != 0) // effect 1,2 used by seal unleashing code
|
||||
return false;
|
||||
|
||||
triggered_spell_id = 53742;
|
||||
|
||||
// Add 5-stack effect
|
||||
int8 stacks = 0;
|
||||
AuraList const& auras = target->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
||||
for(AuraList::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr)
|
||||
{
|
||||
if( ((*itr)->GetId() == 53742) && (*itr)->GetCasterGUID()==GetGUID())
|
||||
{
|
||||
stacks = (*itr)->GetStackAmount();
|
||||
break;
|
||||
}
|
||||
}
|
||||
if(stacks >= 5)
|
||||
CastSpell(target,53739,true,NULL,triggeredByAura);
|
||||
break;
|
||||
}
|
||||
// Spiritual Attunement
|
||||
|
|
@ -5756,33 +5815,54 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
|
|||
// Seal of Blood do damage trigger
|
||||
case 31892:
|
||||
{
|
||||
if (effIndex == 0) // 0 effect - is proc on enemy
|
||||
// 0 effect - is proc on enemy
|
||||
if (effIndex == 0 && (procFlag & PROC_FLAG_SUCCESSFUL_MELEE_HIT))
|
||||
triggered_spell_id = 31893;
|
||||
else if (effIndex == 1) // 1 effect - is proc on self
|
||||
{
|
||||
// add spell damage from prev effect (27%)
|
||||
damage += CalculateDamage(BASE_ATTACK, false) * 27 / 100;
|
||||
basepoints0 = triggerAmount * damage / 100;
|
||||
target = this;
|
||||
triggered_spell_id = 32221;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
break;
|
||||
}
|
||||
// Light's Beacon (heal target area aura)
|
||||
case 53651:
|
||||
{
|
||||
// not do bonus heal for explicit beacon focus healing
|
||||
if (GetGUID() == triggeredByAura->GetCasterGUID())
|
||||
return false;
|
||||
|
||||
// beacon
|
||||
Unit* beacon = triggeredByAura->GetCaster();
|
||||
if (!beacon)
|
||||
return false;
|
||||
|
||||
// find caster main aura at beacon
|
||||
Aura* dummy = NULL;
|
||||
Unit::AuraList const& baa = beacon->GetAurasByType(SPELL_AURA_DUMMY);
|
||||
for(Unit::AuraList::const_iterator i = baa.begin(); i != baa.end(); ++i)
|
||||
{
|
||||
if ((*i)->GetId() == 53563 && (*i)->GetCasterGUID() == pVictim->GetGUID())
|
||||
{
|
||||
dummy = (*i);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
// original heal must be form beacon caster
|
||||
if (!dummy)
|
||||
return false;
|
||||
|
||||
triggered_spell_id = 53652; // Beacon of Light
|
||||
basepoints0 = triggeredByAura->GetModifier()->m_amount*damage/100;
|
||||
|
||||
// cast with original caster set but beacon to beacon for apply caster mods and avoid LoS check
|
||||
beacon->CastCustomSpell(beacon,triggered_spell_id,&basepoints0,NULL,NULL,true,castItem,triggeredByAura,pVictim->GetGUID());
|
||||
return true;
|
||||
}
|
||||
// Seal of the Martyr do damage trigger
|
||||
case 53720:
|
||||
{
|
||||
if (effIndex == 0) // 0 effect - is proc on enemy
|
||||
// 0 effect - is proc on enemy
|
||||
if (effIndex == 0 && (procFlag & PROC_FLAG_SUCCESSFUL_MELEE_HIT))
|
||||
triggered_spell_id = 53719;
|
||||
else if (effIndex == 1) // 1 effect - is proc on self
|
||||
{
|
||||
// add spell damage from prev effect (27%)
|
||||
damage += CalculateDamage(BASE_ATTACK, false) * 27 / 100;
|
||||
basepoints0 = triggerAmount * damage / 100;
|
||||
target = this;
|
||||
triggered_spell_id = 53718;
|
||||
}
|
||||
else
|
||||
return true;
|
||||
break;
|
||||
|
|
@ -6590,6 +6670,13 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
|||
break;
|
||||
}
|
||||
case SPELLFAMILY_HUNTER:
|
||||
// Piercing Shots
|
||||
if (auraSpellInfo->SpellIconID == 3247 && auraSpellInfo->SpellVisual[0] == 0)
|
||||
{
|
||||
basepoints[0] = damage * triggerAmount / 100 / 8;
|
||||
trigger_spell_id = 63468;
|
||||
target = pVictim;
|
||||
}
|
||||
break;
|
||||
case SPELLFAMILY_PALADIN:
|
||||
{
|
||||
|
|
@ -8453,12 +8540,22 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM
|
|||
break;
|
||||
}
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SPELL_DAMAGE_CLASS_MELEE:
|
||||
{
|
||||
// Judgement of Command proc always crits on stunned target
|
||||
if(spellProto->SpellFamilyName == SPELLFAMILY_PALADIN)
|
||||
{
|
||||
if(spellProto->SpellFamilyFlags & 0x0000000000800000LL && spellProto->SpellIconID == 561)
|
||||
{
|
||||
if(pVictim->hasUnitState(UNIT_STAT_STUNNED))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
case SPELL_DAMAGE_CLASS_RANGED:
|
||||
{
|
||||
if (pVictim)
|
||||
|
|
|
|||
|
|
@ -1211,6 +1211,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
|||
void RemoveAurasDueToSpell(uint32 spellId, Aura* except = NULL);
|
||||
void RemoveAurasDueToItemSpell(Item* castItem,uint32 spellId);
|
||||
void RemoveAurasByCasterSpell(uint32 spellId, uint64 casterGUID);
|
||||
void RemoveAurasByCasterSpell(uint32 spellId, uint32 effindex, uint64 casterGUID);
|
||||
void RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler);
|
||||
void RemoveAurasDueToSpellBySteal(uint32 spellId, uint64 casterGUID, Unit *stealer);
|
||||
void RemoveAurasDueToSpellByCancel(uint32 spellId);
|
||||
|
|
|
|||
|
|
@ -19,8 +19,11 @@
|
|||
#ifndef __UPDATEDATA_H
|
||||
#define __UPDATEDATA_H
|
||||
|
||||
#include "ByteBuffer.h"
|
||||
|
||||
class WorldPacket;
|
||||
|
||||
|
||||
enum OBJECT_UPDATE_TYPE
|
||||
{
|
||||
UPDATETYPE_VALUES = 0,
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@
|
|||
#include "ByteBuffer.h"
|
||||
#include "Opcodes.h"
|
||||
#include "Database/DatabaseEnv.h"
|
||||
#include "Auth/BigNumber.h"
|
||||
#include "Auth/Sha1.h"
|
||||
#include "WorldSession.h"
|
||||
#include "WorldSocketMgr.h"
|
||||
|
|
|
|||
|
|
@ -480,9 +480,9 @@ bool AuthSocket::_HandleLogonChallenge()
|
|||
pkt << uint8(1);
|
||||
pkt.append(g.AsByteArray(), 1);
|
||||
pkt << uint8(32);
|
||||
pkt.append(N.AsByteArray(), 32);
|
||||
pkt.append(N.AsByteArray(32), 32);
|
||||
pkt.append(s.AsByteArray(), s.GetNumBytes());// 32 bytes
|
||||
pkt.append(unk3.AsByteArray(), 16);
|
||||
pkt.append(unk3.AsByteArray(16), 16);
|
||||
uint8 securityFlags = 0;
|
||||
pkt << uint8(securityFlags); // security flags (0x0...0x04)
|
||||
|
||||
|
|
@ -807,7 +807,7 @@ bool AuthSocket::_HandleReconnectChallenge()
|
|||
pkt << (uint8) AUTH_RECONNECT_CHALLENGE;
|
||||
pkt << (uint8) 0x00;
|
||||
_reconnectProof.SetRand(16 * 8);
|
||||
pkt.append(_reconnectProof.AsByteBuffer()); // 16 bytes random
|
||||
pkt.append(_reconnectProof.AsByteArray(16),16); // 16 bytes random
|
||||
pkt << (uint64) 0x00 << (uint64) 0x00; // 16 bytes zeros
|
||||
SendBuf((char const*)pkt.contents(), pkt.size());
|
||||
return true;
|
||||
|
|
|
|||
|
|
@ -186,21 +186,6 @@ uint8 *BigNumber::AsByteArray(int minSize)
|
|||
return _array;
|
||||
}
|
||||
|
||||
ByteBuffer BigNumber::AsByteBuffer()
|
||||
{
|
||||
ByteBuffer ret(GetNumBytes());
|
||||
ret.append(AsByteArray(), GetNumBytes());
|
||||
return ret;
|
||||
}
|
||||
|
||||
std::vector<uint8> BigNumber::AsByteVector()
|
||||
{
|
||||
std::vector<uint8> ret;
|
||||
ret.resize(GetNumBytes());
|
||||
memcpy(&ret[0], AsByteArray(), GetNumBytes());
|
||||
return ret;
|
||||
}
|
||||
|
||||
const char *BigNumber::AsHexStr()
|
||||
{
|
||||
return BN_bn2hex(_bn);
|
||||
|
|
|
|||
|
|
@ -20,7 +20,6 @@
|
|||
#define _AUTH_BIGNUMBER_H
|
||||
|
||||
#include "Common.h"
|
||||
#include "ByteBuffer.h"
|
||||
|
||||
struct bignum_st;
|
||||
|
||||
|
|
@ -83,8 +82,6 @@ class BigNumber
|
|||
|
||||
uint32 AsDword();
|
||||
uint8* AsByteArray(int minSize = 0);
|
||||
ByteBuffer AsByteBuffer();
|
||||
std::vector<uint8> AsByteVector();
|
||||
|
||||
const char *AsHexStr();
|
||||
const char *AsDecStr();
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
#include "Auth/Sha1.h"
|
||||
#include "Auth/BigNumber.h"
|
||||
#include <stdarg.h>
|
||||
|
||||
Sha1Hash::Sha1Hash()
|
||||
|
|
|
|||
|
|
@ -22,7 +22,8 @@
|
|||
#include "Common.h"
|
||||
#include <openssl/sha.h>
|
||||
#include <openssl/crypto.h>
|
||||
#include "Auth/BigNumber.h"
|
||||
|
||||
class BigNumber;
|
||||
|
||||
class Sha1Hash
|
||||
{
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
*/
|
||||
|
||||
#include "Threading.h"
|
||||
#include "Errors.h"
|
||||
#include <ace/OS_NS_unistd.h>
|
||||
#include <ace/Sched_Params.h>
|
||||
#include <vector>
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@
|
|||
#include <ace/TSS_T.h>
|
||||
#include "ace/Atomic_Op.h"
|
||||
#include <assert.h>
|
||||
#include "Errors.h"
|
||||
|
||||
namespace ACE_Based
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "8485"
|
||||
#define REVISION_NR "8498"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
#ifndef __REVISION_SQL_H__
|
||||
#define __REVISION_SQL_H__
|
||||
#define REVISION_DB_CHARACTERS "required_8469_01_characters_character_spell"
|
||||
#define REVISION_DB_MANGOS "required_8482_01_mangos_spell_elixir"
|
||||
#define REVISION_DB_MANGOS "required_8498_01_mangos_spell_proc_event"
|
||||
#define REVISION_DB_REALMD "required_8332_01_realmd_realmcharacters"
|
||||
#endif // __REVISION_SQL_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue