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,
|
`version` varchar(120) default NULL,
|
||||||
`creature_ai_version` varchar(120) default NULL,
|
`creature_ai_version` varchar(120) default NULL,
|
||||||
`cache_id` int(10) default '0',
|
`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';
|
) 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 */;
|
/*!40000 ALTER TABLE `spell_bonus_data` DISABLE KEYS */;
|
||||||
INSERT INTO `spell_bonus_data` VALUES
|
INSERT INTO `spell_bonus_data` VALUES
|
||||||
/* Death Knight */
|
/* Death Knight */
|
||||||
('48721', '0', '0', '0.04', 'Death Knight - Blood Boil'),
|
(48721, 0, 0, 0.04, 'Death Knight - Blood Boil'),
|
||||||
('55078', '0', '0', '0.055', 'Death Knight - Blood Plague Dummy Proc'),
|
(55078, 0, 0, 0.055, 'Death Knight - Blood Plague Dummy Proc'),
|
||||||
('50444', '0', '0', '0.105', 'Death Knight - Corpse Explosion Triggered'),
|
(50444, 0, 0, 0.105, 'Death Knight - Corpse Explosion Triggered'),
|
||||||
('52212', '0', '0', '0.0475', 'Death Knight - Death and Decay Triggered'),
|
(52212, 0, 0, 0.0475,'Death Knight - Death and Decay Triggered'),
|
||||||
('47632', '0', '0', '0.15', 'Death Knight - Death Coil Damage'),
|
(47632, 0, 0, 0.15, 'Death Knight - Death Coil Damage'),
|
||||||
('47633', '0', '0', '0.15', 'Death Knight - Death Coil Heal'),
|
(47633, 0, 0, 0.15, 'Death Knight - Death Coil Heal'),
|
||||||
('55095', '0', '0', '0.055', 'Death Knight - Frost Fever'),
|
(55095, 0, 0, 0.055, 'Death Knight - Frost Fever'),
|
||||||
('49184', '0', '0', '0.1', 'Death Knight - Howling Blast'),
|
(49184, 0, 0, 0.1, 'Death Knight - Howling Blast'),
|
||||||
('45477', '0', '0', '0.1', 'Death Knight - Icy Touch'),
|
(45477, 0, 0, 0.1, 'Death Knight - Icy Touch'),
|
||||||
('50842', '0', '0', '0.04', 'Death Knight - Pestilence'),
|
(56903, 0, 0, 0, 'Death Knight - Lichflame'),
|
||||||
('47476', '0', '0', '0.06', 'Death Knight - Strangulate'),
|
(50842, 0, 0, 0.04, 'Death Knight - Pestilence'),
|
||||||
('50536', '0', '0', '0.013', 'Death Knight - Unholy Blight Triggered'),
|
(50401, 0, 0, 0, 'Death Knight - Razor Frost'),
|
||||||
('50401', '0', '0', '0', 'Death Knight - Razor Frost'),
|
(47476, 0, 0, 0.06, 'Death Knight - Strangulate'),
|
||||||
('56903', '0', '0', '0', 'Death Knight - Lichflame'),
|
(50536, 0, 0, 0.013, 'Death Knight - Unholy Blight Triggered'),
|
||||||
/* Druid */
|
/* Druid */
|
||||||
('5185', '1.6104', '0', '0', 'Druid - Healing Touch'),
|
(5185, 1.6104, 0, 0, 'Druid - Healing Touch'),
|
||||||
('33763', '0', '0.09518', '0', 'Druid - Lifebloom'),
|
(339, 0, 0.1, 0, 'Druid - Entangling Roots'),
|
||||||
('774', '0', '0.37604', '0', 'Druid - Rejuvenation'),
|
(42231, 0.12898,0, 0, 'Druid - Hurricane Triggered'),
|
||||||
('8936', '0.539', '0.188', '0', 'Druid - Regrowth'),
|
(5570, 0, 0.2, 0, 'Druid - Insect Swarm'),
|
||||||
('50288', '0.05', '0', '0', 'Druid - Starfall'),
|
(33763, 0, 0.09518, 0, 'Druid - Lifebloom'),
|
||||||
('50294', '0.012', '0', '0', 'Druid - Starfall AOE'),
|
(8921, 0.1515, 0.13, 0, 'Druid - Moonfire'),
|
||||||
('18562', '0', '0', '0', 'Druid - Swiftmend'),
|
(50464, 0.6611, 0, 0, 'Druid - Nourish'),
|
||||||
('44203', '0.538', '0', '0', 'Druid - Tranquility Triggered'),
|
(8936, 0.539, 0.188, 0, 'Druid - Regrowth'),
|
||||||
('48438', '0', '0.11505', '0', 'Druid - Wild Growth'),
|
(774, 0, 0.37604, 0, 'Druid - Rejuvenation'),
|
||||||
('50464', '0.6611', '0', '0', 'Druid - Nourish'),
|
(50288, 0.05, 0, 0, 'Druid - Starfall'),
|
||||||
('339', '0', '0.1', '0', 'Druid - Entangling Roots'),
|
(50294, 0.012, 0, 0, 'Druid - Starfall AOE'),
|
||||||
('42231', '0.12898', '0', '0', 'Druid - Hurricane Triggered'),
|
(2912, 1, 0, 0, 'Druid - Starfire'),
|
||||||
('5570', '0', '0.127', '0', 'Druid - Insect Swarm'),
|
(18562, 0, 0, 0, 'Druid - Swiftmend'),
|
||||||
('8921', '0.1515', '0.13', '0', 'Druid - Moonfire'),
|
(44203, 0.538, 0, 0, 'Druid - Tranquility Triggered'),
|
||||||
('2912', '1', '0', '0', 'Druid - Starfire'),
|
(61391, 0.193, 0, 0, 'Druid - Typhoon'),
|
||||||
('5176', '0.5714', '0', '0', 'Druid - Wrath'),
|
(48438, 0, 0.11505, 0, 'Druid - Wild Growth'),
|
||||||
|
(5176, 0.5714, 0, 0, 'Druid - Wrath'),
|
||||||
/* Mage */
|
/* Mage */
|
||||||
('30451', '0.7143', '0', '0', 'Mage - Arcane Blast'),
|
(44425, 0.714286,0, 0, 'Mage - Arcane Barrage'),
|
||||||
('1449', '0.2128', '0', '0', 'Mage - Arcane Explosion'),
|
(30451, 0.7143, 0, 0, 'Mage - Arcane Blast'),
|
||||||
('7268', '0.2857', '0', '0', 'Mage - Arcane Missiles Triggered Spell'),
|
(1449, 0.2128, 0, 0, 'Mage - Arcane Explosion'),
|
||||||
('1463', '0.8053', '0', '0', 'Mage - Mana Shield'),
|
(7268, 0.2857, 0, 0, 'Mage - Arcane Missiles Triggered Spell'),
|
||||||
('44425', '0.8571', '0', '0', 'Mage - Arcane Barrage'),
|
(42208, 0.1437, 0, 0, 'Mage - Blizzard Triggered'),
|
||||||
('11113', '0.1357', '0', '0', 'Mage - Blast Wave Rank'),
|
(2136, 0.4286, 0, 0, 'Mage - Fire Blast'),
|
||||||
('31661', '0.1357', '0', '0', 'Mage - Dragons Breath'),
|
(133, 1, 0, 0, 'Mage - Fire Ball'),
|
||||||
('2136', '0.4286', '0', '0', 'Mage - Fire Blast'),
|
(2120, 0.2357, 0.122, 0, 'Mage - Flamestrike'),
|
||||||
('133', '1', '0', '0', 'Mage - Fire Ball'),
|
(122, 0.193, 0, 0, 'Mage - Frost Nova'),
|
||||||
('2120', '0.2357', '0.122', '0', 'Mage - Flamestrike'),
|
(116, 0.8143, 0, 0, 'Mage - Frost Bolt'),
|
||||||
('11366', '1.15', '0.05', '0', 'Mage - Pyroblast'),
|
(44614, 0.8571, 0, 0, 'Mage - Frostfire Bolt'),
|
||||||
('2948', '0.4286', '0', '0', 'Mage - Scorch'),
|
(11426, 0.8053, 0, 0, 'Mage - Ice Barrier'),
|
||||||
('44614', '0.8571', '0', '0', 'Mage - Frostfire Bolt'),
|
(30455, 0.1429, 0, 0, 'Mage - Ice Lance'),
|
||||||
('44457', '0.4', '0.2', '0', 'Mage - Living Bomb'),
|
(44457, 0.4, 0.2, 0, 'Mage - Living Bomb'),
|
||||||
('42208', '0.0952', '0', '0', 'Mage - Blizzard Triggered Spell'),
|
(1463, 0.8053, 0, 0, 'Mage - Mana Shield'),
|
||||||
('120', '0.1357', '0', '0', 'Mage - Cone of Cold'),
|
(34913, 0, 0, 0, 'Mage - Molten Armor Triggered'),
|
||||||
('122', '0.193', '0', '0', 'Mage - Frost Nova'),
|
(11366, 1.15, 0.05, 0, 'Mage - Pyroblast'),
|
||||||
('116', '0.8143', '0', '0', 'Mage - Frost Bolt'),
|
(2948, 0.4286, 0, 0, 'Mage - Scorch'),
|
||||||
('11426', '0.8053', '0', '0', 'Mage - Ice Barrier'),
|
|
||||||
('30455', '0.1429', '0', '0', 'Mage - Ice Lance'),
|
|
||||||
('34913','0', '0', '0', 'Mage - Molten Armor Triggered'),
|
|
||||||
/* Paladin */
|
/* Paladin */
|
||||||
('19750','0.4286', '0', '0', 'Paladin - Flash of Light'),
|
(31935, 0.07, 0, 0.07, 'Paladin - Avengers Shiled'),
|
||||||
('635', '0.7143', '0', '0', 'Paladin - Holy Light'),
|
(53742, 0, 0.0156, 0.03, 'Paladin - Blood Corruption'),
|
||||||
('25912', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Hurt'),
|
(26573, 0, 0.04, 0.04, 'Paladin - Consecration'),
|
||||||
('25914', '0.4286', '0', '0', 'Paladin - Holy Shock Triggered Heal'),
|
(879, 0.15, 0, 0.15, 'Paladin - Exorcism'),
|
||||||
('31935', '0.07', '0', '0.07', 'Paladin - Avengers Shiled'),
|
(25997, 0, 0, 0, 'Paladin - Eye for an Eye'),
|
||||||
('26573', '0', '0.04', '0.04', 'Paladin - Consecration'),
|
(19750, 1, 0, 0, 'Paladin - Flash of Light'),
|
||||||
('879', '0.15', '0', '0.15', 'Paladin - Exorcism'),
|
(53595, 0, 0, 0, 'Paladin - Hammer of the Righteous'),
|
||||||
('24275', '0.15', '0', '0.15', 'Paladin - Hammer of Wrath'),
|
(24275, 0.15, 0, 0.15, 'Paladin - Hammer of Wrath'),
|
||||||
('20925', '0.09', '0', '0.056', 'Paladin - Holy Shield'),
|
(635, 1.66, 0, 0, 'Paladin - Holy Light'),
|
||||||
('2812', '0.07', '0', '0.07', 'Paladin - Holy Wrath'),
|
(25912, 0.4286, 0, 0, 'Paladin - Holy Shock Triggered Hurt'),
|
||||||
('31893', '0.25', '0', '0.16', 'Paladin - Seal of Blood Enemy Proc'),
|
(20925, 0.09, 0, 0.056, 'Paladin - Holy Shield'),
|
||||||
('32221', '0.25', '0', '0.16', 'Paladin - Seal of Blood Self Proc'),
|
(31803, 0, 0.0156, 0.03, 'Paladin - Holy Vengeance'),
|
||||||
('20424', '0.25', '0', '0.16', 'Paladin - Seal of Command Proc'),
|
(2812, 0.07, 0, 0.07, 'Paladin - Holy Wrath'),
|
||||||
('379', '0', '0', '0', 'Shaman - Earth Shield Triggered'),
|
(31898, 0.18, 0, 0.11, 'Paladin - Judgement of Blood Enemy'),
|
||||||
('20167', '0.25', '0', '0.16', 'Paladin - Seal of Light Proc'),
|
(32220, 0.0594, 0, 0.0363,'Paladin - Judgement of Blood Self'),
|
||||||
('53719', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Enemy Proc'),
|
(20467, 0.25, 0, 0.16, 'Paladin - Judgement of Command'),
|
||||||
('53718', '0.25', '0', '0.16', 'Paladin - Seal of The Martyr Self Proc'),
|
(53733, 0, 0, 0, 'Paladin - Judgement of Corruption'),
|
||||||
('25742', '0.07', '0', '0.039', 'Paladin - Seal of Righteousness Dummy Proc'),
|
(20267, 0.1, 0, 0.1, 'Paladin - Judgement of Light Proc'),
|
||||||
('53595', '0', '0', '0','Paladin - Hammer of the Righteous'),
|
(20187, 0.32, 0, 0, 'Paladin - Judgement of Righteousness'),
|
||||||
('31803', '0', '0.013', '0.15', 'Paladin - Holy Vengeance'),
|
(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 */
|
/* Priest */
|
||||||
('32546', '0.8068', '0', '0', 'Priest - Binding Heal'),
|
(32546, 0.8068, 0, 0, 'Priest - Binding Heal'),
|
||||||
('34861', '0.402', '0', '0', 'Priest - Circle of Healing'),
|
(27813, 0, 0, 0, 'Priest - Blessed Recovery'),
|
||||||
('19236', '0.8068', '0', '0', 'Priest - Desperate Prayer'),
|
(34861, 0.402, 0, 0, 'Priest - Circle of Healing'),
|
||||||
('2061', '0.8068', '0', '0', 'Priest - Flash Heal'),
|
(19236, 0.8068, 0, 0, 'Priest - Desperate Prayer'),
|
||||||
('2060', '1.6135', '0', '0', 'Priest - Greater Heal'),
|
(2944, 0, 0.1849, 0, 'Priest - Devouring Plague'),
|
||||||
('23455', '0.3035', '0', '0', 'Priest - Holy Nova Heal'),
|
(14914, 0.5711, 0.024, 0, 'Priest - Holy Fire'),
|
||||||
('17', '0.8068', '0', '0', 'Priest - Power Word: Shield'),
|
(15237, 0.1606, 0, 0, 'Priest - Holy Nova Damage'),
|
||||||
('596', '0.8086', '0', '0', 'Priest - Prayer of Healing'),
|
(2061, 0.8068, 0, 0, 'Priest - Flash Heal'),
|
||||||
('33110', '0.8068', '0', '0', 'Priest - Prayer of Mending Heal Proc'),
|
(2060, 1.6135, 0, 0, 'Priest - Greater Heal'),
|
||||||
('139', '0', '0.376', '0', 'Priest - Renew'),
|
(23455, 0.3035, 0, 0, 'Priest - Holy Nova Heal'),
|
||||||
('2944', '0.1849', '0', '0', 'Priest - Devouring Plague'),
|
(8129, 0, 0, 0, 'Priest - Mana Burn'),
|
||||||
('14914', '0.5711', '0.024', '0', 'Priest - Holy Fire'),
|
(58381, 0.257143,0, 0, 'Priest - Mind Flay Triggered'),
|
||||||
('15237', '0.1606', '0', '0', 'Priest - Holy Nova Damage'),
|
(49821, 0.14286,0, 0, 'Priest - Mind Sear Trigger'),
|
||||||
('8129', '0', '0', '0', 'Priest - Mana Burn'),
|
(17, 0.8068, 0, 0, 'Priest - Power Word: Shield'),
|
||||||
('8092', '0.4296', '0', '0', 'Priest - Mind Blast'),
|
(33110, 0.8068, 0, 0, 'Priest - Prayer of Mending Heal Proc'),
|
||||||
('15407', '0.257', '0', '0', 'Priest - Mind Flay'),
|
(33619, 0, 0, 0, 'Priest - Reflective Shield'),
|
||||||
('49821', '0.14286', '0', '0', 'Priest - Mind Sear Trigger'),
|
(139, 0, 0.376, 0, 'Priest - Renew'),
|
||||||
('34433', '0.65', '0', '0', 'Priest - Shadowfiend'),
|
(32379, 0.4296, 0, 0, 'Priest - Shadow Word: Death'),
|
||||||
('32379', '0.4296', '0', '0', 'Priest - Shadow Word: Death'),
|
(589, 0, 0.1829, 0, 'Priest - Shadow Word: Pain'),
|
||||||
('589', '0', '0.1829', '0', 'Priest - Shadow Word: Pain'),
|
(34433, 0.65, 0, 0, 'Priest - Shadowfiend'),
|
||||||
('585', '0.714', '0', '0', 'Priest - Smite'),
|
(585, 0.714, 0, 0, 'Priest - Smite'),
|
||||||
('34914', '0', '0.4', '0', 'Priest - Vampiric Touch'),
|
(34914, 0, 0.4, 0, 'Priest - Vampiric Touch'),
|
||||||
/* Shaman */
|
/* Shaman */
|
||||||
('974', '0.4762', '0', '0', 'Shaman - Earth Shield'),
|
(974, 0.4762, 0, 0, 'Shaman - Earth Shield'),
|
||||||
('1064', '1.34', '0', '0', 'Shaman - Chain Heal'),
|
(379, 0, 0, 0, 'Shaman - Earth Shield Triggered'),
|
||||||
('331', '1.6106', '0', '0', 'Shaman - Healing Wave'),
|
(1064, 1.34, 0, 0, 'Shaman - Chain Heal'),
|
||||||
('52042', '0.045', '0', '0', 'Shaman - Healing Stream Totem Triggered Heal'),
|
(421, 0.57, 0, 0, 'Shaman - Chain Lightning'),
|
||||||
('8004', '0.8082', '0', '0', 'Shaman - Lesser Healing Wave'),
|
(8042, 0.3858, 0, 0, 'Shaman - Earth Shock'),
|
||||||
('61295', '0.4', '0.18', '0', 'Shaman - Riptide'),
|
(8443, 0.2142, 0, 0, 'Shaman - Fire Nova Totem Casted by Totem'),
|
||||||
('421', '0.57', '0', '0', 'Shaman - Chain Lightning'),
|
(8050, 0.2142, 0.1, 0, 'Shaman - Flame Shock'),
|
||||||
('8042', '0.3858', '0', '0', 'Shaman - Earth Shock'),
|
(8026, 0.1, 0, 0, 'Shaman - Flametongue Weapon Proc'),
|
||||||
('8443', '0.2142', '0', '0', 'Shaman - Fire Nova Totem Casted by Totem'),
|
(8056, 0.3858, 0, 0, 'Shaman - Frost Shock'),
|
||||||
('8050', '0.2142', '0.1', '0', 'Shaman - Flame Shock'),
|
(8034, 0.1, 0, 0, 'Shaman - Frostbrand Attack Rank 1'),
|
||||||
('8026', '0.1', '0', '0', 'Shaman - Flametongue Weapon Proc'),
|
(52042, 0.045, 0, 0, 'Shaman - Healing Stream Totem Triggered Heal'),
|
||||||
('8056', '0.3858', '0', '0', 'Shaman - Frost Shock'),
|
(331, 1.6106, 0, 0, 'Shaman - Healing Wave'),
|
||||||
('8034', '0.1', '0', '0', 'Shaman - Frostbrand Attack Rank 1'),
|
(51505, 0.5714, 0, 0, 'Shaman - Lava Burst'),
|
||||||
('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'),
|
(403, 0.7143, 0, 0, 'Shaman - Lightning Bolt'),
|
||||||
('26364', '0.33', '0', '0', 'Shaman - Lightning Shield Proc'),
|
(26364, 0.33, 0, 0, 'Shaman - Lightning Shield Proc'),
|
||||||
('8188', '0.1', '0', '0', 'Shaman - Magma Totam Passive'),
|
(8188, 0.1, 0, 0, 'Shaman - Magma Totam Passive'),
|
||||||
('3606', '0.1667', '0', '0', 'Shaman - Searing Totem Attack'),
|
(61295, 0.4, 0.18, 0, 'Shaman - Riptide'),
|
||||||
|
(3606, 0.1667, 0, 0, 'Shaman - Searing Totem Attack'),
|
||||||
/* Warlock */
|
/* Warlock */
|
||||||
('980', '0', '0.1', '0', 'Warlock - Curse of Agony'),
|
(17962, 0, 0, 0, 'Warlock - Conflagrate'),
|
||||||
('603', '0', '2', '0', 'Warlock - Curse of Doom'),
|
(172, 0, 0.3, 0, 'Warlock - Corruption'),
|
||||||
('172', '0', '0.3', '0', 'Warlock - Corruption'),
|
(980, 0, 0.1, 0, 'Warlock - Curse of Agony'),
|
||||||
('348', '0.2', '0.2', '0', 'Warlock - Immolate'),
|
(603, 0, 2, 0, 'Warlock - Curse of Doom'),
|
||||||
('27243', '0.22', '0.25', '0', 'Warlock - Seed of Corruption'),
|
(18220, 0.96, 0, 0, 'Warlock - Dark Pact'),
|
||||||
('30108', '0', '0.24', '0', 'Warlock - Unstable Affliction'),
|
(5138, 0, 0, 0, 'Warlock - Drain Mana'),
|
||||||
('31117', '1.8', '0', '0', 'Warlock - Unstable Affliction Dispell'),
|
(1120, 0, 0.4286, 0, 'Warlock - Drain Soul'),
|
||||||
('17962', '0', '0', '0', 'Warlock - Conflagrate'),
|
(28176, 0, 0, 0, 'Warlock - Fel Armor'),
|
||||||
('6789', '0.22', '0', '0', 'Warlock - Death Coil'),
|
(18790, 0, 0, 0, 'Warlock - Fel Stamina'),
|
||||||
('28176', '0', '0', '0', 'Warlock - Fel Armor'),
|
(48181, 0.4729, 0, 0, 'Warlock - Haunt'),
|
||||||
('48181', '0.4729', '0', '0', 'Warlock - Haunt'),
|
(755 , 0, 0.4485, 0, 'Warlock - Health Funnel'),
|
||||||
('29722', '0.7143', '0', '0', 'Warlock - Incinerate'),
|
(1949, 0, 0.0946, 0, 'Warlock - Hellfire'),
|
||||||
('5676', '0.4286', '0', '0', 'Warlock - Searing Pain'),
|
(5857, 0.1428, 0, 0, 'Warlock - Hellfire Effect on Enemy'),
|
||||||
('686', '0.8571', '0', '0', 'Warlock - Shadow Bolt'),
|
(348, 0.2, 0.2, 0, 'Warlock - Immolate'),
|
||||||
('17877', '0.4286', '0', '0', 'Warlock - Shadowburn'),
|
(42223, 0.285714,0, 0, 'Warlock - Rain of Fire Triggered'),
|
||||||
('30283', '0.195', '0', '0', 'Warlock - Shadowfury'),
|
(27243, 0.2129, 0.25, 0, 'Warlock - Seed of Corruption'),
|
||||||
('6353', '1.15', '0', '0', 'Warlock - Soul Fire'),
|
(6229, 0.3, 0, 0, 'Warlock - Shadow Ward'),
|
||||||
('689', '0', '0.1428', '0', 'Warlock - Drain Life'),
|
(47960, 0, 0.06666, 0, 'Warlock - Shadowflame DoT'),
|
||||||
('5138', '0', '0', '0', 'Warlock - Drain Mana'),
|
(47897, 0.1064, 0, 0, 'Warlock - Shadowflame Direct'),
|
||||||
('1120', '0', '0.4286', '0', 'Warlock - Drain Soul'),
|
(63106, 0, 0, 0, 'Warlock - Siphon Life Triggered'),
|
||||||
('755', '0', '0.4485', '0', 'Warlock - Health Funnel'),
|
(6353, 1.15, 0, 0, 'Warlock - Soul Fire'),
|
||||||
('1949', '0', '0.0946', '0', 'Warlock - Hellfire'),
|
(30294, 0, 0, 0, 'Warlock - Soul Leech'),
|
||||||
('5857', '0.1428', '0', '0', 'Warlock - Hellfire Effect on Enemy'),
|
(31117, 1.8, 0, 0, 'Warlock - Unstable Affliction Dispell'),
|
||||||
('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'),
|
|
||||||
/* Item */
|
/* Item */
|
||||||
(40293, 0, 0, 0, 'Item - Siphon Essence');
|
(40293, 0, 0, 0, 'Item - Siphon Essence');
|
||||||
/*!40000 ALTER TABLE `spell_bonus_data` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `spell_bonus_data` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
UNLOCK TABLES;
|
||||||
|
|
||||||
|
|
@ -14255,6 +14262,10 @@ INSERT INTO spell_chain VALUES
|
||||||
/*Body and Soul*/
|
/*Body and Soul*/
|
||||||
(64127,0,64127,1,0),
|
(64127,0,64127,1,0),
|
||||||
(64129,64127,64127,2,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*/
|
/*Circle of Healing*/
|
||||||
(34861,0,34861,1,0),
|
(34861,0,34861,1,0),
|
||||||
(34863,34861,34861,2,0),
|
(34863,34861,34861,2,0),
|
||||||
|
|
@ -16255,6 +16266,12 @@ INSERT INTO spell_chain VALUES
|
||||||
(53225,53223,50516,3,0),
|
(53225,53223,50516,3,0),
|
||||||
(53226,53225,50516,4,0),
|
(53226,53225,50516,4,0),
|
||||||
(61384,53226,50516,5,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*/
|
/*Wrath*/
|
||||||
(5176,0,5176,1,0),
|
(5176,0,5176,1,0),
|
||||||
(5177,5176,5176,2,0),
|
(5177,5176,5176,2,0),
|
||||||
|
|
@ -16821,9 +16838,9 @@ INSERT INTO spell_chain VALUES
|
||||||
(34769,0,34769,1,0),
|
(34769,0,34769,1,0),
|
||||||
(34767,34769,34769,2,33391),
|
(34767,34769,34769,2,33391),
|
||||||
/*------------------
|
/*------------------
|
||||||
--(780)Pet-ExoticChimaera
|
--(780)Pet-Exotic Chimaera
|
||||||
------------------*/
|
------------------*/
|
||||||
/*FroststormBreath*/
|
/*Froststorm Breath*/
|
||||||
(54644,0,54644,1,0),
|
(54644,0,54644,1,0),
|
||||||
(55488,54644,54644,2,0),
|
(55488,54644,54644,2,0),
|
||||||
(55489,55488,54644,3,0),
|
(55489,55488,54644,3,0),
|
||||||
|
|
@ -16831,9 +16848,9 @@ INSERT INTO spell_chain VALUES
|
||||||
(55491,55490,54644,5,0),
|
(55491,55490,54644,5,0),
|
||||||
(55492,55491,54644,6,0),
|
(55492,55491,54644,6,0),
|
||||||
/*------------------
|
/*------------------
|
||||||
--(781)Pet-ExoticDevlisaur
|
--(781)Pet-Exotic Devlisaur
|
||||||
------------------*/
|
------------------*/
|
||||||
/*MonstrousBite*/
|
/*Monstrous Bite*/
|
||||||
(54680,0,54680,1,0),
|
(54680,0,54680,1,0),
|
||||||
(55495,54680,54680,2,0),
|
(55495,54680,54680,2,0),
|
||||||
(55496,55495,54680,3,0),
|
(55496,55495,54680,3,0),
|
||||||
|
|
@ -16841,7 +16858,7 @@ INSERT INTO spell_chain VALUES
|
||||||
(55498,55497,54680,5,0),
|
(55498,55497,54680,5,0),
|
||||||
(55499,55498,54680,6,0),
|
(55499,55498,54680,6,0),
|
||||||
/*------------------
|
/*------------------
|
||||||
--(784)Pet-ExoticWorm
|
--(784)Pet-Exotic Worm
|
||||||
------------------*/
|
------------------*/
|
||||||
/*AcidSpit*/
|
/*AcidSpit*/
|
||||||
(55749,0,55749,1,0),
|
(55749,0,55749,1,0),
|
||||||
|
|
@ -16861,9 +16878,9 @@ INSERT INTO spell_chain VALUES
|
||||||
(56630,56629,56626,5,0),
|
(56630,56629,56626,5,0),
|
||||||
(56631,56630,56626,6,0),
|
(56631,56630,56626,6,0),
|
||||||
/*------------------
|
/*------------------
|
||||||
--(787)Pet-ExoticCoreHound
|
--(787)Pet-Exotic Core Hound
|
||||||
------------------*/
|
------------------*/
|
||||||
/*LavaBreath*/
|
/*Lava Breath*/
|
||||||
(58604,0,58604,1,0),
|
(58604,0,58604,1,0),
|
||||||
(58607,58604,58604,2,0),
|
(58607,58604,58604,2,0),
|
||||||
(58608,58607,58604,3,0),
|
(58608,58607,58604,3,0),
|
||||||
|
|
@ -16871,16 +16888,27 @@ INSERT INTO spell_chain VALUES
|
||||||
(58610,58609,58604,5,0),
|
(58610,58609,58604,5,0),
|
||||||
(58611,58610,58604,6,0),
|
(58611,58610,58604,6,0),
|
||||||
/*------------------
|
/*------------------
|
||||||
--(788)Pet-ExoticSpiritBeast
|
--(788)Pet-Exotic Spirit Beast
|
||||||
------------------*/
|
------------------*/
|
||||||
/*SpiritStrike*/
|
/*Spirit Strike*/
|
||||||
(61193,0,61193,1,0),
|
(61193,0,61193,1,0),
|
||||||
(61194,61193,61193,2,0),
|
(61194,61193,61193,2,0),
|
||||||
(61195,61194,61193,3,0),
|
(61195,61194,61193,3,0),
|
||||||
(61196,61195,61193,4,0),
|
(61196,61195,61193,4,0),
|
||||||
(61197,61196,61193,5,0),
|
(61197,61196,61193,5,0),
|
||||||
(61198,61197,61193,6,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*/
|
/*Tranquility*/
|
||||||
(44203, 0,44203,1,0),
|
(44203, 0,44203,1,0),
|
||||||
(44205,44203,44203,2,0),
|
(44205,44203,44203,2,0),
|
||||||
|
|
@ -16888,13 +16916,7 @@ INSERT INTO spell_chain VALUES
|
||||||
(44207,44206,44203,4,0),
|
(44207,44206,44203,4,0),
|
||||||
(44208,44207,44203,5,0),
|
(44208,44207,44203,5,0),
|
||||||
(48444,44208,44203,6,0),
|
(48444,44208,44203,6,0),
|
||||||
(48445,48444,44203,7,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);
|
|
||||||
/*!40000 ALTER TABLE `spell_chain` ENABLE KEYS */;
|
/*!40000 ALTER TABLE `spell_chain` ENABLE KEYS */;
|
||||||
UNLOCK TABLES;
|
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),
|
(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),
|
(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),
|
(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),
|
(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),
|
(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),
|
(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),
|
(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),
|
(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),
|
(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),
|
(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),
|
(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),
|
(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, 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,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, 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',
|
`type` tinyint(3) unsigned NOT NULL default '0',
|
||||||
`targetEntry` mediumint(8) unsigned NOT NULL default '0',
|
`targetEntry` mediumint(8) unsigned NOT NULL default '0',
|
||||||
UNIQUE KEY `entry_type_target` (`entry`,`type`,`targetEntry`)
|
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
|
SET spell = 64901
|
||||||
WHERE spell = 64904;
|
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;
|
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;
|
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;
|
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;
|
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;
|
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;
|
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);
|
DELETE FROM spell_proc_event WHERE entry IN (63156, 63158);
|
||||||
INSERT INTO spell_proc_event VALUES
|
INSERT INTO spell_proc_event VALUES
|
||||||
(63156, 0x00000000, 0, 0x00000001, 0x00000040, 0x00000000, 0x00000000, 0x00000000, 0.000000, 0.000000, 0),
|
(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
|
INSERT INTO spell_proc_event VALUES
|
||||||
(31876, 0x00000000, 10, 0x00800000, 0x00000000, 0x00000008, 0x00004110, 0x00000000, 0.000000, 0.000000, 0),
|
(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),
|
(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;
|
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';
|
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;
|
ALTER TABLE db_version CHANGE COLUMN required_8227_01_mangos_spell_proc_event required_8237_01_mangos_creature_template bit;
|
||||||
|
|
||||||
UPDATE creature_template
|
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;
|
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
|
-- 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
|
-- 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
|
-- 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
|
-- 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
|
-- copy data to new column
|
||||||
UPDATE guild set createdate = created_temp;
|
UPDATE guild set createdate = created_temp;
|
||||||
-- remove old column
|
-- 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
|
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);
|
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 \
|
8462_01_mangos_creature_ai_texts.sql \
|
||||||
8469_01_characters_character_spell.sql \
|
8469_01_characters_character_spell.sql \
|
||||||
8482_01_mangos_spell_elixir.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
|
README
|
||||||
|
|
||||||
## Additional files to include when running 'make dist'
|
## Additional files to include when running 'make dist'
|
||||||
|
|
@ -182,4 +187,9 @@ EXTRA_DIST = \
|
||||||
8462_01_mangos_creature_ai_texts.sql \
|
8462_01_mangos_creature_ai_texts.sql \
|
||||||
8469_01_characters_character_spell.sql \
|
8469_01_characters_character_spell.sql \
|
||||||
8482_01_mangos_spell_elixir.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
|
README
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@
|
||||||
#define MANGOS_GRIDNOTIFIERS_H
|
#define MANGOS_GRIDNOTIFIERS_H
|
||||||
|
|
||||||
#include "ObjectGridLoader.h"
|
#include "ObjectGridLoader.h"
|
||||||
#include "ByteBuffer.h"
|
|
||||||
#include "UpdateData.h"
|
#include "UpdateData.h"
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ void WorldSession::HandleMoveWorldportAckOpcode()
|
||||||
GetPlayer()->SetSemaphoreTeleportFar(false);
|
GetPlayer()->SetSemaphoreTeleportFar(false);
|
||||||
|
|
||||||
// relocate the player to the teleport destination
|
// 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()->Relocate(loc.coord_x, loc.coord_y, loc.coord_z, loc.orientation);
|
||||||
|
|
||||||
GetPlayer()->SendInitialPacketsBeforeAddToMap();
|
GetPlayer()->SendInitialPacketsBeforeAddToMap();
|
||||||
|
|
|
||||||
|
|
@ -85,7 +85,6 @@ enum PhaseMasks
|
||||||
|
|
||||||
class WorldPacket;
|
class WorldPacket;
|
||||||
class UpdateData;
|
class UpdateData;
|
||||||
class ByteBuffer;
|
|
||||||
class WorldSession;
|
class WorldSession;
|
||||||
class Creature;
|
class Creature;
|
||||||
class Player;
|
class Player;
|
||||||
|
|
|
||||||
|
|
@ -451,12 +451,23 @@ ObjectAccessor::UpdateObjectVisibility(WorldObject *obj)
|
||||||
|
|
||||||
void ObjectAccessor::UpdateVisibilityForPlayer( Player* player )
|
void ObjectAccessor::UpdateVisibilityForPlayer( Player* player )
|
||||||
{
|
{
|
||||||
CellPair p = MaNGOS::ComputeCellPair(player->GetPositionX(), player->GetPositionY());
|
WorldObject const* viewPoint = player->GetViewPoint();
|
||||||
Cell cell(p);
|
|
||||||
Map* m = player->GetMap();
|
Map* m = player->GetMap();
|
||||||
|
|
||||||
|
CellPair p(MaNGOS::ComputeCellPair(player->GetPositionX(), player->GetPositionY()));
|
||||||
|
Cell cell(p);
|
||||||
|
|
||||||
m->UpdatePlayerVisibility(player, 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
|
/// Define the static member of HashMapHolder
|
||||||
|
|
|
||||||
|
|
@ -25,7 +25,6 @@
|
||||||
#include "Utilities/UnorderedMap.h"
|
#include "Utilities/UnorderedMap.h"
|
||||||
#include "Policies/ThreadingModel.h"
|
#include "Policies/ThreadingModel.h"
|
||||||
|
|
||||||
#include "ByteBuffer.h"
|
|
||||||
#include "UpdateData.h"
|
#include "UpdateData.h"
|
||||||
|
|
||||||
#include "GridDefines.h"
|
#include "GridDefines.h"
|
||||||
|
|
|
||||||
|
|
@ -3638,20 +3638,17 @@ void ObjectMgr::LoadQuests()
|
||||||
qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell);
|
qinfo->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell);
|
||||||
qinfo->RewSpell = 0; // no spell reward will display for this quest
|
qinfo->RewSpell = 0; // no spell reward will display for this quest
|
||||||
}
|
}
|
||||||
|
else if(!SpellMgr::IsSpellValid(spellInfo))
|
||||||
if(!SpellMgr::IsSpellValid(spellInfo))
|
|
||||||
{
|
{
|
||||||
sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is broken, quest will not have a spell reward.",
|
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->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell);
|
||||||
qinfo->RewSpell = 0; // no spell reward will display for this quest
|
qinfo->RewSpell = 0; // no spell reward will display for this quest
|
||||||
}
|
}
|
||||||
|
else if(GetTalentSpellCost(qinfo->RewSpell))
|
||||||
if(GetTalentSpellCost(qinfo->RewSpell))
|
|
||||||
{
|
{
|
||||||
sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is talent, quest will not have a spell reward.",
|
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->GetQuestId(),qinfo->RewSpell,qinfo->RewSpell);
|
||||||
qinfo->RewSpell = 0; // no spell reward will display for this quest
|
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->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast);
|
||||||
qinfo->RewSpellCast = 0; // no spell will be casted on player
|
qinfo->RewSpellCast = 0; // no spell will be casted on player
|
||||||
}
|
}
|
||||||
|
else if(!SpellMgr::IsSpellValid(spellInfo))
|
||||||
if(!SpellMgr::IsSpellValid(spellInfo))
|
|
||||||
{
|
{
|
||||||
sLog.outErrorDb("Quest %u has `RewSpellCast` = %u but spell %u is broken, quest will not have a spell reward.",
|
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->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast);
|
||||||
qinfo->RewSpellCast = 0; // no spell will be casted on player
|
qinfo->RewSpellCast = 0; // no spell will be casted on player
|
||||||
}
|
}
|
||||||
|
else if(GetTalentSpellCost(qinfo->RewSpellCast))
|
||||||
if(GetTalentSpellCost(qinfo->RewSpellCast))
|
|
||||||
{
|
{
|
||||||
sLog.outErrorDb("Quest %u has `RewSpell` = %u but spell %u is talent, quest will not have a spell reward.",
|
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->GetQuestId(),qinfo->RewSpellCast,qinfo->RewSpellCast);
|
||||||
qinfo->RewSpellCast = 0; // no spell will be casted on player
|
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->ProcDamageAndSpell(unitTarget, procAttacker, procVictim, procEx, damageInfo.damage, m_attackType, m_spellInfo);
|
||||||
|
|
||||||
caster->DealSpellDamage(&damageInfo, true);
|
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)
|
// Passive spell hits/misses or active spells only misses (only triggers)
|
||||||
else
|
else
|
||||||
|
|
|
||||||
|
|
@ -489,6 +489,9 @@ Unit *caster, Item* castItem) : Aura(spellproto, eff, currentBasePoints, target,
|
||||||
m_areaAuraType = AREA_AURA_RAID;
|
m_areaAuraType = AREA_AURA_RAID;
|
||||||
if (target->GetTypeId() == TYPEID_UNIT && ((Creature*)target)->isTotem())
|
if (target->GetTypeId() == TYPEID_UNIT && ((Creature*)target)->isTotem())
|
||||||
m_modifier.m_auraname = SPELL_AURA_NONE;
|
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;
|
break;
|
||||||
case SPELL_EFFECT_APPLY_AREA_AURA_FRIEND:
|
case SPELL_EFFECT_APPLY_AREA_AURA_FRIEND:
|
||||||
m_areaAuraType = 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++)
|
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;
|
continue;
|
||||||
|
|
||||||
if(SpellEntry const *actualSpellInfo = spellmgr.SelectAuraRankForPlayerLevel(GetSpellProto(), (*tIter)->getLevel()))
|
if(SpellEntry const *actualSpellInfo = spellmgr.SelectAuraRankForPlayerLevel(GetSpellProto(), (*tIter)->getLevel()))
|
||||||
|
|
@ -815,7 +851,7 @@ void AreaAura::Update(uint32 diff)
|
||||||
caster->IsFriendlyTo(m_target) != needFriendly
|
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
|
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();
|
Player* checkTarget = m_target->GetCharmerOrOwnerPlayerOrPlayerItself();
|
||||||
if(!checkTarget)
|
if(!checkTarget)
|
||||||
m_target->RemoveAura(GetId(), GetEffIndex());
|
m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(), GetCasterGUID());
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
m_target->RemoveAura(GetId(), GetEffIndex());
|
m_target->RemoveAurasByCasterSpell(GetId(), GetEffIndex(), GetCasterGUID());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( m_areaAuraType == AREA_AURA_PET || m_areaAuraType == AREA_AURA_OWNER )
|
else if( m_areaAuraType == AREA_AURA_PET || m_areaAuraType == AREA_AURA_OWNER )
|
||||||
{
|
{
|
||||||
if( m_target->GetGUID() != caster->GetCharmerOrOwnerGUID() )
|
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);
|
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()
|
void Aura::_AddAura()
|
||||||
{
|
{
|
||||||
if (!GetId())
|
if (!GetId())
|
||||||
|
|
@ -954,10 +1016,7 @@ void Aura::_AddAura()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// passive auras (except totem auras) do not get placed in the slots
|
if (IsNeedVisibleSlot(caster))
|
||||||
// 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))
|
|
||||||
{
|
{
|
||||||
SetAuraSlot( slot );
|
SetAuraSlot( slot );
|
||||||
if(slot < MAX_AURAS) // slot found send data to client
|
if(slot < MAX_AURAS) // slot found send data to client
|
||||||
|
|
@ -2418,6 +2477,20 @@ void Aura::HandleAuraDummy(bool apply, bool Real)
|
||||||
}
|
}
|
||||||
break;
|
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:
|
case SPELLFAMILY_DRUID:
|
||||||
{
|
{
|
||||||
switch(GetId())
|
switch(GetId())
|
||||||
|
|
|
||||||
|
|
@ -383,6 +383,7 @@ class MANGOS_DLL_SPEC Aura
|
||||||
uint32 m_in_use; // > 0 while in Aura::ApplyModifier call/Aura::Update/etc
|
uint32 m_in_use; // > 0 while in Aura::ApplyModifier call/Aura::Update/etc
|
||||||
private:
|
private:
|
||||||
void CleanupTriggeredSpells();
|
void CleanupTriggeredSpells();
|
||||||
|
bool IsNeedVisibleSlot(Unit const* caster) const; // helper for check req. visibility slot
|
||||||
};
|
};
|
||||||
|
|
||||||
class MANGOS_DLL_SPEC AreaAura : public Aura
|
class MANGOS_DLL_SPEC AreaAura : public Aura
|
||||||
|
|
|
||||||
|
|
@ -610,9 +610,17 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
|
||||||
}
|
}
|
||||||
case SPELLFAMILY_PALADIN:
|
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)
|
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);
|
float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
|
||||||
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
|
int32 holy = m_caster->SpellBaseDamageBonus(GetSpellSchoolMask(m_spellInfo)) +
|
||||||
m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget);
|
m_caster->SpellBaseDamageBonusForVictim(GetSpellSchoolMask(m_spellInfo), unitTarget);
|
||||||
|
|
@ -621,11 +629,13 @@ void Spell::EffectSchoolDMG(uint32 effect_idx)
|
||||||
uint32 stacks = 0;
|
uint32 stacks = 0;
|
||||||
Unit::AuraList const& auras = unitTarget->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
Unit::AuraList const& auras = unitTarget->GetAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
||||||
for(Unit::AuraList::const_iterator itr = auras.begin(); itr!=auras.end(); ++itr)
|
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();
|
stacks = (*itr)->GetStackAmount();
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
// + 10% for each application of Holy Vengeance on the target
|
// + 10% for each application of Holy Vengeance on the target
|
||||||
if(stacks)
|
if(stacks)
|
||||||
damage += damage * stacks * 10 /100;
|
damage += damage * stacks * 10 /100;
|
||||||
|
|
@ -1670,25 +1680,7 @@ void Spell::EffectDummy(uint32 i)
|
||||||
if (!spell_proto)
|
if (!spell_proto)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (!unitTarget->hasUnitState(UNIT_STAT_STUNNED) && m_caster->GetTypeId()==TYPEID_PLAYER)
|
m_caster->CastSpell(unitTarget, spell_proto, true, NULL);
|
||||||
{
|
|
||||||
// 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);
|
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3508,6 +3500,11 @@ void Spell::EffectDispel(uint32 i)
|
||||||
std::list < std::pair<uint32,uint64> > success_list;// (spell_id,casterGuid)
|
std::list < std::pair<uint32,uint64> > success_list;// (spell_id,casterGuid)
|
||||||
std::list < uint32 > fail_list; // spell_id
|
std::list < uint32 > fail_list; // spell_id
|
||||||
int32 list_size = dispel_list.size();
|
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)
|
// Dispell N = damage buffs (or while exist buffs for dispel)
|
||||||
for (int32 count=0; count < damage && list_size > 0; ++count)
|
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)
|
if(m_caster->GetTypeId()==TYPEID_PLAYER)
|
||||||
((Player*)m_caster)->AddComboPoints(unitTarget, 1);
|
((Player*)m_caster)->AddComboPoints(unitTarget, 1);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Mangle (Cat): CP
|
// 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)
|
if(m_caster->GetTypeId()==TYPEID_PLAYER)
|
||||||
((Player*)m_caster)->AddComboPoints(unitTarget, 1);
|
((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
|
// take ammo
|
||||||
if(m_attackType == RANGED_ATTACK && m_caster->GetTypeId() == TYPEID_PLAYER)
|
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) ||
|
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))
|
(spellInfo_2->SpellFamilyFlags2 & 0x00000020) && (spellInfo_1->SpellIconID == 291 || spellInfo_1->SpellIconID == 3028))
|
||||||
return false;
|
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)
|
// Combustion and Fire Protection Aura (multi-family check)
|
||||||
|
|
|
||||||
|
|
@ -427,7 +427,7 @@ enum ProcFlags
|
||||||
PROC_FLAG_KILLED = 0x00000001, // 00 Killed by agressor
|
PROC_FLAG_KILLED = 0x00000001, // 00 Killed by agressor
|
||||||
PROC_FLAG_KILL = 0x00000002, // 01 Kill target (in most cases need XP/Honor reward)
|
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_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
|
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
|
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_TAKEN_MELEE_HIT | \
|
||||||
PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT | \
|
PROC_FLAG_SUCCESSFUL_MELEE_SPELL_HIT | \
|
||||||
PROC_FLAG_TAKEN_MELEE_SPELL_HIT | \
|
PROC_FLAG_TAKEN_MELEE_SPELL_HIT | \
|
||||||
|
|
|
||||||
|
|
@ -1205,12 +1205,12 @@ void Unit::CalculateMeleeDamage(Unit *pVictim, uint32 damage, CalcDamageInfo *da
|
||||||
switch (attackType)
|
switch (attackType)
|
||||||
{
|
{
|
||||||
case BASE_ATTACK:
|
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->procVictim = PROC_FLAG_TAKEN_MELEE_HIT;
|
||||||
damageInfo->HitInfo = HITINFO_NORMALSWING2;
|
damageInfo->HitInfo = HITINFO_NORMALSWING2;
|
||||||
break;
|
break;
|
||||||
case OFF_ATTACK:
|
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->procVictim = PROC_FLAG_TAKEN_MELEE_HIT;//|PROC_FLAG_TAKEN_OFFHAND_HIT // not used
|
||||||
damageInfo->HitInfo = HITINFO_LEFTSWING;
|
damageInfo->HitInfo = HITINFO_LEFTSWING;
|
||||||
break;
|
break;
|
||||||
|
|
@ -3417,6 +3417,7 @@ bool Unit::AddAura(Aura *Aur)
|
||||||
return false;
|
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;
|
AuraType aurName = Aur->GetModifier()->m_auraname;
|
||||||
|
|
||||||
spellEffectPair spair = spellEffectPair(Aur->GetId(), Aur->GetEffIndex());
|
spellEffectPair spair = spellEffectPair(Aur->GetId(), Aur->GetEffIndex());
|
||||||
|
|
@ -3445,10 +3446,15 @@ bool Unit::AddAura(Aura *Aur)
|
||||||
}
|
}
|
||||||
|
|
||||||
bool stop = false;
|
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
|
// 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_DAMAGE_PERCENT:
|
||||||
case SPELL_AURA_PERIODIC_LEECH:
|
case SPELL_AURA_PERIODIC_LEECH:
|
||||||
case SPELL_AURA_PERIODIC_HEAL:
|
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)
|
void Unit::RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler)
|
||||||
{
|
{
|
||||||
for (AuraMap::iterator iter = m_Auras.begin(); iter != m_Auras.end(); )
|
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);
|
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;
|
break;
|
||||||
|
|
@ -5737,6 +5759,43 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
triggered_spell_id = 31803;
|
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;
|
break;
|
||||||
}
|
}
|
||||||
// Spiritual Attunement
|
// Spiritual Attunement
|
||||||
|
|
@ -5756,33 +5815,54 @@ bool Unit::HandleDummyAuraProc(Unit *pVictim, uint32 damage, Aura* triggeredByAu
|
||||||
// Seal of Blood do damage trigger
|
// Seal of Blood do damage trigger
|
||||||
case 31892:
|
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;
|
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
|
else
|
||||||
return true;
|
return true;
|
||||||
break;
|
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
|
// Seal of the Martyr do damage trigger
|
||||||
case 53720:
|
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;
|
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
|
else
|
||||||
return true;
|
return true;
|
||||||
break;
|
break;
|
||||||
|
|
@ -6590,6 +6670,13 @@ bool Unit::HandleProcTriggerSpell(Unit *pVictim, uint32 damage, Aura* triggeredB
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SPELLFAMILY_HUNTER:
|
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;
|
break;
|
||||||
case SPELLFAMILY_PALADIN:
|
case SPELLFAMILY_PALADIN:
|
||||||
{
|
{
|
||||||
|
|
@ -8453,12 +8540,22 @@ bool Unit::isSpellCrit(Unit *pVictim, SpellEntry const *spellProto, SpellSchoolM
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SPELL_DAMAGE_CLASS_MELEE:
|
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:
|
case SPELL_DAMAGE_CLASS_RANGED:
|
||||||
{
|
{
|
||||||
if (pVictim)
|
if (pVictim)
|
||||||
|
|
|
||||||
|
|
@ -1211,6 +1211,7 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
||||||
void RemoveAurasDueToSpell(uint32 spellId, Aura* except = NULL);
|
void RemoveAurasDueToSpell(uint32 spellId, Aura* except = NULL);
|
||||||
void RemoveAurasDueToItemSpell(Item* castItem,uint32 spellId);
|
void RemoveAurasDueToItemSpell(Item* castItem,uint32 spellId);
|
||||||
void RemoveAurasByCasterSpell(uint32 spellId, uint64 casterGUID);
|
void RemoveAurasByCasterSpell(uint32 spellId, uint64 casterGUID);
|
||||||
|
void RemoveAurasByCasterSpell(uint32 spellId, uint32 effindex, uint64 casterGUID);
|
||||||
void RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler);
|
void RemoveAurasDueToSpellByDispel(uint32 spellId, uint64 casterGUID, Unit *dispeler);
|
||||||
void RemoveAurasDueToSpellBySteal(uint32 spellId, uint64 casterGUID, Unit *stealer);
|
void RemoveAurasDueToSpellBySteal(uint32 spellId, uint64 casterGUID, Unit *stealer);
|
||||||
void RemoveAurasDueToSpellByCancel(uint32 spellId);
|
void RemoveAurasDueToSpellByCancel(uint32 spellId);
|
||||||
|
|
|
||||||
|
|
@ -19,8 +19,11 @@
|
||||||
#ifndef __UPDATEDATA_H
|
#ifndef __UPDATEDATA_H
|
||||||
#define __UPDATEDATA_H
|
#define __UPDATEDATA_H
|
||||||
|
|
||||||
|
#include "ByteBuffer.h"
|
||||||
|
|
||||||
class WorldPacket;
|
class WorldPacket;
|
||||||
|
|
||||||
|
|
||||||
enum OBJECT_UPDATE_TYPE
|
enum OBJECT_UPDATE_TYPE
|
||||||
{
|
{
|
||||||
UPDATETYPE_VALUES = 0,
|
UPDATETYPE_VALUES = 0,
|
||||||
|
|
|
||||||
|
|
@ -37,6 +37,7 @@
|
||||||
#include "ByteBuffer.h"
|
#include "ByteBuffer.h"
|
||||||
#include "Opcodes.h"
|
#include "Opcodes.h"
|
||||||
#include "Database/DatabaseEnv.h"
|
#include "Database/DatabaseEnv.h"
|
||||||
|
#include "Auth/BigNumber.h"
|
||||||
#include "Auth/Sha1.h"
|
#include "Auth/Sha1.h"
|
||||||
#include "WorldSession.h"
|
#include "WorldSession.h"
|
||||||
#include "WorldSocketMgr.h"
|
#include "WorldSocketMgr.h"
|
||||||
|
|
|
||||||
|
|
@ -480,9 +480,9 @@ bool AuthSocket::_HandleLogonChallenge()
|
||||||
pkt << uint8(1);
|
pkt << uint8(1);
|
||||||
pkt.append(g.AsByteArray(), 1);
|
pkt.append(g.AsByteArray(), 1);
|
||||||
pkt << uint8(32);
|
pkt << uint8(32);
|
||||||
pkt.append(N.AsByteArray(), 32);
|
pkt.append(N.AsByteArray(32), 32);
|
||||||
pkt.append(s.AsByteArray(), s.GetNumBytes());// 32 bytes
|
pkt.append(s.AsByteArray(), s.GetNumBytes());// 32 bytes
|
||||||
pkt.append(unk3.AsByteArray(), 16);
|
pkt.append(unk3.AsByteArray(16), 16);
|
||||||
uint8 securityFlags = 0;
|
uint8 securityFlags = 0;
|
||||||
pkt << uint8(securityFlags); // security flags (0x0...0x04)
|
pkt << uint8(securityFlags); // security flags (0x0...0x04)
|
||||||
|
|
||||||
|
|
@ -807,7 +807,7 @@ bool AuthSocket::_HandleReconnectChallenge()
|
||||||
pkt << (uint8) AUTH_RECONNECT_CHALLENGE;
|
pkt << (uint8) AUTH_RECONNECT_CHALLENGE;
|
||||||
pkt << (uint8) 0x00;
|
pkt << (uint8) 0x00;
|
||||||
_reconnectProof.SetRand(16 * 8);
|
_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
|
pkt << (uint64) 0x00 << (uint64) 0x00; // 16 bytes zeros
|
||||||
SendBuf((char const*)pkt.contents(), pkt.size());
|
SendBuf((char const*)pkt.contents(), pkt.size());
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
|
|
@ -186,21 +186,6 @@ uint8 *BigNumber::AsByteArray(int minSize)
|
||||||
return _array;
|
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()
|
const char *BigNumber::AsHexStr()
|
||||||
{
|
{
|
||||||
return BN_bn2hex(_bn);
|
return BN_bn2hex(_bn);
|
||||||
|
|
|
||||||
|
|
@ -20,7 +20,6 @@
|
||||||
#define _AUTH_BIGNUMBER_H
|
#define _AUTH_BIGNUMBER_H
|
||||||
|
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include "ByteBuffer.h"
|
|
||||||
|
|
||||||
struct bignum_st;
|
struct bignum_st;
|
||||||
|
|
||||||
|
|
@ -83,8 +82,6 @@ class BigNumber
|
||||||
|
|
||||||
uint32 AsDword();
|
uint32 AsDword();
|
||||||
uint8* AsByteArray(int minSize = 0);
|
uint8* AsByteArray(int minSize = 0);
|
||||||
ByteBuffer AsByteBuffer();
|
|
||||||
std::vector<uint8> AsByteVector();
|
|
||||||
|
|
||||||
const char *AsHexStr();
|
const char *AsHexStr();
|
||||||
const char *AsDecStr();
|
const char *AsDecStr();
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Auth/Sha1.h"
|
#include "Auth/Sha1.h"
|
||||||
|
#include "Auth/BigNumber.h"
|
||||||
#include <stdarg.h>
|
#include <stdarg.h>
|
||||||
|
|
||||||
Sha1Hash::Sha1Hash()
|
Sha1Hash::Sha1Hash()
|
||||||
|
|
|
||||||
|
|
@ -22,7 +22,8 @@
|
||||||
#include "Common.h"
|
#include "Common.h"
|
||||||
#include <openssl/sha.h>
|
#include <openssl/sha.h>
|
||||||
#include <openssl/crypto.h>
|
#include <openssl/crypto.h>
|
||||||
#include "Auth/BigNumber.h"
|
|
||||||
|
class BigNumber;
|
||||||
|
|
||||||
class Sha1Hash
|
class Sha1Hash
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -17,6 +17,7 @@
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "Threading.h"
|
#include "Threading.h"
|
||||||
|
#include "Errors.h"
|
||||||
#include <ace/OS_NS_unistd.h>
|
#include <ace/OS_NS_unistd.h>
|
||||||
#include <ace/Sched_Params.h>
|
#include <ace/Sched_Params.h>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
|
||||||
|
|
@ -23,7 +23,6 @@
|
||||||
#include <ace/TSS_T.h>
|
#include <ace/TSS_T.h>
|
||||||
#include "ace/Atomic_Op.h"
|
#include "ace/Atomic_Op.h"
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include "Errors.h"
|
|
||||||
|
|
||||||
namespace ACE_Based
|
namespace ACE_Based
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "8485"
|
#define REVISION_NR "8498"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
#ifndef __REVISION_SQL_H__
|
#ifndef __REVISION_SQL_H__
|
||||||
#define __REVISION_SQL_H__
|
#define __REVISION_SQL_H__
|
||||||
#define REVISION_DB_CHARACTERS "required_8469_01_characters_character_spell"
|
#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"
|
#define REVISION_DB_REALMD "required_8332_01_realmd_realmcharacters"
|
||||||
#endif // __REVISION_SQL_H__
|
#endif // __REVISION_SQL_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue