From be256e7a78e28ea2599ed83fb029af4bdffd1338 Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Wed, 24 Jul 2024 14:00:07 +0000 Subject: [PATCH 01/33] fix(scripts/HyjalSummit): Make Doomfire Spirit move away from Archimonde at first (#19467) Update boss_archimonde.cpp --- .../CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp index c24a63ec1..5988514aa 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp @@ -400,7 +400,7 @@ struct boss_archimonde : public BossAI float angle = 2 * M_PI * rand() / RAND_MAX; float x = me->GetPositionX() + DOOMFIRE_OFFSET * cos(angle); float y = me->GetPositionY() + DOOMFIRE_OFFSET * sin(angle); - Position spiritPosition = Position(x, y, me->GetPositionZ()); + Position spiritPosition = Position(x, y, me->GetPositionZ(), angle); Position doomfirePosition = Position(x, y, me->GetPositionZ()); if (Creature* doomfireSpirit = me->SummonCreature(CREATURE_DOOMFIRE_SPIRIT, spiritPosition, TEMPSUMMON_TIMED_DESPAWN, 27000)) { From 7c68ba51e714355a1a8a1629ee8a24fdc09fe738 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Thu, 25 Jul 2024 23:40:54 +0200 Subject: [PATCH 02/33] fix(Scripts/Commands): serv info (#19478) --- src/server/scripts/Commands/cs_server.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Commands/cs_server.cpp b/src/server/scripts/Commands/cs_server.cpp index 5a45f3245..dc9ee029f 100644 --- a/src/server/scripts/Commands/cs_server.cpp +++ b/src/server/scripts/Commands/cs_server.cpp @@ -271,7 +271,7 @@ public: handler->PSendSysMessage("Connection peak: {}.", connPeak); handler->PSendSysMessage(LANG_UPTIME, secsToTimeString(GameTime::GetUptime().count())); - handler->PSendSysMessage("Update time diff: {}ms. Last %d diffs summary:", sWorldUpdateTime.GetLastUpdateTime(), sWorldUpdateTime.GetDatasetSize()); + handler->PSendSysMessage("Update time diff: {}ms. Last {} diffs summary:", sWorldUpdateTime.GetLastUpdateTime(), sWorldUpdateTime.GetDatasetSize()); handler->PSendSysMessage("|- Mean: {}ms", sWorldUpdateTime.GetAverageUpdateTime()); handler->PSendSysMessage("|- Median: {}ms", sWorldUpdateTime.GetPercentile(50)); handler->PSendSysMessage("|- Percentiles (95, 99, max): {}ms, {}ms, {}ms", From 6c97e45e87cfec63364d9521833f9bcb7bf39f0a Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Thu, 25 Jul 2024 19:50:15 -0400 Subject: [PATCH 03/33] fix(Scripts/HyjalSummit): Adjust Doomfire Spirit movement logic. (#19469) * Init. Co-Authored-By: Tereneckla * Simplify code, add comment. * Adjust scenario in which distance fails at all ranges. * Remove unused variable. * Account for deviation with distance check. Co-Authored-By: Tereneckla * f Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> * Rewrite with initial teleport. * Whitespace? * Update function type. * Drop Doomfire spawn timer. Verified with le sniff. Teehee. --------- Co-authored-by: Tereneckla Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> --- .../BattleForMountHyjal/boss_archimonde.cpp | 37 ++++++++++--------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp index 5988514aa..e1399873d 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp @@ -145,32 +145,35 @@ struct npc_doomfire_spirit : public ScriptedAI { npc_doomfire_spirit(Creature* creature) : ScriptedAI(creature){ } - float const turnConstant = 0.785402f; - float fAngle = urand(0, M_PI * 2); + float const turnConstant = 0.785402f; // 45 degree turns, verified with sniffs void Reset() override { - scheduler.CancelAll(); - ScheduleTimedEvent(0s, [&] { - float nextOrientation = Position::NormalizeOrientation(me->GetOrientation() + irand(-1, 1) * turnConstant); - Position pos = GetFirstRandomAngleCollisionPosition(8.f, nextOrientation); // both orientation and distance verified with sniffs - me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), nextOrientation); - }, 1600ms); + ScheduleUniqueTimedEvent(10ms, [&] { + TryTeleportInDirection(1.f, M_PI, 1.f, true); //turns around and teleports 1 unit on spawn, assuming same logic as later teleports applies - fAngle = urand(0, M_PI * 2); + ScheduleTimedEvent(10ms, [&] { + float angle = irand(-1, 1) * turnConstant; + TryTeleportInDirection(8.f, angle, 2.f, false); + }, 1600ms); + },1); } - Position GetFirstRandomAngleCollisionPosition(float dist, float angle) + void TryTeleportInDirection(float dist, float angle, float step, bool alwaysturn) { Position pos; - for (uint32 i = 0; i < 10; ++i) + while (dist >= 0) { pos = me->WorldObject::GetFirstCollisionPosition(dist, angle); - if (me->GetDistance(pos) > dist * 0.8f) // if at least 80% distance, good enough + if (fabsf(dist - me->GetExactDist2d(pos)) < 0.001) // Account for small deviation break; - angle += (M_PI / 5); // else try slightly different angle + dist -= step; // Distance drops with each unsuccessful attempt } - return pos; + + if (dist || alwaysturn) + me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), Position::NormalizeOrientation(me->GetOrientation() + angle)); + else // Orientation does not change if not moving, verified with sniffs + me->NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), me->GetOrientation()); } void UpdateAI(uint32 diff) override @@ -268,10 +271,10 @@ struct boss_archimonde : public BossAI Talk(SAY_AIR_BURST); DoCastRandomTarget(SPELL_AIR_BURST); }, 25s, 40s); - ScheduleTimedEvent(25s, 35s, [&] + ScheduleTimedEvent(8s, [&] { DoCastDoomFire(); - }, 20s); + }, 8s); ScheduleTimedEvent(25s, 35s, [&] { DoCastRandomTarget(SPELL_GRIP_OF_THE_LEGION); @@ -400,7 +403,7 @@ struct boss_archimonde : public BossAI float angle = 2 * M_PI * rand() / RAND_MAX; float x = me->GetPositionX() + DOOMFIRE_OFFSET * cos(angle); float y = me->GetPositionY() + DOOMFIRE_OFFSET * sin(angle); - Position spiritPosition = Position(x, y, me->GetPositionZ(), angle); + Position spiritPosition = Position(x, y, me->GetPositionZ(), Position::NormalizeOrientation(angle + M_PI)); //spirit faces archimonde on spawn Position doomfirePosition = Position(x, y, me->GetPositionZ()); if (Creature* doomfireSpirit = me->SummonCreature(CREATURE_DOOMFIRE_SPIRIT, spiritPosition, TEMPSUMMON_TIMED_DESPAWN, 27000)) { From bc23a7a3d861e9fe82224b3907e98fdbcc96baed Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Thu, 25 Jul 2024 20:51:50 -0300 Subject: [PATCH 04/33] fix(DB/Gameobject): Pool Ragveil and Flamecap together in Zangarmarsh (#19470) ragveil-flame-cap --- .../rev_1721773806947945700.sql | 679 ++++++++++++++++++ 1 file changed, 679 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1721773806947945700.sql diff --git a/data/sql/updates/pending_db_world/rev_1721773806947945700.sql b/data/sql/updates/pending_db_world/rev_1721773806947945700.sql new file mode 100644 index 000000000..81e782b8d --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1721773806947945700.sql @@ -0,0 +1,679 @@ +-- Delete all pools +DELETE FROM `pool_template` WHERE `entry` IN (8085, 8086, 8087) AND `description` LIKE 'Zangarmarsh%'; +DELETE FROM `pool_gameobject` WHERE `guid` IN (21,1801,2730,16819,16820,16824,16825,16828,16829,16831,16836,16837,16839,16840,16841,16843,16847,16848,16850,16851,17172,17177,17178,17185,17665,17779,17844,20364,20944,21553,21554,22442,23956,23957,23959,23961,23962,23963,23964,23965,23968,23969,28313,28316,30408,30417,30544,32744,32824,33835,40534,40535,40536,40537,40538,40539,40578,40583,40584,40586,40587,40588,40590,40592,40593,40594,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40607,40608,42178,42215,42217,42218,42226,42227,42236,42237,42240,42242,42245,42246,42247,42296,42346,42430,61290,61291,61304,61305,61312,61313,61315,61316,64802,64804,64805,64806,64807,64808,64810,64846,64847,64848,64849,64850,64851,64852,85916,85917,85918,85919,85920,87045,87125,87126,87127,87128,87398,87399,100198,101758,101759) AND `pool_entry` IN (8085, 8086, 8087) AND `description` LIKE '%Zangarmarsh%'; + +-- Turn all into Ragveil +UPDATE `gameobject` SET `id` = 183043 WHERE `guid` IN (21,1801,2730,16819,16820,16824,16825,16828,16829,16831,16836,16837,16839,16840,16841,16843,16847,16848,16850,16851,17172,17177,17178,17185,17665,17779,17844,20364,20944,21553,21554,23956,23957,23959,23961,23962,23963,23964,23965,23968,23969,28313,28316,30408,30417,30544,32744,32824,33835,40534,40535,40536,40537,40538,40539,40578,40583,40584,40586,40587,40588,40590,40592,40593,40594,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40607,40608,42178,42215,42217,42218,42226,42227,42236,42237,42240,42242,42245,42246,42247,42296,42346,42430,61290,61291,61304,61305,61312,61313,61315,61316,64802,64804,64805,64806,64807,64808,64810,64846,64847,64848,64849,64850,64851,64852,85916,85917,85918,85919,85920,87045,87125,87126,87127,87128,87398,87399,100198,101758,101759) AND `id` = 181276 AND `map` = 530 AND `zoneId` = 3521; + +SET @OGUID := 2893; +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID AND @OGUID+129 AND `id` = 181276 AND `map` = 530 AND `zoneId` = 3521; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `state`) VALUES +(@OGUID+0 , 181276, 530, 3521, -107.806, 7915.09, 21.2482, 2.79253, 0, 0, 0.984808, 0.173648, 900, 1), +(@OGUID+1 , 181276, 530, 3521, 426.372, 7143.61, 23.2572, -0.663223, 0, 0, 0, 1, 900, 1), +(@OGUID+2 , 181276, 530, 3521, 907.398, 5773.45, 10.7675, -1.58825, 0, 0, 0.71325, -0.700909, 900, 1), +(@OGUID+3 , 181276, 530, 3521, 366.143, 8161.63, 23.1978, -0.628317, 0, 0, 0, 1, 900, 1), +(@OGUID+4 , 181276, 530, 3521, -593.064, 5314.64, 22.9118, -0.575957, 0, 0, 0, 1, 900, 1), +(@OGUID+5 , 181276, 530, 3521, -448.393, 5388.17, 22.3863, 0.837757, 0, 0, 0, 1, 900, 1), +(@OGUID+6 , 181276, 530, 3521, 58.6755, 5531.17, 23.8776, -1.37881, 0, 0, 0, 1, 900, 1), +(@OGUID+7 , 181276, 530, 3521, 698.649, 7816.91, 22.2145, -2.56563, 0, 0, 0, 1, 900, 1), +(@OGUID+8 , 181276, 530, 3521, 919.076, 7500.88, 22.2466, 1.74533, 0, 0, 0, 1, 900, 1), +(@OGUID+9 , 181276, 530, 3521, 154.377, 8310.03, 23.5881, -0.366518, 0, 0, 0, 1, 900, 1), +(@OGUID+10 , 181276, 530, 3521, 402.496, 8050.45, 24.0536, -1.46608, 0, 0, 0, 1, 900, 1), +(@OGUID+11 , 181276, 530, 3521, -228.201, 5812.67, 23.5458, -1.69297, 0, 0, 0, 1, 900, 1), +(@OGUID+12 , 181276, 530, 3521, 248.869, 5376.13, 22.2604, -0.855211, 0, 0, 0, 1, 900, 1), +(@OGUID+13 , 181276, 530, 3521, 705.322, 5845.69, 27.0197, -0.104719, 0, 0, 0, 1, 900, 1), +(@OGUID+14 , 181276, 530, 3521, 611.324, 5518.14, -1.16461, -1.79769, 0, 0, 0, 1, 900, 1), +(@OGUID+15 , 181276, 530, 3521, 458.682, 5300.45, -1.45927, -1.5708, 0, 0, 0, 1, 900, 1), +(@OGUID+16 , 181276, 530, 3521, -211.253, 6958.59, 20.9092, -1.43117, 0, 0, 0, 1, 900, 1), +(@OGUID+17 , 181276, 530, 3521, -193.153, 7896.41, 20.4815, 2.19912, 0, 0, 0, 1, 900, 1), +(@OGUID+18 , 181276, 530, 3521, -1027.54, 5276.3, 22.8396, 1.76278, 0, 0, 0, 1, 900, 1), +(@OGUID+19 , 181276, 530, 3521, 42.8332, 7622.71, 23.872, 0, 0, 0, 0, 1, 900, 1), +(@OGUID+20 , 181276, 530, 3521, 235.551, 5897.5, 22.0829, 1.78023, 0, 0, 0, 1, 900, 1), +(@OGUID+21 , 181276, 530, 3521, 204.353, 8169.52, 23.3274, 0.401425, 0, 0, 0, 1, 900, 1), +(@OGUID+22 , 181276, 530, 3521, 541.682, 5959.59, 22.2652, 2.1293, 0, 0, 0, 1, 900, 1), +(@OGUID+23 , 181276, 530, 3521, 568.935, 7617.03, 21.8145, 2.30383, 0, 0, 0, 1, 900, 1), +(@OGUID+24 , 181276, 530, 3521, -83.7279, 8736.5, 20.927, -1.79769, 0, 0, 0, 1, 900, 1), +(@OGUID+25 , 181276, 530, 3521, 1000.79, 8098.37, 22.8685, -2.47837, 0, 0, 0, 1, 900, 1), +(@OGUID+26 , 181276, 530, 3521, -87.9494, 8452.43, 22.1782, 0.191985, 0, 0, 0, 1, 900, 1), +(@OGUID+27 , 181276, 530, 3521, -894.192, 5466.5, 22.4142, -1.90241, 0, 0, 0.814116, -0.580703, 900, 1), +(@OGUID+28 , 181276, 530, 3521, -784.561, 5929.42, 23.2148, -3.00197, 0, 0, 0.997564, -0.069756, 900, 1), +(@OGUID+29 , 181276, 530, 3521, 863.5, 7637.16, 22.8081, -2.02458, 0, 0, 0.848048, -0.529919, 900, 1), +(@OGUID+30 , 181276, 530, 3521, 6.31912, 8596.54, 22.0617, -2.87979, 0, 0, 0.991445, -0.130526, 900, 1), +(@OGUID+31 , 181276, 530, 3521, 657.941, 6443.58, 21.3223, 2.33874, 0, 0, 0.920505, 0.390731, 900, 1), +(@OGUID+32 , 181276, 530, 3521, 785.26, 6723.05, 20.0622, 1.79769, 0, 0, 0.782608, 0.622515, 900, 1), +(@OGUID+33 , 181276, 530, 3521, 755.452, 7906.58, 23.3914, 0, 0, 0, 0, 1, 900, 1), +(@OGUID+34 , 181276, 530, 3521, 978.896, 8378.65, 23.2019, -0.733038, 0, 0, 0.358368, -0.93358, 900, 1), +(@OGUID+35 , 181276, 530, 3521, 558.517, 8079.06, 23.1242, -1.72788, 0, 0, 0.760406, -0.649448, 900, 1), +(@OGUID+36 , 181276, 530, 3521, 1029.5, 8594.19, 23.766, -2.67035, 0, 0, 0.97237, -0.233445, 900, 1), +(@OGUID+37 , 181276, 530, 3521, 916.977, 8606.69, 22.5519, -2.04204, 0, 0, 0.85264, -0.522498, 900, 1), +(@OGUID+38 , 181276, 530, 3521, 742.956, 8687.42, 15.1519, -2.61799, 0, 0, 0.965926, -0.258819, 900, 1), +(@OGUID+39 , 181276, 530, 3521, -131.107, 8814.37, 24.3029, -2.1293, 0, 0, 0.87462, -0.48481, 900, 1), +(@OGUID+40 , 181276, 530, 3521, 522.205, 6323.62, 22.5429, -3.10669, 0, 0, 0.999848, -0.017452, 900, 1), +(@OGUID+41 , 181276, 530, 3521, -292.536, 5995.26, 24.0665, -1.62316, 0, 0, 0.725374, -0.688354, 900, 1), +(@OGUID+42 , 181276, 530, 3521, -492.669, 5920.06, 24.1321, -1.88496, 0, 0, 0.809017, -0.587785, 900, 1), +(@OGUID+43 , 181276, 530, 3521, -147.499, 5645.65, 22.4478, -0.506145, 0, 0, 0.25038, -0.968148, 900, 1), +(@OGUID+44 , 181276, 530, 3521, -608.048, 5877.87, 22.5833, -1.51844, 0, 0, 0.688354, -0.725374, 900, 1), +(@OGUID+45 , 181276, 530, 3521, 610.609, 6015.39, 23.009, 2.82743, 0, 0, 0.987688, 0.156434, 900, 1), +(@OGUID+46 , 181276, 530, 3521, 845.668, 8114.97, 22.6411, 2.54818, 0, 0, 0.956305, 0.292372, 900, 1), +(@OGUID+47 , 181276, 530, 3521, 1358.66, 8558.92, 21.8467, 2.04204, 0, 0, 0.85264, 0.522499, 900, 1), +(@OGUID+48 , 181276, 530, 3521, 220.082, 7667.34, 23.1641, -1.15192, 0, 0, 0.544639, -0.838671, 900, 1), +(@OGUID+49 , 181276, 530, 3521, -202.466, 7536.72, 22.0793, -1.46608, 0, 0, 0, 1, 900, 1), +(@OGUID+50 , 181276, 530, 3521, 695.266, 5437.31, -24.5709, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+51 , 181276, 530, 3521, 904.501, 5418.78, 10.0337, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+52 , 181276, 530, 3521, 536.714, 5436.1, -3.00072, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+53 , 181276, 530, 3521, 565.942, 7985.94, 21.6704, -0.680679, 0, 0, 0, 1, 900, 1), +(@OGUID+54 , 181276, 530, 3521, 325.04, 5720.3, 22.4669, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+55 , 181276, 530, 3521, 1030.67, 8727.31, 5.33556, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+56 , 181276, 530, 3521, 309.43, 5341.78, 22.8067, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+57 , 181276, 530, 3521, 541.504, 5192.18, 3.11218, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+58 , 181276, 530, 3521, 725.806, 5508.13, -1.81071, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+59 , 181276, 530, 3521, 824.051, 5370.86, -0.944571, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+60 , 181276, 530, 3521, 561.567, 5624.54, 18.8166, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+61 , 181276, 530, 3521, 538.579, 5322.72, -24.1594, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+62 , 181276, 530, 3521, 475.503, 5950.67, 22.8493, 0.628317, 0, 0, 0, 1, 900, 1), +(@OGUID+63 , 181276, 530, 3521, 695.183, 5439.76, -23.4568, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+64 , 181276, 530, 3521, 314.989, 7734.13, 23.2506, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+65 , 181276, 530, 3521, 114.665, 8606.88, 22.2169, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+66 , 181276, 530, 3521, -139.498, 8998.17, 22.8894, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+67 , 181276, 530, 3521, 325.983, 5721.31, 22.6486, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+68 , 181276, 530, 3521, 758.05, 5651.15, 23.09, -0.855211, 0, 0, 0, 1, 900, 1), +(@OGUID+69 , 181276, 530, 3521, 836.484, 5675.57, 24.7045, -3.05433, 0, 0, 0, 1, 900, 1), +(@OGUID+70 , 181276, 530, 3521, 888.652, 5313.54, 19.8773, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+71 , 181276, 530, 3521, 709.53, 5259.44, -0.880973, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+72 , 181276, 530, 3521, 818.973, 5240.57, 22.035, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+73 , 181276, 530, 3521, 607.469, 5870.84, 22.6128, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+74 , 181276, 530, 3521, -392.144, 6500.78, 21.553, 2.54818, 0, 0, 0, 1, 900, 1), +(@OGUID+75 , 181276, 530, 3521, -178.382, 6021.08, 22.5117, -1.93732, 0, 0, 0, 1, 900, 1), +(@OGUID+76 , 181276, 530, 3521, 907, 5103.25, 4.49501, 0, 0, 0, 0, 0, 900, 1), +(@OGUID+77 , 181276, 530, 3521, 1188.05, 8168.69, 18.8799, -1.8326, 0, 0, 0.793353, -0.608761, 900, 1), +(@OGUID+78 , 181276, 530, 3521, -605.749, 5951.51, 23.5616, 1.37881, 0, 0, 0.636078, 0.771625, 900, 1), +(@OGUID+79 , 181276, 530, 3521, 284.933, 5611.94, 22.0877, -0.139626, 0, 0, 0.069756, -0.997564, 900, 1), +(@OGUID+80 , 181276, 530, 3521, -951.221, 5807.52, 23.667, -2.60054, 0, 0, 0.96363, -0.267238, 900, 1), +(@OGUID+81 , 181276, 530, 3521, -199.007, 8808.49, 18.9701, -0.174533, 0, 0, 0.087156, -0.996195, 900, 1), +(@OGUID+82 , 181276, 530, 3521, -105.131, 6214.17, 23.1972, -1.6057, 0, 0, 0.71934, -0.694658, 900, 1), +(@OGUID+83 , 181276, 530, 3521, 461.855, 8882.34, 24.9468, -2.47837, 0, 0, 0.945519, -0.325568, 900, 1), +(@OGUID+84 , 181276, 530, 3521, 877.305, 8450.06, 22.5711, 2.67035, 0, 0, 0.97237, 0.233445, 900, 1), +(@OGUID+85 , 181276, 530, 3521, 649.884, 6260.28, 22.6139, 2.19912, 0, 0, 0.891007, 0.453991, 900, 1), +(@OGUID+86 , 181276, 530, 3521, 46.313, 8195.37, 21.7059, 3.01942, 0, 0, 0.998135, 0.061049, 900, 1), +(@OGUID+87 , 181276, 530, 3521, -82.9322, 6096.68, 22.4811, -2.44346, 0, 0, 0.939693, -0.34202, 900, 1), +(@OGUID+88 , 181276, 530, 3521, 794.91, 5743.58, 25.9671, 1.41372, 0, 0, 0.649448, 0.760406, 900, 1), +(@OGUID+89 , 181276, 530, 3521, 285.785, 8202.79, 22.0712, 0.122173, 0, 0, 0.061049, 0.998135, 900, 1), +(@OGUID+90 , 181276, 530, 3521, -429.242, 5742.36, 22.3847, -0.139626, 0, 0, 0.069756, -0.997564, 900, 1), +(@OGUID+91 , 181276, 530, 3521, -421.48, 5542.46, 21.4294, -2.82743, 0, 0, 0.987688, -0.156434, 900, 1), +(@OGUID+92 , 181276, 530, 3521, 382.046, 5566.41, 23.3098, -1.29154, 0, 0, 0.601815, -0.798635, 900, 1), +(@OGUID+93 , 181276, 530, 3521, 52.3694, 5605.33, 22.2926, -2.60053, 0, 0, 0, 1, 900, 1), +(@OGUID+94 , 181276, 530, 3521, -892.03, 5322.57, 18.6208, -1.74533, 0, 0, 0, 1, 900, 1), +(@OGUID+95 , 181276, 530, 3521, 117.451, 7830.41, 21.6144, -1.93731, 0, 0, 0, 1, 900, 1), +(@OGUID+96 , 181276, 530, 3521, -666.829, 5724.52, 20.9599, -2.28638, 0, 0, 0, 1, 900, 1), +(@OGUID+97 , 181276, 530, 3521, 761.521, 7509.73, 22.9588, 2.44346, 0, 0, 0, 1, 900, 1), +(@OGUID+98 , 181276, 530, 3521, -91.9377, 7280.53, 22.9762, 1.79769, 0, 0, 0, 1, 900, 1), +(@OGUID+99 , 181276, 530, 3521, 986.909, 7558.14, 23.5988, -2.32129, 0, 0, 0, 1, 900, 1), +(@OGUID+100, 181276, 530, 3521, -252.617, 6198.28, 23.9543, -2.28638, 0, 0, 0, 1, 900, 1), +(@OGUID+101, 181276, 530, 3521, 243.617, 7459.68, 23.4179, -2.35619, 0, 0, 0, 1, 900, 1), +(@OGUID+102, 181276, 530, 3521, 536.559, 5434.35, -3.38172, 1.71042, 0, 0, 0, 1, 900, 1), +(@OGUID+103, 181276, 530, 3521, 1003.67, 7841.74, 23.5655, 2.40855, 0, 0, 0, 1, 900, 1), +(@OGUID+104, 181276, 530, 3521, -328.464, 6013.14, 22.2611, 1.69297, 0, 0, 0, 1, 900, 1), +(@OGUID+105, 181276, 530, 3521, -718.884, 5976.53, 24.4484, 2.75761, 0, 0, 0, 1, 900, 1), +(@OGUID+106, 181276, 530, 3521, -147.011, 7711.9, 23.4578, -0.052359, 0, 0, 0, 1, 900, 1), +(@OGUID+107, 181276, 530, 3521, 62.2853, 8524.45, 21.7028, 1.0821, 0, 0, 0, 1, 900, 1), +(@OGUID+108, 181276, 530, 3521, 1232.02, 8670.86, 19.2138, 0.261798, 0, 0, 0, 1, 900, 1), +(@OGUID+109, 181276, 530, 3521, -519.313, 6152.96, 22.3494, 1.76278, 0, 0, 0, 1, 900, 1), +(@OGUID+110, 181276, 530, 3521, 502.554, 7910.94, 22.9019, 1.8675, 0, 0, 0, 1, 900, 1), +(@OGUID+111, 181276, 530, 3521, -375.677, 6728.37, 22.3378, 2.28638, 0, 0, 0, 1, 900, 1), +(@OGUID+112, 181276, 530, 3521, 512.408, 5850.85, 23.8378, -1.32645, 0, 0, 0, 1, 900, 1), +(@OGUID+113, 181276, 530, 3521, 393.008, 5888.21, 22.3804, 2.47837, 0, 0, 0, 1, 900, 1), +(@OGUID+114, 181276, 530, 3521, -91.6731, 5906.3, 22.4416, -2.91469, 0, 0, 0, 1, 900, 1), +(@OGUID+115, 181276, 530, 3521, 565.138, 7758.17, 23.9002, 1.5708, 0, 0, 0, 1, 900, 1), +(@OGUID+116, 181276, 530, 3521, -815.432, 5197.01, 19.116, -1.44862, 0, 0, 0, 1, 900, 1), +(@OGUID+117, 181276, 530, 3521, -516.086, 5520.76, 23.8181, -0.523598, 0, 0, 0, 1, 900, 1), +(@OGUID+118, 181276, 530, 3521, -201.136, 8703.23, 20.4438, -0.506145, 0, 0, 0, 1, 900, 1), +(@OGUID+119, 181276, 530, 3521, -753.006, 5149.84, 21.7425, 2.23402, 0, 0, 0, 1, 900, 1), +(@OGUID+120, 181276, 530, 3521, 185.444, 5653.2, 23.4787, 0.418879, 0, 0, 0, 1, 900, 1), +(@OGUID+121, 181276, 530, 3521, 693.756, 8193.58, 23.2953, 1.32645, 0, 0, 0, 1, 900, 1), +(@OGUID+122, 181276, 530, 3521, -316.197, 8583.64, 20.1746, 1.36136, 0, 0, 0, 1, 900, 1), +(@OGUID+123, 181276, 530, 3521, -274.252, 7682.1, 21.2547, -0.837757, 0, 0, 0, 1, 900, 1), +(@OGUID+124, 181276, 530, 3521, 1140.83, 8699.95, 18.7153, -2.49582, 0, 0, 0, 1, 900, 1), +(@OGUID+125, 181276, 530, 3521, -987.62, 5225.53, 22.5514, 0.226892, 0, 0, 0, 1, 900, 1), +(@OGUID+126, 181276, 530, 3521, -942.452, 5153.56, 23.3949, -0.314158, 0, 0, 0, 1, 900, 1), +(@OGUID+127, 181276, 530, 3521, 627.611, 5326.46, -25.0848, 2.21657, 0, 0, 0, 0, 900, 1), +(@OGUID+128, 181276, 530, 3521, 781.369, 6494.62, 20.8706, -1.18682, 0, 0, 0, 0, 900, 1), +(@OGUID+129, 181276, 530, 3521, 349.258, 7530.48, 22.6831, 1.79769, 0, 0, 0.782608, 0.622515, 900, 1); + +SET @POOL_ENTRY := 16202; +DELETE FROM `pool_gameobject` WHERE `pool_entry` BETWEEN @POOL_ENTRY AND @POOL_ENTRY+129 AND `guid` IN (21,1801,2730,16819,16820,16824,16825,16828,16829,16831,16836,16837,16839,16840,16841,16843,16847,16848,16850,16851,17172,17177,17178,17185,17665,17779,17844,20364,20944,21553,21554,22442,23956,23957,23959,23961,23962,23963,23964,23965,23968,23969,28313,28316,30408,30417,30544,32744,32824,33835,40534,40535,40536,40537,40538,40539,40578,40583,40584,40586,40587,40588,40590,40592,40593,40594,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40607,40608,42178,42215,42217,42218,42226,42227,42236,42237,42240,42242,42245,42246,42247,42296,42346,42430,61290,61291,61304,61305,61312,61313,61315,61316,64802,64804,64805,64806,64807,64808,64810,64846,64847,64848,64849,64850,64851,64852,85916,85917,85918,85919,85920,87045,87125,87126,87127,87128,87398,87399,100198,101758,101759); +DELETE FROM `pool_gameobject` WHERE `pool_entry` BETWEEN @POOL_ENTRY AND @POOL_ENTRY+129 AND `guid` BETWEEN @OGUID AND @OGUID+129; +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(21 , @POOL_ENTRY+0 , 0, 'Zangarmarsh - Ragveil'), +(1801 , @POOL_ENTRY+1 , 0, 'Zangarmarsh - Ragveil'), +(2730 , @POOL_ENTRY+2 , 0, 'Zangarmarsh - Ragveil'), +(16819 , @POOL_ENTRY+3 , 0, 'Zangarmarsh - Ragveil'), +(16820 , @POOL_ENTRY+4 , 0, 'Zangarmarsh - Ragveil'), +(16824 , @POOL_ENTRY+5 , 0, 'Zangarmarsh - Ragveil'), +(16825 , @POOL_ENTRY+6 , 0, 'Zangarmarsh - Ragveil'), +(16828 , @POOL_ENTRY+7 , 0, 'Zangarmarsh - Ragveil'), +(16829 , @POOL_ENTRY+8 , 0, 'Zangarmarsh - Ragveil'), +(16831 , @POOL_ENTRY+9 , 0, 'Zangarmarsh - Ragveil'), +(16836 , @POOL_ENTRY+10 , 0, 'Zangarmarsh - Ragveil'), +(16837 , @POOL_ENTRY+11 , 0, 'Zangarmarsh - Ragveil'), +(16839 , @POOL_ENTRY+12 , 0, 'Zangarmarsh - Ragveil'), +(16840 , @POOL_ENTRY+13 , 0, 'Zangarmarsh - Ragveil'), +(16841 , @POOL_ENTRY+14 , 0, 'Zangarmarsh - Ragveil'), +(16843 , @POOL_ENTRY+15 , 0, 'Zangarmarsh - Ragveil'), +(16847 , @POOL_ENTRY+16 , 0, 'Zangarmarsh - Ragveil'), +(16848 , @POOL_ENTRY+17 , 0, 'Zangarmarsh - Ragveil'), +(16850 , @POOL_ENTRY+18 , 0, 'Zangarmarsh - Ragveil'), +(16851 , @POOL_ENTRY+19 , 0, 'Zangarmarsh - Ragveil'), +(17172 , @POOL_ENTRY+20 , 0, 'Zangarmarsh - Ragveil'), +(17177 , @POOL_ENTRY+21 , 0, 'Zangarmarsh - Ragveil'), +(17178 , @POOL_ENTRY+22 , 0, 'Zangarmarsh - Ragveil'), +(17185 , @POOL_ENTRY+23 , 0, 'Zangarmarsh - Ragveil'), +(17665 , @POOL_ENTRY+24 , 0, 'Zangarmarsh - Ragveil'), +(17779 , @POOL_ENTRY+25 , 0, 'Zangarmarsh - Ragveil'), +(17844 , @POOL_ENTRY+26 , 0, 'Zangarmarsh - Ragveil'), +(20364 , @POOL_ENTRY+27 , 0, 'Zangarmarsh - Ragveil'), +(20944 , @POOL_ENTRY+28 , 0, 'Zangarmarsh - Ragveil'), +(21553 , @POOL_ENTRY+29 , 0, 'Zangarmarsh - Ragveil'), +(21554 , @POOL_ENTRY+30 , 0, 'Zangarmarsh - Ragveil'), +(23956 , @POOL_ENTRY+31 , 0, 'Zangarmarsh - Ragveil'), +(23957 , @POOL_ENTRY+32 , 0, 'Zangarmarsh - Ragveil'), +(23959 , @POOL_ENTRY+33 , 0, 'Zangarmarsh - Ragveil'), +(23961 , @POOL_ENTRY+34 , 0, 'Zangarmarsh - Ragveil'), +(23962 , @POOL_ENTRY+35 , 0, 'Zangarmarsh - Ragveil'), +(23963 , @POOL_ENTRY+36 , 0, 'Zangarmarsh - Ragveil'), +(23964 , @POOL_ENTRY+37 , 0, 'Zangarmarsh - Ragveil'), +(23965 , @POOL_ENTRY+38 , 0, 'Zangarmarsh - Ragveil'), +(23968 , @POOL_ENTRY+39 , 0, 'Zangarmarsh - Ragveil'), +(23969 , @POOL_ENTRY+40 , 0, 'Zangarmarsh - Ragveil'), +(28313 , @POOL_ENTRY+41 , 0, 'Zangarmarsh - Ragveil'), +(28316 , @POOL_ENTRY+42 , 0, 'Zangarmarsh - Ragveil'), +(30408 , @POOL_ENTRY+43 , 0, 'Zangarmarsh - Ragveil'), +(30417 , @POOL_ENTRY+44 , 0, 'Zangarmarsh - Ragveil'), +(30544 , @POOL_ENTRY+45 , 0, 'Zangarmarsh - Ragveil'), +(32744 , @POOL_ENTRY+46 , 0, 'Zangarmarsh - Ragveil'), +(32824 , @POOL_ENTRY+47 , 0, 'Zangarmarsh - Ragveil'), +(33835 , @POOL_ENTRY+48 , 0, 'Zangarmarsh - Ragveil'), +(40534 , @POOL_ENTRY+49 , 0, 'Zangarmarsh - Ragveil'), +(40535 , @POOL_ENTRY+50 , 0, 'Zangarmarsh - Ragveil'), +(40536 , @POOL_ENTRY+51 , 0, 'Zangarmarsh - Ragveil'), +(40537 , @POOL_ENTRY+52 , 0, 'Zangarmarsh - Ragveil'), +(40538 , @POOL_ENTRY+53 , 0, 'Zangarmarsh - Ragveil'), +(40539 , @POOL_ENTRY+54 , 0, 'Zangarmarsh - Ragveil'), +(40578 , @POOL_ENTRY+55 , 0, 'Zangarmarsh - Ragveil'), +(40583 , @POOL_ENTRY+56 , 0, 'Zangarmarsh - Ragveil'), +(40584 , @POOL_ENTRY+57 , 0, 'Zangarmarsh - Ragveil'), +(40586 , @POOL_ENTRY+58 , 0, 'Zangarmarsh - Ragveil'), +(40587 , @POOL_ENTRY+59 , 0, 'Zangarmarsh - Ragveil'), +(40588 , @POOL_ENTRY+60 , 0, 'Zangarmarsh - Ragveil'), +(40590 , @POOL_ENTRY+61 , 0, 'Zangarmarsh - Ragveil'), +(40592 , @POOL_ENTRY+62 , 0, 'Zangarmarsh - Ragveil'), +(40593 , @POOL_ENTRY+63 , 0, 'Zangarmarsh - Ragveil'), +(40594 , @POOL_ENTRY+64 , 0, 'Zangarmarsh - Ragveil'), +(40596 , @POOL_ENTRY+65 , 0, 'Zangarmarsh - Ragveil'), +(40597 , @POOL_ENTRY+66 , 0, 'Zangarmarsh - Ragveil'), +(40598 , @POOL_ENTRY+67 , 0, 'Zangarmarsh - Ragveil'), +(40599 , @POOL_ENTRY+68 , 0, 'Zangarmarsh - Ragveil'), +(40600 , @POOL_ENTRY+69 , 0, 'Zangarmarsh - Ragveil'), +(40601 , @POOL_ENTRY+70 , 0, 'Zangarmarsh - Ragveil'), +(40602 , @POOL_ENTRY+71 , 0, 'Zangarmarsh - Ragveil'), +(40603 , @POOL_ENTRY+72 , 0, 'Zangarmarsh - Ragveil'), +(40604 , @POOL_ENTRY+73 , 0, 'Zangarmarsh - Ragveil'), +(40605 , @POOL_ENTRY+74 , 0, 'Zangarmarsh - Ragveil'), +(40607 , @POOL_ENTRY+75 , 0, 'Zangarmarsh - Ragveil'), +(40608 , @POOL_ENTRY+76 , 0, 'Zangarmarsh - Ragveil'), +(42178 , @POOL_ENTRY+77 , 0, 'Zangarmarsh - Ragveil'), +(42215 , @POOL_ENTRY+78 , 0, 'Zangarmarsh - Ragveil'), +(42217 , @POOL_ENTRY+79 , 0, 'Zangarmarsh - Ragveil'), +(42218 , @POOL_ENTRY+80 , 0, 'Zangarmarsh - Ragveil'), +(42226 , @POOL_ENTRY+81 , 0, 'Zangarmarsh - Ragveil'), +(42227 , @POOL_ENTRY+82 , 0, 'Zangarmarsh - Ragveil'), +(42236 , @POOL_ENTRY+83 , 0, 'Zangarmarsh - Ragveil'), +(42237 , @POOL_ENTRY+84 , 0, 'Zangarmarsh - Ragveil'), +(42240 , @POOL_ENTRY+85 , 0, 'Zangarmarsh - Ragveil'), +(42242 , @POOL_ENTRY+86 , 0, 'Zangarmarsh - Ragveil'), +(42245 , @POOL_ENTRY+87 , 0, 'Zangarmarsh - Ragveil'), +(42246 , @POOL_ENTRY+88 , 0, 'Zangarmarsh - Ragveil'), +(42247 , @POOL_ENTRY+89 , 0, 'Zangarmarsh - Ragveil'), +(42296 , @POOL_ENTRY+90 , 0, 'Zangarmarsh - Ragveil'), +(42346 , @POOL_ENTRY+91 , 0, 'Zangarmarsh - Ragveil'), +(42430 , @POOL_ENTRY+92 , 0, 'Zangarmarsh - Ragveil'), +(61290 , @POOL_ENTRY+93 , 0, 'Zangarmarsh - Ragveil'), +(61291 , @POOL_ENTRY+94 , 0, 'Zangarmarsh - Ragveil'), +(61304 , @POOL_ENTRY+95 , 0, 'Zangarmarsh - Ragveil'), +(61305 , @POOL_ENTRY+96 , 0, 'Zangarmarsh - Ragveil'), +(61312 , @POOL_ENTRY+97 , 0, 'Zangarmarsh - Ragveil'), +(61313 , @POOL_ENTRY+98 , 0, 'Zangarmarsh - Ragveil'), +(61315 , @POOL_ENTRY+99 , 0, 'Zangarmarsh - Ragveil'), +(61316 , @POOL_ENTRY+100, 0, 'Zangarmarsh - Ragveil'), +(64802 , @POOL_ENTRY+101, 0, 'Zangarmarsh - Ragveil'), +(64804 , @POOL_ENTRY+102, 0, 'Zangarmarsh - Ragveil'), +(64805 , @POOL_ENTRY+103, 0, 'Zangarmarsh - Ragveil'), +(64806 , @POOL_ENTRY+104, 0, 'Zangarmarsh - Ragveil'), +(64807 , @POOL_ENTRY+105, 0, 'Zangarmarsh - Ragveil'), +(64808 , @POOL_ENTRY+106, 0, 'Zangarmarsh - Ragveil'), +(64810 , @POOL_ENTRY+107, 0, 'Zangarmarsh - Ragveil'), +(64846 , @POOL_ENTRY+108, 0, 'Zangarmarsh - Ragveil'), +(64847 , @POOL_ENTRY+109, 0, 'Zangarmarsh - Ragveil'), +(64848 , @POOL_ENTRY+110, 0, 'Zangarmarsh - Ragveil'), +(64849 , @POOL_ENTRY+111, 0, 'Zangarmarsh - Ragveil'), +(64850 , @POOL_ENTRY+112, 0, 'Zangarmarsh - Ragveil'), +(64851 , @POOL_ENTRY+113, 0, 'Zangarmarsh - Ragveil'), +(64852 , @POOL_ENTRY+114, 0, 'Zangarmarsh - Ragveil'), +(85916 , @POOL_ENTRY+115, 0, 'Zangarmarsh - Ragveil'), +(85917 , @POOL_ENTRY+116, 0, 'Zangarmarsh - Ragveil'), +(85918 , @POOL_ENTRY+117, 0, 'Zangarmarsh - Ragveil'), +(85919 , @POOL_ENTRY+118, 0, 'Zangarmarsh - Ragveil'), +(85920 , @POOL_ENTRY+119, 0, 'Zangarmarsh - Ragveil'), +(87045 , @POOL_ENTRY+120, 0, 'Zangarmarsh - Ragveil'), +(87125 , @POOL_ENTRY+121, 0, 'Zangarmarsh - Ragveil'), +(87126 , @POOL_ENTRY+122, 0, 'Zangarmarsh - Ragveil'), +(87127 , @POOL_ENTRY+123, 0, 'Zangarmarsh - Ragveil'), +(87128 , @POOL_ENTRY+124, 0, 'Zangarmarsh - Ragveil'), +(87398 , @POOL_ENTRY+125, 0, 'Zangarmarsh - Ragveil'), +(87399 , @POOL_ENTRY+126, 0, 'Zangarmarsh - Ragveil'), +(100198, @POOL_ENTRY+127, 0, 'Zangarmarsh - Ragveil'), +(101758, @POOL_ENTRY+128, 0, 'Zangarmarsh - Ragveil'), +(101759, @POOL_ENTRY+129, 0, 'Zangarmarsh - Ragveil'), + +(@OGUID+0 , @POOL_ENTRY+0 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+1 , @POOL_ENTRY+1 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+2 , @POOL_ENTRY+2 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+3 , @POOL_ENTRY+3 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+4 , @POOL_ENTRY+4 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+5 , @POOL_ENTRY+5 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+6 , @POOL_ENTRY+6 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+7 , @POOL_ENTRY+7 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+8 , @POOL_ENTRY+8 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+9 , @POOL_ENTRY+9 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+10 , @POOL_ENTRY+10 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+11 , @POOL_ENTRY+11 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+12 , @POOL_ENTRY+12 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+13 , @POOL_ENTRY+13 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+14 , @POOL_ENTRY+14 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+15 , @POOL_ENTRY+15 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+16 , @POOL_ENTRY+16 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+17 , @POOL_ENTRY+17 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+18 , @POOL_ENTRY+18 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+19 , @POOL_ENTRY+19 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+20 , @POOL_ENTRY+20 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+21 , @POOL_ENTRY+21 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+22 , @POOL_ENTRY+22 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+23 , @POOL_ENTRY+23 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+24 , @POOL_ENTRY+24 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+25 , @POOL_ENTRY+25 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+26 , @POOL_ENTRY+26 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+27 , @POOL_ENTRY+27 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+28 , @POOL_ENTRY+28 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+29 , @POOL_ENTRY+29 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+30 , @POOL_ENTRY+30 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+31 , @POOL_ENTRY+31 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+32 , @POOL_ENTRY+32 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+33 , @POOL_ENTRY+33 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+34 , @POOL_ENTRY+34 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+35 , @POOL_ENTRY+35 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+36 , @POOL_ENTRY+36 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+37 , @POOL_ENTRY+37 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+38 , @POOL_ENTRY+38 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+39 , @POOL_ENTRY+39 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+40 , @POOL_ENTRY+40 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+41 , @POOL_ENTRY+41 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+42 , @POOL_ENTRY+42 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+43 , @POOL_ENTRY+43 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+44 , @POOL_ENTRY+44 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+45 , @POOL_ENTRY+45 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+46 , @POOL_ENTRY+46 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+47 , @POOL_ENTRY+47 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+48 , @POOL_ENTRY+48 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+49 , @POOL_ENTRY+49 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+50 , @POOL_ENTRY+50 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+51 , @POOL_ENTRY+51 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+52 , @POOL_ENTRY+52 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+53 , @POOL_ENTRY+53 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+54 , @POOL_ENTRY+54 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+55 , @POOL_ENTRY+55 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+56 , @POOL_ENTRY+56 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+57 , @POOL_ENTRY+57 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+58 , @POOL_ENTRY+58 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+59 , @POOL_ENTRY+59 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+60 , @POOL_ENTRY+60 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+61 , @POOL_ENTRY+61 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+62 , @POOL_ENTRY+62 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+63 , @POOL_ENTRY+63 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+64 , @POOL_ENTRY+64 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+65 , @POOL_ENTRY+65 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+66 , @POOL_ENTRY+66 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+67 , @POOL_ENTRY+67 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+68 , @POOL_ENTRY+68 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+69 , @POOL_ENTRY+69 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+70 , @POOL_ENTRY+70 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+71 , @POOL_ENTRY+71 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+72 , @POOL_ENTRY+72 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+73 , @POOL_ENTRY+73 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+74 , @POOL_ENTRY+74 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+75 , @POOL_ENTRY+75 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+76 , @POOL_ENTRY+76 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+77 , @POOL_ENTRY+77 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+78 , @POOL_ENTRY+78 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+79 , @POOL_ENTRY+79 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+80 , @POOL_ENTRY+80 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+81 , @POOL_ENTRY+81 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+82 , @POOL_ENTRY+82 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+83 , @POOL_ENTRY+83 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+84 , @POOL_ENTRY+84 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+85 , @POOL_ENTRY+85 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+86 , @POOL_ENTRY+86 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+87 , @POOL_ENTRY+87 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+88 , @POOL_ENTRY+88 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+89 , @POOL_ENTRY+89 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+90 , @POOL_ENTRY+90 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+91 , @POOL_ENTRY+91 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+92 , @POOL_ENTRY+92 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+93 , @POOL_ENTRY+93 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+94 , @POOL_ENTRY+94 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+95 , @POOL_ENTRY+95 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+96 , @POOL_ENTRY+96 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+97 , @POOL_ENTRY+97 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+98 , @POOL_ENTRY+98 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+99 , @POOL_ENTRY+99 , 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+100, @POOL_ENTRY+100, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+101, @POOL_ENTRY+101, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+102, @POOL_ENTRY+102, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+103, @POOL_ENTRY+103, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+104, @POOL_ENTRY+104, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+105, @POOL_ENTRY+105, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+106, @POOL_ENTRY+106, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+107, @POOL_ENTRY+107, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+108, @POOL_ENTRY+108, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+109, @POOL_ENTRY+109, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+110, @POOL_ENTRY+110, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+111, @POOL_ENTRY+111, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+112, @POOL_ENTRY+112, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+113, @POOL_ENTRY+113, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+114, @POOL_ENTRY+114, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+115, @POOL_ENTRY+115, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+116, @POOL_ENTRY+116, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+117, @POOL_ENTRY+117, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+118, @POOL_ENTRY+118, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+119, @POOL_ENTRY+119, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+120, @POOL_ENTRY+120, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+121, @POOL_ENTRY+121, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+122, @POOL_ENTRY+122, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+123, @POOL_ENTRY+123, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+124, @POOL_ENTRY+124, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+125, @POOL_ENTRY+125, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+126, @POOL_ENTRY+126, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+127, @POOL_ENTRY+127, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+128, @POOL_ENTRY+128, 10, 'Zangarmarsh - Flame Cap'), +(@OGUID+129, @POOL_ENTRY+129, 10, 'Zangarmarsh - Flame Cap'); + +DELETE FROM `pool_template` WHERE `entry` BETWEEN @POOL_ENTRY AND @POOL_ENTRY+129 AND `description` = 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'; +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@POOL_ENTRY+0 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+1 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+2 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+3 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+4 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+5 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+6 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+7 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+8 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+9 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+10 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+11 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+12 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+13 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+14 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+15 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+16 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+17 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+18 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+19 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+20 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+21 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+22 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+23 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+24 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+25 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+26 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+27 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+28 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+29 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+30 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+31 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+32 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+33 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+34 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+35 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+36 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+37 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+38 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+39 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+40 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+41 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+42 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+43 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+44 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+45 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+46 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+47 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+48 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+49 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+50 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+51 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+52 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+53 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+54 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+55 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+56 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+57 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+58 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+59 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+60 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+61 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+62 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+63 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+64 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+65 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+66 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+67 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+68 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+69 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+70 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+71 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+72 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+73 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+74 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+75 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+76 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+77 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+78 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+79 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+80 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+81 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+82 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+83 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+84 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+85 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+86 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+87 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+88 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+89 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+90 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+91 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+92 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+93 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+94 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+95 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+96 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+97 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+98 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+99 , 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+100, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+101, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+102, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+103, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+104, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+105, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+106, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+107, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+108, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+109, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+110, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+111, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+112, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+113, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+114, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+115, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+116, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+117, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+118, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+119, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+120, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+121, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+122, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+123, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+124, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+125, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+126, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+127, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+128, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'), +(@POOL_ENTRY+129, 1, 'Zangarmarsh - Herb Pool - Ragveil / Flame Cap'); + +DELETE FROM `pool_pool` WHERE `pool_id` BETWEEN @POOL_ENTRY AND @POOL_ENTRY+129 AND `description` LIKE '%Zangarmarsh%'; +INSERT INTO `pool_pool` (`pool_id`, `mother_pool`, `chance`, `description`) VALUES +-- East +(16204, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16206, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16207, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16208, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16213, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16214, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16215, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16216, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16217, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16220, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16222, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16224, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16229, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16230, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16233, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16234, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16242, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16243, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16244, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16245, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16246, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16247, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16252, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16253, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16254, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16256, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16258, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16259, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16260, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16261, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16262, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16263, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16264, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16265, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16269, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16270, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16271, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16272, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16273, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16274, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16275, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16276, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16277, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16278, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16280, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16281, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16282, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16284, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16287, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16289, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16290, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16292, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16293, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16294, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16295, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16296, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16298, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16302, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16304, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16306, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16307, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16311, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16313, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16314, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16315, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16316, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16318, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16319, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16321, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16322, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16327, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16328, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16329, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(16330, 8085, 0, 'Zangarmarsh - Ragveil / Flame Cap - East'), +-- West +(16202, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16203, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16205, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16209, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16210, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16211, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16212, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16218, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16219, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16221, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16223, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16225, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16226, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16227, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16228, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16231, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16232, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16235, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16236, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16237, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16238, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16239, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16240, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16241, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16248, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16249, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16250, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16251, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16255, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16257, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16266, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16267, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16268, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16279, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16283, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16285, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16286, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16288, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16291, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16297, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16299, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16300, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16301, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16303, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16305, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16308, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16309, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16310, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16312, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16317, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16320, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16323, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16324, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16325, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16326, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'), +(16331, 8086, 0, 'Zangarmarsh - Ragveil / Flame Cap - West'); + +DELETE FROM `pool_template` WHERE `entry` IN (8085, 8086); +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(8085, 18, 'Zangarmarsh - Ragveil / Flame Cap - East'), +(8086, 18, 'Zangarmarsh - Ragveil / Flame Cap - West'); From 17d61664fd6afa07847c033ea828216bfee6c062 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Thu, 25 Jul 2024 23:52:41 +0000 Subject: [PATCH 05/33] chore(DB): import pending files Referenced commit(s): bc23a7a3d861e9fe82224b3907e98fdbcc96baed --- .../rev_1721773806947945700.sql => db_world/2024_07_25_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1721773806947945700.sql => db_world/2024_07_25_00.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1721773806947945700.sql b/data/sql/updates/db_world/2024_07_25_00.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1721773806947945700.sql rename to data/sql/updates/db_world/2024_07_25_00.sql index 81e782b8d..fe5894b76 100644 --- a/data/sql/updates/pending_db_world/rev_1721773806947945700.sql +++ b/data/sql/updates/db_world/2024_07_25_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_07_23_02 -> 2024_07_25_00 -- Delete all pools DELETE FROM `pool_template` WHERE `entry` IN (8085, 8086, 8087) AND `description` LIKE 'Zangarmarsh%'; DELETE FROM `pool_gameobject` WHERE `guid` IN (21,1801,2730,16819,16820,16824,16825,16828,16829,16831,16836,16837,16839,16840,16841,16843,16847,16848,16850,16851,17172,17177,17178,17185,17665,17779,17844,20364,20944,21553,21554,22442,23956,23957,23959,23961,23962,23963,23964,23965,23968,23969,28313,28316,30408,30417,30544,32744,32824,33835,40534,40535,40536,40537,40538,40539,40578,40583,40584,40586,40587,40588,40590,40592,40593,40594,40596,40597,40598,40599,40600,40601,40602,40603,40604,40605,40607,40608,42178,42215,42217,42218,42226,42227,42236,42237,42240,42242,42245,42246,42247,42296,42346,42430,61290,61291,61304,61305,61312,61313,61315,61316,64802,64804,64805,64806,64807,64808,64810,64846,64847,64848,64849,64850,64851,64852,85916,85917,85918,85919,85920,87045,87125,87126,87127,87128,87398,87399,100198,101758,101759) AND `pool_entry` IN (8085, 8086, 8087) AND `description` LIKE '%Zangarmarsh%'; From af769c6c7e7aa686b3eaaf4bb689ba2d59bbef6c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Borz=C3=AC?= Date: Sat, 27 Jul 2024 00:56:33 +0200 Subject: [PATCH 06/33] refactor(Scripts/Northrend): remove unused imports (#19460) * refactor(Scripts/Northrend): remove unused imports * chore: wip --- .../scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h | 3 --- .../Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp | 2 ++ .../Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp | 2 ++ .../AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp | 1 + .../RubySanctum/boss_baltharus_the_warborn.cpp | 2 ++ .../ChamberOfAspects/RubySanctum/boss_halion.cpp | 1 + .../RubySanctum/boss_saviana_ragefire.cpp | 1 + .../RubySanctum/instance_ruby_sanctum.cpp | 1 + .../Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h | 7 ------- .../TrialOfTheChampion/boss_grand_champions.cpp | 1 + .../TrialOfTheChampion/trial_of_the_champion.h | 1 - .../TrialOfTheCrusader/boss_anubarak_trial.cpp | 1 + .../TrialOfTheCrusader/trial_of_the_crusader.h | 1 - .../scripts/Northrend/DraktharonKeep/boss_novos.cpp | 1 + .../scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp | 1 + .../scripts/Northrend/DraktharonKeep/boss_trollgore.cpp | 2 ++ .../scripts/Northrend/DraktharonKeep/drak_tharon_keep.h | 2 -- .../DraktharonKeep/instance_drak_tharon_keep.cpp | 1 + .../FrozenHalls/HallsOfReflection/boss_falric.cpp | 1 + .../FrozenHalls/HallsOfReflection/boss_marwyn.cpp | 3 +++ .../FrozenHalls/HallsOfReflection/halls_of_reflection.cpp | 5 +++++ .../FrozenHalls/HallsOfReflection/halls_of_reflection.h | 7 ------- .../HallsOfReflection/instance_halls_of_reflection.cpp | 1 + .../FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp | 1 - .../Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp | 1 - .../scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp | 1 + src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp | 1 + src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp | 2 ++ src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp | 1 + src/server/scripts/Northrend/Gundrak/gundrak.h | 1 - .../Northrend/IcecrownCitadel/icecrown_citadel.cpp | 1 - .../scripts/Northrend/IcecrownCitadel/icecrown_citadel.h | 2 -- src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp | 1 + src/server/scripts/Northrend/Naxxramas/naxxramas.h | 1 - .../Nexus/EyeOfEternity/instance_eye_of_eternity.cpp | 1 - .../scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp | 2 ++ .../scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp | 4 ++++ src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp | 1 + .../scripts/Northrend/Nexus/Nexus/instance_nexus.cpp | 1 + src/server/scripts/Northrend/Nexus/Nexus/nexus.h | 6 ------ src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp | 1 + src/server/scripts/Northrend/Nexus/Oculus/oculus.h | 2 -- .../Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp | 8 +++++++- .../scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp | 1 - src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp | 1 - src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h | 3 --- .../UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp | 1 - .../Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp | 1 + .../Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h | 1 - .../UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h | 1 - .../VaultOfArchavon/instance_vault_of_archavon.cpp | 1 - 51 files changed, 50 insertions(+), 47 deletions(-) diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h index 2f6c474a3..c124b4457 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/azjol_nerub.h @@ -19,9 +19,6 @@ #define DEF_AZJOL_NERUB_H #include "CreatureAIImpl.h" -#include "SpellAuraEffects.h" -#include "SpellAuras.h" -#include "SpellScript.h" #define DataHeader "AN" diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index 1e69836ac..2032efe5d 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -19,6 +19,8 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "azjol_nerub.h" +#include "SpellInfo.h" +#include "SpellScript.h" enum Spells { diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp index 41f15d89a..df442a5ed 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_hadronox.cpp @@ -21,6 +21,8 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "azjol_nerub.h" +#include "SpellAuraEffects.h" +#include "SpellScript.h" enum Spells { diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp index d4c9b8a33..0fdcc10c9 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp @@ -21,6 +21,7 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "azjol_nerub.h" +#include "SpellScript.h" DoorData const doorData[] = { diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp index 5f939219c..34a483f77 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp @@ -18,10 +18,12 @@ #include "AreaTriggerScript.h" #include "CreatureScript.h" #include "ObjectMgr.h" +#include "Player.h" #include "ScriptedCreature.h" #include "SpellAuraEffects.h" #include "SpellScriptLoader.h" #include "ruby_sanctum.h" +#include "SpellScript.h" enum Texts { diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 3a5cdd6cf..9869c4636 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -18,6 +18,7 @@ #include "CreatureScript.h" #include "GameObjectAI.h" #include "MapMgr.h" +#include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" #include "Spell.h" diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp index 39afa96a6..c11e61216 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp @@ -19,6 +19,7 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "ruby_sanctum.h" +#include "SpellScript.h" enum Texts { diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp index c08535c23..2296abae5 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp @@ -23,6 +23,7 @@ #include "TemporarySummon.h" #include "WorldPacket.h" #include "ruby_sanctum.h" +#include "SpellScript.h" BossBoundaryData const boundaries = { diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h index 6e6f59b76..a75092ae8 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.h @@ -18,14 +18,7 @@ #ifndef RUBY_SANCTUM_H_ #define RUBY_SANCTUM_H_ -#include "Creature.h" #include "CreatureAIImpl.h" -#include "GameObjectAI.h" -#include "Map.h" -#include "Opcodes.h" -#include "PassiveAI.h" -#include "Player.h" -#include "SpellScript.h" #define DataHeader "RS" diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp index e48f714c2..cb8d3be45 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_grand_champions.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "CombatAI.h" #include "CreatureScript.h" #include "PassiveAI.h" #include "Player.h" diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h index be0dfa453..d8f71c00d 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/trial_of_the_champion.h @@ -18,7 +18,6 @@ #ifndef DEF_TOC_H #define DEF_TOC_H -#include "CombatAI.h" #include "CreatureAIImpl.h" #define DataHeader "TC" diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp index ecb1ac0b1..185fedd97 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_anubarak_trial.cpp @@ -19,6 +19,7 @@ #include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" +#include "SpellAuraEffects.h" #include "SpellScript.h" #include "SpellScriptLoader.h" #include "trial_of_the_crusader.h" diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h index cc1ac3599..6b87cb236 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/trial_of_the_crusader.h @@ -20,7 +20,6 @@ #include "CreatureAIImpl.h" #include "GridNotifiers.h" -#include "SpellAuraEffects.h" #define DataHeader "TCR" diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp index bc5f69985..b4bbcfc56 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_novos.cpp @@ -20,6 +20,7 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "drak_tharon_keep.h" +#include "SpellScript.h" enum Yells { diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp index 2015c0ef3..ef883269e 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp @@ -19,6 +19,7 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "drak_tharon_keep.h" +#include "SpellScript.h" enum Yells { diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp index bd10397c9..0ad8fb6bb 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/boss_trollgore.cpp @@ -21,6 +21,8 @@ #include "SpellAuras.h" #include "SpellScriptLoader.h" #include "drak_tharon_keep.h" +#include "SpellAuraEffects.h" +#include "SpellScript.h" enum Yells { diff --git a/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h b/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h index 43a52b2ec..422139b32 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h +++ b/src/server/scripts/Northrend/DraktharonKeep/drak_tharon_keep.h @@ -19,8 +19,6 @@ #define DEF_DRAK_THARON_H #include "CreatureAIImpl.h" -#include "SpellAuraEffects.h" -#include "SpellScript.h" #define DataHeader "DTK" diff --git a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp index 477f2c3fb..2710c6063 100644 --- a/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp +++ b/src/server/scripts/Northrend/DraktharonKeep/instance_drak_tharon_keep.cpp @@ -20,6 +20,7 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "drak_tharon_keep.h" +#include "SpellScript.h" DoorData const doorData[] = { diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp index 5d999d927..14330239f 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_falric.cpp @@ -17,6 +17,7 @@ #include "CreatureScript.h" #include "halls_of_reflection.h" +#include "ScriptedCreature.h" enum Yells { diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp index c8366d0b9..75d715112 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/boss_marwyn.cpp @@ -18,6 +18,9 @@ #include "CreatureScript.h" #include "SpellScriptLoader.h" #include "halls_of_reflection.h" +#include "ScriptedCreature.h" +#include "SpellAuraEffects.h" +#include "SpellScript.h" enum Yells { diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index f68f9fe1c..2c5d00e36 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -18,7 +18,12 @@ #include "halls_of_reflection.h" #include "AreaTriggerScript.h" #include "CreatureScript.h" +#include "InstanceScript.h" #include "MotionMaster.h" +#include "PassiveAI.h" +#include "ScriptedCreature.h" +#include "ScriptedGossip.h" +#include "SpellScript.h" #include "SpellScriptLoader.h" enum Events diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h index 0f78df2c1..204ce5ad3 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.h @@ -19,14 +19,7 @@ #define DEF_HALLS_OF_REFLECTION_H #include "CreatureAIImpl.h" -#include "CreatureScript.h" -#include "PassiveAI.h" #include "Player.h" -#include "ScriptedCreature.h" -#include "ScriptedGossip.h" -#include "SpellAuraEffects.h" -#include "SpellAuras.h" -#include "SpellScript.h" #define DataHeader "HOR" diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp index f37361ebb..9724ad8d1 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp @@ -19,6 +19,7 @@ #include "MapMgr.h" #include "Transport.h" #include "halls_of_reflection.h" +#include "InstanceScript.h" class UtherBatteredHiltEvent : public BasicEvent { diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp index f4c3920c5..a522b7610 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp @@ -17,7 +17,6 @@ #include "CreatureGroups.h" #include "CreatureScript.h" -#include "Opcodes.h" #include "Player.h" #include "ScriptedCreature.h" #include "SpellAuras.h" diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp index 14f4332e9..0f46e27e5 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_krickandick.cpp @@ -16,7 +16,6 @@ */ #include "CreatureScript.h" -#include "Opcodes.h" #include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" diff --git a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp index 3dab952e3..17f81c164 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_drakkari_colossus.cpp @@ -19,6 +19,7 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "gundrak.h" +#include "SpellScript.h" enum Spells { diff --git a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp index e22c3bce2..4d202f7b5 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_gal_darah.cpp @@ -20,6 +20,7 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "gundrak.h" +#include "SpellScript.h" enum Spells { diff --git a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp index 9e1aac8e0..a85172a2d 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_moorabi.cpp @@ -20,6 +20,8 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "gundrak.h" +#include "SpellInfo.h" +#include "SpellScript.h" enum eSpells { diff --git a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp index 0ed90bd39..d9e57fab1 100644 --- a/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp +++ b/src/server/scripts/Northrend/Gundrak/boss_slad_ran.cpp @@ -20,6 +20,7 @@ #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "gundrak.h" +#include "SpellScript.h" enum Spells { diff --git a/src/server/scripts/Northrend/Gundrak/gundrak.h b/src/server/scripts/Northrend/Gundrak/gundrak.h index ec6da02e0..8d38819ea 100644 --- a/src/server/scripts/Northrend/Gundrak/gundrak.h +++ b/src/server/scripts/Northrend/Gundrak/gundrak.h @@ -19,7 +19,6 @@ #define DEF_GUNDRAK_H #include "CreatureAIImpl.h" -#include "SpellScript.h" #define DataHeader "GD" diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index 08d1b77de..b6be91e6a 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -16,7 +16,6 @@ */ #include "icecrown_citadel.h" -#include "AccountMgr.h" #include "AreaTriggerScript.h" #include "Cell.h" #include "CellImpl.h" diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h index 6fc6e5d46..fa4516546 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.h @@ -28,8 +28,6 @@ #include "ScriptedCreature.h" #include "ScriptedGossip.h" #include "SpellAuraEffects.h" -#include "SpellAuras.h" -#include "SpellMgr.h" #include "SpellScript.h" #include "SpellScriptLoader.h" diff --git a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp index eed3cd6cf..f86b4b55d 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_razuvious.cpp @@ -18,6 +18,7 @@ #include "CreatureScript.h" #include "ScriptedCreature.h" #include "naxxramas.h" +#include "SpellInfo.h" enum Says { diff --git a/src/server/scripts/Northrend/Naxxramas/naxxramas.h b/src/server/scripts/Northrend/Naxxramas/naxxramas.h index 5c237d784..8485d7e40 100644 --- a/src/server/scripts/Northrend/Naxxramas/naxxramas.h +++ b/src/server/scripts/Northrend/Naxxramas/naxxramas.h @@ -19,7 +19,6 @@ #define DEF_NAXXRAMAS_H #include "CreatureAIImpl.h" -#include "SpellScript.h" #define DataHeader "NAX" diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp index 8b3d6813c..8c6be93be 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/instance_eye_of_eternity.cpp @@ -15,7 +15,6 @@ * with this program. If not, see . */ -#include "CreatureScript.h" #include "InstanceMapScript.h" #include "Player.h" #include "ScriptedCreature.h" diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp index 50a559761..34a69d479 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp @@ -18,8 +18,10 @@ #include "AchievementCriteriaScript.h" #include "CreatureScript.h" +#include "MapReference.h" #include "ScriptedCreature.h" #include "nexus.h" +#include "Player.h" enum eEnums { diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp index 630460093..c3efec7bf 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_magus_telestra.cpp @@ -17,9 +17,13 @@ #include "AchievementCriteriaScript.h" #include "CreatureScript.h" +#include "GameEventMgr.h" +#include "GridNotifiers.h" #include "ScriptedCreature.h" #include "SpellScriptLoader.h" #include "nexus.h" +#include "SpellInfo.h" +#include "SpellScript.h" enum Spells { diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp index f0d5212ee..66dd21655 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp @@ -18,6 +18,7 @@ #include "CreatureScript.h" #include "ScriptedCreature.h" #include "nexus.h" +#include "PassiveAI.h" enum eEnums { diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp index 14e3acddb..eb3ac50bb 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp @@ -19,6 +19,7 @@ #include "InstanceMapScript.h" #include "ScriptedCreature.h" #include "nexus.h" +#include "Player.h" DoorData const doorData[] = { diff --git a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h index 6186b7a71..dbc87982a 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/nexus.h +++ b/src/server/scripts/Northrend/Nexus/Nexus/nexus.h @@ -19,12 +19,6 @@ #define DEF_NEXUS_H #include "CreatureAIImpl.h" -#include "GameEventMgr.h" -#include "GridNotifiers.h" -#include "PassiveAI.h" -#include "Player.h" -#include "SpellAuras.h" -#include "SpellScript.h" #define DataHeader "NEX" diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp index 308349b7e..00d634860 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_eregos.cpp @@ -18,6 +18,7 @@ #include "CreatureScript.h" #include "ScriptedCreature.h" #include "oculus.h" +#include "SpellAuras.h" enum Spells { diff --git a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h index 69e5fd5c3..9140cd7be 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/oculus.h +++ b/src/server/scripts/Northrend/Nexus/Oculus/oculus.h @@ -19,8 +19,6 @@ #define DEF_OCULUS_H #include "CreatureAIImpl.h" -#include "SpellAuraEffects.h" -#include "SpellAuras.h" #include "SpellScript.h" #define DataHeader "OC" diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index 786ae2c21..46a9dc8c3 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -16,11 +16,11 @@ */ #include "AchievementCriteriaScript.h" +#include "CellImpl.h" #include "CombatAI.h" #include "CreatureScript.h" #include "GameObjectScript.h" #include "GridNotifiers.h" -#include "Opcodes.h" #include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" @@ -33,6 +33,12 @@ #include "Vehicle.h" #include "ulduar.h" +/// @todo: this import is not necessary for compilation and marked as unused by the IDE +// however, for some reasons removing it would cause a damn linking issue +// there is probably some underlying problem with imports which should properly addressed +// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766 +#include "GridNotifiersImpl.h" + enum LeviathanSpells { // Leviathan basic diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp index 9fc2ba88a..b9f4f71f3 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yoggsaron.cpp @@ -19,7 +19,6 @@ #include "CreatureAI.h" #include "CreatureScript.h" #include "Object.h" -#include "Opcodes.h" #include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp index b6ce8bbe3..b43119631 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.cpp @@ -19,7 +19,6 @@ #include "AreaTriggerScript.h" #include "CombatAI.h" #include "CreatureScript.h" -#include "GameObjectScript.h" #include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h index 1735aeb39..4093dd891 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/ulduar.h @@ -18,11 +18,8 @@ #ifndef DEF_ULDUAR_H #define DEF_ULDUAR_H -#include "CellImpl.h" -#include "Chat.h" #include "CreatureAIImpl.h" #include "GridNotifiers.h" -#include "GridNotifiersImpl.h" #define DataHeader "UU" diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp index e0afdd435..6523b9dad 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/instance_utgarde_keep.cpp @@ -15,7 +15,6 @@ * with this program. If not, see . */ -#include "CreatureScript.h" #include "InstanceMapScript.h" #include "Player.h" #include "ScriptedCreature.h" diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp index 2b1ca9868..745909342 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.cpp @@ -19,6 +19,7 @@ #include "CreatureScript.h" #include "GameObjectAI.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "SpellScriptLoader.h" #include "Vehicle.h" diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h index 0437252cd..23f3bddb1 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/utgarde_keep.h @@ -19,7 +19,6 @@ #define DEF_UTGARDE_KEEP_H #include "CreatureAIImpl.h" -#include "SpellScript.h" #define UtgardeKeepScriptName "instance_utgarde_keep" diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h index ce37fa561..21f5eadd5 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/utgarde_pinnacle.h @@ -19,7 +19,6 @@ #define DEF_PINNACLE_H #include "CreatureAIImpl.h" -#include "Opcodes.h" #define DataHeader "UP" diff --git a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp index 25bb5ba51..8cdb21947 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/instance_vault_of_archavon.cpp @@ -17,7 +17,6 @@ #include "Battlefield.h" #include "BattlefieldMgr.h" -#include "CreatureScript.h" #include "GameTime.h" #include "InstanceMapScript.h" #include "Player.h" From dc3dfd3ab0108ce1682727f69a1b8c31d8e293bc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Borz=C3=AC?= Date: Sat, 27 Jul 2024 00:58:11 +0200 Subject: [PATCH 07/33] refactor(Scripts/Kalimdor): remove unused imports (#19459) * refactor(Scripts/Kalimdor): remove unused imports * chore: remove duplicate blank line * chore: damn linking issue * chore: wip * chore: wip * chore: wip --- .../BlackfathomDeeps/instance_blackfathom_deeps.cpp | 1 - .../BattleForMountHyjal/boss_archimonde.cpp | 2 +- .../CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp | 1 + .../BattleForMountHyjal/boss_kazrogal.cpp | 1 + .../Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h | 1 - .../BattleForMountHyjal/instance_hyjal.cpp | 1 - .../CavernsOfTime/TheBlackMorass/the_black_morass.cpp | 2 ++ .../CavernsOfTime/TheBlackMorass/the_black_morass.h | 2 -- .../scripts/Kalimdor/Maraudon/instance_maraudon.cpp | 1 - .../scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp | 8 +++++++- .../scripts/Kalimdor/RazorfenDowns/razorfen_downs.h | 1 - .../scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp | 1 - .../WailingCaverns/instance_wailing_caverns.cpp | 1 - .../scripts/Kalimdor/WailingCaverns/wailing_caverns.h | 2 -- .../scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp | 2 ++ src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp | 10 ++++++++-- src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h | 2 -- src/server/scripts/Kalimdor/zone_azshara.cpp | 1 - src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp | 1 - src/server/scripts/Kalimdor/zone_feralas.cpp | 1 - src/server/scripts/Kalimdor/zone_moonglade.cpp | 1 - 21 files changed, 22 insertions(+), 21 deletions(-) diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp index 280e5b05b..3a3d7d6ff 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp @@ -15,7 +15,6 @@ * with this program. If not, see . */ -#include "CreatureScript.h" #include "InstanceMapScript.h" #include "InstanceScript.h" #include "blackfathom_deeps.h" diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp index e1399873d..cab91dd88 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_archimonde.cpp @@ -16,10 +16,10 @@ */ #include "CreatureScript.h" +#include "GridNotifiers.h" #include "Player.h" #include "ScriptedCreature.h" #include "SpellAuraEffects.h" -#include "SpellAuras.h" #include "SpellScript.h" #include "SpellScriptLoader.h" #include "hyjal.h" diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp index 72ac29996..82f86f1b5 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_azgalor.cpp @@ -16,6 +16,7 @@ */ #include "CreatureScript.h" +#include "GridNotifiers.h" #include "ScriptedCreature.h" #include "SpellScript.h" #include "SpellScriptLoader.h" diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp index 37fc84809..09003b022 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/boss_kazrogal.cpp @@ -16,6 +16,7 @@ */ #include "CreatureScript.h" +#include "GridNotifiers.h" #include "ScriptedCreature.h" #include "SpellAuraEffects.h" #include "SpellScript.h" diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h index f29a56eb2..54ba1eab3 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/hyjal.h @@ -19,7 +19,6 @@ #define DEF_HYJAL_H #include "CreatureAIImpl.h" -#include "GridNotifiers.h" #define DataHeader "HY" diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp index 1228665c7..431892aad 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp @@ -18,7 +18,6 @@ #include "Chat.h" #include "InstanceMapScript.h" #include "InstanceScript.h" -#include "Opcodes.h" #include "Player.h" #include "WorldPacket.h" #include "hyjal.h" diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp index 34d43737f..1955c3b5d 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.cpp @@ -18,8 +18,10 @@ #include "the_black_morass.h" #include "CreatureScript.h" #include "MoveSplineInit.h" +#include "PassiveAI.h" #include "ScriptedCreature.h" #include "SmartAI.h" +#include "SpellScript.h" #include "SpellScriptLoader.h" enum medivhMisc diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h index 3a8715a34..0eac0cb3f 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/the_black_morass.h @@ -19,8 +19,6 @@ #define DEF_THEBLACKMORASS_H #include "CreatureAIImpl.h" -#include "PassiveAI.h" -#include "SpellScript.h" #define DataHeader "TBM" diff --git a/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp b/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp index 02f1b708b..9e4f79b38 100644 --- a/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp +++ b/src/server/scripts/Kalimdor/Maraudon/instance_maraudon.cpp @@ -15,7 +15,6 @@ * with this program. If not, see . */ -#include "CreatureScript.h" #include "InstanceMapScript.h" #include "InstanceScript.h" #include "maraudon.h" diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp index f9b5d9377..3504b6cdb 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.cpp @@ -20,10 +20,16 @@ #include "CellImpl.h" #include "CreatureScript.h" #include "GridNotifiers.h" -#include "GridNotifiersImpl.h" +#include "PassiveAI.h" #include "Player.h" #include "ScriptedCreature.h" +/// @todo: this import is not necessary for compilation and marked as unused by the IDE +// however, for some reasons removing it would cause a damn linking issue +// there is probably some underlying problem with imports which should properly addressed +// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766 +#include "GridNotifiersImpl.h" + /*###### ## npc_belnistrasz for Quest 3525 "Extinguishing the Idol" ######*/ diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h index 259c26d43..77c963a5b 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h +++ b/src/server/scripts/Kalimdor/RazorfenDowns/razorfen_downs.h @@ -19,7 +19,6 @@ #define DEF_RAZORFEN_DOWNS_H #include "CreatureAIImpl.h" -#include "PassiveAI.h" #define DataHeader "RFD" diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp index b43894d2d..7b56c464d 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_ossirian.cpp @@ -19,7 +19,6 @@ #include "GameObjectAI.h" #include "GameObjectScript.h" #include "MiscPackets.h" -#include "Opcodes.h" #include "Player.h" #include "ScriptedCreature.h" #include "SpellInfo.h" diff --git a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp index fe9ea41b4..b8097f4c1 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp @@ -15,7 +15,6 @@ * with this program. If not, see . */ -#include "CreatureScript.h" #include "InstanceMapScript.h" #include "InstanceScript.h" #include "wailing_caverns.h" diff --git a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h index 239e1eea7..e8887df72 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h +++ b/src/server/scripts/Kalimdor/WailingCaverns/wailing_caverns.h @@ -20,8 +20,6 @@ #define DataHeader "WC" -#include "CreatureAI.h" - enum DataTypes { TYPE_LORD_COBRAHN = 0, diff --git a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp index c15a77ba2..f8c76779b 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp @@ -16,10 +16,12 @@ */ #include "CreatureScript.h" +#include "CellImpl.h" #include "GridNotifiers.h" #include "GridNotifiersImpl.h" #include "InstanceMapScript.h" #include "InstanceScript.h" +#include "SpellScript.h" #include "SpellScriptLoader.h" #include "TemporarySummon.h" #include "zulfarrak.h" diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp index 9506c4794..4762a72b6 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.cpp @@ -17,6 +17,7 @@ #include "zulfarrak.h" #include "Cell.h" +#include "CellImpl.h" #include "CreatureScript.h" #include "GameObject.h" #include "GameObjectAI.h" @@ -28,6 +29,13 @@ #include "ScriptSystem.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" + +/// @todo: this import is not necessary for compilation and marked as unused by the IDE +// however, for some reasons removing it would cause a damn linking issue +// there is probably some underlying problem with imports which should properly addressed +// see: https://github.com/azerothcore/azerothcore-wotlk/issues/9766 +#include "GridNotifiersImpl.h" + /* ScriptData SDName: Zulfarrak SD%Complete: 50 @@ -40,8 +48,6 @@ npc_sergeant_bly npc_weegli_blastfuse EndContentData */ -#include "GridNotifiersImpl.h" - /*###### ## npc_sergeant_bly ######*/ diff --git a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h index 3202de53e..ad2965baa 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h +++ b/src/server/scripts/Kalimdor/ZulFarrak/zulfarrak.h @@ -18,9 +18,7 @@ #ifndef DEF_ZULFARRACK_H #define DEF_ZULFARRACK_H -#include "CellImpl.h" #include "CreatureAIImpl.h" -#include "SpellScript.h" #define DataHeader "ZF" diff --git a/src/server/scripts/Kalimdor/zone_azshara.cpp b/src/server/scripts/Kalimdor/zone_azshara.cpp index 8fbb8f62a..c8fb68c0a 100644 --- a/src/server/scripts/Kalimdor/zone_azshara.cpp +++ b/src/server/scripts/Kalimdor/zone_azshara.cpp @@ -31,7 +31,6 @@ EndContentData */ #include "Player.h" #include "ScriptedCreature.h" #include "ScriptedGossip.h" -#include "SpellInfo.h" /*#### # npc_rizzle_sprysprocket diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp index 5439edc99..4d391d8b1 100644 --- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp +++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp @@ -18,7 +18,6 @@ #include "CreatureScript.h" #include "Player.h" #include "ScriptedCreature.h" -#include "ScriptedGossip.h" #include "SpellScript.h" #include "SpellScriptLoader.h" diff --git a/src/server/scripts/Kalimdor/zone_feralas.cpp b/src/server/scripts/Kalimdor/zone_feralas.cpp index 7352427a5..1b70c5485 100644 --- a/src/server/scripts/Kalimdor/zone_feralas.cpp +++ b/src/server/scripts/Kalimdor/zone_feralas.cpp @@ -18,7 +18,6 @@ #include "Group.h" #include "Player.h" #include "ScriptedCreature.h" -#include "ScriptedGossip.h" #include "SpellScript.h" #include "SpellScriptLoader.h" /* ScriptData diff --git a/src/server/scripts/Kalimdor/zone_moonglade.cpp b/src/server/scripts/Kalimdor/zone_moonglade.cpp index df9757da8..a5bfb69b0 100644 --- a/src/server/scripts/Kalimdor/zone_moonglade.cpp +++ b/src/server/scripts/Kalimdor/zone_moonglade.cpp @@ -31,7 +31,6 @@ npc_clintar_dreamwalker EndContentData */ #include "Cell.h" -#include "CellImpl.h" #include "CreatureScript.h" #include "GridNotifiers.h" #include "GridNotifiersImpl.h" From 6e0853dd764aef5bcfabc12cdfcb62586b452e98 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Sat, 27 Jul 2024 02:00:37 +0300 Subject: [PATCH 08/33] feat(Scripts/Commands): .aura stack - Modify aura stacks (#19462) * feat(Scripts/Commands): .aurastack - Modify aura stacks * aura stack * remove aur check * {} Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> --------- Co-authored-by: Kitzunu <24550914+Kitzunu@users.noreply.github.com> --- .../rev_1721586059640959700.sql | 9 +++ src/server/game/Miscellaneous/Language.h | 7 ++- src/server/scripts/Commands/cs_misc.cpp | 55 ++++++++++++++++++- 3 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1721586059640959700.sql diff --git a/data/sql/updates/pending_db_world/rev_1721586059640959700.sql b/data/sql/updates/pending_db_world/rev_1721586059640959700.sql new file mode 100644 index 000000000..5888234d3 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1721586059640959700.sql @@ -0,0 +1,9 @@ +-- +DELETE FROM `command` WHERE `name`='aura stack'; +INSERT INTO `command` VALUES ('aura stack', 2, 'Syntax: .aurastack #spellid #stacks\r\n\r\nModify #stacks of an already applied #spellid to the selected Unit.'); + +DELETE FROM `acore_string` WHERE `entry` IN (373,374,375); +INSERT INTO `acore_string` (`entry`, `content_default`) VALUES +(373, 'Target unit does not have aura {}!'), +(374, 'No stack amount specified!'), +(375, 'Spell {} cannot have stacks!'); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index d47db9bb6..fca47b32c 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -415,7 +415,12 @@ enum AcoreStrings LANG_COMMAND_RESET_ITEMS_ALL_BAGS = 372, // [END] reset items command strings - // Room for more level 2 373-399 not used + // .aura stack + LANG_COMMAND_AURASTACK_NO_AURA = 373, + LANG_COMMAND_AURASTACK_NO_STACK = 374, + LANG_COMMAND_AURASTACK_CANT_STACK = 375, + + // Room for more level 2 376-399 not used // level 3 chat LANG_SCRIPTS_RELOADED = 400, diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 41e1168fa..572bc3376 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -87,12 +87,18 @@ public: ChatCommandTable GetCommands() const override { + static ChatCommandTable auraCommandTable = + { + { "stack", HandleAuraStacksCommand, SEC_GAMEMASTER, Console::No }, + { "", HandleAuraCommand, SEC_GAMEMASTER, Console::No } + }; + static ChatCommandTable commandTable = { { "commentator", HandleCommentatorCommand, SEC_MODERATOR, Console::No }, { "dev", HandleDevCommand, SEC_ADMINISTRATOR, Console::No }, { "gps", HandleGPSCommand, SEC_MODERATOR, Console::No }, - { "aura", HandleAuraCommand, SEC_GAMEMASTER, Console::No }, + { "aura", auraCommandTable }, { "unaura", HandleUnAuraCommand, SEC_GAMEMASTER, Console::No }, { "appear", HandleAppearCommand, SEC_MODERATOR, Console::No }, { "summon", HandleSummonCommand, SEC_GAMEMASTER, Console::No }, @@ -129,7 +135,7 @@ public: { "cometome", HandleComeToMeCommand, SEC_ADMINISTRATOR, Console::No }, { "damage", HandleDamageCommand, SEC_GAMEMASTER, Console::No }, { "combatstop", HandleCombatStopCommand, SEC_GAMEMASTER, Console::Yes }, - { "flusharenapoints", HandleFlushArenaPointsCommand, SEC_ADMINISTRATOR, Console::Yes }, + { "flusharenapoints", HandleFlushArenaPointsCommand, SEC_ADMINISTRATOR, Console::Yes }, { "freeze", HandleFreezeCommand, SEC_GAMEMASTER, Console::No }, { "unfreeze", HandleUnFreezeCommand, SEC_GAMEMASTER, Console::No }, { "possess", HandlePossessCommand, SEC_GAMEMASTER, Console::No }, @@ -653,6 +659,51 @@ public: return true; } + static bool HandleAuraStacksCommand(ChatHandler* handler, SpellInfo const* spell, int16 stacks) + { + if (!spell) + { + handler->SendErrorMessage(LANG_COMMAND_NOSPELLFOUND); + return false; + } + + if (!SpellMgr::IsSpellValid(spell)) + { + handler->SendErrorMessage(LANG_COMMAND_SPELL_BROKEN, spell->Id); + return false; + } + + if (!stacks) + { + handler->SendErrorMessage(LANG_COMMAND_AURASTACK_NO_STACK); + return false; + } + + Unit* target = handler->getSelectedUnit(); + if (!target) + { + handler->SendErrorMessage(LANG_SELECT_CHAR_OR_CREATURE); + return false; + } + + Aura* aur = target->GetAura(spell->Id); + if (!aur) + { + handler->SendErrorMessage(LANG_COMMAND_AURASTACK_NO_AURA, spell->Id); + return false; + } + + if (!spell->StackAmount) + { + handler->SendErrorMessage(LANG_COMMAND_AURASTACK_CANT_STACK, spell->Id); + return false; + } + + aur->ModStackAmount(stacks); + + return true; + } + static bool HandleUnAuraCommand(ChatHandler* handler, Variant spells) { Unit* target = handler->getSelectedUnit(); From 5f947530b26e6d3d9a6283bb6194008b0c8ac31c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Fri, 26 Jul 2024 23:01:30 +0000 Subject: [PATCH 09/33] chore(DB): import pending files Referenced commit(s): 6e0853dd764aef5bcfabc12cdfcb62586b452e98 --- .../rev_1721586059640959700.sql => db_world/2024_07_26_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1721586059640959700.sql => db_world/2024_07_26_00.sql} (91%) diff --git a/data/sql/updates/pending_db_world/rev_1721586059640959700.sql b/data/sql/updates/db_world/2024_07_26_00.sql similarity index 91% rename from data/sql/updates/pending_db_world/rev_1721586059640959700.sql rename to data/sql/updates/db_world/2024_07_26_00.sql index 5888234d3..05c5b4b1c 100644 --- a/data/sql/updates/pending_db_world/rev_1721586059640959700.sql +++ b/data/sql/updates/db_world/2024_07_26_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_07_25_00 -> 2024_07_26_00 -- DELETE FROM `command` WHERE `name`='aura stack'; INSERT INTO `command` VALUES ('aura stack', 2, 'Syntax: .aurastack #spellid #stacks\r\n\r\nModify #stacks of an already applied #spellid to the selected Unit.'); From 6289be19c7e7c90b8d6ea19ca65a636c96f56afc Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Sat, 27 Jul 2024 00:47:04 +0000 Subject: [PATCH 10/33] fix (Core/Spells): Commanding Shout and Blood Pact remember percentage of health (#19479) * Update SpellAuraEffects.cpp * add comment --- src/server/game/Spells/Auras/SpellAuraEffects.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp index 63af8f62b..2bc4495ba 100644 --- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp +++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp @@ -290,7 +290,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS] = &AuraEffect::HandleNoImmediateEffect, //227 SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE implemented in AuraEffect::PeriodicTick &AuraEffect::HandleNoImmediateEffect, //228 SPELL_AURA_DETECT_STEALTH stealth detection &AuraEffect::HandleNoImmediateEffect, //229 SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE - &AuraEffect::HandleAuraModIncreaseHealth, //230 SPELL_AURA_MOD_INCREASE_HEALTH_2 + &AuraEffect::HandleAuraModIncreaseMaxHealth, //230 SPELL_AURA_MOD_INCREASE_HEALTH_2 only Blood Pact and Commanding Shout &AuraEffect::HandleNoImmediateEffect, //231 SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE &AuraEffect::HandleNoImmediateEffect, //232 SPELL_AURA_MECHANIC_DURATION_MOD implement in Unit::CalculateSpellDuration &AuraEffect::HandleUnused, //233 set model id to the one of the creature with id GetMiscValue() - clientside From f3c561032e0c823023ed340a87d041b73147f2f6 Mon Sep 17 00:00:00 2001 From: Tereneckla Date: Sat, 27 Jul 2024 00:47:46 +0000 Subject: [PATCH 11/33] fix (script/SSC) Enchanted Elementals follow Vashj (#19477) * elementals follow vashj * ) :) --- .../updates/pending_db_world/rev_1721937325469970800.sql | 9 +++++++++ .../CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp | 6 +++++- 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 data/sql/updates/pending_db_world/rev_1721937325469970800.sql diff --git a/data/sql/updates/pending_db_world/rev_1721937325469970800.sql b/data/sql/updates/pending_db_world/rev_1721937325469970800.sql new file mode 100644 index 000000000..095182d81 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1721937325469970800.sql @@ -0,0 +1,9 @@ +-- +DELETE FROM `waypoints` where `entry` = 2195800; + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 21958; + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 21958) AND (`source_type` = 0); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(21958, 0, 0, 0, 75, 0, 100, 0, 0, 21212, 2, 1000, 0, 11, 38044, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Enchanted Elemental - On Distance to Vashj - Cast Spell Surge'), +(21958, 0, 1, 0, 4, 0, 100, 0, 0, 0, 0, 0, 0, 38, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Enchanted Elemental - On Aggro - Set In Combat With Zone'); diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp index 9cc9fadaf..7ecc204b5 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/boss_lady_vashj.cpp @@ -140,7 +140,11 @@ struct boss_lady_vashj : public BossAI { summon->GetMotionMaster()->MoveRandom(30.0f); } - else if (summon->GetEntry() != NPC_TAINTED_ELEMENTAL && summon->GetEntry() != NPC_ENCHANTED_ELEMENTAL) + else if (summon->GetEntry() == NPC_ENCHANTED_ELEMENTAL) + { + summon->GetMotionMaster()->MoveFollow(me, 0.0f, 0.0f); + } + else if (summon->GetEntry() != NPC_TAINTED_ELEMENTAL) { summon->GetMotionMaster()->MovePoint(POINT_HOME, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), true, true); } From 6609b6ac08465c5489a0752ba93cbfa248ea608d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 27 Jul 2024 00:47:54 +0000 Subject: [PATCH 12/33] chore(DB): import pending files Referenced commit(s): 6289be19c7e7c90b8d6ea19ca65a636c96f56afc --- .../rev_1721937325469970800.sql => db_world/2024_07_27_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1721937325469970800.sql => db_world/2024_07_27_00.sql} (95%) diff --git a/data/sql/updates/pending_db_world/rev_1721937325469970800.sql b/data/sql/updates/db_world/2024_07_27_00.sql similarity index 95% rename from data/sql/updates/pending_db_world/rev_1721937325469970800.sql rename to data/sql/updates/db_world/2024_07_27_00.sql index 095182d81..24e1f3b68 100644 --- a/data/sql/updates/pending_db_world/rev_1721937325469970800.sql +++ b/data/sql/updates/db_world/2024_07_27_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_07_26_00 -> 2024_07_27_00 -- DELETE FROM `waypoints` where `entry` = 2195800; From 917c34cf5205735654e6bb4bc4d851da7f36da1a Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Fri, 26 Jul 2024 21:48:33 -0300 Subject: [PATCH 13/33] fix(Scripts/BlackTemple): Move Supremus to TaskScheduler and tweak a bit (#19418) * Update boss_supremus.cpp * Update boss_supremus.cpp * Update boss_supremus.cpp * ble * egh * ye * ermps * ok done * Update SpellInfoCorrections.cpp * Update SpellInfoCorrections.cpp --- .../rev_1721266085348043300.sql | 12 + .../game/Spells/SpellInfoCorrections.cpp | 6 + .../Outland/BlackTemple/boss_supremus.cpp | 210 ++++++++++-------- 3 files changed, 140 insertions(+), 88 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1721266085348043300.sql diff --git a/data/sql/updates/pending_db_world/rev_1721266085348043300.sql b/data/sql/updates/pending_db_world/rev_1721266085348043300.sql new file mode 100644 index 000000000..f2ab42879 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1721266085348043300.sql @@ -0,0 +1,12 @@ +-- +DELETE FROM `creature_text` WHERE (`CreatureID` = 22898); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(22898, 0, 0, 'Supremus acquires a new target!', 41, 0, 100, 0, 0, 0, 21959, 0, 'Supremus'), +(22898, 1, 0, 'Supremus punches the ground in anger!', 41, 0, 100, 53, 0, 0, 21019, 0, 'Supremus'), +(22898, 2, 0, 'The ground begins to crack open!', 41, 0, 100, 0, 0, 0, 21018, 0, 'Supremus'), +(22898, 3, 0, '%s goes into a berserker rage!', 16, 0, 100, 0, 0, 0, 4428, 0, 'Supremus'); + +UPDATE `creature_model_info` SET `CombatReach` = 40 WHERE `DisplayID` = 21145; + +UPDATE `creature_template` SET `AIName` = '', `ScriptName` = 'npc_supremus_punch_invisible_stalker', `speed_run` = 1.28571 WHERE (`entry` = 23095); +DELETE FROM `creature_template_addon` WHERE (`entry` = 23095); diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index e89a66b49..a7cd588b7 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4834,6 +4834,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->AuraInterruptFlags &= ~AURA_INTERRUPT_FLAG_NOT_ABOVEWATER; }); + // Molten Punch + ApplySpellFix({ 40126 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_0].TargetB = SpellImplicitTargetInfo(TARGET_DEST_CASTER); + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; diff --git a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp index d5259faec..7ccd7986e 100644 --- a/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp +++ b/src/server/scripts/Outland/BlackTemple/boss_supremus.cpp @@ -24,76 +24,139 @@ enum Supremus EMOTE_NEW_TARGET = 0, EMOTE_PUNCH_GROUND = 1, EMOTE_GROUND_CRACK = 2, + EMOTE_BERSERK = 3, SPELL_SNARE_SELF = 41922, SPELL_MOLTEN_PUNCH = 40126, + SPELL_MOLTEN_FLAME = 40980, SPELL_HATEFUL_STRIKE = 41926, SPELL_VOLCANIC_ERUPTION = 40276, SPELL_VOLCANIC_ERUPTION_TRIGGER = 40117, - SPELL_BERSERK = 45078, + SPELL_VOLCANIC_GEYSER = 42055, + SPELL_BERSERK = 26662, SPELL_CHARGE = 41581, - NPC_SUPREMUS_PUNCH_STALKER = 23095, + SPELL_SERVERSIDE_RANDOM_TARGET = 41951, // Found in 55261. Used for Fixate target - EVENT_SPELL_BERSERK = 1, - EVENT_SPELL_HATEFUL_STRIKE = 2, - EVENT_SPELL_MOLTEN_FLAMES = 3, - EVENT_SWITCH_PHASE = 4, - EVENT_SPELL_VOLCANIC_ERUPTION = 5, - EVENT_SWITCH_TARGET = 6, - EVENT_CHECK_DIST = 7, + NPC_SUPREMUS_VOLCANO = 23085, - EVENT_GROUP_ABILITIES = 1 + GROUP_ABILITIES = 1, + GROUP_MOLTEN_PUNCH = 2, + GROUP_PHASE_CHANGE = 3 }; struct boss_supremus : public BossAI { - boss_supremus(Creature* creature) : BossAI(creature, DATA_SUPREMUS) { } + boss_supremus(Creature* creature) : BossAI(creature, DATA_SUPREMUS) + { + scheduler.SetValidator([this] + { + return !me->HasUnitState(UNIT_STATE_CASTING); + }); + } + + void Reset() override + { + BossAI::Reset(); + me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false); + me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, false); + } void JustEngagedWith(Unit* who) override { BossAI::JustEngagedWith(who); - SchedulePhase(false); - events.ScheduleEvent(EVENT_SPELL_BERSERK, 900000); - events.ScheduleEvent(EVENT_SPELL_MOLTEN_FLAMES, 4000); + SchedulePhase(true); + + ScheduleTimedEvent(15min, [&] + { + DoCastSelf(SPELL_BERSERK, true); + Talk(EMOTE_BERSERK); + scheduler.CancelGroup(GROUP_ABILITIES); // Supremus stops all other abilities after berserking + scheduler.CancelGroup(GROUP_MOLTEN_PUNCH); + scheduler.CancelGroup(GROUP_PHASE_CHANGE); + }, 5min); + + scheduler.Schedule(20s, [this](TaskContext context) + { + context.SetGroup(GROUP_MOLTEN_PUNCH); + DoCastSelf(SPELL_MOLTEN_PUNCH); + context.Repeat(15s, 20s); + }); } - void SchedulePhase(bool run) + void SchedulePhase(bool isSnared) { - events.CancelEventGroup(EVENT_GROUP_ABILITIES); - events.ScheduleEvent(EVENT_SWITCH_PHASE, 60000); + scheduler.CancelGroup(GROUP_ABILITIES); + + scheduler.Schedule(1min, [this](TaskContext context) + { + context.SetGroup(GROUP_PHASE_CHANGE); + SchedulePhase(me->HasAura(SPELL_SNARE_SELF)); + }); + DoResetThreatList(); - if (!run) + // Hateful Strike Phase + if (isSnared) { - events.ScheduleEvent(EVENT_SPELL_HATEFUL_STRIKE, 5000, EVENT_GROUP_ABILITIES); + scheduler.Schedule(8s, 15s, [this](TaskContext context) + { + context.SetGroup(GROUP_ABILITIES); + + if (Unit* target = FindHatefulStrikeTarget()) + DoCast(target, SPELL_HATEFUL_STRIKE); + + context.Repeat(1500ms, 15s); + }); + + if (me->HasAura(SPELL_SNARE_SELF)) + Talk(EMOTE_PUNCH_GROUND); + me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false); me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, false); me->RemoveAurasDueToSpell(SPELL_SNARE_SELF); } + // Gaze Phase else { - events.ScheduleEvent(EVENT_SPELL_VOLCANIC_ERUPTION, 5000, EVENT_GROUP_ABILITIES); - events.ScheduleEvent(EVENT_SWITCH_TARGET, 0, EVENT_GROUP_ABILITIES); - events.ScheduleEvent(EVENT_CHECK_DIST, 0, EVENT_GROUP_ABILITIES); + DoCastSelf(SPELL_SNARE_SELF, true); + + scheduler.Schedule(5s, [this](TaskContext context) + { + context.SetGroup(GROUP_ABILITIES); + + if (DoCastRandomTarget(SPELL_VOLCANIC_ERUPTION, 0, 100.f, true) == SPELL_CAST_OK) + Talk(EMOTE_GROUND_CRACK); + + context.Repeat(10s, 18s); + }).Schedule(0s, [this](TaskContext context) + { + context.SetGroup(GROUP_ABILITIES); + + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true)) + { + DoResetThreatList(); + me->AddThreat(target, 5000000.0f); + Talk(EMOTE_NEW_TARGET); + DoCastVictim(SPELL_CHARGE); + } + + context.Repeat(10s); + }); + me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, true); me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, true); - me->CastSpell(me, SPELL_SNARE_SELF, true); } } void JustSummoned(Creature* summon) override { summons.Summon(summon); - if (summon->GetEntry() == NPC_SUPREMUS_PUNCH_STALKER) - { - summon->ToTempSummon()->InitStats(20000); - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true)) - summon->GetMotionMaster()->MoveFollow(target, 0.0f, 0.0f, MOTION_SLOT_CONTROLLED); - } - else + if (summon->GetEntry() == NPC_SUPREMUS_VOLCANO) summon->CastSpell(summon, SPELL_VOLCANIC_ERUPTION_TRIGGER, true); + else + summon->ToTempSummon()->InitStats(30000); } void SummonedCreatureDespawn(Creature* summon) override @@ -116,71 +179,42 @@ struct boss_supremus : public BossAI return target; } - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - events.Update(diff); - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - switch (events.ExecuteEvent()) - { - case EVENT_SPELL_BERSERK: - me->CastSpell(me, SPELL_BERSERK, true); - break; - case EVENT_SPELL_HATEFUL_STRIKE: - if (Unit* target = FindHatefulStrikeTarget()) - me->CastSpell(target, SPELL_HATEFUL_STRIKE, false); - events.ScheduleEvent(EVENT_SPELL_HATEFUL_STRIKE, urand(1500, 3000), EVENT_GROUP_ABILITIES); - break; - case EVENT_SPELL_MOLTEN_FLAMES: - me->CastSpell(me, SPELL_MOLTEN_PUNCH, false); - events.ScheduleEvent(EVENT_SPELL_MOLTEN_FLAMES, 20000, EVENT_GROUP_ABILITIES); - break; - case EVENT_SWITCH_PHASE: - SchedulePhase(!me->HasAura(SPELL_SNARE_SELF)); - break; - case EVENT_SWITCH_TARGET: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true)) - { - DoResetThreatList(); - me->AddThreat(target, 5000000.0f); - Talk(EMOTE_NEW_TARGET); - } - events.ScheduleEvent(EVENT_SWITCH_TARGET, 10000, EVENT_GROUP_ABILITIES); - break; - case EVENT_CHECK_DIST: - if (me->GetDistance(me->GetVictim()) > 40.0f) - { - Talk(EMOTE_PUNCH_GROUND); - me->CastSpell(me->GetVictim(), SPELL_CHARGE, true); - events.ScheduleEvent(EVENT_CHECK_DIST, 5000, EVENT_GROUP_ABILITIES); - break; - } - events.ScheduleEvent(EVENT_CHECK_DIST, 1, EVENT_GROUP_ABILITIES); - break; - case EVENT_SPELL_VOLCANIC_ERUPTION: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100, true)) - { - me->CastSpell(target, SPELL_VOLCANIC_ERUPTION, true); - Talk(EMOTE_GROUND_CRACK); - } - events.ScheduleEvent(EVENT_SPELL_VOLCANIC_ERUPTION, urand(10000, 18000), EVENT_GROUP_ABILITIES); - break; - } - - DoMeleeAttackIfReady(); - } - bool CheckEvadeIfOutOfCombatArea() const override { return me->GetPositionX() < 565 || me->GetPositionX() > 865 || me->GetPositionY() < 545 || me->GetPositionY() > 1000; } }; +struct npc_supremus_punch_invisible_stalker : public ScriptedAI +{ + npc_supremus_punch_invisible_stalker(Creature* creature) : ScriptedAI(creature) { } + + void IsSummonedBy(WorldObject* /*summoner*/) override + { + me->SetInCombatWithZone(); + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true)) + me->AddThreat(target, 10000.f); + + DoCastSelf(SPELL_MOLTEN_FLAME, true); + + scheduler.Schedule(6s, 10s, [this](TaskContext /*context*/) + { + me->CombatStop(); + me->SetReactState(REACT_PASSIVE); + }); + } + + void UpdateAI(uint32 diff) override + { + scheduler.Update(diff); + + if (!UpdateVictim()) + return; + } +}; + void AddSC_boss_supremus() { + RegisterBlackTempleCreatureAI(npc_supremus_punch_invisible_stalker); RegisterBlackTempleCreatureAI(boss_supremus); } From 339506cbedab8608f97eeb985f326a14260fbc0d Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 27 Jul 2024 00:48:40 +0000 Subject: [PATCH 14/33] chore(DB): import pending files Referenced commit(s): f3c561032e0c823023ed340a87d041b73147f2f6 --- .../rev_1721266085348043300.sql => db_world/2024_07_27_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1721266085348043300.sql => db_world/2024_07_27_01.sql} (95%) diff --git a/data/sql/updates/pending_db_world/rev_1721266085348043300.sql b/data/sql/updates/db_world/2024_07_27_01.sql similarity index 95% rename from data/sql/updates/pending_db_world/rev_1721266085348043300.sql rename to data/sql/updates/db_world/2024_07_27_01.sql index f2ab42879..aa91427ae 100644 --- a/data/sql/updates/pending_db_world/rev_1721266085348043300.sql +++ b/data/sql/updates/db_world/2024_07_27_01.sql @@ -1,3 +1,4 @@ +-- DB update 2024_07_27_00 -> 2024_07_27_01 -- DELETE FROM `creature_text` WHERE (`CreatureID` = 22898); INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES From 138c18dbd3f9902ee3350467e53480287b14f626 Mon Sep 17 00:00:00 2001 From: atrapalis <104009206+atrapalis@users.noreply.github.com> Date: Sat, 27 Jul 2024 11:18:37 +0100 Subject: [PATCH 15/33] fix(Core/LootMgr): Improved drop checks for items that start quests (#19463) * fix(Core/LootMgr): Improved drop checks for items that start quests to prevent unnecessary or inappropriate drops * Tweaked 2nd condition to only be valid for unique items --- src/server/game/Loot/LootMgr.cpp | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index 182a0f416..5284e5554 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -468,9 +468,20 @@ bool LootItem::AllowedForPlayer(Player const* player, ObjectGuid source) const } // check quest requirements - if (!(pProto->FlagsCu & ITEM_FLAGS_CU_IGNORE_QUEST_STATUS) && ((needs_quest || (pProto->StartQuest && player->GetQuestStatus(pProto->StartQuest) != QUEST_STATUS_NONE)) && !player->HasQuestForItem(itemid))) + if (!(pProto->FlagsCu & ITEM_FLAGS_CU_IGNORE_QUEST_STATUS)) { - return false; + // Don't drop quest items if the player is missing the relevant quest + if (needs_quest && !player->HasQuestForItem(itemid)) + return false; + + // for items that start quests + if (pProto->StartQuest) + { + // Don't drop the item if the player has already finished the quest OR player already has the item in their inventory, and that item is unique OR the player has not finished a prerequisite quest + uint32 prevQuestId = sObjectMgr->GetQuestTemplate(pProto->StartQuest) ? sObjectMgr->GetQuestTemplate(pProto->StartQuest)->GetPrevQuestId() : 0; + if (player->GetQuestStatus(pProto->StartQuest) != QUEST_STATUS_NONE || (player->HasItemCount(itemid, pProto->MaxCount) && pProto->MaxCount) || (prevQuestId && !player->GetQuestRewardStatus(prevQuestId))) + return false; + } } if (!sScriptMgr->OnAllowedForPlayerLootCheck(player, source)) From 3c9dc6ed782b318a056d607d51d5eb7e0d38d540 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Sat, 27 Jul 2024 13:31:22 +0300 Subject: [PATCH 16/33] fix(Core/Unit): Split Damage auras should ignore LOS (#19357) --- src/server/game/Entities/Unit/Unit.cpp | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 8771dc196..939269574 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -2343,7 +2343,7 @@ void Unit::CalcAbsorbResist(DamageInfo& dmgInfo, bool Splited) { // We're going to call functions which can modify content of the list during iteration over it's elements // Let's copy the list so we can prevent iterator invalidation - AuraEffectList vSplitDamageFlatCopy(victim->GetAuraEffectsByType(SPELL_AURA_SPLIT_DAMAGE_FLAT)); + AuraEffectList vSplitDamageFlatCopy(victim->GetAuraEffectsByType(SPELL_AURA_SPLIT_DAMAGE_FLAT)); // Not used by any spell for (AuraEffectList::iterator itr = vSplitDamageFlatCopy.begin(); (itr != vSplitDamageFlatCopy.end()) && (dmgInfo.GetDamage() > 0); ++itr) { // Check if aura was removed during iteration - we don't need to work on such auras @@ -2358,6 +2358,13 @@ void Unit::CalcAbsorbResist(DamageInfo& dmgInfo, bool Splited) if (!caster || (caster == victim) || !caster->IsInWorld() || !caster->IsAlive()) continue; + // Limit effect range to spell's cast range. (Only for single target auras, AreaAuras don't need it) + // Ignore LOS attribute is only used for the cast portion of the spell + SpellInfo const* splitSpellInfo = (*itr)->GetSpellInfo(); + if (!splitSpellInfo->Effects[(*itr)->GetEffIndex()].IsAreaAuraEffect()) + if (!caster->IsWithinDist(victim, splitSpellInfo->GetMaxRange(splitSpellInfo->IsPositive(), caster))) + continue; + int32 splitDamage = (*itr)->GetAmount(); // absorb must be smaller than the damage itself @@ -2418,10 +2425,11 @@ void Unit::CalcAbsorbResist(DamageInfo& dmgInfo, bool Splited) if (!caster || (caster == victim) || !caster->IsInWorld() || !caster->IsAlive()) continue; - // Xinef: Single Target splits require LoS + // Limit effect range to spell's cast range. (Only for single target auras, AreaAuras don't need it) + // Ignore LOS attribute is only used for the cast portion of the spell SpellInfo const* splitSpellInfo = (*itr)->GetSpellInfo(); - if (!splitSpellInfo->Effects[(*itr)->GetEffIndex()].IsAreaAuraEffect() && !splitSpellInfo->HasAttribute(SPELL_ATTR2_IGNORE_LINE_OF_SIGHT)) - if (!caster->IsWithinLOSInMap(victim) || !caster->IsWithinDist(victim, splitSpellInfo->GetMaxRange(splitSpellInfo->IsPositive(), caster))) + if (!splitSpellInfo->Effects[(*itr)->GetEffIndex()].IsAreaAuraEffect()) + if (!caster->IsWithinDist(victim, splitSpellInfo->GetMaxRange(splitSpellInfo->IsPositive(), caster))) continue; uint32 splitDamage = CalculatePct(dmgInfo.GetDamage(), (*itr)->GetAmount()); From e34ce755c8f1c809116298f84b8f2686157a2d77 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sat, 27 Jul 2024 07:32:17 -0300 Subject: [PATCH 17/33] fix(Scripts/ShadowmoonValley): Rewrite Dragonmaw Races (#19084) * init * fly :) * finally * melee attack :/ * Update zone_shadowmoon_valley.cpp Co-Authored-By: Dan <83884799+elthehablo@users.noreply.github.com> * Update zone_shadowmoon_valley.cpp * Update zone_shadowmoon_valley.cpp * Update zone_shadowmoon_valley.cpp --------- Co-authored-by: Dan <83884799+elthehablo@users.noreply.github.com> --- .../rev_1718654756887511000.sql | 683 ++++++++++++++++++ .../game/Spells/SpellInfoCorrections.cpp | 56 -- .../Outland/zone_shadowmoon_valley.cpp | 413 +++++++++++ src/server/scripts/Spells/spell_quest.cpp | 61 +- 4 files changed, 1104 insertions(+), 109 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1718654756887511000.sql diff --git a/data/sql/updates/pending_db_world/rev_1718654756887511000.sql b/data/sql/updates/pending_db_world/rev_1718654756887511000.sql new file mode 100644 index 000000000..667896a29 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1718654756887511000.sql @@ -0,0 +1,683 @@ +-- +DELETE FROM `waypoints` WHERE `entry` IN (23340, 23342, 23344, 23345, 23346, 23348); +DELETE FROM `waypoint_data` WHERE `id` IN (233401, 233421, 233441, 233451, 233461, 233481); +INSERT INTO `waypoint_data` (`id`, `point`, `move_type`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(233401, 1, 0, -5100.37, 646.988, 86.7599, NULL, 0), +(233401, 2, 0, -5098.65, 661.831, 87.0884, NULL, 0), +(233401, 3, 0, -5092.22, 664.335, 87.7356, NULL, 0), +(233401, 4, 2, -5081.35, 664.37, 88.9893, NULL, 1000), +(233401, 5, 2, -5070.53, 664.555, 92.4909, NULL, 0), +(233401, 6, 2, -5058.81, 664.489, 96.6298, NULL, 0), +(233401, 7, 2, -5046.15, 664.428, 97.7964, NULL, 1), +(233401, 8, 2, -5021, 664.601, 115.265, NULL, 0), +(233401, 9, 2, -4996.03, 664.668, 115.265, NULL, 1), +(233401, 10, 2, -4957.75, 673.371, 115.265, NULL, 0), +(233401, 11, 2, -4922.07, 686.952, 115.265, NULL, 0), +(233401, 12, 2, -4892.22, 711.123, 115.265, NULL, 0), +(233401, 13, 2, -4899.89, 760.27, 115.265, NULL, 0), +(233401, 14, 2, -4938.35, 778.532, 115.265, NULL, 0), +(233401, 15, 2, -4971.55, 797.56, 115.265, NULL, 0), +(233401, 16, 2, -5006.85, 803.201, 115.265, NULL, 0), +(233401, 17, 2, -5052.23, 803.834, 115.265, NULL, 0), +(233401, 18, 2, -5084.65, 784.252, 115.265, NULL, 0), +(233401, 19, 2, -5112.79, 768.513, 115.265, NULL, 0), +(233401, 20, 2, -5131.79, 755.461, 115.265, NULL, 0), +(233401, 21, 2, -5156.1, 731.316, 115.265, NULL, 0), +(233401, 22, 2, -5151.25, 703.853, 115.265, NULL, 0), +(233401, 23, 2, -5132.96, 672.912, 115.265, NULL, 0), +(233401, 24, 2, -5098.93, 650.756, 115.265, NULL, 0), +(233401, 25, 2, -5062.08, 634.938, 135.515, NULL, 0), +(233401, 26, 2, -5027.88, 621.561, 129.182, NULL, 0), +(233401, 27, 2, -5011.85, 622.003, 127.895, NULL, 0), +(233401, 28, 2, -4977.22, 627.521, 123.895, NULL, 0), +(233401, 29, 2, -4955.77, 632.843, 106.7, NULL, 0), +(233401, 30, 2, -4959.1, 655.799, 100.423, NULL, 0), +(233401, 31, 2, -4990.86, 667.564, 100.339, NULL, 0), +(233401, 32, 2, -5016.54, 664.335, 95.7095, NULL, 0), +(233401, 33, 2, -5030.56, 664.409, 94.8762, NULL, 0), +(233401, 34, 2, -5053.87, 664.251, 91.2095, NULL, 0), +(233401, 35, 2, -5076.17, 664.152, 89.7373, NULL, 1000), +(233401, 36, 0, -5100.44, 648.419, 86.7599, NULL, 0), +(233401, 37, 0, -5088.56, 640.836, 86.5771, NULL, 0), +(233401, 38, 0, -5088.56, 640.836, 86.5771, 1.48353, 1000), +(233421, 1, 0, -5094.4, 632.768, 86.1046, NULL, 0), +(233421, 2, 0, -5099.95, 639.856, 86.3643, NULL, 0), +(233421, 3, 0, -5098.76, 659.273, 87.076, NULL, 0), +(233421, 4, 0, -5089.76, 664.925, 88.0305, NULL, 0), +(233421, 5, 2, -5077.38, 664.52, 89.2393, NULL, 1000), +(233421, 6, 2, -5070.05, 664.137, 90.7223, NULL, 0), +(233421, 7, 2, -5058.12, 664.464, 94.0557, NULL, 1), +(233421, 8, 2, -5053.48, 664.35, 98.5706, NULL, 0), +(233421, 9, 2, -5038.57, 663.922, 98.5706, NULL, 1), +(233421, 10, 2, -5019.74, 677.138, 105.154, NULL, 0), +(233421, 11, 2, -5005.49, 696.076, 105.154, NULL, 0), +(233421, 12, 2, -5003.47, 736.425, 109.74, NULL, 0), +(233421, 13, 2, -5014.97, 758.279, 138.269, NULL, 0), +(233421, 14, 2, -5049.92, 776.35, 154.991, NULL, 0), +(233421, 15, 2, -5088.13, 764.156, 147.296, NULL, 0), +(233421, 16, 2, -5109.33, 751.045, 147.296, NULL, 0), +(233421, 17, 2, -5139.67, 725.494, 147.296, NULL, 0), +(233421, 18, 2, -5155.8, 699.152, 135.435, NULL, 0), +(233421, 19, 2, -5168.65, 673.146, 135.435, NULL, 0), +(233421, 20, 2, -5170.58, 645.918, 135.435, NULL, 0), +(233421, 21, 2, -5169.89, 609.869, 135.435, NULL, 0), +(233421, 22, 2, -5166.88, 572.151, 135.435, NULL, 0), +(233421, 23, 2, -5166.38, 546.221, 135.435, NULL, 0), +(233421, 24, 2, -5149.06, 514.885, 135.435, NULL, 0), +(233421, 25, 2, -5117.41, 493.835, 135.435, NULL, 0), +(233421, 26, 2, -5071.81, 485.48, 135.435, NULL, 0), +(233421, 27, 2, -5049.22, 487.59, 135.435, NULL, 0), +(233421, 28, 2, -5016.19, 497.714, 135.435, NULL, 0), +(233421, 29, 2, -4997.89, 513.475, 135.435, NULL, 0), +(233421, 30, 2, -4969.01, 530.662, 135.435, NULL, 0), +(233421, 31, 2, -4928.23, 535.105, 135.435, NULL, 0), +(233421, 32, 2, -4888.21, 519.617, 135.435, NULL, 0), +(233421, 33, 2, -4861.23, 501.207, 135.435, NULL, 0), +(233421, 34, 2, -4851.03, 486.339, 135.435, NULL, 0), +(233421, 35, 2, -4846.36, 450.828, 133.685, NULL, 0), +(233421, 36, 2, -4859.99, 421.521, 120.241, NULL, 0), +(233421, 37, 2, -4884.15, 398.159, 119.435, NULL, 0), +(233421, 38, 2, -4918.61, 387.173, 120.047, NULL, 0), +(233421, 39, 2, -4957.88, 395.052, 120.047, NULL, 0), +(233421, 40, 2, -4977.37, 423.309, 107.408, NULL, 0), +(233421, 41, 2, -4999.41, 454.014, 107.408, NULL, 0), +(233421, 42, 2, -5015.12, 480.192, 107.408, NULL, 0), +(233421, 43, 2, -4997.81, 519.803, 107.408, NULL, 0), +(233421, 44, 2, -4969.67, 535.146, 122.963, NULL, 0), +(233421, 45, 2, -4927.67, 545.658, 122.963, NULL, 0), +(233421, 46, 2, -4910.17, 580.597, 120.519, NULL, 0), +(233421, 47, 2, -4923.05, 609.633, 116.324, NULL, 0), +(233421, 48, 2, -4939.96, 638.041, 111.491, NULL, 0), +(233421, 49, 2, -4966.52, 654.275, 107.38, NULL, 0), +(233421, 50, 2, -4993.77, 664.459, 106.213, NULL, 0), +(233421, 51, 2, -5009.62, 664.365, 100.21, NULL, 0), +(233421, 52, 2, -5070.05, 664.137, 90.7223, NULL, 0), +(233421, 53, 2, -5077.38, 664.52, 89.2393, NULL, 1000), +(233421, 54, 0, -5089.76, 664.925, 88.0305, NULL, 0), +(233421, 55, 0, -5098.76, 659.273, 87.076, NULL, 0), +(233421, 56, 0, -5100.57, 656.389, 87.0099, NULL, 0), +(233421, 57, 0, -5100.55, 640.057, 86.3792, NULL, 0), +(233421, 58, 0, -5082.93, 631.039, 86.1046, NULL, 0), +(233421, 59, 0, -5081.62, 640.932, 86.5885, NULL, 0), +(233421, 60, 0, -5081.62, 640.932, 86.5885, 1.5708, 1000), +(233441, 1, 0, -5084.94, 633.847, 86.2393, NULL, 0), +(233441, 2, 0, -5098.98, 634.78, 86.1005, NULL, 0), +(233441, 3, 0, -5101.35, 648.966, 86.7599, NULL, 0), +(233441, 4, 0, -5098.78, 663.636, 86.9992, NULL, 0), +(233441, 5, 0, -5079.28, 664.713, 89.1636, NULL, 0), +(233441, 6, 2, -5070.44, 664.366, 89.4647, NULL, 1000), +(233441, 7, 2, -5058.83, 663.925, 92.7363, NULL, 0), +(233441, 8, 2, -5037.87, 660.034, 100.014, NULL, 0), +(233441, 9, 2, -5024.24, 636.49, 112.425, NULL, 1), +(233441, 10, 2, -5005.37, 618.802, 128.807, NULL, 0), +(233441, 11, 2, -4966.56, 600.253, 129.057, NULL, 0), +(233441, 12, 2, -4965.98, 571.086, 129.057, NULL, 1), +(233441, 13, 2, -4991.4, 536.436, 129.057, NULL, 0), +(233441, 14, 2, -5020.62, 520.326, 129.057, NULL, 0), +(233441, 15, 2, -5055.5, 518.844, 129.057, NULL, 0), +(233441, 16, 2, -5102.8, 514.149, 129.057, NULL, 0), +(233441, 17, 2, -5149.53, 501.968, 124.223, NULL, 0), +(233441, 18, 2, -5181.65, 487.443, 124.223, NULL, 0), +(233441, 19, 2, -5203.6, 463.616, 124.223, NULL, 0), +(233441, 20, 2, -5222.08, 438.511, 124.223, NULL, 0), +(233441, 21, 2, -5233.96, 425.771, 124.223, NULL, 0), +(233441, 22, 2, -5246.47, 408.212, 114.39, NULL, 0), +(233441, 23, 2, -5263.94, 380.577, 82.779, NULL, 0), +(233441, 24, 2, -5281.14, 345.57, 75.1401, NULL, 0), +(233441, 25, 2, -5284.63, 312.442, 75.1401, NULL, 0), +(233441, 26, 2, -5263, 275.308, 75.1401, NULL, 0), +(233441, 27, 2, -5245.18, 265.079, 73.2512, NULL, 0), +(233441, 28, 2, -5215.76, 265.471, 73.2512, NULL, 0), +(233441, 29, 2, -5205.02, 235.15, 76.7235, NULL, 0), +(233441, 30, 2, -5209.55, 197.783, 76.7235, NULL, 0), +(233441, 31, 2, -5208.26, 150.234, 76.7235, NULL, 0), +(233441, 32, 2, -5191.55, 109.156, 93.6679, NULL, 0), +(233441, 33, 2, -5182.56, 85.7365, 107.474, NULL, 0), +(233441, 34, 2, -5168.65, 57.2013, 127.946, NULL, 0), +(233441, 35, 2, -5135.73, 46.9901, 139.529, NULL, 0), +(233441, 36, 2, -5105.78, 50.7013, 139.529, NULL, 0), +(233441, 37, 2, -5071.62, 45.8154, 139.529, NULL, 0), +(233441, 38, 2, -5034.69, 35.1466, 139.529, NULL, 0), +(233441, 39, 2, -5005.95, 1.38531, 139.529, NULL, 0), +(233441, 40, 2, -5000.31, -36.848, 139.529, NULL, 0), +(233441, 41, 2, -5008.46, -64.052, 139.529, NULL, 0), +(233441, 42, 2, -5035.05, -104.214, 139.529, NULL, 0), +(233441, 43, 2, -5072.07, -126.925, 139.529, NULL, 0), +(233441, 44, 2, -5107.34, -132.044, 139.529, NULL, 0), +(233441, 45, 2, -5147.94, -120.151, 139.529, NULL, 0), +(233441, 46, 2, -5172.3, -102.554, 139.529, NULL, 0), +(233441, 47, 2, -5189.56, -64.9996, 139.529, NULL, 0), +(233441, 48, 2, -5192.56, -46.8847, 139.529, NULL, 0), +(233441, 49, 2, -5207.22, -7.99826, 139.529, NULL, 0), +(233441, 50, 2, -5208.9, 16.188, 139.529, NULL, 0), +(233441, 51, 2, -5210, 47.6719, 139.529, NULL, 0), +(233441, 52, 2, -5229.47, 71.0223, 139.529, NULL, 0), +(233441, 53, 2, -5259.86, 84.1998, 139.529, NULL, 0), +(233441, 54, 2, -5280.49, 98.1187, 139.529, NULL, 0), +(233441, 55, 2, -5304.44, 119.29, 128.473, NULL, 0), +(233441, 56, 2, -5313.48, 160.796, 102.807, NULL, 0), +(233441, 57, 2, -5320.65, 207.804, 102.807, NULL, 0), +(233441, 58, 2, -5315.59, 246.939, 102.807, NULL, 0), +(233441, 59, 2, -5282.78, 257.402, 102.807, NULL, 0), +(233441, 60, 2, -5234.21, 264.51, 91.1957, NULL, 0), +(233441, 61, 2, -5196.72, 279.294, 75.7234, NULL, 0), +(233441, 62, 2, -5181.7, 301.347, 77.8346, NULL, 0), +(233441, 63, 2, -5179.59, 316.744, 77.8346, NULL, 0), +(233441, 64, 2, -5177.29, 343.483, 77.8346, NULL, 0), +(233441, 65, 2, -5198.28, 388.512, 82.3068, NULL, 0), +(233441, 66, 2, -5190.08, 423.921, 103.723, NULL, 0), +(233441, 67, 2, -5161.91, 456.27, 103.723, NULL, 0), +(233441, 68, 2, -5143.63, 481.956, 103.723, NULL, 0), +(233441, 69, 2, -5108.33, 497.817, 103.723, NULL, 0), +(233441, 70, 2, -5065.66, 502.812, 103.723, NULL, 0), +(233441, 71, 2, -5026.66, 514.378, 103.723, NULL, 0), +(233441, 72, 2, -4986.5, 536.506, 103.723, NULL, 0), +(233441, 73, 2, -4954.44, 567.902, 103.723, NULL, 0), +(233441, 74, 2, -4956.34, 597.605, 103.723, NULL, 0), +(233441, 75, 2, -4974.39, 635.569, 103.723, NULL, 0), +(233441, 76, 2, -4996.33, 664.304, 96.3901, NULL, 0), +(233441, 77, 2, -5021.77, 663.95, 91.9039, NULL, 0), +(233441, 78, 2, -5041.21, 664.085, 91.3206, NULL, 0), +(233441, 79, 2, -5066.21, 663.694, 89.5984, NULL, 1000), +(233441, 80, 0, -5080.02, 661.667, 89.3029, NULL, 0), +(233441, 81, 0, -5085.77, 660.917, 88.5529, NULL, 0), +(233441, 82, 0, -5090.77, 660.167, 88.0529, NULL, 0), +(233441, 83, 0, -5096.77, 659.417, 87.5529, NULL, 0), +(233441, 84, 0, -5097.77, 659.167, 87.5529, NULL, 0), +(233441, 85, 0, -5099.33, 643.641, 86.5073, NULL, 0), +(233441, 86, 0, -5092.37, 632.173, 86.0829, NULL, 0), +(233441, 87, 0, -5092.22, 632.455, 86.5775, NULL, 0), +(233441, 88, 0, -5072.73, 632.078, 86.1046, NULL, 0), +(233441, 89, 0, -5072.65, 632.353, 86.2818, NULL, 1000), +(233441, 90, 0, -5072.99, 640.034, 86.4807, NULL, 0), +(233441, 91, 0, -5072.99, 640.034, 86.4807, 1.60313, 0), +(233451, 1, 0, -5091.53, 631.927, 86.1046, NULL, 0), +(233451, 2, 0, -5099.33, 638.213, 86.3643, NULL, 0), +(233451, 3, 0, -5098.52, 660.355, 87.1143, NULL, 0), +(233451, 4, 2, -5078.78, 664.369, 89.2393, NULL, 1000), +(233451, 5, 2, -5070, 664.126, 89.4732, NULL, 0), +(233451, 6, 2, -5045.99, 664.543, 90.3484, NULL, 0), +(233451, 7, 2, -5020.85, 664.327, 91.7373, NULL, 0), +(233451, 8, 2, -4988.7, 666.305, 92.8206, NULL, 0), +(233451, 9, 2, -4951.69, 663.513, 100.967, NULL, 0), +(233451, 10, 2, -4922.13, 645.658, 103.717, NULL, 0), +(233451, 11, 2, -4914.61, 596.992, 103.717, NULL, 0), +(233451, 12, 2, -4939.85, 571.188, 103.717, NULL, 1), +(233451, 13, 2, -4969.14, 547.841, 103.717, NULL, 0), +(233451, 14, 2, -4993.97, 528.656, 103.717, NULL, 0), +(233451, 15, 2, -5002.94, 506.945, 103.717, NULL, 0), +(233451, 16, 2, -5004.99, 482.972, 103.717, NULL, 0), +(233451, 17, 2, -4994.16, 457.018, 103.717, NULL, 0), +(233451, 18, 2, -4982.75, 435.674, 103.717, NULL, 0), +(233451, 19, 2, -4968.98, 413.116, 103.717, NULL, 0), +(233451, 20, 2, -4952.02, 390.879, 103.717, NULL, 0), +(233451, 21, 2, -4918.82, 380.166, 86.273, NULL, 0), +(233451, 22, 2, -4891.81, 384.83, 103.717, NULL, 0), +(233451, 23, 2, -4870.95, 388.626, 103.717, NULL, 0), +(233451, 24, 2, -4839.09, 373.696, 103.717, NULL, 0), +(233451, 25, 2, -4835.83, 344.134, 103.717, NULL, 0), +(233451, 26, 2, -4847.14, 297.331, 103.717, NULL, 0), +(233451, 27, 2, -4873.64, 255.017, 103.717, NULL, 0), +(233451, 28, 2, -4912.1, 234.305, 85.6897, NULL, 0), +(233451, 29, 2, -4948.94, 231.966, 89.3841, NULL, 0), +(233451, 30, 2, -4985.91, 223.645, 109.245, NULL, 0), +(233451, 31, 2, -5005.91, 180.523, 103.717, NULL, 0), +(233451, 32, 2, -5002.69, 144.423, 93.2174, NULL, 0), +(233451, 33, 2, -5000.45, 107.818, 97.6619, NULL, 0), +(233451, 34, 2, -5001.4, 88.902, 97.6619, NULL, 0), +(233451, 35, 2, -4992.56, 59.601, 97.6619, NULL, 0), +(233451, 36, 2, -4973.05, 35.046, 97.6619, NULL, 0), +(233451, 37, 2, -4950.33, 16.3997, 97.6619, NULL, 0), +(233451, 38, 2, -4919.71, -7.58724, 97.6619, NULL, 0), +(233451, 39, 2, -4895.12, -24.4617, 97.6619, NULL, 0), +(233451, 40, 2, -4873.84, -56.4621, 97.6619, NULL, 0), +(233451, 41, 2, -4878.95, -78.3702, 97.6619, NULL, 0), +(233451, 42, 2, -4900.98, -96.3223, 124.551, NULL, 0), +(233451, 43, 2, -4938.92, -97.6536, 140.884, NULL, 0), +(233451, 44, 2, -4947.49, -70.9423, 139.27, NULL, 0), +(233451, 45, 2, -4962.08, -45.1169, 118.714, NULL, 0), +(233451, 46, 2, -4985.61, -3.70757, 104.436, NULL, 0), +(233451, 47, 2, -5007.2, 21.712, 104.436, NULL, 0), +(233451, 48, 2, -5035.34, 34.8622, 104.436, NULL, 0), +(233451, 49, 2, -5077.72, 45.1653, 83.8252, NULL, 0), +(233451, 50, 2, -5122.02, 50.8705, 85.7419, NULL, 0), +(233451, 51, 2, -5163.29, 41.7148, 112.992, NULL, 0), +(233451, 52, 2, -5185.47, 38.4489, 155.797, NULL, 0), +(233451, 53, 2, -5215.35, 32.1226, 192.603, NULL, 0), +(233451, 54, 2, -5251.43, 11.9092, 192.603, NULL, 0), +(233451, 55, 2, -5270.69, 35.8796, 192.603, NULL, 0), +(233451, 56, 2, -5269.64, 61.3236, 192.603, NULL, 0), +(233451, 57, 2, -5229.23, 77.3804, 192.603, NULL, 0), +(233451, 58, 2, -5199.31, 80.3291, 192.603, NULL, 0), +(233451, 59, 2, -5162.09, 96.1893, 163.047, NULL, 0), +(233451, 60, 2, -5116.33, 114.777, 156.103, NULL, 0), +(233451, 61, 2, -5104.88, 161.948, 144.02, NULL, 0), +(233451, 62, 2, -5106.1, 210.706, 141.131, NULL, 0), +(233451, 63, 2, -5100.37, 254.993, 151.63, NULL, 0), +(233451, 64, 2, -5094.82, 294.723, 165.923, NULL, 0), +(233451, 65, 2, -5072.27, 323.058, 173.471, NULL, 0), +(233451, 66, 2, -5042.43, 354.911, 179.332, NULL, 0), +(233451, 67, 2, -5031.14, 402.77, 182.737, NULL, 0), +(233451, 68, 2, -5023.53, 437.579, 182.737, NULL, 0), +(233451, 69, 2, -5021.06, 461.707, 157.542, NULL, 0), +(233451, 70, 2, -5061.28, 480.605, 134.32, NULL, 0), +(233451, 71, 2, -5101.12, 489.571, 134.32, NULL, 0), +(233451, 72, 2, -5131.54, 478.553, 134.32, NULL, 0), +(233451, 73, 2, -5154.21, 459.828, 134.32, NULL, 0), +(233451, 74, 2, -5173.37, 424.965, 134.32, NULL, 0), +(233451, 75, 2, -5176.19, 388.636, 134.32, NULL, 0), +(233451, 76, 2, -5178.22, 359.567, 134.32, NULL, 0), +(233451, 77, 2, -5177.09, 334.062, 134.32, NULL, 0), +(233451, 78, 2, -5184.36, 290.924, 134.32, NULL, 0), +(233451, 79, 2, -5200.44, 273.444, 134.32, NULL, 0), +(233451, 80, 2, -5243.27, 262.792, 134.32, NULL, 0), +(233451, 81, 2, -5263.35, 272.447, 134.32, NULL, 0), +(233451, 82, 2, -5280.75, 294.987, 134.32, NULL, 0), +(233451, 83, 2, -5285.51, 322.787, 134.32, NULL, 0), +(233451, 84, 2, -5279.47, 359.639, 134.32, NULL, 0), +(233451, 85, 2, -5272.3, 381.99, 134.32, NULL, 0), +(233451, 86, 2, -5257.37, 401.587, 134.32, NULL, 0), +(233451, 87, 2, -5234.98, 422.171, 128.931, NULL, 0), +(233451, 88, 2, -5221.28, 434.735, 124.793, NULL, 0), +(233451, 89, 2, -5204.38, 446.819, 115.237, NULL, 0), +(233451, 90, 2, -5166.36, 467.195, 115.237, NULL, 0), +(233451, 91, 2, -5123.75, 489.651, 115.237, NULL, 0), +(233451, 92, 2, -5089.29, 501.894, 115.237, NULL, 0), +(233451, 93, 2, -5050.14, 500.767, 115.237, NULL, 0), +(233451, 94, 2, -5022.08, 515.106, 115.237, NULL, 0), +(233451, 95, 2, -5004.62, 526.253, 115.237, NULL, 0), +(233451, 96, 2, -4987.25, 539.744, 115.237, NULL, 0), +(233451, 97, 2, -4967.14, 557.431, 115.237, NULL, 0), +(233451, 98, 2, -4954.63, 576.606, 115.237, NULL, 0), +(233451, 99, 2, -4941.9, 596.954, 115.237, NULL, 0), +(233451, 100, 2, -4937.9, 622.101, 115.237, NULL, 0), +(233451, 101, 2, -4942.42, 647.049, 115.237, NULL, 0), +(233451, 102, 2, -4955.86, 657.939, 105.154, NULL, 0), +(233451, 103, 2, -4987.66, 666.589, 95.0425, NULL, 0), +(233451, 104, 2, -5012.21, 663.787, 93.4317, NULL, 0), +(233451, 105, 2, -5029.56, 664.063, 92.4873, NULL, 0), +(233451, 106, 2, -5046.77, 664.192, 91.5984, NULL, 0), +(233451, 107, 2, -5065.81, 664.103, 89.5151, NULL, 1000), +(233451, 108, 0, -5097.22, 643.818, 86.6143, NULL, 0), +(233451, 109, 0, -5082.63, 631.642, 86.1046, NULL, 0), +(233451, 110, 0, -5065.9, 639.835, 86.4967, NULL, 0), +(233451, 111, 0, -5066.31, 640.214, 86.4967, NULL, 0), +(233451, 112, 0, -5066.31, 640.214, 86.4967, 1.55334, 1000), +(233461, 1, 0, -5078.13, 632.794, 86.1046, NULL, 0), +(233461, 2, 0, -5096.17, 634.173, 86.2617, NULL, 0), +(233461, 3, 0, -5099.56, 647.333, 86.7393, NULL, 0), +(233461, 4, 0, -5096.42, 663.513, 87.2312, NULL, 0), +(233461, 5, 2, -5078.93, 664.554, 89.2393, NULL, 1000), +(233461, 6, 2, -5047.58, 664.479, 90.0984, NULL, 0), +(233461, 7, 2, -5029.15, 664.606, 91.8484, NULL, 0), +(233461, 8, 2, -5001.7, 665.021, 94.5706, NULL, 0), +(233461, 9, 2, -4980.51, 664.026, 94.5706, NULL, 1), +(233461, 10, 2, -4951.83, 664.387, 93.0396, NULL, 0), +(233461, 11, 2, -4913.11, 661.812, 90.5396, NULL, 0), +(233461, 12, 2, -4887.88, 689.685, 86.7341, NULL, 1), +(233461, 13, 2, -4885.2, 719.211, 86.7341, NULL, 0), +(233461, 14, 2, -4905.21, 763.206, 86.7341, NULL, 0), +(233461, 15, 2, -4948.71, 781.429, 78.373, NULL, 0), +(233461, 16, 2, -4977.9, 809.792, 95.7341, NULL, 0), +(233461, 17, 2, -4988.85, 809.721, 89.6508, NULL, 0), +(233461, 18, 2, -5011.91, 818.067, 89.6508, NULL, 0), +(233461, 19, 2, -5051.19, 819.738, 89.6508, NULL, 0), +(233461, 20, 2, -5083.58, 797.402, 89.6508, NULL, 0), +(233461, 21, 2, -5114.21, 773.344, 72.7341, NULL, 0), +(233461, 22, 2, -5143.49, 764.99, 65.0675, NULL, 0), +(233461, 23, 2, -5185.28, 762.507, 65.0675, NULL, 0), +(233461, 24, 2, -5213.92, 765.252, 65.0675, NULL, 0), +(233461, 25, 2, -5257.46, 784.766, 65.0675, NULL, 0), +(233461, 26, 2, -5278.25, 777.822, 65.0675, NULL, 0), +(233461, 27, 2, -5294.25, 755.341, 65.0675, NULL, 0), +(233461, 28, 2, -5296.9, 729.18, 65.0675, NULL, 0), +(233461, 29, 2, -5289.13, 702.037, 65.0675, NULL, 0), +(233461, 30, 2, -5273.8, 666.173, 62.5675, NULL, 0), +(233461, 31, 2, -5267.91, 638.255, 52.5119, NULL, 0), +(233461, 32, 2, -5260.28, 622.614, 56.0675, NULL, 0), +(233461, 33, 2, -5245.02, 611.943, 66.2063, NULL, 0), +(233461, 34, 2, -5200.1, 604.664, 86.9852, NULL, 0), +(233461, 35, 2, -5181.16, 590.698, 89.2907, NULL, 0), +(233461, 36, 2, -5185.52, 548.609, 94.3185, NULL, 0), +(233461, 37, 2, -5167.71, 522.758, 94.3185, NULL, 0), +(233461, 38, 2, -5137.54, 504.232, 94.3185, NULL, 0), +(233461, 39, 2, -5102.65, 499.669, 94.3185, NULL, 0), +(233461, 40, 2, -5064.48, 492.931, 94.3185, NULL, 0), +(233461, 41, 2, -5035.06, 477.99, 104.068, NULL, 0), +(233461, 42, 2, -5001.8, 454.669, 104.068, NULL, 0), +(233461, 43, 2, -4978.69, 423.28, 104.068, NULL, 0), +(233461, 44, 2, -4968.23, 394.66, 104.068, NULL, 0), +(233461, 45, 2, -4970.74, 356.361, 97.0963, NULL, 0), +(233461, 46, 2, -4981.94, 320.598, 96.2629, NULL, 0), +(233461, 47, 2, -5000.34, 287.576, 96.2629, NULL, 0), +(233461, 48, 2, -5024.31, 263.462, 97.124, NULL, 0), +(233461, 49, 2, -5033.6, 245.432, 99.7021, NULL, 0), +(233461, 50, 2, -5043.81, 220.882, 109.368, NULL, 0), +(233461, 51, 2, -5055.69, 189.882, 121.604, NULL, 0), +(233461, 52, 2, -5065.02, 177.909, 129.701, NULL, 0), +(233461, 53, 2, -5093.46, 175.051, 135.203, NULL, 0), +(233461, 54, 2, -5104.9, 192.934, 143.814, NULL, 0), +(233461, 55, 2, -5108.27, 222.6, 143.814, NULL, 0), +(233461, 56, 2, -5096.2, 260.223, 155.97, NULL, 0), +(233461, 57, 2, -5092.7, 300.505, 168.029, NULL, 0), +(233461, 58, 2, -5064.83, 341.267, 173.623, NULL, 0), +(233461, 59, 2, -5046.67, 359.677, 175.401, NULL, 0), +(233461, 60, 2, -5017.94, 369.279, 177.651, NULL, 0), +(233461, 61, 2, -4990.09, 370.236, 177.651, NULL, 0), +(233461, 62, 2, -4946.64, 373.19, 173.29, NULL, 0), +(233461, 63, 2, -4904.02, 381.053, 154.401, NULL, 0), +(233461, 64, 2, -4873.26, 409.159, 154.401, NULL, 0), +(233461, 65, 2, -4858.19, 449.2, 154.401, NULL, 0), +(233461, 66, 2, -4860.12, 475.325, 154.401, NULL, 0), +(233461, 67, 2, -4874, 522.436, 154.401, NULL, 0), +(233461, 68, 2, -4907.66, 539.01, 154.401, NULL, 0), +(233461, 69, 2, -4937.98, 542.913, 154.401, NULL, 0), +(233461, 70, 2, -4984.79, 534.658, 154.401, NULL, 0), +(233461, 71, 2, -5016.35, 516.837, 154.401, NULL, 0), +(233461, 72, 2, -5045.82, 504.145, 154.401, NULL, 0), +(233461, 73, 2, -5067, 496.776, 154.401, NULL, 0), +(233461, 74, 2, -5092.52, 477.682, 154.401, NULL, 0), +(233461, 75, 2, -5113.31, 451.805, 150.79, NULL, 0), +(233461, 76, 2, -5145.34, 430.147, 148.262, NULL, 0), +(233461, 77, 2, -5159.41, 401.433, 136.818, NULL, 0), +(233461, 78, 2, -5177.6, 380.364, 135.095, NULL, 0), +(233461, 79, 2, -5177.56, 335.603, 122.401, NULL, 0), +(233461, 80, 2, -5183.72, 292.314, 122.401, NULL, 0), +(233461, 81, 2, -5214.58, 264.121, 122.401, NULL, 0), +(233461, 82, 2, -5238.5, 265.325, 113.095, NULL, 0), +(233461, 83, 2, -5270.4, 270.162, 113.095, NULL, 0), +(233461, 84, 2, -5295.31, 259.114, 113.095, NULL, 0), +(233461, 85, 2, -5311.03, 222.108, 113.095, NULL, 0), +(233461, 86, 2, -5342.25, 192.532, 113.095, NULL, 0), +(233461, 87, 2, -5347.23, 154.911, 113.095, NULL, 0), +(233461, 88, 2, -5320.38, 112.08, 113.095, NULL, 0), +(233461, 89, 2, -5278.58, 88.2244, 113.095, NULL, 0), +(233461, 90, 2, -5258.17, 55.2496, 113.095, NULL, 0), +(233461, 91, 2, -5251.67, 14.115, 113.095, NULL, 0), +(233461, 92, 2, -5249.78, -21.1848, 125.651, NULL, 0), +(233461, 93, 2, -5257.27, -54.0995, 129.734, NULL, 0), +(233461, 94, 2, -5277.01, -99.7471, 132.957, NULL, 0), +(233461, 95, 2, -5297.23, -105.679, 130.457, NULL, 0), +(233461, 96, 2, -5340.31, -104.858, 130.457, NULL, 0), +(233461, 97, 2, -5367.75, -96.7698, 130.457, NULL, 0), +(233461, 98, 2, -5383.33, -62.2326, 130.457, NULL, 0), +(233461, 99, 2, -5365.7, -35.2706, 130.457, NULL, 0), +(233461, 100, 2, -5340.35, -18.7096, 130.457, NULL, 0), +(233461, 101, 2, -5309.31, 9.52919, 130.457, NULL, 0), +(233461, 102, 2, -5289.22, 14.5796, 130.457, NULL, 0), +(233461, 103, 2, -5263.4, 19.9974, 130.457, NULL, 0), +(233461, 104, 2, -5232.5, 13.4538, 130.457, NULL, 0), +(233461, 105, 2, -5204.18, -19.4328, 130.457, NULL, 0), +(233461, 106, 2, -5182.8, -62.5757, 118.012, NULL, 0), +(233461, 107, 2, -5174.8, -84.4816, 118.012, NULL, 0), +(233461, 108, 2, -5162.56, -103.819, 118.012, NULL, 0), +(233461, 109, 2, -5131.97, -113.721, 118.012, NULL, 0), +(233461, 110, 2, -5096.79, -121.859, 118.012, NULL, 0), +(233461, 111, 2, -5065.52, -109.858, 118.012, NULL, 0), +(233461, 112, 2, -5042.26, -85.5908, 118.012, NULL, 0), +(233461, 113, 2, -5019.14, -62.0904, 98.8177, NULL, 0), +(233461, 114, 2, -4997.55, -36.6445, 92.6232, NULL, 0), +(233461, 115, 2, -4968.95, -1.82498, 85.901, NULL, 0), +(233461, 116, 2, -4934.68, 27.9422, 70.401, NULL, 0), +(233461, 117, 2, -4902.9, 45.4913, 59.9566, NULL, 0), +(233461, 118, 2, -4884.46, 46.5106, 45.4566, NULL, 0), +(233461, 119, 2, -4867.73, 45.3931, -0.654566, NULL, 0), +(233461, 120, 2, -4854.79, 31.7114, -4.71012, NULL, 0), +(233461, 121, 2, -4852.75, -1.65929, 1.81766, NULL, 0), +(233461, 122, 2, -4861.77, -29.4093, 36.5562, NULL, 0), +(233461, 123, 2, -4882.45, -29.9407, 74.6349, NULL, 0), +(233461, 124, 2, -4910.11, -50.9237, 104.127, NULL, 0), +(233461, 125, 2, -4922.27, -66.6852, 140.715, NULL, 0), +(233461, 126, 2, -4949.06, -51.4962, 135.409, NULL, 0), +(233461, 127, 2, -4952.38, -44.9067, 116.631, NULL, 0), +(233461, 128, 2, -4964.53, -33.2068, 108.076, NULL, 0), +(233461, 129, 2, -4983.42, 4.73774, 108.076, NULL, 0), +(233461, 130, 2, -4966.23, 46.293, 108.076, NULL, 0), +(233461, 131, 2, -4946.93, 79.2772, 108.076, NULL, 0), +(233461, 132, 2, -4927.34, 105.78, 108.076, NULL, 0), +(233461, 133, 2, -4903.62, 139.424, 108.076, NULL, 0), +(233461, 134, 2, -4908.83, 173.529, 108.076, NULL, 0), +(233461, 135, 2, -4899.3, 207.258, 108.076, NULL, 0), +(233461, 136, 2, -4894.79, 241.964, 100.548, NULL, 0), +(233461, 137, 2, -4876.02, 262.596, 100.548, NULL, 0), +(233461, 138, 2, -4851.94, 285.569, 100.548, NULL, 0), +(233461, 139, 2, -4845.69, 327.728, 100.548, NULL, 0), +(233461, 140, 2, -4845.24, 359.997, 95.8813, NULL, 0), +(233461, 141, 2, -4847.69, 391.29, 95.8813, NULL, 0), +(233461, 142, 2, -4859.13, 419.06, 95.8813, NULL, 0), +(233461, 143, 2, -4856.9, 465.859, 95.8813, NULL, 0), +(233461, 144, 2, -4876.19, 509.121, 95.8813, NULL, 0), +(233461, 145, 2, -4916.56, 535.192, 95.8813, NULL, 0), +(233461, 146, 2, -4941.46, 566.507, 95.8813, NULL, 0), +(233461, 147, 2, -4956.07, 605.605, 95.8813, NULL, 0), +(233461, 148, 2, -4967.99, 629.467, 95.8813, NULL, 0), +(233461, 149, 2, -4992.87, 657.32, 95.8813, NULL, 0), +(233461, 150, 2, -5019.96, 663.826, 95.8813, NULL, 0), +(233461, 151, 2, -5049.4, 663.944, 98.9369, NULL, 0), +(233461, 152, 2, -5085.37, 666.438, 105.104, NULL, 0), +(233461, 153, 2, -5114.09, 670.052, 107.326, NULL, 0), +(233461, 154, 2, -5129.29, 676.247, 107.326, NULL, 0), +(233461, 155, 2, -5134.55, 693.208, 107.326, NULL, 0), +(233461, 156, 2, -5124.75, 712.939, 107.326, NULL, 0), +(233461, 157, 2, -5091.65, 711.245, 104.52, NULL, 0), +(233461, 158, 2, -5069.82, 674.891, 104.52, NULL, 0), +(233461, 159, 2, -5061.35, 667.04, 104.52, NULL, 0), +(233461, 160, 2, -5019.67, 666.805, 104.52, NULL, 0), +(233461, 161, 2, -5000.67, 667.434, 104.52, NULL, 0), +(233461, 162, 2, -4993.28, 669.959, 104.52, NULL, 0), +(233461, 163, 2, -5002.19, 664.52, 97.9317, NULL, 0), +(233461, 164, 2, -5017.09, 664.354, 96.1539, NULL, 0), +(233461, 165, 2, -5040.19, 664.205, 90.4039, NULL, 0), +(233461, 166, 2, -5090.22, 663.832, 87.9751, NULL, 1000), +(233461, 167, 0, -5101.21, 660.542, 87.0099, NULL, 0), +(233461, 168, 0, -5102.08, 639.858, 86.3849, NULL, 0), +(233461, 169, 0, -5091.96, 630.356, 86.1317, NULL, 0), +(233461, 170, 0, -5078.23, 633.279, 86.1046, NULL, 0), +(233461, 171, 0, -5062.34, 632.852, 86.1767, NULL, 0), +(233461, 172, 0, -5060.47, 640.301, 86.6452, NULL, 0), +(233461, 173, 0, -5060.47, 640.301, 86.6452, 1.50098, 1000), +(233481, 1, 0, -5097.34, 638.205, 86.3706, NULL, 0), +(233481, 2, 0, -5099.04, 662.449, 87.0423, NULL, 0), +(233481, 3, 2, -5079.38, 664.281, 89.1507, NULL, 1000), +(233481, 4, 2, -5059.08, 664.368, 90.9583, NULL, 0), +(233481, 5, 2, -5034.28, 664.231, 90.9583, NULL, 0), +(233481, 6, 2, -5008.98, 664.152, 90.9583, NULL, 0), +(233481, 7, 2, -4987.99, 664.833, 93.1249, NULL, 4000), +(233481, 8, 2, -4957.93, 667.114, 89.677, NULL, 0), +(233481, 9, 2, -4923.51, 679.043, 89.677, NULL, 0), +(233481, 10, 2, -4907.64, 683.5, 89.677, NULL, 1), +(233481, 11, 2, -4883.63, 694.949, 89.677, NULL, 0), +(233481, 12, 2, -4850.15, 676.802, 89.677, NULL, 0), +(233481, 13, 2, -4864.9, 632.557, 89.677, NULL, 0), +(233481, 14, 2, -4910.24, 633.471, 89.677, NULL, 0), +(233481, 15, 2, -4946.94, 659.101, 89.677, NULL, 0), +(233481, 16, 2, -4995.13, 667.061, 94.927, NULL, 0), +(233481, 17, 2, -5029.88, 666.031, 94.927, NULL, 0), +(233481, 18, 2, -5065.31, 666.973, 103.621, NULL, 0), +(233481, 19, 2, -5091.27, 666.216, 117.482, NULL, 0), +(233481, 20, 2, -5132.5, 678.947, 117.482, NULL, 0), +(233481, 21, 2, -5160.83, 695.71, 117.482, NULL, 0), +(233481, 22, 2, -5189.03, 715.383, 117.482, NULL, 0), +(233481, 23, 2, -5218.2, 743.721, 117.482, NULL, 0), +(233481, 24, 2, -5246.88, 753.911, 117.482, NULL, 0), +(233481, 25, 2, -5291.25, 736.572, 117.482, NULL, 0), +(233481, 26, 2, -5297.69, 704.018, 117.482, NULL, 0), +(233481, 27, 2, -5294.14, 669.929, 117.482, NULL, 0), +(233481, 28, 2, -5283.43, 645.69, 117.482, NULL, 0), +(233481, 29, 2, -5274.71, 617.43, 117.482, NULL, 0), +(233481, 30, 2, -5275.44, 576.711, 117.482, NULL, 0), +(233481, 31, 2, -5275.69, 532.828, 94.3714, NULL, 0), +(233481, 32, 2, -5270.5, 488.192, 78.177, NULL, 0), +(233481, 33, 2, -5275.35, 443.787, 67.0103, NULL, 0), +(233481, 34, 2, -5282.69, 395.932, 67.0103, NULL, 0), +(233481, 35, 2, -5284.52, 357.451, 67.0103, NULL, 0), +(233481, 36, 2, -5297.13, 321.834, 75.3158, NULL, 0), +(233481, 37, 2, -5305.33, 287.949, 67.0103, NULL, 0), +(233481, 38, 2, -5324.95, 244.868, 67.0103, NULL, 0), +(233481, 39, 2, -5356.36, 222.88, 74.177, NULL, 0), +(233481, 40, 2, -5372.03, 179.211, 74.177, NULL, 0), +(233481, 41, 2, -5334.38, 148.986, 74.177, NULL, 0), +(233481, 42, 2, -5315.29, 119.5, 74.177, NULL, 0), +(233481, 43, 2, -5293.33, 83.5764, 74.177, NULL, 0), +(233481, 44, 2, -5277.18, 50.7105, 74.177, NULL, 0), +(233481, 45, 2, -5255.61, 8.40484, 74.177, NULL, 0), +(233481, 46, 2, -5224.43, -18.2412, 101.344, NULL, 0), +(233481, 47, 2, -5203.02, -50.2617, 113.121, NULL, 0), +(233481, 48, 2, -5177.76, -81.7928, 113.121, NULL, 0), +(233481, 49, 2, -5153.06, -109.168, 113.121, NULL, 0), +(233481, 50, 2, -5112.36, -123.955, 113.121, NULL, 0), +(233481, 51, 2, -5075.53, -120.103, 113.121, NULL, 0), +(233481, 52, 2, -5034.09, -103.74, 113.121, NULL, 0), +(233481, 53, 2, -4989.26, -83.9691, 113.121, NULL, 0), +(233481, 54, 2, -4952.2, -82.1155, 113.121, NULL, 0), +(233481, 55, 2, -4930.28, -71.9154, 134.939, NULL, 0), +(233481, 56, 2, -4903.26, -46.9919, 119.55, NULL, 0), +(233481, 57, 2, -4892.43, -14.3984, 119.55, NULL, 0), +(233481, 58, 2, -4901.1, 29.4554, 119.55, NULL, 0), +(233481, 59, 2, -4921.16, 50.8561, 119.55, NULL, 0), +(233481, 60, 2, -4960.64, 51.1532, 119.55, NULL, 0), +(233481, 61, 2, -5007.94, 44.2818, 113.967, NULL, 0), +(233481, 62, 2, -5049.16, 46.3472, 113.967, NULL, 0), +(233481, 63, 2, -5081.97, 51.2345, 113.967, NULL, 0), +(233481, 64, 2, -5109.11, 52.6926, 113.967, NULL, 0), +(233481, 65, 2, -5153.79, 53.4137, 113.967, NULL, 0), +(233481, 66, 2, -5194.33, 78.2347, 113.967, NULL, 0), +(233481, 67, 2, -5200.14, 112.977, 113.967, NULL, 0), +(233481, 68, 2, -5210.66, 155.044, 113.967, NULL, 0), +(233481, 69, 2, -5209.59, 202.733, 113.967, NULL, 0), +(233481, 70, 2, -5206.82, 249.795, 113.967, NULL, 0), +(233481, 71, 2, -5195.31, 281.593, 113.967, NULL, 0), +(233481, 72, 2, -5175.32, 312.856, 113.967, NULL, 0), +(233481, 73, 2, -5176.31, 350.463, 113.967, NULL, 0), +(233481, 74, 2, -5197.36, 384.485, 113.967, NULL, 0), +(233481, 75, 2, -5206.27, 401.401, 113.967, NULL, 0), +(233481, 76, 2, -5210.94, 427.598, 113.967, NULL, 0), +(233481, 77, 2, -5204.98, 464.869, 113.967, NULL, 0), +(233481, 78, 2, -5193.15, 501.41, 113.967, NULL, 0), +(233481, 79, 2, -5180.75, 540.264, 113.967, NULL, 0), +(233481, 80, 2, -5174.9, 567.82, 113.967, NULL, 0), +(233481, 81, 2, -5159.24, 594.904, 113.967, NULL, 0), +(233481, 82, 2, -5132.96, 612.103, 113.967, NULL, 0), +(233481, 83, 2, -5111.18, 618.453, 115.633, NULL, 0), +(233481, 84, 2, -5082.1, 643.451, 127.189, NULL, 0), +(233481, 85, 2, -5051.16, 666.218, 134.578, NULL, 0), +(233481, 86, 2, -5023.22, 672.118, 134.578, NULL, 0), +(233481, 87, 2, -4998.41, 675.911, 134.578, NULL, 0), +(233481, 88, 2, -4964.07, 667.405, 134.578, NULL, 0), +(233481, 89, 2, -4945.45, 649.256, 134.578, NULL, 0), +(233481, 90, 2, -4929.72, 618.043, 134.578, NULL, 0), +(233481, 91, 2, -4933.03, 597.607, 134.578, NULL, 0), +(233481, 92, 2, -4950.77, 560.419, 134.578, NULL, 0), +(233481, 93, 2, -4986.16, 534.748, 134.578, NULL, 0), +(233481, 94, 2, -5027.69, 507.007, 140.522, NULL, 0), +(233481, 95, 2, -5063.99, 482.611, 161.022, NULL, 0), +(233481, 96, 2, -5079.09, 444.718, 188.578, NULL, 0), +(233481, 97, 2, -5081.96, 401.005, 210.887, NULL, 0), +(233481, 98, 2, -5080.92, 379.728, 222.748, NULL, 0), +(233481, 99, 2, -5088.47, 350.896, 222.748, NULL, 0), +(233481, 100, 2, -5101.87, 322.287, 222.748, NULL, 0), +(233481, 101, 2, -5108.48, 280.242, 222.748, NULL, 0), +(233481, 102, 2, -5108.4, 250.032, 222.748, NULL, 0), +(233481, 103, 2, -5116.87, 216.985, 222.748, NULL, 0), +(233481, 104, 2, -5109.27, 175.025, 222.748, NULL, 0), +(233481, 105, 2, -5088.9, 150.668, 222.748, NULL, 0), +(233481, 106, 2, -5060.4, 142.947, 222.748, NULL, 0), +(233481, 107, 2, -5048.86, 136.867, 222.748, NULL, 0), +(233481, 108, 2, -5028.83, 136.097, 222.748, NULL, 0), +(233481, 109, 2, -5014.03, 134.363, 222.748, NULL, 0), +(233481, 110, 2, -4976.75, 133.063, 190.471, NULL, 0), +(233481, 111, 2, -4939.16, 144.454, 190.471, NULL, 0), +(233481, 112, 2, -4909.59, 167.547, 190.471, NULL, 0), +(233481, 113, 2, -4901.98, 203.9, 160.637, NULL, 0), +(233481, 114, 2, -4923.4, 237.469, 163.832, NULL, 0), +(233481, 115, 2, -4957.85, 242.402, 167.137, NULL, 0), +(233481, 116, 2, -4979.88, 241.209, 167.137, NULL, 0), +(233481, 117, 2, -5010.28, 221.407, 167.137, NULL, 0), +(233481, 118, 2, -5046.93, 191.875, 167.137, NULL, 0), +(233481, 119, 2, -5085.21, 182.271, 167.137, NULL, 0), +(233481, 120, 2, -5091.65, 219.236, 167.137, NULL, 0), +(233481, 121, 2, -5091.76, 256.497, 198.359, NULL, 0), +(233481, 122, 2, -5073.09, 284.982, 198.359, NULL, 0), +(233481, 123, 2, -5056.15, 305.894, 198.359, NULL, 0), +(233481, 124, 2, -5033.99, 340.742, 198.359, NULL, 0), +(233481, 125, 2, -5013.55, 366.655, 198.359, NULL, 0), +(233481, 126, 2, -4985.13, 398.56, 198.359, NULL, 0), +(233481, 127, 2, -4951.7, 419.768, 198.359, NULL, 0), +(233481, 128, 2, -4927.77, 437.405, 174.859, NULL, 0), +(233481, 129, 2, -4905.9, 452.86, 174.859, NULL, 0), +(233481, 130, 2, -4904.51, 474.815, 174.859, NULL, 0), +(233481, 131, 2, -4909.35, 491.21, 174.859, NULL, 0), +(233481, 132, 2, -4906.71, 508.801, 174.859, NULL, 0), +(233481, 133, 2, -4904.04, 524.842, 174.859, NULL, 0), +(233481, 134, 2, -4903.66, 545.825, 174.859, NULL, 0), +(233481, 135, 2, -4910.83, 565.414, 174.859, NULL, 0), +(233481, 136, 2, -4923.35, 594.048, 147.248, NULL, 0), +(233481, 137, 2, -4936.45, 624.762, 130.304, NULL, 0), +(233481, 138, 2, -4970.29, 650.181, 106.609, NULL, 0), +(233481, 139, 2, -4991.41, 664.588, 103.276, NULL, 0), +(233481, 140, 2, -5100.78, 656.943, 87.0099, NULL, 1000), +(233481, 141, 0, -5099.94, 642.533, 86.4336, NULL, 0), +(233481, 142, 0, -5095.81, 633.678, 86.2393, NULL, 0), +(233481, 143, 0, -5084.07, 627.694, 85.9796, NULL, 0), +(233481, 144, 0, -5074.52, 625.243, 85.7579, NULL, 0), +(233481, 145, 0, -5074.88, 625.448, 85.721, NULL, 0), +(233481, 146, 0, -5074.88, 625.448, 85.721, 1.5708, 1000); + +DELETE FROM `creature_text` WHERE (`CreatureID` = 23348); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(23348, 0, 0, 'Prepare a funeral pyre! $N has challenged Skyshatter!', 14, 0, 100, 0, 0, 0, 21430, 0, 'Captain Skyshatter'), +(23348, 1, 0, 'I... I am undone... The new top orc is $N!', 14, 0, 100, 0, 0, 0, 21431, 0, 'Captain Skyshatter'), +(23348, 2, 0, 'I weep for you, $N. You really have no idea what you\'ve gotten yourself into...', 12, 0, 100, 0, 0, 0, 21432, 0, 'Captain Skyshatter'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` IN (23340, 23342, 23344, 23345, 23346, 23348)); +UPDATE `creature_template` SET `AIName` = '', `ScriptName` = 'dragonmaw_race_npc' WHERE (`entry` IN (23340, 23342, 23344, 23345, 23346, 23348)); + +DELETE FROM `creature_template_movement` WHERE (`CreatureId` IN (23356, 23357, 23358, 23359, 23360, 23361)); +INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES +(23356, 0, 0, 1, 1, 0, 0, 0), +(23357, 0, 0, 1, 1, 0, 0, 0), +(23358, 0, 0, 1, 1, 0, 0, 0), +(23359, 0, 0, 1, 1, 0, 0, 0), +(23360, 0, 0, 1, 1, 0, 0, 0), +(23361, 0, 0, 1, 1, 0, 0, 0); + +DELETE FROM `creature_template_movement` WHERE (`CreatureId` IN (23340, 23342, 23344, 23345, 23346, 23348)); +INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`, `InteractionPauseTimer`) VALUES +(23340, 1, 0, 2, 0, 0, 0, 0), +(23342, 1, 0, 2, 0, 0, 0, 0), +(23344, 1, 0, 2, 0, 0, 0, 0), +(23345, 1, 0, 2, 0, 0, 0, 0), +(23346, 1, 0, 2, 0, 0, 0, 0), +(23348, 1, 0, 2, 0, 0, 0, 0); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` IN (23356, 23357, 23358, 23359, 23360, 23361); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` IN (23356, 23357, 23358, 23359, 23360, 23361)); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(23356, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 86, 40890, 2, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Oldie\'s Target - On Just Summoned - Cross Cast \'Oldie\'s Rotten Pumpkin\''), +(23356, 0, 1, 0, 8, 0, 100, 0, 40890, 0, 0, 0, 0, 0, 11, 40905, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Oldie\'s Target - On Spellhit \'Oldie\'s Rotten Pumpkin\' - Cast \'Oldie\'s Rotten Pumpkin Knockdown\''), + +(23357, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 86, 40909, 2, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Trope\'s Target - On Just Summoned - Cross Cast \'Trope\'s Slime Cannon\''), +(23357, 0, 1, 0, 8, 0, 100, 0, 40909, 0, 0, 0, 0, 0, 11, 40905, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Trope\'s Target - On Spellhit \'Trope\'s Slime Cannon\' - Cast \'Oldie\'s Rotten Pumpkin Knockdown\''), + +(23358, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 86, 40894, 2, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Corlok\'s Target - On Just Summoned - Cross Cast \'Corlok\'s Skull Barrage\''), +(23358, 0, 1, 0, 8, 0, 100, 0, 40894, 0, 0, 0, 0, 0, 11, 40900, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Corlok\'s Target - On Spellhit \'Corlok\'s Skull Barrage\' - Cast \'Corlok\'s Skull Barrage Knockdown\''), + +(23359, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 86, 40928, 2, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Ichman\'s Target - On Just Summoned - Cross Cast \'Ichman\'s Blazing Fireball\''), +(23359, 0, 1, 0, 8, 0, 100, 0, 40928, 0, 0, 0, 0, 0, 11, 40929, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Ichman\'s Target - On Spellhit \'Ichman\'s Blazing Fireball\' - Cast \'Ichman\'s Blazing Fireball Knockdown\''), + +(23360, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 86, 40931, 2, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Mulverick\'s Target - On Just Summoned - Cross Cast \'Mulverick\'s Great Balls of Lightning\''), + +(23361, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 0, 0, 86, 40945, 2, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Oldie\'s Target - On Just Summoned - Cross Cast \'Sky Shatter\''), +(23361, 0, 1, 0, 8, 0, 100, 0, 40945, 0, 0, 0, 0, 0, 11, 41064, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Oldie\'s Target - On Spellhit \'Sky Shatter\' - Cast \'Sky Shatter\''); + +DELETE FROM `smart_scripts` WHERE (`entryorguid` IN (23356, 23357, 23358, 23359, 23360, 23361)) AND (`source_type` = 0) AND (`id` IN (2)); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(23356, 0, 2, 0, 37, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Target - On Initialize - Set Reactstate Passive'), +(23357, 0, 2, 0, 37, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Target - On Initialize - Set Reactstate Passive'), +(23358, 0, 2, 0, 37, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Target - On Initialize - Set Reactstate Passive'), +(23359, 0, 2, 0, 37, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Target - On Initialize - Set Reactstate Passive'), +(23360, 0, 2, 0, 37, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Target - On Initialize - Set Reactstate Passive'), +(23361, 0, 2, 0, 37, 0, 100, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Dragonmaw Race: Target - On Initialize - Set Reactstate Passive'); + +DELETE FROM `spell_script_names` WHERE `spell_id` IN (40890, 40894, 40909, 40928, 40930, 40945) AND `ScriptName`='spell_quest_dragonmaw_race_generic'; diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index a7cd588b7..df0f6d901 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -3607,62 +3607,6 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].RadiusEntry = sSpellRadiusStore.LookupEntry(EFFECT_RADIUS_10_YARDS); // 10yd }); - // Dragonmaw Race: All parts - ApplySpellFix({ - 40890 // Oldie's Rotten Pumpkin - }, [](SpellInfo* spellInfo) - { - spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION; - spellInfo->Effects[EFFECT_0].TriggerSpell = 40905; - spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE; - spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST); - }); - - // Trope's Slime Cannon - ApplySpellFix({ 40909 }, [](SpellInfo* spellInfo) - { - spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION; - spellInfo->Effects[EFFECT_0].TriggerSpell = 40905; - spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE; - spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST); - }); - - // Corlok's Skull Barrage - ApplySpellFix({ 40894 }, [](SpellInfo* spellInfo) - { - spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION; - spellInfo->Effects[EFFECT_0].TriggerSpell = 40900; - spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE; - spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST); - }); - - // Ichman's Blazing Fireball - ApplySpellFix({ 40928 }, [](SpellInfo* spellInfo) - { - spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION; - spellInfo->Effects[EFFECT_0].TriggerSpell = 40929; - spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE; - spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST); - }); - - // Mulverick's Great Balls of Lightning - ApplySpellFix({ 40930 }, [](SpellInfo* spellInfo) - { - spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION; - spellInfo->Effects[EFFECT_0].TriggerSpell = 40931; - spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE; - spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST); - }); - - // Sky Shatter - ApplySpellFix({ 40945 }, [](SpellInfo* spellInfo) - { - spellInfo->Targets |= TARGET_FLAG_DEST_LOCATION; - spellInfo->Effects[EFFECT_0].TriggerSpell = 41064; - spellInfo->Effects[EFFECT_0].Effect = SPELL_EFFECT_TRIGGER_MISSILE; - spellInfo->Effects[EFFECT_0].TargetA = SpellImplicitTargetInfo(TARGET_DEST_DEST); - }); - // Gauging the Resonant Frequency (10594) ApplySpellFix({ 37390 }, [](SpellInfo* spellInfo) { diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index 0243fbf51..760c2faec 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -1818,6 +1818,418 @@ public: } }; +/* +###### +# Dragonmaw Races +###### +*/ + +enum DragonmawRaces +{ + QUEST_MUCKJAW = 11064, + QUEST_TROPE = 11067, + QUEST_CORLOK = 11068, + QUEST_ICHMAN = 11069, + QUEST_MULVERICK = 11070, + QUEST_SKYSHATTER = 11071, + + NPC_MUCKJAW = 23340, + NPC_TROPE = 23342, + NPC_CORLOK = 23344, + NPC_ICHMAN = 23345, + NPC_MULVERICK = 23346, + NPC_SKYSHATTER = 23348, + + PATH_MUCKJAW = 233401, + PATH_TROPE = 233421, + PATH_CORLOK = 233441, + PATH_ICHMAN = 233451, + PATH_MULVERICK = 233461, + PATH_SKYSHATTER = 233481, + + NPC_TARGET_MUCKJAW = 23356, + NPC_TARGET_TROPE = 23357, + NPC_TARGET_CORLOK = 23358, + NPC_TARGET_ICHMAN = 23359, + NPC_TARGET_MULVERICK = 23360, + NPC_TARGET_SKYSHATTER = 23361, + + SAY_START = 0, + SAY_COMPLETE = 1, + SAY_SKYSHATTER_SPECIAL = 2, +}; + +struct dragonmaw_race_npc : public ScriptedAI +{ + dragonmaw_race_npc(Creature* creature) : ScriptedAI(creature) + { + _player = nullptr; + } + + void Reset() override + { + scheduler.CancelAll(); + me->SetNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); + me->SetWalk(true); + me->SetDisableGravity(false); + me->GetMotionMaster()->MoveIdle(); + } + + void sQuestAccept(Player* player, Quest const* /*quest*/) override + { + _player = player; + me->RemoveNpcFlag(UNIT_NPC_FLAG_QUESTGIVER); + if (_player) + Talk(SAY_START, _player); + + switch (me->GetEntry()) + { + case NPC_MUCKJAW: + me->GetMotionMaster()->MovePath(PATH_MUCKJAW, false); + break; + case NPC_TROPE: + me->GetMotionMaster()->MovePath(PATH_TROPE, false); + break; + case NPC_CORLOK: + me->GetMotionMaster()->MovePath(PATH_CORLOK, false); + break; + case NPC_ICHMAN: + me->GetMotionMaster()->MovePath(PATH_ICHMAN, false); + break; + case NPC_MULVERICK: + me->GetMotionMaster()->MovePath(PATH_MULVERICK, false); + break; + case NPC_SKYSHATTER: + me->GetMotionMaster()->MovePath(PATH_SKYSHATTER, false); + break; + default: + break; + } + } + + void TakeOff() + { + me->SetDisableGravity(true); + } + + void StartRace() + { + me->SetWalk(false); + ScheduleTimedEvent(5s, [&] + { + if (!_player) + FailQuest(); + else if (!me->IsWithinDist(_player, 100.f)) + FailQuest(); + }, 5s); + } + + void FailQuest() + { + if (_player) + { + switch (me->GetEntry()) + { + case NPC_MUCKJAW: + _player->FailQuest(QUEST_MUCKJAW); + break; + case NPC_TROPE: + _player->FailQuest(QUEST_TROPE); + break; + case NPC_CORLOK: + _player->FailQuest(QUEST_CORLOK); + break; + case NPC_ICHMAN: + _player->FailQuest(QUEST_ICHMAN); + break; + case NPC_MULVERICK: + _player->FailQuest(QUEST_MULVERICK); + break; + case NPC_SKYSHATTER: + _player->FailQuest(QUEST_SKYSHATTER); + break; + default: + break; + } + } + scheduler.CancelAll(); + me->DespawnOnEvade(); + } + + void StartRaceAttacks() + { + /* + * Timers are placeholders + * After spawned, the rest is done via SmartAI + */ + if (!_player) + return; + + switch (me->GetEntry()) + { + case NPC_MUCKJAW: + ScheduleTimedEvent(4s, [&] + { + if (_player) + { + Position summonPos; + summonPos = me->GetRandomPoint(_player->GetPosition(), 15.f); + summonPos.m_positionZ = _player->GetPositionZ(); // So they don't spawn at ground height + me->SummonCreature(NPC_TARGET_MUCKJAW, summonPos, TEMPSUMMON_TIMED_DESPAWN, 10000); + } + else + return; + }, 4s, 8s); + break; + case NPC_TROPE: + ScheduleTimedEvent(4s, [&] + { + if (_player) + { + Position summonPos; + summonPos = me->GetRandomPoint(_player->GetPosition(), 10.f); + summonPos.m_positionZ = _player->GetPositionZ(); + me->SummonCreature(NPC_TARGET_TROPE, summonPos, TEMPSUMMON_TIMED_DESPAWN, 10000); + } + else + return; + }, 1s, 3s); + break; + case NPC_CORLOK: + ScheduleTimedEvent(4s, [&] + { + if (_player) + { + Position summonPos; + summonPos = me->GetRandomPoint(_player->GetPosition(), 10.f); + summonPos.m_positionZ = _player->GetPositionZ(); + me->SummonCreature(NPC_TARGET_CORLOK, summonPos, TEMPSUMMON_TIMED_DESPAWN, 10000); + } + else + return; + }, 1s, 3s); + break; + case NPC_ICHMAN: + ScheduleTimedEvent(4s, [&] + { + if (_player) + { + Position summonPos; + summonPos = me->GetRandomPoint(_player->GetPosition(), 10.f); + summonPos.m_positionZ = _player->GetPositionZ(); + me->SummonCreature(NPC_TARGET_ICHMAN, summonPos, TEMPSUMMON_TIMED_DESPAWN, 10000); + } + else + return; + }, 1s, 3s); + break; + case NPC_MULVERICK: + ScheduleTimedEvent(4s, [&] + { + if (_player) + { + Position summonPos; + summonPos = me->GetRandomPoint(_player->GetPosition(), 10.f); + summonPos.m_positionZ = _player->GetPositionZ(); + me->SummonCreature(NPC_TARGET_MULVERICK, summonPos, TEMPSUMMON_TIMED_DESPAWN, 10000); + } + else + return; + }, 1s, 3s); + break; + case NPC_SKYSHATTER: + ScheduleTimedEvent(4s, [&] + { + if (_player) + { + Position summonPos; + summonPos = me->GetRandomPoint(_player->GetPosition(), 7.f); + summonPos.m_positionZ = _player->GetPositionZ(); // So they don't spawn at ground height + me->SummonCreature(NPC_TARGET_SKYSHATTER, summonPos, TEMPSUMMON_TIMED_DESPAWN, 10000); + } + else + return; + }, 1s, 3s); + break; + default: + break; + } + } + + void FinishRace() + { + scheduler.CancelAll(); + me->SetHover(false); + me->SetDisableGravity(false); + me->SetWalk(true); + + if (_player) + { + Talk(SAY_COMPLETE, _player); + switch (me->GetEntry()) + { + case NPC_MUCKJAW: + _player->AreaExploredOrEventHappens(QUEST_MUCKJAW); + break; + case NPC_TROPE: + _player->AreaExploredOrEventHappens(QUEST_TROPE); + break; + case NPC_CORLOK: + _player->AreaExploredOrEventHappens(QUEST_CORLOK); + break; + case NPC_ICHMAN: + _player->AreaExploredOrEventHappens(QUEST_ICHMAN); + break; + case NPC_MULVERICK: + _player->AreaExploredOrEventHappens(QUEST_MULVERICK); + break; + case NPC_SKYSHATTER: + _player->AreaExploredOrEventHappens(QUEST_SKYSHATTER); + break; + default: + break; + } + } + } + + void MovementInform(uint32 /*type*/, uint32 id) override + { + switch (me->GetEntry()) + { + case NPC_MUCKJAW: + switch (id) + { + case 4: + TakeOff(); + break; + case 7: + StartRace(); + break; + case 9: + StartRaceAttacks(); + break; + case 35: + FinishRace(); + break; + case 37: + Reset(); + break; + } + break; + case NPC_TROPE: + switch (id) + { + case 5: + TakeOff(); + break; + case 7: + StartRace(); + break; + case 10: + StartRaceAttacks(); + break; + case 53: + FinishRace(); + break; + case 60: + Reset(); + break; + } + break; + case NPC_CORLOK: + switch (id) + { + case 6: + TakeOff(); + break; + case 9: + StartRace(); + break; + case 12: + StartRaceAttacks(); + break; + case 79: + FinishRace(); + break; + case 89: + Reset(); + break; + } + break; + case NPC_ICHMAN: + switch (id) + { + case 4: + TakeOff(); + StartRace(); + break; + case 12: + StartRaceAttacks(); + break; + case 107: + FinishRace(); + break; + case 111: + Reset(); + break; + } + break; + case NPC_MULVERICK: + switch (id) + { + case 5: + TakeOff(); + break; + case 9: + StartRace(); + break; + case 12: + StartRaceAttacks(); + break; + case 166: + FinishRace(); + break; + case 172: + Reset(); + break; + } + break; + case NPC_SKYSHATTER: + switch (id) + { + case 3: + TakeOff(); + break; + case 7: + StartRace(); + if (_player) + Talk(SAY_SKYSHATTER_SPECIAL, _player); + break; + case 10: + StartRaceAttacks(); + break; + case 140: + FinishRace(); + break; + case 145: + Reset(); + break; + } + break; + default: + break; + } + } + + void UpdateAI(uint32 diff) override + { + scheduler.Update(diff); + } + + private: + Player* _player; +}; + void AddSC_shadowmoon_valley() { // Ours @@ -1825,6 +2237,7 @@ void AddSC_shadowmoon_valley() RegisterSpellScript(spell_q10563_q10596_to_legion_hold_aura); // Theirs + RegisterCreatureAI(dragonmaw_race_npc); new npc_invis_infernal_caster(); new npc_infernal_attacker(); new npc_mature_netherwing_drake(); diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 7519981de..d1f88f153 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -436,68 +436,24 @@ enum q11520Roots SPELL_SUMMON_RAZORTHORN_ROOT = 44941, }; - class spell_q11520_discovering_your_roots : public SpellScript - { - PrepareSpellScript(spell_q11520_discovering_your_roots); - - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (GameObject* go = GetCaster()->FindNearestGameObject(GO_RAZORTHORN_DIRT_MOUNT, 20.0f)) - { - GetCaster()->GetMotionMaster()->MovePoint(0, *go); - go->SetLootState(GO_JUST_DEACTIVATED); - GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_RAZORTHORN_ROOT, true); - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_q11520_discovering_your_roots::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - -class spell_quest_dragonmaw_race_generic : public SpellScript +class spell_q11520_discovering_your_roots : public SpellScript { - PrepareSpellScript(spell_quest_dragonmaw_race_generic); + PrepareSpellScript(spell_q11520_discovering_your_roots); - bool Load() override + void HandleDummy(SpellEffIndex /*effIndex*/) { - _x = _y = _z = 0.0f; - return true; - } - - SpellCastResult RelocateDest() - { - Unit* caster = GetCaster(); - float o = Position::NormalizeOrientation(caster->GetOrientation() + frand(0.0f, 2 * M_PI)); - float dist = frand(5.0f, 30.0f); - _x = caster->GetPositionX() + dist * cos(o); - _y = caster->GetPositionY() + dist * std::sin(o); - _z = caster->GetPositionZ() + frand(-10.0f, 15.0f); - GetSpell()->m_targets.SetDst(_x, _y, _z, 0.0f, caster->GetMapId()); - return SPELL_CAST_OK; - } - - void ChangeDest(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - Unit* caster = GetCaster(); - if (Creature* trigger = caster->SummonCreature(23356, _x, _y, _z, 0.0f, TEMPSUMMON_TIMED_DESPAWN, 1500)) + if (GameObject* go = GetCaster()->FindNearestGameObject(GO_RAZORTHORN_DIRT_MOUNT, 20.0f)) { - trigger->CastSpell(trigger, GetSpellInfo()->Effects[effIndex].TriggerSpell, true); - if (GetSpellInfo()->Effects[effIndex].TriggerSpell == 41064) - trigger->CastSpell(trigger, 41284, true); + GetCaster()->GetMotionMaster()->MovePoint(0, *go); + go->SetLootState(GO_JUST_DEACTIVATED); + GetCaster()->CastSpell(GetCaster(), SPELL_SUMMON_RAZORTHORN_ROOT, true); } } void Register() override { - OnCheckCast += SpellCheckCastFn(spell_quest_dragonmaw_race_generic::RelocateDest); - OnEffectHit += SpellEffectFn(spell_quest_dragonmaw_race_generic::ChangeDest, EFFECT_0, SPELL_EFFECT_TRIGGER_MISSILE); + OnEffectHitTarget += SpellEffectFn(spell_q11520_discovering_your_roots::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } - -private: - float _x, _y, _z; }; class spell_q11670_it_was_the_orcs_honest : public SpellScript @@ -2508,7 +2464,6 @@ void AddSC_quest_spell_scripts() RegisterSpellScript(spell_q12943_shadow_vault_decree); RegisterSpellAndAuraScriptPair(spell_q10769_dissension_amongst_the_ranks, spell_q10769_dissension_amongst_the_ranks_aura); RegisterSpellScript(spell_q11520_discovering_your_roots); - RegisterSpellScript(spell_quest_dragonmaw_race_generic); RegisterSpellScript(spell_q11670_it_was_the_orcs_honest); RegisterSpellScript(spell_quest_test_flight_charging); RegisterSpellScript(spell_q12274_a_fall_from_grace_costume); From 5da3e2e688e6047ecfcb0be9e51bf8cc826811f6 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sat, 27 Jul 2024 12:32:55 +0200 Subject: [PATCH 18/33] refactor(Core/SmartScripts): Change invoker to be WorldObject (#19408) * refactor(Core/SmartScripts): Change invoker to be WorldObject * avoid dangling else * womp womp * check for null * null check * Update SmartScript.cpp * Avarishd broke it for sure * remove redundant check * reduce more redundant code * who doesnt love redundancy --- src/server/game/AI/SmartScripts/SmartAI.cpp | 32 ++++++-- src/server/game/AI/SmartScripts/SmartAI.h | 8 +- .../game/AI/SmartScripts/SmartScript.cpp | 77 +++++++++++++------ src/server/game/AI/SmartScripts/SmartScript.h | 4 +- 4 files changed, 85 insertions(+), 36 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp index d3ec5eb51..b38464bc0 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.cpp +++ b/src/server/game/AI/SmartScripts/SmartAI.cpp @@ -962,9 +962,19 @@ uint32 SmartAI::GetData(uint32 /*id*/) const return 0; } -void SmartAI::SetData(uint32 id, uint32 value, Unit* invoker) +void SmartAI::SetData(uint32 id, uint32 value, WorldObject* invoker) { - GetScript()->ProcessEventsFor(SMART_EVENT_DATA_SET, invoker, id, value); + Unit* unit = nullptr; + GameObject* gob = nullptr; + + if (invoker) + { + unit = invoker->ToUnit(); + if (!unit) + gob = invoker->ToGameObject(); + } + + GetScript()->ProcessEventsFor(SMART_EVENT_DATA_SET, unit, id, value, false, nullptr, gob); } void SmartAI::SetGUID(ObjectGuid /*guid*/, int32 /*id*/) @@ -1132,7 +1142,7 @@ void SmartAI::MoveAway(float distance) } } -void SmartAI::SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker) +void SmartAI::SetScript9(SmartScriptHolder& e, uint32 entry, WorldObject* invoker) { if (invoker) GetScript()->mLastInvoker = invoker->GetGUID(); @@ -1232,12 +1242,22 @@ void SmartGameObjectAI::Destroyed(Player* player, uint32 eventId) GetScript()->ProcessEventsFor(SMART_EVENT_DEATH, player, eventId, 0, false, nullptr, me); } -void SmartGameObjectAI::SetData(uint32 id, uint32 value, Unit* invoker) +void SmartGameObjectAI::SetData(uint32 id, uint32 value, WorldObject* invoker) { - GetScript()->ProcessEventsFor(SMART_EVENT_DATA_SET, invoker, id, value); + Unit* unit = nullptr; + GameObject* gob = nullptr; + + if (invoker) + { + unit = invoker->ToUnit(); + if (!unit) + gob = invoker->ToGameObject(); + } + + GetScript()->ProcessEventsFor(SMART_EVENT_DATA_SET, unit, id, value, false, nullptr, gob); } -void SmartGameObjectAI::SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker) +void SmartGameObjectAI::SetScript9(SmartScriptHolder& e, uint32 entry, WorldObject* invoker) { if (invoker) GetScript()->mLastInvoker = invoker->GetGUID(); diff --git a/src/server/game/AI/SmartScripts/SmartAI.h b/src/server/game/AI/SmartScripts/SmartAI.h index 0311590fe..e5a62a859 100644 --- a/src/server/game/AI/SmartScripts/SmartAI.h +++ b/src/server/game/AI/SmartScripts/SmartAI.h @@ -70,7 +70,7 @@ public: void StopFollow(bool complete); void MoveAway(float distance); - void SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker); + void SetScript9(SmartScriptHolder& e, uint32 entry, WorldObject* invoker); SmartScript* GetScript() { return &mScript; } bool IsEscortInvokerInRange(); @@ -160,7 +160,7 @@ public: // Used in scripts to share variables void SetData(uint32 id, uint32 value) override { SetData(id, value, nullptr); } - void SetData(uint32 id, uint32 value, Unit* invoker); + void SetData(uint32 id, uint32 value, WorldObject* invoker); // Used in scripts to share variables void SetGUID(ObjectGuid guid, int32 id = 0) override; @@ -274,8 +274,8 @@ public: bool QuestReward(Player* player, Quest const* quest, uint32 opt) override; void Destroyed(Player* player, uint32 eventId) override; void SetData(uint32 id, uint32 value) override { SetData(id, value, nullptr); } - void SetData(uint32 id, uint32 value, Unit* invoker); - void SetScript9(SmartScriptHolder& e, uint32 entry, Unit* invoker); + void SetData(uint32 id, uint32 value, WorldObject* invoker); + void SetScript9(SmartScriptHolder& e, uint32 entry, WorldObject* invoker); void OnGameEvent(bool start, uint16 eventId) override; void OnStateChanged(uint32 state, Unit* unit) override; void EventInform(uint32 eventId) override; diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 37ac2ff76..efac02f80 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -167,21 +167,29 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (unit) mLastInvoker = unit->GetGUID(); + else if (gob) + mLastInvoker = gob->GetGUID(); - if (Unit* tempInvoker = GetLastInvoker()) + if (WorldObject* tempInvoker = GetLastInvoker()) LOG_DEBUG("sql.sql", "SmartScript::ProcessAction: Invoker: {} ({})", tempInvoker->GetName(), tempInvoker->GetGUID().ToString()); bool isControlled = e.action.moveToPos.controlled > 0; ObjectVector targets; - GetTargets(targets, e, unit); + WorldObject* invoker = nullptr; + if (unit) + invoker = unit; + else if (gob) + invoker = gob; + + GetTargets(targets, e, invoker); switch (e.GetActionType()) { case SMART_ACTION_TALK: { Creature* talker = e.target.type == 0 ? me : nullptr; - Unit* talkTarget = nullptr; + WorldObject* talkTarget = nullptr; for (WorldObject* target : targets) { @@ -232,7 +240,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u sCreatureTextMgr->SendChat(target->ToCreature(), uint8(e.action.simpleTalk.textGroupID), IsPlayer(GetLastInvoker()) ? GetLastInvoker() : 0); else if (IsPlayer(target) && me) { - Unit* templastInvoker = GetLastInvoker(); + WorldObject* templastInvoker = GetLastInvoker(); sCreatureTextMgr->SendChat(me, uint8(e.action.simpleTalk.textGroupID), IsPlayer(templastInvoker) ? templastInvoker : 0, CHAT_MSG_ADDON, LANG_ADDON, TEXT_RANGE_NORMAL, 0, TEAM_NEUTRAL, false, target->ToPlayer()); } @@ -783,7 +791,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u case SMART_ACTION_INVOKER_CAST: { // Can be used for area trigger cast - Unit* tempLastInvoker = GetLastInvoker(unit); + WorldObject* tempLastInvoker = GetLastInvoker(unit); if (!tempLastInvoker) break; @@ -798,11 +806,14 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (!IsUnit(target)) continue; + if (!IsUnit(tempLastInvoker)) + continue; + if (!(e.action.cast.castFlags & SMARTCAST_AURA_NOT_PRESENT) || !target->ToUnit()->HasAura(e.action.cast.spell)) { if (e.action.cast.castFlags & SMARTCAST_INTERRUPT_PREVIOUS) { - tempLastInvoker->InterruptNonMeleeSpells(false); + tempLastInvoker->ToUnit()->InterruptNonMeleeSpells(false); } TriggerCastFlags triggerFlags = TRIGGERED_NONE; @@ -818,7 +829,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u } } - tempLastInvoker->CastSpell(target->ToUnit(), e.action.cast.spell, triggerFlags); + tempLastInvoker->ToUnit()->CastSpell(target->ToUnit(), e.action.cast.spell, triggerFlags); LOG_DEBUG("scripts.ai", "SmartScript::ProcessAction:: SMART_ACTION_INVOKER_CAST: Invoker {} casts spell {} on target {} with castflags {}", tempLastInvoker->GetGUID().ToString(), e.action.cast.spell, target->GetGUID().ToString(), e.action.cast.castFlags); } @@ -1397,16 +1408,28 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (Creature* cTarget = target->ToCreature()) { CreatureAI* ai = cTarget->AI(); - if (IsSmart(cTarget)) - ENSURE_AI(SmartAI, ai)->SetData(e.action.setData.field, e.action.setData.data, me); + // Make sure we check that the sender is either a creature or gameobject + if (IsSmart(cTarget, true) && (me || go)) + { + if (me) + ENSURE_AI(SmartAI, ai)->SetData(e.action.setData.field, e.action.setData.data, me); + else + ENSURE_AI(SmartAI, ai)->SetData(e.action.setData.field, e.action.setData.data, go); + } else ai->SetData(e.action.setData.field, e.action.setData.data); } else if (GameObject* oTarget = target->ToGameObject()) { GameObjectAI* ai = oTarget->AI(); - if (IsSmart(oTarget)) - ENSURE_AI(SmartGameObjectAI, ai)->SetData(e.action.setData.field, e.action.setData.data, me); + // Make sure we check that the sender is either a creature or gameobject + if (IsSmart(oTarget, true) && (me || go)) + { + if (me) + ENSURE_AI(SmartGameObjectAI, ai)->SetData(e.action.setData.field, e.action.setData.data, me); + else + ENSURE_AI(SmartGameObjectAI, ai)->SetData(e.action.setData.field, e.action.setData.data, go); + } else ai->SetData(e.action.setData.field, e.action.setData.data); } @@ -2900,7 +2923,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u if (e.action.setGuid.invokerGUID) { - if (Unit* invoker = GetLastInvoker()) + if (WorldObject* invoker = GetLastInvoker()) { guidToSend = invoker->GetGUID(); } @@ -3318,12 +3341,12 @@ SmartScriptHolder SmartScript::CreateSmartEvent(SMART_EVENT e, uint32 event_flag return script; } -void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, Unit* invoker /*= nullptr*/) const +void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, WorldObject* invoker /*= nullptr*/) const { - Unit* scriptTrigger = nullptr; + WorldObject* scriptTrigger = nullptr; if (invoker) scriptTrigger = invoker; - else if (Unit* tempLastInvoker = GetLastInvoker()) + else if (WorldObject* tempLastInvoker = GetLastInvoker()) scriptTrigger = tempLastInvoker; WorldObject* baseObject = GetBaseObject(); @@ -3399,8 +3422,9 @@ void SmartScript::GetTargets(ObjectVector& targets, SmartScriptHolder const& e, targets.push_back(scriptTrigger); break; case SMART_TARGET_ACTION_INVOKER_VEHICLE: - if (scriptTrigger && scriptTrigger->GetVehicle() && scriptTrigger->GetVehicle()->GetBase()) - targets.push_back(scriptTrigger->GetVehicle()->GetBase()); + if (scriptTrigger && IsUnit(scriptTrigger)) + if (scriptTrigger->ToUnit()->GetVehicle() && scriptTrigger->ToUnit()->GetVehicle()->GetBase()) + targets.push_back(scriptTrigger->ToUnit()->GetVehicle()->GetBase()); break; case SMART_TARGET_INVOKER_PARTY: if (scriptTrigger) @@ -4323,7 +4347,7 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui if (e.event.dataSet.id != var0 || e.event.dataSet.value != var1) return; RecalcTimer(e, e.event.dataSet.cooldownMin, e.event.dataSet.cooldownMax); - ProcessAction(e, unit, var0, var1); + ProcessAction(e, unit, var0, var1, false, nullptr, gob); break; } case SMART_EVENT_PASSENGER_REMOVED: @@ -4352,11 +4376,16 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui case SMART_EVENT_EVENT_PHASE_CHANGE: { if (!IsInPhase(e.event.eventPhaseChange.phasemask)) - { return; - } - ProcessAction(e, GetLastInvoker()); + WorldObject* templastInvoker = GetLastInvoker(); + if (!templastInvoker) + return; + + if (!IsUnit(templastInvoker)) + return; + + ProcessAction(e, templastInvoker->ToUnit()); break; } case SMART_EVENT_GAME_EVENT_START: @@ -5178,14 +5207,14 @@ void SmartScript::SetScript9(SmartScriptHolder& e, uint32 entry) } } -Unit* SmartScript::GetLastInvoker(Unit* invoker) const +WorldObject* SmartScript::GetLastInvoker(WorldObject* invoker) const { // Xinef: Look for invoker only on map of base object... Prevents multithreaded crashes if (GetBaseObject()) - return ObjectAccessor::GetUnit(*GetBaseObject(), mLastInvoker); + return ObjectAccessor::GetWorldObject(*GetBaseObject(), mLastInvoker); // xinef: used for area triggers invoker cast else if (invoker) - return ObjectAccessor::GetUnit(*invoker, mLastInvoker); + return ObjectAccessor::GetWorldObject(*invoker, mLastInvoker); return nullptr; } diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h index 82ac3700d..0f84cc2fd 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.h +++ b/src/server/game/AI/SmartScripts/SmartScript.h @@ -44,7 +44,7 @@ public: static void InitTimer(SmartScriptHolder& e); void ProcessAction(SmartScriptHolder& e, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr); void ProcessTimedAction(SmartScriptHolder& e, uint32 const& min, uint32 const& max, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr); - void GetTargets(ObjectVector& targets, SmartScriptHolder const& e, Unit* invoker = nullptr) const; + void GetTargets(ObjectVector& targets, SmartScriptHolder const& e, WorldObject* invoker = nullptr) const; void GetWorldObjectsInDist(ObjectVector& objects, float dist) const; void InstallTemplate(SmartScriptHolder const& e); static SmartScriptHolder CreateSmartEvent(SMART_EVENT e, uint32 event_flags, uint32 event_param1, uint32 event_param2, uint32 event_param3, uint32 event_param4, uint32 event_param5, uint32 event_param6, SMART_ACTION action, uint32 action_param1, uint32 action_param2, uint32 action_param3, uint32 action_param4, uint32 action_param5, uint32 action_param6, SMARTAI_TARGETS t, uint32 target_param1, uint32 target_param2, uint32 target_param3, uint32 target_param4, uint32 phaseMask); @@ -186,7 +186,7 @@ public: //TIMED_ACTIONLIST (script type 9 aka script9) void SetScript9(SmartScriptHolder& e, uint32 entry); - Unit* GetLastInvoker(Unit* invoker = nullptr) const; + WorldObject* GetLastInvoker(WorldObject* invoker = nullptr) const; ObjectGuid mLastInvoker; typedef std::unordered_map CounterMap; CounterMap mCounterList; From 6343ec9c0b6922fce9f48dff226e43f729e2fd58 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 27 Jul 2024 10:33:13 +0000 Subject: [PATCH 19/33] chore(DB): import pending files Referenced commit(s): e34ce755c8f1c809116298f84b8f2686157a2d77 --- .../rev_1718654756887511000.sql => db_world/2024_07_27_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1718654756887511000.sql => db_world/2024_07_27_02.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1718654756887511000.sql b/data/sql/updates/db_world/2024_07_27_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1718654756887511000.sql rename to data/sql/updates/db_world/2024_07_27_02.sql index 667896a29..b078e017f 100644 --- a/data/sql/updates/pending_db_world/rev_1718654756887511000.sql +++ b/data/sql/updates/db_world/2024_07_27_02.sql @@ -1,3 +1,4 @@ +-- DB update 2024_07_27_01 -> 2024_07_27_02 -- DELETE FROM `waypoints` WHERE `entry` IN (23340, 23342, 23344, 23345, 23346, 23348); DELETE FROM `waypoint_data` WHERE `id` IN (233401, 233421, 233441, 233451, 233461, 233481); From c8cb2e55eee48509acf57cab7027915b82866f6e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=A4=A9=E9=B9=BF?= <18535853+PkllonG@users.noreply.github.com> Date: Sat, 27 Jul 2024 18:43:07 +0800 Subject: [PATCH 20/33] chore(Core/Authserver): Remove redundant conversion during Reconnect Proof cmd (#18957) https://github.com/TrinityCore/TrinityCore/pull/26765 Author: [walkline](https://github.com/walkline) --- src/server/apps/authserver/Server/AuthSession.cpp | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/server/apps/authserver/Server/AuthSession.cpp b/src/server/apps/authserver/Server/AuthSession.cpp index 648939cb1..741e4724e 100644 --- a/src/server/apps/authserver/Server/AuthSession.cpp +++ b/src/server/apps/authserver/Server/AuthSession.cpp @@ -689,12 +689,9 @@ bool AuthSession::HandleReconnectProof() if (_accountInfo.Login.empty()) return false; - BigNumber t1; - t1.SetBinary(reconnectProof->R1, 16); - Acore::Crypto::SHA1 sha; sha.UpdateData(_accountInfo.Login); - sha.UpdateData(t1.ToByteArray<16>()); + sha.UpdateData(reconnectProof->R1, 16); sha.UpdateData(_reconnectProof); sha.UpdateData(_sessionKey); sha.Finalize(); From a9e4d3d37e283a5edc84712a014a5495997581d1 Mon Sep 17 00:00:00 2001 From: Jelle Meeus Date: Sat, 27 Jul 2024 13:17:06 +0200 Subject: [PATCH 21/33] refactor(Scripts/RubySanctum): Spell Scripts registry macros (#19487) --- .../rev_1722077567551108843.sql | 12 + .../boss_baltharus_the_warborn.cpp | 42 +- .../RubySanctum/boss_halion.cpp | 846 ++++++++---------- .../RubySanctum/boss_saviana_ragefire.cpp | 65 +- .../RubySanctum/instance_ruby_sanctum.cpp | 44 +- 5 files changed, 424 insertions(+), 585 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1722077567551108843.sql diff --git a/data/sql/updates/pending_db_world/rev_1722077567551108843.sql b/data/sql/updates/pending_db_world/rev_1722077567551108843.sql new file mode 100644 index 000000000..fbe9eec2c --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1722077567551108843.sql @@ -0,0 +1,12 @@ +-- +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_meteor_strike_marker_aura' WHERE `spell_id`=74641 AND `ScriptName`='spell_halion_meteor_strike_marker'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_meteor_strike_spread_aura' WHERE `spell_id`=74696 AND `ScriptName`='spell_halion_meteor_strike_spread'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_soul_consumption_aura' WHERE `spell_id`=74792 AND `ScriptName`='spell_halion_soul_consumption'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_fiery_combustion_aura' WHERE `spell_id`=74562 AND `ScriptName`='spell_halion_fiery_combustion'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_soul_consumption_aura' WHERE `spell_id`=74792 AND `ScriptName`='spell_halion_soul_consumption'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_fiery_combustion_aura' WHERE `spell_id`=74562 AND `ScriptName`='spell_halion_fiery_combustion'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_mark_of_combustion_aura' WHERE `spell_id`=74567 AND `ScriptName`='spell_halion_mark_of_combustion'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_mark_of_consumption_aura' WHERE `spell_id`=74795 AND `ScriptName`='spell_halion_mark_of_consumption'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_twilight_realm_aura' WHERE `spell_id`=74807 AND `ScriptName`='spell_halion_twilight_realm'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_leave_twilight_realm_aura' WHERE `spell_id`=74812 AND `ScriptName`='spell_halion_leave_twilight_realm'; +UPDATE `spell_script_names` SET `ScriptName`='spell_halion_twilight_cutter_periodic_aura' WHERE `spell_id`=74768 AND `ScriptName`='spell_halion_twilight_cutter_periodic'; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp index 34a483f77..1e693b33a 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_baltharus_the_warborn.cpp @@ -334,34 +334,28 @@ public: } }; -class spell_baltharus_enervating_brand_trigger : public SpellScriptLoader +class spell_baltharus_enervating_brand_trigger : public SpellScript { -public: - spell_baltharus_enervating_brand_trigger() : SpellScriptLoader("spell_baltharus_enervating_brand_trigger") { } + PrepareSpellScript(spell_baltharus_enervating_brand_trigger); - class spell_baltharus_enervating_brand_trigger_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_baltharus_enervating_brand_trigger_SpellScript); + return ValidateSpellInfo({ SPELL_SIPHONED_MIGHT }); + } - void CheckDistance() - { - if (Unit* caster = GetOriginalCaster()) - if (Unit* target = GetHitUnit()) - if (target == GetCaster() - // the spell has an unlimited range, so we need this check - && target->GetDistance2d(caster) <= 12.0f) - target->CastSpell(caster, SPELL_SIPHONED_MIGHT, true); - } - - void Register() override - { - OnHit += SpellHitFn(spell_baltharus_enervating_brand_trigger_SpellScript::CheckDistance); - } - }; - - SpellScript* GetSpellScript() const override + void CheckDistance() { - return new spell_baltharus_enervating_brand_trigger_SpellScript(); + if (Unit* caster = GetOriginalCaster()) + if (Unit* target = GetHitUnit()) + if (target == GetCaster() + // the spell has an unlimited range, so we need this check + && target->GetDistance2d(caster) <= 12.0f) + target->CastSpell(caster, SPELL_SIPHONED_MIGHT, true); + } + + void Register() override + { + OnHit += SpellHitFn(spell_baltharus_enervating_brand_trigger::CheckDistance); } }; @@ -486,7 +480,7 @@ void AddSC_boss_baltharus_the_warborn() { new boss_baltharus_the_warborn(); new npc_baltharus_the_warborn_clone(); - new spell_baltharus_enervating_brand_trigger(); + RegisterSpellScript(spell_baltharus_enervating_brand_trigger); new npc_xerestrasza(); new at_baltharus_plateau(); } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp index 9869c4636..b240f4484 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_halion.cpp @@ -798,283 +798,218 @@ public: } }; -class spell_halion_meteor_strike_targeting : public SpellScriptLoader +class spell_halion_meteor_strike_targeting : public SpellScript { -public: - spell_halion_meteor_strike_targeting() : SpellScriptLoader("spell_halion_meteor_strike_targeting") { } + PrepareSpellScript(spell_halion_meteor_strike_targeting); - class spell_halion_meteor_strike_targeting_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_halion_meteor_strike_targeting_SpellScript); + return ValidateSpellInfo({ SPELL_METEOR_STRIKE }); + } - void HandleDummy(SpellEffIndex /*effIndex*/) - { - if (Unit* target = GetHitUnit()) - GetCaster()->CastSpell(target, SPELL_METEOR_STRIKE, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_halion_meteor_strike_targeting_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_halion_meteor_strike_targeting_SpellScript(); + if (Unit* target = GetHitUnit()) + GetCaster()->CastSpell(target, SPELL_METEOR_STRIKE, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_halion_meteor_strike_targeting::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; -class spell_halion_meteor_strike_marker : public SpellScriptLoader +class spell_halion_meteor_strike_marker_aura : public AuraScript { -public: - spell_halion_meteor_strike_marker() : SpellScriptLoader("spell_halion_meteor_strike_marker") { } + PrepareAuraScript(spell_halion_meteor_strike_marker_aura); - class spell_halion_meteor_strike_marker_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_halion_meteor_strike_marker_AuraScript); - - void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - SetDuration(6500); - } - - void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - if (Unit* caster = GetCaster()) - { - if (!caster->GetInstanceScript() || !caster->GetInstanceScript()->IsEncounterInProgress()) - return; - - caster->CastSpell(caster, SPELL_METEOR_STRIKE_AOE_DAMAGE, true); - caster->CastSpell(caster, SPELL_METEOR_STRIKE_FIRE_AURA_1, true); - for (uint32 spellId = SPELL_SUMMON_METEOR_STRIKE1; spellId <= SPELL_SUMMON_METEOR_STRIKE4; ++spellId) - caster->CastSpell(caster, spellId, true); - } - } - - void Register() override - { - OnEffectApply += AuraEffectApplyFn(spell_halion_meteor_strike_marker_AuraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - AfterEffectRemove += AuraEffectRemoveFn(spell_halion_meteor_strike_marker_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override - { - return new spell_halion_meteor_strike_marker_AuraScript(); + return ValidateSpellInfo({ SPELL_METEOR_STRIKE_AOE_DAMAGE, SPELL_METEOR_STRIKE_FIRE_AURA_1 }); } -}; -class spell_halion_meteor_strike_spread : public SpellScriptLoader -{ -public: - spell_halion_meteor_strike_spread() : SpellScriptLoader("spell_halion_meteor_strike_spread") { } - - class spell_halion_meteor_strike_spread_AuraScript : public AuraScript + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - PrepareAuraScript(spell_halion_meteor_strike_spread_AuraScript); + SetDuration(6500); + } - void HandlePeriodic(AuraEffect const* /*aurEff*/) + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Unit* caster = GetCaster()) { - PreventDefaultAction(); // xinef: 3/5 straight, 2/5 turn - if (!GetUnitOwner()->GetInstanceScript() || !GetUnitOwner()->GetInstanceScript()->IsEncounterInProgress()) + if (!caster->GetInstanceScript() || !caster->GetInstanceScript()->IsEncounterInProgress()) return; - GetUnitOwner()->CastSpell(GetUnitOwner(), RAND(SPELL_SUMMON_METEOR_FLAME1, SPELL_SUMMON_METEOR_FLAME2, SPELL_SUMMON_METEOR_FLAME2, SPELL_SUMMON_METEOR_FLAME2, SPELL_SUMMON_METEOR_FLAME3), true); + caster->CastSpell(caster, SPELL_METEOR_STRIKE_AOE_DAMAGE, true); + caster->CastSpell(caster, SPELL_METEOR_STRIKE_FIRE_AURA_1, true); + for (uint32 spellId = SPELL_SUMMON_METEOR_STRIKE1; spellId <= SPELL_SUMMON_METEOR_STRIKE4; ++spellId) + caster->CastSpell(caster, spellId, true); } + } - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_halion_meteor_strike_spread_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); - } - }; - - AuraScript* GetAuraScript() const override + void Register() override { - return new spell_halion_meteor_strike_spread_AuraScript(); + OnEffectApply += AuraEffectApplyFn(spell_halion_meteor_strike_marker_aura::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_halion_meteor_strike_marker_aura::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } }; -class spell_halion_blazing_aura : public SpellScriptLoader +class spell_halion_meteor_strike_spread_aura : public AuraScript { -public: - spell_halion_blazing_aura() : SpellScriptLoader("spell_halion_blazing_aura") { } + PrepareAuraScript(spell_halion_meteor_strike_spread_aura); - class spell_halion_blazing_aura_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_halion_blazing_aura_SpellScript); + return ValidateSpellInfo({ SPELL_SUMMON_METEOR_FLAME1, SPELL_SUMMON_METEOR_FLAME2, SPELL_SUMMON_METEOR_FLAME3 }); + } - void HandleForceCast(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - if (Unit* target = GetHitUnit()) - target->CastSpell(target, GetSpellInfo()->Effects[effIndex].TriggerSpell, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_halion_blazing_aura_SpellScript::HandleForceCast, EFFECT_1, SPELL_EFFECT_FORCE_CAST); - } - }; - - SpellScript* GetSpellScript() const override + void HandlePeriodic(AuraEffect const* /*aurEff*/) { - return new spell_halion_blazing_aura_SpellScript(); + PreventDefaultAction(); // xinef: 3/5 straight, 2/5 turn + if (!GetUnitOwner()->GetInstanceScript() || !GetUnitOwner()->GetInstanceScript()->IsEncounterInProgress()) + return; + + GetUnitOwner()->CastSpell(GetUnitOwner(), RAND(SPELL_SUMMON_METEOR_FLAME1, SPELL_SUMMON_METEOR_FLAME2, SPELL_SUMMON_METEOR_FLAME2, SPELL_SUMMON_METEOR_FLAME2, SPELL_SUMMON_METEOR_FLAME3), true); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_halion_meteor_strike_spread_aura::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } }; -class spell_halion_combustion_consumption : public SpellScriptLoader +class spell_halion_blazing_aura : public SpellScript { + PrepareSpellScript(spell_halion_blazing_aura); + + void HandleForceCast(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + if (Unit* target = GetHitUnit()) + target->CastSpell(target, GetSpellInfo()->Effects[effIndex].TriggerSpell, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_halion_blazing_aura::HandleForceCast, EFFECT_1, SPELL_EFFECT_FORCE_CAST); + } +}; + +class spell_halion_combustion_consumption_aura : public AuraScript +{ + PrepareAuraScript(spell_halion_combustion_consumption_aura); + public: - spell_halion_combustion_consumption(char const* scriptName, uint32 spell) : SpellScriptLoader(scriptName), _spellID(spell) { } + spell_halion_combustion_consumption_aura(uint32 spellID) : AuraScript(), _markSpell(spellID) { } - class spell_halion_combustion_consumption_AuraScript : public AuraScript + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - PrepareAuraScript(spell_halion_combustion_consumption_AuraScript); + GetTarget()->RemoveAurasDueToSpell(_markSpell, ObjectGuid::Empty, 0, AURA_REMOVE_BY_EXPIRE); + } - public: - spell_halion_combustion_consumption_AuraScript(uint32 spellID) : AuraScript(), _markSpell(spellID) { } - - void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - GetTarget()->RemoveAurasDueToSpell(_markSpell, ObjectGuid::Empty, 0, AURA_REMOVE_BY_EXPIRE); - } - - void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - GetTarget()->CastSpell(GetTarget(), _markSpell, true); - } - - void AddMarkStack(AuraEffect const* /*aurEff*/) - { - GetTarget()->CastSpell(GetTarget(), _markSpell, true); - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_halion_combustion_consumption_AuraScript::AddMarkStack, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE); - AfterEffectApply += AuraEffectApplyFn(spell_halion_combustion_consumption_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); - AfterEffectRemove += AuraEffectRemoveFn(spell_halion_combustion_consumption_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); - } - - uint32 _markSpell; - }; - - AuraScript* GetAuraScript() const override + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - return new spell_halion_combustion_consumption_AuraScript(_spellID); + GetTarget()->CastSpell(GetTarget(), _markSpell, true); + } + + void AddMarkStack(AuraEffect const* /*aurEff*/) + { + GetTarget()->CastSpell(GetTarget(), _markSpell, true); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_halion_combustion_consumption_aura::AddMarkStack, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE); + AfterEffectApply += AuraEffectApplyFn(spell_halion_combustion_consumption_aura::OnApply, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_halion_combustion_consumption_aura::OnRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); } private: - uint32 _spellID; + uint32 _markSpell; }; -class spell_halion_marks : public SpellScriptLoader +class spell_halion_marks_aura : public AuraScript { + PrepareAuraScript(spell_halion_marks_aura); + public: - spell_halion_marks(char const* scriptName, uint32 summonSpell, uint32 removeSpell) : SpellScriptLoader(scriptName), _summonSpell(summonSpell), _removeSpell(removeSpell) { } + spell_halion_marks_aura(uint32 summonSpell, uint32 removeSpell) : AuraScript(), _summonSpellId(summonSpell), _removeSpellId(removeSpell) { } - class spell_halion_marks_AuraScript : public AuraScript + void BeforeDispel(DispelInfo* dispelData) { - PrepareAuraScript(spell_halion_marks_AuraScript); + dispelData->SetRemovedCharges(0); - public: - spell_halion_marks_AuraScript(uint32 summonSpell, uint32 removeSpell) : AuraScript(), _summonSpellId(summonSpell), _removeSpellId(removeSpell) { } + if (Unit* dispelledUnit = GetUnitOwner()) + if (dispelledUnit->HasAura(_removeSpellId)) + dispelledUnit->RemoveAurasDueToSpell(_removeSpellId, ObjectGuid::Empty, 0, AURA_REMOVE_BY_EXPIRE); + } - void BeforeDispel(DispelInfo* dispelData) - { - dispelData->SetRemovedCharges(0); - - if (Unit* dispelledUnit = GetUnitOwner()) - if (dispelledUnit->HasAura(_removeSpellId)) - dispelledUnit->RemoveAurasDueToSpell(_removeSpellId, ObjectGuid::Empty, 0, AURA_REMOVE_BY_EXPIRE); - } - - void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) - { - if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE) - return; - - if (!GetTarget()->GetInstanceScript() || !GetTarget()->GetInstanceScript()->IsEncounterInProgress() || GetTarget()->GetMapId() != 724) - return; - - GetTarget()->CastCustomSpell(_summonSpellId, SPELLVALUE_BASE_POINT1, GetAura()->GetStackAmount(), GetTarget(), TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID()); - } - - void Register() override - { - OnDispel += AuraDispelFn(spell_halion_marks_AuraScript::BeforeDispel); - AfterEffectRemove += AuraEffectRemoveFn(spell_halion_marks_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } - - uint32 _summonSpellId; - uint32 _removeSpellId; - }; - - AuraScript* GetAuraScript() const override + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { - return new spell_halion_marks_AuraScript(_summonSpell, _removeSpell); + if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE) + return; + + if (!GetTarget()->GetInstanceScript() || !GetTarget()->GetInstanceScript()->IsEncounterInProgress() || GetTarget()->GetMapId() != 724) + return; + + GetTarget()->CastCustomSpell(_summonSpellId, SPELLVALUE_BASE_POINT1, GetAura()->GetStackAmount(), GetTarget(), TRIGGERED_FULL_MASK, nullptr, nullptr, GetCasterGUID()); + } + + void Register() override + { + OnDispel += AuraDispelFn(spell_halion_marks_aura::BeforeDispel); + AfterEffectRemove += AuraEffectRemoveFn(spell_halion_marks_aura::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); } private: - uint32 _summonSpell; - uint32 _removeSpell; + uint32 _summonSpellId; + uint32 _removeSpellId; }; -class spell_halion_damage_aoe_summon : public SpellScriptLoader +class spell_halion_damage_aoe_summon : public SpellScript { + PrepareSpellScript(spell_halion_damage_aoe_summon); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SCALE_AURA }); + } + public: - spell_halion_damage_aoe_summon(char const* scriptName, uint32 explosionSpell, uint32 auraSpell) : SpellScriptLoader(scriptName), _explosionSpell(explosionSpell), _auraSpell(auraSpell) { } + spell_halion_damage_aoe_summon(uint32 explosionSpell, uint32 auraSpell) : SpellScript(), _explosionSpell(explosionSpell), _auraSpell(auraSpell) { } - class spell_halion_damage_aoe_summon_SpellScript : public SpellScript + void HandleSummon(SpellEffIndex effIndex) { - PrepareSpellScript(spell_halion_damage_aoe_summon_SpellScript); + PreventHitDefaultEffect(effIndex); + Unit* caster = GetCaster(); + uint32 entry = uint32(GetSpellInfo()->Effects[effIndex].MiscValue); + SummonPropertiesEntry const* properties = sSummonPropertiesStore.LookupEntry(uint32(GetSpellInfo()->Effects[effIndex].MiscValueB)); + uint32 duration = uint32(GetSpellInfo()->GetDuration()); - public: - spell_halion_damage_aoe_summon_SpellScript(uint32 explosionSpell, uint32 auraSpell) : SpellScript(), _explosionSpell(explosionSpell), _auraSpell(auraSpell) { } - - void HandleSummon(SpellEffIndex effIndex) + Position pos = caster->GetPosition(); + if (Creature* summon = caster->GetMap()->SummonCreature(entry, pos, properties, duration, caster, GetSpellInfo()->Id)) { - PreventHitDefaultEffect(effIndex); - Unit* caster = GetCaster(); - uint32 entry = uint32(GetSpellInfo()->Effects[effIndex].MiscValue); - SummonPropertiesEntry const* properties = sSummonPropertiesStore.LookupEntry(uint32(GetSpellInfo()->Effects[effIndex].MiscValueB)); - uint32 duration = uint32(GetSpellInfo()->GetDuration()); + bool heroic = summon->GetMap()->IsHeroic(); + bool raid = summon->GetMap()->Is25ManRaid(); - Position pos = caster->GetPosition(); - if (Creature* summon = caster->GetMap()->SummonCreature(entry, pos, properties, duration, caster, GetSpellInfo()->Id)) - { - bool heroic = summon->GetMap()->IsHeroic(); - bool raid = summon->GetMap()->Is25ManRaid(); + if (heroic) + summon->SetPhaseMask(0x01 | 0x20, true); + else if (summon->GetEntry() == NPC_COMBUSTION) + summon->SetPhaseMask(0x01, true); + else + summon->SetPhaseMask(0x20, true); - if (heroic) - summon->SetPhaseMask(0x01 | 0x20, true); - else if (summon->GetEntry() == NPC_COMBUSTION) - summon->SetPhaseMask(0x01, true); - else - summon->SetPhaseMask(0x20, true); + summon->CastCustomSpell(SPELL_SCALE_AURA, SPELLVALUE_AURA_STACK, GetSpellValue()->EffectBasePoints[EFFECT_1], summon); + summon->CastSpell(summon, _auraSpell, true); - summon->CastCustomSpell(SPELL_SCALE_AURA, SPELLVALUE_AURA_STACK, GetSpellValue()->EffectBasePoints[EFFECT_1], summon); - summon->CastSpell(summon, _auraSpell, true); - - int32 damage = int32((1500 + (GetSpellValue()->EffectBasePoints[EFFECT_1] * 1250)) * (heroic ? 1.25f : 1.0f) * (raid ? 1.5f : 1.0f)); - caster->CastCustomSpell(_explosionSpell, SPELLVALUE_BASE_POINT0, damage, caster); - } + int32 damage = int32((1500 + (GetSpellValue()->EffectBasePoints[EFFECT_1] * 1250)) * (heroic ? 1.25f : 1.0f) * (raid ? 1.5f : 1.0f)); + caster->CastCustomSpell(_explosionSpell, SPELLVALUE_BASE_POINT0, damage, caster); } + } - void Register() override - { - OnEffectHit += SpellEffectFn(spell_halion_damage_aoe_summon_SpellScript::HandleSummon, EFFECT_0, SPELL_EFFECT_SUMMON); - } - - uint32 _explosionSpell; - uint32 _auraSpell; - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_halion_damage_aoe_summon_SpellScript(_explosionSpell, _auraSpell); + OnEffectHit += SpellEffectFn(spell_halion_damage_aoe_summon::HandleSummon, EFFECT_0, SPELL_EFFECT_SUMMON); } private: @@ -1082,203 +1017,163 @@ private: uint32 _auraSpell; }; -class spell_halion_clear_debuffs : public SpellScriptLoader +class spell_halion_clear_debuffs : public SpellScript { -public: - spell_halion_clear_debuffs() : SpellScriptLoader("spell_halion_clear_debuffs") { } + PrepareSpellScript(spell_halion_clear_debuffs); - class spell_halion_clear_debuffs_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_halion_clear_debuffs_SpellScript); + return ValidateSpellInfo({ SPELL_FIERY_COMBUSTION }); + } - void HandleScriptEffect(SpellEffIndex /*effIndex*/) - { - if (GetHitUnit()) - { - GetHitUnit()->RemoveAurasDueToSpell(GetSpellInfo()->Effects[EFFECT_0].CalcValue()); - GetHitUnit()->RemoveAurasDueToSpell(GetSpellInfo()->Effects[EFFECT_1].CalcValue()); - GetHitUnit()->RemoveAurasDueToSpell(SPELL_FIERY_COMBUSTION); - } - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_halion_clear_debuffs_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void HandleScriptEffect(SpellEffIndex /*effIndex*/) { - return new spell_halion_clear_debuffs_SpellScript(); + if (GetHitUnit()) + { + GetHitUnit()->RemoveAurasDueToSpell(GetSpellInfo()->Effects[EFFECT_0].CalcValue()); + GetHitUnit()->RemoveAurasDueToSpell(GetSpellInfo()->Effects[EFFECT_1].CalcValue()); + GetHitUnit()->RemoveAurasDueToSpell(SPELL_FIERY_COMBUSTION); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_halion_clear_debuffs::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; -class spell_halion_twilight_phasing : public SpellScriptLoader +class spell_halion_twilight_phasing : public SpellScript { -public: - spell_halion_twilight_phasing() : SpellScriptLoader("spell_halion_twilight_phasing") { } + PrepareSpellScript(spell_halion_twilight_phasing); - class spell_halion_twilight_phasing_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_halion_twilight_phasing_SpellScript); - - bool Load() override - { - return GetCaster()->GetTypeId() == TYPEID_UNIT; - } - - void Phase() - { - Unit* caster = GetCaster(); - caster->CastSpell(caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), SPELL_SUMMON_TWILIGHT_PORTAL, true); - caster->GetMap()->SummonCreature(NPC_TWILIGHT_HALION, caster->ToCreature()->GetHomePosition(), nullptr, 0, caster); - } - - void Register() override - { - OnHit += SpellHitFn(spell_halion_twilight_phasing_SpellScript::Phase); - } - }; - - SpellScript* GetSpellScript() const override - { - return new spell_halion_twilight_phasing_SpellScript(); + return ValidateSpellInfo({ SPELL_SUMMON_TWILIGHT_PORTAL }); } - class spell_halion_twilight_phasing_AuraScript : public AuraScript + bool Load() override { - PrepareAuraScript(spell_halion_twilight_phasing_AuraScript); + return GetCaster()->GetTypeId() == TYPEID_UNIT; + } - void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) - { - GetTarget()->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - GetTarget()->ToCreature()->SetReactState(REACT_DEFENSIVE); - GetTarget()->GetMotionMaster()->Clear(); - GetTarget()->GetThreatMgr().clearReferences(); - GetTarget()->RemoveAllAttackers(); - GetTarget()->AttackStop(); - } - - void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) - { - GetTarget()->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - GetTarget()->ToCreature()->SetReactState(REACT_DEFENSIVE); - GetTarget()->GetMotionMaster()->Clear(); - GetTarget()->GetThreatMgr().clearReferences(); - GetTarget()->RemoveAllAttackers(); - GetTarget()->AttackStop(); - } - - void Register() override - { - OnEffectApply += AuraEffectApplyFn(spell_halion_twilight_phasing_AuraScript::OnApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); - OnEffectRemove += AuraEffectRemoveFn(spell_halion_twilight_phasing_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override + void Phase() { - return new spell_halion_twilight_phasing_AuraScript(); + Unit* caster = GetCaster(); + caster->CastSpell(caster->GetPositionX(), caster->GetPositionY(), caster->GetPositionZ(), SPELL_SUMMON_TWILIGHT_PORTAL, true); + caster->GetMap()->SummonCreature(NPC_TWILIGHT_HALION, caster->ToCreature()->GetHomePosition(), nullptr, 0, caster); + } + + void Register() override + { + OnHit += SpellHitFn(spell_halion_twilight_phasing::Phase); } }; -class spell_halion_twilight_realm : public SpellScriptLoader +class spell_halion_twilight_phasing_aura : public AuraScript { -public: - spell_halion_twilight_realm() : SpellScriptLoader("spell_halion_twilight_realm") { } + PrepareAuraScript(spell_halion_twilight_phasing_aura); - class spell_halion_twilight_realm_AuraScript : public AuraScript + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) { - PrepareAuraScript(spell_halion_twilight_realm_AuraScript); + GetTarget()->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); + GetTarget()->ToCreature()->SetReactState(REACT_DEFENSIVE); + GetTarget()->GetMotionMaster()->Clear(); + GetTarget()->GetThreatMgr().clearReferences(); + GetTarget()->RemoveAllAttackers(); + GetTarget()->AttackStop(); + } - void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) - { - Unit* target = GetTarget(); - if (!target) - return; - - target->RemoveAurasDueToSpell(SPELL_FIERY_COMBUSTION, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL); - if (GetTarget()->GetTypeId() != TYPEID_PLAYER) - return; - GetTarget()->m_Events.AddEvent(new SendEncounterUnit(GetTarget()->ToPlayer()), GetTarget()->m_Events.CalculateTime(500)); - } - - void Register() override - { - AfterEffectApply += AuraEffectApplyFn(spell_halion_twilight_realm_AuraScript::OnApply, EFFECT_0, SPELL_AURA_PHASE, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) { - return new spell_halion_twilight_realm_AuraScript(); + GetTarget()->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); + GetTarget()->ToCreature()->SetReactState(REACT_DEFENSIVE); + GetTarget()->GetMotionMaster()->Clear(); + GetTarget()->GetThreatMgr().clearReferences(); + GetTarget()->RemoveAllAttackers(); + GetTarget()->AttackStop(); + } + + void Register() override + { + OnEffectApply += AuraEffectApplyFn(spell_halion_twilight_phasing_aura::OnApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); + OnEffectRemove += AuraEffectRemoveFn(spell_halion_twilight_phasing_aura::OnRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); } }; -class spell_halion_leave_twilight_realm : public SpellScriptLoader +class spell_halion_twilight_realm_aura : public AuraScript { -public: - spell_halion_leave_twilight_realm() : SpellScriptLoader("spell_halion_leave_twilight_realm") { } + PrepareAuraScript(spell_halion_twilight_realm_aura); - class spell_halion_leave_twilight_realm_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_halion_leave_twilight_realm_AuraScript); + return ValidateSpellInfo({ SPELL_FIERY_COMBUSTION }); + } - void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) - { - Unit* target = GetTarget(); - if (!target) - return; - - target->RemoveAurasDueToSpell(SPELL_SOUL_CONSUMPTION, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL); - } - - void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) - { - GetTarget()->RemoveAurasDueToSpell(SPELL_TWILIGHT_REALM); - - if (GetTarget()->GetTypeId() != TYPEID_PLAYER) - return; - GetTarget()->m_Events.AddEvent(new SendEncounterUnit(GetTarget()->ToPlayer()), GetTarget()->m_Events.CalculateTime(500)); - } - - void Register() override - { - AfterEffectApply += AuraEffectApplyFn(spell_halion_leave_twilight_realm_AuraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - AfterEffectRemove += AuraEffectRemoveFn(spell_halion_leave_twilight_realm_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); - } - }; - - AuraScript* GetAuraScript() const override + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) { - return new spell_halion_leave_twilight_realm_AuraScript(); + Unit* target = GetTarget(); + if (!target) + return; + + target->RemoveAurasDueToSpell(SPELL_FIERY_COMBUSTION, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL); + if (GetTarget()->GetTypeId() != TYPEID_PLAYER) + return; + GetTarget()->m_Events.AddEvent(new SendEncounterUnit(GetTarget()->ToPlayer()), GetTarget()->m_Events.CalculateTime(500)); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_halion_twilight_realm_aura::OnApply, EFFECT_0, SPELL_AURA_PHASE, AURA_EFFECT_HANDLE_REAL); } }; -class spell_halion_twilight_cutter_periodic : public SpellScriptLoader +class spell_halion_leave_twilight_realm_aura : public AuraScript { -public: - spell_halion_twilight_cutter_periodic() : SpellScriptLoader("spell_halion_twilight_cutter_periodic") { } + PrepareAuraScript(spell_halion_leave_twilight_realm_aura); - class spell_halion_twilight_cutter_periodic_AuraScript : public AuraScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareAuraScript(spell_halion_twilight_cutter_periodic_AuraScript); + return ValidateSpellInfo({ SPELL_SOUL_CONSUMPTION, SPELL_TWILIGHT_REALM }); + } - void HandlePeriodic(AuraEffect const* aurEff) - { - PreventDefaultAction(); - GetUnitOwner()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true); - } - - void Register() override - { - OnEffectPeriodic += AuraEffectPeriodicFn(spell_halion_twilight_cutter_periodic_AuraScript::HandlePeriodic, EFFECT_1, SPELL_AURA_PERIODIC_TRIGGER_SPELL); - } - }; - - AuraScript* GetAuraScript() const override + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) { - return new spell_halion_twilight_cutter_periodic_AuraScript(); + Unit* target = GetTarget(); + if (!target) + return; + + target->RemoveAurasDueToSpell(SPELL_SOUL_CONSUMPTION, ObjectGuid::Empty, 0, AURA_REMOVE_BY_ENEMY_SPELL); + } + + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*handle*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_TWILIGHT_REALM); + + if (GetTarget()->GetTypeId() != TYPEID_PLAYER) + return; + GetTarget()->m_Events.AddEvent(new SendEncounterUnit(GetTarget()->ToPlayer()), GetTarget()->m_Events.CalculateTime(500)); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_halion_leave_twilight_realm_aura::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_halion_leave_twilight_realm_aura::OnRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +class spell_halion_twilight_cutter_periodic_aura : public AuraScript +{ + PrepareAuraScript(spell_halion_twilight_cutter_periodic_aura); + + void HandlePeriodic(AuraEffect const* aurEff) + { + PreventDefaultAction(); + GetUnitOwner()->CastSpell((Unit*)nullptr, GetSpellInfo()->Effects[aurEff->GetEffIndex()].TriggerSpell, true); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_halion_twilight_cutter_periodic_aura::HandlePeriodic, EFFECT_1, SPELL_AURA_PERIODIC_TRIGGER_SPELL); } }; @@ -1297,149 +1192,110 @@ private: WorldObject* _cutterCaster; }; -class spell_halion_twilight_cutter : public SpellScriptLoader +class spell_halion_twilight_cutter : public SpellScript { -public: - spell_halion_twilight_cutter() : SpellScriptLoader("spell_halion_twilight_cutter") { } + PrepareSpellScript(spell_halion_twilight_cutter); - class spell_halion_twilight_cutter_SpellScript : public SpellScript + void RemoveNotBetween(std::list& unitList) { - PrepareSpellScript(spell_halion_twilight_cutter_SpellScript); + if (unitList.empty()) + return; - void RemoveNotBetween(std::list& unitList) - { - if (unitList.empty()) + if (Aura* cutter = GetCaster()->GetAura(SPELL_TWILIGHT_CUTTER)) + if (Unit* cutterCaster = cutter->GetCaster()) + { + unitList.remove_if(TwilightCutterSelector(GetCaster(), cutterCaster)); return; + } - if (Aura* cutter = GetCaster()->GetAura(SPELL_TWILIGHT_CUTTER)) - if (Unit* cutterCaster = cutter->GetCaster()) - { - unitList.remove_if(TwilightCutterSelector(GetCaster(), cutterCaster)); - return; - } + unitList.clear(); + } - unitList.clear(); - } - - void Register() override - { - OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_halion_twilight_cutter_SpellScript::RemoveNotBetween, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_halion_twilight_cutter_SpellScript(); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_halion_twilight_cutter::RemoveNotBetween, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); } }; -class spell_halion_summon_exit_portals : public SpellScriptLoader +class spell_halion_summon_exit_portals : public SpellScript { -public: - spell_halion_summon_exit_portals() : SpellScriptLoader("spell_halion_summon_exit_portals") { } + PrepareSpellScript(spell_halion_summon_exit_portals); - class spell_halion_summon_exit_portals_SpellScript : public SpellScript + void OnSummon(SpellEffIndex effIndex) { - PrepareSpellScript(spell_halion_summon_exit_portals_SpellScript); + WorldLocation summonPos = *GetExplTargetDest(); + Position offset = {0.0f, 0.0f, 0.0f, 0.0f}; + if (GetSpellInfo()->Id == SPELL_SUMMON_EXIT_PORTALS) + offset.m_positionY = effIndex == EFFECT_1 ? -35.0f : 35.0f; + else + offset.m_positionX = effIndex == EFFECT_1 ? -35.0f : 35.0f; - void OnSummon(SpellEffIndex effIndex) - { - WorldLocation summonPos = *GetExplTargetDest(); - Position offset = {0.0f, 0.0f, 0.0f, 0.0f}; - if (GetSpellInfo()->Id == SPELL_SUMMON_EXIT_PORTALS) - offset.m_positionY = effIndex == EFFECT_1 ? -35.0f : 35.0f; - else - offset.m_positionX = effIndex == EFFECT_1 ? -35.0f : 35.0f; + summonPos.RelocateOffset(offset); - summonPos.RelocateOffset(offset); + SetExplTargetDest(summonPos); + GetHitDest()->RelocateOffset(offset); + } - SetExplTargetDest(summonPos); - GetHitDest()->RelocateOffset(offset); - } - - void Register() override - { - OnEffectLaunch += SpellEffectFn(spell_halion_summon_exit_portals_SpellScript::OnSummon, EFFECT_0, SPELL_EFFECT_SUMMON_OBJECT_WILD); - OnEffectLaunch += SpellEffectFn(spell_halion_summon_exit_portals_SpellScript::OnSummon, EFFECT_1, SPELL_EFFECT_SUMMON_OBJECT_WILD); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_halion_summon_exit_portals_SpellScript(); + OnEffectLaunch += SpellEffectFn(spell_halion_summon_exit_portals::OnSummon, EFFECT_0, SPELL_EFFECT_SUMMON_OBJECT_WILD); + OnEffectLaunch += SpellEffectFn(spell_halion_summon_exit_portals::OnSummon, EFFECT_1, SPELL_EFFECT_SUMMON_OBJECT_WILD); } }; -class spell_halion_twilight_division : public SpellScriptLoader +class spell_halion_twilight_division : public SpellScript { -public: - spell_halion_twilight_division() : SpellScriptLoader("spell_halion_twilight_division") { } + PrepareSpellScript(spell_halion_twilight_division); - class spell_halion_twilight_division_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_halion_twilight_division_SpellScript); + return ValidateSpellInfo({ SPELL_SUMMON_EXIT_PORTALS_NORMAL, SPELL_SUMMON_EXIT_PORTALS, SPELL_TWILIGHT_PHASING }); + } - void HandleDummy(SpellEffIndex /*effIndex*/) - { - InstanceScript* instance = GetCaster()->GetInstanceScript(); - Creature* controller = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(NPC_HALION_CONTROLLER)); - Creature* halion = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(NPC_HALION)); - - if (!controller || !halion) - return; - - GetCaster()->CastSpell(GetCaster(), _corporealityReference[5], true); - halion->CastSpell(halion, _corporealityReference[5], true); - - controller->CastSpell(controller, SPELL_SUMMON_EXIT_PORTALS_NORMAL, true); - controller->CastSpell(controller, SPELL_SUMMON_EXIT_PORTALS, true); - controller->AI()->DoAction(ACTION_CHECK_CORPOREALITY); - - halion->RemoveAurasDueToSpell(SPELL_TWILIGHT_PHASING); - if (GameObject* gobject = halion->FindNearestGameObject(GO_HALION_PORTAL_1, 100.0f)) - gobject->Delete(); - - instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TOGGLE, 1); - instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_MATERIAL, 50); - instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TWILIGHT, 50); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_halion_twilight_division_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex /*effIndex*/) { - return new spell_halion_twilight_division_SpellScript(); + InstanceScript* instance = GetCaster()->GetInstanceScript(); + Creature* controller = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(NPC_HALION_CONTROLLER)); + Creature* halion = ObjectAccessor::GetCreature(*GetCaster(), instance->GetGuidData(NPC_HALION)); + + if (!controller || !halion) + return; + + GetCaster()->CastSpell(GetCaster(), _corporealityReference[5], true); + halion->CastSpell(halion, _corporealityReference[5], true); + + controller->CastSpell(controller, SPELL_SUMMON_EXIT_PORTALS_NORMAL, true); + controller->CastSpell(controller, SPELL_SUMMON_EXIT_PORTALS, true); + controller->AI()->DoAction(ACTION_CHECK_CORPOREALITY); + + halion->RemoveAurasDueToSpell(SPELL_TWILIGHT_PHASING); + if (GameObject* gobject = halion->FindNearestGameObject(GO_HALION_PORTAL_1, 100.0f)) + gobject->Delete(); + + instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TOGGLE, 1); + instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_MATERIAL, 50); + instance->DoUpdateWorldState(WORLDSTATE_CORPOREALITY_TWILIGHT, 50); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_halion_twilight_division::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; -class spell_halion_twilight_mending : public SpellScriptLoader +class spell_halion_twilight_mending : public SpellScript { -public: - spell_halion_twilight_mending() : SpellScriptLoader("spell_halion_twilight_mending") { } + PrepareSpellScript(spell_halion_twilight_mending); - class spell_halion_twilight_mending_SpellScript : public SpellScript + void HandleHealPct(SpellEffIndex /*effIndex*/) { - PrepareSpellScript(spell_halion_twilight_mending_SpellScript); + if (Creature* target = GetHitCreature()) + target->AI()->Talk(SAY_REGENERATE); + } - void HandleHealPct(SpellEffIndex /*effIndex*/) - { - if (Creature* target = GetHitCreature()) - target->AI()->Talk(SAY_REGENERATE); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_halion_twilight_mending_SpellScript::HandleHealPct, EFFECT_ALL, SPELL_EFFECT_HEAL_PCT); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_halion_twilight_mending_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_halion_twilight_mending::HandleHealPct, EFFECT_ALL, SPELL_EFFECT_HEAL_PCT); } }; @@ -1482,24 +1338,24 @@ void AddSC_boss_halion() new npc_orb_carrier(); new npc_living_inferno(); - new spell_halion_meteor_strike_targeting(); - new spell_halion_meteor_strike_marker(); - new spell_halion_meteor_strike_spread(); - new spell_halion_blazing_aura(); - new spell_halion_combustion_consumption("spell_halion_soul_consumption", SPELL_MARK_OF_CONSUMPTION); - new spell_halion_combustion_consumption("spell_halion_fiery_combustion", SPELL_MARK_OF_COMBUSTION); - new spell_halion_marks("spell_halion_mark_of_combustion", SPELL_FIERY_COMBUSTION_SUMMON, SPELL_FIERY_COMBUSTION); - new spell_halion_marks("spell_halion_mark_of_consumption", SPELL_SOUL_CONSUMPTION_SUMMON, SPELL_SOUL_CONSUMPTION); - new spell_halion_damage_aoe_summon("spell_halion_combustion_summon", SPELL_FIERY_COMBUSTION_EXPLOSION, SPELL_COMBUSTION_DAMAGE_AURA); - new spell_halion_damage_aoe_summon("spell_halion_consumption_summon", SPELL_SOUL_CONSUMPTION_EXPLOSION, SPELL_CONSUMPTION_DAMAGE_AURA); - new spell_halion_clear_debuffs(); - new spell_halion_twilight_phasing(); - new spell_halion_twilight_realm(); - new spell_halion_leave_twilight_realm(); - new spell_halion_twilight_cutter_periodic(); - new spell_halion_twilight_cutter(); - new spell_halion_summon_exit_portals(); - new spell_halion_twilight_division(); - new spell_halion_twilight_mending(); + RegisterSpellScript(spell_halion_meteor_strike_targeting); + RegisterSpellScript(spell_halion_meteor_strike_marker_aura); + RegisterSpellScript(spell_halion_meteor_strike_spread_aura); + RegisterSpellScript(spell_halion_blazing_aura); + RegisterSpellScriptWithArgs(spell_halion_combustion_consumption_aura, "spell_halion_soul_consumption_aura", SPELL_MARK_OF_CONSUMPTION); + RegisterSpellScriptWithArgs(spell_halion_combustion_consumption_aura, "spell_halion_fiery_combustion_aura", SPELL_MARK_OF_COMBUSTION); + RegisterSpellScriptWithArgs(spell_halion_marks_aura, "spell_halion_mark_of_combustion_aura", SPELL_FIERY_COMBUSTION_SUMMON, SPELL_FIERY_COMBUSTION); + RegisterSpellScriptWithArgs(spell_halion_marks_aura, "spell_halion_mark_of_consumption_aura", SPELL_SOUL_CONSUMPTION_SUMMON, SPELL_SOUL_CONSUMPTION); + RegisterSpellScriptWithArgs(spell_halion_damage_aoe_summon, "spell_halion_combustion_summon", SPELL_FIERY_COMBUSTION_EXPLOSION, SPELL_COMBUSTION_DAMAGE_AURA); + RegisterSpellScriptWithArgs(spell_halion_damage_aoe_summon, "spell_halion_consumption_summon", SPELL_SOUL_CONSUMPTION_EXPLOSION, SPELL_CONSUMPTION_DAMAGE_AURA); + RegisterSpellScript(spell_halion_clear_debuffs); + RegisterSpellAndAuraScriptPair(spell_halion_twilight_phasing, spell_halion_twilight_phasing_aura); + RegisterSpellScript(spell_halion_twilight_realm_aura); + RegisterSpellScript(spell_halion_leave_twilight_realm_aura); + RegisterSpellScript(spell_halion_twilight_cutter_periodic_aura); + RegisterSpellScript(spell_halion_twilight_cutter); + RegisterSpellScript(spell_halion_summon_exit_portals); + RegisterSpellScript(spell_halion_twilight_division); + RegisterSpellScript(spell_halion_twilight_mending); } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp index c11e61216..7c71bbd3d 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/boss_saviana_ragefire.cpp @@ -185,65 +185,48 @@ public: } }; -class spell_saviana_conflagration_init : public SpellScriptLoader +class spell_saviana_conflagration_init : public SpellScript { -public: - spell_saviana_conflagration_init() : SpellScriptLoader("spell_saviana_conflagration_init") { } + PrepareSpellScript(spell_saviana_conflagration_init); - class spell_saviana_conflagration_init_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_saviana_conflagration_init_SpellScript); + return ValidateSpellInfo({ SPELL_FLAME_BEACON, SPELL_CONFLAGRATION_MISSLE }); + } - void HandleDummy(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - GetCaster()->CastSpell(GetHitUnit(), SPELL_FLAME_BEACON, true); - GetCaster()->CastSpell(GetHitUnit(), SPELL_CONFLAGRATION_MISSLE, true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_saviana_conflagration_init_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); - } - }; - - SpellScript* GetSpellScript() const override + void HandleDummy(SpellEffIndex effIndex) { - return new spell_saviana_conflagration_init_SpellScript(); + PreventHitDefaultEffect(effIndex); + GetCaster()->CastSpell(GetHitUnit(), SPELL_FLAME_BEACON, true); + GetCaster()->CastSpell(GetHitUnit(), SPELL_CONFLAGRATION_MISSLE, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_saviana_conflagration_init::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } }; -class spell_saviana_conflagration_throwback : public SpellScriptLoader +class spell_saviana_conflagration_throwback : public SpellScript { -public: - spell_saviana_conflagration_throwback() : SpellScriptLoader("spell_saviana_conflagration_throwback") { } + PrepareSpellScript(spell_saviana_conflagration_throwback); - class spell_saviana_conflagration_throwback_SpellScript : public SpellScript + void HandleScript(SpellEffIndex effIndex) { - PrepareSpellScript(spell_saviana_conflagration_throwback_SpellScript); + PreventHitDefaultEffect(effIndex); + GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); + } - void HandleScript(SpellEffIndex effIndex) - { - PreventHitDefaultEffect(effIndex); - GetHitUnit()->CastSpell(GetCaster(), uint32(GetEffectValue()), true); - } - - void Register() override - { - OnEffectHitTarget += SpellEffectFn(spell_saviana_conflagration_throwback_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); - } - }; - - SpellScript* GetSpellScript() const override + void Register() override { - return new spell_saviana_conflagration_throwback_SpellScript(); + OnEffectHitTarget += SpellEffectFn(spell_saviana_conflagration_throwback::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; void AddSC_boss_saviana_ragefire() { new boss_saviana_ragefire(); - new spell_saviana_conflagration_init(); - new spell_saviana_conflagration_throwback(); + RegisterSpellScript(spell_saviana_conflagration_init); + RegisterSpellScript(spell_saviana_conflagration_throwback); } diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp index 2296abae5..d2659ab54 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/instance_ruby_sanctum.cpp @@ -245,41 +245,35 @@ public: } }; -class spell_ruby_sanctum_rallying_shout : public SpellScriptLoader +class spell_ruby_sanctum_rallying_shout : public SpellScript { -public: - spell_ruby_sanctum_rallying_shout() : SpellScriptLoader("spell_ruby_sanctum_rallying_shout") { } + PrepareSpellScript(spell_ruby_sanctum_rallying_shout); - class spell_ruby_sanctum_rallying_shout_SpellScript : public SpellScript + bool Validate(SpellInfo const* /*spellInfo*/) override { - PrepareSpellScript(spell_ruby_sanctum_rallying_shout_SpellScript); + return ValidateSpellInfo({ SPELL_RALLY }); + } - void CountAllies() - { - uint32 count = GetSpell()->GetUniqueTargetInfo()->size(); - if (count == GetCaster()->GetAuraCount(SPELL_RALLY)) - return; - - GetCaster()->RemoveAurasDueToSpell(SPELL_RALLY); - if (count > 0) - GetCaster()->CastCustomSpell(SPELL_RALLY, SPELLVALUE_AURA_STACK, count, GetCaster(), true); - } - - void Register() override - { - AfterHit += SpellHitFn(spell_ruby_sanctum_rallying_shout_SpellScript::CountAllies); - } - }; - - SpellScript* GetSpellScript() const override + void CountAllies() { - return new spell_ruby_sanctum_rallying_shout_SpellScript(); + uint32 count = GetSpell()->GetUniqueTargetInfo()->size(); + if (count == GetCaster()->GetAuraCount(SPELL_RALLY)) + return; + + GetCaster()->RemoveAurasDueToSpell(SPELL_RALLY); + if (count > 0) + GetCaster()->CastCustomSpell(SPELL_RALLY, SPELLVALUE_AURA_STACK, count, GetCaster(), true); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_ruby_sanctum_rallying_shout::CountAllies); } }; void AddSC_instance_ruby_sanctum() { new instance_ruby_sanctum(); - new spell_ruby_sanctum_rallying_shout(); + RegisterSpellScript(spell_ruby_sanctum_rallying_shout); } From 3669144099266f554a2143f9fe28a83fde5458d4 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sat, 27 Jul 2024 13:17:48 +0200 Subject: [PATCH 22/33] chore(Deps/Boost): Cleanup pre-c++11 checks and silence CMake warning (#19450) * cherry-pick commit (https://github.com/TrinityCore/TrinityCore/commit/ad96f1fd78f26a304e56c37495017d14aa34c9c0) * cherry-pick commit (https://github.com/TrinityCore/TrinityCore/commit/66abca15933fcc6bfdd6dba71ee725da4e906af3) Co-authored-by: Shauren --- deps/boost/CMakeLists.txt | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/deps/boost/CMakeLists.txt b/deps/boost/CMakeLists.txt index cb44a0f7f..61334ee2e 100644 --- a/deps/boost/CMakeLists.txt +++ b/deps/boost/CMakeLists.txt @@ -11,11 +11,8 @@ # if(WIN32) - set(BOOST_DEBUG ON) if(DEFINED ENV{Boost_ROOT}) set(Boost_ROOT $ENV{Boost_ROOT}) - list(APPEND BOOST_LIBRARYDIR - ${Boost_ROOT}/lib${PLATFORM}-msvc-14.2) endif() set(Boost_USE_STATIC_LIBS ON) @@ -23,6 +20,8 @@ if(WIN32) set(Boost_USE_STATIC_RUNTIME OFF) endif() +set(Boost_NO_WARN_NEW_VERSIONS ON) + include (CheckCXXSourceCompiles) if (WIN32) @@ -40,20 +39,6 @@ if(NOT Boost_FOUND) endif() endif() -# Find if Boost was compiled in C++03 mode because it requires -DBOOST_NO_CXX11_SCOPED_ENUMS - -set(CMAKE_REQUIRED_INCLUDES ${Boost_INCLUDE_DIR}) -set(CMAKE_REQUIRED_LIBRARIES ${Boost_SYSTEM_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} ${Boost_IOSTREAMS_LIBRARY}) -set(CMAKE_REQUIRED_FLAGS "-std=c++11") -check_cxx_source_compiles(" - #include - #include - int main() { boost::filesystem::copy_file(boost::filesystem::path(), boost::filesystem::path()); }" -boost_filesystem_copy_links_without_NO_SCOPED_ENUM) -unset(CMAKE_REQUIRED_INCLUDES) -unset(CMAKE_REQUIRED_LIBRARIES) -unset(CMAKE_REQUIRED_FLAGS) - add_library(boost INTERFACE) target_link_libraries(boost @@ -74,13 +59,3 @@ target_compile_definitions(boost -DBOOST_ASIO_NO_DEPRECATED -DBOOST_SYSTEM_USE_UTF8 -DBOOST_BIND_NO_PLACEHOLDERS) - -if (NOT boost_filesystem_copy_links_without_NO_SCOPED_ENUM) - target_compile_definitions(boost - INTERFACE - -DBOOST_NO_CXX11_SCOPED_ENUMS) -endif() - -target_compile_definitions(boost - INTERFACE - -DAC_HAS_BROKEN_WSTRING_REGEX) From 9b6a6174cca117100ba7d7c4be29bf8a36f986d5 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 27 Jul 2024 11:17:55 +0000 Subject: [PATCH 23/33] chore(DB): import pending files Referenced commit(s): a9e4d3d37e283a5edc84712a014a5495997581d1 --- .../rev_1722077567551108843.sql => db_world/2024_07_27_03.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1722077567551108843.sql => db_world/2024_07_27_03.sql} (97%) diff --git a/data/sql/updates/pending_db_world/rev_1722077567551108843.sql b/data/sql/updates/db_world/2024_07_27_03.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1722077567551108843.sql rename to data/sql/updates/db_world/2024_07_27_03.sql index fbe9eec2c..bca30f8ff 100644 --- a/data/sql/updates/pending_db_world/rev_1722077567551108843.sql +++ b/data/sql/updates/db_world/2024_07_27_03.sql @@ -1,3 +1,4 @@ +-- DB update 2024_07_27_02 -> 2024_07_27_03 -- UPDATE `spell_script_names` SET `ScriptName`='spell_halion_meteor_strike_marker_aura' WHERE `spell_id`=74641 AND `ScriptName`='spell_halion_meteor_strike_marker'; UPDATE `spell_script_names` SET `ScriptName`='spell_halion_meteor_strike_spread_aura' WHERE `spell_id`=74696 AND `ScriptName`='spell_halion_meteor_strike_spread'; From 034a4c0ff68e4709409776f7a96193ffb5fb2fd3 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sat, 27 Jul 2024 13:21:23 +0200 Subject: [PATCH 24/33] fix(Core/Chat): Exempt addon messages from CONFIG_CHAT_MUTE_FIRST_LOGIN (#19472) * closes https://github.com/azerothcore/azerothcore-wotlk/issues/19471 --- src/server/game/Handlers/ChatHandler.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 6ce76ef06..90b46888a 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -131,7 +131,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) break; default: { - if (sWorld->getBoolConfig(CONFIG_CHAT_MUTE_FIRST_LOGIN)) + if (sWorld->getBoolConfig(CONFIG_CHAT_MUTE_FIRST_LOGIN) && lang != LANG_ADDON) { uint32 minutes = sWorld->getIntConfig(CONFIG_CHAT_TIME_MUTE_FIRST_LOGIN); From 4c25c868702752fe9528aeaae9a2cfaae75e0e20 Mon Sep 17 00:00:00 2001 From: avarishd <46330494+avarishd@users.noreply.github.com> Date: Sat, 27 Jul 2024 20:05:47 +0300 Subject: [PATCH 25/33] fix(DB/SAI): Disgusting Oozeling's Dark Iron Ale interaction (#19375) * fix(DB/SAI): Disgusting Oozeling's Dark Iron Ale interaction * keira wtf * sniff Co-Authored-By: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> * maxrange to 20 * change to invoker --------- Co-authored-by: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> --- .../rev_1720539450987942100.sql | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1720539450987942100.sql diff --git a/data/sql/updates/pending_db_world/rev_1720539450987942100.sql b/data/sql/updates/pending_db_world/rev_1720539450987942100.sql new file mode 100644 index 000000000..5b023423e --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1720539450987942100.sql @@ -0,0 +1,22 @@ +-- Disgusting Oozeling +DELETE FROM `creature_text` WHERE (`CreatureID` = 15429); +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(15429, 0, 0, '%s guzzles down the ale!', 16, 0, 100, 0, 0, 0, 10167, 0, 'Disgusting Oozeling - Dark Iron Ale'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 1 AND `entryorguid` = 165578 AND `id` = 4); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(165578, 1, 4, 0, 63, 0, 100, 0, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 15429, 20, 0, 0, 0, 0, 0, 0, 'Dark Iron Ale Mug - On Just Created - Set Data to Disgusting Oozeling'); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 15429; +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 15429); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(15429, 0, 0, 0, 38, 0, 100, 0, 1, 1, 5000, 5000, 0, 0, 80, 1542900, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Disgusting Oozeling - On Data Set 1 1 - Run Script'), +(15429, 0, 1, 0, 34, 0, 100, 0, 8, 1, 0, 0, 0, 0, 80, 1542901, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Disgusting Oozeling - On Reached Point 1 - Run Script'); + +DELETE FROM `smart_scripts` WHERE (`source_type` = 9 AND `entryorguid` IN (1542900,1542901)); +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `event_param6`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(1542900, 9, 0, 0, 0, 0, 100, 0, 500, 500, 0, 0, 0, 0, 69, 1, 0, 0, 1, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Disgusting Oozeling - Actionlist - Move To Invoker \'Dark Iron Ale\''), +(1542901, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 0, 0, 5, 33, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Disgusting Oozeling - Actionlist - Play Emote 33'), +(1542901, 9, 1, 0, 0, 0, 100, 0, 200, 200, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Disgusting Oozeling - Actionlist - Say Line 0'), +(1542901, 9, 2, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Disgusting Oozeling - Actionlist - Despawn Invoker In 1000 ms'), +(1542901, 9, 3, 0, 0, 0, 100, 0, 2500, 2500, 0, 0, 0, 0, 29, 1, 90, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Disgusting Oozeling - Actionlist - Start Follow Owner Or Summoner'); From 8d9f22572ecfaafab07e7a1db2031f28a7042a42 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 27 Jul 2024 17:06:37 +0000 Subject: [PATCH 26/33] chore(DB): import pending files Referenced commit(s): 4c25c868702752fe9528aeaae9a2cfaae75e0e20 --- .../rev_1720539450987942100.sql => db_world/2024_07_27_04.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1720539450987942100.sql => db_world/2024_07_27_04.sql} (98%) diff --git a/data/sql/updates/pending_db_world/rev_1720539450987942100.sql b/data/sql/updates/db_world/2024_07_27_04.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1720539450987942100.sql rename to data/sql/updates/db_world/2024_07_27_04.sql index 5b023423e..c9b016db0 100644 --- a/data/sql/updates/pending_db_world/rev_1720539450987942100.sql +++ b/data/sql/updates/db_world/2024_07_27_04.sql @@ -1,3 +1,4 @@ +-- DB update 2024_07_27_03 -> 2024_07_27_04 -- Disgusting Oozeling DELETE FROM `creature_text` WHERE (`CreatureID` = 15429); INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES From 6c0afe18108ee732e75279255174e81f3e94123e Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 28 Jul 2024 01:25:06 +0200 Subject: [PATCH 27/33] refactor(Core/WorldSession): Make SendNotification use `fmt` and parse acore_string (#19489) * refactor(Core/WorldSession): Make SendNotification use `fmt` * Make SendNotification use `fmt` * Make SendNotification parse acore_string entries --- .../game/Handlers/AuctionHouseHandler.cpp | 2 +- src/server/game/Handlers/ChatHandler.cpp | 14 ++++---- src/server/game/Handlers/MailHandler.cpp | 2 +- src/server/game/Handlers/TicketHandler.cpp | 2 +- src/server/game/Handlers/TradeHandler.cpp | 4 +-- src/server/game/Server/WorldSession.cpp | 34 +++---------------- src/server/game/Server/WorldSession.h | 14 ++++++-- 7 files changed, 29 insertions(+), 43 deletions(-) diff --git a/src/server/game/Handlers/AuctionHouseHandler.cpp b/src/server/game/Handlers/AuctionHouseHandler.cpp index dcba85fe6..fad0182c5 100644 --- a/src/server/game/Handlers/AuctionHouseHandler.cpp +++ b/src/server/game/Handlers/AuctionHouseHandler.cpp @@ -55,7 +55,7 @@ void WorldSession::SendAuctionHello(ObjectGuid guid, Creature* unit) { if (GetPlayer()->GetLevel() < sWorld->getIntConfig(CONFIG_AUCTION_LEVEL_REQ)) { - SendNotification(GetAcoreString(LANG_AUCTION_REQ), sWorld->getIntConfig(CONFIG_AUCTION_LEVEL_REQ)); + SendNotification(LANG_AUCTION_REQ, sWorld->getIntConfig(CONFIG_AUCTION_LEVEL_REQ)); return; } diff --git a/src/server/game/Handlers/ChatHandler.cpp b/src/server/game/Handlers/ChatHandler.cpp index 90b46888a..1eda1e8a9 100644 --- a/src/server/game/Handlers/ChatHandler.cpp +++ b/src/server/game/Handlers/ChatHandler.cpp @@ -164,7 +164,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) if (sender->HasAura(1852) && type != CHAT_MSG_WHISPER) { - SendNotification(GetAcoreString(LANG_GM_SILENCE), sender->GetName().c_str()); + SendNotification(LANG_GM_SILENCE, sender->GetName()); recvData.rfinish(); return; } @@ -296,7 +296,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) if (!_player->CanSpeak()) { std::string timeStr = secsToTimeString(m_muteTime - GameTime::GetGameTime().count()); - SendNotification(GetAcoreString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str()); + SendNotification(LANG_WAIT_BEFORE_SPEAKING, timeStr); return; } } @@ -361,7 +361,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) if (sender->GetLevel() < sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ)) { - SendNotification(GetAcoreString(LANG_SAY_REQ), sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ)); + SendNotification(LANG_SAY_REQ, sWorld->getIntConfig(CONFIG_CHAT_SAY_LEVEL_REQ)); return; } @@ -387,7 +387,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) if (sender->GetLevel() < sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ) && receiver != sender) { - SendNotification(GetAcoreString(LANG_WHISPER_REQ), sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ)); + SendNotification(LANG_WHISPER_REQ, sWorld->getIntConfig(CONFIG_CHAT_WHISPER_LEVEL_REQ)); return; } @@ -407,7 +407,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) // pussywizard: optimization if (GetPlayer()->HasAura(1852) && !receiver->IsGameMaster()) { - SendNotification(GetAcoreString(LANG_GM_SILENCE), GetPlayer()->GetName().c_str()); + SendNotification(LANG_GM_SILENCE, GetPlayer()->GetName()); return; } @@ -590,7 +590,7 @@ void WorldSession::HandleMessagechatOpcode(WorldPacket& recvData) { if (sender->GetLevel() < sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ)) { - SendNotification(GetAcoreString(LANG_CHANNEL_REQ), sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ)); + SendNotification(LANG_CHANNEL_REQ, sWorld->getIntConfig(CONFIG_CHAT_CHANNEL_LEVEL_REQ)); return; } } @@ -735,7 +735,7 @@ void WorldSession::HandleTextEmoteOpcode(WorldPacket& recvData) if (!GetPlayer()->CanSpeak()) { std::string timeStr = secsToTimeString(m_muteTime - GameTime::GetGameTime().count()); - SendNotification(GetAcoreString(LANG_WAIT_BEFORE_SPEAKING), timeStr.c_str()); + SendNotification(LANG_WAIT_BEFORE_SPEAKING, timeStr); return; } diff --git a/src/server/game/Handlers/MailHandler.cpp b/src/server/game/Handlers/MailHandler.cpp index 626991967..9c71d98bc 100644 --- a/src/server/game/Handlers/MailHandler.cpp +++ b/src/server/game/Handlers/MailHandler.cpp @@ -117,7 +117,7 @@ void WorldSession::HandleSendMail(WorldPacket& recvData) if (player->GetLevel() < sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ)) { - SendNotification(GetAcoreString(LANG_MAIL_SENDER_REQ), sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ)); + SendNotification(LANG_MAIL_SENDER_REQ, sWorld->getIntConfig(CONFIG_MAIL_LEVEL_REQ)); return; } diff --git a/src/server/game/Handlers/TicketHandler.cpp b/src/server/game/Handlers/TicketHandler.cpp index 9a445efe4..ff9fe4e3a 100644 --- a/src/server/game/Handlers/TicketHandler.cpp +++ b/src/server/game/Handlers/TicketHandler.cpp @@ -35,7 +35,7 @@ void WorldSession::HandleGMTicketCreateOpcode(WorldPacket& recvData) if (GetPlayer()->GetLevel() < sWorld->getIntConfig(CONFIG_TICKET_LEVEL_REQ)) { - SendNotification(GetAcoreString(LANG_TICKET_REQ), sWorld->getIntConfig(CONFIG_TICKET_LEVEL_REQ)); + SendNotification(LANG_TICKET_REQ, sWorld->getIntConfig(CONFIG_TICKET_LEVEL_REQ)); return; } diff --git a/src/server/game/Handlers/TradeHandler.cpp b/src/server/game/Handlers/TradeHandler.cpp index 28ad91fdd..55c8079ef 100644 --- a/src/server/game/Handlers/TradeHandler.cpp +++ b/src/server/game/Handlers/TradeHandler.cpp @@ -574,7 +574,7 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) if (GetPlayer()->GetLevel() < sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ)) { - SendNotification(GetAcoreString(LANG_TRADE_REQ), sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ)); + SendNotification(LANG_TRADE_REQ, sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ)); return; } @@ -639,7 +639,7 @@ void WorldSession::HandleInitiateTradeOpcode(WorldPacket& recvPacket) if (pOther->GetLevel() < sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ)) { - SendNotification(GetAcoreString(LANG_TRADE_OTHER_REQ), sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ)); + SendNotification(LANG_TRADE_OTHER_REQ, sWorld->getIntConfig(CONFIG_TRADE_LEVEL_REQ)); return; } diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp index c7fc5abf8..7476ce1df 100644 --- a/src/server/game/Server/WorldSession.cpp +++ b/src/server/game/Server/WorldSession.cpp @@ -43,6 +43,7 @@ #include "QueryHolder.h" #include "ScriptMgr.h" #include "SocialMgr.h" +#include "Tokenize.h" #include "Transport.h" #include "Vehicle.h" #include "WardenMac.h" @@ -785,37 +786,12 @@ bool WorldSession::DisallowHyperlinksAndMaybeKick(std::string_view str) return false; } -void WorldSession::SendNotification(const char* format, ...) +void WorldSession::SendNotification(std::string_view str) { - if (format) + WorldPacket data(SMSG_NOTIFICATION, str.size() + 1); + for (std::string_view line : Acore::Tokenize(str, '\n', true)) { - va_list ap; - char szStr[1024]; - szStr[0] = '\0'; - va_start(ap, format); - vsnprintf(szStr, 1024, format, ap); - va_end(ap); - - WorldPacket data(SMSG_NOTIFICATION, (strlen(szStr) + 1)); - data << szStr; - SendPacket(&data); - } -} - -void WorldSession::SendNotification(uint32 string_id, ...) -{ - char const* format = GetAcoreString(string_id); - if (format) - { - va_list ap; - char szStr[1024]; - szStr[0] = '\0'; - va_start(ap, string_id); - vsnprintf(szStr, 1024, format, ap); - va_end(ap); - - WorldPacket data(SMSG_NOTIFICATION, (strlen(szStr) + 1)); - data << szStr; + data << line.data(); SendPacket(&data); } } diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h index 89d0b4731..596214e29 100644 --- a/src/server/game/Server/WorldSession.h +++ b/src/server/game/Server/WorldSession.h @@ -345,9 +345,19 @@ public: void ReadMovementInfo(WorldPacket& data, MovementInfo* mi); void WriteMovementInfo(WorldPacket* data, MovementInfo* mi); + void SendNotification(std::string_view str); + template + void SendNotification(uint32 strId, Args&&... args) + { + SendNotification(Acore::StringFormatFmt(GetAcoreString(strId), std::forward(args)...)); + } + template + void SendNotification(char const* fmt, Args&&... args) + { + SendNotification(Acore::StringFormatFmt(fmt, std::forward(args)...)); + } + void SendPacket(WorldPacket const* packet); - void SendNotification(const char* format, ...) ATTR_PRINTF(2, 3); - void SendNotification(uint32 string_id, ...); void SendPetNameInvalid(uint32 error, std::string const& name, DeclinedName* declinedName); void SendPartyResult(PartyOperation operation, std::string const& member, PartyResult res, uint32 val = 0); void SendAreaTriggerMessage(const char* Text, ...) ATTR_PRINTF(2, 3); From 4785aabbf2a92fcf87868df6ac5a87ea8e247207 Mon Sep 17 00:00:00 2001 From: Kitzunu <24550914+Kitzunu@users.noreply.github.com> Date: Sun, 28 Jul 2024 01:44:03 +0200 Subject: [PATCH 28/33] fix(Scritps/AV): Use db defined text for Herald (#19486) * fix(Scritps/AV): Use db defined text for Herald * closes https://github.com/azerothcore/azerothcore-wotlk/issues/19483 * indent * Update BattlegroundAV.cpp * fix build * remove from acore_string * Update BattlegroundAV.h --- .../rev_1722073432548496100.sql | 2 + .../Battlegrounds/Zones/BattlegroundAV.cpp | 303 +++++++++++++----- .../game/Battlegrounds/Zones/BattlegroundAV.h | 77 ++++- src/server/game/Miscellaneous/Language.h | 38 +-- 4 files changed, 309 insertions(+), 111 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1722073432548496100.sql diff --git a/data/sql/updates/pending_db_world/rev_1722073432548496100.sql b/data/sql/updates/pending_db_world/rev_1722073432548496100.sql new file mode 100644 index 000000000..5c42e8ad1 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1722073432548496100.sql @@ -0,0 +1,2 @@ +-- +DELETE FROM `acore_string` WHERE `entry` IN (1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325); diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp index 7f2c7cb3e..dce3357b5 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp @@ -120,9 +120,8 @@ void BattlegroundAV::HandleKillUnit(Creature* unit, Player* killer) //spawn destroyed aura for (uint8 i = 0; i <= 9; i++) SpawnBGObject(BG_AV_OBJECT_BURN_BUILDING_ALLIANCE + i, RESPAWN_IMMEDIATELY); - Creature* creature = GetBGCreature(AV_CPLACE_HERALD); - if (creature) - YellToAll(creature, GetAcoreString(LANG_BG_AV_A_CAPTAIN_DEAD), LANG_UNIVERSAL); + if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD)) + creature->AI()->Talk(AV_TEXT_HERALD_STORMPIKE_GENERAL_DEAD); DelCreature(AV_CPLACE_TRIGGER16); } else if (entry == BG_AV_CreatureInfo[AV_NPC_H_CAPTAIN]) @@ -139,9 +138,8 @@ void BattlegroundAV::HandleKillUnit(Creature* unit, Player* killer) //spawn destroyed aura for (uint8 i = 0; i <= 9; i++) SpawnBGObject(BG_AV_OBJECT_BURN_BUILDING_HORDE + i, RESPAWN_IMMEDIATELY); - Creature* creature = GetBGCreature(AV_CPLACE_HERALD); - if (creature) - YellToAll(creature, GetAcoreString(LANG_BG_AV_H_CAPTAIN_DEAD), LANG_UNIVERSAL); + if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD)) + creature->AI()->Talk(AV_TEXT_HERALD_FROSTWOLF_GENERAL_DEAD); DelCreature(AV_CPLACE_TRIGGER18); } else if (entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_N_4] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_A_4] || entry == BG_AV_CreatureInfo[AV_NPC_N_MINE_H_4]) @@ -646,16 +644,9 @@ void BattlegroundAV::EventPlayerDestroyedPoint(BG_AV_Nodes node) } } } - //send a nice message to all :) - char buf[256]; - if (IsTower(node)) - snprintf(buf, sizeof(buf), GetAcoreString(LANG_BG_AV_TOWER_TAKEN), GetNodeName(node), (ownerId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE)); - else - snprintf(buf, sizeof(buf), GetAcoreString(LANG_BG_AV_GRAVE_TAKEN), GetNodeName(node), (ownerId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE)); - Creature* creature = GetBGCreature(AV_CPLACE_HERALD); - if (creature) - YellToAll(creature, buf, LANG_UNIVERSAL); + if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD)) + creature->AI()->Talk(GetDefendString(node, ownerId)); } void BattlegroundAV::ChangeMineOwner(uint8 mine, TeamId teamId, bool initial) @@ -727,12 +718,8 @@ void BattlegroundAV::ChangeMineOwner(uint8 mine, TeamId teamId, bool initial) if (teamId == TEAM_ALLIANCE || teamId == TEAM_HORDE) { m_Mine_Reclaim_Timer[mine] = AV_MINE_RECLAIM_TIMER; - char buf[256]; - snprintf(buf, sizeof(buf), GetAcoreString(LANG_BG_AV_MINE_TAKEN), (teamId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE), - GetAcoreString((mine == AV_NORTH_MINE) ? LANG_BG_AV_MINE_NORTH : LANG_BG_AV_MINE_SOUTH)); - Creature* creature = GetBGCreature(AV_CPLACE_HERALD); - if (creature) - YellToAll(creature, buf, LANG_UNIVERSAL); + if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD)) + creature->AI()->Talk(GetMineString(mine, teamId)); } else { @@ -980,18 +967,12 @@ void BattlegroundAV::EventPlayerDefendsPoint(Player* player, uint32 object) SpawnBGObject(((teamId == TEAM_ALLIANCE) ? BG_AV_OBJECT_SNOW_EYECANDY_A : BG_AV_OBJECT_SNOW_EYECANDY_H) + i, RESPAWN_IMMEDIATELY); } } - //send a nice message to all :) - char buf[256]; - snprintf(buf, sizeof(buf), GetAcoreString((IsTower(node)) ? LANG_BG_AV_TOWER_DEFENDED : LANG_BG_AV_GRAVE_DEFENDED), GetNodeName(node), (teamId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE)); - Creature* creature = GetBGCreature(AV_CPLACE_HERALD); - if (creature) - YellToAll(creature, buf, LANG_UNIVERSAL); + + if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD)) + creature->AI()->Talk(GetDefendString(node, teamId)); + //update the statistic for the defending player UpdatePlayerScore(player, (IsTower(node)) ? SCORE_TOWERS_DEFENDED : SCORE_GRAVEYARDS_DEFENDED, 1); - if (IsTower(node)) - PlaySoundToAll(AV_SOUND_BOTH_TOWER_DEFEND); - else - PlaySoundToAll((teamId == TEAM_ALLIANCE) ? AV_SOUND_ALLIANCE_GOOD : AV_SOUND_HORDE_GOOD); } void BattlegroundAV::EventPlayerAssaultsPoint(Player* player, uint32 object) @@ -1092,15 +1073,11 @@ void BattlegroundAV::EventPlayerAssaultsPoint(Player* player, uint32 object) // xinef: change here is too late, AssaultNode(node, team); UpdateNodeWorldState(node); - //send a nice message to all :) - char buf[256]; - snprintf(buf, sizeof(buf), (IsTower(node)) ? GetAcoreString(LANG_BG_AV_TOWER_ASSAULTED) : GetAcoreString(LANG_BG_AV_GRAVE_ASSAULTED), GetNodeName(node), (teamId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE)); - Creature* creature = GetBGCreature(AV_CPLACE_HERALD); - if (creature) - YellToAll(creature, buf, LANG_UNIVERSAL); + if (Creature* creature = GetBGCreature(AV_CPLACE_HERALD)) + creature->AI()->Talk(GetAttackString(node, teamId)); + //update the statistic for the assaulting player UpdatePlayerScore(player, (IsTower(node)) ? SCORE_TOWERS_ASSAULTED : SCORE_GRAVEYARDS_ASSAULTED, 1); - PlaySoundToAll((teamId == TEAM_ALLIANCE) ? AV_SOUND_ALLIANCE_ASSAULTS : AV_SOUND_HORDE_ASSAULTS); player->KilledMonsterCredit((IsTower(node)) ? BG_AV_QUEST_CREDIT_TOWER : BG_AV_QUEST_CREDIT_GRAVEYARD); } @@ -1466,46 +1443,226 @@ bool BattlegroundAV::SetupBattleground() return true; } -char const* BattlegroundAV::GetNodeName(BG_AV_Nodes node) +uint8 BattlegroundAV::GetAttackString(BG_AV_Nodes node, TeamId teamId) { + uint8 strId = 0; switch (node) { - case BG_AV_NODES_FIRSTAID_STATION: - return GetAcoreString(LANG_BG_AV_NODE_GRAVE_STORM_AID); - case BG_AV_NODES_DUNBALDAR_SOUTH: - return GetAcoreString(LANG_BG_AV_NODE_TOWER_DUN_S); - case BG_AV_NODES_DUNBALDAR_NORTH: - return GetAcoreString(LANG_BG_AV_NODE_TOWER_DUN_N); - case BG_AV_NODES_STORMPIKE_GRAVE: - return GetAcoreString(LANG_BG_AV_NODE_GRAVE_STORMPIKE); - case BG_AV_NODES_ICEWING_BUNKER: - return GetAcoreString(LANG_BG_AV_NODE_TOWER_ICEWING); - case BG_AV_NODES_STONEHEART_GRAVE: - return GetAcoreString(LANG_BG_AV_NODE_GRAVE_STONE); - case BG_AV_NODES_STONEHEART_BUNKER: - return GetAcoreString(LANG_BG_AV_NODE_TOWER_STONE); - case BG_AV_NODES_SNOWFALL_GRAVE: - return GetAcoreString(LANG_BG_AV_NODE_GRAVE_SNOW); - case BG_AV_NODES_ICEBLOOD_TOWER: - return GetAcoreString(LANG_BG_AV_NODE_TOWER_ICE); - case BG_AV_NODES_ICEBLOOD_GRAVE: - return GetAcoreString(LANG_BG_AV_NODE_GRAVE_ICE); - case BG_AV_NODES_TOWER_POINT: - return GetAcoreString(LANG_BG_AV_NODE_TOWER_POINT); - case BG_AV_NODES_FROSTWOLF_GRAVE: - return GetAcoreString(LANG_BG_AV_NODE_GRAVE_FROST); - case BG_AV_NODES_FROSTWOLF_ETOWER: - return GetAcoreString(LANG_BG_AV_NODE_TOWER_FROST_E); - case BG_AV_NODES_FROSTWOLF_WTOWER: - return GetAcoreString(LANG_BG_AV_NODE_TOWER_FROST_W); - case BG_AV_NODES_FROSTWOLF_HUT: - return GetAcoreString(LANG_BG_AV_NODE_GRAVE_FROST_HUT); - default: - LOG_ERROR("bg.battleground", "tried to get name for node {}", node); - break; + case BG_AV_NODES_FIRSTAID_STATION: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_ATTACK; + else + strId = AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_ATTACK; + break; + case BG_AV_NODES_DUNBALDAR_SOUTH: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_ATTACK; + else + strId = AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_ATTACK; + break; + case BG_AV_NODES_DUNBALDAR_NORTH: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_ATTACK; + else + strId = AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_ATTACK; + break; + case BG_AV_NODES_STORMPIKE_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_ATTACK; + else + strId = AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_ATTACK; + break; + case BG_AV_NODES_ICEWING_BUNKER: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_ICEWING_BUNKER_ATTACK; + else + strId = AV_TEXT_H_HERALD_ICEWING_BUNKER_ATTACK; + break; + case BG_AV_NODES_STONEHEART_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_ATTACK; + else + strId = AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_ATTACK; + break; + case BG_AV_NODES_STONEHEART_BUNKER: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_ATTACK; + else + strId = AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_ATTACK; + break; + case BG_AV_NODES_SNOWFALL_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_ATTACK; + else + strId = AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_ATTACK; + break; + case BG_AV_NODES_ICEBLOOD_TOWER: + strId = AV_TEXT_A_HERALD_ICEBLOOD_TOWER_ATTACK; + break; + case BG_AV_NODES_ICEBLOOD_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_ATTACK; + else + strId = AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_ATTACK; + break; + case BG_AV_NODES_TOWER_POINT: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_TOWER_POINT_ATTACK; + else + strId = AV_TEXT_H_HERALD_TOWER_POINT_ATTACK; + break; + case BG_AV_NODES_FROSTWOLF_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_ATTACK; + else + strId = AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_ATTACK; + break; + case BG_AV_NODES_FROSTWOLF_ETOWER: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_ATTACK; + else + strId = AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_ATTACK; + break; + case BG_AV_NODES_FROSTWOLF_WTOWER: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_ATTACK; + else + strId = AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_ATTACK; + break; + case BG_AV_NODES_FROSTWOLF_HUT: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK; + else + strId = AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK; + break; + default: + break; } - return "Unknown"; + return strId; +} + +uint8 BattlegroundAV::GetDefendString(BG_AV_Nodes node, TeamId teamId) +{ + uint8 strId = 0; + switch (node) + { + case BG_AV_NODES_FIRSTAID_STATION: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_TAKEN; + else + strId = AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_TAKEN; + break; + case BG_AV_NODES_DUNBALDAR_SOUTH: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_TAKEN; + else + strId = AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_TAKEN; + break; + case BG_AV_NODES_DUNBALDAR_NORTH: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_TAKEN; + else + strId = AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_TAKEN; + break; + case BG_AV_NODES_STORMPIKE_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_TAKEN; + else + strId = AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_TAKEN; + break; + case BG_AV_NODES_ICEWING_BUNKER: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_ICEWING_BUNKER_TAKEN; + else + strId = AV_TEXT_H_HERALD_ICEWING_BUNKER_TAKEN; + break; + case BG_AV_NODES_STONEHEART_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_TAKEN; + else + strId = AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_TAKEN; + break; + case BG_AV_NODES_STONEHEART_BUNKER: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_TAKEN; + else + strId = AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_TAKEN; + break; + case BG_AV_NODES_SNOWFALL_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_TAKEN; + else + strId = AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_TAKEN; + break; + case BG_AV_NODES_ICEBLOOD_TOWER: + strId = AV_TEXT_A_HERALD_ICEBLOOD_TOWER_TAKEN; + break; + case BG_AV_NODES_ICEBLOOD_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_TAKEN; + else + strId = AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_TAKEN; + break; + case BG_AV_NODES_TOWER_POINT: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_TOWER_POINT_TAKEN; + else + strId = AV_TEXT_H_HERALD_TOWER_POINT_TAKEN; + break; + case BG_AV_NODES_FROSTWOLF_GRAVE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_TAKEN; + else + strId = AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_TAKEN; + break; + case BG_AV_NODES_FROSTWOLF_ETOWER: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_TAKEN; + else + strId = AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_TAKEN; + break; + case BG_AV_NODES_FROSTWOLF_WTOWER: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_TAKEN; + else + strId = AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_TAKEN; + break; + case BG_AV_NODES_FROSTWOLF_HUT: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN; + else + strId = AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN; + break; + default: + break; + } + + return strId; +} + +uint8 BattlegroundAV::GetMineString(uint8 mineId, TeamId teamId) +{ + uint8 strId = 0; + switch (mineId) + { + case AV_NORTH_MINE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_IRONDEEP_MINE_TAKEN; + else + strId = AV_TEXT_H_HERALD_IRONDEEP_MINE_TAKEN; + break; + case AV_SOUTH_MINE: + if (teamId == TEAM_ALLIANCE) + strId = AV_TEXT_A_HERALD_COLDTOOTH_MINE_TAKEN; + else + strId = AV_TEXT_H_HERALD_COLDTOOTH_MINE_TAKEN; + break; + default: + break; + } + + return strId; } void BattlegroundAV::AssaultNode(BG_AV_Nodes node, TeamId teamId) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h index 7a395bfd0..1d62a96fd 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.h @@ -1645,6 +1645,78 @@ enum BG_AV_Objectives AV_OBJECTIVE_DEFEND_GRAVEYARD = 65 }; +enum BG_AV_HERALD +{ + AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_TAKEN = 1, + AV_TEXT_A_HERALD_STORMPIKE_GRAVEYARD_ATTACK = 2, + AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_TAKEN = 3, + AV_TEXT_H_HERALD_STORMPIKE_GRAVEYARD_ATTACK = 4, + AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_TAKEN = 5, + AV_TEXT_A_HERALD_SNOWFALL_GRAVEYARD_ATTACK = 6, + AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_TAKEN = 7, + AV_TEXT_H_HERALD_SNOWFALL_GRAVEYARD_ATTACK = 8, + AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_TAKEN = 9, + AV_TEXT_A_HERALD_FROSTWOLF_GRAVEYARD_ATTACK = 10, + AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_TAKEN = 11, + AV_TEXT_H_HERALD_FROSTWOLF_GRAVEYARD_ATTACK = 12, + AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_ATTACK = 13, + AV_TEXT_H_HERALD_DUN_BALDAR_SOUTH_TAKEN = 14, + AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_ATTACK = 15, + AV_TEXT_A_HERALD_DUN_BALDAR_SOUTH_TAKEN = 16, + AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_ATTACK = 17, + AV_TEXT_H_HERALD_DUN_BALDAR_NORTH_TAKEN = 18, + AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_ATTACK = 19, + AV_TEXT_A_HERALD_DUN_BALDAR_NORTH_TAKEN = 20, + AV_TEXT_H_HERALD_ICEWING_BUNKER_ATTACK = 21, + AV_TEXT_H_HERALD_ICEWING_BUNKER_TAKEN = 22, + AV_TEXT_A_HERALD_ICEWING_BUNKER_ATTACK = 23, + AV_TEXT_A_HERALD_ICEWING_BUNKER_TAKEN = 24, + AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_ATTACK = 25, + AV_TEXT_H_HERALD_STONEHEARTH_BUNKER_TAKEN = 26, + AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_ATTACK = 27, + AV_TEXT_A_HERALD_STONEHEARTH_BUNKER_TAKEN = 28, + AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_ATTACK = 29, + AV_TEXT_H_HERALD_WEST_FROSTWOLF_TOWER_TAKEN = 30, + AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_ATTACK = 31, + AV_TEXT_A_HERALD_WEST_FROSTWOLF_TOWER_TAKEN = 32, + AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_ATTACK = 33, + AV_TEXT_H_HERALD_EAST_FROSTWOLF_TOWER_TAKEN = 34, + AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_ATTACK = 35, + AV_TEXT_A_HERALD_EAST_FROSTWOLF_TOWER_TAKEN = 36, + AV_TEXT_H_HERALD_TOWER_POINT_ATTACK = 37, + AV_TEXT_H_HERALD_TOWER_POINT_TAKEN = 38, + AV_TEXT_A_HERALD_TOWER_POINT_ATTACK = 39, + AV_TEXT_A_HERALD_TOWER_POINT_TAKEN = 40, + AV_TEXT_H_HERALD_ICEBLOOD_BUNKER_ATTACK = 41, + AV_TEXT_H_HERALD_ICEBLOOD_BUNKER_TAKEN = 42, + AV_TEXT_A_HERALD_ICEBLOOD_TOWER_ATTACK = 43, + AV_TEXT_A_HERALD_ICEBLOOD_TOWER_TAKEN = 44, + AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_TAKEN = 45, + AV_TEXT_H_HERALD_STORMPIKE_AID_STATION_ATTACK = 46, + AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_TAKEN = 47, + AV_TEXT_A_HERALD_STORMPIKE_AID_STATION_ATTACK = 48, + AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN = 49, + AV_TEXT_H_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK = 50, + AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_TAKEN = 51, + AV_TEXT_A_HERALD_FROSTWOLF_RELIEF_HUT_ATTACK = 52, + AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_TAKEN = 53, + AV_TEXT_H_HERALD_STONEHEARTH_GRAVEYARD_ATTACK = 54, + AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_TAKEN = 55, + AV_TEXT_A_HERALD_STONEHEARTH_GRAVEYARD_ATTACK = 56, + AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_TAKEN = 57, + AV_TEXT_H_HERALD_ICEBLOOD_GRAVEYARD_ATTACK = 58, + AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_TAKEN = 59, + AV_TEXT_A_HERALD_ICEBLOOD_GRAVEYARD_ATTACK = 60, + AV_TEXT_A_HERALD_COLDTOOTH_MINE_TAKEN = 61, + AV_TEXT_A_HERALD_IRONDEEP_MINE_TAKEN = 62, + AV_TEXT_H_HERALD_COLDTOOTH_MINE_TAKEN = 63, + AV_TEXT_H_HERALD_IRONDEEP_MINE_TAKEN = 64, + AV_TEXT_HERALD_FROSTWOLF_GENERAL_DEAD = 65, + AV_TEXT_HERALD_STORMPIKE_GENERAL_DEAD = 66, + AV_TEXT_A_HERALD_WIN = 67, + AV_TEXT_H_HERALD_WIN = 68 +}; + struct BG_AV_NodeInfo { BG_AV_States State; @@ -1762,9 +1834,12 @@ private: BG_AV_Nodes GetNodeThroughObject(uint32 object); uint32 GetObjectThroughNode(BG_AV_Nodes node); - char const* GetNodeName(BG_AV_Nodes node); bool IsTower(BG_AV_Nodes node) { return m_Nodes[node].Tower; } + uint8 GetAttackString(BG_AV_Nodes node, TeamId teamId); + uint8 GetDefendString(BG_AV_Nodes node, TeamId teamId); + uint8 GetMineString(uint8 mine, TeamId teamId); + /*mine*/ void ChangeMineOwner(uint8 mine, TeamId teamId, bool initial = false); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index fca47b32c..d0219e83b 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -980,43 +980,7 @@ enum AcoreStrings LANG_DEBUG_AREATRIGGER_OFF = 1203, LANG_DEBUG_AREATRIGGER_REACHED = 1204, - // 1205-1299 - free - - // 1300-1333 - // AV - LANG_BG_AV_ALLY = 1300, - LANG_BG_AV_HORDE = 1301, - LANG_BG_AV_TOWER_TAKEN = 1302, - LANG_BG_AV_TOWER_ASSAULTED = 1303, - LANG_BG_AV_TOWER_DEFENDED = 1304, - LANG_BG_AV_GRAVE_TAKEN = 1305, - LANG_BG_AV_GRAVE_DEFENDED = 1306, - LANG_BG_AV_GRAVE_ASSAULTED = 1307, - - LANG_BG_AV_MINE_TAKEN = 1308, - LANG_BG_AV_MINE_NORTH = 1309, - LANG_BG_AV_MINE_SOUTH = 1310, - - LANG_BG_AV_NODE_GRAVE_STORM_AID = 1311, - LANG_BG_AV_NODE_TOWER_DUN_S = 1312, - LANG_BG_AV_NODE_TOWER_DUN_N = 1313, - LANG_BG_AV_NODE_GRAVE_STORMPIKE = 1314, - LANG_BG_AV_NODE_TOWER_ICEWING = 1315, - LANG_BG_AV_NODE_GRAVE_STONE = 1316, - LANG_BG_AV_NODE_TOWER_STONE = 1317, - LANG_BG_AV_NODE_GRAVE_SNOW = 1318, - LANG_BG_AV_NODE_TOWER_ICE = 1319, - LANG_BG_AV_NODE_GRAVE_ICE = 1320, - LANG_BG_AV_NODE_TOWER_POINT = 1321, - LANG_BG_AV_NODE_GRAVE_FROST = 1322, - LANG_BG_AV_NODE_TOWER_FROST_E = 1323, - LANG_BG_AV_NODE_TOWER_FROST_W = 1324, - LANG_BG_AV_NODE_GRAVE_FROST_HUT = 1325, - - // 1326-1330 - free - - LANG_BG_AV_H_CAPTAIN_DEAD = 1331, - LANG_BG_AV_A_CAPTAIN_DEAD = 1332, + // 1205-1333 - free //Player Ticket Strings LANG_TICKET_CLOSED = 1334, From 0764c654e1cd70ea169e0fac2cbd9c707a0b6fd8 Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sat, 27 Jul 2024 23:44:55 +0000 Subject: [PATCH 29/33] chore(DB): import pending files Referenced commit(s): 4785aabbf2a92fcf87868df6ac5a87ea8e247207 --- .../rev_1722073432548496100.sql => db_world/2024_07_27_05.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1722073432548496100.sql => db_world/2024_07_27_05.sql} (80%) diff --git a/data/sql/updates/pending_db_world/rev_1722073432548496100.sql b/data/sql/updates/db_world/2024_07_27_05.sql similarity index 80% rename from data/sql/updates/pending_db_world/rev_1722073432548496100.sql rename to data/sql/updates/db_world/2024_07_27_05.sql index 5c42e8ad1..a17eb30d5 100644 --- a/data/sql/updates/pending_db_world/rev_1722073432548496100.sql +++ b/data/sql/updates/db_world/2024_07_27_05.sql @@ -1,2 +1,3 @@ +-- DB update 2024_07_27_04 -> 2024_07_27_05 -- DELETE FROM `acore_string` WHERE `entry` IN (1300,1301,1302,1303,1304,1305,1306,1307,1308,1309,1310,1311,1312,1313,1314,1315,1316,1317,1318,1319,1320,1321,1322,1323,1324,1325); From 54fadbda679cc730655c5126bf6efce1eb8736ea Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Borz=C3=AC?= Date: Sun, 28 Jul 2024 21:39:39 +0200 Subject: [PATCH 30/33] refactor(src/server/game/Entities): remove unused imports (#19507) --- src/server/game/Entities/Corpse/Corpse.cpp | 1 - src/server/game/Entities/Creature/Creature.h | 1 - src/server/game/Entities/Creature/CreatureData.h | 3 --- src/server/game/Entities/DynamicObject/DynamicObject.cpp | 1 - src/server/game/Entities/GameObject/GameObject.cpp | 1 - src/server/game/Entities/GameObject/GameObject.h | 1 - src/server/game/Entities/Item/ItemTemplate.h | 1 - src/server/game/Entities/Object/Object.h | 2 ++ src/server/game/Entities/Object/ObjectGuid.h | 2 -- src/server/game/Entities/Object/Updates/UpdateMask.h | 1 - src/server/game/Entities/Player/Player.cpp | 2 -- src/server/game/Entities/Player/Player.h | 2 -- src/server/game/Entities/Player/PlayerStorage.cpp | 3 --- src/server/game/Entities/Player/PlayerTaxi.h | 1 - src/server/game/Entities/Player/SocialMgr.h | 1 - src/server/game/Entities/Transport/Transport.cpp | 1 - src/server/game/Entities/Unit/Unit.cpp | 2 -- src/server/game/Entities/Unit/Unit.h | 1 - src/server/game/Entities/Vehicle/Vehicle.cpp | 1 - src/server/game/Entities/Vehicle/Vehicle.h | 2 -- src/server/game/Entities/Vehicle/VehicleDefines.h | 1 - src/server/game/Grids/Notifiers/GridNotifiers.h | 2 ++ 22 files changed, 4 insertions(+), 29 deletions(-) diff --git a/src/server/game/Entities/Corpse/Corpse.cpp b/src/server/game/Entities/Corpse/Corpse.cpp index ab0b84dca..d4b84138a 100644 --- a/src/server/game/Entities/Corpse/Corpse.cpp +++ b/src/server/game/Entities/Corpse/Corpse.cpp @@ -22,7 +22,6 @@ #include "GameTime.h" #include "Log.h" #include "ObjectAccessor.h" -#include "Opcodes.h" #include "Player.h" #include "UpdateMask.h" #include "World.h" diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index a29ae43de..31ff02f56 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -25,7 +25,6 @@ #include "ItemTemplate.h" #include "LootMgr.h" #include "Unit.h" -#include "UpdateMask.h" #include "World.h" #include diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h index 2903e8f5a..e3fb72314 100644 --- a/src/server/game/Entities/Creature/CreatureData.h +++ b/src/server/game/Entities/Creature/CreatureData.h @@ -18,14 +18,11 @@ #ifndef AZEROTHCORE_CREATUREDATA_H #define AZEROTHCORE_CREATUREDATA_H -#include "Cell.h" -#include "Common.h" #include "DBCEnums.h" #include "DatabaseEnv.h" #include "ItemTemplate.h" #include "LootMgr.h" #include "Unit.h" -#include "UpdateMask.h" #include "World.h" #include diff --git a/src/server/game/Entities/DynamicObject/DynamicObject.cpp b/src/server/game/Entities/DynamicObject/DynamicObject.cpp index feb9d7cff..3a6882ddc 100644 --- a/src/server/game/Entities/DynamicObject/DynamicObject.cpp +++ b/src/server/game/Entities/DynamicObject/DynamicObject.cpp @@ -18,7 +18,6 @@ #include "GameTime.h" #include "GridNotifiers.h" #include "ObjectAccessor.h" -#include "Opcodes.h" #include "ScriptMgr.h" #include "SpellAuraEffects.h" #include "Transport.h" diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index cbba5a954..f293788b9 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -20,7 +20,6 @@ #include "CellImpl.h" #include "CreatureAISelector.h" #include "DisableMgr.h" -#include "DynamicTree.h" #include "GameObjectAI.h" #include "GameObjectModel.h" #include "GameTime.h" diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index 678052b14..d8598f5fc 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -26,7 +26,6 @@ #include "Object.h" #include "SharedDefines.h" #include "Unit.h" -#include class GameObjectAI; class Transport; diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index 3f9b79acd..ec5d0e0f0 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -18,7 +18,6 @@ #ifndef _ITEMPROTOTYPE_H #define _ITEMPROTOTYPE_H -#include "Common.h" #include "SharedDefines.h" #include "WorldPacket.h" #include diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 6dd7f0d7f..b419531a6 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -35,6 +35,8 @@ #include #include +#include "UpdateFields.h" + class ElunaEventProcessor; enum TempSummonType diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index bb8029048..94363d6f5 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -23,9 +23,7 @@ #include #include #include -#include #include -#include #include #include diff --git a/src/server/game/Entities/Object/Updates/UpdateMask.h b/src/server/game/Entities/Object/Updates/UpdateMask.h index 87816a734..906209c63 100644 --- a/src/server/game/Entities/Object/Updates/UpdateMask.h +++ b/src/server/game/Entities/Object/Updates/UpdateMask.h @@ -20,7 +20,6 @@ #include "ByteBuffer.h" #include "Errors.h" -#include "UpdateFields.h" class UpdateMask { diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 0b643923b..2beff7936 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -42,7 +42,6 @@ #include "Formulas.h" #include "GameEventMgr.h" #include "GameGraveyard.h" -#include "GameObjectAI.h" #include "GameTime.h" #include "GossipDef.h" #include "GridNotifiers.h" @@ -63,7 +62,6 @@ #include "OutdoorPvPMgr.h" #include "Pet.h" #include "PetitionMgr.h" -#include "QueryHolder.h" #include "QuestDef.h" #include "Realm.h" #include "ReputationMgr.h" diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 5e8eda233..d9ab3e60b 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -28,7 +28,6 @@ #include "GroupReference.h" #include "InstanceSaveMgr.h" #include "Item.h" -#include "KillRewarder.h" #include "MapReference.h" #include "ObjectMgr.h" #include "Optional.h" @@ -38,7 +37,6 @@ #include "QuestDef.h" #include "SpellAuras.h" #include "SpellInfo.h" -#include "SpellMgr.h" #include "TradeData.h" #include "Unit.h" #include "WorldSession.h" diff --git a/src/server/game/Entities/Player/PlayerStorage.cpp b/src/server/game/Entities/Player/PlayerStorage.cpp index f350b3e9a..eec6bd9d3 100644 --- a/src/server/game/Entities/Player/PlayerStorage.cpp +++ b/src/server/game/Entities/Player/PlayerStorage.cpp @@ -20,9 +20,7 @@ #include "ArenaTeam.h" #include "ArenaTeamMgr.h" #include "Battlefield.h" -#include "BattlefieldMgr.h" #include "Battleground.h" -#include "BattlegroundAV.h" #include "BattlegroundMgr.h" #include "Channel.h" #include "CharacterDatabaseCleaner.h" @@ -69,7 +67,6 @@ #include "UpdateFieldFlags.h" #include "Util.h" #include "Vehicle.h" -#include "Weather.h" #include "World.h" #include "WorldPacket.h" diff --git a/src/server/game/Entities/Player/PlayerTaxi.h b/src/server/game/Entities/Player/PlayerTaxi.h index 3923a8c54..a200ad8f7 100644 --- a/src/server/game/Entities/Player/PlayerTaxi.h +++ b/src/server/game/Entities/Player/PlayerTaxi.h @@ -19,7 +19,6 @@ #define __PLAYER_TAXI_H__ #include "DBCStructure.h" -#include class ByteBuffer; diff --git a/src/server/game/Entities/Player/SocialMgr.h b/src/server/game/Entities/Player/SocialMgr.h index cf495705d..a35187b6f 100644 --- a/src/server/game/Entities/Player/SocialMgr.h +++ b/src/server/game/Entities/Player/SocialMgr.h @@ -18,7 +18,6 @@ #ifndef __ACORE_SOCIALMGR_H #define __ACORE_SOCIALMGR_H -#include "Common.h" #include "DatabaseEnv.h" #include "ObjectGuid.h" #include diff --git a/src/server/game/Entities/Transport/Transport.cpp b/src/server/game/Entities/Transport/Transport.cpp index 3dc023eb4..47203f94c 100644 --- a/src/server/game/Entities/Transport/Transport.cpp +++ b/src/server/game/Entities/Transport/Transport.cpp @@ -29,7 +29,6 @@ #include "ScriptMgr.h" #include "Spell.h" #include "Vehicle.h" -#include "World.h" #include "WorldModel.h" MotionTransport::MotionTransport() : Transport(), _transportInfo(nullptr), _isMoving(true), _pendingStop(false), _triggeredArrivalEvent(false), _triggeredDepartureEvent(false), _passengersLoaded(false), _delayedTeleport(false) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 939269574..f56404dc6 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -33,12 +33,10 @@ #include "CreatureGroups.h" #include "DisableMgr.h" #include "DynamicVisibility.h" -#include "Formulas.h" #include "GameObjectAI.h" #include "GameTime.h" #include "GridNotifiersImpl.h" #include "Group.h" -#include "InstanceSaveMgr.h" #include "Log.h" #include "MapMgr.h" #include "MoveSpline.h" diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index ad9d7d74b..9ed7c5f66 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -26,7 +26,6 @@ #include "ItemTemplate.h" #include "MotionMaster.h" #include "Object.h" -#include "Optional.h" #include "SpellAuraDefines.h" #include "SpellDefines.h" #include "ThreatMgr.h" diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp index 1e7ecbe8b..313427813 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.cpp +++ b/src/server/game/Entities/Vehicle/Vehicle.cpp @@ -22,7 +22,6 @@ #include "ObjectMgr.h" #include "Player.h" #include "ScriptMgr.h" -#include "SpellInfo.h" #include "TemporarySummon.h" #include "Unit.h" #include "Util.h" diff --git a/src/server/game/Entities/Vehicle/Vehicle.h b/src/server/game/Entities/Vehicle/Vehicle.h index 32887c6e7..694efb9fd 100644 --- a/src/server/game/Entities/Vehicle/Vehicle.h +++ b/src/server/game/Entities/Vehicle/Vehicle.h @@ -18,8 +18,6 @@ #ifndef __ACORE_VEHICLE_H #define __ACORE_VEHICLE_H -#include "EventProcessor.h" -#include "ObjectDefines.h" #include "Unit.h" #include "VehicleDefines.h" diff --git a/src/server/game/Entities/Vehicle/VehicleDefines.h b/src/server/game/Entities/Vehicle/VehicleDefines.h index 7b3991946..227bce7a8 100644 --- a/src/server/game/Entities/Vehicle/VehicleDefines.h +++ b/src/server/game/Entities/Vehicle/VehicleDefines.h @@ -20,7 +20,6 @@ #include "Define.h" #include "Map.h" -#include "Object.h" #include #include diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 97189e16c..c6ec70d1b 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -33,6 +33,8 @@ #include "WorldSession.h" #include +#include "SpellMgr.h" + class Player; //class Map; From 2b636adc2f014c53720d4a578b0eb28dbdacb8f7 Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Sun, 28 Jul 2024 15:40:21 -0400 Subject: [PATCH 31/33] fix(Core/AchievementMgr): Check for null achievement before being derefenced. (#19504) * Init. * Reviewed changes. --- src/server/game/Achievements/AchievementMgr.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 13072d3c2..37ed221ee 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2473,10 +2473,15 @@ bool AchievementGlobalMgr::IsStatisticAchievement(AchievementEntry const* achiev bool AchievementGlobalMgr::IsAverageCriteria(AchievementCriteriaEntry const* criteria) const { - if ((sAchievementStore.LookupEntry(criteria->referredAchievement))->flags & ACHIEVEMENT_FLAG_AVERAGE) + auto referencedAchievement = sAchievementStore.LookupEntry(criteria->referredAchievement); + + if (!referencedAchievement) + return false; + + if (referencedAchievement->flags & ACHIEVEMENT_FLAG_AVERAGE) return true; - if (AchievementEntryList const* achRefList = GetAchievementByReferencedId(criteria->referredAchievement)) + if (AchievementEntryList const* achRefList = GetAchievementByReferencedId(referencedAchievement->ID)) for (AchievementEntryList::const_iterator itr = achRefList->begin(); itr != achRefList->end(); ++itr) if ((*itr)->flags & ACHIEVEMENT_FLAG_AVERAGE) return true; From aa9cece9d58b2f2f8ca5b8f77232efef8a6c2f5a Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+heyitsbench@users.noreply.github.com> Date: Sun, 28 Jul 2024 18:16:36 -0400 Subject: [PATCH 32/33] fix(DB/Creature): Adjust various values of Tempest Keep creatures. (#19502) * Init. * Add final speeds, mark values to be changed. * Move to SQL. * Correct Thaladred's chase state. --- .../pending_db_world/tk-misc-values.sql | 61 +++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 data/sql/updates/pending_db_world/tk-misc-values.sql diff --git a/data/sql/updates/pending_db_world/tk-misc-values.sql b/data/sql/updates/pending_db_world/tk-misc-values.sql new file mode 100644 index 000000000..39fc46e1f --- /dev/null +++ b/data/sql/updates/pending_db_world/tk-misc-values.sql @@ -0,0 +1,61 @@ +UPDATE `creature_template` SET `speed_walk` = 1, `speed_run` = 2.14285714286 WHERE `entry` = 18805; +UPDATE `creature_template` SET `speed_walk` = 1, `speed_run` = 2.14285714286 WHERE `entry` = 19514; +UPDATE `creature_template` SET `speed_run` = 1.42857142857 WHERE `entry` = 19622; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.42857142857, `BaseAttackTime` = 1600, `RangeAttackTime` = 1600 WHERE `entry` = 20031; +UPDATE `creature_template` SET `speed_run` = 1.42857142857, `BaseAttackTime` = 2000 WHERE `entry` = 20033; +UPDATE `creature_template` SET `speed_run` = 1.42857142857 WHERE `entry` = 20032; +UPDATE `creature_template` SET `speed_run` = 1.42857142857 WHERE `entry` = 20034; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.42857142857, `BaseAttackTime` = 1600, `RangeAttackTime` = 1600 WHERE `entry` = 20035; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.42857142857, `BaseAttackTime` = 2000 WHERE `entry` = 20036; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.42857142857 WHERE `entry` = 20037; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.71428571429 WHERE `entry` = 20038; +UPDATE `creature_template` SET `speed_walk` = 1, `speed_run` = 1.71428571429, `BaseAttackTime` = 2000 WHERE `entry` = 20039; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.71428571429 WHERE `entry` = 20040; +UPDATE `creature_template` SET `speed_run` = 1.71428571429 WHERE `entry` = 20041; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.42857142857 WHERE `entry` = 20042; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.42857142857, `BaseAttackTime` = 2000 WHERE `entry` = 20043; +UPDATE `creature_template` SET `speed_run` = 1.42857142857, `BaseAttackTime` = 2000 WHERE `entry` = 20044; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.42857142857 WHERE `entry` = 20045; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.42857142857 WHERE `entry` = 20046; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.71428571429 WHERE `entry` = 20047; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.71428571429 WHERE `entry` = 20048; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.71428571429 WHERE `entry` = 20049; +UPDATE `creature_template` SET `speed_walk` = 1.6, `speed_run` = 1.71428571429 WHERE `entry` = 20050; +UPDATE `creature_template` SET `speed_walk` = 0.9444439888, `speed_run` = 1.42857142857 WHERE `entry` = 20052; +UPDATE `creature_template` SET `speed_run` = 1.71428571429, `BaseAttackTime` = 2000 WHERE `entry` = 20060; +UPDATE `creature_template` SET `speed_run` = 1.71428571429, `BaseAttackTime` = 2000 WHERE `entry` = 20062; +UPDATE `creature_template` SET `speed_run` = 1.71428571429, `BaseAttackTime` = 2000 WHERE `entry` = 20063; +UPDATE `creature_template` SET `speed_walk` = 1.2, `speed_run` = 0.78571428571, `BaseAttackTime` = 2000 WHERE `entry` = 20064; + +UPDATE `creature_model_info` SET `BoundingRadius` = 1.531999945640563964, `CombatReach` = 6 WHERE `DisplayID` = 18239; +UPDATE `creature_model_info` SET `BoundingRadius` = 1.75, `CombatReach` = 15 WHERE `DisplayID` = 18945; +UPDATE `creature_model_info` SET `BoundingRadius` = 1.5, `CombatReach` = 15 WHERE `DisplayID` = 18951; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.900000035762786865, `CombatReach` = 9 WHERE `DisplayID` = 20023; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.612800002098083496, `CombatReach` = 2.40000009536743164 WHERE `DisplayID` = 19387; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.689399957656860351, `CombatReach` = 2.699999809265136718 WHERE `DisplayID` = 19388; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.612800002098083496, `CombatReach` = 2.40000009536743164 WHERE `DisplayID` = 19390; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.689399957656860351, `CombatReach` = 2.699999809265136718 WHERE `DisplayID` = 19393; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.765999972820281982, `CombatReach` = 3 WHERE `DisplayID` = 19397; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.574499964714050292, `CombatReach` = 2.25 WHERE `DisplayID` = 21001; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.765999972820281982, `CombatReach` = 3 WHERE `DisplayID` = 19398; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.300000011920928955, `CombatReach` = 1.5 WHERE `DisplayID` = 19298; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.75, `CombatReach` = 3.75 WHERE `DisplayID` = 19299; +UPDATE `creature_model_info` SET `BoundingRadius` = 1.5, `CombatReach` = 3 WHERE `DisplayID` = 19410; +UPDATE `creature_model_info` SET `BoundingRadius` = 1.25, `CombatReach` = 2.5 WHERE `DisplayID` = 19300; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.574499964714050292, `CombatReach` = 2.25 WHERE `DisplayID` = 19412; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.574499964714050292, `CombatReach` = 2.25 WHERE `DisplayID` = 19471; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.574499964714050292, `CombatReach` = 2.25 WHERE `DisplayID` = 19473; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.765999972820281982, `CombatReach` = 3 WHERE `DisplayID` = 19475; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.765999972820281982, `CombatReach` = 3 WHERE `DisplayID` = 19423; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.574499964714050292, `CombatReach` = 2.25 WHERE `DisplayID` = 19500; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.689399957656860351, `CombatReach` = 2.699999809265136718 WHERE `DisplayID` = 19505; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.689399957656860351, `CombatReach` = 2.699999809265136718 WHERE `DisplayID` = 19504; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.765999972820281982, `CombatReach` = 3 WHERE `DisplayID` = 19507; +UPDATE `creature_model_info` SET `BoundingRadius` = 0.75, `CombatReach` = 1.5 WHERE `DisplayID` = 19254; +UPDATE `creature_model_info` SET `BoundingRadius` = 1.148999929428100585, `CombatReach` = 4.5 WHERE `DisplayID` = 20178; +UPDATE `creature_model_info` SET `BoundingRadius` = 1.148999929428100585, `CombatReach` = 4.5 WHERE `DisplayID` = 20237; +UPDATE `creature_model_info` SET `BoundingRadius` = 1.148999929428100585, `CombatReach` = 4.5 WHERE `DisplayID` = 20177; +UPDATE `creature_model_info` SET `BoundingRadius` = 1.148999929428100585, `CombatReach` = 4.5 WHERE `DisplayID` = 20236; + +-- Thaladred needs correcting. +UPDATE `creature_template_movement` SET `Chase` = 0 WHERE `CreatureId` = 20064; From 4c087c1c5fc0ac853d986865a334d98c58e4c94c Mon Sep 17 00:00:00 2001 From: "github-actions[bot]" Date: Sun, 28 Jul 2024 22:17:28 +0000 Subject: [PATCH 33/33] chore(DB): import pending files Referenced commit(s): aa9cece9d58b2f2f8ca5b8f77232efef8a6c2f5a --- .../tk-misc-values.sql => db_world/2024_07_28_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/tk-misc-values.sql => db_world/2024_07_28_00.sql} (99%) diff --git a/data/sql/updates/pending_db_world/tk-misc-values.sql b/data/sql/updates/db_world/2024_07_28_00.sql similarity index 99% rename from data/sql/updates/pending_db_world/tk-misc-values.sql rename to data/sql/updates/db_world/2024_07_28_00.sql index 39fc46e1f..ce905b1aa 100644 --- a/data/sql/updates/pending_db_world/tk-misc-values.sql +++ b/data/sql/updates/db_world/2024_07_28_00.sql @@ -1,3 +1,4 @@ +-- DB update 2024_07_27_05 -> 2024_07_28_00 UPDATE `creature_template` SET `speed_walk` = 1, `speed_run` = 2.14285714286 WHERE `entry` = 18805; UPDATE `creature_template` SET `speed_walk` = 1, `speed_run` = 2.14285714286 WHERE `entry` = 19514; UPDATE `creature_template` SET `speed_run` = 1.42857142857 WHERE `entry` = 19622;