Merge branch 'azerothcore:master' into Playerbot
This commit is contained in:
@@ -0,0 +1,818 @@
|
||||
-- DB update 2022_09_15_01 -> 2022_09_17_00
|
||||
--
|
||||
DELETE FROM `spell_bonus_data` WHERE `entry` IN (
|
||||
116, /* Mage - Frost Bolt */
|
||||
120, /* Mage - Cone of Cold */
|
||||
122, /* Mage - Frost Nova */
|
||||
133, /* Mage - Fire ball */
|
||||
139, /* Priest - Renew */
|
||||
143, /* Mage - Fire ball */
|
||||
145, /* Mage - Fire ball */
|
||||
172, /* Warlock - Corruption */
|
||||
205, /* Mage - Frost Bolt */
|
||||
331, /* Shaman - Healing Wave */
|
||||
332, /* Shaman - Healing Wave */
|
||||
339, /* Druid - Entangling Roots */
|
||||
348, /* Warlock - Immolate */
|
||||
403, /* Shaman - Lightning Bolt */
|
||||
421, /* Shaman - Chain Lightning */
|
||||
529, /* Shaman - Lightning Bolt */
|
||||
547, /* Shaman - Healing Wave */
|
||||
548, /* Shaman - Lightning Bolt */
|
||||
585, /* Priest - Smite */
|
||||
591, /* Priest - Smite */
|
||||
596, /* Priest - Prayer of Healing */
|
||||
598, /* Priest - Smite */
|
||||
603, /* Warlock - Curse of Doom */
|
||||
635, /* Paladin - Holy Light */
|
||||
639, /* Paladin - Holy Light */
|
||||
647, /* Paladin - Holy Light */
|
||||
686, /* Warlock - Shadow Bolt */
|
||||
689, /* Warlock - Drain Life */
|
||||
695, /* Warlock - Shadow Bolt */
|
||||
699, /* Warlock - Drain Life */
|
||||
705, /* Warlock - Shadow Bolt */
|
||||
707, /* Warlock - Immolate */
|
||||
709, /* Warlock - Drain Life */
|
||||
755, /* Warlock - Health Funnel */
|
||||
774, /* Druid - Rejuvenation */
|
||||
837, /* Mage - Frost Bolt */
|
||||
865, /* Mage - Frost Nova */
|
||||
879, /* Paladin - Exorcism */
|
||||
913, /* Shaman - Healing Wave */
|
||||
915, /* Shaman - Lightning Bolt */
|
||||
930, /* Shaman - Chain Lightning */
|
||||
939, /* Shaman - Healing Wave */
|
||||
943, /* Shaman - Lightning Bolt */
|
||||
959, /* Shaman - Healing Wave */
|
||||
980, /* Warlock - Curse of Agony */
|
||||
984, /* Priest - Smite */
|
||||
996, /* Priest - Prayer of Healing */
|
||||
1004, /* Priest - Smite */
|
||||
1014, /* Warlock - Curse of Agony */
|
||||
1026, /* Paladin - Holy Light */
|
||||
1042, /* Paladin - Holy Light */
|
||||
1058, /* Druid - Rejuvenation */
|
||||
1062, /* Druid - Entangling Roots */
|
||||
1064, /* Shaman - Chain Heal */
|
||||
1088, /* Warlock - Shadow Bolt */
|
||||
1094, /* Warlock - Immolate */
|
||||
1106, /* Warlock - Shadow Bolt */
|
||||
1120, /* Warlock - Drain Soul */
|
||||
1430, /* Druid - Rejuvenation */
|
||||
1449, /* Mage - Arcane Explosion */
|
||||
1949, /* Warlock - Hellfire */
|
||||
2050, /* Priest - Lesser Heal */
|
||||
2052, /* Priest - Lesser Heal */
|
||||
2053, /* Priest - Lesser Heal */
|
||||
2054, /* Priest - Heal */
|
||||
2055, /* Priest - Heal */
|
||||
2060, /* Priest - Greater Heal */
|
||||
2061, /* Priest - Flash Heal */
|
||||
2090, /* Druid - Rejuvenation */
|
||||
2091, /* Druid - Rejuvenation */
|
||||
2120, /* Mage - Flamestrike */
|
||||
2121, /* Mage - Flamestrike */
|
||||
2136, /* Mage - Fire Blast */
|
||||
2137, /* Mage - Fire Blast */
|
||||
2138, /* Mage - Fire Blast */
|
||||
2812, /* Paladin - Holy Wrath */
|
||||
2860, /* Shaman - Chain Lightning */
|
||||
2941, /* Warlock - Immolate */
|
||||
2944, /* Priest - Devouring Plague */
|
||||
2948, /* Mage - Scorch */
|
||||
3110, /* Pet Warlock - Firebolt */
|
||||
3140, /* Mage - Fire ball */
|
||||
3472, /* Paladin - Holy Light */
|
||||
3606, /* Shaman - Searing Totem Attack Rank 1 */
|
||||
3627, /* Druid - Rejuvenation */
|
||||
3674, /* Hunter - Black Arrow($RAP*0.1 / number of ticks) */
|
||||
3698, /* Warlock - Health Funnel */
|
||||
3699, /* Warlock - Health Funnel */
|
||||
3700, /* Warlock - Health Funnel */
|
||||
5176, /* Druid - Wrath */
|
||||
5177, /* Druid - Wrath */
|
||||
5178, /* Druid - Wrath */
|
||||
5179, /* Druid - Wrath */
|
||||
5180, /* Druid - Wrath */
|
||||
5185, /* Druid - Healing Touch */
|
||||
5186, /* Druid - Healing Touch */
|
||||
5187, /* Druid - Healing Touch */
|
||||
5188, /* Druid - Healing Touch */
|
||||
5189, /* Druid - Healing Touch */
|
||||
5195, /* Druid - Entangling Roots */
|
||||
5196, /* Druid - Entangling Roots */
|
||||
5570, /* Druid - Insect Swarm */
|
||||
5614, /* Paladin - Exorcism */
|
||||
5615, /* Paladin - Exorcism */
|
||||
5676, /* Warlock - Searing Pain */
|
||||
5857, /* Warlock - Hellfire Effect on Enemy Rank 1 */
|
||||
6041, /* Shaman - Lightning Bolt */
|
||||
6060, /* Priest - Smite */
|
||||
6063, /* Priest - Heal */
|
||||
6064, /* Priest - Heal */
|
||||
6074, /* Priest - Renew */
|
||||
6075, /* Priest - Renew */
|
||||
6076, /* Priest - Renew */
|
||||
6077, /* Priest - Renew */
|
||||
6078, /* Priest - Renew */
|
||||
6131, /* Mage - Frost Nova */
|
||||
6217, /* Warlock - Curse of Agony */
|
||||
6350, /* Shaman - Searing Totem Attack Rank 2 */
|
||||
6351, /* Shaman - Searing Totem Attack Rank 3 */
|
||||
6352, /* Shaman - Searing Totem Attack Rank 4 */
|
||||
6353, /* Warlock - Soul Fire */
|
||||
6778, /* Druid - Healing Touch */
|
||||
6780, /* Druid - Wrath */
|
||||
6789, /* Warlock - Death Coil */
|
||||
7268, /* Mage - Arcane Missiles */
|
||||
7269, /* Mage - Arcane Missiles */
|
||||
7270, /* Mage - Arcane Missiles */
|
||||
7294, /* Paladin - Retribution Aura */
|
||||
7322, /* Mage - Frost Bolt */
|
||||
7641, /* Warlock - Shadow Bolt */
|
||||
7651, /* Warlock - Drain Life */
|
||||
7799, /* Pet Warlock - Firebolt */
|
||||
7800, /* Pet Warlock - Firebolt */
|
||||
7801, /* Pet Warlock - Firebolt */
|
||||
7802, /* Pet Warlock - Firebolt */
|
||||
7814, /* Pet Warlock - Lash of Pain */
|
||||
7815, /* Pet Warlock - Lash of Pain */
|
||||
7816, /* Pet Warlock - Lash of Pain */
|
||||
8004, /* Shaman - Lesser Healing Wave */
|
||||
8005, /* Shaman - Healing Wave */
|
||||
8008, /* Shaman - Lesser Healing Wave */
|
||||
8010, /* Shaman - Lesser Healing Wave */
|
||||
8034, /* Shaman - Frostbrand Attack */
|
||||
8037, /* Shaman - Frostbrand Attack */
|
||||
8042, /* Shaman - Earth Shock */
|
||||
8044, /* Shaman - Earth Shock */
|
||||
8045, /* Shaman - Earth Shock */
|
||||
8046, /* Shaman - Earth Shock */
|
||||
8050, /* Shaman - Flame Shock */
|
||||
8052, /* Shaman - Flame Shock */
|
||||
8053, /* Shaman - Flame Shock */
|
||||
8056, /* Shaman - Frost Shock */
|
||||
8058, /* Shaman - Frost Shock */
|
||||
8092, /* Priest - Mind Blast */
|
||||
8102, /* Priest - Mind Blast */
|
||||
8103, /* Priest - Mind Blast */
|
||||
8104, /* Priest - Mind Blast */
|
||||
8105, /* Priest - Mind Blast */
|
||||
8106, /* Priest - Mind Blast */
|
||||
8187, /* Shaman - Magma totem trigger 1 */
|
||||
8288, /* Warlock - Drain Soul */
|
||||
8289, /* Warlock - Drain Soul */
|
||||
8349, /* Shaman - Fire Nova Totem */
|
||||
8406, /* Mage - Frost Bolt */
|
||||
8407, /* Mage - Frost Bolt */
|
||||
8408, /* Mage - Frost Bolt */
|
||||
8412, /* Mage - Fire Blast */
|
||||
8413, /* Mage - Fire Blast */
|
||||
8418, /* Mage - Arcane Missiles */
|
||||
8419, /* Mage - Arcane Missiles */
|
||||
8422, /* Mage - Flamestrike */
|
||||
8423, /* Mage - Flamestrike */
|
||||
8437, /* Mage - Arcane Explosion */
|
||||
8438, /* Mage - Arcane Explosion */
|
||||
8439, /* Mage - Arcane Explosion */
|
||||
8444, /* Mage - Scorch */
|
||||
8445, /* Mage - Scorch */
|
||||
8446, /* Mage - Scorch */
|
||||
8492, /* Mage - Cone of Cold */
|
||||
8502, /* Shaman - Fire Nova Totem */
|
||||
8503, /* Shaman - Fire Nova Totem */
|
||||
8903, /* Druid - Healing Touch */
|
||||
8905, /* Druid - Wrath */
|
||||
8910, /* Druid - Rejuvenation */
|
||||
8921, /* Druid - Moonfire */
|
||||
8924, /* Druid - Moonfire */
|
||||
8925, /* Druid - Moonfire */
|
||||
8926, /* Druid - Moonfire */
|
||||
8927, /* Druid - Moonfire */
|
||||
8928, /* Druid - Moonfire */
|
||||
8929, /* Druid - Moonfire */
|
||||
8936, /* Druid - Regrowth */
|
||||
8938, /* Druid - Regrowth */
|
||||
8939, /* Druid - Regrowth */
|
||||
8940, /* Druid - Regrowth */
|
||||
8941, /* Druid - Regrowth */
|
||||
9472, /* Priest - Flash Heal */
|
||||
9473, /* Priest - Flash Heal */
|
||||
9474, /* Priest - Flash Heal */
|
||||
9750, /* Druid - Regrowth */
|
||||
9758, /* Druid - Healing Touch */
|
||||
9833, /* Druid - Moonfire */
|
||||
9834, /* Druid - Moonfire */
|
||||
9835, /* Druid - Moonfire */
|
||||
9839, /* Druid - Rejuvenation */
|
||||
9840, /* Druid - Rejuvenation */
|
||||
9841, /* Druid - Rejuvenation */
|
||||
9852, /* Druid - Entangling Roots */
|
||||
9853, /* Druid - Entangling Roots */
|
||||
9856, /* Druid - Regrowth */
|
||||
9857, /* Druid - Regrowth */
|
||||
9858, /* Druid - Regrowth */
|
||||
9888, /* Druid - Healing Touch */
|
||||
9889, /* Druid - Healing Touch */
|
||||
9912, /* Druid - Wrath */
|
||||
10159, /* Mage - Cone of Cold */
|
||||
10160, /* Mage - Cone of Cold */
|
||||
10161, /* Mage - Cone of Cold */
|
||||
10179, /* Mage - Frost Bolt */
|
||||
10180, /* Mage - Frost Bolt */
|
||||
10181, /* Mage - Frost Bolt */
|
||||
10197, /* Mage - Fire Blast */
|
||||
10199, /* Mage - Fire Blast */
|
||||
10201, /* Mage - Arcane Explosion */
|
||||
10202, /* Mage - Arcane Explosion */
|
||||
10205, /* Mage - Scorch */
|
||||
10206, /* Mage - Scorch */
|
||||
10207, /* Mage - Scorch */
|
||||
10215, /* Mage - Flamestrike */
|
||||
10216, /* Mage - Flamestrike */
|
||||
10230, /* Mage - Frost Nova */
|
||||
10273, /* Mage - Arcane Missiles */
|
||||
10274, /* Mage - Arcane Missiles */
|
||||
10312, /* Paladin - Exorcism */
|
||||
10313, /* Paladin - Exorcism */
|
||||
10314, /* Paladin - Exorcism */
|
||||
10318, /* Paladin - Holy Wrath */
|
||||
10328, /* Paladin - Holy Light */
|
||||
10329, /* Paladin - Holy Light */
|
||||
10391, /* Shaman - Lightning Bolt */
|
||||
10392, /* Shaman - Lightning Bolt */
|
||||
10395, /* Shaman - Healing Wave */
|
||||
10396, /* Shaman - Healing Wave */
|
||||
10412, /* Shaman - Earth Shock */
|
||||
10413, /* Shaman - Earth Shock */
|
||||
10414, /* Shaman - Earth Shock */
|
||||
10435, /* Shaman - Searing Totem Attack Rank 5 */
|
||||
10436, /* Shaman - Searing Totem Attack Rank 6 */
|
||||
10447, /* Shaman - Flame Shock */
|
||||
10448, /* Shaman - Flame Shock */
|
||||
10458, /* Shaman - Frostbrand Attack */
|
||||
10466, /* Shaman - Lesser Healing Wave */
|
||||
10467, /* Shaman - Lesser Healing Wave */
|
||||
10468, /* Shaman - Lesser Healing Wave */
|
||||
10472, /* Shaman - Frost Shock */
|
||||
10473, /* Shaman - Frost Shock */
|
||||
10579, /* Shaman - Magma totem trigger 2 */
|
||||
10580, /* Shaman - Magma totem trigger 3 */
|
||||
10581, /* Shaman - Magma totem trigger 4 */
|
||||
10605, /* Shaman - Chain Lightning */
|
||||
10622, /* Shaman - Chain Heal */
|
||||
10623, /* Shaman - Chain Heal */
|
||||
10915, /* Priest - Flash Heal */
|
||||
10916, /* Priest - Flash Heal */
|
||||
10917, /* Priest - Flash Heal */
|
||||
10927, /* Priest - Renew */
|
||||
10928, /* Priest - Renew */
|
||||
10929, /* Priest - Renew */
|
||||
10933, /* Priest - Smite */
|
||||
10934, /* Priest - Smite */
|
||||
10945, /* Priest - Mind Blast */
|
||||
10946, /* Priest - Mind Blast */
|
||||
10947, /* Priest - Mind Blast */
|
||||
10960, /* Priest - Prayer of Healing */
|
||||
10961, /* Priest - Prayer of Healing */
|
||||
10963, /* Priest - Greater Heal */
|
||||
10964, /* Priest - Greater Heal */
|
||||
10965, /* Priest - Greater Heal */
|
||||
11113, /* Mage - Blast Wave */
|
||||
11306, /* Shaman - Fire Nova Totem */
|
||||
11307, /* Shaman - Fire Nova Totem */
|
||||
11366, /* Mage - Pyroblast */
|
||||
11659, /* Warlock - Shadow Bolt */
|
||||
11660, /* Warlock - Shadow Bolt */
|
||||
11661, /* Warlock - Shadow Bolt */
|
||||
11665, /* Warlock - Immolate */
|
||||
11667, /* Warlock - Immolate */
|
||||
11668, /* Warlock - Immolate */
|
||||
11675, /* Warlock - Drain Soul */
|
||||
11681, /* Warlock - Hellfire Effect on Enemy Rank 1 */
|
||||
11682, /* Warlock - Hellfire Effect on Enemy Rank 1 */
|
||||
11683, /* Warlock - Hellfire */
|
||||
11684, /* Warlock - Hellfire */
|
||||
11693, /* Warlock - Health Funnel */
|
||||
11694, /* Warlock - Health Funnel */
|
||||
11695, /* Warlock - Health Funnel */
|
||||
11699, /* Warlock - Drain Life */
|
||||
11700, /* Warlock - Drain Life */
|
||||
11711, /* Warlock - Curse of Agony */
|
||||
11712, /* Warlock - Curse of Agony */
|
||||
11713, /* Warlock - Curse of Agony */
|
||||
11762, /* Pet Warlock - Firebolt */
|
||||
11763, /* Pet Warlock - Firebolt */
|
||||
11778, /* Pet Warlock - Lash of Pain */
|
||||
11779, /* Pet Warlock - Lash of Pain */
|
||||
11780, /* Pet Warlock - Lash of Pain */
|
||||
12505, /* Mage - Pyroblast */
|
||||
12522, /* Mage - Pyroblast */
|
||||
12523, /* Mage - Pyroblast */
|
||||
12524, /* Mage - Pyroblast */
|
||||
12525, /* Mage - Pyroblast */
|
||||
12526, /* Mage - Pyroblast */
|
||||
13018, /* Mage - Blast Wave */
|
||||
13019, /* Mage - Blast Wave */
|
||||
13020, /* Mage - Blast Wave */
|
||||
13021, /* Mage - Blast Wave */
|
||||
13376, /* Pet Shaman - Fire Elemental Fire Shield */
|
||||
14914, /* Priest - Holy Fire */
|
||||
15207, /* Shaman - Lightning Bolt */
|
||||
15208, /* Shaman - Lightning Bolt */
|
||||
15237, /* Priest - Holy Nova Damage */
|
||||
15261, /* Priest - Holy Fire */
|
||||
15262, /* Priest - Holy Fire */
|
||||
15263, /* Priest - Holy Fire */
|
||||
15264, /* Priest - Holy Fire */
|
||||
15265, /* Priest - Holy Fire */
|
||||
15266, /* Priest - Holy Fire */
|
||||
15267, /* Priest - Holy Fire */
|
||||
15430, /* Priest - Holy Nova Damage */
|
||||
15431, /* Priest - Holy Nova Damage */
|
||||
16352, /* Shaman - Frostbrand Attack */
|
||||
16353, /* Shaman - Frostbrand Attack */
|
||||
17877, /* Warlock - Shadowburn */
|
||||
17919, /* Warlock - Searing Pain */
|
||||
17920, /* Warlock - Searing Pain */
|
||||
17921, /* Warlock - Searing Pain */
|
||||
17922, /* Warlock - Searing Pain */
|
||||
17923, /* Warlock - Searing Pain */
|
||||
17924, /* Warlock - Soul Fire */
|
||||
17925, /* Warlock - Death Coil */
|
||||
17926, /* Warlock - Death Coil */
|
||||
18809, /* Mage - Pyroblast */
|
||||
18867, /* Warlock - Shadowburn */
|
||||
18868, /* Warlock - Shadowburn */
|
||||
18869, /* Warlock - Shadowburn */
|
||||
18870, /* Warlock - Shadowburn */
|
||||
18871, /* Warlock - Shadowburn */
|
||||
19236, /* Priest - Desperate Prayer */
|
||||
19238, /* Priest - Desperate Prayer */
|
||||
19240, /* Priest - Desperate Prayer */
|
||||
19241, /* Priest - Desperate Prayer */
|
||||
19242, /* Priest - Desperate Prayer */
|
||||
19243, /* Priest - Desperate Prayer */
|
||||
19276, /* Priest - Devouring Plague */
|
||||
19277, /* Priest - Devouring Plague */
|
||||
19278, /* Priest - Devouring Plague */
|
||||
19279, /* Priest - Devouring Plague */
|
||||
19280, /* Priest - Devouring Plague */
|
||||
19750, /* Paladin - Flash of Light */
|
||||
19939, /* Paladin - Flash of Light */
|
||||
19940, /* Paladin - Flash of Light */
|
||||
19941, /* Paladin - Flash of Light */
|
||||
19942, /* Paladin - Flash of Light */
|
||||
19943, /* Paladin - Flash of Light */
|
||||
19970, /* Druid - Entangling Roots (Natures Grasp) */
|
||||
19971, /* Druid - Entangling Roots (Natures Grasp) */
|
||||
19972, /* Druid - Entangling Roots (Natures Grasp) */
|
||||
19973, /* Druid - Entangling Roots (Natures Grasp) */
|
||||
19974, /* Druid - Entangling Roots (Natures Grasp) */
|
||||
19975, /* Druid - Entangling Roots (Natures Grasp) */
|
||||
20116, /* Paladin - Consecration */
|
||||
20187, /* Paladin - Judgement of Righteousness */
|
||||
20922, /* Paladin - Consecration */
|
||||
20923, /* Paladin - Consecration */
|
||||
20924, /* Paladin - Consecration */
|
||||
20925, /* Paladin - Holy Shield */
|
||||
20927, /* Paladin - Holy Shield */
|
||||
20928, /* Paladin - Holy Shield */
|
||||
23455, /* Priest - Holy Nova Heal */
|
||||
23458, /* Priest - Holy Nova Heal */
|
||||
23459, /* Priest - Holy Nova Heal */
|
||||
24239, /* Paladin - Hammer of Wrath */
|
||||
24274, /* Paladin - Hammer of Wrath */
|
||||
24275, /* Paladin - Hammer of Wrath */
|
||||
24974, /* Druid - Insect Swarm */
|
||||
24975, /* Druid - Insect Swarm */
|
||||
24976, /* Druid - Insect Swarm */
|
||||
24977, /* Druid - Insect Swarm */
|
||||
25210, /* Priest - Greater Heal */
|
||||
25213, /* Priest - Greater Heal */
|
||||
25221, /* Priest - Renew */
|
||||
25222, /* Priest - Renew */
|
||||
25233, /* Priest - Flash Heal */
|
||||
25235, /* Priest - Flash Heal */
|
||||
25292, /* Paladin - Holy Light */
|
||||
25297, /* Druid - Healing Touch */
|
||||
25299, /* Druid - Rejuvenation */
|
||||
25304, /* Mage - Frost Bolt */
|
||||
25307, /* Warlock - Shadow Bolt */
|
||||
25308, /* Priest - Prayer of Healing */
|
||||
25309, /* Warlock - Immolate */
|
||||
25314, /* Priest - Greater Heal */
|
||||
25315, /* Priest - Renew */
|
||||
25316, /* Priest - Prayer of Healing */
|
||||
25329, /* Priest - Holy Nova Heal */
|
||||
25331, /* Priest - Holy Nova Damage */
|
||||
25346, /* Mage - Arcane Missiles */
|
||||
25357, /* Shaman - Healing Wave */
|
||||
25363, /* Priest - Smite */
|
||||
25364, /* Priest - Smite */
|
||||
25372, /* Priest - Mind Blast */
|
||||
25375, /* Priest - Mind Blast */
|
||||
25384, /* Priest - Holy Fire */
|
||||
25391, /* Shaman - Healing Wave */
|
||||
25396, /* Shaman - Healing Wave */
|
||||
25420, /* Shaman - Lesser Healing Wave */
|
||||
25422, /* Shaman - Chain Heal */
|
||||
25423, /* Shaman - Chain Heal */
|
||||
25437, /* Priest - Desperate Prayer */
|
||||
25439, /* Shaman - Chain Lightning */
|
||||
25442, /* Shaman - Chain Lightning */
|
||||
25448, /* Shaman - Lightning Bolt */
|
||||
25449, /* Shaman - Lightning Bolt */
|
||||
25454, /* Shaman - Earth Shock */
|
||||
25457, /* Shaman - Flame Shock */
|
||||
25464, /* Shaman - Frost Shock */
|
||||
25467, /* Priest - Devouring Plague */
|
||||
25501, /* Shaman - Frostbrand Attack */
|
||||
25530, /* Shaman - Searing Totem Attack Rank 7 */
|
||||
25535, /* Shaman - Fire Nova Totem */
|
||||
25537, /* Shaman - Fire Nova Totem */
|
||||
25550, /* Shaman - Magma totem trigger 5 */
|
||||
25902, /* Paladin - Holy Shock Triggered Hurt Rank 1 */
|
||||
25903, /* Paladin - Holy Shock Triggered Heal Rank 1 */
|
||||
25911, /* Paladin - Holy Shock Triggered Hurt Rank 1 */
|
||||
25912, /* Paladin - Holy Shock Triggered Hurt Rank 1 */
|
||||
25913, /* Paladin - Holy Shock Triggered Heal Rank 1 */
|
||||
25914, /* Paladin - Holy Shock Triggered Heal Rank 1 */
|
||||
26363, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
26364, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
26365, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
26366, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
26367, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
26369, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
26370, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
26371, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
26372, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
26573, /* Paladin - Consecration */
|
||||
26978, /* Druid - Healing Touch */
|
||||
26979, /* Druid - Healing Touch */
|
||||
26980, /* Druid - Regrowth */
|
||||
26981, /* Druid - Rejuvenation */
|
||||
26982, /* Druid - Rejuvenation */
|
||||
26984, /* Druid - Wrath */
|
||||
26985, /* Druid - Wrath */
|
||||
26987, /* Druid - Moonfire */
|
||||
26988, /* Druid - Moonfire */
|
||||
26989, /* Druid - Entangling Roots */
|
||||
27010, /* Druid - Entangling Roots (Natures Grasp) */
|
||||
27013, /* Druid - Insect Swarm */
|
||||
27071, /* Mage - Frost Bolt */
|
||||
27072, /* Mage - Frost Bolt */
|
||||
27073, /* Mage - Scorch */
|
||||
27074, /* Mage - Scorch */
|
||||
27076, /* Mage - Arcane Missiles */
|
||||
27078, /* Mage - Fire Blast */
|
||||
27079, /* Mage - Fire Blast */
|
||||
27080, /* Mage - Arcane Explosion */
|
||||
27082, /* Mage - Arcane Explosion */
|
||||
27086, /* Mage - Flamestrike */
|
||||
27087, /* Mage - Cone of Cold */
|
||||
27088, /* Mage - Frost Nova */
|
||||
27132, /* Mage - Pyroblast */
|
||||
27133, /* Mage - Blast Wave */
|
||||
27135, /* Paladin - Holy Light */
|
||||
27136, /* Paladin - Holy Light */
|
||||
27137, /* Paladin - Flash of Light */
|
||||
27138, /* Paladin - Exorcism */
|
||||
27139, /* Paladin - Holy Wrath */
|
||||
27173, /* Paladin - Consecration */
|
||||
27175, /* Paladin - Holy Shock Triggered Heal Rank 1 */
|
||||
27176, /* Paladin - Holy Shock Triggered Hurt Rank 1 */
|
||||
27179, /* Paladin - Holy Shield */
|
||||
27180, /* Paladin - Hammer of Wrath */
|
||||
27209, /* Warlock - Shadow Bolt */
|
||||
27210, /* Warlock - Searing Pain */
|
||||
27211, /* Warlock - Soul Fire */
|
||||
27213, /* Warlock - Hellfire */
|
||||
27214, /* Warlock - Hellfire Effect on Enemy Rank 1 */
|
||||
27215, /* Warlock - Immolate */
|
||||
27217, /* Warlock - Drain Soul */
|
||||
27218, /* Warlock - Curse of Agony */
|
||||
27219, /* Warlock - Drain Life */
|
||||
27220, /* Warlock - Drain Life */
|
||||
27223, /* Warlock - Death Coil */
|
||||
27243, /* Warlock - Seed of Corruption DOT */
|
||||
27259, /* Warlock - Health Funnel */
|
||||
27263, /* Warlock - Shadowburn */
|
||||
27267, /* Pet Warlock - Firebolt */
|
||||
27274, /* Pet Warlock - Lash of Pain */
|
||||
27285, /* Warlock - Seed of Corruption DD */
|
||||
27799, /* Priest - Holy Nova Damage */
|
||||
27800, /* Priest - Holy Nova Damage */
|
||||
27801, /* Priest - Holy Nova Damage */
|
||||
27803, /* Priest - Holy Nova Heal */
|
||||
27804, /* Priest - Holy Nova Heal */
|
||||
27805, /* Priest - Holy Nova Heal */
|
||||
29228, /* Shaman - Flame Shock */
|
||||
29722, /* Warlock - Incinerate */
|
||||
30108, /* Warlock - Unstable Affliction */
|
||||
30283, /* Warlock - Shadowfury */
|
||||
30404, /* Warlock - Unstable Affliction */
|
||||
30405, /* Warlock - Unstable Affliction */
|
||||
30413, /* Warlock - Shadowfury */
|
||||
30414, /* Warlock - Shadowfury */
|
||||
30451, /* Mage - Arcane Blast */
|
||||
30455, /* Mage - Ice Lance */
|
||||
30459, /* Warlock - Searing Pain */
|
||||
30545, /* Warlock - Soul Fire */
|
||||
30546, /* Warlock - Shadowburn */
|
||||
30910, /* Warlock - Curse of Doom */
|
||||
31661, /* Mage - Dragons Breath */
|
||||
31707, /* Pet Mage - Water Elemental Frostbolt */
|
||||
31803, /* Paladin - Seal of Vengeance */
|
||||
31804, /* Paladin - Judgement of Vengeance */
|
||||
31935, /* Paladin - Avenger Shield */
|
||||
32231, /* Warlock - Incinerate */
|
||||
32379, /* Priest - Shadow Word: Death */
|
||||
32546, /* Priest - Binding Heal */
|
||||
32699, /* Paladin - Avenger Shield */
|
||||
32700, /* Paladin - Avenger Shield */
|
||||
32996, /* Priest - Shadow Word: Death */
|
||||
33041, /* Mage - Dragons Breath */
|
||||
33042, /* Mage - Dragons Breath */
|
||||
33043, /* Mage - Dragons Breath */
|
||||
33073, /* Paladin - Holy Shock Triggered Hurt Rank 1 */
|
||||
33074, /* Paladin - Holy Shock Triggered Heal Rank 1 */
|
||||
33763, /* Druid - Lifebloom HOT */
|
||||
33933, /* Mage - Blast Wave */
|
||||
33938, /* Mage - Pyroblast */
|
||||
34861, /* Priest - Circle of Healing */
|
||||
34863, /* Priest - Circle of Healing */
|
||||
34864, /* Priest - Circle of Healing */
|
||||
34865, /* Priest - Circle of Healing */
|
||||
34866, /* Priest - Circle of Healing */
|
||||
34914, /* Priest - Vampiric Touch */
|
||||
34916, /* Priest - Vampiric Touch */
|
||||
34917, /* Priest - Vampiric Touch */
|
||||
38697, /* Mage - Frost Bolt */
|
||||
38700, /* Mage - Arcane Missiles */
|
||||
38703, /* Mage - Arcane Missiles */
|
||||
42198, /* Mage - Blizzard Triggered Spell */
|
||||
42208, /* Mage - Blizzard Triggered Spell */
|
||||
42209, /* Mage - Blizzard Triggered Spell */
|
||||
42210, /* Mage - Blizzard Triggered Spell */
|
||||
42211, /* Mage - Blizzard Triggered Spell */
|
||||
42212, /* Mage - Blizzard Triggered Spell */
|
||||
42213, /* Mage - Blizzard Triggered Spell */
|
||||
42218, /* Warlock - Rain of Fire Triggered Rank 1 */
|
||||
42223, /* Warlock - Rain of Fire Triggered Rank 1 */
|
||||
42224, /* Warlock - Rain of Fire Triggered Rank 1 */
|
||||
42225, /* Warlock - Rain of Fire Triggered Rank 1 */
|
||||
42226, /* Warlock - Rain of Fire Triggered Rank 1 */
|
||||
42227, /* Pet Warlock - Rain of Fire */
|
||||
42230, /* Druid - Hurricane Triggered */
|
||||
42231, /* Druid - Hurricane Triggered */
|
||||
42232, /* Druid - Hurricane Triggered */
|
||||
42233, /* Druid - Hurricane Triggered */
|
||||
42841, /* Mage - Frost Bolt */
|
||||
42842, /* Mage - Frost Bolt */
|
||||
42844, /* Mage - Arcane Missiles */
|
||||
42845, /* Mage - Arcane Missiles */
|
||||
42858, /* Mage - Scorch */
|
||||
42859, /* Mage - Scorch */
|
||||
42872, /* Mage - Fire Blast */
|
||||
42873, /* Mage - Fire Blast */
|
||||
42890, /* Mage - Pyroblast */
|
||||
42891, /* Mage - Pyroblast */
|
||||
42894, /* Mage - Arcane Blast */
|
||||
42896, /* Mage - Arcane Blast */
|
||||
42897, /* Mage - Arcane Blast */
|
||||
42913, /* Mage - Ice Lance */
|
||||
42914, /* Mage - Ice Lance */
|
||||
42917, /* Mage - Frost Nova */
|
||||
42920, /* Mage - Arcane Explosion */
|
||||
42921, /* Mage - Arcane Explosion */
|
||||
42925, /* Mage - Flamestrike */
|
||||
42926, /* Mage - Flamestrike */
|
||||
42930, /* Mage - Cone of Cold */
|
||||
42931, /* Mage - Cone of Cold */
|
||||
42937, /* Mage - Blizzard Triggered Spell */
|
||||
42938, /* Mage - Blizzard Triggered Spell */
|
||||
42944, /* Mage - Blast Wave */
|
||||
42945, /* Mage - Blast Wave */
|
||||
42949, /* Mage - Dragons Breath */
|
||||
42950, /* Mage - Dragons Breath */
|
||||
44203, /* Druid - Tranquility Triggered */
|
||||
44205, /* Druid - Tranquility Triggered */
|
||||
44206, /* Druid - Tranquility Triggered */
|
||||
44207, /* Druid - Tranquility Triggered */
|
||||
44208, /* Druid - Tranquility Triggered */
|
||||
44425, /* Mage - Arcane Barrage */
|
||||
44457, /* Mage - Living Bomb DOT */
|
||||
44461, /* Mage - Living Bomb DD */
|
||||
44614, /* Mage - Frostfire Bolt */
|
||||
44780, /* Mage - Arcane Barrage */
|
||||
44781, /* Mage - Arcane Barrage */
|
||||
47610, /* Mage - Frostfire Bolt */
|
||||
47666, /* Priest - Pennance damage */
|
||||
47750, /* Priest - Pennance heal */
|
||||
47808, /* Warlock - Shadow Bolt */
|
||||
47809, /* Warlock - Shadow Bolt */
|
||||
47810, /* Warlock - Immolate */
|
||||
47811, /* Warlock - Immolate */
|
||||
47814, /* Warlock - Searing Pain */
|
||||
47815, /* Warlock - Searing Pain */
|
||||
47817, /* Warlock - Rain of Fire Triggered Rank 1 */
|
||||
47818, /* Warlock - Rain of Fire Triggered Rank 1 */
|
||||
47822, /* Warlock - Hellfire Effect on Enemy Rank 1 */
|
||||
47823, /* Warlock - Hellfire */
|
||||
47824, /* Warlock - Soul Fire */
|
||||
47825, /* Warlock - Soul Fire */
|
||||
47826, /* Warlock - Shadowburn */
|
||||
47827, /* Warlock - Shadowburn */
|
||||
47833, /* Warlock - Seed of Corruption DD */
|
||||
47834, /* Warlock - Seed of Corruption DD */
|
||||
47835, /* Warlock - Seed of Corruption DOT */
|
||||
47836, /* Warlock - Seed of Corruption DOT */
|
||||
47837, /* Warlock - Incinerate */
|
||||
47838, /* Warlock - Incinerate */
|
||||
47841, /* Warlock - Unstable Affliction */
|
||||
47843, /* Warlock - Unstable Affliction */
|
||||
47846, /* Warlock - Shadowfury */
|
||||
47847, /* Warlock - Shadowfury */
|
||||
47855, /* Warlock - Drain Soul */
|
||||
47856, /* Warlock - Health Funnel */
|
||||
47857, /* Warlock - Drain Life */
|
||||
47859, /* Warlock - Death Coil */
|
||||
47860, /* Warlock - Death Coil */
|
||||
47863, /* Warlock - Curse of Agony */
|
||||
47864, /* Warlock - Curse of Agony */
|
||||
47867, /* Warlock - Curse of Doom */
|
||||
47897, /* Warlock - Shadowflame(rank 1, DD) */
|
||||
47960, /* Warlock - Shadowflame(rank 1, DOT) */
|
||||
47964, /* Pet Warlock - Firebolt */
|
||||
47991, /* Pet Warlock - Lash of Pain */
|
||||
47992, /* Pet Warlock - Lash of Pain */
|
||||
48062, /* Priest - Greater Heal */
|
||||
48063, /* Priest - Greater Heal */
|
||||
48067, /* Priest - Renew */
|
||||
48068, /* Priest - Renew */
|
||||
48070, /* Priest - Flash Heal */
|
||||
48071, /* Priest - Flash Heal */
|
||||
48072, /* Priest - Prayer of Healing */
|
||||
48075, /* Priest - Holy Nova Heal */
|
||||
48076, /* Priest - Holy Nova Heal */
|
||||
48077, /* Priest - Holy Nova Damage */
|
||||
48078, /* Priest - Holy Nova Damage */
|
||||
48088, /* Priest - Circle of Healing */
|
||||
48089, /* Priest - Circle of Healing */
|
||||
48119, /* Priest - Binding Heal */
|
||||
48120, /* Priest - Binding Heal */
|
||||
48122, /* Priest - Smite */
|
||||
48123, /* Priest - Smite */
|
||||
48126, /* Priest - Mind Blast */
|
||||
48127, /* Priest - Mind Blast */
|
||||
48134, /* Priest - Holy Fire */
|
||||
48135, /* Priest - Holy Fire */
|
||||
48157, /* Priest - Shadow Word: Death */
|
||||
48158, /* Priest - Shadow Word: Death */
|
||||
48159, /* Priest - Vampiric Touch */
|
||||
48160, /* Priest - Vampiric Touch */
|
||||
48172, /* Priest - Desperate Prayer */
|
||||
48173, /* Priest - Desperate Prayer */
|
||||
48299, /* Priest - Devouring Plague */
|
||||
48300, /* Priest - Devouring Plague */
|
||||
48377, /* Druid - Healing Touch */
|
||||
48378, /* Druid - Healing Touch */
|
||||
48438, /* Druid - Wild Growth */
|
||||
48440, /* Druid - Rejuvenation */
|
||||
48441, /* Druid - Rejuvenation */
|
||||
48442, /* Druid - Regrowth */
|
||||
48443, /* Druid - Regrowth */
|
||||
48444, /* Druid - Tranquility Triggered */
|
||||
48445, /* Druid - Tranquility Triggered */
|
||||
48450, /* Druid - Lifebloom HOT */
|
||||
48451, /* Druid - Lifebloom HOT */
|
||||
48459, /* Druid - Wrath */
|
||||
48461, /* Druid - Wrath */
|
||||
48462, /* Druid - Moonfire */
|
||||
48463, /* Druid - Moonfire */
|
||||
48466, /* Druid - Hurricane Triggered */
|
||||
48468, /* Druid - Insect Swarm */
|
||||
48781, /* Paladin - Holy Light */
|
||||
48782, /* Paladin - Holy Light */
|
||||
48784, /* Paladin - Flash of Light */
|
||||
48785, /* Paladin - Flash of Light */
|
||||
48800, /* Paladin - Exorcism */
|
||||
48801, /* Paladin - Exorcism */
|
||||
48805, /* Paladin - Hammer of Wrath */
|
||||
48806, /* Paladin - Hammer of Wrath */
|
||||
48816, /* Paladin - Holy Wrath */
|
||||
48817, /* Paladin - Holy Wrath */
|
||||
48818, /* Paladin - Consecration */
|
||||
48819, /* Paladin - Consecration */
|
||||
48820, /* Paladin - Holy Shock Triggered Heal Rank 1 */
|
||||
48821, /* Paladin - Holy Shock Triggered Heal Rank 1 */
|
||||
48822, /* Paladin - Holy Shock Triggered Hurt Rank 1 */
|
||||
48823, /* Paladin - Holy Shock Triggered Hurt Rank 1 */
|
||||
48826, /* Paladin - Avenger Shield */
|
||||
48827, /* Paladin - Avenger Shield */
|
||||
48951, /* Paladin - Holy Shield */
|
||||
48952, /* Paladin - Holy Shield */
|
||||
49230, /* Shaman - Earth Shock */
|
||||
49231, /* Shaman - Earth Shock */
|
||||
49232, /* Shaman - Flame Shock */
|
||||
49233, /* Shaman - Flame Shock */
|
||||
49235, /* Shaman - Frost Shock */
|
||||
49236, /* Shaman - Frost Shock */
|
||||
49237, /* Shaman - Lightning Bolt */
|
||||
49238, /* Shaman - Lightning Bolt */
|
||||
49270, /* Shaman - Chain Lightning */
|
||||
49271, /* Shaman - Chain Lightning */
|
||||
49272, /* Shaman - Healing Wave */
|
||||
49273, /* Shaman - Healing Wave */
|
||||
49275, /* Shaman - Lesser Healing Wave */
|
||||
49276, /* Shaman - Lesser Healing Wave */
|
||||
49278, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
49279, /* Shaman - Lightning Shield Proc Rank 1 */
|
||||
49821, /* Priest - Mind Sear Trigger Rank 1 */
|
||||
50288, /* Druid - Starfall rank 1 */
|
||||
50294, /* Druid - Starfall AOE rank 1 */
|
||||
50464, /* Druid - Nourish */
|
||||
50581, /* Warlock - Shadow Cleave */
|
||||
50590, /* Warlock - Immolation Aura */
|
||||
50796, /* Warlock - Chaos Bolt */
|
||||
51505, /* Shaman - Lava Burst */
|
||||
51945, /* Shaman - Earthliving Weapon */
|
||||
51963, /* Pet Death Knight, Gargoyle Strike */
|
||||
51990, /* Shaman - Earthliving Weapon */
|
||||
51997, /* Shaman - Earthliving Weapon */
|
||||
51998, /* Shaman - Earthliving Weapon */
|
||||
51999, /* Shaman - Earthliving Weapon */
|
||||
52000, /* Shaman - Earthliving Weapon */
|
||||
52042, /* Shaman - Healing Stream Totem Triggered Heal */
|
||||
52983, /* Priest - Pennance heal */
|
||||
52984, /* Priest - Pennance heal */
|
||||
52985, /* Priest - Pennance heal */
|
||||
52998, /* Priest - Pennance damage */
|
||||
52999, /* Priest - Pennance damage */
|
||||
53000, /* Priest - Pennance damage */
|
||||
53022, /* Priest - Mind Sear Trigger Rank 1 */
|
||||
53188, /* Druid - Starfall AOE rank 2 */
|
||||
53189, /* Druid - Starfall AOE rank 3 */
|
||||
53190, /* Druid - Starfall AOE rank 4 */
|
||||
53191, /* Druid - Starfall rank 2 */
|
||||
53194, /* Druid - Starfall rank 3 */
|
||||
53195, /* Druid - Starfall rank 4 */
|
||||
53227, /* Druid - Typhoon */
|
||||
53248, /* Druid - Wild Growth */
|
||||
53249, /* Druid - Wild Growth */
|
||||
53251, /* Druid - Wild Growth */
|
||||
53308, /* Druid - Entangling Roots */
|
||||
53313, /* Druid - Entangling Roots (Natures Grasp) */
|
||||
53733, /* Paladin - Judgement of Corruption */
|
||||
53742, /* Paladin - Seal of Corruption */
|
||||
54049, /* Pet Warlock - Shadow Bite */
|
||||
54050, /* Pet Warlock - Shadow Bite */
|
||||
54051, /* Pet Warlock - Shadow Bite */
|
||||
54052, /* Pet Warlock - Shadow Bite */
|
||||
54053, /* Pet Warlock - Shadow Bite */
|
||||
54158, /* Paladin - Jugdement (Seal of Light, Seal of Wisdom, Seal of Justice) */
|
||||
55359, /* Mage - Living Bomb DOT */
|
||||
55360, /* Mage - Living Bomb DOT */
|
||||
55361, /* Mage - Living Bomb DD */
|
||||
55362, /* Mage - Living Bomb DD */
|
||||
55458, /* Shaman - Chain Heal */
|
||||
55459, /* Shaman - Chain Heal */
|
||||
57984, /* Pet Shaman - Fire Elemental Fire Blast */
|
||||
58381, /* Priest - Mind Flay */
|
||||
58700, /* Shaman - Searing Totem Attack Rank 8 */
|
||||
58701, /* Shaman - Searing Totem Attack Rank 9 */
|
||||
58702, /* Shaman - Searing Totem Attack Rank 10 */
|
||||
58732, /* Shaman - Magma totem trigger 6 */
|
||||
58735, /* Shaman - Magma totem trigger 7 */
|
||||
58797, /* Shaman - Frostbrand Attack */
|
||||
58798, /* Shaman - Frostbrand Attack */
|
||||
58799, /* Shaman - Frostbrand Attack */
|
||||
59170, /* Warlock - Chaos Bolt */
|
||||
59171, /* Warlock - Chaos Bolt */
|
||||
59172, /* Warlock - Chaos Bolt */
|
||||
59637, /* Pet Mage - Mirror Image Fireblast */
|
||||
59638, /* Pet Mage - Mirror Image Frostbolt */
|
||||
60043, /* Shaman - Lava Burst */
|
||||
61290, /* Warlock - Shadowflame(rank 1, DD) */
|
||||
61291, /* Warlock - Shadowflame(rank 2, DOT) */
|
||||
61295, /* Shaman - Riptide */
|
||||
61299, /* Shaman - Riptide */
|
||||
61300, /* Shaman - Riptide */
|
||||
61301, /* Shaman - Riptide */
|
||||
61387, /* Druid - Typhoon */
|
||||
61388, /* Druid - Typhoon */
|
||||
61390, /* Druid - Typhoon */
|
||||
61391, /* Druid - Typhoon */
|
||||
61650, /* Shaman - Fire Nova Totem */
|
||||
61654, /* Shaman - Fire Nova Totem */
|
||||
63668, /* Hunter - Black Arrow($RAP*0.1 / number of ticks) */
|
||||
63669, /* Hunter - Black Arrow($RAP*0.1 / number of ticks) */
|
||||
63670, /* Hunter - Black Arrow($RAP*0.1 / number of ticks) */
|
||||
63671, /* Hunter - Black Arrow($RAP*0.1 / number of ticks) */
|
||||
63672, /* Hunter - Black Arrow($RAP*0.1 / number of ticks) */
|
||||
64844, /* Priest - Divine Hymn */
|
||||
71757, /* Mage - Deep Freeze */
|
||||
72898 /* Pet Mage - Water Elemental Frostbolt */
|
||||
);
|
||||
@@ -0,0 +1,11 @@
|
||||
-- DB update 2022_09_17_00 -> 2022_09_17_01
|
||||
--
|
||||
DELETE FROM `creature_template_movement` WHERE `creatureId` = 15727;
|
||||
INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES
|
||||
(15727, 1, 0, 0, 1, 0, 0, 0);
|
||||
|
||||
DELETE FROM `areatrigger_scripts` WHERE `ScriptName` = 'at_cthun_stomach_exit' AND `entry` = 4033;
|
||||
INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES (4033, 'at_cthun_stomach_exit');
|
||||
|
||||
DELETE FROM `areatrigger_scripts` WHERE `ScriptName` = 'at_cthun_center' AND `entry` = 4036;
|
||||
INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES (4036, 'at_cthun_center');
|
||||
@@ -3430,8 +3430,13 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui
|
||||
|
||||
if (me->IsInRange(me->GetVictim(), (float)e.event.minMaxRepeat.min, (float)e.event.minMaxRepeat.max))
|
||||
ProcessTimedAction(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax, me->GetVictim());
|
||||
else // xinef: make it predictable
|
||||
RecalcTimer(e, 500, 500);
|
||||
else
|
||||
{
|
||||
if (!e.event.minMaxRepeat.controller)
|
||||
RecalcTimer(e, 500, 500); // xinef: make it predictable "Malcrom: This seems to be done to standardize min, max start rather than using the range values for the timer."
|
||||
else
|
||||
RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); // Malcrom: if param5 value is greater than 0 first action will not happen until after repeat timer fires.
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SMART_EVENT_VICTIM_CASTING:
|
||||
|
||||
@@ -221,6 +221,7 @@ struct SmartEvent
|
||||
uint32 max;
|
||||
uint32 repeatMin;
|
||||
uint32 repeatMax;
|
||||
uint32 controller;
|
||||
} minMaxRepeat;
|
||||
|
||||
struct
|
||||
|
||||
@@ -15517,9 +15517,13 @@ void Player::_SaveInstanceTimeRestrictions(CharacterDatabaseTransaction trans)
|
||||
|
||||
bool Player::IsInWhisperWhiteList(ObjectGuid guid)
|
||||
{
|
||||
for (WhisperListContainer::const_iterator itr = WhisperList.begin(); itr != WhisperList.end(); ++itr)
|
||||
if (*itr == guid)
|
||||
for (auto const& itr : WhisperList)
|
||||
{
|
||||
if (itr == guid)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1762,7 +1762,10 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss)
|
||||
uint32 damage = uint32(std::max(0, (*dmgShieldItr)->GetAmount())); // xinef: done calculated at amount calculation
|
||||
|
||||
if (Unit* caster = (*dmgShieldItr)->GetCaster())
|
||||
{
|
||||
damage = caster->SpellDamageBonusDone(this, i_spellProto, damage, SPELL_DIRECT_DAMAGE, (*dmgShieldItr)->GetEffIndex());
|
||||
damage = this->SpellDamageBonusTaken(caster, i_spellProto, damage, SPELL_DIRECT_DAMAGE);
|
||||
}
|
||||
|
||||
uint32 absorb = 0;
|
||||
|
||||
@@ -11250,7 +11253,7 @@ float Unit::SpellPctDamageModsDone(Unit* victim, SpellInfo const* spellProto, Da
|
||||
return DoneTotalMod;
|
||||
}
|
||||
|
||||
uint32 Unit::SpellDamageBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 pdamage, DamageEffectType damagetype, float TotalMod, uint32 stack)
|
||||
uint32 Unit::SpellDamageBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 pdamage, DamageEffectType damagetype, uint8 effIndex, float TotalMod, uint32 stack)
|
||||
{
|
||||
if (!spellProto || !victim || damagetype == DIRECT_DAMAGE)
|
||||
return pdamage;
|
||||
@@ -11265,7 +11268,7 @@ uint32 Unit::SpellDamageBonusDone(Unit* victim, SpellInfo const* spellProto, uin
|
||||
if (IsTotem())
|
||||
{
|
||||
if (Unit* owner = GetOwner())
|
||||
return owner->SpellDamageBonusDone(victim, spellProto, pdamage, damagetype, TotalMod, stack);
|
||||
return owner->SpellDamageBonusDone(victim, spellProto, pdamage, damagetype, effIndex, TotalMod, stack);
|
||||
}
|
||||
// Dancing Rune Weapon...
|
||||
else if (GetEntry() == 27893)
|
||||
@@ -11342,7 +11345,7 @@ uint32 Unit::SpellDamageBonusDone(Unit* victim, SpellInfo const* spellProto, uin
|
||||
int32 DoneAdvertisedBenefit = SpellBaseDamageBonusDone(spellProto->GetSchoolMask());
|
||||
|
||||
// Check for table values
|
||||
float coeff = 0;
|
||||
float coeff = spellProto->Effects[effIndex].BonusMultiplier;
|
||||
SpellBonusEntry const* bonus = sSpellMgr->GetSpellBonusData(spellProto->Id);
|
||||
if (bonus)
|
||||
{
|
||||
@@ -12054,12 +12057,12 @@ float Unit::SpellPctHealingModsDone(Unit* victim, SpellInfo const* spellProto, D
|
||||
return DoneTotalMod;
|
||||
}
|
||||
|
||||
uint32 Unit::SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 healamount, DamageEffectType damagetype, float TotalMod, uint32 stack)
|
||||
uint32 Unit::SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 healamount, DamageEffectType damagetype, uint8 effIndex, float TotalMod, uint32 stack)
|
||||
{
|
||||
// For totems get healing bonus from owner (statue isn't totem in fact)
|
||||
if (GetTypeId() == TYPEID_UNIT && IsTotem())
|
||||
if (Unit* owner = GetOwner())
|
||||
return owner->SpellHealingBonusDone(victim, spellProto, healamount, damagetype, TotalMod, stack);
|
||||
return owner->SpellHealingBonusDone(victim, spellProto, healamount, damagetype, effIndex, TotalMod, stack);
|
||||
|
||||
// No bonus healing for potion spells
|
||||
if (spellProto->SpellFamilyName == SPELLFAMILY_POTION)
|
||||
@@ -12090,7 +12093,7 @@ uint32 Unit::SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, ui
|
||||
|
||||
// Done fixed damage bonus auras
|
||||
int32 DoneAdvertisedBenefit = SpellBaseHealingBonusDone(spellProto->GetSchoolMask());
|
||||
float coeff = 0;
|
||||
float coeff = spellProto->Effects[effIndex].BonusMultiplier;
|
||||
|
||||
switch (spellProto->SpellFamilyName)
|
||||
{
|
||||
|
||||
@@ -2168,12 +2168,12 @@ public:
|
||||
int32 SpellBaseDamageBonusDone(SpellSchoolMask schoolMask);
|
||||
int32 SpellBaseDamageBonusTaken(SpellSchoolMask schoolMask, bool isDoT = false);
|
||||
float SpellPctDamageModsDone(Unit* victim, SpellInfo const* spellProto, DamageEffectType damagetype);
|
||||
uint32 SpellDamageBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 pdamage, DamageEffectType damagetype, float TotalMod = 0.0f, uint32 stack = 1);
|
||||
uint32 SpellDamageBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 pdamage, DamageEffectType damagetype, uint8 effIndex, float TotalMod = 0.0f, uint32 stack = 1);
|
||||
uint32 SpellDamageBonusTaken(Unit* caster, SpellInfo const* spellProto, uint32 pdamage, DamageEffectType damagetype, uint32 stack = 1);
|
||||
int32 SpellBaseHealingBonusDone(SpellSchoolMask schoolMask);
|
||||
int32 SpellBaseHealingBonusTaken(SpellSchoolMask schoolMask);
|
||||
float SpellPctHealingModsDone(Unit* victim, SpellInfo const* spellProto, DamageEffectType damagetype);
|
||||
uint32 SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 healamount, DamageEffectType damagetype, float TotalMod = 0.0f, uint32 stack = 1);
|
||||
uint32 SpellHealingBonusDone(Unit* victim, SpellInfo const* spellProto, uint32 healamount, DamageEffectType damagetype, uint8 effIndex, float TotalMod = 0.0f, uint32 stack = 1);
|
||||
uint32 SpellHealingBonusTaken(Unit* caster, SpellInfo const* spellProto, uint32 healamount, DamageEffectType damagetype, uint32 stack = 1);
|
||||
|
||||
uint32 MeleeDamageBonusDone(Unit* pVictim, uint32 damage, WeaponAttackType attType, SpellInfo const* spellProto = nullptr);
|
||||
|
||||
@@ -551,11 +551,11 @@ int32 AuraEffect::CalculateAmount(Unit* caster)
|
||||
case SPELL_AURA_PERIODIC_LEECH:
|
||||
// xinef: save caster depending auras, always pass 1 as stack amount, effect will be multiplicated at the end of the function by correct value!
|
||||
if (GetBase()->GetType() == UNIT_AURA_TYPE)
|
||||
amount = caster->SpellDamageBonusDone(GetBase()->GetUnitOwner(), GetSpellInfo(), amount, DOT, GetPctMods(), 1);
|
||||
amount = caster->SpellDamageBonusDone(GetBase()->GetUnitOwner(), GetSpellInfo(), amount, DOT, GetEffIndex(), GetPctMods(), 1);
|
||||
break;
|
||||
case SPELL_AURA_PERIODIC_HEAL:
|
||||
if (GetBase()->GetType() == UNIT_AURA_TYPE)
|
||||
amount = caster->SpellHealingBonusDone(GetBase()->GetUnitOwner(), GetSpellInfo(), amount, DOT, GetPctMods(), 1);
|
||||
amount = caster->SpellHealingBonusDone(GetBase()->GetUnitOwner(), GetSpellInfo(), amount, DOT, GetEffIndex(), GetPctMods(), 1);
|
||||
break;
|
||||
case SPELL_AURA_DAMAGE_SHIELD:
|
||||
if (GetBase()->GetType() == UNIT_AURA_TYPE)
|
||||
@@ -6304,7 +6304,7 @@ void AuraEffect::HandlePeriodicDamageAurasTick(Unit* target, Unit* caster) const
|
||||
{
|
||||
// xinef: leave only target depending bonuses, rest is handled in calculate amount
|
||||
if (GetBase()->GetType() == DYNOBJ_AURA_TYPE && caster)
|
||||
damage = caster->SpellDamageBonusDone(target, GetSpellInfo(), damage, DOT, 0.0f, GetBase()->GetStackAmount());
|
||||
damage = caster->SpellDamageBonusDone(target, GetSpellInfo(), damage, DOT, GetEffIndex(), 0.0f, GetBase()->GetStackAmount());
|
||||
damage = target->SpellDamageBonusTaken(caster, GetSpellInfo(), damage, DOT, GetBase()->GetStackAmount());
|
||||
|
||||
// Calculate armor mitigation
|
||||
@@ -6413,7 +6413,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c
|
||||
sScriptMgr->ModifyPeriodicDamageAurasTick(target, caster, damage);
|
||||
|
||||
if (GetBase()->GetType() == DYNOBJ_AURA_TYPE)
|
||||
damage = caster->SpellDamageBonusDone(target, GetSpellInfo(), damage, DOT, 0.0f, GetBase()->GetStackAmount());
|
||||
damage = caster->SpellDamageBonusDone(target, GetSpellInfo(), damage, DOT, GetEffIndex(), 0.0f, GetBase()->GetStackAmount());
|
||||
damage = target->SpellDamageBonusTaken(caster, GetSpellInfo(), damage, DOT, GetBase()->GetStackAmount());
|
||||
|
||||
bool crit = false;
|
||||
@@ -6483,7 +6483,7 @@ void AuraEffect::HandlePeriodicHealthLeechAuraTick(Unit* target, Unit* caster) c
|
||||
|
||||
float gainMultiplier = GetSpellInfo()->Effects[GetEffIndex()].CalcValueMultiplier(caster);
|
||||
|
||||
uint32 heal = uint32(caster->SpellHealingBonusDone(caster, GetSpellInfo(), uint32(new_damage * gainMultiplier), DOT, 0.0f, GetBase()->GetStackAmount()));
|
||||
uint32 heal = uint32(caster->SpellHealingBonusDone(caster, GetSpellInfo(), uint32(new_damage * gainMultiplier), DOT, GetEffIndex(), 0.0f, GetBase()->GetStackAmount()));
|
||||
heal = uint32(caster->SpellHealingBonusTaken(caster, GetSpellInfo(), heal, DOT, GetBase()->GetStackAmount()));
|
||||
|
||||
HealInfo healInfo(caster, caster, heal, GetSpellInfo(), GetSpellInfo()->GetSchoolMask());
|
||||
@@ -6604,7 +6604,7 @@ void AuraEffect::HandlePeriodicHealAurasTick(Unit* target, Unit* caster) const
|
||||
}
|
||||
|
||||
if (GetBase()->GetType() == DYNOBJ_AURA_TYPE)
|
||||
damage = caster->SpellHealingBonusDone(target, GetSpellInfo(), damage, DOT, 0.0f, GetBase()->GetStackAmount());
|
||||
damage = caster->SpellHealingBonusDone(target, GetSpellInfo(), damage, DOT, GetEffIndex(), 0.0f, GetBase()->GetStackAmount());
|
||||
damage = target->SpellHealingBonusTaken(caster, GetSpellInfo(), damage, DOT, GetBase()->GetStackAmount());
|
||||
}
|
||||
|
||||
@@ -6898,7 +6898,7 @@ void AuraEffect::HandleProcTriggerDamageAuraProc(AuraApplication* aurApp, ProcEv
|
||||
}
|
||||
|
||||
SpellNonMeleeDamage damageInfo(target, triggerTarget, GetSpellInfo(), GetSpellInfo()->SchoolMask);
|
||||
uint32 damage = target->SpellDamageBonusDone(triggerTarget, GetSpellInfo(), GetAmount(), SPELL_DIRECT_DAMAGE);
|
||||
uint32 damage = target->SpellDamageBonusDone(triggerTarget, GetSpellInfo(), GetAmount(), SPELL_DIRECT_DAMAGE, GetEffIndex());
|
||||
damage = triggerTarget->SpellDamageBonusTaken(target, GetSpellInfo(), damage, SPELL_DIRECT_DAMAGE);
|
||||
target->CalculateSpellDamageTaken(&damageInfo, damage, GetSpellInfo());
|
||||
Unit::DealDamageMods(damageInfo.target, damageInfo.damage, &damageInfo.absorb);
|
||||
|
||||
@@ -2845,7 +2845,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo* target)
|
||||
|
||||
if (m_caster->IsAlive())
|
||||
{
|
||||
healthGain = m_caster->SpellHealingBonusDone(m_caster, m_spellInfo, healthGain, HEAL);
|
||||
healthGain = m_caster->SpellHealingBonusDone(m_caster, m_spellInfo, healthGain, HEAL, effIndex);
|
||||
healthGain = m_caster->SpellHealingBonusTaken(m_caster, m_spellInfo, healthGain, HEAL);
|
||||
|
||||
HealInfo healInfo(m_caster, m_caster, healthGain, m_spellInfo, m_spellInfo->GetSchoolMask());
|
||||
|
||||
@@ -644,7 +644,7 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
|
||||
if (damage < 0)
|
||||
damage = 0;
|
||||
|
||||
damage = m_originalCaster->SpellDamageBonusDone(unitTarget, m_spellInfo, (uint32)damage, SPELL_DIRECT_DAMAGE);
|
||||
damage = m_originalCaster->SpellDamageBonusDone(unitTarget, m_spellInfo, (uint32)damage, SPELL_DIRECT_DAMAGE, effIndex);
|
||||
damage = unitTarget->SpellDamageBonusTaken(m_originalCaster, m_spellInfo, (uint32)damage, SPELL_DIRECT_DAMAGE);
|
||||
}
|
||||
|
||||
@@ -1356,7 +1356,7 @@ void Spell::EffectPowerDrain(SpellEffIndex effIndex)
|
||||
return;
|
||||
|
||||
// add spell damage bonus
|
||||
damage = m_caster->SpellDamageBonusDone(unitTarget, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE);
|
||||
damage = m_caster->SpellDamageBonusDone(unitTarget, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE, effIndex);
|
||||
damage = unitTarget->SpellDamageBonusTaken(m_caster, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE);
|
||||
|
||||
// resilience reduce mana draining effect at spell crit damage reduction (added in 2.4)
|
||||
@@ -1463,7 +1463,7 @@ void Spell::EffectPowerBurn(SpellEffIndex effIndex)
|
||||
m_damage += newDamage;
|
||||
}
|
||||
|
||||
void Spell::EffectHeal(SpellEffIndex /*effIndex*/)
|
||||
void Spell::EffectHeal(SpellEffIndex effIndex)
|
||||
{
|
||||
if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH_TARGET)
|
||||
return;
|
||||
@@ -1550,12 +1550,12 @@ void Spell::EffectHeal(SpellEffIndex /*effIndex*/)
|
||||
// Death Pact - return pct of max health to caster
|
||||
else if (m_spellInfo->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT && m_spellInfo->SpellFamilyFlags[0] & 0x00080000)
|
||||
{
|
||||
addhealth = caster->SpellHealingBonusDone(unitTarget, m_spellInfo, int32(caster->CountPctFromMaxHealth(damage)), HEAL);
|
||||
addhealth = caster->SpellHealingBonusDone(unitTarget, m_spellInfo, int32(caster->CountPctFromMaxHealth(damage)), HEAL, effIndex);
|
||||
addhealth = unitTarget->SpellHealingBonusTaken(caster, m_spellInfo, addhealth, HEAL);
|
||||
}
|
||||
else if (m_spellInfo->Id != 33778) // not lifebloom
|
||||
{
|
||||
addhealth = caster->SpellHealingBonusDone(unitTarget, m_spellInfo, addhealth, HEAL);
|
||||
addhealth = caster->SpellHealingBonusDone(unitTarget, m_spellInfo, addhealth, HEAL, effIndex);
|
||||
addhealth = unitTarget->SpellHealingBonusTaken(caster, m_spellInfo, addhealth, HEAL);
|
||||
}
|
||||
|
||||
@@ -1574,7 +1574,7 @@ void Spell::EffectHeal(SpellEffIndex /*effIndex*/)
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::EffectHealPct(SpellEffIndex /*effIndex*/)
|
||||
void Spell::EffectHealPct(SpellEffIndex effIndex)
|
||||
{
|
||||
if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH_TARGET)
|
||||
return;
|
||||
@@ -1586,13 +1586,13 @@ void Spell::EffectHealPct(SpellEffIndex /*effIndex*/)
|
||||
if (!m_originalCaster)
|
||||
return;
|
||||
|
||||
uint32 heal = m_originalCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, unitTarget->CountPctFromMaxHealth(damage), HEAL);
|
||||
uint32 heal = m_originalCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, unitTarget->CountPctFromMaxHealth(damage), HEAL, effIndex);
|
||||
heal = unitTarget->SpellHealingBonusTaken(m_originalCaster, m_spellInfo, heal, HEAL);
|
||||
|
||||
m_damage -= heal;
|
||||
}
|
||||
|
||||
void Spell::EffectHealMechanical(SpellEffIndex /*effIndex*/)
|
||||
void Spell::EffectHealMechanical(SpellEffIndex effIndex)
|
||||
{
|
||||
if (effectHandleMode != SPELL_EFFECT_HANDLE_LAUNCH_TARGET)
|
||||
return;
|
||||
@@ -1604,12 +1604,12 @@ void Spell::EffectHealMechanical(SpellEffIndex /*effIndex*/)
|
||||
if (!m_originalCaster)
|
||||
return;
|
||||
|
||||
uint32 heal = m_originalCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, uint32(damage), HEAL);
|
||||
uint32 heal = m_originalCaster->SpellHealingBonusDone(unitTarget, m_spellInfo, uint32(damage), HEAL, effIndex);
|
||||
|
||||
m_damage -= unitTarget->SpellHealingBonusTaken(m_originalCaster, m_spellInfo, heal, HEAL);
|
||||
}
|
||||
|
||||
void Spell::EffectHealthLeech(SpellEffIndex /*effIndex*/)
|
||||
void Spell::EffectHealthLeech(SpellEffIndex effIndex)
|
||||
{
|
||||
if (effectHandleMode != SPELL_EFFECT_HANDLE_HIT_TARGET)
|
||||
return;
|
||||
@@ -1617,7 +1617,7 @@ void Spell::EffectHealthLeech(SpellEffIndex /*effIndex*/)
|
||||
if (!unitTarget || !unitTarget->IsAlive() || damage < 0)
|
||||
return;
|
||||
|
||||
damage = m_caster->SpellDamageBonusDone(unitTarget, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE);
|
||||
damage = m_caster->SpellDamageBonusDone(unitTarget, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE, effIndex);
|
||||
damage = unitTarget->SpellDamageBonusTaken(m_caster, m_spellInfo, uint32(damage), SPELL_DIRECT_DAMAGE);
|
||||
|
||||
LOG_DEBUG("spells.aura", "HealthLeech :{}", damage);
|
||||
|
||||
@@ -4385,6 +4385,12 @@ void SpellMgr::LoadSpellInfoCorrections()
|
||||
spellInfo->ProcFlags = PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS;
|
||||
});
|
||||
|
||||
// Gift of Arthas
|
||||
ApplySpellFix({ 11371 }, [](SpellInfo* spellInfo)
|
||||
{
|
||||
spellInfo->SpellFamilyName = SPELLFAMILY_POTION;
|
||||
});
|
||||
|
||||
for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i)
|
||||
{
|
||||
SpellInfo* spellInfo = mSpellInfoMap[i];
|
||||
|
||||
@@ -1965,7 +1965,7 @@ void SpellMgr::LoadSpellProcs()
|
||||
LOG_INFO("server.loading", " ");
|
||||
}
|
||||
|
||||
void SpellMgr::LoadSpellBonusess()
|
||||
void SpellMgr::LoadSpellBonuses()
|
||||
{
|
||||
uint32 oldMSTime = getMSTime();
|
||||
|
||||
|
||||
@@ -381,7 +381,7 @@ struct SpellThreatEntry
|
||||
float apPctMod; // Pct of AP that is added as Threat - default: 0.0f
|
||||
};
|
||||
|
||||
typedef std::map<uint32, SpellThreatEntry> SpellThreatMap;
|
||||
typedef std::unordered_map<uint32, SpellThreatEntry> SpellThreatMap;
|
||||
typedef std::map<uint32, float> SpellMixologyMap;
|
||||
|
||||
// coordinates for spells (accessed using SpellMgr functions)
|
||||
@@ -752,7 +752,7 @@ public:
|
||||
void LoadSpellGroupStackRules();
|
||||
void LoadSpellProcEvents();
|
||||
void LoadSpellProcs();
|
||||
void LoadSpellBonusess();
|
||||
void LoadSpellBonuses();
|
||||
void LoadSpellThreats();
|
||||
void LoadSpellMixology();
|
||||
void LoadSkillLineAbilityMap();
|
||||
|
||||
@@ -1662,7 +1662,7 @@ void World::SetInitialWorldSettings()
|
||||
sSpellMgr->LoadSpellProcs();
|
||||
|
||||
LOG_INFO("server.loading", "Loading Spell Bonus Data...");
|
||||
sSpellMgr->LoadSpellBonusess();
|
||||
sSpellMgr->LoadSpellBonuses();
|
||||
|
||||
LOG_INFO("server.loading", "Loading Aggro Spells Definitions...");
|
||||
sSpellMgr->LoadSpellThreats();
|
||||
|
||||
@@ -872,7 +872,7 @@ public:
|
||||
static bool HandleReloadSpellBonusesCommand(ChatHandler* handler)
|
||||
{
|
||||
LOG_INFO("server.loading", "Re-Loading Spell Bonus Data...");
|
||||
sSpellMgr->LoadSpellBonusess();
|
||||
sSpellMgr->LoadSpellBonuses();
|
||||
handler->SendGlobalGMSysMessage("DB table `spell_bonus_data` (spell damage/healing coefficients) reloaded.");
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -46,7 +46,7 @@ enum Spells
|
||||
|
||||
// ***** Main Phase 2 ******
|
||||
//Body spells
|
||||
//SPELL_CARAPACE_CTHUN = 26156 //Was removed from client dbcs
|
||||
SPELL_CARAPACE_CTHUN = 26156, // Server-side
|
||||
SPELL_TRANSFORM = 26232,
|
||||
SPELL_PURPLE_COLORATION = 22581, //Probably not the right spell but looks similar
|
||||
|
||||
@@ -69,7 +69,12 @@ enum Spells
|
||||
|
||||
// Tentacles
|
||||
SPELL_SUBMERGE_VISUAL = 26234,
|
||||
SPELL_BIRTH = 26262
|
||||
SPELL_BIRTH = 26262,
|
||||
|
||||
// Areatriggers
|
||||
SPELL_SPIT_OUT = 25383,
|
||||
SPELL_EXIT_STOMACH = 26221,
|
||||
SPELL_RUBBLE_ROCKY = 26271
|
||||
};
|
||||
|
||||
enum Actions
|
||||
@@ -77,12 +82,24 @@ enum Actions
|
||||
ACTION_FLESH_TENTACLE_KILLED = 1,
|
||||
|
||||
ACTION_SPAWN_EYE_TENTACLES = 1,
|
||||
|
||||
ACTION_START_PHASE_TWO = 1,
|
||||
};
|
||||
|
||||
enum TaskGroups
|
||||
{
|
||||
GROUP_BEAM_PHASE = 1
|
||||
};
|
||||
|
||||
enum Phases
|
||||
{
|
||||
PHASE_BODY = 2
|
||||
};
|
||||
|
||||
enum Misc
|
||||
{
|
||||
MAX_TENTACLE_GROUPS = 5,
|
||||
GROUP_BEAM_PHASE = 1
|
||||
NPC_TRIGGER = 15384,
|
||||
};
|
||||
|
||||
enum Yells
|
||||
@@ -128,7 +145,7 @@ const Position KickPos = { -8545.0f, 1984.0f, -96.0f, 0.0f};
|
||||
|
||||
struct boss_eye_of_cthun : public BossAI
|
||||
{
|
||||
boss_eye_of_cthun(Creature* creature) : BossAI(creature, DATA_CTHUN), _summons(creature)
|
||||
boss_eye_of_cthun(Creature* creature) : BossAI(creature, DATA_CTHUN)
|
||||
{
|
||||
SetCombatMovement(false);
|
||||
}
|
||||
@@ -143,8 +160,6 @@ struct boss_eye_of_cthun : public BossAI
|
||||
_eyeTentacleCounter = 0;
|
||||
|
||||
//Reset flags
|
||||
me->RemoveAurasDueToSpell(SPELL_RED_COLORATION);
|
||||
me->RemoveAurasDueToSpell(SPELL_FREEZE_ANIM);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetVisible(true);
|
||||
|
||||
@@ -156,19 +171,23 @@ struct boss_eye_of_cthun : public BossAI
|
||||
if (pPortal)
|
||||
pPortal->SetReactState(REACT_PASSIVE);
|
||||
|
||||
_summons.DespawnAll();
|
||||
_scheduler.CancelAll();
|
||||
|
||||
BossAI::Reset();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override { }
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
{
|
||||
if (Creature* cthun = instance->GetCreature(DATA_CTHUN))
|
||||
{
|
||||
cthun->AI()->DoAction(ACTION_START_PHASE_TWO);
|
||||
}
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) override
|
||||
{
|
||||
DoZoneInCombat();
|
||||
ScheduleTasks();
|
||||
instance->SetData(DATA_CTHUN_PHASE, PHASE_EYE_GREEN_BEAM);
|
||||
BossAI::EnterCombat(who);
|
||||
}
|
||||
|
||||
@@ -294,39 +313,12 @@ struct boss_eye_of_cthun : public BossAI
|
||||
});
|
||||
}
|
||||
|
||||
void JustSummoned(Creature* summon) override
|
||||
{
|
||||
_summons.Summon(summon);
|
||||
summon->SetInCombatWithZone();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
//Check if we have a target
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
switch (instance->GetData(DATA_CTHUN_PHASE))
|
||||
{
|
||||
//Transition phase
|
||||
case PHASE_CTHUN_TRANSITION:
|
||||
//Remove any target
|
||||
me->SetTarget();
|
||||
me->SetHealth(0);
|
||||
me->SetVisible(false);
|
||||
break;
|
||||
|
||||
//Dead phase
|
||||
case PHASE_CTHUN_DONE:
|
||||
if (Creature* pPortal = me->FindNearestCreature(NPC_CTHUN_PORTAL, 10))
|
||||
{
|
||||
pPortal->DespawnOrUnsummon();
|
||||
}
|
||||
|
||||
me->DespawnOrUnsummon();
|
||||
break;
|
||||
}
|
||||
|
||||
_scheduler.Update(diff);
|
||||
}
|
||||
|
||||
@@ -352,15 +344,18 @@ struct boss_eye_of_cthun : public BossAI
|
||||
//Remove Target field
|
||||
me->SetTarget();
|
||||
|
||||
//Death animation/respawning;
|
||||
instance->SetData(DATA_CTHUN_PHASE, PHASE_CTHUN_TRANSITION);
|
||||
|
||||
me->SetHealth(0);
|
||||
damage = 0;
|
||||
|
||||
me->InterruptNonMeleeSpells(true);
|
||||
me->RemoveAllAuras();
|
||||
_scheduler.CancelAll();
|
||||
|
||||
if (Creature* cthun = instance->GetCreature(DATA_CTHUN))
|
||||
{
|
||||
cthun->AI()->DoAction(ACTION_START_PHASE_TWO);
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case PHASE_CTHUN_DONE:
|
||||
@@ -382,7 +377,6 @@ private:
|
||||
|
||||
uint32 _eyeTentacleCounter;
|
||||
TaskScheduler _scheduler;
|
||||
SummonList _summons;
|
||||
};
|
||||
|
||||
struct boss_cthun : public BossAI
|
||||
@@ -392,60 +386,19 @@ struct boss_cthun : public BossAI
|
||||
SetCombatMovement(false);
|
||||
}
|
||||
|
||||
//Out of combat whisper timer
|
||||
uint32 WisperTimer;
|
||||
|
||||
//Global variables
|
||||
uint32 PhaseTimer;
|
||||
|
||||
//-------------------
|
||||
|
||||
//Phase transition
|
||||
ObjectGuid HoldPlayer;
|
||||
|
||||
//Body Phase
|
||||
uint32 EyeTentacleTimer;
|
||||
uint8 FleshTentaclesKilled;
|
||||
uint32 GiantClawTentacleTimer;
|
||||
uint32 GiantEyeTentacleTimer;
|
||||
uint32 StomachAcidTimer;
|
||||
uint32 StomachEnterTimer;
|
||||
uint32 StomachEnterVisTimer;
|
||||
ObjectGuid StomachEnterTarget;
|
||||
|
||||
//Stomach map, bool = true then in stomach
|
||||
std::unordered_map<ObjectGuid, bool> Stomach_Map;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
//One random wisper every 90 - 300 seconds
|
||||
WisperTimer = 90000;
|
||||
|
||||
//Phase information
|
||||
PhaseTimer = 10000; //Emerge in 10 seconds
|
||||
|
||||
//No hold player for transition
|
||||
HoldPlayer.Clear();
|
||||
|
||||
//Body Phase
|
||||
EyeTentacleTimer = 30000;
|
||||
FleshTentaclesKilled = 0;
|
||||
GiantClawTentacleTimer = 15000; //15 seconds into body phase (1 min repeat)
|
||||
GiantEyeTentacleTimer = 45000; //15 seconds into body phase (1 min repeat)
|
||||
StomachAcidTimer = 4000; //Every 4 seconds
|
||||
StomachEnterTimer = 10000; //Every 10 seconds
|
||||
StomachEnterVisTimer = 0; //Always 3.5 seconds after Stomach Enter Timer
|
||||
StomachEnterTarget.Clear(); //Target to be teleported to stomach
|
||||
|
||||
//Clear players in stomach and outside
|
||||
Stomach_Map.clear();
|
||||
_fleshTentaclesKilled = 0;
|
||||
|
||||
//Reset flags
|
||||
me->RemoveAurasDueToSpell(SPELL_TRANSFORM);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetVisible(false);
|
||||
|
||||
instance->SetData(DATA_CTHUN_PHASE, PHASE_NOT_STARTED);
|
||||
BossAI::Reset();
|
||||
_scheduler.CancelAll();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -453,39 +406,80 @@ struct boss_cthun : public BossAI
|
||||
DoZoneInCombat();
|
||||
}
|
||||
|
||||
Unit* SelectRandomNotStomach()
|
||||
void DoAction(int32 actionId) override
|
||||
{
|
||||
if (Stomach_Map.empty())
|
||||
return nullptr;
|
||||
|
||||
std::unordered_map<ObjectGuid, bool>::const_iterator i = Stomach_Map.begin();
|
||||
|
||||
std::list<Unit*> temp;
|
||||
std::list<Unit*>::const_iterator j;
|
||||
|
||||
//Get all players in map
|
||||
while (i != Stomach_Map.end())
|
||||
if (actionId == ACTION_START_PHASE_TWO)
|
||||
{
|
||||
//Check for valid player
|
||||
Unit* unit = ObjectAccessor::GetUnit(*me, i->first);
|
||||
// Animation only plays if Cthun already has this aura...
|
||||
DoCastSelf(SPELL_TRANSFORM);
|
||||
|
||||
//Only units out of stomach
|
||||
if (unit && !i->second)
|
||||
temp.push_back(unit);
|
||||
me->m_Events.AddEventAtOffset([this]()
|
||||
{
|
||||
DoCastSelf(SPELL_TRANSFORM);
|
||||
DoCastSelf(SPELL_CARAPACE_CTHUN, true);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
DoZoneInCombat();
|
||||
}, 500ms);
|
||||
|
||||
++i;
|
||||
//Spawn flesh tentacle
|
||||
for (uint8 i = 0; i < 2; i++)
|
||||
{
|
||||
me->SummonCreature(NPC_FLESH_TENTACLE, FleshTentaclePos[i], TEMPSUMMON_CORPSE_DESPAWN);
|
||||
}
|
||||
|
||||
ScheduleTasks();
|
||||
}
|
||||
}
|
||||
|
||||
if (temp.empty())
|
||||
return nullptr;
|
||||
void ScheduleTasks()
|
||||
{
|
||||
_scheduler.Schedule(13800ms, [this](TaskContext context)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, -SPELL_DIGESTIVE_ACID))
|
||||
{
|
||||
target->CastSpell(target, SPELL_MOUTH_TENTACLE, true);
|
||||
|
||||
j = temp.begin();
|
||||
target->m_Events.AddEventAtOffset([target, this]()
|
||||
{
|
||||
DoTeleportPlayer(target, STOMACH_X, STOMACH_Y, STOMACH_Z, STOMACH_O);
|
||||
target->RemoveAurasDueToSpell(SPELL_MIND_FLAY);
|
||||
//Cast digestive acid on them
|
||||
DoCast(target, SPELL_DIGESTIVE_ACID, true);
|
||||
}, 3800ms);
|
||||
}
|
||||
|
||||
//Get random but only if we have more than one unit on threat list
|
||||
if (temp.size() > 1)
|
||||
advance(j, rand() % (temp.size() - 1));
|
||||
context.Repeat();
|
||||
}).Schedule(30s, [this](TaskContext context)
|
||||
{
|
||||
if (Creature* eye = instance->GetCreature(DATA_EYE_OF_CTHUN))
|
||||
{
|
||||
eye->AI()->DoAction(ACTION_SPAWN_EYE_TENTACLES);
|
||||
}
|
||||
|
||||
return (*j);
|
||||
context.Repeat(30s);
|
||||
}).Schedule(15s, [this](TaskContext context)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, -SPELL_DIGESTIVE_ACID))
|
||||
{
|
||||
//Spawn claw tentacle on the random target
|
||||
if (Creature* spawned = me->SummonCreature(NPC_GIANT_CLAW_TENTACLE, *target, TEMPSUMMON_CORPSE_DESPAWN, 500))
|
||||
if (spawned->AI())
|
||||
spawned->AI()->AttackStart(target);
|
||||
}
|
||||
|
||||
context.Repeat(1min);
|
||||
}).Schedule(15s, [this](TaskContext context)
|
||||
{
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 0.0f, true, -SPELL_DIGESTIVE_ACID))
|
||||
{
|
||||
//Spawn claw tentacle on the random target
|
||||
if (Creature* spawned = me->SummonCreature(NPC_GIANT_EYE_TENTACLE, *target, TEMPSUMMON_CORPSE_DESPAWN, 500))
|
||||
if (spawned->AI())
|
||||
spawned->AI()->AttackStart(target);
|
||||
}
|
||||
|
||||
context.Repeat(1min);
|
||||
});
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -523,277 +517,16 @@ struct boss_cthun : public BossAI
|
||||
|
||||
me->SetTarget();
|
||||
|
||||
uint32 currentPhase = instance->GetData(DATA_CTHUN_PHASE);
|
||||
if (currentPhase == PHASE_CTHUN_STOMACH || currentPhase == PHASE_CTHUN_WEAK)
|
||||
{
|
||||
// EyeTentacleTimer
|
||||
if (EyeTentacleTimer <= diff)
|
||||
{
|
||||
if (Creature* eye = instance->GetCreature(DATA_EYE_OF_CTHUN))
|
||||
{
|
||||
eye->AI()->DoAction(ACTION_SPAWN_EYE_TENTACLES);
|
||||
}
|
||||
|
||||
EyeTentacleTimer = 30000; // every 30sec in phase 2
|
||||
}
|
||||
else EyeTentacleTimer -= diff;
|
||||
}
|
||||
|
||||
switch (currentPhase)
|
||||
{
|
||||
//Transition phase
|
||||
case PHASE_CTHUN_TRANSITION:
|
||||
//PhaseTimer
|
||||
if (PhaseTimer <= diff)
|
||||
{
|
||||
//Switch
|
||||
instance->SetData(DATA_CTHUN_PHASE, PHASE_CTHUN_STOMACH);
|
||||
|
||||
//Switch to c'thun model
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
DoCast(me, SPELL_TRANSFORM, false);
|
||||
me->SetFullHealth();
|
||||
|
||||
me->SetVisible(true);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
//Emerging phase
|
||||
//AttackStart(ObjectAccessor::GetUnit(*me, HoldpPlayer));
|
||||
DoZoneInCombat();
|
||||
|
||||
//Place all units in threat list on outside of stomach
|
||||
Stomach_Map.clear();
|
||||
|
||||
for (std::list<HostileReference*>::const_iterator i = me->GetThreatMgr().getThreatList().begin(); i != me->GetThreatMgr().getThreatList().end(); ++i)
|
||||
Stomach_Map[(*i)->getUnitGuid()] = false; //Outside stomach
|
||||
|
||||
//Spawn 2 flesh tentacles
|
||||
FleshTentaclesKilled = 0;
|
||||
|
||||
//Spawn flesh tentacle
|
||||
for (uint8 i = 0; i < 2; i++)
|
||||
{
|
||||
Creature* spawned = me->SummonCreature(NPC_FLESH_TENTACLE, FleshTentaclePos[i], TEMPSUMMON_CORPSE_DESPAWN);
|
||||
if (!spawned)
|
||||
++FleshTentaclesKilled;
|
||||
}
|
||||
|
||||
PhaseTimer = 0;
|
||||
}
|
||||
else PhaseTimer -= diff;
|
||||
|
||||
break;
|
||||
|
||||
//Body Phase
|
||||
case PHASE_CTHUN_STOMACH:
|
||||
//Remove Target field
|
||||
me->SetTarget();
|
||||
|
||||
//Weaken
|
||||
if (FleshTentaclesKilled > 1)
|
||||
{
|
||||
instance->SetData(DATA_CTHUN_PHASE, PHASE_CTHUN_WEAK);
|
||||
|
||||
Talk(EMOTE_WEAKENED);
|
||||
PhaseTimer = 45000;
|
||||
|
||||
DoCast(me, SPELL_PURPLE_COLORATION, true);
|
||||
|
||||
std::unordered_map<ObjectGuid, bool>::iterator i = Stomach_Map.begin();
|
||||
|
||||
//Kick all players out of stomach
|
||||
while (i != Stomach_Map.end())
|
||||
{
|
||||
//Check for valid player
|
||||
Unit* unit = ObjectAccessor::GetUnit(*me, i->first);
|
||||
|
||||
//Only move units in stomach
|
||||
if (unit && i->second)
|
||||
{
|
||||
//Teleport each player out
|
||||
DoTeleportPlayer(unit, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 10, float(rand() % 6));
|
||||
|
||||
//Cast knockback on them
|
||||
DoCast(unit, SPELL_EXIT_STOMACH_KNOCKBACK, true);
|
||||
|
||||
//Remove the acid debuff
|
||||
unit->RemoveAurasDueToSpell(SPELL_DIGESTIVE_ACID);
|
||||
|
||||
i->second = false;
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
//Stomach acid
|
||||
if (StomachAcidTimer <= diff)
|
||||
{
|
||||
//Apply aura to all players in stomach
|
||||
std::unordered_map<ObjectGuid, bool>::iterator i = Stomach_Map.begin();
|
||||
|
||||
while (i != Stomach_Map.end())
|
||||
{
|
||||
//Check for valid player
|
||||
Unit* unit = ObjectAccessor::GetUnit(*me, i->first);
|
||||
|
||||
//Only apply to units in stomach
|
||||
if (unit && i->second)
|
||||
{
|
||||
//Cast digestive acid on them
|
||||
DoCast(unit, SPELL_DIGESTIVE_ACID, true);
|
||||
|
||||
//Check if player should be kicked from stomach
|
||||
if (unit->IsWithinDist3d(&KickPos, 15.0f))
|
||||
{
|
||||
//Teleport each player out
|
||||
DoTeleportPlayer(unit, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 10, float(rand() % 6));
|
||||
|
||||
//Cast knockback on them
|
||||
DoCast(unit, SPELL_EXIT_STOMACH_KNOCKBACK, true);
|
||||
|
||||
//Remove the acid debuff
|
||||
unit->RemoveAurasDueToSpell(SPELL_DIGESTIVE_ACID);
|
||||
|
||||
i->second = false;
|
||||
}
|
||||
}
|
||||
++i;
|
||||
}
|
||||
|
||||
StomachAcidTimer = 4000;
|
||||
}
|
||||
else StomachAcidTimer -= diff;
|
||||
|
||||
//Stomach Enter Timer
|
||||
if (StomachEnterTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectRandomNotStomach())
|
||||
{
|
||||
//Set target in stomach
|
||||
Stomach_Map[target->GetGUID()] = true;
|
||||
target->InterruptNonMeleeSpells(false);
|
||||
target->CastSpell(target, SPELL_MOUTH_TENTACLE, true, nullptr, nullptr, me->GetGUID());
|
||||
StomachEnterTarget = target->GetGUID();
|
||||
StomachEnterVisTimer = 3800;
|
||||
}
|
||||
|
||||
StomachEnterTimer = 13800;
|
||||
}
|
||||
else StomachEnterTimer -= diff;
|
||||
|
||||
if (StomachEnterVisTimer && StomachEnterTarget)
|
||||
{
|
||||
if (StomachEnterVisTimer <= diff)
|
||||
{
|
||||
//Check for valid player
|
||||
Unit* unit = ObjectAccessor::GetUnit(*me, StomachEnterTarget);
|
||||
|
||||
if (unit)
|
||||
{
|
||||
DoTeleportPlayer(unit, STOMACH_X, STOMACH_Y, STOMACH_Z, STOMACH_O);
|
||||
}
|
||||
|
||||
StomachEnterTarget.Clear();
|
||||
StomachEnterVisTimer = 0;
|
||||
}
|
||||
else StomachEnterVisTimer -= diff;
|
||||
}
|
||||
|
||||
//GientClawTentacleTimer
|
||||
if (GiantClawTentacleTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectRandomNotStomach())
|
||||
{
|
||||
//Spawn claw tentacle on the random target
|
||||
if (Creature* spawned = me->SummonCreature(NPC_GIANT_CLAW_TENTACLE, *target, TEMPSUMMON_CORPSE_DESPAWN, 500))
|
||||
if (spawned->AI())
|
||||
spawned->AI()->AttackStart(target);
|
||||
}
|
||||
|
||||
//One giant claw tentacle every minute
|
||||
GiantClawTentacleTimer = 60000;
|
||||
}
|
||||
else GiantClawTentacleTimer -= diff;
|
||||
|
||||
//GiantEyeTentacleTimer
|
||||
if (GiantEyeTentacleTimer <= diff)
|
||||
{
|
||||
if (Unit* target = SelectRandomNotStomach())
|
||||
{
|
||||
//Spawn claw tentacle on the random target
|
||||
if (Creature* spawned = me->SummonCreature(NPC_GIANT_EYE_TENTACLE, *target, TEMPSUMMON_CORPSE_DESPAWN, 500))
|
||||
if (spawned->AI())
|
||||
spawned->AI()->AttackStart(target);
|
||||
}
|
||||
|
||||
//One giant eye tentacle every minute
|
||||
GiantEyeTentacleTimer = 60000;
|
||||
}
|
||||
else GiantEyeTentacleTimer -= diff;
|
||||
|
||||
break;
|
||||
|
||||
//Weakened state
|
||||
case PHASE_CTHUN_WEAK:
|
||||
//PhaseTimer
|
||||
if (PhaseTimer <= diff)
|
||||
{
|
||||
//Switch
|
||||
instance->SetData(DATA_CTHUN_PHASE, PHASE_CTHUN_STOMACH);
|
||||
|
||||
//Remove purple coloration
|
||||
me->RemoveAurasDueToSpell(SPELL_PURPLE_COLORATION);
|
||||
|
||||
//Spawn 2 flesh tentacles
|
||||
FleshTentaclesKilled = 0;
|
||||
|
||||
//Spawn flesh tentacle
|
||||
for (uint8 i = 0; i < 2; i++)
|
||||
{
|
||||
Creature* spawned = me->SummonCreature(NPC_FLESH_TENTACLE, FleshTentaclePos[i], TEMPSUMMON_CORPSE_DESPAWN);
|
||||
if (!spawned)
|
||||
++FleshTentaclesKilled;
|
||||
}
|
||||
|
||||
PhaseTimer = 0;
|
||||
}
|
||||
else PhaseTimer -= diff;
|
||||
|
||||
break;
|
||||
}
|
||||
_scheduler.Update(diff);
|
||||
}
|
||||
|
||||
void JustDied(Unit* killer) override
|
||||
{
|
||||
instance->SetData(DATA_CTHUN_PHASE, PHASE_CTHUN_DONE);
|
||||
BossAI::JustDied(killer);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
|
||||
{
|
||||
switch (instance->GetData(DATA_CTHUN_PHASE))
|
||||
if (Creature* pPortal = me->FindNearestCreature(NPC_CTHUN_PORTAL, 10.0f))
|
||||
{
|
||||
case PHASE_CTHUN_STOMACH:
|
||||
//Not weakened so reduce damage by 99%
|
||||
damage /= 100;
|
||||
if (damage == 0)
|
||||
damage = 1;
|
||||
|
||||
//Prevent death in non-weakened state
|
||||
if (damage >= me->GetHealth())
|
||||
damage = 0;
|
||||
|
||||
return;
|
||||
|
||||
case PHASE_CTHUN_WEAK:
|
||||
//Weakened - takes normal damage
|
||||
return;
|
||||
|
||||
default:
|
||||
damage = 0;
|
||||
break;
|
||||
pPortal->DespawnOrUnsummon();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -801,9 +534,42 @@ struct boss_cthun : public BossAI
|
||||
{
|
||||
if (creature->GetEntry() == NPC_FLESH_TENTACLE)
|
||||
{
|
||||
++FleshTentaclesKilled;
|
||||
++_fleshTentaclesKilled;
|
||||
|
||||
if (_fleshTentaclesKilled > 1)
|
||||
{
|
||||
_scheduler.CancelAll();
|
||||
|
||||
_fleshTentaclesKilled = 0;
|
||||
|
||||
Talk(EMOTE_WEAKENED);
|
||||
|
||||
DoCast(me, SPELL_PURPLE_COLORATION, true);
|
||||
me->RemoveAurasDueToSpell(SPELL_CARAPACE_CTHUN);
|
||||
|
||||
_scheduler.Schedule(45s, [this](TaskContext /*context*/)
|
||||
{
|
||||
ScheduleTasks();
|
||||
//Remove purple coloration
|
||||
me->RemoveAurasDueToSpell(SPELL_PURPLE_COLORATION);
|
||||
|
||||
//Spawn flesh tentacle
|
||||
for (uint8 i = 0; i < 2; i++)
|
||||
{
|
||||
me->SummonCreature(NPC_FLESH_TENTACLE, FleshTentaclePos[i], TEMPSUMMON_CORPSE_DESPAWN);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private:
|
||||
//Out of combat whisper timer
|
||||
uint32 WisperTimer;
|
||||
|
||||
//Body Phase
|
||||
uint8 _fleshTentaclesKilled;
|
||||
TaskScheduler _scheduler;
|
||||
};
|
||||
|
||||
struct npc_eye_tentacle : public ScriptedAI
|
||||
@@ -968,6 +734,8 @@ struct npc_giant_claw_tentacle : public ScriptedAI
|
||||
DoCastSelf(SPELL_THRASH);
|
||||
context.Repeat(10s);
|
||||
});
|
||||
|
||||
ScheduleMeleeCheck();
|
||||
}
|
||||
|
||||
void ScheduleMeleeCheck()
|
||||
@@ -1113,6 +881,65 @@ private:
|
||||
ObjectGuid _portalGUID;
|
||||
};
|
||||
|
||||
// 4033 - At C'thun's stomach
|
||||
class at_cthun_stomach_exit : public AreaTriggerScript
|
||||
{
|
||||
public:
|
||||
at_cthun_stomach_exit() : AreaTriggerScript("at_cthun_stomach_exit") { }
|
||||
|
||||
bool OnTrigger(Player* player, AreaTrigger const* /*at*/) override
|
||||
{
|
||||
if (InstanceScript* instance = player->GetInstanceScript())
|
||||
{
|
||||
if (Creature* cthun = instance->GetCreature(DATA_CTHUN))
|
||||
{
|
||||
player->CastSpell(player, SPELL_RUBBLE_ROCKY, true);
|
||||
|
||||
player->m_Events.AddEventAtOffset([player]()
|
||||
{
|
||||
if (Creature* trigger = player->FindNearestCreature(NPC_TRIGGER, 15.0f))
|
||||
{
|
||||
trigger->CastSpell(player, SPELL_EXIT_STOMACH, true);
|
||||
}
|
||||
}, 3s);
|
||||
|
||||
player->m_Events.AddEventAtOffset([player]()
|
||||
{
|
||||
player->JumpTo(0.0f, 80.0f, false);
|
||||
}, 5s);
|
||||
|
||||
player->m_Events.AddEventAtOffset([player, cthun]()
|
||||
{
|
||||
if (cthun)
|
||||
{
|
||||
player->NearTeleportTo(cthun->GetPositionX(), cthun->GetPositionY(), cthun->GetPositionZ() + 10, float(rand32() % 6));
|
||||
}
|
||||
|
||||
player->RemoveAurasDueToSpell(SPELL_DIGESTIVE_ACID);
|
||||
}, 6s);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class at_cthun_center : public AreaTriggerScript
|
||||
{
|
||||
public:
|
||||
at_cthun_center() : AreaTriggerScript("at_cthun_center") { }
|
||||
|
||||
bool OnTrigger(Player* player, AreaTrigger const* /*at*/) override
|
||||
{
|
||||
if (Creature* trigger = player->FindNearestCreature(NPC_TRIGGER, 15.0f))
|
||||
{
|
||||
trigger->CastSpell(player, SPELL_SPIT_OUT, true);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_cthun()
|
||||
{
|
||||
RegisterTempleOfAhnQirajCreatureAI(boss_eye_of_cthun);
|
||||
@@ -1121,4 +948,6 @@ void AddSC_boss_cthun()
|
||||
RegisterTempleOfAhnQirajCreatureAI(npc_claw_tentacle);
|
||||
RegisterTempleOfAhnQirajCreatureAI(npc_giant_claw_tentacle);
|
||||
RegisterTempleOfAhnQirajCreatureAI(npc_giant_eye_tentacle);
|
||||
new at_cthun_stomach_exit();
|
||||
new at_cthun_center();
|
||||
}
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
ObjectData const creatureData[] =
|
||||
{
|
||||
{ NPC_SARTURA, DATA_SARTURA },
|
||||
{ NPC_CTHUN, DATA_CTHUN },
|
||||
{ NPC_EYE_OF_CTHUN, DATA_EYE_OF_CTHUN },
|
||||
{ NPC_OURO_SPAWNER, DATA_OURO_SPAWNER },
|
||||
{ NPC_MASTERS_EYE, DATA_MASTERS_EYE },
|
||||
|
||||
@@ -569,7 +569,7 @@ class spell_dru_lifebloom : public AuraScript
|
||||
|
||||
if (Unit* caster = GetCaster())
|
||||
{
|
||||
healAmount = caster->SpellHealingBonusDone(GetTarget(), finalHeal, healAmount, HEAL, 0.0f, stack);
|
||||
healAmount = caster->SpellHealingBonusDone(GetTarget(), finalHeal, healAmount, HEAL, aurEff->GetEffIndex(), 0.0f, stack);
|
||||
healAmount = GetTarget()->SpellHealingBonusTaken(caster, finalHeal, healAmount, HEAL, stack);
|
||||
// restore mana
|
||||
int32 returnmana = (GetSpellInfo()->ManaCostPercentage * caster->GetCreateMana() / 100) * stack / 2;
|
||||
@@ -590,7 +590,7 @@ class spell_dru_lifebloom : public AuraScript
|
||||
if (caster)
|
||||
{
|
||||
// healing with bonus
|
||||
healAmount = caster->SpellHealingBonusDone(target, finalHeal, healAmount, HEAL, 0.0f, dispelInfo->GetRemovedCharges());
|
||||
healAmount = caster->SpellHealingBonusDone(target, finalHeal, healAmount, HEAL, EFFECT_1, 0.0f, dispelInfo->GetRemovedCharges());
|
||||
healAmount = target->SpellHealingBonusTaken(caster, finalHeal, healAmount, HEAL, dispelInfo->GetRemovedCharges());
|
||||
|
||||
// mana amount
|
||||
|
||||
@@ -525,12 +525,12 @@ class spell_sha_earth_shield : public AuraScript
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_EARTH_SHIELD_HEAL, SPELL_SHAMAN_GLYPH_OF_EARTH_SHIELD });
|
||||
}
|
||||
|
||||
void CalculateAmount(AuraEffect const* /*aurEff*/, int32& amount, bool& /*canBeRecalculated*/)
|
||||
void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
if (Unit* caster = GetCaster())
|
||||
{
|
||||
int32 baseAmount = amount;
|
||||
amount = caster->SpellHealingBonusDone(GetUnitOwner(), GetSpellInfo(), amount, HEAL);
|
||||
amount = caster->SpellHealingBonusDone(GetUnitOwner(), GetSpellInfo(), amount, HEAL, aurEff->GetEffIndex());
|
||||
// xinef: taken should be calculated at every heal
|
||||
//amount = GetUnitOwner()->SpellHealingBonusTaken(caster, GetSpellInfo(), amount, HEAL);
|
||||
|
||||
@@ -782,7 +782,7 @@ class spell_sha_healing_stream_totem : public SpellScript
|
||||
return ValidateSpellInfo({ SPELL_SHAMAN_GLYPH_OF_HEALING_STREAM_TOTEM, SPELL_SHAMAN_TOTEM_HEALING_STREAM_HEAL });
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
void HandleDummy(SpellEffIndex effIndex)
|
||||
{
|
||||
int32 damage = GetEffectValue();
|
||||
SpellInfo const* triggeringSpell = GetTriggeringSpell();
|
||||
@@ -792,7 +792,7 @@ class spell_sha_healing_stream_totem : public SpellScript
|
||||
if (Unit* owner = caster->GetOwner())
|
||||
{
|
||||
if (triggeringSpell)
|
||||
damage = int32(owner->SpellHealingBonusDone(target, triggeringSpell, damage, HEAL));
|
||||
damage = int32(owner->SpellHealingBonusDone(target, triggeringSpell, damage, HEAL, effIndex));
|
||||
|
||||
// Restorative Totems
|
||||
if (AuraEffect* dummy = owner->GetAuraEffect(SPELL_AURA_DUMMY, SPELLFAMILY_SHAMAN, SHAMAN_ICON_ID_RESTORATIVE_TOTEMS, 1))
|
||||
|
||||
@@ -456,14 +456,14 @@ class spell_warr_bloodthirst : public SpellScript
|
||||
return ValidateSpellInfo({ SPELL_WARRIOR_BLOODTHIRST });
|
||||
}
|
||||
|
||||
void HandleDamage(SpellEffIndex /*effIndex*/)
|
||||
void HandleDamage(SpellEffIndex effIndex)
|
||||
{
|
||||
int32 damage = GetEffectValue();
|
||||
ApplyPct(damage, GetCaster()->GetTotalAttackPowerValue(BASE_ATTACK));
|
||||
|
||||
if (Unit* target = GetHitUnit())
|
||||
{
|
||||
damage = GetCaster()->SpellDamageBonusDone(target, GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE);
|
||||
damage = GetCaster()->SpellDamageBonusDone(target, GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE, effIndex);
|
||||
damage = target->SpellDamageBonusTaken(GetCaster(), GetSpellInfo(), uint32(damage), SPELL_DIRECT_DAMAGE);
|
||||
}
|
||||
SetHitDamage(damage);
|
||||
|
||||
Reference in New Issue
Block a user