From 5939242eefc0ad1ed0fbdb13ef2f868308f9d4e8 Mon Sep 17 00:00:00 2001 From: Meramaf <76571216+Meramaf@users.noreply.github.com> Date: Tue, 28 Jun 2022 22:02:38 +0200 Subject: [PATCH 001/119] fix(DB/Quest): Quest An Undead's best friend (#11933) * Update config.sh * fix(DB/Quest): Quest An Undead's best friend * Update config.sh --- .../questfix_an_undeads_best_friend.sql | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 data/sql/updates/pending_db_world/questfix_an_undeads_best_friend.sql diff --git a/data/sql/updates/pending_db_world/questfix_an_undeads_best_friend.sql b/data/sql/updates/pending_db_world/questfix_an_undeads_best_friend.sql new file mode 100644 index 000000000..d327f2fe2 --- /dev/null +++ b/data/sql/updates/pending_db_world/questfix_an_undeads_best_friend.sql @@ -0,0 +1,21 @@ +-- Hungering Plaguehound + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 30952; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 30952); +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 +(30952, 0, 0, 0, 38, 0, 100, 0, 31119, 0, 40000, 40000, 0, 69, 1, 0, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Hungering Plaguehound - On Data Set - Move To Point'), +(30952, 0, 1, 2, 34, 0, 100, 512, 8, 1, 0, 0, 0, 45, 30952, 0, 0, 0, 0, 0, 12, 1, 0, 0, 0, 0, 0, 0, 0, 'Hungering Plaguehound - On Movement Inform - Set Data'), +(30952, 0, 2, 0, 61, 0, 100, 512, 0, 0, 0, 0, 0, 75, 12098, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hungering Plaguehound - On Movement Inform - Set Aura'); + +-- Bloody Meat + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 31119; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 31119); +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 +(31119, 0, 0, 1, 11, 0, 100, 512, 0, 0, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Hungering Plaguehound - On Respawn - Store Target'), +(31119, 0, 1, 2, 61, 0, 100, 512, 0, 0, 0, 0, 0, 100, 1, 0, 0, 0, 0, 0, 11, 30952, 20, 0, 0, 0, 0, 0, 0, 'Hungering Plaguehound - On Respawn - Store Target'), +(31119, 0, 2, 0, 61, 0, 100, 513, 0, 0, 0, 0, 0, 45, 31119, 0, 0, 0, 0, 0, 11, 30952, 10, 0, 0, 0, 0, 0, 0, 'Hungering Plaguehound - On Respawn - Set Data'), +(31119, 0, 3, 4, 38, 0, 100, 1, 30952, 0, 0, 0, 0, 11, 58564, 0, 0, 0, 0, 0, 21, 100, 0, 0, 0, 0, 0, 0, 0, 'Hungering Plaguehound - On Data Set - Kill Credit'), +(31119, 0, 4, 0, 61, 0, 100, 513, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Bloody Meat - On Data Set - Force Despawn'); From ca5e726e62c2b0eb1da60ec12b2546c5479f73ba Mon Sep 17 00:00:00 2001 From: mpfans Date: Wed, 29 Jun 2022 04:04:31 +0800 Subject: [PATCH 002/119] fix(DB/creature) first aid trainer (#11980) 'Hellfire Peninsula' first aid trainer can learn skills --- data/sql/updates/pending_db_world/rev_1654596778317350942.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1654596778317350942.sql diff --git a/data/sql/updates/pending_db_world/rev_1654596778317350942.sql b/data/sql/updates/pending_db_world/rev_1654596778317350942.sql new file mode 100644 index 000000000..24565c278 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1654596778317350942.sql @@ -0,0 +1,2 @@ +-- fix first aid trainer +UPDATE `creature_template` SET `npcflag` = 209 WHERE `entry` IN (18990,18991) And `npcflag` = 208; From e3e9c137a34aa03d5cfed1200fe961df3267c4f6 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 28 Jun 2022 20:06:37 +0000 Subject: [PATCH 003/119] chore(DB): import pending files Referenced commit(s): ca5e726e62c2b0eb1da60ec12b2546c5479f73ba --- .../2022_06_28_00.sql} | 1 + .../rev_1654596778317350942.sql => db_world/2022_06_28_01.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/questfix_an_undeads_best_friend.sql => db_world/2022_06_28_00.sql} (98%) rename data/sql/updates/{pending_db_world/rev_1654596778317350942.sql => db_world/2022_06_28_01.sql} (73%) diff --git a/data/sql/updates/pending_db_world/questfix_an_undeads_best_friend.sql b/data/sql/updates/db_world/2022_06_28_00.sql similarity index 98% rename from data/sql/updates/pending_db_world/questfix_an_undeads_best_friend.sql rename to data/sql/updates/db_world/2022_06_28_00.sql index d327f2fe2..c505f95de 100644 --- a/data/sql/updates/pending_db_world/questfix_an_undeads_best_friend.sql +++ b/data/sql/updates/db_world/2022_06_28_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_27_01 -> 2022_06_28_00 -- Hungering Plaguehound UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 30952; diff --git a/data/sql/updates/pending_db_world/rev_1654596778317350942.sql b/data/sql/updates/db_world/2022_06_28_01.sql similarity index 73% rename from data/sql/updates/pending_db_world/rev_1654596778317350942.sql rename to data/sql/updates/db_world/2022_06_28_01.sql index 24565c278..d9c340350 100644 --- a/data/sql/updates/pending_db_world/rev_1654596778317350942.sql +++ b/data/sql/updates/db_world/2022_06_28_01.sql @@ -1,2 +1,3 @@ +-- DB update 2022_06_28_00 -> 2022_06_28_01 -- fix first aid trainer UPDATE `creature_template` SET `npcflag` = 209 WHERE `entry` IN (18990,18991) And `npcflag` = 208; From 12f53ba2d153ad2c2fba39582a0f89275344849b Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Tue, 28 Jun 2022 14:13:48 -0600 Subject: [PATCH 004/119] fix(Scripts): Brazier of Dancing Flames should dance when spawned (#12156) --- src/server/scripts/World/npcs_special.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp index 0b7fe74eb..059b232e6 100644 --- a/src/server/scripts/World/npcs_special.cpp +++ b/src/server/scripts/World/npcs_special.cpp @@ -769,13 +769,12 @@ public: void Reset() override { - Active = true; - CanIteract = 3500; + Active = false; + CanIteract = 0; DoCast(me, SPELL_BRAZIER, true); DoCast(me, SPELL_FIERY_AURA, false); me->UpdateHeight(me->GetPositionZ() + 0.94f); me->SetDisableGravity(true); - me->HandleEmoteCommand(EMOTE_ONESHOT_DANCE); me->SendMovementFlagUpdate(); } From 452686d27309f5b2d0021d51a06e772a3826192d Mon Sep 17 00:00:00 2001 From: temperrr Date: Tue, 28 Jun 2022 22:18:46 +0200 Subject: [PATCH 005/119] fix(DB/waypoint): ZG pathing and formations (#12146) * fix(DB/waypoint): ZG pathing and formations --- .../updates/pending_db_world/zgpathing.sql | 872 ++++++++++++++++++ 1 file changed, 872 insertions(+) create mode 100644 data/sql/updates/pending_db_world/zgpathing.sql diff --git a/data/sql/updates/pending_db_world/zgpathing.sql b/data/sql/updates/pending_db_world/zgpathing.sql new file mode 100644 index 000000000..e26a08dd5 --- /dev/null +++ b/data/sql/updates/pending_db_world/zgpathing.sql @@ -0,0 +1,872 @@ +UPDATE `creature_template` SET `speed_walk`=1,`speed_run`=1.14286 WHERE `entry` IN(11371, 11350, 11372, 11830, 13321, 11374, 15043, 11831, 11351, 11359, 11387, 11373, 15042, 14758); +UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.85714 WHERE `entry` IN(2914, 1420); +UPDATE `creature_template` SET `speed_walk`=0.66667, `speed_run`=2.14286 WHERE `entry` IN(11352); +UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=2.14286 WHERE `entry` IN(11368, 14750); +UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.85714 WHERE `entry` IN(1420); +UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=2.14286 WHERE `entry` IN(14834, 14517, 14510); +UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=1.71429 WHERE `entry` IN(11357); +UPDATE `creature_template` SET `speed_walk`=2, `speed_run`=2.42857 WHERE `entry` IN(14880); + +DELETE FROM `creature` WHERE (`id1` = 14880) OR(`id1` = 14750 AND `GUID` = 49185) OR (`id1` = 14750 AND `GUID` = 49167) OR (`id1` = 11368 AND `GUID` = 49156) OR (`id1` = 11368 AND `GUID` = 49157) ; +INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(49185, 14750, 0, 0, 309, 0, 0, 1, 1, 0, -12213.109, -1477.2382, 130.725, 130.93126, 7200, 5, 0, 31440, 0, 1, 0, 0, 0, '', 0), +(49167, 14750, 0, 0, 309, 0, 0, 1, 1, 0, -12215.109, -1477.2382, 130.725, 130.93126, 7200, 5, 0, 31440, 0, 1, 0, 0, 0, '', 0), +(49156, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12215.109, -1476.2382, 130.725, 3.1765, 7200, 0, 0, 5341, 0, 0, 0, 0, 0, '', 0), +(49157, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12215.109, -1478.2382, 130.725, 0.314159, 7200, 0, 0, 5341, 0, 0, 0, 0, 0, '', 0), +(49201, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12289.1, -1645.61, 132.135, 6.24203, 7200, 0, 0, 4048, 0, 0, 0, 0, 0, '', 0), +(49202, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12286.4, -1669.35, 130.333, 5.43666, 7200, 0, 0, 4048, 0, 0, 0, 0, 0, '', 0), +(49762, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12120.4, -1755.58, 80.2268, 2.14157, 7200, 0, 0, 4048, 0, 0, 0, 0, 0, '', 0), +(49763, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12109.016, -1733.4694, 80.2511, 81.128365 , 7200, 5, 0, 4048, 0, 1, 0, 0, 0, '', 0), +(49056, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12109.016, -1733.4694, 80.2511, 81.128365 , 7200, 5, 0, 4048, 0, 1, 0, 0, 0, '', 0), +(49766, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12359.1, -1664.31, 130.494, 2.61807, 7200, 5, 0, 4048, 0, 1, 0, 0, 0, '', 0), +(49767, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12335.7, -1645.88, 130.792, 1.98902, 7200, 5, 0, 4048, 0, 1, 0, 0, 0, '', 0), +(49195, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12138.63, -1670.5779, 86.08012, 1.98902 , 7200, 5, 0, 4048, 0, 1, 0, 0, 0, '', 0), +(49196, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12138.62, -1670.5779, 86.08012, 2.61807, 7200, 5, 0, 4048, 0, 1, 0, 0, 0, '', 0), +(49197, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12138.64, -1670.5779, 86.08012, 1.98902, 7200, 5, 0, 4048, 0, 1, 0, 0, 0, '', 0), +(49137, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12337.564, -1641.6588, 131.37659, 1.98902, 7200, 5, 0, 4048, 0, 1, 0, 0, 0, '', 0), +(49138, 14880, 0, 0, 309, 0, 0, 1, 1, 0, -12350.479, -1609.6436, 131.65074, 1.98902, 7200, 5, 0, 4048, 0, 1, 0, 0, 0, '', 0); + +SET @NPC := 49132; +SET @path := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12317.01,`position_y`=-1447.9121,`position_z`=130.70255 WHERE `guid`=@NPC; +UPDATE `creature`SET `wander_distance`=0,`MovementType`=0,`position_x`=-12317.01,`position_y`=-1447.9121,`position_z`=130.70255 WHERE `guid`=49131; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-12317.01,`position_y`=-1447.9121,`position_z`=130.70255 WHERE `guid`=49133; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12317.01,`position_y`=-1447.9121,`position_z`=130.70255 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@path,1,-12317.01,-1447.9121,130.70255,0,0,0,0,100,0), +(@path,2,-12294.435,-1452.9664,130.7252,0,0,0,0,100,0), +(@path,3,-12274.962,-1432.1677,130.7252,0,0,0,0,100,0), +(@path,4,-12251.229,-1419.3248,130.7252,0,0,0,0,100,0), +(@path,5,-12218.372,-1407.2831,131.82335,0,0,0,0,100,0), +(@path,6,-12251.229,-1419.3248,130.7252,0,0,0,0,100,0), +(@path,7,-12274.962,-1432.1677,130.7252,0,0,0,0,100,0), +(@path,8,-12294.435,-1452.9664,130.7252,0,0,0,0,100,0); + +DELETE FROM `creature` WHERE (`id1` = 11372 AND guid = 49090) OR (`id1` = 11371 AND `guid` = 49090) OR (`id1` = 14750 AND `guid`IN (52135, 49139)) OR (`id1`= 11368 AND `guid` = 49139) OR (`id1`= 11368 AND `guid` IN (52138, 52137, 52136)); +INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(49090, 11371, 0, 0, 309, 0, 0, 1, 1, 0, -11862.2, -1317.21, 79.0372, 4.15388, 7200, 0, 0, 15260, 0, 0, 0, 0, 0, '', 0), +(49139, 14750, 0, 0, 309, 0, 0, 1, 1, 0, -12237.4, -1413.4, 130.725, 3.49715, 7200, 5, 0, 31440, 0, 1, 0, 0, 0, '', 0), +(52135, 14750, 0, 0, 309, 0, 0, 1, 1, 0, -12229.842, -1411.0471, 130.725, 3.49715, 7200, 5, 0, 31440, 0, 1, 0, 0, 0, '', 0), +(52136, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12229.842, -1410.0471, 130.725, 5.11337, 7200, 5, 0, 5341, 0, 1, 0, 0, 0, '', 0), +(52137, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12229.842, -1412.0471, 130.725, 5.11337, 7200, 5, 0, 5341, 0, 1, 0, 0, 0, '', 0), +(52138, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12229.842, -1411.5471, 130.725, 5.11337, 7200, 5, 0, 5341, 0, 1, 0, 0, 0, '', 0); + +SET @NPC := 49090; +SET @path := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11874.843,`position_y`=-1325.8516,`position_z`=78.68711 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@path,1,-11874.843,-1325.8516,78.68711,0,0,0,0,100,0), +(@path,2,-11888.364,-1338.8317,74.93052,0,0,0,0,100,0), +(@path,3,-11904.724,-1344.1305,75.75995,0,0,0,0,100,0), +(@path,4,-11905.38,-1360.0092,70.85077,0,0,0,0,100,0), +(@path,5,-11901.88,-1377.7013,68.11927,0,0,0,0,100,0), +(@path,6,-11884.866,-1380.3492,66.02857,0,0,0,0,100,0), +(@path,7,-11880.479,-1399.4225,62.97413,0,0,0,0,100,0), +(@path,8,-11878.038,-1407.888,62.201817,0,0,0,0,100,0), +(@path,9,-11894.919,-1416.4415,57.01041,0,0,0,0,100,0), +(@path,10,-11921.158,-1428.7435,46.9667,0,2000,0,0,100,0), +(@path,11,-11894.919,-1416.4415,57.01041,0,0,0,0,100,0), +(@path,12,-11878.038,-1407.888,62.201817,0,0,0,0,100,0), +(@path,13,-11880.479,-1399.4225,62.97413,0,0,0,0,100,0), +(@path,14,-11884.866,-1380.3492,66.02857,0,0,0,0,100,0), +(@path,15,-11901.88,-1377.7013,68.11927,0,0,0,0,100,0), +(@path,16,-11905.361,-1360.0527,70.93378,0,0,0,0,100,0), +(@path,17,-11904.724,-1344.1305,75.75995,0,0,0,0,100,0), +(@path,18,-11888.364,-1338.8317,74.93052,0,0,0,0,100,0), +(@path,19,-11874.843,-1325.8516,78.68711,0,0,0,0,100,0), +(@path,20,-11863.753,-1313.4701,78.72681,0,2000,0,0,100,0); + +SET @NPC := 49761; +SET @path := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11966.846,`position_y`=-1528.8047,`position_z`=41.97195 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@path,1,-11966.846,-1528.8047,41.97195,0,0,0,0,100,0), +(@path,2,-11999.917,-1520.9025,58.9844,0,0,0,0,100,0), +(@path,3,-12023.279,-1518.9547,72.43448,0,0,0,0,100,0), +(@path,4,-12028.042,-1500.1376,77.62198,0,0,0,0,100,0), +(@path,5,-12029.563,-1488.6721,79.530396,0,0,0,0,100,0), +(@path,6,-12033.312,-1478.7206,80.10852,0,0,0,0,100,0), +(@path,7,-12066.744,-1478.9442,101.670784,0,0,0,0,100,0), +(@path,8,-12100.744,-1478.7441,128.72264,0,0,0,0,100,0), +(@path,9,-12066.744,-1478.9442,101.670784,0,0,0,0,100,0), +(@path,10,-12033.312,-1478.7206,80.10852,0,0,0,0,100,0), +(@path,11,-12029.563,-1488.6721,79.530396,0,0,0,0,100,0), +(@path,12,-12028.042,-1500.1376,77.62198,0,0,0,0,100,0), +(@path,13,-12023.279,-1518.9547,72.43448,0,0,0,0,100,0), +(@path,14,-11999.917,-1520.9025,58.9844,0,0,0,0,100,0); + +SET @NPC := 49751; +SET @path := @NPC * 10; +SET @NPC2 := 49752; +SET @path2 := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11915.182,`position_y`=-1309.0254,`position_z`=77.85016 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11917.182,`position_y`=-1309.0254,`position_z`=77.85016 WHERE `guid`=@NPC2; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@path,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id` IN (@path,@path2); +INSERT INTO `waypoint_data`(`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@path,1,-11915.182,-1309.0254,77.85016,0,0,0,0,100,0), +(@path,2,-11900.22,-1322.3068,77.35016,0,0,0,0,100,0), +(@path,3,-11891.567,-1333.3414,75.761086,0,0,0,0,100,0), +(@path,4,-11883.896,-1344.9625,74.07407,0,0,0,0,100,0), +(@path,5,-11884.932,-1366.6774,69.18043,0,0,0,0,100,0), +(@path,6,-11881.251,-1392.7772,64.10792,0,0,0,0,100,0), +(@path,7,-11884.669,-1407.5942,61.118076,0,0,0,0,100,0), +(@path,8,-11898.967,-1416.9801,55.54923,0,0,0,0,100,0), +(@path,9,-11914.943,-1429.737,46.979885,0,0,0,0,100,0), +(@path,10,-11920.759,-1446.3221,42.852036,0,0,0,0,100,0), +(@path,11,-11927.813,-1477.2751,32.164944,0,0,0,0,100,0), +(@path,12,-11938.073,-1520.2743,42.869736,0,0,0,0,100,0), +(@path,13,-11940.487,-1533.6138,39.66779,0,0,0,0,100,0), +(@path,14,-11947.255,-1542.4147,39.66779,0,0,0,0,100,0), +(@path,15,-11943.104,-1557.1871,39.79279,0,0,0,0,100,0), +(@path,16,-11943.644,-1566.9681,41.143223,0,0,0,0,100,0), +(@path,17,-11945.308,-1590.3102,36.837807,0,0,0,0,100,0), +(@path,18,-11947.825,-1619.8463,41.207428,0,0,0,0,100,0), +(@path,19,-11951.434,-1633.3173,38.97269,0,0,0,0,100,0), +(@path,20,-11968.02,-1647.7539,35.483604,0,0,0,0,100,0), +(@path,21,-12000.128,-1644.0223,34.706413,0,0,0,0,100,0), +(@path,22,-12025.215,-1640.9318,38.757927,0,0,0,0,100,0), +(@path,23,-12041.77,-1650.1912,40.77353,0,0,0,0,100,0), +(@path,24,-12059.076,-1670.9088,42.50792,0,0,0,0,100,0), +(@path,25,-12060.682,-1706.4213,45.026535,0,0,0,0,100,0), +(@path,26,-12047.378,-1730.9137,50.612717,0,0,0,0,100,0), +(@path,27,-12060.682,-1706.4213,45.026535,0,0,0,0,100,0), +(@path,28,-12059.076,-1670.9088,42.50792,0,0,0,0,100,0), +(@path,29,-12041.77,-1650.1912,40.77353,0,0,0,0,100,0), +(@path,30,-12025.215,-1640.9318,38.757927,0,0,0,0,100,0), +(@path,31,-12000.128,-1644.0223,34.706413,0,0,0,0,100,0), +(@path,32,-11968.145,-1647.8522,35.503624,0,0,0,0,100,0), +(@path,33,-11951.559,-1633.4141,38.973248,0,0,0,0,100,0), +(@path,34,-11947.825,-1619.8463,41.207428,0,0,0,0,100,0), +(@path,35,-11945.308,-1590.3102,36.837807,0,0,0,0,100,0), +(@path,36,-11943.644,-1566.9681,41.143223,0,0,0,0,100,0), +(@path,37,-11943.104,-1557.1871,39.79279,0,0,0,0,100,0), +(@path,38,-11947.255,-1542.4147,39.66779,0,0,0,0,100,0), +(@path,39,-11940.487,-1533.6138,39.66779,0,0,0,0,100,0), +(@path,40,-11938.073,-1520.2743,42.869736,0,0,0,0,100,0), +(@path,41,-11927.813,-1477.2751,32.164944,0,0,0,0,100,0), +(@path,42,-11920.759,-1446.3221,42.852036,0,0,0,0,100,0), +(@path,43,-11914.943,-1429.737,46.979885,0,0,0,0,100,0), +(@path,44,-11898.967,-1416.9801,55.54923,0,0,0,0,100,0), +(@path,45,-11884.669,-1407.5942,61.118076,0,0,0,0,100,0), +(@path,46,-11881.251,-1392.7772,64.10792,0,0,0,0,100,0), +(@path,47,-11884.932,-1366.6774,69.18043,0,0,0,0,100,0), +(@path,48,-11883.896,-1344.9625,74.07407,0,0,0,0,100,0), +(@path,49,-11891.567,-1333.3414,75.761086,0,0,0,0,100,0), +(@path,50,-11900.22,-1322.3068,77.35016,0,0,0,0,100,0); + +SET @NPC := 49146; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12051.524,`position_y`=-1427.2681,`position_z`=130.14175 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12051.524,-1427.2681,130.14175,0,0,0,0,100,0), +(@PATH,2,-12056.444,-1439.4609,130.26523,0,0,0,0,100,0), +(@PATH,3,-12064.653,-1446.329,130.2684,0,0,0,0,100,0), +(@PATH,4,-12076.898,-1450.6375,130.39133,0,0,0,0,100,0), +(@PATH,5,-12088.711,-1450.2057,130.85104,0,0,0,0,100,0), +(@PATH,6,-12064.653,-1446.329,130.2684,0,0,0,0,100,0), +(@PATH,7,-12056.444,-1439.4609,130.26523,0,0,0,0,100,0); + +SET @NPC := 49135; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12207.685,`position_y`=-1462.47,`position_z`=131.32281 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12207.685,-1462.47,131.32281,0,0,0,0,100,0), +(@PATH,2,-12245.68,-1474.5807,130.62447,0,0,0,0,100,0), +(@PATH,3,-12272.678,-1484.2139,130.7252,0,0,0,0,100,0), +(@PATH,4,-12291.434,-1475.9297,130.7252,0,0,0,0,100,0), +(@PATH,5,-12312.472,-1457.0942,130.70255,0,0,0,0,100,0), +(@PATH,6,-12291.434,-1475.9297,130.7252,0,0,0,0,100,0), +(@PATH,7,-12272.678,-1484.2139,130.7252,0,0,0,0,100,0), +(@PATH,8,-12245.68,-1474.5807,130.62447,0,0,0,0,100,0); + +SET @NPC := 49186; +SET @path := @NPC * 10; +SET @NPC2 := 49189; +SET @NPC3 := 49188; +SET @NPC4 := 49187; +SET @NPC5 := 49140; +SET @NPC6 := 49139; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-12138.658,`position_y`=-1462.6881,`position_z`=132.72519 WHERE `guid`=@NPC2; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-12140.658,`position_y`=-1462.6881,`position_z`=132.72519 WHERE `guid`=@NPC3; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-12139.658,`position_y`=-1461.6881,`position_z`=132.72519 WHERE `guid`=@NPC4; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-12139.658,`position_y`=-1463.6881,`position_z`=132.72519 WHERE `guid`=@NPC5; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-12139.658,`position_y`=-1461.3881,`position_z`=132.72519 WHERE `guid`=@NPC6; +UPDATE `creature` SET `wander_distance`=2,`MovementType`=2,`position_x`=-12139.658,`position_y`=-1462.6881,`position_z`=130.72519 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@path,1,-12139.658,-1462.6881,131.72519,0,0,2,0,100,0), +(@path,2,-12145.165,-1472.5826,131.72519,0,0,2,0,100,0), +(@path,3,-12150.585,-1480.6031,131.72519,0,0,2,0,100,0), +(@path,4,-12155.898,-1487.2714,131.88535,0,0,2,0,100,0), +(@path,5,-12162.413,-1488.4478,131.95273,0,0,2,0,100,0), +(@path,6,-12166.849,-1484.3025,131.72519,0,0,2,0,100,0), +(@path,7,-12169.933,-1475.3961,131.72519,0,0,2,0,100,0), +(@path,8,-12168.736,-1461.0402,131.72519,0,0,2,0,100,0), +(@path,9,-12165.8,-1451.5284,132.1915,0,0,0,2,100,0), +(@path,10,-12159.837,-1446.8896,132.52573,0,0,2,0,100,0), +(@path,11,-12154.368,-1448.3627,132.15585,0,0,2,0,100,0), +(@path,12,-12148.044,-1460.6128,131.72519,0,0,2,0,100,0), +(@path,13,-12142.502,-1469.3756,131.72519,0,0,2,0,100,0), +(@path,14,-12139.423,-1477.193,131.72519,0,0,2,0,100,0), +(@path,15,-12142.655,-1487.7107,131.81308,0,0,2,0,100,0), +(@path,16,-12150.853,-1489.0536,132.22275,0,0,2,0,100,0), +(@path,17,-12157.748,-1478.774,131.72519,0,0,2,0,100,0), +(@path,18,-12158.351,-1465.1509,132.22519,0,0,2,0,100,0), +(@path,19,-12156.007,-1450.0975,131.72519,0,0,2,0,100,0), +(@path,20,-12153.582,-1446.1135,132.67294,0,0,2,0,100,0), +(@path,21,-12146.194,-1444.6774,133.9537,0,0,2,0,100,0), +(@path,22,-12139.783,-1452.6754,131.72519,0,0,2,0,100,0); + +SET @NPC := 52136; +SET @path := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12229.842,`position_y`=-1411.0471,`position_z`=131.83165 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@path,1,-12229.842,-1411.0471,131.83165-0.5,0,0,0,0,100,0), +(@path,2,-12206.786,-1421.8655,131.78893-0.5,0,0,0,0,100,0), +(@path,3,-12195.927,-1433.3926,134.31308-0.5,0,0,0,0,100,0), +(@path,4,-12205.035,-1448.4469,131.69781-0.5,0,0,0,0,100,0), +(@path,5,-12206.235,-1461.8943,132.32281-0.5,0,0,0,0,100,0), +(@path,6,-12177.454,-1466.4033,131.72519-0.5,0,0,0,0,100,0), +(@path,7,-12138.972,-1456.231,131.72519-0.5,0,0,0,0,100,0), +(@path,8,-12126.492,-1456.4739,131.72519-0.5,0,0,0,0,100,0), +(@path,9,-12157.802,-1469.8934,131.90048-0.5,0,0,0,0,100,0), +(@path,10,-12179.677,-1470.5027,131.72519-0.5,0,0,0,0,100,0), +(@path,11,-12207.076,-1464.7598,132.07281-0.5,0,0,0,0,100,0), +(@path,12,-12221.514,-1453.3093,131.69781-0.5,0,0,0,0,100,0), +(@path,13,-12224.45,-1427.07,131.7252-0.5,0,0,0,0,100,0), +(@path,14,-12246.912,-1421.354,131.7252-0.5,0,0,0,0,100,0), +(@path,15,-12269.187,-1427.5114,131.7252-0.5,0,0,0,0,100,0), +(@path,16,-12285.375,-1448.8418,131.7252-0.5,0,0,0,0,100,0), +(@path,17,-12287.772,-1473.3102,131.7252-0.5,0,0,0,0,100,0), +(@path,18,-12273.458,-1487.5211,131.7252-0.5,0,0,0,0,100,0), +(@path,19,-12249.114,-1489.0677,131.6252-0.5,0,0,0,0,100,0), +(@path,20,-12235.835,-1473.7202,131.7834-0.5,0,0,0,0,100,0), +(@path,21,-12250.835,-1461.4537,131.66344-0.5,0,0,0,0,100,0), +(@path,22,-12265.916,-1449.0624,131.7252-0.5,0,0,0,0,100,0), +(@path,23,-12277.745,-1431.3622,131.7252-0.5,0,0,0,0,100,0), +(@path,24,-12303.044,-1414.7955,131.7252-0.5,0,0,0,0,100,0), +(@path,25,-12277.745,-1431.3622,131.7252-0.5,0,0,0,0,100,0), +(@path,26,-12265.916,-1449.0624,131.7252-0.5,0,0,0,0,100,0), +(@path,27,-12250.835,-1461.4537,131.66344-0.5,0,0,0,0,100,0), +(@path,28,-12235.835,-1473.7202,131.7834-0.5,0,0,0,0,100,0), +(@path,29,-12249.114,-1489.0677,131.6252-0.5,0,0,0,0,100,0), +(@path,30,-12273.458,-1487.5211,131.7252-0.5,0,0,0,0,100,0), +(@path,31,-12287.772,-1473.3102,131.7252-0.5,0,0,0,0,100,0), +(@path,32,-12285.375,-1448.8418,131.7252-0.5,0,0,0,0,100,0), +(@path,33,-12269.187,-1427.5114,131.7252-0.5,0,0,0,0,100,0), +(@path,34,-12246.912,-1421.354,131.7252-0.5,0,0,0,0,100,0), +(@path,35,-12224.45,-1427.07,131.7252-0.5,0,0,0,0,100,0), +(@path,36,-12221.514,-1453.3093,131.69781-0.5,0,0,0,0,100,0), +(@path,37,-12207.227,-1464.7308,132.11774-0.5,0,0,0,0,100,0), +(@path,38,-12179.677,-1470.5027,131.72519-0.5,0,0,0,0,100,0), +(@path,39,-12157.802,-1469.8934,131.90048-0.5,0,0,0,0,100,0), +(@path,40,-12126.492,-1456.4739,131.72519-0.5,0,0,0,0,100,0), +(@path,41,-12177.454,-1466.4033,131.72519-0.5,0,0,0,0,100,0), +(@path,42,-12206.235,-1461.8943,132.32281-0.5,0,0,0,0,100,0), +(@path,43,-12205.035,-1448.4469,131.69781-0.5,0,0,0,0,100,0), +(@path,44,-12195.927,-1433.3926,134.31308-0.5,0,0,0,0,100,0), +(@path,45,-12206.786,-1421.8655,131.78893-0.5,0,0,0,0,100,0), +(@path,46,-12229.842,-1411.0471,132.83165-0.5,0,0,0,0,100,0), +(@path,47,-12254.974,-1407.7135,132.03355-0.5,0,0,0,0,100,0), +(@path,48,-12275.289,-1404.068,131.7252-0.5,0,0,0,0,100,0), +(@path,49,-12290.608,-1416.1903,132.7252-0.5,0,0,0,0,100,0), +(@path,50,-12292.546,-1432.5616,132.89317-0.5,0,0,0,0,100,0), +(@path,51,-12275.803,-1456.5319,132.7252-0.5,0,0,0,0,100,0), +(@path,52,-12257.487,-1460.9338,132.7252-0.5,0,0,0,0,100,0), +(@path,53,-12248.77,-1487.915,132.72212-0.5,0,0,0,0,100,0), +(@path,54,-12227.283,-1488.0863,133.32726-0.5,0,0,0,0,100,0), +(@path,55,-12211.806,-1476.1088,131.79576-0.5,0,0,0,0,100,0), +(@path,56,-12176.583,-1471.7878,131.72519-0.5,0,0,0,0,100,0), +(@path,57,-12147.339,-1466.9387,131.72519-0.5,0,0,0,0,100,0), +(@path,58,-12121.021,-1459.1855,131.72519-0.5,0,0,0,0,100,0), +(@path,59,-12088.544,-1450.2576,131.85104-0.5,0,0,0,0,100,0), +(@path,60,-12147.339,-1466.9387,131.72519-0.5,0,0,0,0,100,0), +(@path,61,-12176.583,-1471.7878,131.72519-0.5,0,0,0,0,100,0), +(@path,62,-12211.806,-1476.1088,131.79576-0.5,0,0,0,0,100,0), +(@path,63,-12227.283,-1488.0863,133.32726-0.5,0,0,0,0,100,0), +(@path,64,-12248.77,-1487.915,131.72212-0.5,0,0,0,0,100,0), +(@path,65,-12257.487,-1460.9338,131.7252-0.5,0,0,0,0,100,0), +(@path,66,-12275.803,-1456.5319,131.7252-0.5,0,0,0,0,100,0), +(@path,67,-12292.546,-1432.5616,131.89317-0.5,0,0,0,0,100,0), +(@path,68,-12290.608,-1416.1903,131.7252-0.5,0,0,0,0,100,0), +(@path,69,-12275.289,-1404.068,131.7252-0.5,0,0,0,0,100,0), +(@path,70,-12254.974,-1407.7135,132.03355-0.5,0,0,0,0,100,0); + +SET @NPC := 49158; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12214.109,`position_y`=-1477.2382,`position_z`=130.93126 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12214.109,-1477.2382,130.93126,0,0,0,0,100,0), +(@PATH,2,-12211.264,-1469.974,130.7252,0,0,0,0,100,0), +(@PATH,3,-12214.149,-1461.742,130.81232,0,0,0,0,100,0), +(@PATH,4,-12235.612,-1459.0533,130.7252,0,0,0,0,100,0), +(@PATH,5,-12255.216,-1470.7734,130.62447,0,0,0,0,100,0), +(@PATH,6,-12255.078,-1483.8112,130.62447,0,0,0,0,100,0), +(@PATH,7,-12246.08,-1488.4501,131.03218,0,0,0,0,100,0), +(@PATH,8,-12233.38,-1491.1652,133.18355,0,0,0,0,100,0), +(@PATH,9,-12222.606,-1482.8005,130.99913,0,0,0,0,100,0); + +SET @NPC := 51452; +SET @NPC2 := 51451; +SET @path := @NPC * 10; +SET @posX := -12057.339; +SET @posY := -1734.9985; +SET @posZ := 51.701015; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12057.339,`position_y`=-1734.9985,`position_z`=51.701015 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12057.339,-1734.9985,51.701015,0,0,0,0,100,0), +(@PATH,2,-12064.325,-1723.6598,48.64299,0,0,0,0,100,0), +(@PATH,3,-12081.199,-1711.9126,50.009007,0,0,0,0,100,0), +(@PATH,4,-12083.754,-1694.3141,47.727253,0,0,0,0,100,0), +(@PATH,5,-12075.137,-1685.36,44.9919,0,0,0,0,100,0), +(@PATH,6,-12060.942,-1668.3538,42.789413,0,0,0,0,100,0), +(@PATH,7,-12053.68,-1652.7511,43.139984,0,0,0,0,100,0), +(@PATH,8,-12040.667,-1640.4402,40.75351,0,0,0,0,100,0), +(@PATH,9,-12023.091,-1633.9069,38.15856,0,0,0,0,100,0), +(@PATH,10,-12013.497,-1648.2031,37.284782,0,0,0,0,100,0), +(@PATH,11,-11993.206,-1638.6372,34.66549,0,0,0,0,100,0), +(@PATH,12,-11970.971,-1640.5399,35.773155,0,0,0,0,100,0), +(@PATH,13,-11952.981,-1647.8049,39.700054,0,0,0,0,100,0), +(@PATH,14,-11970.971,-1640.5399,35.773155,0,0,0,0,100,0), +(@PATH,15,-11993.206,-1638.6372,34.66549,0,0,0,0,100,0), +(@PATH,16,-12013.497,-1648.2031,37.284782,0,0,0,0,100,0), +(@PATH,17,-12023.091,-1633.9069,38.15856,0,0,0,0,100,0), +(@PATH,18,-12040.667,-1640.4402,40.75351,0,0,0,0,100,0), +(@PATH,19,-12053.68,-1652.7511,43.139984,0,0,0,0,100,0), +(@PATH,20,-12060.942,-1668.3538,42.789413,0,0,0,0,100,0), +(@PATH,21,-12075.137,-1685.36,44.9919,0,0,0,0,100,0), +(@PATH,22,-12083.754,-1694.3141,47.727253,0,0,0,0,100,0), +(@PATH,23,-12081.199,-1711.9126,50.009007,0,0,0,0,100,0), +(@PATH,24,-12064.325,-1723.6598,48.64299,0,0,0,0,100,0); + +SET @NPC := 49698; +SET @path := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12066.406,`position_y`=-1786.6548,`position_z`=69.81737 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12066.406,-1786.6548,69.81737,0,0,0,0,100,0), +(@PATH,2,-12050.457,-1766.337,60.718105,0,0,0,0,100,0), +(@PATH,3,-12033.071,-1750.8512,55.646065,0,0,0,0,100,0), +(@PATH,4,-11999.78,-1753.2365,54.84094,0,0,0,0,100,0), +(@PATH,5,-11968.856,-1756.7726,53.229122,0,0,0,0,100,0), +(@PATH,6,-11956.396,-1766.9595,53.534046,0,0,0,0,100,0), +(@PATH,7,-11953.831,-1798.9094,53.284046,0,0,0,0,100,0), +(@PATH,8,-11955.532,-1833.0516,55.080914,0,0,0,0,100,0), +(@PATH,9,-11943.489,-1843.0251,56.276337,0,0,0,0,100,0), +(@PATH,10,-11922.226,-1844.5981,58.643448,0,0,0,0,100,0), +(@PATH,11,-11892.495,-1857.25,63.02691,0,0,0,0,100,0), +(@PATH,12,-11922.226,-1844.5981,58.643448,0,0,0,0,100,0), +(@PATH,13,-11943.489,-1843.0251,56.276337,0,0,0,0,100,0), +(@PATH,14,-11955.532,-1833.0516,55.080914,0,0,0,0,100,0), +(@PATH,15,-11953.831,-1798.9094,53.284046,0,0,0,0,100,0), +(@PATH,16,-11956.396,-1766.9595,53.534046,0,0,0,0,100,0), +(@PATH,17,-11968.856,-1756.7726,53.229122,0,0,0,0,100,0), +(@PATH,18,-11999.78,-1753.2365,54.84094,0,0,0,0,100,0), +(@PATH,19,-12033.071,-1750.8512,55.646065,0,0,0,0,100,0), +(@PATH,20,-12050.457,-1766.337,60.718105,0,0,0,0,100,0); + +SET @NPC := 49760; +SET @NPC2 := 49756; +SET @path := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11938.328,`position_y`=-1819.2622,`position_z`=52.21226 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11931.328,`position_y`=-1819.2622,`position_z`=52.21226 WHERE `guid`=@NPC2; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11938.328,-1819.2622,52.21226,0,0,0,0,100,0), +(@PATH,2,-11961.947,-1803.928,54.609234,0,0,0,0,100,0), +(@PATH,3,-11966.618,-1790.2196,54.229603,0,0,0,0,100,0), +(@PATH,4,-11968.503,-1770.5248,54.450214,0,0,0,0,100,0), +(@PATH,5,-11970.222,-1748.2112,53.054806,0,0,0,0,100,0), +(@PATH,6,-11982.738,-1744.707,54.054806,0,0,0,0,100,0), +(@PATH,7,-11992.345,-1765.0465,56.527462,0,0,0,0,100,0), +(@PATH,8,-11992.616,-1776.3724,57.829365,0,0,0,0,100,0), +(@PATH,9,-11990.501,-1798.2838,58.157246,0,0,0,0,100,0), +(@PATH,10,-11988.533,-1816.025,58.800465,0,0,0,0,100,0), +(@PATH,11,-11990.606,-1843.1467,58.96818,0,0,0,0,100,0), +(@PATH,12,-11988.533,-1816.025,58.800465,0,0,0,0,100,0), +(@PATH,13,-11990.501,-1798.2838,58.157246,0,0,0,0,100,0), +(@PATH,14,-11992.616,-1776.3724,57.829365,0,0,0,0,100,0), +(@PATH,15,-11992.345,-1765.0465,56.527462,0,0,0,0,100,0), +(@PATH,16,-11982.855,-1744.6752,54.016476,0,0,0,0,100,0), +(@PATH,17,-11970.222,-1748.2112,53.054806,0,0,0,0,100,0), +(@PATH,18,-11968.503,-1770.5248,54.450214,0,0,0,0,100,0), +(@PATH,19,-11966.618,-1790.2196,54.229603,0,0,0,0,100,0), +(@PATH,20,-11961.947,-1803.928,54.609234,0,0,0,0,100,0); + +SET @NPC := 51947; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11977.521,`position_y`=-1753.175,`position_z`=52.679806 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11977.521,-1753.175,52.679806,0,0,0,0,100,0), +(@PATH,2,-11954.122,-1805.8005,52.859722,0,0,0,0,100,0), +(@PATH,3,-11931.607,-1808.4896,51.387363,0,0,0,0,100,0), +(@PATH,4,-11901.063,-1811.8312,51.262363,0,0,0,0,100,0), +(@PATH,5,-11865.95,-1811.2943,51.134724,0,0,0,0,100,0), +(@PATH,6,-11831.555,-1812.5005,51.024055,0,0,0,0,100,0), +(@PATH,7,-11818.492,-1834.661,50.14477,0,0,0,0,100,0), +(@PATH,8,-11804.356,-1849.8798,47.525387,0,0,0,0,100,0), +(@PATH,9,-11818.492,-1834.661,50.14477,0,0,0,0,100,0), +(@PATH,10,-11831.555,-1812.5005,51.024055,0,0,0,0,100,0), +(@PATH,11,-11865.95,-1811.2943,51.134724,0,0,0,0,100,0), +(@PATH,12,-11901.063,-1811.8312,51.262363,0,0,0,0,100,0), +(@PATH,13,-11931.607,-1808.4896,51.387363,0,0,0,0,100,0), +(@PATH,14,-11954.122,-1805.8005,52.859722,0,0,0,0,100,0), +(@PATH,15,-11957.259,-1768.3782,53.47521,0,0,0,0,100,0); + +SET @NPC := 49762; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12109.016,`position_y`=-1733.4694,`position_z`=81.128365 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12109.016,-1733.4694,81.128365,0,0,1,0,100,0), +(@PATH,2,-12126.374,-1712.6376,81.54973,0,0,1,0,100,0), +(@PATH,3,-12119.152,-1699.4357,80.19984,0,0,1,0,100,0), +(@PATH,4,-12109.786,-1673.918,81.75428,0,0,1,0,100,0), +(@PATH,5,-12110.596,-1770.8281,80.44503,0,0,1,0,100,0), +(@PATH,6,-12123.266,-1737.255,80.456245,0,0,1,0,100,0), +(@PATH,7,-12113.903,-1710.5658,80.38689,0,0,1,0,100,0), +(@PATH,8,-12121.344,-1698.0533,80.446175,0,0,1,0,100,0), +(@PATH,9,-12121.573,-1669.267,82.0492,0,0,1,0,100,0), +(@PATH,10,-12107.469,-1754.7734,81.48701,0,0,1,0,100,0); + +SET @NPC := 49195; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12138.63,`position_y`=-1670.5779,`position_z`=86.08012 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12138.63,-1670.5779,86.08012,0,0,1,0,100,0), +(@PATH,2,-12178.349,-1671.1046,102.82473,0,0,1,0,100,0), +(@PATH,3,-12181.912,-1689.7715,105.74636,0,0,1,0,100,0), +(@PATH,4,-12201.704,-1690.2086,116.51056,0,0,1,0,100,0), +(@PATH,5,-12221.841,-1669.8362,126.642395,0,0,1,0,100,0), +(@PATH,6,-12234.417,-1679.6523,128.77368,0,0,1,0,100,0), +(@PATH,7,-12243.223,-1672.7603,130.92725,0,0,1,0,100,0), +(@PATH,8,-12206.545,-1672.7595,118.35553,0,0,1,0,100,0), +(@PATH,9,-12192.366,-1692.4174,110.68044,0,0,1,0,100,0), +(@PATH,10,-12178.349,-1671.1046,102.82473,0,0,1,0,100,0), +(@PATH,11,-12150.866,-1670.7789,90.58817,0,0,1,0,100,0), +(@PATH,12,-12158.139,-1691.9014,93.26981,0,0,1,0,100,0); + +SET @NPC := 49766; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12337.564,`position_y`=-1641.6588,`position_z`=131.37659 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-12337.564,`position_y`=-1641.6588,`position_z`=131.37659 WHERE `guid`=49767; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12337.564,-1641.6588,131.37659,0,0,1,0,100,0), +(@PATH,2,-12304.307,-1622.008,131.06699,0,0,1,0,100,0), +(@PATH,3,-12317.889,-1644.2317,130.35608,0,0,1,0,100,0), +(@PATH,4,-12289.107,-1645.6108,132.09413,0,0,1,0,100,0), +(@PATH,5,-12299.198,-1690.8108,131.38403,0,0,1,0,100,0), +(@PATH,6,-12289.107,-1645.6108,132.09413,0,0,1,0,100,0), +(@PATH,7,-12317.889,-1644.2317,130.35608,0,0,1,0,100,0), +(@PATH,8,-12304.307,-1622.008,131.06699,0,0,1,0,100,0), +(@PATH,9,-12337.564,-1641.6588,131.37659,0,0,1,0,100,0), +(@PATH,10,-12325.493,-1666.0645,130.35925,0,0,1,0,100,0), +(@PATH,11,-12299.669,-1684.6774,131.6582,0,0,1,0,100,0); + +SET @NPC := 49201; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12350.479,`position_y`=-1609.6436,`position_z`=131.65074 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12350.479,-1609.6436,131.65074,0,0,1,0,100,0), +(@PATH,2,-12350.196,-1669.4393,131.14233,0,0,1,0,100,0), +(@PATH,3,-12366.125,-1660.2407,130.38538,0,0,1,0,100,0), +(@PATH,4,-12379,-1636.4803,130.7168,0,0,1,0,100,0), +(@PATH,5,-12350.196,-1669.4393,131.14233,0,0,1,0,100,0), +(@PATH,6,-12338.354,-1643.7845,131.38538,0,0,1,0,100,0); + +SET @NPC := 91493; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12247.839,`position_y`=-1818.8044,`position_z`=130.26392 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12247.839,-1818.8044,130.26392,0,0,0,0,100,0), +(@PATH,2,-12232.867,-1818.0723,128.23663,0,0,0,0,100,0), +(@PATH,3,-12200.451,-1819.7026,113.88873,0,0,0,0,100,0), +(@PATH,4,-12166.817,-1818.2793,96.6946,0,0,0,0,100,0), +(@PATH,5,-12133.23,-1818.3303,81.926414,0,0,0,0,100,0), +(@PATH,6,-12122.129,-1814.8438,80.20083,0,0,0,0,100,0), +(@PATH,7,-12112.913,-1800.0133,80.45083,0,0,0,0,100,0), +(@PATH,8,-12100.052,-1795.4763,80.59078,0,0,0,0,100,0), +(@PATH,9,-12066.56,-1789.7352,70.61766,0,0,0,0,100,0), +(@PATH,10,-12100.052,-1795.4763,80.59078,0,0,0,0,100,0), +(@PATH,11,-12112.913,-1800.0133,80.45083,0,0,0,0,100,0), +(@PATH,12,-12122.129,-1814.8438,80.20083,0,0,0,0,100,0), +(@PATH,13,-12133.23,-1818.3303,81.926414,0,0,0,0,100,0), +(@PATH,14,-12166.817,-1818.2793,96.6946,0,0,0,0,100,0), +(@PATH,15,-12200.451,-1819.7026,113.88873,0,0,0,0,100,0); + +SET @NPC := 91435; +SET @path := @NPC * 10; +UPDATE creature SET wander_distance=0,MovementType=2,position_x=-11795.8,position_y=-1851.9052,position_z=46.358498 WHERE guid=@NPC; +DELETE FROM creature_addon WHERE guid=@NPC; +INSERT INTO creature_addon (guid,path_id,mount,bytes1,bytes2,emote,visibilityDistanceType,auras) VALUES (@NPC,@path,0,0,1,0,0, ''); +DELETE FROM waypoint_data WHERE id=@path; +INSERT INTO waypoint_data (id,point,position_x,position_y,position_z,orientation,delay,move_type,action,action_chance,wpguid) VALUES +(@path,1,-11795.8,-1851.9052,46.358498,0,0,0,0,100,0), +(@path,2,-11766.936,-1849.6432,41.644875,0,0,0,0,100,0), +(@path,3,-11722.593,-1850.4967,40.44426,0,0,0,0,100,0), +(@path,4,-11690.838,-1850.0109,40.56508,0,0,0,0,100,0), +(@path,5,-11659.619,-1844.8069,40.565075,0,0,0,0,100,0), +(@path,6,-11643.126,-1826.8016,40.566326,0,0,0,0,100,0), +(@path,7,-11619.31,-1797.6473,40.440327,0,0,0,0,100,0), +(@path,8,-11614.934,-1765.2982,38.932186,0,0,0,0,100,0), +(@path,9,-11611.702,-1736.597,38.78375,0,0,0,0,100,0), +(@path,10,-11619.879,-1701.0035,38.80264,0,0,0,0,100,0), +(@path,11,-11611.702,-1736.597,38.78375,0,0,0,0,100,0), +(@path,12,-11614.934,-1765.2982,38.932186,0,0,0,0,100,0), +(@path,13,-11619.31,-1797.6473,40.440327,0,0,0,0,100,0), +(@path,14,-11643.126,-1826.8016,40.566326,0,0,0,0,100,0), +(@path,15,-11659.619,-1844.8069,40.565075,0,0,0,0,100,0), +(@path,16,-11690.838,-1850.0109,40.56508,0,0,0,0,100,0), +(@path,17,-11722.593,-1850.4967,40.44426,0,0,0,0,100,0), +(@path,18,-11766.936,-1849.6432,41.644875,0,0,0,0,100,0); + +SET @NPC := 49305; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11738.549,`position_y`=-1925.6504,`position_z`=56.561115 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11738.549,-1925.6504,56.561115,0,0,0,0,100,0), +(@PATH,2,-11750.711,-1901.7615,56.37264,0,0,0,0,100,0), +(@PATH,3,-11734.666,-1893.1967,55.870358,0,0,0,0,100,0), +(@PATH,4,-11717.427,-1917.7103,55.732574,0,0,0,0,100,0), +(@PATH,5,-11690.708,-1926.6493,56.91182,0,0,0,0,100,0), +(@PATH,6,-11668.789,-1908.565,57.22432,0,0,0,0,100,0), +(@PATH,7,-11663.709,-1891.0614,56.346718,0,0,0,0,100,0), +(@PATH,8,-11694.129,-1899.5317,55.957413,0,0,0,0,100,0), +(@PATH,9,-11700.588,-1911.7079,56.11563,0,0,0,0,100,0), +(@PATH,10,-11683.332,-1900,56.41182,0,0,0,0,100,0), +(@PATH,11,-11686.716,-1896.9395,56.315323,0,0,0,0,100,0), +(@PATH,12,-11686.336,-1897.2831,56.315323,0,0,0,0,100,0), +(@PATH,13,-11687.827,-1900.5996,56.247513,0,0,0,0,100,0), +(@PATH,14,-11685.963,-1896.5377,56.41835,0,0,0,0,100,0), +(@PATH,15,-11686.137,-1896.9166,56.40025,0,0,0,0,100,0), +(@PATH,16,-11686.105,-1895.6777,56.521378,0,0,0,0,100,0), +(@PATH,17,-11687.623,-1896.3002,56.36293,0,0,0,0,100,0), +(@PATH,18,-11686.205,-1896.7225,56.396133,0,0,0,0,100,0), +(@PATH,19,-11738.549,-1925.6504,56.561115,0,0,0,0,100,0), +(@PATH,20,-11717.427,-1917.7103,55.732574,0,0,0,0,100,0), +(@PATH,21,-11752.012,-1902.6263,56.37264,0,0,0,0,100,0), +(@PATH,22,-11749.76,-1904.2018,56.33968,0,0,0,0,100,0), +(@PATH,23,-11750.711,-1901.7615,56.37264,0,0,0,0,100,0), +(@PATH,24,-11751.421,-1903.246,56.37264,0,0,0,0,100,0), +(@PATH,25,-11750.882,-1901.9397,56.37264,0,0,0,0,100,0), +(@PATH,26,-11749.581,-1904.2878,56.30794,0,0,0,0,100,0); + +SET @NPC := 49046; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11536.73,`position_y`=-1781.882,`position_z`=70.68699 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11536.73,-1781.882,70.68699,0,0,0,0,100,0), +(@PATH,2,-11544.305,-1787.8141,65.44749,0,0,0,0,100,0), +(@PATH,3,-11556.835,-1795.5504,57.545876,0,0,0,0,100,0), +(@PATH,4,-11567.028,-1793.9373,55.098785,0,0,0,0,100,0), +(@PATH,5,-11578.626,-1785.714,50.36612,0,0,0,0,100,0), +(@PATH,6,-11587.025,-1803.8789,42.815083,0,0,0,0,100,0), +(@PATH,7,-11586.278,-1814.2578,41.649067,0,0,0,0,100,0), +(@PATH,8,-11597.152,-1830.3585,40.873188,0,0,0,0,100,0), +(@PATH,9,-11612.724,-1838.1775,42.921276,0,0,0,0,100,0), +(@PATH,10,-11612.605,-1854.1682,42.940563,0,0,0,0,100,0), +(@PATH,11,-11623.021,-1860.6819,45.10951,0,0,0,0,100,0), +(@PATH,12,-11612.605,-1854.1682,42.940563,0,0,0,0,100,0), +(@PATH,13,-11612.724,-1838.1775,42.921276,0,0,0,0,100,0), +(@PATH,14,-11597.152,-1830.3585,40.873188,0,0,0,0,100,0), +(@PATH,15,-11586.278,-1814.2578,41.649067,0,0,0,0,100,0), +(@PATH,16,-11587.027,-1803.8657,42.75063,0,0,0,0,100,0), +(@PATH,17,-11578.626,-1785.714,50.36612,0,0,0,0,100,0), +(@PATH,18,-11567.028,-1793.9373,55.098785,0,0,0,0,100,0), +(@PATH,19,-11556.835,-1795.5504,57.545876,0,0,0,0,100,0), +(@PATH,20,-11544.305,-1787.8141,65.44749,0,0,0,0,100,0); + +SET @NPC := 91509; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11546.48,`position_y`=-1812.3235,`position_z`=69.07913 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11546.48,-1812.3235,69.07913,0,0,0,0,100,0), +(@PATH,2,-11551.275,-1802.8292,61.18899,0,0,0,0,100,0), +(@PATH,3,-11564.51,-1795.0237,56.25657,0,0,0,0,100,0), +(@PATH,4,-11573.905,-1787.8058,49.015778,0,0,0,0,100,0), +(@PATH,5,-11582.823,-1789.2036,51.682037,0,0,0,0,100,0), +(@PATH,6,-11583.613,-1805.4567,43.52651,0,0,0,0,100,0), +(@PATH,7,-11595.59,-1804.6367,40.940083,0,0,0,0,100,0), +(@PATH,8,-11608.309,-1796.7623,41.13564,0,0,0,0,100,0), +(@PATH,9,-11630.712,-1786.9908,42.438374,0,0,0,0,100,0), +(@PATH,10,-11649.791,-1801.5215,42.691326,0,0,0,0,100,0), +(@PATH,11,-11654.548,-1810.3748,42.80949,0,0,0,0,100,0), +(@PATH,12,-11649.842,-1801.5664,42.691326,0,0,0,0,100,0), +(@PATH,13,-11630.712,-1786.9908,42.438374,0,0,0,0,100,0), +(@PATH,14,-11608.309,-1796.7623,41.13564,0,0,0,0,100,0), +(@PATH,15,-11595.67,-1804.6227,41.022114,0,0,0,0,100,0), +(@PATH,16,-11583.693,-1805.4434,43.440083,0,0,0,0,100,0), +(@PATH,17,-11582.823,-1789.2036,51.682037,0,0,0,0,100,0), +(@PATH,18,-11573.905,-1787.8058,49.015778,0,0,0,0,100,0), +(@PATH,19,-11564.51,-1795.0237,56.25657,0,0,0,0,100,0), +(@PATH,20,-11551.275,-1802.8292,61.18899,0,0,0,0,100,0), +(@PATH,21,-11546.48,-1812.3235,69.07913,0,0,0,0,100,0), +(@PATH,22,-11548.851,-1831.1031,71.011505,0,0,0,0,100,0), +(@PATH,23,-11548.012,-1846.4807,83.458145,0,0,0,0,100,0), +(@PATH,24,-11555.085,-1858.063,83.08461,0,0,0,0,100,0), +(@PATH,25,-11548.012,-1846.4807,83.458145,0,0,0,0,100,0), +(@PATH,26,-11548.851,-1831.1031,71.011505,0,0,0,0,100,0); + +SET @NPC := 49320; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11631.84,`position_y`=-1696.8826,`position_z`=40.054016 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11631.84,-1696.8826,40.054016,0,0,0,0,100,0), +(@PATH,2,-11632.066,-1671.7194,41.19049,0,0,0,0,100,0), +(@PATH,3,-11631.573,-1646.1881,38.945087,0,0,0,0,100,0), +(@PATH,4,-11632.174,-1624.1875,39.92353,0,0,0,0,100,0), +(@PATH,5,-11634.154,-1598.2383,39.14192,0,0,0,0,100,0), +(@PATH,6,-11632.172,-1624.084,39.8769,0,0,0,0,100,0), +(@PATH,7,-11631.573,-1646.1881,38.945087,0,0,0,0,100,0), +(@PATH,8,-11632.066,-1671.7194,41.19049,0,0,0,0,100,0); + +SET @NPC := 91444; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11595.588,`position_y`=-1622.7633,`position_z`=46.540718 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11595.588,-1622.7633,46.540718,0,0,0,0,100,0), +(@PATH,2,-11616.814,-1624.2427,39.137886,0,0,0,0,100,0), +(@PATH,3,-11618.538,-1654.4646,38.840107,0,0,0,0,100,0), +(@PATH,4,-11615.041,-1682.5801,38.85919,0,0,0,0,100,0), +(@PATH,5,-11618.538,-1654.4646,38.840107,0,0,0,0,100,0), +(@PATH,6,-11616.814,-1624.2427,39.137886,0,0,0,0,100,0), +(@PATH,7,-11595.588,-1622.7633,46.540718,0,0,0,0,100,0), +(@PATH,8,-11616.317,-1617.7388,38.94819,0,0,0,0,100,0), +(@PATH,9,-11618.892,-1600.7325,38.79853,0,0,0,0,100,0), +(@PATH,10,-11620.429,-1573.9994,38.79853,0,0,0,0,100,0), +(@PATH,11,-11638.856,-1546.3998,38.85918,0,0,0,0,100,0), +(@PATH,12,-11646.792,-1521.3978,39.52875,0,0,0,0,100,0), +(@PATH,13,-11625.597,-1491.7628,44.810688,0,0,0,0,100,0), +(@PATH,14,-11598.609,-1505.5237,48.415474,0,0,0,0,100,0), +(@PATH,15,-11585.897,-1500.2114,53.34272,0,0,0,0,100,0), +(@PATH,16,-11577.903,-1484.7292,56.7384,0,0,0,0,100,0), +(@PATH,17,-11565.622,-1478.6696,64.82333,0,0,0,0,100,0), +(@PATH,18,-11556.735,-1468.1049,67.42319,0,0,0,0,100,0), +(@PATH,19,-11565.622,-1478.6696,64.82333,0,0,0,0,100,0), +(@PATH,20,-11577.903,-1484.7292,56.7384,0,0,0,0,100,0), +(@PATH,21,-11585.897,-1500.2114,53.34272,0,0,0,0,100,0), +(@PATH,22,-11598.609,-1505.5237,48.415474,0,0,0,0,100,0), +(@PATH,23,-11625.597,-1491.7628,44.810688,0,0,0,0,100,0), +(@PATH,24,-11646.792,-1521.3978,39.52875,0,0,0,0,100,0), +(@PATH,25,-11638.856,-1546.3998,38.85918,0,0,0,0,100,0), +(@PATH,26,-11620.429,-1573.9994,38.79853,0,0,0,0,100,0), +(@PATH,27,-11618.892,-1600.7325,38.79853,0,0,0,0,100,0), +(@PATH,28,-11616.317,-1617.7388,38.94819,0,0,0,0,100,0); + +SET @NPC := 49315; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11610.188,`position_y`=-1585.9325,`position_z`=39.101997 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11610.188,-1585.9325,39.101997,0,0,0,0,100,0), +(@PATH,2,-11612.313,-1567.4999,39.305367,0,0,0,0,100,0), +(@PATH,3,-11622.758,-1546.7374,40.3023,0,0,0,0,100,0), +(@PATH,4,-11627.784,-1526.7975,41.418404,0,0,0,0,100,0), +(@PATH,5,-11608.403,-1513.7018,44.82685,0,0,0,0,100,0), +(@PATH,6,-11596.558,-1508.7162,48.4206,0,0,0,0,100,0), +(@PATH,7,-11586.385,-1515.0918,50.57807,0,0,0,0,100,0), +(@PATH,8,-11568.233,-1517.8379,52.546333,0,0,0,0,100,0), +(@PATH,9,-11553.606,-1513.0669,56.56321,0,0,0,0,100,0), +(@PATH,10,-11568.233,-1517.8379,52.546333,0,0,0,0,100,0), +(@PATH,11,-11586.352,-1515.1041,50.528267,0,0,0,0,100,0), +(@PATH,12,-11596.558,-1508.7162,48.4206,0,0,0,0,100,0), +(@PATH,13,-11608.403,-1513.7018,44.82685,0,0,0,0,100,0), +(@PATH,14,-11627.784,-1526.7975,41.418404,0,0,0,0,100,0), +(@PATH,15,-11622.758,-1546.7374,40.3023,0,0,0,0,100,0), +(@PATH,16,-11612.313,-1567.4999,39.305367,0,0,0,0,100,0); + +SET @NPC := 51386; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11625.495,`position_y`=-1686.3772,`position_z`=39.85919 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11625.495,`position_y`=-1686.3772,`position_z`=39.85919 WHERE `guid`=51385; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11625.495,`position_y`=-1686.3772,`position_z`=39.85919 WHERE `guid`=51384; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11625.495,-1686.3772,39.85919,0,0,0,0,100,0), +(@PATH,2,-11629.892,-1667.4484,41.13385,0,0,0,0,100,0), +(@PATH,3,-11626.533,-1644.36,39.079365,0,0,0,0,100,0), +(@PATH,4,-11615.71,-1624.0927,39.272163,0,0,0,0,100,0), +(@PATH,5,-11590.874,-1621.3722,48.73896,0,0,0,0,100,0), +(@PATH,6,-11581.063,-1641.8533,49.524467,0,0,0,0,100,0), +(@PATH,7,-11567.521,-1667.5408,49.720787,0,0,0,0,100,0), +(@PATH,8,-11553.583,-1692.6388,50.868305,0,0,0,0,100,0), +(@PATH,9,-11519.38,-1674.3472,49.720787,0,0,0,0,100,0), +(@PATH,10,-11477.01,-1671.6425,49.720787,0,0,0,0,100,0), +(@PATH,11,-11462.743,-1648.2842,49.720787,0,0,0,0,100,0), +(@PATH,12,-11462.567,-1620.9614,49.720787,0,0,0,0,100,0), +(@PATH,13,-11462.63,-1594.6409,49.637268,0,0,0,0,100,0), +(@PATH,14,-11465.442,-1568.8904,49.637268,0,0,0,0,100,0), +(@PATH,15,-11487.88,-1566.2319,49.620872,0,0,0,0,100,0), +(@PATH,16,-11513.941,-1568.057,49.637268,0,0,0,0,100,0), +(@PATH,17,-11547.554,-1566.8209,49.690968,0,0,0,0,100,0), +(@PATH,18,-11572.382,-1554.7301,50.696236,0,0,0,0,100,0), +(@PATH,19,-11581.898,-1588.226,50.054634,0,0,0,0,100,0), +(@PATH,20,-11577.345,-1606.25,48.54853,0,0,0,0,100,0), +(@PATH,21,-11586.556,-1616.7745,49.720787,0,0,0,0,100,0), +(@PATH,22,-11615.369,-1621.9933,39.391792,0,0,0,0,100,0), +(@PATH,23,-11616.883,-1653.8944,38.840107,0,0,0,0,100,0), +(@PATH,24,-11609.195,-1682.1886,39.02716,0,0,0,0,100,0); + +SET @NPC := 51384; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12304.316,`position_y`=-1828.3707,`position_z`=130.3816 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12304.316,-1828.3707,130.3816,0,0,0,0,100,0), +(@PATH,2,-12316.513,-1835.5278,130.3816,0,0,0,0,100,0), +(@PATH,3,-12333.007,-1831.8125,130.3816,0,0,0,0,100,0), +(@PATH,4,-12302.664,-1882.1113,130.38538,0,0,0,0,100,0), +(@PATH,5,-12292.008,-1899.5505,130.28304,0,0,0,0,100,0), +(@PATH,6,-12277.654,-1913.2064,130.3583,0,0,0,0,100,0), +(@PATH,7,-12253.349,-1920.6671,130.39581,0,0,0,0,100,0), +(@PATH,8,-12232.099,-1935.3337,130.39581,0,0,0,0,100,0), +(@PATH,9,-12253.349,-1920.6671,130.39581,0,0,0,0,100,0), +(@PATH,10,-12277.654,-1913.2064,130.3583,0,0,0,0,100,0), +(@PATH,11,-12292.008,-1899.5505,130.28304,0,0,0,0,100,0), +(@PATH,12,-12302.664,-1882.1113,130.38538,0,0,0,0,100,0), +(@PATH,13,-12308.578,-1866.2955,130.3816,0,0,0,0,100,0), +(@PATH,14,-12321.762,-1855.7916,130.3816,0,0,0,0,100,0), +(@PATH,15,-12319.301,-1837.3279,130.3816,0,0,0,0,100,0), +(@PATH,16,-12333.007,-1831.8125,130.3816,0,0,0,0,100,0), +(@PATH,17,-12316.513,-1835.5278,130.3816,0,0,0,0,100,0), +(@PATH,18,-12304.316,-1828.3707,130.3816,0,0,0,0,100,0), +(@PATH,19,-12291.655,-1821.4,130.38538,0,0,0,0,100,0), +(@PATH,20,-12321.201,-1840.0312,130.3816,0,0,0,0,100,0), +(@PATH,21,-12326.542,-1865.9154,130.3816,0,0,0,0,100,0), +(@PATH,22,-12333.967,-1876.9497,130.3084,0,0,0,0,100,0), +(@PATH,23,-12345.774,-1883.2954,130.3084,0,0,0,0,100,0), +(@PATH,24,-12357.866,-1904.3063,130.4747,0,0,0,0,100,0), +(@PATH,25,-12345.774,-1883.2954,130.3084,0,0,0,0,100,0), +(@PATH,26,-12333.967,-1876.9497,130.3084,0,0,0,0,100,0), +(@PATH,27,-12326.542,-1865.9154,130.3816,0,0,0,0,100,0), +(@PATH,28,-12321.201,-1840.0312,130.3816,0,0,0,0,100,0), +(@PATH,29,-12291.655,-1821.4,130.38538,0,0,0,0,100,0); + +DELETE FROM `creature_formations` WHERE `leaderguid` IN (49090, 49751, 49752, 49146, 49147, 49132, 49135, 49186, 49189, 52136, 49157, 49158, 49167, 49185, 51452, 49760, 49762, 49763, 49195, 49766, 49201, 49046, 91509, 49315); +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(49751, 49751, 0, 0, 515, 0, 0), +(49751, 49752, 2, 270, 515, 0, 0), +(49090, 49090, 0, 0, 515, 0, 0), +(49090, 49091, 2, 90, 515, 0, 0), +(49146, 49146, 0, 0, 515, 0, 0), +(49146, 49145, 10, 165, 515, 0, 0), +(49146, 49144, 10, 195, 515, 0, 0), +(49146, 49143, 10, 185, 515, 0, 0), +(49146, 49147, 10, 170, 515, 0, 0), +(49132, 49132, 0, 0, 515, 0, 0), +(49132, 49131, 2, 155, 515, 0, 0), +(49132, 49133, 2, 205, 515, 0, 0), +(49135, 49135, 0, 0, 515, 0, 0), +(49135, 49136, 2, 205, 515, 0, 0), +(49135, 49134, 2, 155, 515, 0, 0), +(49186, 49186, 0, 0, 515, 0, 0), +(49186, 49189, 5, 180, 515, 0, 0), +(49186, 49188, 5, 205, 515, 0, 0), +(49186, 49140, 5, 180, 515, 0, 0), +(49186, 49139, 10, 205, 515, 0, 0), +(49186, 49187, 10, 155, 515, 0, 0), +(52136, 52136, 0, 0, 515, 0, 0), +(52136, 52135, 10, 180, 515, 0, 0), +(52136, 52137, 5, 205, 515, 0, 0), +(52136, 52138, 5, 180, 515, 0, 0), +(49158, 49157, 10, 205, 515, 0, 0), +(49158, 49158, 0, 0, 515, 0, 0), +(49158, 49156, 10, 180, 515, 0, 0), +(49158, 49167, 5, 205, 515, 0, 0), +(49158, 49185, 5, 180, 515, 0, 0), +(51452, 51452, 0, 0, 515, 0, 0), +(51452, 51451, 2, 90, 515, 0, 0), +(49760, 49760, 0, 0, 515, 0, 0), +(49760, 49756, 2, 90, 515, 0, 0), +(49762, 49762, 0, 0, 515, 0, 0), +(49762, 49763, 5, 180, 515, 0, 0), +(49762, 49056, 5, 180, 515, 0, 0), +(49195, 49195, 0, 0, 515, 0, 0), +(49195, 49196, 5, 180, 515, 0, 0), +(49195, 49197, 5, 180, 515, 0, 0), +(49766, 49766, 0, 0, 515, 0, 0), +(49766, 49767, 5, 180, 515, 0, 0), +(49766, 49137, 5, 180, 515, 0, 0), +(91509, 91509, 0, 0, 515, 0, 0), +(91509, 49045, 2, 90, 515, 0, 0), +(49046, 49046, 0, 0, 515, 0, 0), +(49046, 91510, 2, 90, 515, 0, 0), +(49315, 49315, 0, 0, 515, 0, 0), +(49315, 49316, 2, 90, 515, 0, 0), +(49315, 49317, 2, 270, 515, 0, 0), +(51386, 51386, 0, 0, 515, 0, 0), +(51386, 51385, 2, 90, 515, 0, 0), +(51386, 51384, 2, 270, 515, 0, 0), +(49201, 49201, 0, 0, 515, 0, 0), +(49201, 49202, 5, 180, 515, 0, 0), +(49201, 49138, 5, 180, 515, 0, 0); From 8c1b72937592cd3082bd25bc2fd01d21ce50e4e4 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Tue, 28 Jun 2022 22:19:35 +0200 Subject: [PATCH 006/119] fix(Core/Spells): Removed any triggered auras on glyph removal. (#12168) * fix(Core/Spells): Removed any triggered auras on glyph removal. Fixes #11939 * Update. --- src/server/game/Handlers/CharacterHandler.cpp | 17 +++++++++++++++++ src/server/game/Spells/SpellEffects.cpp | 17 +++++++++++++++++ 2 files changed, 34 insertions(+) diff --git a/src/server/game/Handlers/CharacterHandler.cpp b/src/server/game/Handlers/CharacterHandler.cpp index d3118660c..718dfce06 100644 --- a/src/server/game/Handlers/CharacterHandler.cpp +++ b/src/server/game/Handlers/CharacterHandler.cpp @@ -1579,6 +1579,23 @@ void WorldSession::HandleRemoveGlyph(WorldPacket& recvData) if (GlyphPropertiesEntry const* glyphEntry = sGlyphPropertiesStore.LookupEntry(glyph)) { _player->RemoveAurasDueToSpell(glyphEntry->SpellId); + + // Removed any triggered auras + Unit::AuraMap& ownedAuras = _player->GetOwnedAuras(); + for (Unit::AuraMap::iterator iter = ownedAuras.begin(); iter != ownedAuras.end();) + { + Aura* aura = iter->second; + if (SpellInfo const* triggeredByAuraSpellInfo = aura->GetTriggeredByAuraSpellInfo()) + { + if (triggeredByAuraSpellInfo->Id == glyphEntry->SpellId) + { + _player->RemoveOwnedAura(iter); + continue; + } + } + ++iter; + } + _player->SendLearnPacket(glyphEntry->SpellId, false); // Send packet to properly handle client-side spell tooltips _player->SetGlyph(slot, 0, true); _player->SendTalentsInfoData(false); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 1097e49b5..bf087abac 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -4401,6 +4401,23 @@ void Spell::EffectApplyGlyph(SpellEffIndex effIndex) if (GlyphPropertiesEntry const* oldGlyphEntry = sGlyphPropertiesStore.LookupEntry(oldGlyph)) { player->RemoveAurasDueToSpell(oldGlyphEntry->SpellId); + + // Removed any triggered auras + Unit::AuraMap& ownedAuras = player->GetOwnedAuras(); + for (Unit::AuraMap::iterator iter = ownedAuras.begin(); iter != ownedAuras.end();) + { + Aura* aura = iter->second; + if (SpellInfo const* triggeredByAuraSpellInfo = aura->GetTriggeredByAuraSpellInfo()) + { + if (triggeredByAuraSpellInfo->Id == oldGlyphEntry->SpellId) + { + player->RemoveOwnedAura(iter); + continue; + } + } + ++iter; + } + player->SendLearnPacket(oldGlyphEntry->SpellId, false); // Send packet to properly handle client-side spell tooltips } From e184c2a40a70d3a5232bd79fa2dbfb606dcf4f40 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 28 Jun 2022 20:22:08 +0000 Subject: [PATCH 007/119] chore(DB): import pending files Referenced commit(s): 8c1b72937592cd3082bd25bc2fd01d21ce50e4e4 --- .../zgpathing.sql => db_world/2022_06_28_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/zgpathing.sql => db_world/2022_06_28_02.sql} (99%) diff --git a/data/sql/updates/pending_db_world/zgpathing.sql b/data/sql/updates/db_world/2022_06_28_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/zgpathing.sql rename to data/sql/updates/db_world/2022_06_28_02.sql index e26a08dd5..363dd580e 100644 --- a/data/sql/updates/pending_db_world/zgpathing.sql +++ b/data/sql/updates/db_world/2022_06_28_02.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_28_01 -> 2022_06_28_02 UPDATE `creature_template` SET `speed_walk`=1,`speed_run`=1.14286 WHERE `entry` IN(11371, 11350, 11372, 11830, 13321, 11374, 15043, 11831, 11351, 11359, 11387, 11373, 15042, 14758); UPDATE `creature_template` SET `speed_walk`=1, `speed_run`=0.85714 WHERE `entry` IN(2914, 1420); UPDATE `creature_template` SET `speed_walk`=0.66667, `speed_run`=2.14286 WHERE `entry` IN(11352); From 8d7e82e06be5b94f2398be9ba2c8888357c92ac8 Mon Sep 17 00:00:00 2001 From: Meramaf <76571216+Meramaf@users.noreply.github.com> Date: Tue, 28 Jun 2022 22:28:45 +0200 Subject: [PATCH 008/119] fix(DB/Creature): The Ancient Hero SmartAI fix (#12191) --- data/sql/updates/pending_db_world/ancient_hero.sql | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 data/sql/updates/pending_db_world/ancient_hero.sql diff --git a/data/sql/updates/pending_db_world/ancient_hero.sql b/data/sql/updates/pending_db_world/ancient_hero.sql new file mode 100644 index 000000000..7becc857e --- /dev/null +++ b/data/sql/updates/pending_db_world/ancient_hero.sql @@ -0,0 +1,7 @@ +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 30886; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 30886); +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 +(30886, 0, 0, 0, 25, 0, 100, 513, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Subjugated Iskalder - In Combat - Set Flag Immune To NPC\'s'), +(30886, 0, 1, 0, 54, 0, 100, 512, 0, 0, 0, 0, 0, 29, 0, 0, 30232, 0, 1, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Subjugated Iskalder - Out of Combat - Start Follow Invoker'), +(30886, 0, 2, 0, 65, 0, 100, 0, 0, 0, 0, 0, 0, 11, 25729, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 0, 'Subjugated Iskalder - On Follow Complete - Cast \'Find the Ancient Hero: Kill Credit\''); From 98e4dd8c475c0cbe94f222f2e0d6e98352e0eb56 Mon Sep 17 00:00:00 2001 From: Meramaf <76571216+Meramaf@users.noreply.github.com> Date: Tue, 28 Jun 2022 22:29:20 +0200 Subject: [PATCH 009/119] fix(DB/Creature): Dawnblade Hawkrider SmartAI fix (#12192) --- data/sql/updates/pending_db_world/dawnblade-hawkrider.sql | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 data/sql/updates/pending_db_world/dawnblade-hawkrider.sql diff --git a/data/sql/updates/pending_db_world/dawnblade-hawkrider.sql b/data/sql/updates/pending_db_world/dawnblade-hawkrider.sql new file mode 100644 index 000000000..fd54b5227 --- /dev/null +++ b/data/sql/updates/pending_db_world/dawnblade-hawkrider.sql @@ -0,0 +1,5 @@ +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 25063; + +DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 25063); +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 +(25063, 0, 0, 0, 10, 0, 100, 0, 0, 70, 3000, 6500, 1, 11, 45189, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 'Dawnblade Hawkrider - Within 0-70 Range Out of Combat LoS - Cast \'Dawnblade Attack\''); From f11feeaef1569d98547337dd18ef2349c8bd2f3f Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Tue, 28 Jun 2022 17:31:07 -0300 Subject: [PATCH 010/119] fix(DB/Creature): Make Skullsplitter Hunter and Panther more in line with other creatures with summoned pets (#12199) Create skullsplitter.sql --- data/sql/updates/pending_db_world/skullsplitter.sql | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 data/sql/updates/pending_db_world/skullsplitter.sql diff --git a/data/sql/updates/pending_db_world/skullsplitter.sql b/data/sql/updates/pending_db_world/skullsplitter.sql new file mode 100644 index 000000000..df6a71d9b --- /dev/null +++ b/data/sql/updates/pending_db_world/skullsplitter.sql @@ -0,0 +1,10 @@ +-- +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 756) AND (`source_type` = 0); +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 669) AND (`source_type` = 0) AND (`id` IN (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 +(669, 0, 0, 0, 25, 0, 100, 1, 0, 0, 0, 0, 0, 11, 3621, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Skullsplitter Hunter - On Reset - Cast \'3621\' (No Repeat)'); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 756; +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 669; + +DELETE FROM `creature` WHERE (`id1` = 756) AND (`guid` IN (1158, 1162, 1215, 1317, 1345, 1361, 1369, 1374, 1377, 1382, 1383, 1392, 1395)); From 176175e7ad651b7398c17600132f43fecd8b8ddc Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 28 Jun 2022 20:33:25 +0000 Subject: [PATCH 011/119] chore(DB): import pending files Referenced commit(s): f11feeaef1569d98547337dd18ef2349c8bd2f3f --- .../ancient_hero.sql => db_world/2022_06_28_03.sql} | 1 + .../dawnblade-hawkrider.sql => db_world/2022_06_28_04.sql} | 1 + .../skullsplitter.sql => db_world/2022_06_28_05.sql} | 1 + 3 files changed, 3 insertions(+) rename data/sql/updates/{pending_db_world/ancient_hero.sql => db_world/2022_06_28_03.sql} (96%) rename data/sql/updates/{pending_db_world/dawnblade-hawkrider.sql => db_world/2022_06_28_04.sql} (95%) rename data/sql/updates/{pending_db_world/skullsplitter.sql => db_world/2022_06_28_05.sql} (96%) diff --git a/data/sql/updates/pending_db_world/ancient_hero.sql b/data/sql/updates/db_world/2022_06_28_03.sql similarity index 96% rename from data/sql/updates/pending_db_world/ancient_hero.sql rename to data/sql/updates/db_world/2022_06_28_03.sql index 7becc857e..c4cc1a656 100644 --- a/data/sql/updates/pending_db_world/ancient_hero.sql +++ b/data/sql/updates/db_world/2022_06_28_03.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_28_02 -> 2022_06_28_03 UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 30886; DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 30886); diff --git a/data/sql/updates/pending_db_world/dawnblade-hawkrider.sql b/data/sql/updates/db_world/2022_06_28_04.sql similarity index 95% rename from data/sql/updates/pending_db_world/dawnblade-hawkrider.sql rename to data/sql/updates/db_world/2022_06_28_04.sql index fd54b5227..990b11956 100644 --- a/data/sql/updates/pending_db_world/dawnblade-hawkrider.sql +++ b/data/sql/updates/db_world/2022_06_28_04.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_28_03 -> 2022_06_28_04 UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 25063; DELETE FROM `smart_scripts` WHERE (`source_type` = 0 AND `entryorguid` = 25063); diff --git a/data/sql/updates/pending_db_world/skullsplitter.sql b/data/sql/updates/db_world/2022_06_28_05.sql similarity index 96% rename from data/sql/updates/pending_db_world/skullsplitter.sql rename to data/sql/updates/db_world/2022_06_28_05.sql index df6a71d9b..63e6d71d5 100644 --- a/data/sql/updates/pending_db_world/skullsplitter.sql +++ b/data/sql/updates/db_world/2022_06_28_05.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_28_04 -> 2022_06_28_05 -- DELETE FROM `smart_scripts` WHERE (`entryorguid` = 756) AND (`source_type` = 0); DELETE FROM `smart_scripts` WHERE (`entryorguid` = 669) AND (`source_type` = 0) AND (`id` IN (0)); From e92428940539d178e08012db6e2681690d2308aa Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 29 Jun 2022 01:04:23 +0200 Subject: [PATCH 012/119] fix(Core): Crashfix. (#12184) --- src/server/game/Entities/Totem/Totem.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Totem/Totem.cpp b/src/server/game/Entities/Totem/Totem.cpp index d38619932..1ed444bb4 100644 --- a/src/server/game/Entities/Totem/Totem.cpp +++ b/src/server/game/Entities/Totem/Totem.cpp @@ -33,7 +33,8 @@ Totem::Totem(SummonPropertiesEntry const* properties, ObjectGuid owner) : Minion void Totem::Update(uint32 time) { - if (!GetOwner()->IsAlive() || !IsAlive()) + Unit* owner = GetOwner(); + if (!owner || !owner->IsAlive() || !IsAlive()) { UnSummon(); // remove self return; From c8eadcd0c0287843994df4e994e675f41913697b Mon Sep 17 00:00:00 2001 From: mpfans Date: Thu, 30 Jun 2022 03:48:10 +0800 Subject: [PATCH 013/119] fix(DB/Quest): Fixed Ducal's Horse not moving to final destination. (#12223) * fixed `Escape from Silverbrook` quest --- data/sql/updates/pending_db_world/rev_1656392544007210278.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656392544007210278.sql diff --git a/data/sql/updates/pending_db_world/rev_1656392544007210278.sql b/data/sql/updates/pending_db_world/rev_1656392544007210278.sql new file mode 100644 index 000000000..9fdf3b4f7 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656392544007210278.sql @@ -0,0 +1,2 @@ +-- fixed `Escape from Silverbrook` quest +UPDATE `smart_scripts` SET `event_flags`=512 WHERE `entryorguid`=2740900; From fd33487ee4554482e9f80e57e7c43cfeb33b476c Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Wed, 29 Jun 2022 13:48:52 -0600 Subject: [PATCH 014/119] fix(DB/Scripts): Furlbrow RP Text (#12228) * fix(DB/Scripts): Furlbrow RP Text * fix(DB/Scripts): Furlbrow RP Text --- .../updates/pending_db_world/rev_1656437939151227700.sql | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656437939151227700.sql diff --git a/data/sql/updates/pending_db_world/rev_1656437939151227700.sql b/data/sql/updates/pending_db_world/rev_1656437939151227700.sql new file mode 100644 index 000000000..2aab25c8f --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656437939151227700.sql @@ -0,0 +1,8 @@ +-- +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` IN (237, 238); + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 237) AND (`source_type` = 0) AND (`id` IN (0)); +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 238) AND (`source_type` = 0) AND (`id` IN (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 +(237, 0, 0, 0, 1, 0, 100, 0, 10000, 10000, 180000, 180000, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Farmer Furlbrow - Out of Combat - Say Line 0'), +(238, 0, 0, 0, 1, 0, 100, 0, 6000, 8000, 240000, 240000, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 'Verna Furlbrow - Out of Combat - Say Line 0'); From b97c63f67b387cc17eccca89aeb17ea5cfd53e02 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Wed, 29 Jun 2022 13:49:08 -0600 Subject: [PATCH 015/119] fix(DB/creature_template): Cenarion Emissary Jademoon Cata Gossip (#12229) --- data/sql/updates/pending_db_world/rev_1656438496539854300.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656438496539854300.sql diff --git a/data/sql/updates/pending_db_world/rev_1656438496539854300.sql b/data/sql/updates/pending_db_world/rev_1656438496539854300.sql new file mode 100644 index 000000000..0178f0a58 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656438496539854300.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `npcflag`=`npcflag`&~1, `gossip_menu_id` = 0 WHERE `entry` = 15187; From 8efa017916384698ae1c47bf064dd4934a87d063 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Wed, 29 Jun 2022 13:49:21 -0600 Subject: [PATCH 016/119] fix(DB/quest_offer_reward): Food for Baby and Becoming a Parent gender text (#12230) --- data/sql/updates/pending_db_world/rev_1656439900063447600.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656439900063447600.sql diff --git a/data/sql/updates/pending_db_world/rev_1656439900063447600.sql b/data/sql/updates/pending_db_world/rev_1656439900063447600.sql new file mode 100644 index 000000000..92f788d63 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656439900063447600.sql @@ -0,0 +1,3 @@ +-- +UPDATE `quest_offer_reward` SET `RewardText` = 'Here, take the egg... better you have it so it bonds to you and looks to you to be its $gdadda:momma;.$B$BCongrats, $N. You''re a parent... kinda.' WHERE `ID` = 4298; +UPDATE `quest_offer_reward` SET `RewardText` = 'These''ll do nicely, and if I''m not mistaken, your little egg''s just about ready to hatch. How does it feel? You know, you about to be a $gfather:mother;? Haha, didn''t think ya''d have to deal with such responsibility, now did ya?' WHERE `ID` = 4297; From b2a23597787f7f382cb85c7b290704942e552352 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Wed, 29 Jun 2022 13:49:42 -0600 Subject: [PATCH 017/119] fix(DB): Daggerspine Marauder loot (#12231) --- data/sql/updates/pending_db_world/rev_1656441880179390900.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656441880179390900.sql diff --git a/data/sql/updates/pending_db_world/rev_1656441880179390900.sql b/data/sql/updates/pending_db_world/rev_1656441880179390900.sql new file mode 100644 index 000000000..24a165da8 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656441880179390900.sql @@ -0,0 +1,3 @@ +-- +UPDATE `creature_template` SET `lootid` = 0 WHERE `entry` = 2775; +DELETE FROM `creature_loot_template` WHERE `entry` = 2775; From 3edb5822b2fa03af19c31dcf57cd2b178ec9b843 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Wed, 29 Jun 2022 13:49:56 -0600 Subject: [PATCH 018/119] fix(DB/creature): Add missing rare The Behemoth (#12232) --- .../rev_1656442792617565900.sql | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656442792617565900.sql diff --git a/data/sql/updates/pending_db_world/rev_1656442792617565900.sql b/data/sql/updates/pending_db_world/rev_1656442792617565900.sql new file mode 100644 index 000000000..3d74efe39 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656442792617565900.sql @@ -0,0 +1,32 @@ +-- +SET @NPC := 300758; # Actual GUID is unknown, but this is the same placeholder GUID used by Vmangos and is available +SET @PATH := @NPC * 10; + +DELETE FROM `creature` WHERE `guid`=@NPC; +INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `MovementType`) VALUES +(@NPC, 8924, 0, 0, 0, -7404.57, -894.073, 171.873, 2.89516, 108000, 0, 2); + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); + +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -7404.57, -894.073, 171.873, 100, 0), +(@PATH, 2, -7397.19, -934.067, 169.109, 100, 0), +(@PATH, 3, -7397.22, -957.259, 170.151, 100, 0), +(@PATH, 4, -7406.08, -992.606, 173.821, 100, 0), +(@PATH, 5, -7378.71, -995.416, 171.25, 100, 0), +(@PATH, 6, -7348, -986.191, 171.532, 100, 0), +(@PATH, 7, -7346.79, -1017.81, 177.942, 100, 0), +(@PATH, 8, -7371.64, -1036.28, 177.966, 100, 0), +(@PATH, 9, -7390.05, -1044.6, 176.843, 100, 0), +(@PATH, 10, -7406.18, -1044.51, 176.751, 100, 0), +(@PATH, 11, -7390.37, -1044.6, 176.823, 100, 0), +(@PATH, 12, -7371.64, -1036.28, 177.966, 100, 0), +(@PATH, 13, -7346.79, -1017.81, 177.942, 100, 0), +(@PATH, 14, -7348, -986.191, 171.532, 100, 0), +(@PATH, 15, -7378.71, -995.416, 171.25, 100, 0), +(@PATH, 16, -7406.08, -992.606, 173.821, 100, 0), +(@PATH, 17, -7397.25, -957.381, 170.135, 100, 0), +(@PATH, 18, -7397.19, -934.067, 169.109, 100, 0), +(@PATH, 19, -7404.57, -894.073, 171.873, 100, 0), +(@PATH, 20, -7438.96, -892.375, 171.973, 100, 0); From 30b05165449c3a27108b5bbbe94be21a12430fe0 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 29 Jun 2022 19:52:07 +0000 Subject: [PATCH 019/119] chore(DB): import pending files Referenced commit(s): 3edb5822b2fa03af19c31dcf57cd2b178ec9b843 --- .../rev_1656392544007210278.sql => db_world/2022_06_29_00.sql} | 1 + .../rev_1656437939151227700.sql => db_world/2022_06_29_01.sql} | 1 + .../rev_1656438496539854300.sql => db_world/2022_06_29_02.sql} | 1 + .../rev_1656439900063447600.sql => db_world/2022_06_29_03.sql} | 1 + .../rev_1656441880179390900.sql => db_world/2022_06_29_04.sql} | 1 + .../rev_1656442792617565900.sql => db_world/2022_06_29_05.sql} | 1 + 6 files changed, 6 insertions(+) rename data/sql/updates/{pending_db_world/rev_1656392544007210278.sql => db_world/2022_06_29_00.sql} (72%) rename data/sql/updates/{pending_db_world/rev_1656437939151227700.sql => db_world/2022_06_29_01.sql} (96%) rename data/sql/updates/{pending_db_world/rev_1656438496539854300.sql => db_world/2022_06_29_02.sql} (69%) rename data/sql/updates/{pending_db_world/rev_1656439900063447600.sql => db_world/2022_06_29_03.sql} (92%) rename data/sql/updates/{pending_db_world/rev_1656441880179390900.sql => db_world/2022_06_29_04.sql} (74%) rename data/sql/updates/{pending_db_world/rev_1656442792617565900.sql => db_world/2022_06_29_05.sql} (97%) diff --git a/data/sql/updates/pending_db_world/rev_1656392544007210278.sql b/data/sql/updates/db_world/2022_06_29_00.sql similarity index 72% rename from data/sql/updates/pending_db_world/rev_1656392544007210278.sql rename to data/sql/updates/db_world/2022_06_29_00.sql index 9fdf3b4f7..689f2baad 100644 --- a/data/sql/updates/pending_db_world/rev_1656392544007210278.sql +++ b/data/sql/updates/db_world/2022_06_29_00.sql @@ -1,2 +1,3 @@ +-- DB update 2022_06_28_05 -> 2022_06_29_00 -- fixed `Escape from Silverbrook` quest UPDATE `smart_scripts` SET `event_flags`=512 WHERE `entryorguid`=2740900; diff --git a/data/sql/updates/pending_db_world/rev_1656437939151227700.sql b/data/sql/updates/db_world/2022_06_29_01.sql similarity index 96% rename from data/sql/updates/pending_db_world/rev_1656437939151227700.sql rename to data/sql/updates/db_world/2022_06_29_01.sql index 2aab25c8f..267eefe72 100644 --- a/data/sql/updates/pending_db_world/rev_1656437939151227700.sql +++ b/data/sql/updates/db_world/2022_06_29_01.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_29_00 -> 2022_06_29_01 -- UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` IN (237, 238); diff --git a/data/sql/updates/pending_db_world/rev_1656438496539854300.sql b/data/sql/updates/db_world/2022_06_29_02.sql similarity index 69% rename from data/sql/updates/pending_db_world/rev_1656438496539854300.sql rename to data/sql/updates/db_world/2022_06_29_02.sql index 0178f0a58..01c998e07 100644 --- a/data/sql/updates/pending_db_world/rev_1656438496539854300.sql +++ b/data/sql/updates/db_world/2022_06_29_02.sql @@ -1,2 +1,3 @@ +-- DB update 2022_06_29_01 -> 2022_06_29_02 -- UPDATE `creature_template` SET `npcflag`=`npcflag`&~1, `gossip_menu_id` = 0 WHERE `entry` = 15187; diff --git a/data/sql/updates/pending_db_world/rev_1656439900063447600.sql b/data/sql/updates/db_world/2022_06_29_03.sql similarity index 92% rename from data/sql/updates/pending_db_world/rev_1656439900063447600.sql rename to data/sql/updates/db_world/2022_06_29_03.sql index 92f788d63..f51986f0b 100644 --- a/data/sql/updates/pending_db_world/rev_1656439900063447600.sql +++ b/data/sql/updates/db_world/2022_06_29_03.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_29_02 -> 2022_06_29_03 -- UPDATE `quest_offer_reward` SET `RewardText` = 'Here, take the egg... better you have it so it bonds to you and looks to you to be its $gdadda:momma;.$B$BCongrats, $N. You''re a parent... kinda.' WHERE `ID` = 4298; UPDATE `quest_offer_reward` SET `RewardText` = 'These''ll do nicely, and if I''m not mistaken, your little egg''s just about ready to hatch. How does it feel? You know, you about to be a $gfather:mother;? Haha, didn''t think ya''d have to deal with such responsibility, now did ya?' WHERE `ID` = 4297; diff --git a/data/sql/updates/pending_db_world/rev_1656441880179390900.sql b/data/sql/updates/db_world/2022_06_29_04.sql similarity index 74% rename from data/sql/updates/pending_db_world/rev_1656441880179390900.sql rename to data/sql/updates/db_world/2022_06_29_04.sql index 24a165da8..115007050 100644 --- a/data/sql/updates/pending_db_world/rev_1656441880179390900.sql +++ b/data/sql/updates/db_world/2022_06_29_04.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_29_03 -> 2022_06_29_04 -- UPDATE `creature_template` SET `lootid` = 0 WHERE `entry` = 2775; DELETE FROM `creature_loot_template` WHERE `entry` = 2775; diff --git a/data/sql/updates/pending_db_world/rev_1656442792617565900.sql b/data/sql/updates/db_world/2022_06_29_05.sql similarity index 97% rename from data/sql/updates/pending_db_world/rev_1656442792617565900.sql rename to data/sql/updates/db_world/2022_06_29_05.sql index 3d74efe39..ba67937de 100644 --- a/data/sql/updates/pending_db_world/rev_1656442792617565900.sql +++ b/data/sql/updates/db_world/2022_06_29_05.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_29_04 -> 2022_06_29_05 -- SET @NPC := 300758; # Actual GUID is unknown, but this is the same placeholder GUID used by Vmangos and is available SET @PATH := @NPC * 10; From e075d87c0e68636f88e0239f1d835e82a87bbdf3 Mon Sep 17 00:00:00 2001 From: Eddy Vega <61223313+Si1ker@users.noreply.github.com> Date: Thu, 30 Jun 2022 15:12:26 -0600 Subject: [PATCH 020/119] fix(scripts/Ragnaros): Move root handling from DB to Core (#12245) --- data/sql/updates/pending_db_world/rev_1656606538908234900.sql | 3 +++ .../BlackrockMountain/MoltenCore/boss_ragnaros.cpp | 1 + 2 files changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656606538908234900.sql diff --git a/data/sql/updates/pending_db_world/rev_1656606538908234900.sql b/data/sql/updates/pending_db_world/rev_1656606538908234900.sql new file mode 100644 index 000000000..c359b958a --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656606538908234900.sql @@ -0,0 +1,3 @@ +-- +DELETE FROM `creature_template_movement` WHERE `CreatureId`=11502; + diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp index 1dba8396c..889cb3cd1 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/MoltenCore/boss_ragnaros.cpp @@ -148,6 +148,7 @@ public: _hasSubmergedOnce = false; _isKnockbackEmoteAllowed = true; me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0); + me->SetControlled(true, UNIT_STATE_ROOT); _lavaBurstGUIDS.clear(); } From 0ef7f999db7284c2a7776b70c9ecf008d8551f16 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 30 Jun 2022 21:14:41 +0000 Subject: [PATCH 021/119] chore(DB): import pending files Referenced commit(s): e075d87c0e68636f88e0239f1d835e82a87bbdf3 --- .../rev_1656606538908234900.sql => db_world/2022_06_30_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656606538908234900.sql => db_world/2022_06_30_00.sql} (61%) diff --git a/data/sql/updates/pending_db_world/rev_1656606538908234900.sql b/data/sql/updates/db_world/2022_06_30_00.sql similarity index 61% rename from data/sql/updates/pending_db_world/rev_1656606538908234900.sql rename to data/sql/updates/db_world/2022_06_30_00.sql index c359b958a..2133ba556 100644 --- a/data/sql/updates/pending_db_world/rev_1656606538908234900.sql +++ b/data/sql/updates/db_world/2022_06_30_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_29_05 -> 2022_06_30_00 -- DELETE FROM `creature_template_movement` WHERE `CreatureId`=11502; From 6bff66a9f6179db50bc2aeb72789adec41cd7718 Mon Sep 17 00:00:00 2001 From: Kempec Halk <80704304+Gozzim@users.noreply.github.com> Date: Fri, 1 Jul 2022 17:30:00 +0200 Subject: [PATCH 022/119] feat(Core/Command): Deserter Command send feedback (#11958) * feat(Core/Command): Deserter feedback Part 1 * docs(Core/Command): Deserter RemoveAll Documentation * feat(Core/Command): Deserter feedback Part 2 * fix(Core/Command): Deserter remove all count * feat(Core/Commands): Deserter merge optimizations --- src/server/scripts/Commands/cs_deserter.cpp | 189 +++++++++++++++----- 1 file changed, 143 insertions(+), 46 deletions(-) diff --git a/src/server/scripts/Commands/cs_deserter.cpp b/src/server/scripts/Commands/cs_deserter.cpp index 6be0b58e3..f20c1c15b 100644 --- a/src/server/scripts/Commands/cs_deserter.cpp +++ b/src/server/scripts/Commands/cs_deserter.cpp @@ -88,9 +88,11 @@ public: * * Example Usage: * @code - * .deserter instance add 1h30m + * .deserter instance add 1h30m (using player target or self) * -or- - * .deserter bg add 1h30m + * .deserter bg add 1h30m (using player target or self) + * -or- + * .deserter bg add Tester 1h30m (using player of name 'Tester') * @endcode */ static bool HandleDeserterAdd(ChatHandler* handler, Optional playerName, Optional time, bool isInstance) @@ -156,16 +158,18 @@ public: return false; } + uint32 deserterSpell = isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER; + if (target) { - Aura* aura = target->GetAura(isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER); + Aura* aura = target->GetAura(deserterSpell); if (aura && aura->GetDuration() >= duration * IN_MILLISECONDS) { handler->PSendSysMessage("Player %s already has a longer %s Deserter active.", handler->playerLink(*playerName), isInstance ? "Instance" : "Battleground"); return true; } - aura = target->AddAura(isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER, target); + aura = target->AddAura(deserterSpell, target); if (!aura) { handler->SendSysMessage(LANG_BAD_VALUE); @@ -173,44 +177,45 @@ public: return false; } aura->SetDuration(duration * IN_MILLISECONDS); - - return true; } - - int32 remainTime = 0; - if (QueryResult result = CharacterDatabase.Query("SELECT remainTime FROM character_aura WHERE guid = {} AND spell = {}", guid.GetCounter(), isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER)) + else { - Field* fields = result->Fetch(); - remainTime = fields[0].Get(); - - if (remainTime < 0 || remainTime >= duration * IN_MILLISECONDS) + int32 remainTime = 0; + if (QueryResult result = CharacterDatabase.Query("SELECT remainTime FROM character_aura WHERE guid = {} AND spell = {}", guid.GetCounter(), deserterSpell)) { - handler->PSendSysMessage("Player %s already has a longer %s Deserter active.", handler->playerLink(*playerName), isInstance ? "Instance" : "Battleground"); - return true; + Field* fields = result->Fetch(); + remainTime = fields[0].Get(); + + if (remainTime < 0 || remainTime >= duration * IN_MILLISECONDS) + { + handler->PSendSysMessage("Player %s already has a longer %s Deserter active.", handler->playerLink(*playerName), isInstance ? "Instance" : "Battleground"); + return true; + } + CharacterDatabase.Query("DELETE FROM character_aura WHERE guid = {} AND spell = {}", guid.GetCounter(), deserterSpell); } - CharacterDatabase.Query("DELETE FROM character_aura WHERE guid = {} AND spell = {}", guid.GetCounter(), isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER); + + uint8 index = 0; + CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_AURA); + stmt->SetData(index++, guid.GetCounter()); + stmt->SetData(index++, guid.GetCounter()); + stmt->SetData(index++, 0); + stmt->SetData(index++, deserterSpell); + stmt->SetData(index++, 1); + stmt->SetData(index++, 1); + stmt->SetData(index++, 1); + stmt->SetData(index++, 0); + stmt->SetData(index++, 0); + stmt->SetData(index++, 0); + stmt->SetData(index++, 0); + stmt->SetData(index++, 0); + stmt->SetData(index++, 0); + stmt->SetData(index++, isInstance ? 1800000 : 900000); + stmt->SetData(index++, duration * IN_MILLISECONDS); + stmt->SetData(index, 0); + CharacterDatabase.Execute(stmt); } - uint8 index = 0; - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_INS_AURA); - stmt->SetData(index++, guid.GetCounter()); - stmt->SetData(index++, guid.GetCounter()); - stmt->SetData(index++, 0); - stmt->SetData(index++, isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER); - stmt->SetData(index++, 1); - stmt->SetData(index++, 1); - stmt->SetData(index++, 1); - stmt->SetData(index++, 0); - stmt->SetData(index++, 0); - stmt->SetData(index++, 0); - stmt->SetData(index++, 0); - stmt->SetData(index++, 0); - stmt->SetData(index++, 0); - stmt->SetData(index++, isInstance ? 1800000 : 900000); - stmt->SetData(index++, duration * 1000); - stmt->SetData(index, 0); - CharacterDatabase.Execute(stmt); - + handler->PSendSysMessage("%s of %s Deserter has been added to player %s.", secsToTimeString(duration), isInstance ? "Instance" : "Battleground", handler->playerLink(*playerName)); return true; } @@ -221,6 +226,7 @@ public: * selected player. * * @param handler The ChatHandler, passed by the system. + * @param player The target player, either by name, the target or self * @param isInstance provided by the relaying functions, so we don't have * to write that much code :) * @@ -228,9 +234,11 @@ public: * * Example Usage: * @code - * .deserter instance remove + * .deserter instance remove (using player target or self) * -or- - * .deserter bg remove + * .deserter bg remove (using player target or self) + * -or- + * .deserter bg remove Tester (using player of name 'Tester') * @endcode */ static bool HandleDeserterRemove(ChatHandler* handler, Optional player, bool isInstance) @@ -248,21 +256,75 @@ public: } Player* target = player->GetConnectedPlayer(); + uint32 deserterSpell = isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER; + int32 duration = 0; if (target) { - target->RemoveAura(isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER); + if (Aura* aura = target->GetAura(deserterSpell)) + { + duration = aura->GetDuration(); + target->RemoveAura(deserterSpell); + } + } + else + { + if (QueryResult result = CharacterDatabase.Query("SELECT remainTime FROM character_aura WHERE guid = {} AND spell = {}", player->GetGUID().GetCounter(), deserterSpell)) + { + Field* fields = result->Fetch(); + duration = fields[0].Get(); + CharacterDatabase.Execute("DELETE FROM character_aura WHERE guid = {} AND spell = {}", player->GetGUID().GetCounter(), deserterSpell); + } + } + + if (duration == 0) + { + handler->PSendSysMessage("Player %s does not have %s Deserter.", handler->playerLink(player->GetName()), isInstance ? "Instance" : "Battleground"); + handler->SetSentErrorMessage(true); return true; } - CharacterDatabase.Query("DELETE FROM character_aura WHERE guid = {} AND spell = {}", player->GetGUID().GetCounter(), isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER); + if (duration < 0) + { + handler->PSendSysMessage("Permanent %s Deserter has been removed from player %s (GUID %u).", isInstance ? "Instance" : "Battleground", handler->playerLink(player->GetName()), player->GetGUID().GetCounter()); + handler->SetSentErrorMessage(true); + return true; + } + handler->PSendSysMessage("%s of %s Deserter has been removed from player %s (GUID %u).", secsToTimeString(duration / IN_MILLISECONDS), isInstance ? "Instance" : "Battleground", handler->playerLink(player->GetName()), player->GetGUID().GetCounter()); return true; } + /** + * @brief Removes the Deserter Debuff from all players + * + * This function removes a Deserter Debuff of the given type (Instance or BG) from + * all players, online or offline. + * + * @param handler The ChatHandler, passed by the system. + * @param isInstance provided by the relaying functions, so we don't have + * to write that much code :) + * @param maxTime Optional: The maximum remaining time of the Debuff on players to be removed. + * Any Player with a Deserter Debuff of this time or less will get their Debuff removed. Use -1 for any. + * Default: 15m for BG, 30m for Instance. + * + * @return true if everything was correct, false if an error occured. + * + * Example Usage: + * @code + * .deserter bg remove all + * -or- + * .deserter bg remove all 30m + * -or- + * .deserter bg remove all -1 + * @endcode + */ static bool HandleDeserterRemoveAll(ChatHandler* handler, bool isInstance, Optional maxTime) { + uint32 deserterSpell = isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER; int32 remainTime = isInstance ? 1800 : 900; + uint64 deserterCount = 0; + bool countOnline = true; if (maxTime) { @@ -273,6 +335,7 @@ public: } } + // Optimization. Do not execute any further functions or Queries if remainTime is 0. if (remainTime == 0) { handler->SendSysMessage(LANG_BAD_VALUE); @@ -280,13 +343,33 @@ public: return false; } - if (remainTime < 0) + QueryResult result; + if (remainTime > 0) { - CharacterDatabase.Execute("DELETE FROM character_aura WHERE spell = {}", isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER); + result = CharacterDatabase.Query("SELECT COUNT(guid) FROM character_aura WHERE spell = {} AND remainTime <= {}", deserterSpell, remainTime * IN_MILLISECONDS); } else { - CharacterDatabase.Execute("DELETE FROM character_aura WHERE spell = {} AND remainTime <= {}", isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER, remainTime * IN_MILLISECONDS); + result = CharacterDatabase.Query("SELECT COUNT(guid) FROM character_aura WHERE spell = {}", deserterSpell); + } + + if (result) + { + deserterCount = (*result)[0].Get(); + } + + // Optimization. Only execute these if there even is a result. + if (deserterCount > 0) + { + countOnline = false; + if (remainTime > 0) + { + CharacterDatabase.Execute("DELETE FROM character_aura WHERE spell = {} AND remainTime <= {}", deserterSpell, remainTime * IN_MILLISECONDS); + } + else + { + CharacterDatabase.Execute("DELETE FROM character_aura WHERE spell = {}", deserterSpell); + } } std::shared_lock lock(*HashMapHolder::GetLock()); @@ -294,14 +377,28 @@ public: for (HashMapHolder::MapType::const_iterator itr = onlinePlayerList.begin(); itr != onlinePlayerList.end(); ++itr) { Player* player = itr->second; - Aura* aura = player->GetAura(isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER); + Aura* aura = player->GetAura(deserterSpell); if (aura && (remainTime < 0 || aura->GetDuration() <= remainTime * IN_MILLISECONDS)) { - player->RemoveAura(isInstance ? LFG_SPELL_DUNGEON_DESERTER : BG_SPELL_DESERTER); + if (countOnline) + deserterCount++; + player->RemoveAura(deserterSpell); } } - handler->PSendSysMessage("%s Deserter has been removed from all players", isInstance ? "Instance" : "Battleground"); + std::string remainTimeStr = secsToTimeString(remainTime); + if (remainTime < 0) + { + remainTimeStr = "infinity"; + } + + if (deserterCount == 0) + { + handler->PSendSysMessage("No player on this realm has %s Deserter with a duration of %s or less.", isInstance ? "Instance" : "Battleground", remainTimeStr); + return true; + } + + handler->PSendSysMessage("%s Deserter has been removed from %u player(s) with a duration of %s or less.", isInstance ? "Instance" : "Battleground", deserterCount, remainTimeStr); return true; } From 5e509344ac12ecffdf8581c000a374ddf45e5e5a Mon Sep 17 00:00:00 2001 From: r0m1ntik <40755539+r0m1ntik@users.noreply.github.com> Date: Fri, 1 Jul 2022 17:32:30 +0200 Subject: [PATCH 023/119] Fix command .skirmish (#12149) fix-issue-11966 Co-authored-by: Badanin Roman --- src/server/scripts/Commands/cs_misc.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 33ed6b6d1..d281236e9 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -143,9 +143,9 @@ public: return commandTable; } - static bool HandleSkirmishCommand(ChatHandler* handler, std::string_view args) + static bool HandleSkirmishCommand(ChatHandler* handler, std::vector args) { - auto tokens = Acore::Tokenize(args, ' ', true); + auto tokens = args; if (args.empty() || !tokens.size()) { From ae0ab2007780166e0e96e787ff4bbbd053f641c0 Mon Sep 17 00:00:00 2001 From: Nefertumm Date: Fri, 1 Jul 2022 12:35:15 -0300 Subject: [PATCH 024/119] fix(DB/ZulGurub): Remove taunt immunity from Mar'li (#12234) * fix(DB/ZulGurub): Remove taunt immunity from Mar'li and Gri'lek * Update rev_1656482750700107200.sql --- data/sql/updates/pending_db_world/rev_1656482750700107200.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656482750700107200.sql diff --git a/data/sql/updates/pending_db_world/rev_1656482750700107200.sql b/data/sql/updates/pending_db_world/rev_1656482750700107200.sql new file mode 100644 index 000000000..20fb2f140 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656482750700107200.sql @@ -0,0 +1,3 @@ +-- +-- Mar'li - Gri'lek +UPDATE `creature_template` SET `flags_extra`=`flags_extra`&~256 WHERE `entry` = 14510; From 39d751d2f35b626370095e292f0fb72ded389777 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 1 Jul 2022 15:37:26 +0000 Subject: [PATCH 025/119] chore(DB): import pending files Referenced commit(s): ae0ab2007780166e0e96e787ff4bbbd053f641c0 --- .../rev_1656482750700107200.sql => db_world/2022_07_01_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656482750700107200.sql => db_world/2022_07_01_00.sql} (71%) diff --git a/data/sql/updates/pending_db_world/rev_1656482750700107200.sql b/data/sql/updates/db_world/2022_07_01_00.sql similarity index 71% rename from data/sql/updates/pending_db_world/rev_1656482750700107200.sql rename to data/sql/updates/db_world/2022_07_01_00.sql index 20fb2f140..bd4778791 100644 --- a/data/sql/updates/pending_db_world/rev_1656482750700107200.sql +++ b/data/sql/updates/db_world/2022_07_01_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_06_30_00 -> 2022_07_01_00 -- -- Mar'li - Gri'lek UPDATE `creature_template` SET `flags_extra`=`flags_extra`&~256 WHERE `entry` = 14510; From 5ce632754d6cc9cb2535b08746403108251c2c54 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Fri, 1 Jul 2022 09:38:30 -0600 Subject: [PATCH 026/119] fix(DB/Scripts): Greater Windstone Bosses (#12247) --- data/sql/updates/pending_db_world/rev_1656632586022126700.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656632586022126700.sql diff --git a/data/sql/updates/pending_db_world/rev_1656632586022126700.sql b/data/sql/updates/pending_db_world/rev_1656632586022126700.sql new file mode 100644 index 000000000..a46023fc4 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656632586022126700.sql @@ -0,0 +1,2 @@ +-- +UPDATE `smart_scripts` SET `event_param1` = 5000, `event_param2` = 5000 WHERE `entryorguid` IN (15203, 15204, 15205, 15305) AND `event_type` = 1; From b866c470d63644ad09f5b7d469f52dd9eb78303a Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 1 Jul 2022 15:40:53 +0000 Subject: [PATCH 027/119] chore(DB): import pending files Referenced commit(s): 5ce632754d6cc9cb2535b08746403108251c2c54 --- .../rev_1656632586022126700.sql => db_world/2022_07_01_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656632586022126700.sql => db_world/2022_07_01_01.sql} (77%) diff --git a/data/sql/updates/pending_db_world/rev_1656632586022126700.sql b/data/sql/updates/db_world/2022_07_01_01.sql similarity index 77% rename from data/sql/updates/pending_db_world/rev_1656632586022126700.sql rename to data/sql/updates/db_world/2022_07_01_01.sql index a46023fc4..a0933a730 100644 --- a/data/sql/updates/pending_db_world/rev_1656632586022126700.sql +++ b/data/sql/updates/db_world/2022_07_01_01.sql @@ -1,2 +1,3 @@ +-- DB update 2022_07_01_00 -> 2022_07_01_01 -- UPDATE `smart_scripts` SET `event_param1` = 5000, `event_param2` = 5000 WHERE `entryorguid` IN (15203, 15204, 15205, 15305) AND `event_type` = 1; From 298b08c9a593b3ab638dbf4261589bc42391dac5 Mon Sep 17 00:00:00 2001 From: Nefertumm Date: Fri, 1 Jul 2022 15:22:13 -0300 Subject: [PATCH 028/119] fix(Core/ZulGurub): Hazza'rah improvements (#12236) * fix(Core/ZulGurub): Hazza'rah improvements * dumb --- .../rev_1656487501551472500.sql | 2 + .../game/Spells/SpellInfoCorrections.cpp | 6 + .../ZulGurub/boss_hazzarah.cpp | 153 +++++++++--------- 3 files changed, 80 insertions(+), 81 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1656487501551472500.sql diff --git a/data/sql/updates/pending_db_world/rev_1656487501551472500.sql b/data/sql/updates/pending_db_world/rev_1656487501551472500.sql new file mode 100644 index 000000000..65ee0b67c --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656487501551472500.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `DamageModifier` = 26 WHERE `entry` = 15163; diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 985ead07c..95de9e7cb 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4295,6 +4295,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Dispel = DISPEL_NONE; }); + // Summon Nightmare Illusions + ApplySpellFix({ 24681, 24728, 24729 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_0].MiscValueB = 64; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp index d475bd966..be9b57e66 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hazzarah.cpp @@ -15,13 +15,6 @@ * with this program. If not, see . */ -/* ScriptData -SDName: Boss_Hazzarah -SD%Complete: 100 -SDComment: -SDCategory: Zul'Gurub -EndScriptData */ - #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "SpellScript.h" @@ -45,100 +38,98 @@ enum Events EVENT_ILLUSIONS = 4 }; -class boss_hazzarah : public CreatureScript +struct boss_hazzarah : public BossAI { -public: - boss_hazzarah() : CreatureScript("boss_hazzarah") { } + boss_hazzarah(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) { } - struct boss_hazzarahAI : public BossAI + void JustSummoned(Creature* summon) override { - boss_hazzarahAI(Creature* creature) : BossAI(creature, DATA_EDGE_OF_MADNESS) { } + summons.Summon(summon); - void JustSummoned(Creature* summon) override - { - summons.Summon(summon); - - summon->SetCorpseDelay(10); - summon->SetReactState(REACT_PASSIVE); - summon->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE); - summon->SetVisible(false); - summon->m_Events.AddEventAtOffset([summon]() + summon->SetCorpseDelay(10); + summon->SetReactState(REACT_PASSIVE); + summon->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE); + summon->SetVisible(false); + summon->m_Events.AddEventAtOffset([summon]() { summon->SetVisible(true); }, 2s); - summon->m_Events.AddEventAtOffset([summon]() + summon->m_Events.AddEventAtOffset([summon]() { summon->RemoveUnitFlag(UNIT_FLAG_DISABLE_MOVE); summon->SetReactState(REACT_AGGRESSIVE); summon->SetInCombatWithZone(); - }, 3500ms); - } + }, 5s); + } - void EnterCombat(Unit* /*who*/) override + void SummonedCreatureDies(Creature* summon, Unit* /*killer*/) override + { + summons.Despawn(summon); + summon->DespawnOrUnsummon(); + } + + void EnterCombat(Unit* /*who*/) override + { + _EnterCombat(); + events.ScheduleEvent(EVENT_SLEEP, 12s, 15s); + events.ScheduleEvent(EVENT_EARTH_SHOCK, 8s, 18s); + events.ScheduleEvent(EVENT_CHAIN_BURN, 12s, 28s); + events.ScheduleEvent(EVENT_ILLUSIONS, 16s, 24s); + } + + bool CanAIAttack(Unit const* target) const override + { + if (me->GetThreatMgr().getThreatList().size() > 1 && me->GetThreatMgr().getOnlineContainer().getMostHated()->getTarget() == target) + return !target->HasAura(SPELL_SLEEP); + + return true; + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) { - _EnterCombat(); - events.ScheduleEvent(EVENT_SLEEP, 12s, 15s); - events.ScheduleEvent(EVENT_EARTH_SHOCK, 8s, 18s); - events.ScheduleEvent(EVENT_CHAIN_BURN, 12s, 28s); - events.ScheduleEvent(EVENT_ILLUSIONS, 16s, 24s); - } - - bool CanAIAttack(Unit const* target) const override - { - if (me->GetThreatMgr().getThreatList().size() > 1 && me->GetThreatMgr().getOnlineContainer().getMostHated()->getTarget() == target) - return !target->HasAura(SPELL_SLEEP); - - return true; - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - while (uint32 eventId = events.ExecuteEvent()) + switch (eventId) { - switch (eventId) - { - case EVENT_SLEEP: - DoCastVictim(SPELL_SLEEP, true); - events.ScheduleEvent(EVENT_SLEEP, 24s, 32s); - return; - case EVENT_EARTH_SHOCK: - DoCastVictim(SPELL_EARTH_SHOCK); - events.ScheduleEvent(EVENT_EARTH_SHOCK, 8s, 18s); - break; - case EVENT_CHAIN_BURN: + case EVENT_SLEEP: + DoCastVictim(SPELL_SLEEP, true); + events.ScheduleEvent(EVENT_SLEEP, 24s, 32s); + return; + case EVENT_EARTH_SHOCK: + DoCastVictim(SPELL_EARTH_SHOCK); + events.ScheduleEvent(EVENT_EARTH_SHOCK, 8s, 18s); + break; + case EVENT_CHAIN_BURN: + if (me->GetPowerPct(POWER_MANA) > 5.f) // totally guessed + { if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, [&](Unit* u) { return u && !u->IsPet() && u->getPowerType() == POWER_MANA; })) { - DoCast(target, SPELL_CHAIN_BURN, false); + DoCast(target, SPELL_CHAIN_BURN); } - events.ScheduleEvent(EVENT_CHAIN_BURN, 12s, 28s); - break; - case EVENT_ILLUSIONS: - DoCastSelf(SPELL_SUMMON_NIGHTMARE_ILLUSION_LEFT, true); - DoCastSelf(SPELL_SUMMON_NIGHTMARE_ILLUSION_BACK, true); - DoCastSelf(SPELL_SUMMON_NIGHTMARE_ILLUSION_RIGHT, true); - events.ScheduleEvent(EVENT_ILLUSIONS, 16s, 24s); - break; - default: - break; - } + } + events.ScheduleEvent(EVENT_CHAIN_BURN, 12s, 28s); + break; + case EVENT_ILLUSIONS: + DoCastSelf(SPELL_SUMMON_NIGHTMARE_ILLUSION_LEFT, true); + DoCastSelf(SPELL_SUMMON_NIGHTMARE_ILLUSION_BACK, true); + DoCastSelf(SPELL_SUMMON_NIGHTMARE_ILLUSION_RIGHT, true); + events.ScheduleEvent(EVENT_ILLUSIONS, 15s, 25s); + break; + default: + break; } - - DoMeleeAttackIfReady(); } - }; - CreatureAI* GetAI(Creature* creature) const override - { - return GetZulGurubAI(creature); + DoMeleeAttackIfReady(); } }; @@ -164,6 +155,6 @@ class spell_chain_burn : public SpellScript void AddSC_boss_hazzarah() { - new boss_hazzarah(); + RegisterZulGurubCreatureAI(boss_hazzarah); RegisterSpellScript(spell_chain_burn); } From 2fd98c2bbc0a42ebe10b2fcda1a0e171492570d6 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 1 Jul 2022 18:24:14 +0000 Subject: [PATCH 029/119] chore(DB): import pending files Referenced commit(s): 298b08c9a593b3ab638dbf4261589bc42391dac5 --- .../rev_1656487501551472500.sql => db_world/2022_07_01_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656487501551472500.sql => db_world/2022_07_01_02.sql} (64%) diff --git a/data/sql/updates/pending_db_world/rev_1656487501551472500.sql b/data/sql/updates/db_world/2022_07_01_02.sql similarity index 64% rename from data/sql/updates/pending_db_world/rev_1656487501551472500.sql rename to data/sql/updates/db_world/2022_07_01_02.sql index 65ee0b67c..787ea78ae 100644 --- a/data/sql/updates/pending_db_world/rev_1656487501551472500.sql +++ b/data/sql/updates/db_world/2022_07_01_02.sql @@ -1,2 +1,3 @@ +-- DB update 2022_07_01_01 -> 2022_07_01_02 -- UPDATE `creature_template` SET `DamageModifier` = 26 WHERE `entry` = 15163; From 7df342b41c81d6a412a07fa902cc324e8bae9711 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Fri, 1 Jul 2022 14:24:01 -0600 Subject: [PATCH 030/119] fix(Scripts): Midsummer Music Range (#12248) * fix(Scripts): Midsummer Music Range * Refactor iterating nearby players Co-authored-by: Nefertumm * Update go_scripts.cpp * Update go_scripts.cpp Co-authored-by: Nefertumm --- src/server/scripts/World/go_scripts.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp index 2109d7265..d14a994e5 100644 --- a/src/server/scripts/World/go_scripts.cpp +++ b/src/server/scripts/World/go_scripts.cpp @@ -821,19 +821,19 @@ public: if (!IsHolidayActive(HOLIDAY_FIRE_FESTIVAL)) break; - Map::PlayerList const& players = me->GetMap()->GetPlayers(); - for (Map::PlayerList::const_iterator itr = players.begin(); itr != players.end(); ++itr) + std::list targets; + Acore::AnyPlayerInObjectRangeCheck check(me, me->GetVisibilityRange(), false); + Acore::PlayerListSearcherWithSharedVision searcher(me, targets, check); + Cell::VisitWorldObjects(me, searcher, me->GetVisibilityRange()); + for (Player* player : targets) { - if (Player* player = itr->GetSource()) + if (player->GetTeamId() == TEAM_HORDE) { - if (player->GetTeamId() == TEAM_HORDE) - { - me->PlayDirectMusic(EVENTMIDSUMMERFIREFESTIVAL_H, player); - } - else - { - me->PlayDirectMusic(EVENTMIDSUMMERFIREFESTIVAL_A, player); - } + me->PlayDirectMusic(EVENTMIDSUMMERFIREFESTIVAL_H, player); + } + else + { + me->PlayDirectMusic(EVENTMIDSUMMERFIREFESTIVAL_A, player); } } From 211a6d4c0871be619315b7313bb11d248bb2318c Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Fri, 1 Jul 2022 17:50:40 -0300 Subject: [PATCH 031/119] fix(DB/Creature) Add CTM to 4 flying creatures (#12182) * Create ctm_1.sql * Update ctm_1.sql * Update ctm_1.sql --- data/sql/updates/pending_db_world/ctm_1.sql | 6 ++++++ 1 file changed, 6 insertions(+) create mode 100644 data/sql/updates/pending_db_world/ctm_1.sql diff --git a/data/sql/updates/pending_db_world/ctm_1.sql b/data/sql/updates/pending_db_world/ctm_1.sql new file mode 100644 index 000000000..bf6d1c137 --- /dev/null +++ b/data/sql/updates/pending_db_world/ctm_1.sql @@ -0,0 +1,6 @@ +-- +DELETE FROM `creature_template_movement` WHERE `CreatureId` IN (15242, 18707, 22441, 8276); +INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`) VALUES (15242, 1, 0, 1, 0, 0, 0), +(18707, 1, 0, 1, 0, 0, 0), +(22441, 1, 0, 1, 0, 0, 0), +(8276, 1, 0, 1, 0, 0, 0); From cd576790c9240717fe2e8bfe97c20b9c0c48b53a Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Fri, 1 Jul 2022 20:52:42 +0000 Subject: [PATCH 032/119] chore(DB): import pending files Referenced commit(s): 211a6d4c0871be619315b7313bb11d248bb2318c --- .../{pending_db_world/ctm_1.sql => db_world/2022_07_01_03.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/ctm_1.sql => db_world/2022_07_01_03.sql} (87%) diff --git a/data/sql/updates/pending_db_world/ctm_1.sql b/data/sql/updates/db_world/2022_07_01_03.sql similarity index 87% rename from data/sql/updates/pending_db_world/ctm_1.sql rename to data/sql/updates/db_world/2022_07_01_03.sql index bf6d1c137..2cb1c048c 100644 --- a/data/sql/updates/pending_db_world/ctm_1.sql +++ b/data/sql/updates/db_world/2022_07_01_03.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_01_02 -> 2022_07_01_03 -- DELETE FROM `creature_template_movement` WHERE `CreatureId` IN (15242, 18707, 22441, 8276); INSERT INTO `creature_template_movement` (`CreatureId`, `Ground`, `Swim`, `Flight`, `Rooted`, `Chase`, `Random`) VALUES (15242, 1, 0, 1, 0, 0, 0), From 8de594e0005c1a52c3a4407b153d472b2e134891 Mon Sep 17 00:00:00 2001 From: IntelligentQuantum Date: Sat, 2 Jul 2022 17:41:37 +0430 Subject: [PATCH 033/119] feat(Core/Scripts): Added Boundary in Azjol nerub (#12159) --- .../AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) 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 9c529ca8c..55fa7d7c5 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/instance_azjol_nerub.cpp @@ -15,6 +15,7 @@ * with this program. If not, see . */ +#include "AreaBoundary.h" #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "azjol_nerub.h" @@ -34,6 +35,13 @@ ObjectData const creatureData[] = { NPC_HADRONOX, DATA_HADRONOX_EVENT } }; +BossBoundaryData const boundaries = +{ + { DATA_KRIKTHIR_THE_GATEWATCHER_EVENT, new RectangleBoundary(400.0f, 580.0f, 623.5f, 810.0f) }, + { DATA_HADRONOX_EVENT, new ZRangeBoundary(666.0f, 776.0f) }, + { DATA_ANUBARAK_EVENT, new CircleBoundary(Position(550.6178f, 253.5917f), 26.0f) } +}; + class instance_azjol_nerub : public InstanceMapScript { public: @@ -44,6 +52,7 @@ public: instance_azjol_nerub_InstanceScript(Map* map) : InstanceScript(map) { SetBossNumber(MAX_ENCOUNTERS); + LoadBossBoundaries(boundaries); LoadDoorData(doorData); LoadObjectData(creatureData, nullptr); }; From 16f2983307aeeb39bd263e3e923c93c16488444f Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 2 Jul 2022 13:37:56 -0300 Subject: [PATCH 034/119] fix(Scripts/ZulGurub): Thekal improvements (#12238) * fix(Scripts/ZulGurub): Thekal improvements * Update boss_thekal.cpp --- .../rev_1656502396301969700.sql | 5 + src/server/game/Entities/Creature/Creature.h | 2 - .../EasternKingdoms/ZulGurub/boss_thekal.cpp | 93 +++++++------------ .../ZulGurub/instance_zulgurub.cpp | 1 - 4 files changed, 38 insertions(+), 63 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1656502396301969700.sql diff --git a/data/sql/updates/pending_db_world/rev_1656502396301969700.sql b/data/sql/updates/pending_db_world/rev_1656502396301969700.sql new file mode 100644 index 000000000..1424f51c7 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656502396301969700.sql @@ -0,0 +1,5 @@ +-- +DELETE FROM `creature_formations` WHERE `memberGUID` IN (49313, 49314); +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(49310, 49313, 0, 0, 27, 0, 0), +(49310, 49314, 0, 0, 27, 0, 0); diff --git a/src/server/game/Entities/Creature/Creature.h b/src/server/game/Entities/Creature/Creature.h index e132b7ffb..e404dcc83 100644 --- a/src/server/game/Entities/Creature/Creature.h +++ b/src/server/game/Entities/Creature/Creature.h @@ -384,8 +384,6 @@ public: void ModifyThreatPercentTemp(Unit* victim, int32 percent, Milliseconds duration); - void ResetFaction() { SetFaction(GetCreatureTemplate()->faction); } - protected: bool CreateFromProto(ObjectGuid::LowType guidlow, uint32 Entry, uint32 vehId, const CreatureData* data = nullptr); bool InitEntry(uint32 entry, const CreatureData* data = nullptr); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index c646774b6..de71c138f 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -71,9 +71,6 @@ public: Initialize(); } - bool Enraged; - bool WasDead; - void Initialize() { Enraged = false; @@ -90,17 +87,16 @@ public: me->SetStandState(UNIT_STAND_STATE_STAND); me->SetReactState(REACT_AGGRESSIVE); me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->LoadEquipment(1, true); if (Creature* zealot = instance->GetCreature(DATA_LORKHAN)) { zealot->AI()->Reset(); - zealot->ResetFaction(); } if (Creature* zealot = instance->GetCreature(DATA_ZATH)) { zealot->AI()->Reset(); - zealot->ResetFaction(); } _scheduler.SetValidator([this] @@ -157,16 +153,21 @@ public: void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType, SpellSchoolMask) override { - if (!WasDead && damage >= me->GetHealth()) + if (me->GetEntry() == NPC_HIGH_PRIEST_THEKAL && damage >= me->GetHealth()) { damage = me->GetHealth() - 1; - me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); - me->SetReactState(REACT_PASSIVE); - me->SetStandState(UNIT_STAND_STATE_SLEEP); - me->AttackStop(); - WasDead = true; - CheckPhaseTransition(); - Talk(EMOTE_THEKAL_DIES); + + if (!WasDead) + { + me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->SetReactState(REACT_PASSIVE); + me->SetStandState(UNIT_STAND_STATE_SLEEP); + me->AttackStop(); + DoResetThreat(); + WasDead = true; + CheckPhaseTransition(); + Talk(EMOTE_THEKAL_DIES); + } } if (!Enraged && me->HealthBelowPctDamaged(20, damage) && me->GetEntry() != NPC_HIGH_PRIEST_THEKAL) @@ -182,7 +183,7 @@ public: { me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - me->ResetFaction(); + me->RestoreFaction(); me->SetReactState(REACT_AGGRESSIVE); me->SetFullHealth(); WasDead = false; @@ -202,11 +203,7 @@ public: { if (Creature* zealot = instance->GetCreature(zealotData)) { - zealot->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - zealot->ResetFaction(); - zealot->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - zealot->SetReactState(REACT_AGGRESSIVE); - zealot->SetFullHealth(); + zealot->Respawn(true); UpdateZealotStatus(zealotData, false); } } @@ -231,10 +228,10 @@ public: Talk(SAY_AGGRO); me->SetStandState(UNIT_STAND_STATE_STAND); me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - DoResetThreat(); _scheduler.Schedule(6s, [this](TaskContext /*context*/) { DoCastSelf(SPELL_TIGER_FORM); + me->LoadEquipment(0, true); me->SetReactState(REACT_AGGRESSIVE); _scheduler.Schedule(30s, [this](TaskContext context) { @@ -261,7 +258,10 @@ public: else { _scheduler.Schedule(10s, [this](TaskContext /*context*/) { - DoAction(ACTION_RESSURRECT); + if (!(WasDead && _lorkhanDied && _zathDied)) + { + DoAction(ACTION_RESSURRECT); + } }); } } @@ -271,6 +271,8 @@ public: GuidVector _catGuids; bool _lorkhanDied; bool _zathDied; + bool Enraged; + bool WasDead; }; CreatureAI* GetAI(Creature* creature) const override @@ -295,10 +297,6 @@ public: void Reset() override { - me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0); - me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - me->SetReactState(REACT_AGGRESSIVE); - _scheduler.CancelAll(); _scheduler.SetValidator([this] @@ -339,24 +337,13 @@ public: }); } - void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType, SpellSchoolMask) override + void JustDied(Unit* /*killer*/) override { - if (damage >= me->GetHealth() && me->HasReactState(REACT_AGGRESSIVE)) + Talk(EMOTE_ZEALOT_DIES); + + if (Creature* thekal = instance->GetCreature(DATA_THEKAL)) { - Talk(EMOTE_ZEALOT_DIES); - me->RemoveAllAuras(); - me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - me->SetStandState(UNIT_STAND_STATE_SLEEP); - me->SetReactState(REACT_PASSIVE); - me->InterruptNonMeleeSpells(false); - me->AttackStop(); - - damage = 0; - - if (Creature* thekal = instance->GetCreature(DATA_THEKAL)) - { - thekal->AI()->SetData(ACTION_RESSURRECT, DATA_LORKHAN); - } + thekal->AI()->SetData(ACTION_RESSURRECT, DATA_LORKHAN); } } @@ -395,10 +382,6 @@ public: void Reset() override { - me->SetStandState(UNIT_STAND_STATE_STAND); - me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - me->SetReactState(REACT_AGGRESSIVE); - _scheduler.CancelAll(); _scheduler.SetValidator([this] @@ -436,23 +419,13 @@ public: }); } - void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType, SpellSchoolMask) override + void JustDied(Unit* /*killer*/) override { - if (damage >= me->GetHealth() && me->HasReactState(REACT_AGGRESSIVE)) + Talk(EMOTE_ZEALOT_DIES); + + if (Creature* thekal = instance->GetCreature(DATA_THEKAL)) { - Talk(EMOTE_ZEALOT_DIES); - me->RemoveAllAuras(); - me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE); - me->SetStandState(UNIT_STAND_STATE_SLEEP); - me->SetReactState(REACT_PASSIVE); - me->AttackStop(); - - damage = 0; - - if (Creature* thekal = instance->GetCreature(DATA_THEKAL)) - { - thekal->AI()->SetData(ACTION_RESSURRECT, DATA_ZATH); - } + thekal->AI()->SetData(ACTION_RESSURRECT, DATA_ZATH); } } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index 2cab32c31..325dd749c 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -51,7 +51,6 @@ public: instance_zulgurub_InstanceMapScript(Map* map) : InstanceScript(map) { SetBossNumber(EncounterCount); - LoadObjectData(creatureData, nullptr); LoadDoorData(doorData); LoadObjectData(creatureData, nullptr); } From 8aa74a23b36bd8d129b68ed2186f458c4e6a758c Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 2 Jul 2022 16:39:52 +0000 Subject: [PATCH 035/119] chore(DB): import pending files Referenced commit(s): 16f2983307aeeb39bd263e3e923c93c16488444f --- .../rev_1656502396301969700.sql => db_world/2022_07_02_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656502396301969700.sql => db_world/2022_07_02_00.sql} (85%) diff --git a/data/sql/updates/pending_db_world/rev_1656502396301969700.sql b/data/sql/updates/db_world/2022_07_02_00.sql similarity index 85% rename from data/sql/updates/pending_db_world/rev_1656502396301969700.sql rename to data/sql/updates/db_world/2022_07_02_00.sql index 1424f51c7..247f6bd61 100644 --- a/data/sql/updates/pending_db_world/rev_1656502396301969700.sql +++ b/data/sql/updates/db_world/2022_07_02_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_01_03 -> 2022_07_02_00 -- DELETE FROM `creature_formations` WHERE `memberGUID` IN (49313, 49314); INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES From 5282ef7ff8e3039b5d3606ded7072fa4b64b1c3f Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 2 Jul 2022 19:51:00 +0200 Subject: [PATCH 036/119] fix(DB/Quest): Fixed getting kill credit for quest "A Delicate Touch" (#12272) Fixes #12210 --- data/sql/updates/pending_db_world/rev_1656776031584499100.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656776031584499100.sql diff --git a/data/sql/updates/pending_db_world/rev_1656776031584499100.sql b/data/sql/updates/pending_db_world/rev_1656776031584499100.sql new file mode 100644 index 000000000..6f0091bfc --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656776031584499100.sql @@ -0,0 +1,3 @@ +-- +UPDATE `creature_template` SET `flags_extra`=`flags_extra`|0x00200000 WHERE `entry` IN (29618,29619); +UPDATE `smart_scripts` SET `target_type`=23 WHERE `entryorguid`=29475 AND `source_type`=0 AND `id` IN (2,3); From ea453acec0f1b55f6e641b372641931d5010acec Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 2 Jul 2022 17:53:03 +0000 Subject: [PATCH 037/119] chore(DB): import pending files Referenced commit(s): 5282ef7ff8e3039b5d3606ded7072fa4b64b1c3f --- .../rev_1656776031584499100.sql => db_world/2022_07_02_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656776031584499100.sql => db_world/2022_07_02_01.sql} (82%) diff --git a/data/sql/updates/pending_db_world/rev_1656776031584499100.sql b/data/sql/updates/db_world/2022_07_02_01.sql similarity index 82% rename from data/sql/updates/pending_db_world/rev_1656776031584499100.sql rename to data/sql/updates/db_world/2022_07_02_01.sql index 6f0091bfc..50f873011 100644 --- a/data/sql/updates/pending_db_world/rev_1656776031584499100.sql +++ b/data/sql/updates/db_world/2022_07_02_01.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_02_00 -> 2022_07_02_01 -- UPDATE `creature_template` SET `flags_extra`=`flags_extra`|0x00200000 WHERE `entry` IN (29618,29619); UPDATE `smart_scripts` SET `target_type`=23 WHERE `entryorguid`=29475 AND `source_type`=0 AND `id` IN (2,3); From e1e4c6cddc44971054c61df1a884ac7c795c8b73 Mon Sep 17 00:00:00 2001 From: Meramaf <76571216+Meramaf@users.noreply.github.com> Date: Sat, 2 Jul 2022 22:30:58 +0200 Subject: [PATCH 038/119] Script/Spell: fix Midsummer's Juggling Torch (#12198) * Script/Spell: fix Midsummer's Juggling Torch * Update juggling_torch_fix.sql * Update data/sql/updates/pending_db_world/juggling_torch_fix.sql Co-authored-by: Nefertumm * Update midsummer.cpp Co-authored-by: Nefertumm --- .../pending_db_world/juggling_torch_fix.sql | 3 ++ src/server/scripts/Events/midsummer.cpp | 34 ++++++++++++++++++- 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 data/sql/updates/pending_db_world/juggling_torch_fix.sql diff --git a/data/sql/updates/pending_db_world/juggling_torch_fix.sql b/data/sql/updates/pending_db_world/juggling_torch_fix.sql new file mode 100644 index 000000000..aa85b3bd0 --- /dev/null +++ b/data/sql/updates/pending_db_world/juggling_torch_fix.sql @@ -0,0 +1,3 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` = 45644; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(45644, "spell_midsummer_torch_catch"); diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp index 66e217d0c..3fe6b35e1 100644 --- a/src/server/scripts/Events/midsummer.cpp +++ b/src/server/scripts/Events/midsummer.cpp @@ -453,7 +453,8 @@ enum eJuggle SPELL_TORCH_CHECK = 45644, SPELL_GIVE_TORCH = 45280, - QUEST_CHECK = 11937, + QUEST_TORCH_CATCHING_A = 11657, + QUEST_TORCH_CATCHING_H = 11923 }; class spell_midsummer_juggling_torch : public SpellScript @@ -507,6 +508,36 @@ class spell_midsummer_juggling_torch : public SpellScript } }; +// 45644 - Juggle Torch (Catch) +class spell_midsummer_torch_catch : public SpellScript +{ + PrepareSpellScript(spell_midsummer_torch_catch); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_GIVE_TORCH }); + } + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + Player* player = GetHitPlayer(); + if (!player) + { + return; + } + + if (player->GetQuestStatus(QUEST_TORCH_CATCHING_A) == QUEST_STATUS_REWARDED || player->GetQuestStatus(QUEST_TORCH_CATCHING_H) == QUEST_STATUS_REWARDED) + { + player->CastSpell(player, SPELL_GIVE_TORCH); + } + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_midsummer_torch_catch::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_event_midsummer_scripts() { // NPCs @@ -520,4 +551,5 @@ void AddSC_event_midsummer_scripts() RegisterSpellScript(spell_midsummer_torch_quest); RegisterSpellScript(spell_midsummer_fling_torch); RegisterSpellScript(spell_midsummer_juggling_torch); + RegisterSpellScript(spell_midsummer_torch_catch); } From 0de832cdca8bd109a87bb0a59dea579b8daf7788 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 2 Jul 2022 20:32:56 +0000 Subject: [PATCH 039/119] chore(DB): import pending files Referenced commit(s): e1e4c6cddc44971054c61df1a884ac7c795c8b73 --- .../juggling_torch_fix.sql => db_world/2022_07_02_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/juggling_torch_fix.sql => db_world/2022_07_02_02.sql} (79%) diff --git a/data/sql/updates/pending_db_world/juggling_torch_fix.sql b/data/sql/updates/db_world/2022_07_02_02.sql similarity index 79% rename from data/sql/updates/pending_db_world/juggling_torch_fix.sql rename to data/sql/updates/db_world/2022_07_02_02.sql index aa85b3bd0..4b26ebfb3 100644 --- a/data/sql/updates/pending_db_world/juggling_torch_fix.sql +++ b/data/sql/updates/db_world/2022_07_02_02.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_02_01 -> 2022_07_02_02 DELETE FROM `spell_script_names` WHERE `spell_id` = 45644; INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES (45644, "spell_midsummer_torch_catch"); From 70a77d9dda6d5b5c2efdff8f513680344778d23b Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 16:33:33 +0200 Subject: [PATCH 040/119] =?UTF-8?q?fix(DB/SAI):=20Fixed=20completing=20"Ir?= =?UTF-8?q?on=20Rune=20Constructs=20and=20You:=20The=20Bluf=E2=80=A6=20(#1?= =?UTF-8?q?2299)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(DB/SAI): Fixed completing "Iron Rune Constructs and You: The Bluff" quest. Fixes #12237 --- data/sql/updates/pending_db_world/rev_1656850805352764600.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656850805352764600.sql diff --git a/data/sql/updates/pending_db_world/rev_1656850805352764600.sql b/data/sql/updates/pending_db_world/rev_1656850805352764600.sql new file mode 100644 index 000000000..78762e44c --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656850805352764600.sql @@ -0,0 +1,3 @@ +-- +UPDATE `smart_scripts` SET `event_flags`=512 WHERE `entryorguid`=24823 AND `source_type`=0; +UPDATE `smart_scripts` SET `event_phase_mask`=0, `event_param3`=5000, `event_param4`=5000 WHERE `entryorguid`=24718 AND `source_type`=0 AND `id`=1; From a87860dd7fde9adc610e92b10ae8215aaf760e90 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 3 Jul 2022 14:35:42 +0000 Subject: [PATCH 041/119] chore(DB): import pending files Referenced commit(s): 70a77d9dda6d5b5c2efdff8f513680344778d23b --- .../rev_1656850805352764600.sql => db_world/2022_07_03_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656850805352764600.sql => db_world/2022_07_03_00.sql} (84%) diff --git a/data/sql/updates/pending_db_world/rev_1656850805352764600.sql b/data/sql/updates/db_world/2022_07_03_00.sql similarity index 84% rename from data/sql/updates/pending_db_world/rev_1656850805352764600.sql rename to data/sql/updates/db_world/2022_07_03_00.sql index 78762e44c..465971ea5 100644 --- a/data/sql/updates/pending_db_world/rev_1656850805352764600.sql +++ b/data/sql/updates/db_world/2022_07_03_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_02_02 -> 2022_07_03_00 -- UPDATE `smart_scripts` SET `event_flags`=512 WHERE `entryorguid`=24823 AND `source_type`=0; UPDATE `smart_scripts` SET `event_phase_mask`=0, `event_param3`=5000, `event_param4`=5000 WHERE `entryorguid`=24718 AND `source_type`=0 AND `id`=1; From 0a71a46c50da51bafe4ab6b5bf6b9ca4f1c83b7d Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 16:35:51 +0200 Subject: [PATCH 042/119] fix(Core/Spells): Place Fake Fur should activate Caribou Trap. (#12297) Fixes #12226 --- src/server/game/Spells/SpellInfoCorrections.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 95de9e7cb..546057bbc 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4301,6 +4301,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].MiscValueB = 64; }); + // Place Fake Fur + ApplySpellFix({ 46085 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_0].MiscValue = 8; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; From 44094613b57a6cc561d11fc84d1611f780bec0f0 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 16:37:02 +0200 Subject: [PATCH 043/119] fix(Core): Crashfix. (#12296) --- .../scripts/Northrend/zone_howling_fjord.cpp | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index 786b7b5a3..94379e484 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -125,20 +125,27 @@ public: { if (HealthBelowPct(50) && !health50) { - WorldObject* summoner = nullptr; if (TempSummon const* tempSummon = me->ToTempSummon()) { - summoner = tempSummon->GetSummonerUnit(); + if (WorldObject* summoner = tempSummon->GetSummonerUnit()) + { + Talk(SAY_TURMOIL_HALF_HP, summoner); + } } - Talk(SAY_TURMOIL_HALF_HP, summoner); health50 = true; } } void JustDied(Unit* /*killer*/) override { - Talk(SAY_TURMOIL_DEATH, me->ToTempSummon()->GetSummonerUnit()->ToPlayer()); + if (TempSummon const* tempSummon = me->ToTempSummon()) + { + if (WorldObject* summoner = tempSummon->GetSummonerUnit()) + { + Talk(SAY_TURMOIL_DEATH, summoner); + } + } } void setphase(short newPhase) From b76b6c4e2fde1811896ea78f5ef1061e19903736 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 16:38:38 +0200 Subject: [PATCH 044/119] =?UTF-8?q?fix(DB/SAI):=20Plague=20Cauldron=20Targ?= =?UTF-8?q?et=20should=20remove=20all=20auras=20on=20event=20=E2=80=A6=20(?= =?UTF-8?q?#12294)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(DB/SAI): Plague Cauldron Target should remove all auras on event completion. Fixes #12221 --- data/sql/updates/pending_db_world/rev_1656841188208731500.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656841188208731500.sql diff --git a/data/sql/updates/pending_db_world/rev_1656841188208731500.sql b/data/sql/updates/pending_db_world/rev_1656841188208731500.sql new file mode 100644 index 000000000..7230a11c2 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656841188208731500.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `smart_scripts` WHERE `entryorguid`=3177300 AND `source_type`=9 AND `id`=46; +INSERT INTO `smart_scripts` VALUES +(3177300,9,46,0,0,0,100,0,0,0,0,0,0,28,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,'Script9 - Remove all auras'); From d0b3f1e1c61ff6aaac9bf28a5c6704948acf521f Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 3 Jul 2022 14:40:32 +0000 Subject: [PATCH 045/119] chore(DB): import pending files Referenced commit(s): b76b6c4e2fde1811896ea78f5ef1061e19903736 --- .../rev_1656841188208731500.sql => db_world/2022_07_03_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656841188208731500.sql => db_world/2022_07_03_01.sql} (83%) diff --git a/data/sql/updates/pending_db_world/rev_1656841188208731500.sql b/data/sql/updates/db_world/2022_07_03_01.sql similarity index 83% rename from data/sql/updates/pending_db_world/rev_1656841188208731500.sql rename to data/sql/updates/db_world/2022_07_03_01.sql index 7230a11c2..26277ddb2 100644 --- a/data/sql/updates/pending_db_world/rev_1656841188208731500.sql +++ b/data/sql/updates/db_world/2022_07_03_01.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_03_00 -> 2022_07_03_01 -- DELETE FROM `smart_scripts` WHERE `entryorguid`=3177300 AND `source_type`=9 AND `id`=46; INSERT INTO `smart_scripts` VALUES From f818016bf65a847e18bf91c5c2dca5667c5a4333 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 16:47:42 +0200 Subject: [PATCH 046/119] =?UTF-8?q?fix(DB/SAI):=20Fixed=20Blight=20Geist?= =?UTF-8?q?=20not=20collecting=20crystal=20while=20being=20ch=E2=80=A6=20(?= =?UTF-8?q?#12292)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(DB/SAI): Fixed Blight Geist not collecting crystal while being charmed. Fixes #12220 --- data/sql/updates/pending_db_world/rev_1656838867557419200.sql | 3 +++ 1 file changed, 3 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656838867557419200.sql diff --git a/data/sql/updates/pending_db_world/rev_1656838867557419200.sql b/data/sql/updates/pending_db_world/rev_1656838867557419200.sql new file mode 100644 index 000000000..05960de71 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656838867557419200.sql @@ -0,0 +1,3 @@ +-- +UPDATE `smart_scripts` SET `event_flags`=512 WHERE `entryorguid`=28750 AND `source_type`=0 AND `id`=5; +UPDATE `smart_scripts` SET `event_flags`=512 WHERE `entryorguid`=2875000 AND `source_type`=9; From b661fac0bd09e70eba1a4e1b3ffec397e358220a Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 3 Jul 2022 14:49:41 +0000 Subject: [PATCH 047/119] chore(DB): import pending files Referenced commit(s): f818016bf65a847e18bf91c5c2dca5667c5a4333 --- .../rev_1656838867557419200.sql => db_world/2022_07_03_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656838867557419200.sql => db_world/2022_07_03_02.sql} (81%) diff --git a/data/sql/updates/pending_db_world/rev_1656838867557419200.sql b/data/sql/updates/db_world/2022_07_03_02.sql similarity index 81% rename from data/sql/updates/pending_db_world/rev_1656838867557419200.sql rename to data/sql/updates/db_world/2022_07_03_02.sql index 05960de71..417f6803c 100644 --- a/data/sql/updates/pending_db_world/rev_1656838867557419200.sql +++ b/data/sql/updates/db_world/2022_07_03_02.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_03_01 -> 2022_07_03_02 -- UPDATE `smart_scripts` SET `event_flags`=512 WHERE `entryorguid`=28750 AND `source_type`=0 AND `id`=5; UPDATE `smart_scripts` SET `event_flags`=512 WHERE `entryorguid`=2875000 AND `source_type`=9; From 7b9a5a676b5439d8f5875fe7056cb7ab8821b773 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 17:20:33 +0200 Subject: [PATCH 048/119] fix(Core/Spells): Smash Mammoth Trap should open Mammoth Calf's trap. (#12295) Fixes #12225 --- src/server/game/Spells/SpellInfoCorrections.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 546057bbc..2ef18974e 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4307,6 +4307,12 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].MiscValue = 8; }); + // Smash Mammoth Trap + ApplySpellFix({ 46201 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_0].MiscValue = 8; + }); + for (uint32 i = 0; i < GetSpellInfoStoreSize(); ++i) { SpellInfo* spellInfo = mSpellInfoMap[i]; From 65e02d9422ea886e5d4500e8a692c38807e579b4 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 17:22:25 +0200 Subject: [PATCH 049/119] =?UTF-8?q?fix(Core/SmartScripts):=20Added=20optio?= =?UTF-8?q?n=20to=20override=20current=20running=20time=E2=80=A6=20(#12298?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(Core/SmartScripts): Added option to override current running timed actionlist. Fixes #12227 --- .../updates/pending_db_world/rev_1656849991610651600.sql | 2 ++ src/server/game/AI/SmartScripts/SmartScript.cpp | 4 ++-- src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 6 +++++- src/server/game/AI/SmartScripts/SmartScriptMgr.h | 1 + 4 files changed, 10 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1656849991610651600.sql diff --git a/data/sql/updates/pending_db_world/rev_1656849991610651600.sql b/data/sql/updates/pending_db_world/rev_1656849991610651600.sql new file mode 100644 index 000000000..5b39602f3 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656849991610651600.sql @@ -0,0 +1,2 @@ +-- +UPDATE `smart_scripts` SET `action_param3`=1 WHERE `entryorguid`=26293 AND `source_type`=0 AND `id`=2; diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 1f8cb7030..d1da549cf 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -5099,8 +5099,8 @@ void SmartScript::SetScript9(SmartScriptHolder& e, uint32 entry) return; } - // Do NOT allow to start a new actionlist if a previous one is already running. We need to always finish the current actionlist - if (!mTimedActionList.empty()) + // Do NOT allow to start a new actionlist if a previous one is already running, unless explicitly allowed. We need to always finish the current actionlist + if (!e.action.timedActionList.allowOverride && !mTimedActionList.empty()) { return; } diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 23a93f166..82292262d 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1774,9 +1774,13 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) AC_SAI_IS_BOOLEAN_VALID(e, e.action.setHealthRegen.regenHealth); break; } + case SMART_ACTION_CALL_TIMED_ACTIONLIST: + { + AC_SAI_IS_BOOLEAN_VALID(e, e.action.timedActionList.allowOverride); + break; + } case SMART_ACTION_FLEE_FOR_ASSIST: case SMART_ACTION_MOVE_TO_POS: - case SMART_ACTION_CALL_TIMED_ACTIONLIST: case SMART_ACTION_EVADE: case SMART_ACTION_SET_ACTIVE: case SMART_ACTION_START_CLOSEST_WAYPOINT: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 0867679fe..c8f3f2609 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -1081,6 +1081,7 @@ struct SmartAction { uint32 id; uint32 timerType; + SAIBool allowOverride; } timedActionList; struct From 145f81d40fff8ce033d3286c3f93a0294331b979 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 3 Jul 2022 15:24:25 +0000 Subject: [PATCH 050/119] chore(DB): import pending files Referenced commit(s): 65e02d9422ea886e5d4500e8a692c38807e579b4 --- .../rev_1656849991610651600.sql => db_world/2022_07_03_03.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656849991610651600.sql => db_world/2022_07_03_03.sql} (70%) diff --git a/data/sql/updates/pending_db_world/rev_1656849991610651600.sql b/data/sql/updates/db_world/2022_07_03_03.sql similarity index 70% rename from data/sql/updates/pending_db_world/rev_1656849991610651600.sql rename to data/sql/updates/db_world/2022_07_03_03.sql index 5b39602f3..c05ceef90 100644 --- a/data/sql/updates/pending_db_world/rev_1656849991610651600.sql +++ b/data/sql/updates/db_world/2022_07_03_03.sql @@ -1,2 +1,3 @@ +-- DB update 2022_07_03_02 -> 2022_07_03_03 -- UPDATE `smart_scripts` SET `action_param3`=1 WHERE `entryorguid`=26293 AND `source_type`=0 AND `id`=2; From 5bb62cd540de43abab77c75d5a5818d1977f0838 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 21:26:17 +0200 Subject: [PATCH 051/119] fix(DB/SAI): Fixed completing quest "What Book? I Don't See Any Book" (#12289) Fixes #12213 --- data/sql/updates/pending_db_world/rev_1656831380141778300.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656831380141778300.sql diff --git a/data/sql/updates/pending_db_world/rev_1656831380141778300.sql b/data/sql/updates/pending_db_world/rev_1656831380141778300.sql new file mode 100644 index 000000000..2762326d9 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656831380141778300.sql @@ -0,0 +1,2 @@ +-- +UPDATE `smart_scripts` SET `target_type`=12, `target_param1`=1 WHERE `entryorguid`=19720 AND `source_type`=0 AND `id`=22; From d7d04c62b150ddaa918b83ce21aea0343aecf876 Mon Sep 17 00:00:00 2001 From: acidmanifesto Date: Sun, 3 Jul 2022 15:26:50 -0400 Subject: [PATCH 052/119] fix (db): Graveyard Horde Teldrassil (#12278) * fix (db): Graveyard horde Teldrassil * update (db): update for workflow code style check * fix (db): File Rename * update (db): Typo --- .../pending_db_world/darnassus_grave_fixit.sql | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 data/sql/updates/pending_db_world/darnassus_grave_fixit.sql diff --git a/data/sql/updates/pending_db_world/darnassus_grave_fixit.sql b/data/sql/updates/pending_db_world/darnassus_grave_fixit.sql new file mode 100644 index 000000000..901597db9 --- /dev/null +++ b/data/sql/updates/pending_db_world/darnassus_grave_fixit.sql @@ -0,0 +1,13 @@ +-- delete wrong game_graveyard link to graveyard_zone +DELETE FROM `graveyard_zone` WHERE `ID`=469 AND `GhostZone`=141; +DELETE FROM `graveyard_zone` WHERE `ID`=469 AND `GhostZone`=1657; + +-- originally was faction 469 alliance and should be 0 ID originally 469 +DELETE FROM `graveyard_zone` WHERE `ID`=91 AND `GhostZone`=141; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Faction`, `Comment`) VALUES +(91, 141, 0, 'Teldrassil, Dolanaar GY'); + +-- id originally 469 +DELETE FROM `graveyard_zone` WHERE `ID`=91 AND `GhostZone`=1657; +INSERT INTO `graveyard_zone` (`ID`, `GhostZone`, `Faction`, `Comment`) VALUES +(91, 1657, 67, 'Teldrassil, Dolanaar GY'); From e6a6dceaee7bfb9e65a8652277b15ac9a059dc03 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 21:28:36 +0200 Subject: [PATCH 053/119] =?UTF-8?q?fix(Core/Combat):=20Removed=20`UNIT=5FF?= =?UTF-8?q?LAG=5FIMMUNE=5FTO=5FPC`=20when=20entering=20comb=E2=80=A6=20(#1?= =?UTF-8?q?2288)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(Core/Combat): Removed `UNIT_FLAG_IMMUNE_TO_PC` when entering combat with player. Fixes #12211 Fixes #12214 Fixes #12219 Fixes #12212 --- src/server/game/Entities/Unit/Unit.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 317f747db..07e9c6288 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13163,7 +13163,7 @@ void Unit::SetInCombatState(bool PvP, Unit* enemy, uint32 duration) // xinef: if we somehow engage in combat (scripts, dunno) with player, remove this flag so he can fight back if (GetTypeId() == TYPEID_UNIT && enemy && IsImmuneToPC() && enemy->GetCharmerOrOwnerPlayerOrPlayerItself()) - SetImmuneToPC(true); // unit has engaged in combat, remove immunity so players can fight back + SetImmuneToPC(false); // unit has engaged in combat, remove immunity so players can fight back if (IsInCombat()) return; From 1c3faed4dbd5a9ddfee0ea3ff6a55b70b782be3b Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 3 Jul 2022 21:29:29 +0200 Subject: [PATCH 054/119] fix(DB/SAI): Heb'Jin should not evade on attack. Source: TrinityCore. (#12270) * fix(DB/SAI): Heb'Jin should not evade on attack. Fixes #12209 * Update. * Update. * Update. --- .../rev_1656757421461118700.sql | 80 +++++++++++++++++++ 1 file changed, 80 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656757421461118700.sql diff --git a/data/sql/updates/pending_db_world/rev_1656757421461118700.sql b/data/sql/updates/pending_db_world/rev_1656757421461118700.sql new file mode 100644 index 000000000..85fccf8c4 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656757421461118700.sql @@ -0,0 +1,80 @@ +-- +SET @NPC_HEBJIN := 28636; +SET @NPC_BAT := 28639; +SET @GO_DRUM := 190695; + +DELETE FROM `creature` WHERE `guid` IN (117079,117301); + +UPDATE `creature_template` SET `speed_run`=0.857143, `unit_flags`=33024, `AIName`='SmartAI' WHERE `entry`=@NPC_HEBJIN; +UPDATE `creature_template` SET `speed_run`=2, `unit_flags`=256, `AIName`='SmartAI' WHERE `entry`=@NPC_BAT; + +DELETE FROM `event_scripts` WHERE `id`=18773; +INSERT INTO `event_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`dataint`,`x`,`y`,`z`,`o`) VALUES +(18773,0,10,@NPC_HEBJIN,180000,0,5988.715,-3878.036,417.1502,2.356194); + +UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=@GO_DRUM; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@NPC_HEBJIN,@NPC_BAT) AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GO_DRUM AND `source_type`=1; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@NPC_HEBJIN*100,@NPC_BAT*100) AND `source_type`=9; +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`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@NPC_HEBJIN,0,0,0,54,0,100,0,0,0,0,0,80,@NPC_HEBJIN*100,2,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - Just summoned - Run script'), +(@NPC_HEBJIN,0,1,2,38,0,100,0,0,1,0,0,11,52354,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin - On data 0 1 set - Spellcast Script Effect - Creature Attack GUID from Dot Variable'), +(@NPC_HEBJIN,0,2,3,61,0,100,0,0,0,0,0,101,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - On data 0 1 set - Set Home Pos'), +(@NPC_HEBJIN,0,3,4,61,0,100,0,0,0,0,0,69,0,0,0,0,0,0,8,0,0,0,5937.22,-3820.871,366.5563,0, 'Heb''Jin - On data 0 1 set - Move to position'), +(@NPC_HEBJIN,0,4,5,61,0,100,0,0,0,0,0,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - On data 0 1 set - Say line'), +(@NPC_HEBJIN,0,5,6,61,0,100,0,0,0,0,0,19,256,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - On data 0 1 set - Remove unit_flags IMMUNE_TO_PC'), +(@NPC_HEBJIN,0,6,0,61,0,100,0,0,0,0,0,49,0,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin - On data 0 1 set - Start attack'), +(@NPC_HEBJIN,0,7,0,0,0,100,0,1000,1000,7000,8000,11,12734,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - On update IC - Spellcast Ground Smash'), +(@NPC_HEBJIN,0,8,0,0,0,100,0,5000,5000,10000,12000,11,15548,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin - On update IC - Spellcast Thunder Clap'), +(@NPC_HEBJIN,0,9,0,13,0,100,0,12000,15000,0,0,11,12555,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Heb''Jin - On target casting - Spellcast Pummel'), + +(@NPC_BAT,0,0,1,11,0,100,0,0,0,0,0,91,7,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spawn - Remove unit_field_bytes1 (dead)'), +(@NPC_BAT,0,1,2,61,0,100,0,0,0,0,0,11,52353,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spawn - Spellcast Script Effect - Creature Capture GUID to Dot Variable'), +(@NPC_BAT,0,2,0,61,0,100,0,0,0,0,0,4,10892,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spawn - Play sound'), +(@NPC_BAT,0,3,0,27,0,100,1,0,0,0,0,53,1,@NPC_BAT,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On passenger boarded - Start WP movement'), +(@NPC_BAT,0,4,5,40,0,100,0,4,@NPC_BAT,0,0,28,43671,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On WP 4 reached - Remove aura Ride Vehicle'), +(@NPC_BAT,0,5,6,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,19,@NPC_HEBJIN,10,0,0,0,0,0, 'Heb''Jin''s Bat - On WP 4 reached - Set data 0 1 Heb''Jin'), +(@NPC_BAT,0,6,0,61,0,100,0,0,0,0,0,80,@NPC_BAT*100,2,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On WP 4 reached - Run script'), +(@NPC_BAT,0,7,8,8,0,100,0,52151,0,0,0,18,256,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spellhit Bat Net - Set unit_flags IMMUNE_TO_PC'), +(@NPC_BAT,0,8,9,61,0,100,0,0,0,0,0,90,7,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spellhit Bat Net - Set unit_field_bytes1 (dead)'), +(@NPC_BAT,0,9,0,61,0,100,0,0,0,0,0,41,5000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat - On spellhit Bat Net - Despawn after 5 seconds'), + +(@GO_DRUM,1,0,1,70,0,100,0,2,0,0,0,64,1,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Heb''Jin''s Drum - On state changed - Store targetlist'), +(@GO_DRUM,1,1,0,61,0,100,0,0,0,0,0,100,1,0,0,0,0,0,19,@NPC_HEBJIN,100,0,0,0,0,0, 'Heb''Jin''s Drum - On state changed - Send targetlist to Heb''Jin'), + +(@NPC_HEBJIN*100,9,0,0,0,0,100,0,0,0,0,0,11,52353,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin script - Spellcast Script Effect - Creature Capture GUID to Dot Variable'), +(@NPC_HEBJIN*100,9,1,0,0,0,100,0,3200,3200,0,0,11,52154,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin script - Spellcast Taunt'), +(@NPC_HEBJIN*100,9,2,0,0,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin script - Say line'), +(@NPC_HEBJIN*100,9,3,0,0,0,100,0,300,300,0,0,12,@NPC_BAT,8,0,0,0,0,8,0,0,0,5984.547,-3882.621,417.4379,1.919862, 'Heb''Jin script - Summon Heb''Jin''s Bat'), +(@NPC_HEBJIN*100,9,4,0,0,0,100,0,0,0,0,0,100,1,0,0,0,0,0,19,@NPC_BAT,10,0,0,0,0,0, 'Heb''Jin script - Send targetlist'), +(@NPC_HEBJIN*100,9,5,0,0,0,100,0,5700,5700,0,0,1,1,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin script - Say line'), +(@NPC_HEBJIN*100,9,6,0,0,0,100,0,2400,2400,0,0,11,43671,0,0,0,0,0,19,@NPC_BAT,10,0,0,0,0,0, 'Heb''Jin script - Spellcast Ride Vehicle'), + +(@NPC_BAT*100,9,0,0,0,0,100,0,2000,2000,0,0,19,256,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Heb''Jin''s Bat script 1 - Remove unit_flags IMMUNE_TO_PC'), +(@NPC_BAT*100,9,1,0,0,0,100,0,0,0,0,0,49,0,0,0,0,0,0,12,1,0,0,0,0,0,0, 'Heb''Jin''s Bat script 1 - Start attack'); + +DELETE FROM `smart_scripts` WHERE `source_type`=1 AND `entryorguid`=190695; +DELETE FROM `smart_scripts` WHERE `source_type`=9 AND `entryorguid`=19069500; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(190695, 1, 0, 1, 70, 0, 100, 0, 2, 0, 0, 0, 64, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Heb\'Jin\'s Drum - On state changed - Store targetlist'), +(190695, 1, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 80, 19069500, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Heb\'Jin\'s Drum - Linked with Previous Event - Run Script'), +(19069500, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, 98562, 23837, 0, 0, 0,0,0, 'Heb\'Jin\'s Drum - Script - Set Data ELM General Purpose Bunny'), +(19069500, 9, 1, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 100, 1, 0, 0, 0, 0, 0, 19, 28636, 100, 0, 0, 0, 0, 0, 'Heb\'Jin\'s Drum - Script - Send Target list to heb jin'); + +UPDATE `smart_scripts` SET `action_param2`=2, `action_param3`=300000 WHERE `entryorguid`=2863600 AND `source_type`=9 AND `id`=3 AND `link`=0; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=28636 AND `id`=9; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=28639 AND `id`=10; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(28636, 0, 9, 0, 7, 0, 100, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Heb Jin - On Evade - Despawn'), +(28639, 0, 10, 0, 7, 0, 100, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Heb Jins Bat - On Evade - Despawn'); + +DELETE FROM `event_scripts` WHERE `id`=18773; +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=-98562; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(-98562, 0, 0, 1, 38, 0, 100, 0, 1, 1, 0, 0, 45, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'ELM General Purpose Bunny - On Data Set - Set Data'), +(-98562, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 12, 28636, 2, 300000, 0, 0, 0, 8, 0, 0, 0, 5988.71, -3878.04, 417.15, 2.35619, 'ELM General Purpose Bunny - Linked with Previous Event - Spawn Heb Jin'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceId`=0 AND `SourceEntry`=-98562; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, -98562, 0, 0, 29, 1, 28636, 200, 0, 1, 0, 0, '', 'Only run SAI if no heb jin nearby'), +(22, 1, -98562, 0, 0, 29, 1, 28639, 200, 0, 1, 0, 0, '', 'Only run SAI if no heb jins bat nearby'); From b4192f9ea3722e9d5554408ddcb6e702f755367c Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 3 Jul 2022 19:33:04 +0000 Subject: [PATCH 055/119] chore(DB): import pending files Referenced commit(s): 1c3faed4dbd5a9ddfee0ea3ff6a55b70b782be3b --- .../darnassus_grave_fixit.sql => db_world/2022_07_03_04.sql} | 1 + .../rev_1656757421461118700.sql => db_world/2022_07_03_05.sql} | 1 + .../rev_1656831380141778300.sql => db_world/2022_07_03_06.sql} | 1 + 3 files changed, 3 insertions(+) rename data/sql/updates/{pending_db_world/darnassus_grave_fixit.sql => db_world/2022_07_03_04.sql} (93%) rename data/sql/updates/{pending_db_world/rev_1656757421461118700.sql => db_world/2022_07_03_05.sql} (99%) rename data/sql/updates/{pending_db_world/rev_1656831380141778300.sql => db_world/2022_07_03_06.sql} (73%) diff --git a/data/sql/updates/pending_db_world/darnassus_grave_fixit.sql b/data/sql/updates/db_world/2022_07_03_04.sql similarity index 93% rename from data/sql/updates/pending_db_world/darnassus_grave_fixit.sql rename to data/sql/updates/db_world/2022_07_03_04.sql index 901597db9..2e36691c4 100644 --- a/data/sql/updates/pending_db_world/darnassus_grave_fixit.sql +++ b/data/sql/updates/db_world/2022_07_03_04.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_03_03 -> 2022_07_03_04 -- delete wrong game_graveyard link to graveyard_zone DELETE FROM `graveyard_zone` WHERE `ID`=469 AND `GhostZone`=141; DELETE FROM `graveyard_zone` WHERE `ID`=469 AND `GhostZone`=1657; diff --git a/data/sql/updates/pending_db_world/rev_1656757421461118700.sql b/data/sql/updates/db_world/2022_07_03_05.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1656757421461118700.sql rename to data/sql/updates/db_world/2022_07_03_05.sql index 85fccf8c4..9fa096ea0 100644 --- a/data/sql/updates/pending_db_world/rev_1656757421461118700.sql +++ b/data/sql/updates/db_world/2022_07_03_05.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_03_04 -> 2022_07_03_05 -- SET @NPC_HEBJIN := 28636; SET @NPC_BAT := 28639; diff --git a/data/sql/updates/pending_db_world/rev_1656831380141778300.sql b/data/sql/updates/db_world/2022_07_03_06.sql similarity index 73% rename from data/sql/updates/pending_db_world/rev_1656831380141778300.sql rename to data/sql/updates/db_world/2022_07_03_06.sql index 2762326d9..5e9a7c2b6 100644 --- a/data/sql/updates/pending_db_world/rev_1656831380141778300.sql +++ b/data/sql/updates/db_world/2022_07_03_06.sql @@ -1,2 +1,3 @@ +-- DB update 2022_07_03_05 -> 2022_07_03_06 -- UPDATE `smart_scripts` SET `target_type`=12, `target_param1`=1 WHERE `entryorguid`=19720 AND `source_type`=0 AND `id`=22; From 53736faf33e58291d1884c01666d650a4c0beea9 Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sun, 3 Jul 2022 16:48:23 -0300 Subject: [PATCH 056/119] fix(DB/Creature): Silithid Swarm remove gold drop (#12262) Create silithid_swarm_gold.sql --- data/sql/updates/pending_db_world/silithid_swarm_gold.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/silithid_swarm_gold.sql diff --git a/data/sql/updates/pending_db_world/silithid_swarm_gold.sql b/data/sql/updates/pending_db_world/silithid_swarm_gold.sql new file mode 100644 index 000000000..40e1a7f2f --- /dev/null +++ b/data/sql/updates/pending_db_world/silithid_swarm_gold.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `mingold` = 0, `maxgold` = 0 WHERE (`entry` = 4196); From 9673da19470d81a6f0dfc1b1cbe11dadc4ce5f79 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 3 Jul 2022 19:50:39 +0000 Subject: [PATCH 057/119] chore(DB): import pending files Referenced commit(s): 53736faf33e58291d1884c01666d650a4c0beea9 --- .../silithid_swarm_gold.sql => db_world/2022_07_03_07.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/silithid_swarm_gold.sql => db_world/2022_07_03_07.sql} (66%) diff --git a/data/sql/updates/pending_db_world/silithid_swarm_gold.sql b/data/sql/updates/db_world/2022_07_03_07.sql similarity index 66% rename from data/sql/updates/pending_db_world/silithid_swarm_gold.sql rename to data/sql/updates/db_world/2022_07_03_07.sql index 40e1a7f2f..b86e4dc34 100644 --- a/data/sql/updates/pending_db_world/silithid_swarm_gold.sql +++ b/data/sql/updates/db_world/2022_07_03_07.sql @@ -1,2 +1,3 @@ +-- DB update 2022_07_03_06 -> 2022_07_03_07 -- UPDATE `creature_template` SET `mingold` = 0, `maxgold` = 0 WHERE (`entry` = 4196); From c60d5fb9fd84f3139b503d360b8e576ce51b1541 Mon Sep 17 00:00:00 2001 From: mpfans Date: Tue, 5 Jul 2022 23:36:23 +0800 Subject: [PATCH 058/119] fix(DB/Quest): Fixed Tatjana's Horse not moving to final destination. (#12251) fixed `Anatoly Will Talk` quest --- data/sql/updates/pending_db_world/rev_1656651808535528313.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656651808535528313.sql diff --git a/data/sql/updates/pending_db_world/rev_1656651808535528313.sql b/data/sql/updates/pending_db_world/rev_1656651808535528313.sql new file mode 100644 index 000000000..1abcd9869 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656651808535528313.sql @@ -0,0 +1,2 @@ +-- fixed `Anatoly Will Talk` quest +UPDATE `smart_scripts` SET `event_flags`= 512 WHERE `entryorguid`= 2762600; From 21c9209eed6523fd8b3a45517135d16f8f6b3e7e Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Tue, 5 Jul 2022 12:37:30 -0300 Subject: [PATCH 059/119] fix(DB/waypoint): Alshirr Banebreath (14340) (#12256) * Create alshirr_waypoints.sql * Update alshirr_waypoints.sql --- .../pending_db_world/alshirr_waypoints.sql | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 data/sql/updates/pending_db_world/alshirr_waypoints.sql diff --git a/data/sql/updates/pending_db_world/alshirr_waypoints.sql b/data/sql/updates/pending_db_world/alshirr_waypoints.sql new file mode 100644 index 000000000..080fc483f --- /dev/null +++ b/data/sql/updates/pending_db_world/alshirr_waypoints.sql @@ -0,0 +1,22 @@ +-- +DELETE FROM `waypoint_data` WHERE `id`=518940; +INSERT INTO `acore_world`.`waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES +(518940, 1, 3866.84, -672.53, 328.888), +(518940, 2, 3866.84, -672.534, 328.888), +(518940, 3, 3818.17, -768.04, 314.71), +(518940, 4, 3881.4, -769.048, 311.51), +(518940, 5, 3892.74, -762.76, 312.98), +(518940, 6, 3863.57, -759.42, 312.95), +(518940, 7, 3844.86, -719.223, 324.47), +(518940, 8, 3894.64, -635.31, 336.71), +(518940, 9, 3932.94, -611.101, 340.266), +(518940, 10, 3981.27, -598.98, 338.19), +(518940, 11, 3932.94, -611.101, 340.266), +(518940, 12, 3894.64, -635.31, 336.71), +(518940, 13, 3844.86, -719.223, 324.47), +(518940, 14, 3863.57, -759.42, 312.95), +(518940, 15, 3892.74, -762.76, 312.98), +(518940, 16, 3881.4, -769.048, 311.51), +(518940, 17, 3818.17, -768.04, 314.71), +(518940, 18, 3866.84, -672.534, 328.888), +(518940, 19, 3866.84, -672.53, 328.888); From a00a966ca7bce1c4489130b4c3773420315ae534 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 5 Jul 2022 15:39:50 +0000 Subject: [PATCH 060/119] chore(DB): import pending files Referenced commit(s): 21c9209eed6523fd8b3a45517135d16f8f6b3e7e --- .../alshirr_waypoints.sql => db_world/2022_07_05_00.sql} | 1 + .../rev_1656651808535528313.sql => db_world/2022_07_05_01.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/alshirr_waypoints.sql => db_world/2022_07_05_00.sql} (95%) rename data/sql/updates/{pending_db_world/rev_1656651808535528313.sql => db_world/2022_07_05_01.sql} (71%) diff --git a/data/sql/updates/pending_db_world/alshirr_waypoints.sql b/data/sql/updates/db_world/2022_07_05_00.sql similarity index 95% rename from data/sql/updates/pending_db_world/alshirr_waypoints.sql rename to data/sql/updates/db_world/2022_07_05_00.sql index 080fc483f..1fd915287 100644 --- a/data/sql/updates/pending_db_world/alshirr_waypoints.sql +++ b/data/sql/updates/db_world/2022_07_05_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_03_07 -> 2022_07_05_00 -- DELETE FROM `waypoint_data` WHERE `id`=518940; INSERT INTO `acore_world`.`waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES diff --git a/data/sql/updates/pending_db_world/rev_1656651808535528313.sql b/data/sql/updates/db_world/2022_07_05_01.sql similarity index 71% rename from data/sql/updates/pending_db_world/rev_1656651808535528313.sql rename to data/sql/updates/db_world/2022_07_05_01.sql index 1abcd9869..026eb3461 100644 --- a/data/sql/updates/pending_db_world/rev_1656651808535528313.sql +++ b/data/sql/updates/db_world/2022_07_05_01.sql @@ -1,2 +1,3 @@ +-- DB update 2022_07_05_00 -> 2022_07_05_01 -- fixed `Anatoly Will Talk` quest UPDATE `smart_scripts` SET `event_flags`= 512 WHERE `entryorguid`= 2762600; From df8dce4ae8c900ae7f9d8fb53a0280b6a7dec283 Mon Sep 17 00:00:00 2001 From: Benjamin Jackson <38561765+benjymansy123@users.noreply.github.com> Date: Tue, 5 Jul 2022 12:34:28 -0400 Subject: [PATCH 061/119] fix(DB): Remove `acore.world` from 2022_07_05_00.sql (#12305) --- data/sql/updates/db_world/2022_07_05_00.sql | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/data/sql/updates/db_world/2022_07_05_00.sql b/data/sql/updates/db_world/2022_07_05_00.sql index 1fd915287..ea7115bc5 100644 --- a/data/sql/updates/db_world/2022_07_05_00.sql +++ b/data/sql/updates/db_world/2022_07_05_00.sql @@ -1,7 +1,7 @@ -- DB update 2022_07_03_07 -> 2022_07_05_00 -- DELETE FROM `waypoint_data` WHERE `id`=518940; -INSERT INTO `acore_world`.`waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES (518940, 1, 3866.84, -672.53, 328.888), (518940, 2, 3866.84, -672.534, 328.888), (518940, 3, 3818.17, -768.04, 314.71), From 9ae2b103fa1cdd8b753be36834c54ec0ac24c1a9 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Tue, 5 Jul 2022 11:34:14 -0600 Subject: [PATCH 062/119] fix(DB/Achievements): Critters Killed statistic (#12306) --- data/sql/updates/pending_db_world/rev_1657040899617221100.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1657040899617221100.sql diff --git a/data/sql/updates/pending_db_world/rev_1657040899617221100.sql b/data/sql/updates/pending_db_world/rev_1657040899617221100.sql new file mode 100644 index 000000000..6e3b2e59c --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657040899617221100.sql @@ -0,0 +1,2 @@ +-- +UPDATE `achievement_criteria_data` SET `value1` = 8 WHERE `criteria_id` = 4958 AND `type` = 8; From 8854117a283c3b8b7bb324f7d71debec1063c89b Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 5 Jul 2022 17:36:18 +0000 Subject: [PATCH 063/119] chore(DB): import pending files Referenced commit(s): 9ae2b103fa1cdd8b753be36834c54ec0ac24c1a9 --- .../rev_1657040899617221100.sql => db_world/2022_07_05_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657040899617221100.sql => db_world/2022_07_05_02.sql} (69%) diff --git a/data/sql/updates/pending_db_world/rev_1657040899617221100.sql b/data/sql/updates/db_world/2022_07_05_02.sql similarity index 69% rename from data/sql/updates/pending_db_world/rev_1657040899617221100.sql rename to data/sql/updates/db_world/2022_07_05_02.sql index 6e3b2e59c..a595de268 100644 --- a/data/sql/updates/pending_db_world/rev_1657040899617221100.sql +++ b/data/sql/updates/db_world/2022_07_05_02.sql @@ -1,2 +1,3 @@ +-- DB update 2022_07_05_01 -> 2022_07_05_02 -- UPDATE `achievement_criteria_data` SET `value1` = 8 WHERE `criteria_id` = 4958 AND `type` = 8; From c93fb05515dd1768cda9285154b7916b2c30c4d3 Mon Sep 17 00:00:00 2001 From: Kempec Halk <80704304+Gozzim@users.noreply.github.com> Date: Wed, 6 Jul 2022 03:55:37 +0200 Subject: [PATCH 064/119] feat(Core/Commands): Debug Spell Visuals Command (#12216) * feat(Core/Commands): Debug Spell Visuals Command * feat(DB/Commands): Debug Visual Help * Add missing eol at eof --- .../rev_1656377467861686900.sql | 4 +++ src/server/scripts/Commands/cs_debug.cpp | 25 ++++++++++++++++++- 2 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 data/sql/updates/pending_db_world/rev_1656377467861686900.sql diff --git a/data/sql/updates/pending_db_world/rev_1656377467861686900.sql b/data/sql/updates/pending_db_world/rev_1656377467861686900.sql new file mode 100644 index 000000000..a5e89a128 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656377467861686900.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `command` WHERE `name` = 'debug play visual'; +INSERT INTO `command` (`name`, `security`, `help`) VALUES +('debug play visual', 3, 'Syntax: .debug play visual #visualid\r\nPlay spell visual with #visualid.\n#visualid refers to the ID from SpellVisualKit.dbc'); diff --git a/src/server/scripts/Commands/cs_debug.cpp b/src/server/scripts/Commands/cs_debug.cpp index a5cf1b9fa..e0c12e927 100644 --- a/src/server/scripts/Commands/cs_debug.cpp +++ b/src/server/scripts/Commands/cs_debug.cpp @@ -58,7 +58,8 @@ public: { "cinematic", HandleDebugPlayCinematicCommand, SEC_ADMINISTRATOR, Console::No }, { "movie", HandleDebugPlayMovieCommand, SEC_ADMINISTRATOR, Console::No }, { "sound", HandleDebugPlaySoundCommand, SEC_ADMINISTRATOR, Console::No }, - { "music", HandleDebugPlayMusicCommand, SEC_ADMINISTRATOR, Console::No } + { "music", HandleDebugPlayMusicCommand, SEC_ADMINISTRATOR, Console::No }, + { "visual", HandleDebugVisualCommand, SEC_ADMINISTRATOR, Console::No } }; static ChatCommandTable debugSendCommandTable = { @@ -203,6 +204,28 @@ public: return true; } + static bool HandleDebugVisualCommand(ChatHandler* handler, uint32 visualId) + { + if (!visualId) + { + handler->SendSysMessage(LANG_BAD_VALUE); + handler->SetSentErrorMessage(true); + return false; + } + + Player* player = handler->GetPlayer(); + Unit* target = handler->getSelectedUnit(); + + if (!target) + { + player->SendPlaySpellVisual(visualId); + return true; + } + + player->SendPlaySpellImpact(target->GetGUID(), visualId); + return true; + } + static bool HandleDebugSendSpellFailCommand(ChatHandler* handler, SpellCastResult result, Optional failArg1, Optional failArg2) { WorldPacket data(SMSG_CAST_FAILED, 5); From 7814ac68cc8bd37adfb22ce2c082ead996e188d4 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Wed, 6 Jul 2022 01:57:47 +0000 Subject: [PATCH 065/119] chore(DB): import pending files Referenced commit(s): c93fb05515dd1768cda9285154b7916b2c30c4d3 --- .../rev_1656377467861686900.sql => db_world/2022_07_06_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656377467861686900.sql => db_world/2022_07_06_00.sql} (86%) diff --git a/data/sql/updates/pending_db_world/rev_1656377467861686900.sql b/data/sql/updates/db_world/2022_07_06_00.sql similarity index 86% rename from data/sql/updates/pending_db_world/rev_1656377467861686900.sql rename to data/sql/updates/db_world/2022_07_06_00.sql index a5e89a128..daf8d0ce1 100644 --- a/data/sql/updates/pending_db_world/rev_1656377467861686900.sql +++ b/data/sql/updates/db_world/2022_07_06_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_05_02 -> 2022_07_06_00 -- DELETE FROM `command` WHERE `name` = 'debug play visual'; INSERT INTO `command` (`name`, `security`, `help`) VALUES From c3d8340e6b6451650fc0a2a971b470e082015389 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Wed, 6 Jul 2022 14:05:45 +0200 Subject: [PATCH 066/119] fix(Core/Gossips): Properly send packet with questgiver query handler. (#12290) Fixes #12215 --- src/server/game/Entities/Creature/GossipDef.cpp | 9 +++++++-- src/server/game/Entities/Creature/GossipDef.h | 8 ++++++-- src/server/game/Handlers/MiscHandler.cpp | 16 ++++++++++++++++ src/server/game/Handlers/QuestHandler.cpp | 6 ++++-- 4 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/server/game/Entities/Creature/GossipDef.cpp b/src/server/game/Entities/Creature/GossipDef.cpp index 15598c833..842bb9506 100644 --- a/src/server/game/Entities/Creature/GossipDef.cpp +++ b/src/server/game/Entities/Creature/GossipDef.cpp @@ -29,6 +29,7 @@ GossipMenu::GossipMenu() { _menuId = 0; _locale = DEFAULT_LOCALE; + _senderGUID.Clear(); } GossipMenu::~GossipMenu() @@ -188,8 +189,10 @@ void PlayerMenu::ClearMenus() _questMenu.ClearMenu(); } -void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) const +void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) { + _gossipMenu.SetSenderGUID(objectGUID); + WorldPacket data(SMSG_GOSSIP_MESSAGE, 24 + _gossipMenu.GetMenuItemCount() * 100 + _questMenu.GetMenuItemCount() * 75); // guess size data << objectGUID; data << uint32(_gossipMenu.GetMenuId()); // new 2.4.0 @@ -234,8 +237,10 @@ void PlayerMenu::SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) const _session->SendPacket(&data); } -void PlayerMenu::SendCloseGossip() const +void PlayerMenu::SendCloseGossip() { + _gossipMenu.SetSenderGUID(ObjectGuid::Empty); + WorldPacket data(SMSG_GOSSIP_COMPLETE, 0); _session->SendPacket(&data); } diff --git a/src/server/game/Entities/Creature/GossipDef.h b/src/server/game/Entities/Creature/GossipDef.h index 0b8eedfc8..c8f98d684 100644 --- a/src/server/game/Entities/Creature/GossipDef.h +++ b/src/server/game/Entities/Creature/GossipDef.h @@ -213,11 +213,15 @@ public: return _menuItems; } + void SetSenderGUID(ObjectGuid guid) { _senderGUID = guid; } + [[nodiscard]] ObjectGuid GetSenderGUID() const { return _senderGUID; } + private: GossipMenuItemContainer _menuItems; GossipMenuItemDataContainer _menuItemData; uint32 _menuId; LocaleConstant _locale; + ObjectGuid _senderGUID; }; class QuestMenu @@ -266,8 +270,8 @@ public: [[nodiscard]] uint32 GetGossipOptionAction(uint32 selection) const { return _gossipMenu.GetMenuItemAction(selection); } [[nodiscard]] bool IsGossipOptionCoded(uint32 selection) const { return _gossipMenu.IsMenuItemCoded(selection); } - void SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID) const; - void SendCloseGossip() const; + void SendGossipMenu(uint32 titleTextId, ObjectGuid objectGUID); + void SendCloseGossip(); void SendPointOfInterest(uint32 poiId) const; /*********************************************************/ diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index dc5b48e68..e3d8912ea 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -98,6 +98,12 @@ void WorldSession::HandleGossipSelectOptionOpcode(WorldPacket& recv_data) if (_player->PlayerTalkClass->IsGossipOptionCoded(gossipListId)) recv_data >> code; + // Prevent cheating on C++ scripted menus + if (_player->PlayerTalkClass->GetGossipMenu().GetSenderGUID() != guid) + { + return; + } + Creature* unit = nullptr; GameObject* go = nullptr; Item* item = nullptr; @@ -528,6 +534,16 @@ void WorldSession::HandleSetSelectionOpcode(WorldPacket& recv_data) ObjectGuid guid; recv_data >> guid; + if (!guid) + { + // Clear any active gossip related to current selection if not present at player's client + GossipMenu& gossipMenu = _player->PlayerTalkClass->GetGossipMenu(); + if (gossipMenu.GetSenderGUID() == _player->GetTarget()) + { + _player->PlayerTalkClass->SendCloseGossip(); + } + } + _player->SetSelection(guid); // Change target of current autoshoot spell diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 25366f52a..49e951549 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -38,9 +38,11 @@ void WorldSession::HandleQuestgiverStatusQueryOpcode(WorldPacket& recvData) uint32 questStatus = DIALOG_STATUS_NONE; GossipMenu& gossipMenu = _player->PlayerTalkClass->GetGossipMenu(); - // Did we already get get a gossip menu? if so no need to status query - if (!gossipMenu.Empty()) + // Did we already get a gossip menu with that NPC? if so no need to status query + if (gossipMenu.GetSenderGUID() == guid) + { return; + } Object* questGiver = ObjectAccessor::GetObjectByTypeMask(*_player, guid, TYPEMASK_UNIT | TYPEMASK_GAMEOBJECT); if (!questGiver) From 2b6284d1c975be976be368940ad6bed1cc3fda43 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Thu, 7 Jul 2022 10:45:08 -0600 Subject: [PATCH 067/119] fix(Core): Fix Achievement Packets (#12255) --- src/server/game/Achievements/AchievementMgr.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 5d12cd8db..e930244a2 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -2321,16 +2321,17 @@ void AchievementMgr::BuildAllDataPacket(WorldPacket* data) const } *data << int32(-1); + time_t now = GameTime::GetGameTime().count(); for (CriteriaProgressMap::const_iterator iter = m_criteriaProgress.begin(); iter != m_criteriaProgress.end(); ++iter) { *data << uint32(iter->first); data->appendPackGUID(iter->second.counter); *data << GetPlayer()->GetPackGUID(); - *data << uint32(0); + *data << uint32(0); // TODO: This should be 1 if it is a failed timed criteria data->AppendPackedTime(iter->second.date); - *data << uint32(0); - *data << uint32(0); + *data << uint32(now - iter->second.date); + *data << uint32(now - iter->second.date); } *data << int32(-1); From e21011c223ae12e987a650b0717c11586a0d8b4d Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Thu, 7 Jul 2022 10:45:50 -0600 Subject: [PATCH 068/119] fix(Core): Implement ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY (#12246) * fix(Core): Implement ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY * Missing DB values from TrinityCore * Fix DELETE to include all added entries * Fix AchievementCriteriaData validation * Correctly check criteria data for receive item achievements --- .../rev_1656608960155325800.sql | 25 +++++++++++++++++++ .../game/Achievements/AchievementMgr.cpp | 13 ++++++++++ src/server/game/Achievements/AchievementMgr.h | 8 +++++- 3 files changed, 45 insertions(+), 1 deletion(-) create mode 100644 data/sql/updates/pending_db_world/rev_1656608960155325800.sql diff --git a/data/sql/updates/pending_db_world/rev_1656608960155325800.sql b/data/sql/updates/pending_db_world/rev_1656608960155325800.sql new file mode 100644 index 000000000..8a030d1eb --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656608960155325800.sql @@ -0,0 +1,25 @@ +-- +DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (6140, 6141, 6142, 4768, 4769, 4770, 4771, 4772, 4773, 4774, 4775, 4776, 4777, 4778, 4779, 4780, 4781, 4782, 4783, 4784, 4785, 4786); +INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`) VALUES +(6140, 25, 4, 0), +(6141, 25, 5, 0), +(6142, 25, 4, 0), +(4768, 25, 4, 0), +(4769, 25, 4, 0), +(4770, 25, 4, 0), +(4771, 25, 4, 0), +(4772, 25, 4, 0), +(4773, 25, 4, 0), +(4774, 25, 4, 0), +(4775, 25, 4, 0), +(4776, 25, 4, 0), +(4777, 25, 4, 0), +(4778, 25, 4, 0), +(4779, 25, 4, 0), +(4780, 25, 4, 0), +(4781, 25, 4, 0), +(4782, 25, 4, 0), +(4783, 25, 4, 0), +(4784, 25, 4, 0), +(4785, 25, 4, 0), +(4786, 25, 4, 0); diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index e930244a2..f470a132e 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -80,6 +80,8 @@ bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria) case ACHIEVEMENT_CRITERIA_TYPE_GET_KILLING_BLOWS: case ACHIEVEMENT_CRITERIA_TYPE_REACH_LEVEL: case ACHIEVEMENT_CRITERIA_TYPE_ON_LOGIN: + case ACHIEVEMENT_CRITERIA_TYPE_LOOT_EPIC_ITEM: + case ACHIEVEMENT_CRITERIA_TYPE_RECEIVE_EPIC_ITEM: break; default: if (dataType != ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT) @@ -242,6 +244,7 @@ bool AchievementCriteriaData::IsValid(AchievementCriteriaEntry const* criteria) case ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES: return true; // not check correctness node indexes case ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPED_ITEM: + case ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY: if (equipped_item.item_quality >= MAX_ITEM_QUALITY) { LOG_ERROR("sql.sql", "Table `achievement_criteria_requirement` (Entry: {} Type: {}) for requirement ACHIEVEMENT_CRITERIA_REQUIRE_S_EQUIPED_ITEM ({}) has unknown quality state in value1 ({}), ignored.", @@ -434,6 +437,13 @@ bool AchievementCriteriaData::Meets(uint32 criteria_id, Player const* source, Un return false; } + case ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY: + { + ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(miscvalue1); + if (!pProto) + return false; + return pProto->Quality == item.item_quality; + } case ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES: { Battleground* bg = source->GetBattleground(); @@ -1534,6 +1544,9 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui ItemTemplate const* proto = sObjectMgr->GetItemTemplate(miscValue1); if (!proto || proto->Quality < ITEM_QUALITY_EPIC) continue; + AchievementCriteriaDataSet const* data = sAchievementMgr->GetCriteriaDataSet(achievementCriteria); + if (!data || !data->Meets(GetPlayer(), unit, miscValue1)) + continue; SetCriteriaProgress(achievementCriteria, 1, PROGRESS_ACCUMULATE); break; } diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index f385078a9..3ebe5698a 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -68,8 +68,9 @@ enum AchievementCriteriaDataType ACHIEVEMENT_CRITERIA_DATA_TYPE_NTH_BIRTHDAY = 22, // N login on day of N-th Birthday ACHIEVEMENT_CRITERIA_DATA_TYPE_S_KNOWN_TITLE = 23, // title_id known (pvp) title, values from dbc ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES = 24, // winner_score loser score player's team win bg and their teams have exact scores + ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY = 25 // item_quality }; -#define MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE 25 // maximum value in AchievementCriteriaDataType enum +#define MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE 26 // maximum value in AchievementCriteriaDataType enum enum AchievementCommonCategories { @@ -196,6 +197,11 @@ struct AchievementCriteriaData uint32 winner_score; uint32 loser_score; } teams_scores; + // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY = 25 + struct + { + uint32 item_quality; + } item; // ... struct { From 5dec721a71bf02c382323354408c6c2db03cf453 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Thu, 7 Jul 2022 16:48:01 +0000 Subject: [PATCH 069/119] chore(DB): import pending files Referenced commit(s): e21011c223ae12e987a650b0717c11586a0d8b4d --- .../rev_1656608960155325800.sql => db_world/2022_07_07_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656608960155325800.sql => db_world/2022_07_07_00.sql} (93%) diff --git a/data/sql/updates/pending_db_world/rev_1656608960155325800.sql b/data/sql/updates/db_world/2022_07_07_00.sql similarity index 93% rename from data/sql/updates/pending_db_world/rev_1656608960155325800.sql rename to data/sql/updates/db_world/2022_07_07_00.sql index 8a030d1eb..b3176869f 100644 --- a/data/sql/updates/pending_db_world/rev_1656608960155325800.sql +++ b/data/sql/updates/db_world/2022_07_07_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_06_00 -> 2022_07_07_00 -- DELETE FROM `achievement_criteria_data` WHERE `criteria_id` IN (6140, 6141, 6142, 4768, 4769, 4770, 4771, 4772, 4773, 4774, 4775, 4776, 4777, 4778, 4779, 4780, 4781, 4782, 4783, 4784, 4785, 4786); INSERT INTO `achievement_criteria_data` (`criteria_id`, `type`, `value1`, `value2`) VALUES From 32ba21d02900bc4f236af029c24ac2de27390db5 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sat, 9 Jul 2022 00:10:04 -0300 Subject: [PATCH 070/119] feat(Core/Scripting): Implement OnAllowedForPlayerLootCheck() hook (#12316) * feat(Core/Scripting): Implement OnAllowedForPlayerLootCheck() hook * reverse logic --- .../game/Entities/Creature/Creature.cpp | 2 ++ .../game/Entities/GameObject/GameObject.cpp | 2 ++ src/server/game/Entities/Player/Player.cpp | 2 +- src/server/game/Groups/Group.cpp | 8 +++--- src/server/game/Handlers/LootHandler.cpp | 2 +- src/server/game/Loot/LootMgr.cpp | 25 +++++++++++-------- src/server/game/Loot/LootMgr.h | 5 ++-- .../Scripting/ScriptDefines/GlobalScript.cpp | 15 +++++++++++ src/server/game/Scripting/ScriptMgr.h | 4 +++ 9 files changed, 47 insertions(+), 18 deletions(-) diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 6c5e10606..48ff211d4 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -284,6 +284,8 @@ void Creature::AddToWorld() GetZoneScript()->OnCreatureCreate(this); } + loot.sourceWorldObjectGUID = GetGUID(); + sScriptMgr->OnCreatureAddWorld(this); } } diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index bde7bf453..58900172e 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -159,6 +159,8 @@ void GameObject::AddToWorld() WorldObject::AddToWorld(); + loot.sourceWorldObjectGUID = GetGUID(); + sScriptMgr->OnGameObjectAddWorld(this); } } diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 92cd8817a..f8f73de79 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -13180,7 +13180,7 @@ void Player::StoreLootItem(uint8 lootSlot, Loot* loot) return; } - if (!item->AllowedForPlayer(this)) + if (!item->AllowedForPlayer(this, loot->sourceWorldObjectGUID)) { SendLootRelease(GetLootGUID()); return; diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp index 9a4d2a4d3..d93c476b3 100644 --- a/src/server/game/Groups/Group.cpp +++ b/src/server/game/Groups/Group.cpp @@ -1015,7 +1015,7 @@ void Group::GroupLoot(Loot* loot, WorldObject* pLootedObject) continue; if (member->IsAtLootRewardDistance(pLootedObject)) { - if (i->AllowedForPlayer(member)) + if (i->AllowedForPlayer(member, loot->sourceWorldObjectGUID)) { r->totalPlayersRolling++; @@ -1099,7 +1099,7 @@ void Group::GroupLoot(Loot* loot, WorldObject* pLootedObject) if (member->IsAtLootRewardDistance(pLootedObject)) { - if (i->AllowedForPlayer(member)) + if (i->AllowedForPlayer(member, loot->sourceWorldObjectGUID)) { r->totalPlayersRolling++; r->playerVote[member->GetGUID()] = NOT_EMITED_YET; @@ -1157,7 +1157,7 @@ void Group::NeedBeforeGreed(Loot* loot, WorldObject* lootedObject) if (!playerToRoll) continue; - if (i->AllowedForPlayer(playerToRoll) && playerToRoll->IsAtLootRewardDistance(lootedObject)) + if (i->AllowedForPlayer(playerToRoll, loot->sourceWorldObjectGUID) && playerToRoll->IsAtLootRewardDistance(lootedObject)) { r->totalPlayersRolling++; if (playerToRoll->GetPassOnGroupLoot()) @@ -1231,7 +1231,7 @@ void Group::NeedBeforeGreed(Loot* loot, WorldObject* lootedObject) if (!playerToRoll) continue; - if (i->AllowedForPlayer(playerToRoll) && playerToRoll->IsAtLootRewardDistance(lootedObject)) + if (i->AllowedForPlayer(playerToRoll, loot->sourceWorldObjectGUID) && playerToRoll->IsAtLootRewardDistance(lootedObject)) { r->totalPlayersRolling++; r->playerVote[playerToRoll->GetGUID()] = NOT_EMITED_YET; diff --git a/src/server/game/Handlers/LootHandler.cpp b/src/server/game/Handlers/LootHandler.cpp index bf6ca83d4..5b8ec44d3 100644 --- a/src/server/game/Handlers/LootHandler.cpp +++ b/src/server/game/Handlers/LootHandler.cpp @@ -469,7 +469,7 @@ void WorldSession::HandleLootMasterGiveOpcode(WorldPacket& recvData) ItemPosCountVec dest; InventoryResult msg = target->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, item.itemid, item.count); - if (!item.AllowedForPlayer(target, true)) + if (!item.AllowedForPlayer(target, loot->sourceWorldObjectGUID)) msg = EQUIP_ERR_YOU_CAN_NEVER_USE_THAT_ITEM; if (msg != EQUIP_ERR_OK) { diff --git a/src/server/game/Loot/LootMgr.cpp b/src/server/game/Loot/LootMgr.cpp index 7e3b6d94f..25cc841f4 100644 --- a/src/server/game/Loot/LootMgr.cpp +++ b/src/server/game/Loot/LootMgr.cpp @@ -404,7 +404,7 @@ LootItem::LootItem(LootStoreItem const& li) } // Basic checks for player/item compatibility - if false no chance to see the item in the loot -bool LootItem::AllowedForPlayer(Player const* player, bool isGivenByMasterLooter /*= false*/, bool allowQuestLoot /*= true*/) const +bool LootItem::AllowedForPlayer(Player const* player, bool isGivenByMasterLooter /*= false*/, bool allowQuestLoot /*= true*/, ObjectGuid source) const { ItemTemplate const* pProto = sObjectMgr->GetItemTemplate(itemid); if (!pProto) @@ -472,6 +472,11 @@ bool LootItem::AllowedForPlayer(Player const* player, bool isGivenByMasterLooter return false; } + if (!sScriptMgr->OnAllowedForPlayerLootCheck(player, source)) + { + return false; + } + return true; } @@ -515,7 +520,7 @@ void Loot::AddItem(LootStoreItem const& item) { if (auto member = itr->GetSource()) { - if (generatedLoot.AllowedForPlayer(member)) + if (generatedLoot.AllowedForPlayer(member, sourceWorldObjectGUID)) { canSeeItemInLootWindow = true; break; @@ -523,7 +528,7 @@ void Loot::AddItem(LootStoreItem const& item) } } } - else if (generatedLoot.AllowedForPlayer(player)) + else if (generatedLoot.AllowedForPlayer(player, sourceWorldObjectGUID)) { canSeeItemInLootWindow = true; } @@ -626,7 +631,7 @@ void Loot::FillNotNormalLootFor(Player* player) else item = &quest_items[i - itemsSize]; - if (!item->is_looted && item->freeforall && item->AllowedForPlayer(player)) + if (!item->is_looted && item->freeforall && item->AllowedForPlayer(player, sourceWorldObjectGUID)) if (ItemTemplate const* proto = sObjectMgr->GetItemTemplate(item->itemid)) if (proto->IsCurrencyToken()) player->StoreLootItem(i, this); @@ -640,7 +645,7 @@ QuestItemList* Loot::FillFFALoot(Player* player) for (uint8 i = 0; i < items.size(); ++i) { LootItem& item = items[i]; - if (!item.is_looted && item.freeforall && item.AllowedForPlayer(player)) + if (!item.is_looted && item.freeforall && item.AllowedForPlayer(player, containerGUID)) { ql->push_back(QuestItem(i)); ++unlootedCount; @@ -701,7 +706,7 @@ QuestItemList* Loot::FillNonQuestNonFFAConditionalLoot(Player* player) for (uint8 i = 0; i < items.size(); ++i) { LootItem& item = items[i]; - if (!item.is_looted && !item.freeforall && (item.AllowedForPlayer(player) || (item.follow_loot_rules && player->GetGroup() && ((player->GetGroup()->GetLootMethod() == MASTER_LOOT && player->GetGroup()->GetMasterLooterGuid() == player->GetGUID()) || player->GetGroup()->GetLootMethod() != MASTER_LOOT )))) + if (!item.is_looted && !item.freeforall && (item.AllowedForPlayer(player, sourceWorldObjectGUID) || (item.follow_loot_rules && player->GetGroup() && ((player->GetGroup()->GetLootMethod() == MASTER_LOOT && player->GetGroup()->GetMasterLooterGuid() == player->GetGUID()) || player->GetGroup()->GetLootMethod() != MASTER_LOOT )))) { item.AddAllowedLooter(player); @@ -820,7 +825,7 @@ LootItem* Loot::LootItemInSlot(uint32 lootSlot, Player* player, QuestItem * *qit if (qitem) *qitem = qitem2; item = &quest_items[qitem2->index]; - if (item->follow_loot_rules && !item->AllowedForPlayer(player)) // pussywizard: such items (follow_loot_rules) are added to every player, but not everyone is allowed, check it here + if (item->follow_loot_rules && !item->AllowedForPlayer(player, sourceWorldObjectGUID)) // pussywizard: such items (follow_loot_rules) are added to every player, but not everyone is allowed, check it here return nullptr; is_looted = qitem2->is_looted; } @@ -989,7 +994,7 @@ ByteBuffer& operator<<(ByteBuffer& b, LootView const& lv) // blocked rolled items and quest items, and !ffa items for (uint8 i = 0; i < l.items.size(); ++i) { - if (!l.items[i].is_looted && !l.items[i].freeforall && (l.items[i].conditions.empty() || isMasterLooter) && l.items[i].AllowedForPlayer(lv.viewer)) + if (!l.items[i].is_looted && !l.items[i].freeforall && (l.items[i].conditions.empty() || isMasterLooter) && l.items[i].AllowedForPlayer(lv.viewer, l.sourceWorldObjectGUID)) { uint8 slot_type = 0; @@ -1047,7 +1052,7 @@ ByteBuffer& operator<<(ByteBuffer& b, LootView const& lv) { for (uint8 i = 0; i < l.items.size(); ++i) { - if (!l.items[i].is_looted && !l.items[i].freeforall && l.items[i].conditions.empty() && l.items[i].AllowedForPlayer(lv.viewer)) + if (!l.items[i].is_looted && !l.items[i].freeforall && l.items[i].conditions.empty() && l.items[i].AllowedForPlayer(lv.viewer, l.sourceWorldObjectGUID)) { if (l.roundRobinPlayer && lv.viewer->GetGUID() != l.roundRobinPlayer) // item shall not be displayed. @@ -1066,7 +1071,7 @@ ByteBuffer& operator<<(ByteBuffer& b, LootView const& lv) uint8 slot_type = lv.permission == OWNER_PERMISSION ? LOOT_SLOT_TYPE_OWNER : LOOT_SLOT_TYPE_ALLOW_LOOT; for (uint8 i = 0; i < l.items.size(); ++i) { - if (!l.items[i].is_looted && !l.items[i].freeforall && l.items[i].conditions.empty() && l.items[i].AllowedForPlayer(lv.viewer)) + if (!l.items[i].is_looted && !l.items[i].freeforall && l.items[i].conditions.empty() && l.items[i].AllowedForPlayer(lv.viewer, l.sourceWorldObjectGUID)) { b << uint8(i) << l.items[i]; b << uint8(slot_type); diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h index 10147178f..bd1633abf 100644 --- a/src/server/game/Loot/LootMgr.h +++ b/src/server/game/Loot/LootMgr.h @@ -176,8 +176,8 @@ struct LootItem LootItem() = default; // Basic checks for player/item compatibility - if false no chance to see the item in the loot - bool AllowedForPlayer(Player const* player, bool isGivenByMasterLooter = false, bool allowQuestLoot = true) const; - + bool AllowedForPlayer(Player const* player, bool isGivenByMasterLooter = false, bool allowQuestLoot = true, ObjectGuid source = ObjectGuid::Empty) const; + bool AllowedForPlayer(Player const* player, ObjectGuid source) { return AllowedForPlayer(player, false, true, source); }; void AddAllowedLooter(Player const* player); [[nodiscard]] const AllowedLooterSet& GetAllowedLooters() const { return allowedGUIDs; } }; @@ -327,6 +327,7 @@ struct Loot // GUID of container that holds this loot (item_instance.entry), set for items that can be looted ObjectGuid containerGUID; + ObjectGuid sourceWorldObjectGUID; GameObject* sourceGameObject{nullptr}; Loot(uint32 _gold = 0) : gold(_gold) { } diff --git a/src/server/game/Scripting/ScriptDefines/GlobalScript.cpp b/src/server/game/Scripting/ScriptDefines/GlobalScript.cpp index c72d7eaa6..ed9214a30 100644 --- a/src/server/game/Scripting/ScriptDefines/GlobalScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/GlobalScript.cpp @@ -161,3 +161,18 @@ void ScriptMgr::OnLoadSpellCustomAttr(SpellInfo* spell) script->OnLoadSpellCustomAttr(spell); }); } + +bool ScriptMgr::OnAllowedForPlayerLootCheck(Player const* player, ObjectGuid source) +{ + auto ret = IsValidBoolScript([&](GlobalScript* script) + { + return script->OnAllowedForPlayerLootCheck(player, source); + }); + + if (ret && *ret) + { + return false; + } + + return true; +} diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index d5e480509..ed213f619 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -1549,6 +1549,9 @@ public: // Called after loading spell dbc corrections virtual void OnLoadSpellCustomAttr(SpellInfo* /*spell*/) { } + + // Called when checking if a player can see the creature loot + virtual bool OnAllowedForPlayerLootCheck(Player const* /*player*/, ObjectGuid /*source*/) { return false; }; }; class BGScript : public ScriptObject @@ -2371,6 +2374,7 @@ public: /* GlobalScript */ bool OnIsAffectedBySpellModCheck(SpellInfo const* affectSpell, SpellInfo const* checkSpell, SpellModifier const* mod); bool OnSpellHealingBonusTakenNegativeModifiers(Unit const* target, Unit const* caster, SpellInfo const* spellInfo, float& val); void OnLoadSpellCustomAttr(SpellInfo* spell); + bool OnAllowedForPlayerLootCheck(Player const* player, ObjectGuid source); public: /* Scheduled scripts */ uint32 IncreaseScheduledScriptsCount() { return ++_scheduledScripts; } From 346150c92a04fab140eb437a54b2e8ba8001e335 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 9 Jul 2022 16:05:09 +0200 Subject: [PATCH 071/119] fix(Scripts/ZulGurub): Hakkar's Blood Siphon (#12196) --- .../rev_1656252824985469400.sql | 4 ++ .../game/Entities/Creature/Creature.cpp | 2 +- src/server/game/Entities/Unit/Unit.cpp | 26 ++++++----- src/server/game/Entities/Unit/Unit.h | 3 -- src/server/game/Handlers/SpellHandler.cpp | 27 ++++++++++-- src/server/game/Spells/Spell.cpp | 10 +++-- src/server/game/Spells/SpellInfo.cpp | 2 +- src/server/game/Spells/SpellInfo.h | 2 +- .../game/Spells/SpellInfoCorrections.cpp | 10 +++++ .../EasternKingdoms/ZulGurub/boss_hakkar.cpp | 44 +++++++++++-------- src/server/shared/SharedDefines.h | 2 +- src/server/shared/enuminfo_SharedDefines.cpp | 2 +- 12 files changed, 90 insertions(+), 44 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1656252824985469400.sql diff --git a/data/sql/updates/pending_db_world/rev_1656252824985469400.sql b/data/sql/updates/pending_db_world/rev_1656252824985469400.sql new file mode 100644 index 000000000..2a73f0ef9 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656252824985469400.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `spell_script_names` WHERE `spell_id`=24324; +INSERT INTO `spell_script_names` VALUES +(24324,'spell_blood_siphon'); diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp index 48ff211d4..6af1be441 100644 --- a/src/server/game/Entities/Creature/Creature.cpp +++ b/src/server/game/Entities/Creature/Creature.cpp @@ -3439,7 +3439,7 @@ bool Creature::IsMovementPreventedByCasting() const { Spell* spell = m_currentSpells[CURRENT_CHANNELED_SPELL]; // first check if currently a movement allowed channel is active and we're not casting - if (spell && spell->getState() != SPELL_STATE_FINISHED && spell->IsChannelActive() && spell->GetSpellInfo()->IsMoveAllowedChannel()) + if (spell && spell->getState() != SPELL_STATE_FINISHED && spell->IsChannelActive() && spell->GetSpellInfo()->IsActionAllowedChannel()) { return false; } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 07e9c6288..1bfbb3d5c 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -3622,8 +3622,12 @@ void Unit::SetCurrentCastedSpell(Spell* pSpell) { // generic spells always break channeled not delayed spells if (Spell* s = GetCurrentSpell(CURRENT_CHANNELED_SPELL)) - if (s->GetSpellInfo()->Id != 69051) // pussywizard: FoS, boss Devourer of Souls, Mirrored Soul, does not have any special attribute + { + if (!s->GetSpellInfo()->IsActionAllowedChannel()) + { InterruptSpell(CURRENT_CHANNELED_SPELL, false); + } + } // autorepeat breaking if (m_currentSpells[CURRENT_AUTOREPEAT_SPELL]) @@ -3658,7 +3662,14 @@ void Unit::SetCurrentCastedSpell(Spell* pSpell) if (pSpell->m_spellInfo->Id != 75) { // generic autorepeats break generic non-delayed and channeled non-delayed spells - InterruptSpell(CURRENT_GENERIC_SPELL, false); + if (Spell* s = GetCurrentSpell(CURRENT_CHANNELED_SPELL)) + { + if (!s->GetSpellInfo()->IsActionAllowedChannel()) + { + InterruptSpell(CURRENT_CHANNELED_SPELL, false); + } + } + InterruptSpell(CURRENT_CHANNELED_SPELL, false); } // special action: set first cast flag @@ -3793,7 +3804,7 @@ bool Unit::IsMovementPreventedByCasting() const { if (spell->getState() != SPELL_STATE_FINISHED && spell->IsChannelActive()) { - if (spell->GetSpellInfo()->IsMoveAllowedChannel()) + if (spell->GetSpellInfo()->IsActionAllowedChannel()) { return false; } @@ -3804,15 +3815,6 @@ bool Unit::IsMovementPreventedByCasting() const return true; } -bool Unit::CanMoveDuringChannel() const -{ - if (Spell* spell = m_currentSpells[CURRENT_CHANNELED_SPELL]) - if (spell->getState() != SPELL_STATE_FINISHED) - return spell->GetSpellInfo()->HasAttribute(SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL) && spell->IsChannelActive(); - - return false; -} - bool Unit::isInFrontInMap(Unit const* target, float distance, float arc) const { return IsWithinDistInMap(target, distance) && HasInArc(arc, target); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index f40b8e533..39983f0d0 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -2029,9 +2029,6 @@ public: // delayed+channeled spells are always interrupted void InterruptNonMeleeSpells(bool withDelayed, uint32 spellid = 0, bool withInstant = true, bool bySelf = false); - // Check if our current channel spell has attribute SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL - [[nodiscard]] bool CanMoveDuringChannel() const; - [[nodiscard]] Spell* GetCurrentSpell(CurrentSpellTypes spellType) const { return m_currentSpells[spellType]; } [[nodiscard]] Spell* GetCurrentSpell(uint32 spellType) const { return m_currentSpells[spellType]; } [[nodiscard]] Spell* FindCurrentSpellBySpellId(uint32 spell_id) const; diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index be3d6c522..407201c1d 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -491,7 +491,7 @@ void WorldSession::HandleCancelAuraOpcode(WorldPacket& recvPacket) if (!spellInfo) return; - // not allow remove spells with attr SPELL_ATTR0_CANT_CANCEL + // not allow remove spells with attr SPELL_ATTR0_NO_AURA_CANCEL if (spellInfo->HasAttribute(SPELL_ATTR0_NO_AURA_CANCEL)) { return; @@ -569,12 +569,33 @@ void WorldSession::HandleCancelAutoRepeatSpellOpcode(WorldPacket& /*recvPacket*/ void WorldSession::HandleCancelChanneling(WorldPacket& recvData) { - recvData.read_skip(); // spellid, not used + uint32 spellID = 0; + recvData >> spellID; // ignore for remote control state (for player case) Unit* mover = _player->m_mover; - if (mover != _player && mover->GetTypeId() == TYPEID_PLAYER) + if (!mover) + { return; + } + + SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(spellID); + if (!spellInfo) + { + return; + } + + // not allow remove spells with attr SPELL_ATTR0_NO_AURA_CANCEL + if (spellInfo->HasAttribute(SPELL_ATTR0_NO_AURA_CANCEL)) + { + return; + } + + Spell* spell = mover->GetCurrentSpell(CURRENT_CHANNELED_SPELL); + if (!spell || spell->GetSpellInfo()->Id != spellInfo->Id) + { + return; + } mover->InterruptSpell(CURRENT_CHANNELED_SPELL); } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 8bcb30778..75b252b20 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3555,9 +3555,13 @@ SpellCastResult Spell::prepare(SpellCastTargets const* targets, AuraEffect const // (even if they are interrupted on moving, spells with almost immediate effect get to have their effect processed before movement interrupter kicks in) if ((m_spellInfo->IsChanneled() || m_casttime) && m_caster->GetTypeId() == TYPEID_PLAYER && m_caster->isMoving() && m_spellInfo->InterruptFlags & SPELL_INTERRUPT_FLAG_MOVEMENT && !IsTriggered()) { - SendCastResult(SPELL_FAILED_MOVING); - finish(false); - return SPELL_FAILED_MOVING; + // 1. Has casttime, 2. Or doesn't have flag to allow action during channel + if (m_casttime || !m_spellInfo->IsActionAllowedChannel()) + { + SendCastResult(SPELL_FAILED_MOVING); + finish(false); + return SPELL_FAILED_MOVING; + } } // xinef: if spell have nearby target entry only, do not allow to cast if no targets are found diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index 6f5257301..7bb066785 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -1241,7 +1241,7 @@ bool SpellInfo::IsChanneled() const return (AttributesEx & (SPELL_ATTR1_IS_CHANNELED | SPELL_ATTR1_IS_SELF_CHANNELED)); } -bool SpellInfo::IsMoveAllowedChannel() const +bool SpellInfo::IsActionAllowedChannel() const { return IsChanneled() && HasAttribute(SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL); } diff --git a/src/server/game/Spells/SpellInfo.h b/src/server/game/Spells/SpellInfo.h index d93e9e6b3..dc300600b 100644 --- a/src/server/game/Spells/SpellInfo.h +++ b/src/server/game/Spells/SpellInfo.h @@ -457,7 +457,7 @@ public: bool IsPositive() const; bool IsPositiveEffect(uint8 effIndex) const; bool IsChanneled() const; - [[nodiscard]] bool IsMoveAllowedChannel() const; + [[nodiscard]] bool IsActionAllowedChannel() const; bool NeedsComboPoints() const; bool IsBreakingStealth() const; bool IsRangedWeaponSpell() const; diff --git a/src/server/game/Spells/SpellInfoCorrections.cpp b/src/server/game/Spells/SpellInfoCorrections.cpp index 2ef18974e..17542822f 100644 --- a/src/server/game/Spells/SpellInfoCorrections.cpp +++ b/src/server/game/Spells/SpellInfoCorrections.cpp @@ -4301,6 +4301,16 @@ void SpellMgr::LoadSpellInfoCorrections() spellInfo->Effects[EFFECT_0].MiscValueB = 64; }); + // Blood Siphon + ApplySpellFix({ 24322, 24323 }, [](SpellInfo* spellInfo) + { + spellInfo->Effects[EFFECT_1].ApplyAuraName = SPELL_AURA_MOD_STUN; + spellInfo->Effects[EFFECT_2].Effect = 0; + spellInfo->Attributes |= SPELL_ATTR0_NO_AURA_CANCEL; + spellInfo->AttributesEx5 |= SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL; + spellInfo->ChannelInterruptFlags &= ~AURA_INTERRUPT_FLAG_MOVE; + }); + // Place Fake Fur ApplySpellFix({ 46085 }, [](SpellInfo* spellInfo) { diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 780669e1d..3599a943b 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -39,10 +39,9 @@ enum Says enum Spells { - SPELL_POISONOUS_BLOOD = 24321, - SPELL_BLOOD_SIPHON_HEAL = 24322, - SPELL_BLOOD_SIPHON_DMG = 24323, SPELL_BLOOD_SIPHON = 24324, + SPELL_BLOOD_SIPHON_HEAL = 24322, + SPELL_BLOOD_SIPHON_DAMAGE = 24323, SPELL_CORRUPTED_BLOOD = 24328, SPELL_CAUSE_INSANITY = 24327, SPELL_ENRAGE = 24318, @@ -51,7 +50,8 @@ enum Spells SPELL_ASPECT_OF_VENOXIS = 24688, SPELL_ASPECT_OF_MARLI = 24686, SPELL_ASPECT_OF_THEKAL = 24689, - SPELL_ASPECT_OF_ARLOKK = 24690 + SPELL_ASPECT_OF_ARLOKK = 24690, + SPELL_POISONOUS_BLOOD = 24321 }; enum Events @@ -265,31 +265,39 @@ public: } }; -class spell_hakkar_blood_siphon : public SpellScript +class spell_blood_siphon : public SpellScript { - PrepareSpellScript(spell_hakkar_blood_siphon); + PrepareSpellScript(spell_blood_siphon); bool Validate(SpellInfo const* /*spellInfo*/) override { - return ValidateSpellInfo({ SPELL_BLOOD_SIPHON_HEAL, SPELL_BLOOD_SIPHON_DMG }); + return ValidateSpellInfo({ SPELL_BLOOD_SIPHON_DAMAGE, SPELL_BLOOD_SIPHON_HEAL }); } - void OnSpellHit() + void FilterTargets(std::list& targets) { - Unit* caster = GetCaster(); - Unit* target = GetHitUnit(); - if (!caster || !target) - return; + // Max. 20 targets + if (!targets.empty()) + { + Acore::Containers::RandomResize(targets, 20); + } + } - if (target->HasAura(SPELL_POISONOUS_BLOOD)) - target->CastSpell(caster, SPELL_BLOOD_SIPHON_DMG, true); - else - target->CastSpell(caster, SPELL_BLOOD_SIPHON_HEAL, true); + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + if (Unit* caster = GetCaster()) + { + if (Player* player = GetHitPlayer()) + { + player->CastSpell(caster, player->HasAura(SPELL_POISONOUS_BLOOD) ? SPELL_BLOOD_SIPHON_DAMAGE : SPELL_BLOOD_SIPHON_HEAL, true); + } + } } void Register() override { - OnHit += SpellHitFn(spell_hakkar_blood_siphon::OnSpellHit); + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_blood_siphon::FilterTargets, EFFECT_0, TARGET_UNIT_SRC_AREA_ENEMY); + OnEffectHitTarget += SpellEffectFn(spell_blood_siphon::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); } }; @@ -299,5 +307,5 @@ void AddSC_boss_hakkar() new at_zulgurub_entrance_speech(); new at_zulgurub_bridge_speech(); new at_zulgurub_temple_speech(); - RegisterSpellScript(spell_hakkar_blood_siphon); + RegisterSpellScript(spell_blood_siphon); } diff --git a/src/server/shared/SharedDefines.h b/src/server/shared/SharedDefines.h index 16069658b..37c91c9e4 100644 --- a/src/server/shared/SharedDefines.h +++ b/src/server/shared/SharedDefines.h @@ -536,7 +536,7 @@ enum SpellAttr4 : uint32 // EnumUtils: DESCRIBE THIS enum SpellAttr5 : uint32 { - SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL = 0x00000001, // TITLE Can be channeled while moving + SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL = 0x00000001, // TITLE Can be channeled while moving/casting SPELL_ATTR5_NO_REAGENT_COST_WITH_AURA = 0x00000002, // TITLE No reagents during arena preparation SPELL_ATTR5_REMOVE_ENTERING_ARENA = 0x00000004, // TITLE Remove when entering arena DESCRIPTION Force this aura to be removed on entering arena, regardless of other properties SPELL_ATTR5_ALLOW_WHILE_STUNNED = 0x00000008, // TITLE Usable while stunned diff --git a/src/server/shared/enuminfo_SharedDefines.cpp b/src/server/shared/enuminfo_SharedDefines.cpp index 06ea37987..751437861 100644 --- a/src/server/shared/enuminfo_SharedDefines.cpp +++ b/src/server/shared/enuminfo_SharedDefines.cpp @@ -802,7 +802,7 @@ AC_API_EXPORT EnumText EnumUtils::ToString(SpellAttr5 value) { switch (value) { - case SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL: return { "SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL", "Can be channeled while moving", "" }; + case SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL: return { "SPELL_ATTR5_ALLOW_ACTION_DURING_CHANNEL", "Can be channeled while moving/casting", "" }; case SPELL_ATTR5_NO_REAGENT_COST_WITH_AURA: return { "SPELL_ATTR5_NO_REAGENT_COST_WITH_AURA", "No reagents during arena preparation", "" }; case SPELL_ATTR5_REMOVE_ENTERING_ARENA: return { "SPELL_ATTR5_REMOVE_ENTERING_ARENA", "Remove when entering arena", "Force this aura to be removed on entering arena, regardless of other properties" }; case SPELL_ATTR5_ALLOW_WHILE_STUNNED: return { "SPELL_ATTR5_ALLOW_WHILE_STUNNED", "Usable while stunned", "" }; From bafc72e6750885dc2eab072823a6505f3cf57e26 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 14:07:24 +0000 Subject: [PATCH 072/119] chore(DB): import pending files Referenced commit(s): 346150c92a04fab140eb437a54b2e8ba8001e335 --- .../rev_1656252824985469400.sql => db_world/2022_07_09_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656252824985469400.sql => db_world/2022_07_09_00.sql} (74%) diff --git a/data/sql/updates/pending_db_world/rev_1656252824985469400.sql b/data/sql/updates/db_world/2022_07_09_00.sql similarity index 74% rename from data/sql/updates/pending_db_world/rev_1656252824985469400.sql rename to data/sql/updates/db_world/2022_07_09_00.sql index 2a73f0ef9..c47b8897a 100644 --- a/data/sql/updates/pending_db_world/rev_1656252824985469400.sql +++ b/data/sql/updates/db_world/2022_07_09_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_07_00 -> 2022_07_09_00 -- DELETE FROM `spell_script_names` WHERE `spell_id`=24324; INSERT INTO `spell_script_names` VALUES From f6ede1a503c6e3d9c0cd3a0269db73ddacacfe54 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 9 Jul 2022 16:12:16 +0200 Subject: [PATCH 073/119] fix(DB/ZulGurub): Hoodoo Piles should not melee atack their targets. (#12269) Will of Hakkar is casted on pile looter. Fixes #12186 --- .../updates/pending_db_world/rev_1656749058349666900.sql | 6 ++++++ src/server/game/Entities/GameObject/GameObject.cpp | 7 +++---- 2 files changed, 9 insertions(+), 4 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1656749058349666900.sql diff --git a/data/sql/updates/pending_db_world/rev_1656749058349666900.sql b/data/sql/updates/pending_db_world/rev_1656749058349666900.sql new file mode 100644 index 000000000..c74bb0d56 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656749058349666900.sql @@ -0,0 +1,6 @@ +-- +UPDATE `creature_template` SET `flags_extra`=130 WHERE `entry`=15047; + +DELETE FROM `smart_scripts` WHERE `entryorguid`=15047 AND `source_type`=0; +INSERT INTO `smart_scripts` VALUES +(15047,0,0,0,1,0,100,1,500,500,0,0,0,11,24178,0,0,0,0,0,23,0,0,0,0,0,0,0,0,'Gurubashi - OOC - Cast Will of Hakkar'); diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 58900172e..782c53a78 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -2058,17 +2058,16 @@ void GameObject::CastSpell(Unit* target, uint32 spellId) bool self = false; for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) { - if (spellInfo->Effects[i].TargetA.GetTarget() == TARGET_UNIT_CASTER) + if (spellInfo->Effects[i].TargetA.GetReferenceType() == TARGET_REFERENCE_TYPE_CASTER && !spellInfo->Effects[i].TargetB.GetTarget()) { self = true; break; } } - if (self) + if (self && target && target->GetGUID() != GetGUID()) { - if (target) - target->CastSpell(target, spellInfo, true); + target->CastSpell(target, spellInfo, true); return; } From c422ab3ec4045abc5e9cc4af4a2caabd2eb64f42 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 14:14:14 +0000 Subject: [PATCH 074/119] chore(DB): import pending files Referenced commit(s): f6ede1a503c6e3d9c0cd3a0269db73ddacacfe54 --- .../rev_1656749058349666900.sql => db_world/2022_07_09_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656749058349666900.sql => db_world/2022_07_09_01.sql} (87%) diff --git a/data/sql/updates/pending_db_world/rev_1656749058349666900.sql b/data/sql/updates/db_world/2022_07_09_01.sql similarity index 87% rename from data/sql/updates/pending_db_world/rev_1656749058349666900.sql rename to data/sql/updates/db_world/2022_07_09_01.sql index c74bb0d56..0a874965d 100644 --- a/data/sql/updates/pending_db_world/rev_1656749058349666900.sql +++ b/data/sql/updates/db_world/2022_07_09_01.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_00 -> 2022_07_09_01 -- UPDATE `creature_template` SET `flags_extra`=130 WHERE `entry`=15047; From 66e5901d8377c21a486ea44579d3aa11b05b38a3 Mon Sep 17 00:00:00 2001 From: neifion-00000000 <91289495+neifion-00000000@users.noreply.github.com> Date: Sat, 9 Jul 2022 09:18:59 -0500 Subject: [PATCH 075/119] fix(DB/GameObjects): Improve ZG Herbalism spawns (#12307) --- .../rev_1657051747898999300.sql | 155 ++++++++++++++++++ 1 file changed, 155 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1657051747898999300.sql diff --git a/data/sql/updates/pending_db_world/rev_1657051747898999300.sql b/data/sql/updates/pending_db_world/rev_1657051747898999300.sql new file mode 100644 index 000000000..1088ffded --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657051747898999300.sql @@ -0,0 +1,155 @@ +-- +-- ZG Herbalism Improvements +-- Out with the old +DELETE FROM `gameobject` WHERE `id` IN (180164, 180165, 180166, 180167, 180168); +SET @OGUID :=10495; +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+59; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +-- 2x per run +(@OGUID+0, 180164, 309, 1977, 3379, 1, 1, -12352.3076171875, -1672.7291259765625, 131.1775665283203125, 2.757613182067871093, 0, 0, 0.981626510620117187, 0.190812408924102783, 259200, 255, 1, 0), -- 180164 (Area: 3379 - Difficulty: 148) +(@OGUID+1, 180164, 309, 1977, 3381, 1, 1, -11615.0302734375, -1846.4097900390625, 41.41478729248046875, 3.071766138076782226, 0, 0, 0.999390602111816406, 0.034906134009361267, 259200, 255, 1, 0), -- 180164 (Area: 3381 - Difficulty: 148) +(@OGUID+2, 180164, 309, 1977, 3398, 1, 1, -11855.5986328125, -1886.9422607421875, 64.4054412841796875, 0.15707901120185852, 0, 0, 0.078458786010742187, 0.996917366981506347, 259200, 255, 1, 0), -- 180164 (Area: 3398 - Difficulty: 148) +(@OGUID+3, 180164, 309, 1977, 3378, 1, 1, -12155.978515625, -1466.7249755859375, 131.1008453369140625, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 259200, 255, 1, 0), -- 180164 (Area: 3378 - Difficulty: 148) +(@OGUID+4, 180164, 309, 1977, 3383, 1, 1, -11556.16015625, -1480.0262451171875, 67.13071441650390625, 5.724681377410888671, 0, 0, -0.27563667297363281, 0.961261868476867675, 259200, 255, 1, 0), -- 180164 (Area: 3383 - Difficulty: 148) +(@OGUID+5, 180164, 309, 1977, 3380, 1, 1, -12347.1650390625, -1845.5013427734375, 131.0122833251953125, 3.351046562194824218, 0, 0, -0.99452114105224609, 0.104535527527332305, 259200, 255, 1, 0), -- 180164 (Area: 3380 - Difficulty: 148) +-- 3x per run +(@OGUID+6, 180165, 309, 1977, 1977, 1, 1, -11874.828125, -1382.4014892578125, 68.26617431640625, 5.270895957946777343, 0, 0, -0.48480892181396484, 0.87462007999420166, 259200, 255, 1, 0), -- 180165 (Area: 1977 - Difficulty: 148) +(@OGUID+7, 180165, 309, 1977, 0, 1, 1, -11969.421875, -1825.954833984375, 56.21387481689453125, 2.164205789566040039, 0, 0, 0.882946968078613281, 0.469472706317901611, 259200, 255, 1, 0), -- 180165 (Area: 0 - Difficulty: 148) +(@OGUID+8, 180165, 309, 1977, 0, 1, 1, -11944.572265625, -1760.673828125, 53.51939773559570312, 4.398232460021972656, 0, 0, -0.80901622772216796, 0.587786316871643066, 259200, 255, 1, 0), -- 180165 (Area: 0 - Difficulty: 148) +(@OGUID+9, 180165, 309, 1977, 3380, 1, 1, -12334.537109375, -1899.6531982421875, 131.2425537109375, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 259200, 255, 1, 0), -- 180165 (Area: 3380 - Difficulty: 148) +(@OGUID+10, 180165, 309, 1977, 3381, 1, 1, -11688.1181640625, -1941.77587890625, 56.8599700927734375, 4.363324165344238281, 0, 0, -0.81915187835693359, 0.573576688766479492, 259200, 255, 1, 0), -- 180165 (Area: 3381 - Difficulty: 148) +(@OGUID+11, 180165, 309, 1977, 3397, 1, 1, -12074.7080078125, -1696.2828369140625, 46.49346542358398437, 2.024578809738159179, 0, 0, 0.848047256469726562, 0.529920578002929687, 259200, 255, 1, 0), -- 180165 (Area: 3397 - Difficulty: 148) +(@OGUID+12, 180165, 309, 1977, 3377, 1, 1, -11995.224609375, -1621.958740234375, 33.25662994384765625, 4.328419685363769531, 0, 0, -0.82903671264648437, 0.559194147586822509, 259200, 255, 1, 0), -- 180165 (Area: 3377 - Difficulty: 148) +(@OGUID+13, 180165, 309, 1977, 0, 1, 1, -11657.6787109375, -1565.70556640625, 41.41679763793945312, 4.1538848876953125, 0, 0, -0.8746194839477539, 0.484810054302215576, 259200, 255, 1, 0), -- 180165 (Area: 0 - Difficulty: 148) +(@OGUID+14, 180165, 309, 1977, 3377, 1, 1, -11972.7548828125, -1553.0035400390625, 40.840301513671875, 4.677483558654785156, 0, 0, -0.71933937072753906, 0.694658815860748291, 259200, 255, 1, 0), -- 180165 (Area: 3377 - Difficulty: 148) +-- 4x per run +(@OGUID+15, 180166, 309, 1977, 3378, 1, 1, -12225.857421875, -1419.9320068359375, 131.391693115234375, 5.026549339294433593, 0, 0, -0.5877847671508789, 0.809017360210418701, 259200, 255, 1, 0), -- 180166 (Area: 3378 - Difficulty: 148) +(@OGUID+16, 180166, 309, 1977, 3380, 1, 1, -12264.7392578125, -1869.3797607421875, 133.451812744140625, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 259200, 255, 1, 0), -- 180166 (Area: 3380 - Difficulty: 148) +(@OGUID+17, 180166, 309, 1977, 3381, 1, 1, -11733.876953125, -1945.6007080078125, 58.68107986450195312, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 259200, 255, 1, 0), -- 180166 (Area: 3381 - Difficulty: 148) +(@OGUID+18, 180166, 309, 1977, 0, 1, 1, -11526.833984375, -1493.2757568359375, 80.06081390380859375, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 259200, 255, 1, 0), -- 180166 (Area: 0 - Difficulty: 148) +(@OGUID+19, 180166, 309, 1977, 3378, 1, 1, -12298.2666015625, -1464.2061767578125, 130.6002044677734375, 2.024578809738159179, 0, 0, 0.848047256469726562, 0.529920578002929687, 259200, 255, 1, 0), -- 180166 (Area: 3378 - Difficulty: 148) +(@OGUID+20, 180166, 309, 1977, 3380, 1, 1, -12255.2861328125, -1963.6082763671875, 136.0483245849609375, 0.610863447189331054, 0, 0, 0.3007049560546875, 0.953717231750488281, 259200, 255, 1, 0), -- 180166 (Area: 3380 - Difficulty: 148) +(@OGUID+21, 180166, 309, 1977, 0, 1, 1, -11657.0380859375, -1457.0177001953125, 61.00021743774414062, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 259200, 255, 1, 0), -- 180166 (Area: 0 - Difficulty: 148) +(@OGUID+22, 180166, 309, 1977, 3382, 1, 1, -11561.296875, -1805.5086669921875, 62.4127960205078125, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 259200, 255, 1, 0), -- 180166 (Area: 3382 - Difficulty: 148) +(@OGUID+23, 180166, 309, 1977, 3380, 1, 1, -12346.77734375, -1965.004150390625, 133.1948394775390625, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 259200, 255, 1, 0), -- 180166 (Area: 3380 - Difficulty: 148) +(@OGUID+24, 180166, 309, 1977, 0, 1, 1, -12062.20703125, -1433.8271484375, 130.2298736572265625, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 259200, 255, 1, 0), -- 180166 (Area: 0 - Difficulty: 148) +(@OGUID+25, 180166, 309, 1977, 3381, 1, 1, -11804.419921875, -1902.00390625, 50.65089035034179687, 5.93412017822265625, 0, 0, -0.17364788055419921, 0.984807789325714111, 259200, 255, 1, 0), -- 180166 (Area: 3381 - Difficulty: 148) +(@OGUID+26, 180166, 309, 1977, 3380, 1, 1, -12396.15234375, -1939.6922607421875, 133.1513214111328125, 0.017452461645007133, 0, 0, 0.008726119995117187, 0.999961912631988525, 259200, 255, 1, 0), -- 180166 (Area: 3380 - Difficulty: 148) +-- 5x per run +(@OGUID+27, 180167, 309, 1977, 1977, 1, 1, -11834.8427734375, -1326.258056640625, 67.55466461181640625, 3.647741317749023437, 0, 0, -0.96814727783203125, 0.250381410121917724, 259200, 255, 1, 0), -- 180167 (Area: 1977 - Difficulty: 148) +(@OGUID+28, 180167, 309, 1977, 3379, 1, 1, -12380.33203125, -1662.3756103515625, 131.9833221435546875, 2.426007747650146484, 0, 0, 0.936672210693359375, 0.350207358598709106, 259200, 255, 1, 0), -- 180167 (Area: 3379 - Difficulty: 148) +(@OGUID+29, 180167, 309, 1977, 3380, 1, 1, -12197.279296875, -1983.09765625, 132.59954833984375, 4.834563255310058593, 0, 0, -0.66261959075927734, 0.748956084251403808, 259200, 255, 1, 0), -- 180167 (Area: 3380 - Difficulty: 148) +(@OGUID+30, 180167, 309, 1977, 3382, 1, 1, -11585.2197265625, -1573.601806640625, 50.7598114013671875, 1.169368624687194824, 0, 0, 0.551936149597167968, 0.833886384963989257, 259200, 255, 1, 0), -- 180167 (Area: 3382 - Difficulty: 148) +(@OGUID+31, 180167, 309, 1977, 3382, 1, 1, -11656.2080078125, -1572.1558837890625, 39.80617523193359375, 3.94444584846496582, 0, 0, -0.92050457000732421, 0.3907318115234375, 259200, 255, 1, 0), -- 180167 (Area: 3382 - Difficulty: 148) +(@OGUID+32, 180167, 309, 1977, 0, 1, 1, -11988.107421875, -1825.9349365234375, 58.52939224243164062, 4.468043327331542968, 0, 0, -0.7880105972290039, 0.615661680698394775, 259200, 255, 1, 0), -- 180167 (Area: 0 - Difficulty: 148) +(@OGUID+33, 180167, 309, 1977, 3380, 1, 1, -12396.8994140625, -1900.165771484375, 130.84661865234375, 4.886923789978027343, 0, 0, -0.64278697967529296, 0.766044974327087402, 259200, 255, 1, 0), -- 180167 (Area: 3380 - Difficulty: 148) +(@OGUID+34, 180167, 309, 1977, 3382, 1, 1, -11457.0078125, -1596.500244140625, 49.68614959716796875, 5.532694816589355468, 0, 0, -0.3665008544921875, 0.93041771650314331, 259200, 255, 1, 0), -- 180167 (Area: 3382 - Difficulty: 148) +(@OGUID+35, 180167, 309, 1977, 1977, 1, 1, -12002.814453125, -1489.2037353515625, 80.35589599609375, 0.331610709428787231, 0, 0, 0.16504669189453125, 0.986285746097564697, 259200, 255, 1, 0), -- 180167 (Area: 1977 - Difficulty: 148) +(@OGUID+36, 180167, 309, 1977, 1977, 1, 1, -11742.052734375, -1337.2369384765625, 63.72993850708007812, 2.775068521499633789, 0, 0, 0.983254432678222656, 0.182238012552261352, 259200, 255, 1, 0), -- 180167 (Area: 1977 - Difficulty:148) +(@OGUID+37, 180167, 309, 1977, 3381, 1, 1, -11786.6689453125, -1896.8082275390625, 48.98270034790039062, 3.316144466400146484, 0, 0, -0.99619388580322265, 0.087165042757987976, 259200, 255, 1, 0), -- 180167 (Area: 3381 - Difficulty: 148) +(@OGUID+38, 180167, 309, 1977, 3382, 1, 1, -11583.681640625, -1663.031494140625, 50.640869140625, 5.218535900115966796, 0, 0, -0.507537841796875, 0.861629426479339599, 259200, 255, 1, 0), -- 180167 (Area: 3382 - Difficulty: 148) +(@OGUID+39, 180167, 309, 1977, 3382, 1, 1, -11558.208984375, -1739.44921875, 38.6247100830078125, 5.759587764739990234, 0, 0, -0.25881862640380859, 0.965925931930541992, 259200, 255, 1, 0), -- 180167 (Area: 3382 - Difficulty: 148) +(@OGUID+40, 180167, 309, 1977, 3379, 1, 1, -12298.3505859375, -1684.076171875, 132.49176025390625, 1.448621988296508789, 0, 0, 0.662619590759277343, 0.748956084251403808, 259200, 255, 1, 0), -- 180167 (Area: 3379 - Difficulty: 148) +(@OGUID+41, 180167, 309, 1977, 3379, 1, 1, -12288.3173828125, -1625.1156005859375, 130.26123046875, 1.308995485305786132, 0, 0, 0.608760833740234375, 0.793353796005249023, 259200, 255, 1, 0), -- 180167 (Area: 3379 - Difficulty: 148) +-- 5x per run +(@OGUID+42, 180168, 309, 1977, 1977, 1, 1, -12059.7119140625, -1443.0657958984375, 130.1773834228515625, 3.45575571060180664, 0, 0, -0.98768806457519531, 0.156436234712600708, 259200, 255, 1, 0), -- 180168 (Area: 1977 - Difficulty: 148) +(@OGUID+43, 180168, 309, 1977, 3380, 1, 1, -12185.90625, -1901.982666015625, 133.235443115234375, 0.820303261280059814, 0, 0, 0.398748397827148437, 0.917060375213623046, 259200, 255, 1, 0), -- 180168 (Area: 3380 - Difficulty: 148) +(@OGUID+44, 180168, 309, 1977, 3398, 1, 1, -11820.98046875, -1892.170166015625, 49.65859603881835937, 0.977383077144622802, 0, 0, 0.469470977783203125, 0.882947921752929687, 259200, 255, 1, 0), -- 180168 (Area: 3398 - Difficulty: 148) +(@OGUID+45, 180168, 309, 1977, 3382, 1, 1, -11543.546875, -1548.4566650390625, 51.72608566284179687, 5.026549339294433593, 0, 0, -0.5877847671508789, 0.809017360210418701, 259200, 255, 1, 0), -- 180168 (Area: 3382 - Difficulty: 148) +(@OGUID+46, 180168, 309, 1977, 3383, 1, 1, -11595.52734375, -1227.24560546875, 78.2644805908203125, 0.453785061836242675, 0, 0, 0.224950790405273437, 0.974370121955871582, 259200, 255, 1, 0), -- 180168 (Area: 3383 - Difficulty: 148) +(@OGUID+47, 180168, 309, 1977, 1977, 1, 1, -11986.20703125, -1475.364990234375, 79.697052001953125, 3.281238555908203125, 0, 0, -0.99756336212158203, 0.069766148924827575, 259200, 255, 1, 0), -- 180168 (Area: 1977 - Difficulty: 148) +(@OGUID+48, 180168, 309, 1977, 0, 1, 1, -11748.7412109375, -1906.1866455078125, 55.90282440185546875, 4.537858963012695312, 0, 0, -0.76604366302490234, 0.642788589000701904, 259200, 255, 1, 0), -- 180168 (Area: 0 - Difficulty: 148) +(@OGUID+49, 180168, 309, 1977, 3380, 1, 1, -12396.8330078125, -1835.8116455078125, 132.7980499267578125, 5.881760597229003906, 0, 0, -0.19936752319335937, 0.979924798011779785, 259200, 255, 1, 0), -- 180168 (Area: 3380 - Difficulty: 148) +(@OGUID+50, 180168, 309, 1977, 3383, 1, 1, -11539.666015625, -1244.560302734375, 78.74395751953125, 1.291541695594787597, 0, 0, 0.60181427001953125, 0.798636078834533691, 259200, 255, 1, 0), -- 180168 (Area: 3383 - Difficulty: 148) +(@OGUID+51, 180168, 309, 1977, 3382, 1, 1, -11456.5654296875, -1606.9561767578125, 49.19579696655273437, 2.024578809738159179, 0, 0, 0.848047256469726562, 0.529920578002929687, 259200, 255, 1, 0), -- 180168 (Area: 3382 - Difficulty: 148) +(@OGUID+52, 180168, 309, 1977, 3382, 1, 1, -11517.21484375, -1688.4107666015625, 51.14802932739257812, 3.490667104721069335, 0, 0, -0.98480701446533203, 0.173652306199073791, 259200, 255, 1, 0), -- 180168 (Area: 3382 - Difficulty: 148) +(@OGUID+53, 180168, 309, 1977, 3381, 1, 1, -11856.97265625, -1854.9390869140625, 63.86383819580078125, 0.506144583225250244, 0, 0, 0.250379562377929687, 0.968147754669189453, 259200, 255, 1, 0), -- 180168 (Area: 3381 - Difficulty: 148) +(@OGUID+54, 180168, 309, 1977, 3380, 1, 1, -12159.3583984375, -1956.9908447265625, 134.0766448974609375, 6.161012649536132812, 0, 0, -0.06104850769042968, 0.998134791851043701, 259200, 255, 1, 0), -- 180168 (Area: 3380 - Difficulty: 148) +(@OGUID+55, 180168, 309, 1977, 3378, 1, 1, -12236.51953125, -1472.1080322265625, 130.6569366455078125, 4.502951622009277343, 0, 0, -0.7771453857421875, 0.629321098327636718, 259200, 255, 1, 0), -- 180168 (Area: 3378 - Difficulty: 148) +(@OGUID+56, 180168, 309, 1977, 3383, 1, 1, -11608.912109375, -1274.0670166015625, 79.27100372314453125, 0.017452461645007133, 0, 0, 0.008726119995117187, 0.999961912631988525, 259200, 255, 1, 0), -- 180168 (Area: 3383 - Difficulty: 148) +(@OGUID+57, 180168, 309, 1977, 3380, 1, 1, -12347.7392578125, -1926.5872802734375, 133.28985595703125, 5.532694816589355468, 0, 0, -0.3665008544921875, 0.93041771650314331, 259200, 255, 1, 0), -- 180168 (Area: 3380 - Difficulty: 148) +(@OGUID+58, 180168, 309, 1977, 0, 1, 1, -11650.0263671875, -1890.447509765625, 57.24088668823242187, 5.462882041931152343, 0, 0, -0.39874839782714843, 0.917060375213623046, 259200, 255, 1, 0), -- 180168 (Area: 0 - Difficulty: 148) +(@OGUID+59, 180168, 309, 1977, 3383, 1, 1, -11576.357421875, -1314.0804443359375, 80.03553009033203125, 0.610863447189331054, 0, 0, 0.3007049560546875, 0.953717231750488281, 259200, 255, 1, 0); -- 180168 (Area: 3383 - Difficulty: 148) + +DELETE FROM `pool_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+59; +DELETE FROM `pool_template` WHERE `entry` BETWEEN 395 AND 399; + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(395, 2, 'ZG Sungrass'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@OGUID+0, 395, 0, 'ZG Sungrass 1/6'), +(@OGUID+1, 395, 0, 'ZG Sungrass 2/6'), +(@OGUID+2, 395, 0, 'ZG Sungrass 3/6'), +(@OGUID+3, 395, 0, 'ZG Sungrass 4/6'), +(@OGUID+4, 395, 0, 'ZG Sungrass 5/6'), +(@OGUID+5, 395, 0, 'ZG Sungrass 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(396, 3, 'ZG Purple Lotus'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@OGUID+6, 396, 0, 'ZG Purple Lotus 1/9'), +(@OGUID+7, 396, 0, 'ZG Purple Lotus 2/9'), +(@OGUID+8, 396, 0, 'ZG Purple Lotus 3/9'), +(@OGUID+9, 396, 0, 'ZG Purple Lotus 4/9'), +(@OGUID+10, 396, 0, 'ZG Purple Lotus 5/9'), +(@OGUID+11, 396, 0, 'ZG Purple Lotus 6/9'), +(@OGUID+12, 396, 0, 'ZG Purple Lotus 7/9'), +(@OGUID+13, 396, 0, 'ZG Purple Lotus 8/9'), +(@OGUID+14, 396, 0, 'ZG Purple Lotus 9/9'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(397, 4, 'ZG Mountain Silversage'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@OGUID+15, 397, 0, 'ZG Mountain Silversage 1/12'), +(@OGUID+16, 397, 0, 'ZG Mountain Silversage 2/12'), +(@OGUID+17, 397, 0, 'ZG Mountain Silversage 3/12'), +(@OGUID+18, 397, 0, 'ZG Mountain Silversage 4/12'), +(@OGUID+19, 397, 0, 'ZG Mountain Silversage 5/12'), +(@OGUID+20, 397, 0, 'ZG Mountain Silversage 6/12'), +(@OGUID+21, 397, 0, 'ZG Mountain Silversage 7/12'), +(@OGUID+22, 397, 0, 'ZG Mountain Silversage 8/12'), +(@OGUID+23, 397, 0, 'ZG Mountain Silversage 9/12'), +(@OGUID+24, 397, 0, 'ZG Mountain Silversage 10/12'), +(@OGUID+25, 397, 0, 'ZG Mountain Silversage 11/12'), +(@OGUID+26, 397, 0, 'ZG Mountain Silversage 12/12'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(398, 5, 'ZG Golden Sansam'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@OGUID+27, 398, 0, 'ZG Golden Sansam 1/15'), +(@OGUID+28, 398, 0, 'ZG Golden Sansam 2/15'), +(@OGUID+29, 398, 0, 'ZG Golden Sansam 3/15'), +(@OGUID+30, 398, 0, 'ZG Golden Sansam 4/15'), +(@OGUID+31, 398, 0, 'ZG Golden Sansam 5/15'), +(@OGUID+32, 398, 0, 'ZG Golden Sansam 6/15'), +(@OGUID+33, 398, 0, 'ZG Golden Sansam 7/15'), +(@OGUID+34, 398, 0, 'ZG Golden Sansam 8/15'), +(@OGUID+35, 398, 0, 'ZG Golden Sansam 9/15'), +(@OGUID+36, 398, 0, 'ZG Golden Sansam 10/15'), +(@OGUID+37, 398, 0, 'ZG Golden Sansam 11/15'), +(@OGUID+38, 398, 0, 'ZG Golden Sansam 12/15'), +(@OGUID+39, 398, 0, 'ZG Golden Sansam 13/15'), +(@OGUID+40, 398, 0, 'ZG Golden Sansam 14/15'), +(@OGUID+41, 398, 0, 'ZG Golden Sansam 15/15'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(399, 5, 'ZG Dreamfoil'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@OGUID+42, 399, 0, 'ZG Dreamfoil 1/18'), +(@OGUID+43, 399, 0, 'ZG Dreamfoil 2/18'), +(@OGUID+44, 399, 0, 'ZG Dreamfoil 3/18'), +(@OGUID+45, 399, 0, 'ZG Dreamfoil 4/18'), +(@OGUID+46, 399, 0, 'ZG Dreamfoil 5/18'), +(@OGUID+47, 399, 0, 'ZG Dreamfoil 6/18'), +(@OGUID+48, 399, 0, 'ZG Dreamfoil 7/18'), +(@OGUID+49, 399, 0, 'ZG Dreamfoil 8/18'), +(@OGUID+50, 399, 0, 'ZG Dreamfoil 9/18'), +(@OGUID+51, 399, 0, 'ZG Dreamfoil 10/18'), +(@OGUID+52, 399, 0, 'ZG Dreamfoil 11/18'), +(@OGUID+53, 399, 0, 'ZG Dreamfoil 12/18'), +(@OGUID+54, 399, 0, 'ZG Dreamfoil 13/18'), +(@OGUID+55, 399, 0, 'ZG Dreamfoil 14/18'), +(@OGUID+56, 399, 0, 'ZG Dreamfoil 15/18'), +(@OGUID+57, 399, 0, 'ZG Dreamfoil 16/18'), +(@OGUID+58, 399, 0, 'ZG Dreamfoil 17/18'), +(@OGUID+59, 399, 0, 'ZG Dreamfoil 18/18'); From 86f05b39aa29460da73bcb2d0e8453aeb27a042e Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 14:21:07 +0000 Subject: [PATCH 076/119] chore(DB): import pending files Referenced commit(s): 66e5901d8377c21a486ea44579d3aa11b05b38a3 --- .../rev_1657051747898999300.sql => db_world/2022_07_09_02.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657051747898999300.sql => db_world/2022_07_09_02.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1657051747898999300.sql b/data/sql/updates/db_world/2022_07_09_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1657051747898999300.sql rename to data/sql/updates/db_world/2022_07_09_02.sql index 1088ffded..19b5a5e39 100644 --- a/data/sql/updates/pending_db_world/rev_1657051747898999300.sql +++ b/data/sql/updates/db_world/2022_07_09_02.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_01 -> 2022_07_09_02 -- -- ZG Herbalism Improvements -- Out with the old From 7e60a7a4f88df7db7c7d9deca6068b4b3673da18 Mon Sep 17 00:00:00 2001 From: temperrr Date: Sat, 9 Jul 2022 16:41:10 +0200 Subject: [PATCH 077/119] fix(DB/Creature): Zul'Gurub Patrols part 2 (#12304) --- .../pending_db_world/zgpatrolspart2.sql | 623 ++++++++++++++++++ 1 file changed, 623 insertions(+) create mode 100644 data/sql/updates/pending_db_world/zgpatrolspart2.sql diff --git a/data/sql/updates/pending_db_world/zgpatrolspart2.sql b/data/sql/updates/pending_db_world/zgpatrolspart2.sql new file mode 100644 index 000000000..9fb8905b6 --- /dev/null +++ b/data/sql/updates/pending_db_world/zgpatrolspart2.sql @@ -0,0 +1,623 @@ +UPDATE `creature` SET `wander_distance`=17,`MovementType`=1 WHERE `guid` IN (49295, 49303, 49304, 49306, 49800, 49814, 51344, 51580, 51581); +UPDATE `creature` SET `id1` = 11830 WHERE `guid` = 51392; +UPDATE `creature` SET `id1` = 11353 WHERE `guid` IN (51389, 51394); +UPDATE `creature` SET `id1` = 11357,`equipment_id` = 0 WHERE `guid` = 51389; +UPDATE `creature` SET `id1` = 11359,`equipment_id` = 0 WHERE `guid` = 51391; + +DELETE FROM `creature` WHERE `guid` IN (49149, 91457) OR (`id1` = 14750 AND `guid` IN (52265, 52266)) OR (`id1` = 11368 AND `guid` IN (52267, 52268, 52269, 52270, 52271)); +INSERT INTO `creature` (`guid`, `id1`, `id2`, `id3`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `wander_distance`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`, `ScriptName`, `VerifiedBuild`) VALUES +(91457, 11353, 0, 0, 309, 0, 0, 1, 1, 1, -11625.6, -1488.06, 45.3629, 4.20245, 7200, 0, 0, 21364, 0, 2, 0, 0, 0, '', 0), +(49149, 15111, 0, 0, 309, 0, 0, 1, 1, 1, -11856.7, -1871.74, 64.2785, 4.6087, 7200, 5, 0, 12575, 9944, 1, 0, 0, 0, '', 0), +(52265, 14750, 0, 0, 309, 0, 0, 1, 1, 0, -12139.7, -1461.39, 132.725, 3.49715, 7200, 4, 0, 31440, 0, 1, 0, 0, 0, '', 0), +(52266, 14750, 0, 0, 309, 0, 0, 1, 1, 0, -12199.8, -1432.72, 133.302, 3.49715, 7200, 4, 0, 31440, 0, 1, 0, 0, 0, '', 0), +(52267, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12199.8, -1432.72, 133.302, 5.11337, 7200, 0, 0, 5341, 0, 2, 0, 0, 0, '', 0), +(52268, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12199.8, -1432.72, 133.302, 5.01408, 7200, 4, 0, 5341, 0, 1, 0, 0, 0, '', 0), +(52269, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12199.8, -1432.72, 133.302, 3.19756, 7200, 4, 0, 5341, 0, 1, 0, 0, 0, '', 0), +(52270, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12199.8, -1432.72, 133.302, 5.19928, 7200, 4, 0, 5341, 0, 1, 0, 0, 0, '', 0), +(52271, 11368, 0, 0, 309, 0, 0, 1, 1, 0, -12199.8, -1432.72, 133.302, 5.09036, 7200, 4, 0, 5341, 0, 1, 0, 0, 0, '', 0); + +SET @NPC := 52267; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12279.661,`position_y`=-1437.7651,`position_z`=130.7252 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=1, `wander_distance`= 4, `position_x`=-12279.661,`position_y`=-1437.7651,`position_z`=130.7252 WHERE `guid` IN (52265, 52266, 52268, 52269, 52270, 52271); +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12279.661,-1437.7651,130.7252,0,0,0,0,100,0), +(@PATH,2,-12273.889,-1442.9456,130.7252,0,0,0,0,100,0), +(@PATH,3,-12272.747,-1455.5314,130.7252,0,0,0,0,100,0), +(@PATH,4,-12277.202,-1464.8107,130.7252,0,0,0,0,100,0), +(@PATH,5,-12284.19,-1473.1727,130.7252,0,0,0,0,100,0), +(@PATH,6,-12294.534,-1480.2686,130.8817,0,0,0,0,100,0), +(@PATH,7,-12304.744,-1479.3315,132.01277,0,0,0,0,100,0), +(@PATH,8,-12316.196,-1462.9426,130.70255,0,0,0,0,100,0), +(@PATH,9,-12305.534,-1452.7662,130.70255,0,0,0,0,100,0), +(@PATH,10,-12293.26,-1443.0798,130.7252,0,0,0,0,100,0), +(@PATH,11,-12282.498,-1445.1747,130.7252,0,0,0,0,100,0), +(@PATH,12,-12280.598,-1456.5935,130.7252,0,0,0,0,100,0), +(@PATH,13,-12285.771,-1470.3275,130.7252,0,0,0,0,100,0), +(@PATH,14,-12298.271,-1481.0421,131.14806,0,0,0,0,100,0), +(@PATH,15,-12309.94,-1483.0845,132.7618,0,0,0,0,100,0), +(@PATH,16,-12314.164,-1468.745,130.71321,0,0,0,0,100,0), +(@PATH,17,-12311.926,-1459.6638,130.70255,0,0,0,0,100,0), +(@PATH,18,-12307.524,-1451.2375,130.70255,0,0,0,0,100,0), +(@PATH,19,-12298.418,-1444.7874,130.7252,0,0,0,0,100,0), +(@PATH,20,-12290.997,-1444.8539,130.7252,0,0,0,0,100,0), +(@PATH,21,-12286.294,-1450.8981,130.7252,0,0,0,0,100,0), +(@PATH,22,-12286.32,-1459.2678,130.7252,0,0,0,0,100,0), +(@PATH,23,-12291.313,-1470.921,130.7252,0,0,0,0,100,0), +(@PATH,24,-12301.496,-1479.0215,131.83821,0,0,0,0,100,0), +(@PATH,25,-12310.952,-1473.5144,131.47957,0,0,0,0,100,0), +(@PATH,26,-12310.798,-1461.9359,130.70255,0,0,0,0,100,0), +(@PATH,27,-12295.607,-1443.4049,130.7252,0,0,0,0,100,0); + +SET @NPC := 49123; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12199.814,`position_y`=-1432.7246,`position_z`=133.30249 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=1, `wander_distance`= 4, `position_x`=-12199.814,`position_y`=-1432.7246,`position_z`=133.30249 WHERE `guid` IN (49128, 49127, 49124, 49125, 49130, 49129); +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12199.814,-1432.7246,133.30249,0,0,0,0,100,0), +(@PATH,2,-12201.092,-1418.7756,134.06944,0,0,0,0,100,0), +(@PATH,3,-12216.145,-1407.9874,132.45421,0,0,0,0,100,0), +(@PATH,4,-12231.352,-1405.2097,132.38829,0,0,0,0,100,0), +(@PATH,5,-12243.286,-1411.2496,132.7252,0,0,0,0,100,0), +(@PATH,6,-12238.431,-1422.679,132.7252,0,0,0,0,100,0), +(@PATH,7,-12229.905,-1442.7914,132.69781,0,0,0,0,100,0), +(@PATH,8,-12225.549,-1451.114,132.69781,0,0,0,0,100,0), +(@PATH,9,-12214.378,-1447.3993,132.69781,0,0,0,0,100,0), +(@PATH,10,-12206.028,-1432.4019,132.88976,0,0,0,0,100,0), +(@PATH,11,-12216.252,-1414.8685,132.7252,0,0,0,0,100,0), +(@PATH,12,-12228.853,-1409.4326,132.9503,0,0,0,0,100,0), +(@PATH,13,-12238.942,-1405.217,132.7252,0,0,0,0,100,0), +(@PATH,14,-12251.546,-1405.7375,132.09508,0,0,0,0,100,0), +(@PATH,15,-12255.312,-1419.062,132.7252,0,0,0,0,100,0), +(@PATH,16,-12255.312,-1419.062,132.7252,0,0,0,0,100,0), +(@PATH,17,-12248.536,-1428.0126,132.7252,0,0,0,0,100,0), +(@PATH,18,-12235.721,-1434.8424,132.7252,0,0,0,0,100,0), +(@PATH,19,-12224.75,-1444.1573,132.69781,0,0,0,0,100,0), +(@PATH,20,-12218.656,-1453.3082,132.69781,0,0,0,0,100,0), +(@PATH,21,-12211.176,-1456.2633,132.69781,0,0,0,0,100,0), +(@PATH,22,-12201.237,-1448.5684,132.69781,0,0,0,0,100,0), +(@PATH,23,-12202.742,-1439.2172,132.93121,0,0,0,0,100,0), +(@PATH,24,-12205.002,-1422.5133,132.81236,0,0,0,0,100,0), +(@PATH,25,-12218.03,-1411.0071,132.19273,0,0,0,0,100,0), +(@PATH,26,-12232.668,-1409.5203,132.2147,0,0,0,0,100,0), +(@PATH,27,-12242.129,-1411.943,132.7252,0,0,0,0,100,0), +(@PATH,28,-12244.375,-1420.1545,132.7252,0,0,0,0,100,0), +(@PATH,29,-12239.236,-1429.6349,132.7252,0,0,0,0,100,0), +(@PATH,30,-12226.557,-1440.8917,132.69781,0,0,0,0,100,0), +(@PATH,31,-12210.098,-1440.5779,132.69781,0,0,0,0,100,0); + +SET @NPC := 49651; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11550.093,`position_y`=-1223.9448,`position_z`=80.220146 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11550.093,`position_y`=-1223.9448,`position_z`=80.220146 WHERE `guid` IN (49652, 49653, 49654); +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); + +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11550.093,-1223.9448,80.220146,0,0,0,0,100,0), +(@PATH,2,-11557.223,-1222.4227,79.65862,0,0,0,0,100,0), +(@PATH,3,-11553.573,-1223.2018,79.88592,0,0,0,0,100,0), +(@PATH,4,-11571.926,-1223.9309,78.613945,0,0,0,0,100,0), +(@PATH,5,-11587.294,-1224.643,78.26922,0,0,0,0,100,0), +(@PATH,6,-11573.703,-1224.0151,78.593925,0,0,0,0,100,0), +(@PATH,7,-11587.294,-1224.643,78.26922,0,0,0,0,100,0), +(@PATH,8,-11596.543,-1229.5101,78.13177,0,0,0,0,100,0), +(@PATH,9,-11593.092,-1227.6938,78.18306,0,0,0,0,100,0), +(@PATH,10,-11602.165,-1234.0627,78.7508,0,0,0,0,100,0), +(@PATH,11,-11617.252,-1245.9791,81.09846,0,0,0,0,100,0), +(@PATH,12,-11615.512,-1244.5958,81.12922,0,0,0,0,100,0), +(@PATH,13,-11618.764,-1255.8805,80.15998,0,0,0,0,100,0), +(@PATH,14,-11610.591,-1265.3711,79.51179,0,0,0,0,100,0), +(@PATH,15,-11615.949,-1259.15,80.24421,0,0,0,0,100,0), +(@PATH,16,-11610.591,-1265.3711,79.51179,0,0,0,0,100,0), +(@PATH,17,-11605.663,-1273.7218,78.79365,0,0,0,0,100,0), +(@PATH,18,-11605.728,-1286.811,79.642525,0,0,0,0,100,0), +(@PATH,19,-11605.718,-1284.0552,79.57482,0,0,0,0,100,0), +(@PATH,20,-11610.82,-1291.4453,79.481636,0,0,0,0,100,0), +(@PATH,21,-11624.228,-1295.4607,79.237495,0,0,0,0,100,0), +(@PATH,22,-11626.538,-1301.7444,79.03057,0,0,0,0,100,0), +(@PATH,23,-11624.65,-1296.6116,79.1996,0,0,0,0,100,0), +(@PATH,24,-11619.523,-1305.1301,78.82818,0,0,0,0,100,0), +(@PATH,25,-11606.912,-1305.0999,78.94073,0,0,0,0,100,0), +(@PATH,26,-11613.363,-1305.1178,79.253716,0,0,0,0,100,0), +(@PATH,27,-11606.912,-1305.0999,78.94073,0,0,0,0,100,0), +(@PATH,28,-11596.496,-1293.9733,78.49969,0,0,0,0,100,0), +(@PATH,29,-11595.904,-1278.656,78.05364,0,0,0,0,100,0), +(@PATH,30,-11596.081,-1283.3551,78.64007,0,0,0,0,100,0), +(@PATH,31,-11603.361,-1272.9172,78.54609,0,0,0,0,100,0), +(@PATH,32,-11609.264,-1264.9315,79.297676,0,0,0,0,100,0), +(@PATH,33,-11616.075,-1255.8618,80.27912,0,0,0,0,100,0), +(@PATH,34,-11614.406,-1247.4045,80.718575,0,0,0,0,100,0), +(@PATH,35,-11615.159,-1257.0778,80.14802,0,0,0,0,100,0), +(@PATH,36,-11614.406,-1247.4045,80.718575,0,0,0,0,100,0), +(@PATH,37,-11601.293,-1235.7604,78.521065,0,0,0,0,100,0), +(@PATH,38,-11614.517,-1248.9042,80.55207,0,0,0,0,100,0), +(@PATH,39,-11601.293,-1235.7604,78.521065,0,0,0,0,100,0), +(@PATH,40,-11595.637,-1230.9723,77.77166,0,0,0,0,100,0), +(@PATH,41,-11597.134,-1232.2388,78.25164,0,0,0,0,100,0), +(@PATH,42,-11586.536,-1226.437,77.81951,0,0,0,0,100,0), +(@PATH,43,-11572.477,-1226.1782,78.07488,0,0,0,0,100,0), +(@PATH,44,-11578.927,-1226.3036,78.00222,0,0,0,0,100,0), +(@PATH,45,-11572.477,-1226.1782,78.07488,0,0,0,0,100,0), +(@PATH,46,-11564.836,-1228.5527,78.7326,0,0,0,0,100,0), +(@PATH,47,-11558.235,-1235.8303,79.168465,0,0,0,0,100,0), +(@PATH,48,-11559.544,-1245.3492,78.530525,0,0,0,0,100,0), +(@PATH,49,-11558.78,-1252.0249,78.530525,0,0,0,0,100,0), +(@PATH,50,-11559.316,-1243.6807,78.57619,0,0,0,0,100,0), +(@PATH,51,-11558.78,-1252.0249,78.530525,0,0,0,0,100,0), +(@PATH,52,-11553.219,-1257.0553,78.854256,0,0,0,0,100,0), +(@PATH,53,-11558.801,-1251.7013,78.530525,0,0,0,0,100,0), +(@PATH,54,-11553.219,-1257.0553,78.854256,0,0,0,0,100,0), +(@PATH,55,-11545.639,-1258.4368,78.655525,0,0,0,0,100,0), +(@PATH,56,-11538.496,-1250.3383,78.8484,0,0,0,0,100,0), +(@PATH,57,-11542.667,-1255.0679,78.735756,0,0,0,0,100,0), +(@PATH,58,-11538.496,-1250.3383,78.8484,0,0,0,0,100,0), +(@PATH,59,-11536.562,-1241.876,79.543465,0,0,0,0,100,0), +(@PATH,60,-11537.724,-1233.9279,80.84254,0,0,0,0,100,0), +(@PATH,61,-11537.29,-1236.8806,80.50465,0,0,0,0,100,0), +(@PATH,62,-11543.108,-1228.7406,80.861015,0,0,0,0,100,0); + +SET @NPC := 49359; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11573.295,`position_y`=-1292.3151,`position_z`=77.6076 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11573.295,`position_y`=-1292.3151,`position_z`=77.6076 WHERE `guid` IN (49389, 49361, 49362); +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11573.295,-1292.3151,77.6076,0,0,0,0,100,0), +(@PATH,2,-11578.533,-1292.2468,77.6076,0,0,0,0,100,0), +(@PATH,3,-11568.895,-1290.8673,77.6076,0,0,0,0,100,0), +(@PATH,4,-11564.248,-1288.008,77.61754,0,0,0,0,100,0), +(@PATH,5,-11558.108,-1284.228,77.61754,0,0,0,0,100,0), +(@PATH,6,-11551.872,-1280.8896,77.61754,0,0,0,0,100,0), +(@PATH,7,-11547.022,-1278.6217,77.61754,0,0,0,0,100,0), +(@PATH,8,-11541.502,-1275.4727,77.699814,0,0,0,0,100,0), +(@PATH,9,-11535.807,-1272.9,78.52379,0,0,0,0,100,0), +(@PATH,10,-11538.608,-1274.1652,78.08458,0,0,0,0,100,0), +(@PATH,11,-11530.607,-1273.916,79.139114,0,0,0,0,100,0), +(@PATH,12,-11523.014,-1274.1941,79.639114,0,0,0,0,100,0), +(@PATH,13,-11526.356,-1277.2069,79.514114,0,0,0,0,100,0), +(@PATH,14,-11533.672,-1277.9888,78.76427,0,0,0,0,100,0), +(@PATH,15,-11539.865,-1279.0991,77.8961,0,0,0,0,100,0), +(@PATH,16,-11531.995,-1277.8068,78.98726,0,0,0,0,100,0), +(@PATH,17,-11539.865,-1279.0991,77.8961,0,0,0,0,100,0), +(@PATH,18,-11545.074,-1280.2617,77.46495,0,0,0,0,100,0), +(@PATH,19,-11550.38,-1283.0656,77.61754,0,0,0,0,100,0), +(@PATH,20,-11558.382,-1288.1755,77.61754,0,0,0,0,100,0), +(@PATH,21,-11565.479,-1292.4176,77.61754,0,0,0,0,100,0), +(@PATH,22,-11571.892,-1295.2625,77.6076,0,0,0,0,100,0), +(@PATH,23,-11577.398,-1298.0808,77.6076,0,0,0,0,100,0), +(@PATH,24,-11572.176,-1295.4081,77.6076,0,0,0,0,100,0), +(@PATH,25,-11585.52,-1301.9451,77.67639,0,0,0,0,100,0), +(@PATH,26,-11589.563,-1305.7449,77.67639,0,0,0,0,100,0), +(@PATH,27,-11593.048,-1310.1058,77.64465,0,0,0,0,100,0), +(@PATH,28,-11599.742,-1319.1442,77.55139,0,0,0,0,100,0), +(@PATH,29,-11591.976,-1308.7777,77.65402,0,0,0,0,100,0), +(@PATH,30,-11599.742,-1319.1442,77.55139,0,0,0,0,100,0), +(@PATH,31,-11596.848,-1315.2811,77.59797,0,0,0,0,100,0), +(@PATH,32,-11601.772,-1324.7399,77.55523,0,0,0,0,100,0), +(@PATH,33,-11605.479,-1334.0862,77.55613,0,0,0,0,100,0), +(@PATH,34,-11609.26,-1342.6189,77.6323,0,0,0,0,100,0), +(@PATH,35,-11610.773,-1352.7749,77.55613,0,0,0,0,100,0), +(@PATH,36,-11610.197,-1348.9067,77.645,0,0,0,0,100,0), +(@PATH,37,-11611.939,-1368.4354,75.22457,0,0,0,0,100,0), +(@PATH,38,-11611.607,-1364.8892,76.27732,0,0,0,0,100,0), +(@PATH,39,-11611.77,-1382.5566,71.45577,0,0,0,0,100,0), +(@PATH,40,-11611.919,-1396.4943,67.74264,0,0,0,0,100,0), +(@PATH,41,-11611.881,-1392.0277,69.02648,0,0,0,0,100,0), +(@PATH,42,-11611.207,-1406.998,65.316864,0,0,0,0,100,0), +(@PATH,43,-11611.176,-1420.5205,61.98801,0,0,0,0,100,0), +(@PATH,44,-11611.206,-1407.707,65.139626,0,0,0,0,100,0), +(@PATH,45,-11611.176,-1420.5205,61.98801,0,0,0,0,100,0), +(@PATH,46,-11614.535,-1423.8512,60.785374,0,0,0,0,100,0), +(@PATH,47,-11618.927,-1420.7843,60.744602,0,0,0,0,100,0), +(@PATH,48,-11618.428,-1412.8008,62.566868,0,0,0,0,100,0), +(@PATH,49,-11618.237,-1398.9095,66.78097,0,0,0,0,100,0), +(@PATH,50,-11618.313,-1404.4672,65.30759,0,0,0,0,100,0), +(@PATH,51,-11618.125,-1388.1809,69.71139,0,0,0,0,100,0), +(@PATH,52,-11617.474,-1372.5542,74.23116,0,0,0,0,100,0), +(@PATH,53,-11617.998,-1385.0753,70.68411,0,0,0,0,100,0), +(@PATH,54,-11617.474,-1372.5542,74.23116,0,0,0,0,100,0), +(@PATH,55,-11614.303,-1362.1172,76.78953,0,0,0,0,100,0), +(@PATH,56,-11614.15,-1351.4323,77.55613,0,0,0,0,100,0), +(@PATH,57,-11614.189,-1354.0997,77.55613,0,0,0,0,100,0), +(@PATH,58,-11610.35,-1337.7463,77.55613,0,0,0,0,100,0), +(@PATH,59,-11603.985,-1322.4636,77.55523,0,0,0,0,100,0), +(@PATH,60,-11607.471,-1330.8333,77.555725,0,0,0,0,100,0), +(@PATH,61,-11603.985,-1322.4636,77.55523,0,0,0,0,100,0), +(@PATH,62,-11598.557,-1313.0482,77.55139,0,0,0,0,100,0), +(@PATH,63,-11589.14,-1301.8583,77.452515,0,0,0,0,100,0), +(@PATH,64,-11593.17,-1306.6475,77.54358,0,0,0,0,100,0), +(@PATH,65,-11589.14,-1301.8583,77.452515,0,0,0,0,100,0), +(@PATH,66,-11584.965,-1296.8317,77.6076,0,0,0,0,100,0), +(@PATH,67,-11584.541,-1288.1438,77.6076,0,0,0,0,100,0), +(@PATH,68,-11585.833,-1272.9137,77.6076,0,0,0,0,100,0), +(@PATH,69,-11585.112,-1281.4099,77.6076,0,0,0,0,100,0), +(@PATH,70,-11585.833,-1272.9137,77.6076,0,0,0,0,100,0), +(@PATH,71,-11583.156,-1271.3705,77.6076,0,0,0,0,100,0), +(@PATH,72,-11580.249,-1281.9635,77.6076,0,0,0,0,100,0), +(@PATH,73,-11580.544,-1278.5647,77.6076,0,0,0,0,100,0), +(@PATH,74,-11580.214,-1288.6029,77.6076,0,0,0,0,100,0), +(@PATH,75,-11578.505,-1292.3073,77.6076,0,0,0,0,100,0); + +SET @NPC := 91441; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11537.733,`position_y`=-1487.2949,`position_z`=74.980804 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11536.733,`position_y`=-1487.2949,`position_z`=74.980804 WHERE `guid`=91440; + +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11537.733,-1487.2949,74.980804,0,0,0,0,100,0), +(@PATH,2,-11558.047,-1477.5065,66.72031,0,0,0,0,100,0), +(@PATH,3,-11569.054,-1475.5392,63.00964,0,0,0,0,100,0), +(@PATH,4,-11579.731,-1490.234,54.890743,0,0,0,0,100,0), +(@PATH,5,-11583.994,-1504.7122,53.77436,0,0,0,0,100,0), +(@PATH,6,-11596.935,-1513.0582,48.127876,0,0,0,0,100,0), +(@PATH,7,-11615.329,-1514.1256,43.016304,0,0,0,0,100,0), +(@PATH,8,-11623.127,-1497.8248,44.31972,0,0,0,0,100,0), +(@PATH,9,-11639.55,-1482.4012,45.770515,0,0,0,0,100,0), +(@PATH,10,-11623.127,-1497.8248,44.31972,0,0,0,0,100,0), +(@PATH,11,-11615.329,-1514.1256,43.016304,0,0,0,0,100,0), +(@PATH,12,-11596.935,-1513.0582,48.127876,0,0,0,0,100,0), +(@PATH,13,-11583.994,-1504.7122,53.77436,0,0,0,0,100,0), +(@PATH,14,-11579.731,-1490.234,54.890743,0,0,0,0,100,0), +(@PATH,15,-11569.054,-1475.5392,63.00964,0,0,0,0,100,0), +(@PATH,16,-11558.047,-1477.5065,66.72031,0,0,0,0,100,0); + +SET @NPC := 51951; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11528.148,`position_y`=-1513.8928,`position_z`=63.905006 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11527.148,`position_y`=-1513.8928,`position_z`=63.905006 WHERE `guid`=51951; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11528.148,-1513.8928,63.905006,0,0,0,0,100,0), +(@PATH,2,-11540.652,-1510.0276,62.370094,0,0,0,0,100,0), +(@PATH,3,-11562.911,-1508.6621,55.512184,0,0,0,0,100,0), +(@PATH,4,-11579.961,-1504.0708,54.545113,0,0,0,0,100,0), +(@PATH,5,-11609.733,-1498.5669,46.873188,0,0,0,0,100,0), +(@PATH,6,-11629.067,-1474.237,48.77846,0,0,0,0,100,0), +(@PATH,7,-11604.551,-1463.5339,52.698364,0,0,0,0,100,0), +(@PATH,8,-11603.742,-1445.5684,58.399292,0,0,0,0,100,0), +(@PATH,9,-11617.274,-1426.2169,59.972874,0,0,0,0,100,0), +(@PATH,10,-11629.517,-1415.1227,61.600803,0,0,0,0,100,0), +(@PATH,11,-11652.543,-1417.3339,58.611256,0,0,0,0,100,0), +(@PATH,12,-11667.903,-1442.6356,58.95604,0,0,0,0,100,0), +(@PATH,13,-11652.543,-1417.3339,58.611256,0,0,0,0,100,0), +(@PATH,14,-11629.633,-1415.1328,61.566868,0,0,0,0,100,0), +(@PATH,15,-11617.274,-1426.2169,59.972874,0,0,0,0,100,0), +(@PATH,16,-11603.747,-1445.4777,58.45984,0,0,0,0,100,0), +(@PATH,17,-11604.557,-1463.4434,52.774292,0,0,0,0,100,0), +(@PATH,18,-11629.067,-1474.237,48.77846,0,0,0,0,100,0), +(@PATH,19,-11609.733,-1498.5669,46.873188,0,0,0,0,100,0), +(@PATH,20,-11579.961,-1504.0708,54.545113,0,0,0,0,100,0), +(@PATH,21,-11562.911,-1508.6621,55.512184,0,0,0,0,100,0), +(@PATH,22,-11540.652,-1510.0276,62.370094,0,0,0,0,100,0); + +SET @NPC := 91458; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11655.185,`position_y`=-1556.1298,`position_z`=41.085743 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11654.185,`position_y`=-1556.1298,`position_z`=41.085743 WHERE `guid`=91457; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11655.185,-1556.1298,41.085743,0,0,0,0,100,0), +(@PATH,2,-11646.647,-1520.3574,39.52875,0,0,0,0,100,0), +(@PATH,3,-11635.523,-1505.7322,41.577824,0,0,0,0,100,0), +(@PATH,4,-11617.473,-1473.5356,48.90151,0,0,0,0,100,0), +(@PATH,5,-11620.747,-1453.2869,54.162476,0,0,0,0,100,0), +(@PATH,6,-11638.18,-1449.1713,59.971928,0,0,0,0,100,0), +(@PATH,7,-11620.747,-1453.2869,54.162476,0,0,0,0,100,0), +(@PATH,8,-11617.473,-1473.5356,48.90151,0,0,0,0,100,0), +(@PATH,9,-11635.523,-1505.7322,41.577824,0,0,0,0,100,0), +(@PATH,10,-11646.647,-1520.3574,39.52875,0,0,0,0,100,0); + +SET @NPC := 49057; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11861.868,`position_y`=-1902.6844,`position_z`=64.00689 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11861.868,-1902.6844,64.00689,0,0,1,0,100,0), +(@PATH,2,-11864.919,-1875.0856,64.287445,0,0,1,0,100,0), +(@PATH,3,-11873.851,-1872.3376,64.72649,0,0,1,0,100,0), +(@PATH,4,-11877.952,-1858.161,64.13116,0,0,1,0,100,0), +(@PATH,5,-11878.428,-1844.322,63.788383,0,0,1,0,100,0), +(@PATH,6,-11901.125,-1843.6138,60.67543,0,0,1,0,100,0), +(@PATH,7,-11918.121,-1837.8859,58.49794,0,0,1,0,100,0), +(@PATH,8,-11933.903,-1849.0443,57.74362,0,0,1,0,100,0), +(@PATH,9,-11918.121,-1837.8859,58.49794,0,0,1,0,100,0), +(@PATH,10,-11901.125,-1843.6138,60.67543,0,0,1,0,100,0), +(@PATH,11,-11878.428,-1844.322,63.788383,0,0,1,0,100,0), +(@PATH,12,-11877.952,-1858.161,64.13116,0,0,1,0,100,0), +(@PATH,13,-11873.851,-1872.3376,64.72649,0,0,1,0,100,0), +(@PATH,14,-11864.919,-1875.0856,64.287445,0,0,1,0,100,0); + +SET @NPC := 49065; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11885.854,`position_y`=-1884.8516,`position_z`=63.60832 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11885.854,-1884.8516,63.60832,0,0,0,0,100,0), +(@PATH,2,-11883.883,-1881.4486,63.60832,0,0,0,0,100,0), +(@PATH,3,-11885.817,-1877.1693,63.60832,0,0,0,0,100,0), +(@PATH,4,-11891.109,-1875.8904,63.60832,0,0,0,0,100,0), +(@PATH,5,-11893.704,-1880.7555,63.60832,0,0,0,0,100,0), +(@PATH,6,-11891.03,-1885.1721,63.60832,0,0,0,0,100,0); + +SET @NPC := 49062; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11870.778,`position_y`=-1890.4827,`position_z`=64.42717 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11870.778,-1890.4827,64.42717,0,0,0,0,100,0), +(@PATH,2,-11874.493,-1886.7123,64.23137,0,0,0,0,100,0), +(@PATH,3,-11879.215,-1887.6454,63.60832,0,0,0,0,100,0), +(@PATH,4,-11880.993,-1892.7509,63.60832,0,0,0,0,100,0), +(@PATH,5,-11877.776,-1896.8364,63.60832,0,0,0,0,100,0), +(@PATH,6,-11872.059,-1895.8776,63.898846,0,0,0,0,100,0); + +SET @NPC := 49053; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11854.911,`position_y`=-1900.671,`position_z`=64.122856 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11854.911,-1900.671,64.122856,0,0,0,0,100,0), +(@PATH,2,-11857.439,-1878.6938,64.00717,0,0,0,0,100,0), +(@PATH,3,-11855.941,-1864.2994,64.43505,0,0,0,0,100,0), +(@PATH,4,-11861.117,-1853.1434,64.12035,0,0,0,0,100,0), +(@PATH,5,-11858.396,-1842.1367,63.803947,0,0,0,0,100,0), +(@PATH,6,-11861.117,-1853.1434,64.12035,0,0,0,0,100,0), +(@PATH,7,-11855.941,-1864.2994,64.43505,0,0,0,0,100,0), +(@PATH,8,-11857.439,-1878.6938,64.00717,0,0,0,0,100,0); + +SET @NPC := 49033; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11740.061,`position_y`=-1587.7828,`position_z`=40.837807 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11740.061,-1587.7828,40.837807,0,0,0,0,100,0), +(@PATH,2,-11743.122,-1606.2025,40.837807,0,0,0,0,100,0), +(@PATH,3,-11742.706,-1621.5044,37.03781,0,0,0,0,100,0), +(@PATH,4,-11739.169,-1666.0602,37.03781,0,0,0,0,100,0), +(@PATH,5,-11737.831,-1694.1405,40.837807,0,0,0,0,100,0), +(@PATH,6,-11739.169,-1666.0602,37.03781,0,0,0,0,100,0), +(@PATH,7,-11742.706,-1621.5044,37.03781,0,0,0,0,100,0), +(@PATH,8,-11743.122,-1606.2025,40.837807,0,0,0,0,100,0); + + +SET @NPC := 51427; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11732.936,`position_y`=-1694.9596,`position_z`=40.920784 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11731.936,`position_y`=-1694.9596,`position_z`=40.920784 WHERE `guid` IN (51429, 51428); +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11732.936,-1694.9596,40.920784,0,0,0,0,100,0), +(@PATH,2,-11728.796,-1685.6783,40.920784,0,45000,0,0,100,0), +(@PATH,3,-11734.361,-1691.6782,40.837807,0,0,0,0,100,0), +(@PATH,4,-11740.707,-1668.407,37.03781,0,0,0,0,100,0), +(@PATH,5,-11742.016,-1621.4437,37.03781,0,0,0,0,100,0), +(@PATH,6,-11736.968,-1591.8527,40.837807,0,45000,0,0,100,0), +(@PATH,7,-11743.039,-1619.6235,37.03781,0,0,0,0,100,0), +(@PATH,8,-11740.122,-1666.7047,37.03781,0,0,0,0,100,0); + +SET @NPC := 51403; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11769.003,`position_y`=-1674.9135,`position_z`=53.037807 WHERE `guid`=@NPC; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11769.003,`position_y`=-1674.9135,`position_z`=53.037807 WHERE `guid` IN (51417, 51418, 51415, 51414, 51416); +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11769.003,-1674.9135,53.037807,0,0,0,0,100,0), +(@PATH,2,-11770.687,-1671.3302,53.037807,0,0,0,0,100,0), +(@PATH,3,-11770.687,-1671.3302,53.037807,2.181661605834960937,40000,0,0,100,0), +(@PATH,4,-11776.848,-1679.7877,52.941246,0,0,0,0,100,0), +(@PATH,5,-11774.449,-1693.3787,53.03781,0,0,0,0,100,0), +(@PATH,6,-11747.618,-1691.938,40.837807,0,0,0,0,100,0), +(@PATH,7,-11731.316,-1699.9841,40.920784,0,0,0,0,100,0), +(@PATH,8,-11739.131,-1684.6392,40.837807,0,0,0,0,100,0), +(@PATH,9,-11739.889,-1663.7732,37.037807,0,0,0,0,100,0), +(@PATH,10,-11740.014,-1630.5315,37.037807,0,0,0,0,100,0), +(@PATH,11,-11742.677,-1605.7964,40.837807,0,0,0,0,100,0), +(@PATH,12,-11737.04,-1592.227,40.837807,0,0,0,0,100,0), +(@PATH,13,-11737.04,-1592.227,40.837807,0.78539818525314331,0,0,0,100,0), +(@PATH,14,-11737.04,-1592.227,40.837807,3.944444179534912109,30000,0,0,100,0), +(@PATH,15,-11743.477,-1604.6431,40.837807,0,0,0,0,100,0), +(@PATH,16,-11740.651,-1629.4569,37.037807,0,0,0,0,100,0), +(@PATH,17,-11739.146,-1658.7118,37.037807,0,0,0,0,100,0), +(@PATH,18,-11738.813,-1684.7188,40.837807,0,0,0,0,100,0), +(@PATH,19,-11735.44,-1695.0358,40.837807,0,0,0,0,100,0), +(@PATH,20,-11747.381,-1691.9324,40.837807,0,0,0,0,100,0), +(@PATH,21,-11770.797,-1693.1605,53.03781,0,0,0,0,100,0), +(@PATH,22,-11773.87,-1688.8973,53.037807,0,0,0,0,100,0); + +SET @NPC := 49034; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11836.11,`position_y`=-1597.3722,`position_z`=40.837807 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11836.11,-1597.3722,40.837807,0,0,0,0,100,0), +(@PATH,2,-11834.714,-1623.1868,37.037807,0,0,0,0,100,0), +(@PATH,3,-11834.383,-1667.8512,37.037804,0,0,0,0,100,0), +(@PATH,4,-11836.164,-1699.8903,40.837807,0,0,0,0,100,0), +(@PATH,5,-11834.391,-1667.996,37.037804,0,0,0,0,100,0), +(@PATH,6,-11834.714,-1623.1868,37.037807,0,0,0,0,100,0); + +SET @NPC := 51390; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11834.63,`position_y`=-1671.6031,`position_z`=37.037804 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11834.63,-1671.6031,37.037804,0,0,0,0,100,0), +(@PATH,2,-11838.726,-1699.5321,40.837807,0,45000,0,0,100,0), +(@PATH,3,-11834.218,-1672.2135,37.037804,0,0,0,0,100,0), +(@PATH,4,-11835.386,-1624.0348,37.037807,0,0,0,0,100,0), +(@PATH,5,-11843.388,-1595.0391,40.837807,0,0,0,0,100,0), +(@PATH,6,-11847.235,-1605.241,40.837807,0,45000,0,0,100,0), +(@PATH,7,-11839.496,-1598.3239,40.837807,0,0,0,0,100,0), +(@PATH,8,-11836.035,-1623.2474,37.037807,0,0,0,0,100,0); + +SET @NPC := 51388; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11805.654,`position_y`=-1675.3306,`position_z`=53.03781 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11805.654,-1675.3306,53.03781,0,0,0,0,100,0), +(@PATH,2,-11804.916,-1673.9344,53.03781,0,50000,0,0,100,0), +(@PATH,3,-11796.613,-1679.6351,53.00351,0,0,0,0,100,0), +(@PATH,4,-11795.297,-1694.5951,53.037807,0,0,0,0,100,0), +(@PATH,5,-11825.448,-1695.0181,40.837807,0,0,0,0,100,0), +(@PATH,6,-11840.211,-1702.6302,40.837807,0,0,0,0,100,0), +(@PATH,7,-11834.708,-1688.6978,40.837807,0,0,0,0,100,0), +(@PATH,8,-11835.551,-1662.7701,37.037804,0,0,0,0,100,0), +(@PATH,9,-11836.695,-1634.2915,37.03781,0,0,0,0,100,0), +(@PATH,10,-11836.347,-1609.4677,40.837807,0,0,0,0,100,0), +(@PATH,11,-11842.031,-1596.1227,40.837807,0,0,0,0,100,0), +(@PATH,12,-11842.031,-1596.1227,40.837807,2.338741064071655273,0,0,0,100,0), +(@PATH,13,-11842.031,-1596.1227,40.837807,5.410520553588867187,30000,0,0,100,0), +(@PATH,14,-11837.453,-1607.7825,40.837807,0,0,0,0,100,0), +(@PATH,15,-11835.802,-1633.4062,37.037804,0,0,0,0,100,0), +(@PATH,16,-11835.365,-1661.1122,37.037807,0,0,0,0,100,0), +(@PATH,17,-11833.067,-1687.7003,40.837807,0,0,0,0,100,0), +(@PATH,18,-11842.762,-1700.5037,40.837807,0,0,0,0,100,0), +(@PATH,19,-11825.47,-1696.385,40.837807,0,0,0,0,100,0), +(@PATH,20,-11801.597,-1693.9583,53.037804,0,0,0,0,100,0), +(@PATH,21,-11792.201,-1683.8741,52.992466,0,0,0,0,100,0); + +SET @NPC := 49663; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11739.442,`position_y`=-1715.6992,`position_z`=21.237804 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11739.442,-1715.6992,21.237804,0,0,0,0,100,0), +(@PATH,2,-11713.87,-1715.7963,20.782604,0,0,0,0,100,0), +(@PATH,3,-11715.06,-1695.9629,21.320786,0,0,0,0,100,0), +(@PATH,4,-11720.323,-1674.0245,21.320786,0,0,0,0,100,0), +(@PATH,5,-11720.656,-1641.4729,21.320786,0,0,0,0,100,0), +(@PATH,6,-11722.048,-1616.4645,21.320784,0,0,0,0,100,0), +(@PATH,7,-11716.006,-1597.0618,20.011585,0,0,0,0,100,0), +(@PATH,8,-11718.076,-1571.6228,21.061014,0,0,0,0,100,0), +(@PATH,9,-11741.87,-1574.0104,21.270546,0,0,0,0,100,0), +(@PATH,10,-11718.076,-1571.6228,21.061014,0,0,0,0,100,0), +(@PATH,11,-11716.006,-1597.0618,20.011585,0,0,0,0,100,0), +(@PATH,12,-11722.048,-1616.4645,21.320784,0,0,0,0,100,0), +(@PATH,13,-11720.656,-1641.4729,21.320786,0,0,0,0,100,0), +(@PATH,14,-11720.323,-1674.0245,21.320786,0,0,0,0,100,0), +(@PATH,15,-11715.06,-1695.9629,21.320786,0,0,0,0,100,0), +(@PATH,16,-11713.87,-1715.7963,20.782604,0,0,0,0,100,0); + +SET @NPC := 51397; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-11839.056,`position_y`=-1719.7177,`position_z`=21.195206 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-11839.056,-1719.7177,21.195206,0,0,0,0,100,0), +(@PATH,2,-11858.27,-1719.4323,20.747978,0,0,0,0,100,0), +(@PATH,3,-11857.748,-1695.4701,21.254763,0,0,0,0,100,0), +(@PATH,4,-11856.07,-1658.6608,21.237806,0,0,0,0,100,0), +(@PATH,5,-11855.981,-1623.5115,21.237804,0,0,0,0,100,0), +(@PATH,6,-11861.063,-1600.4098,21.237804,0,0,0,0,100,0), +(@PATH,7,-11858.976,-1576.2704,21.239029,0,0,0,0,100,0), +(@PATH,8,-11839.536,-1578.0404,21.28835,0,0,0,0,100,0), +(@PATH,9,-11858.812,-1576.2596,21.239527,0,0,0,0,100,0), +(@PATH,10,-11861.063,-1600.4098,21.237804,0,0,0,0,100,0), +(@PATH,11,-11855.981,-1623.5115,21.237804,0,0,0,0,100,0), +(@PATH,12,-11856.07,-1658.6608,21.237806,0,0,0,0,100,0), +(@PATH,13,-11857.748,-1695.4701,21.254763,0,0,0,0,100,0), +(@PATH,14,-11858.27,-1719.4323,20.747978,0,0,0,0,100,0); + +DELETE FROM `creature_formations` WHERE `leaderGUID` IN (49123, 49130, 52267, 49651, 49359, 91458, 91457, 91441, 51951, 49057, 49065, 49062, 49053, 51403, 51427, 51390, 51388); +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(49123, 49123, 0, 0, 514, 0, 0), +(49123, 49128, 5, 195, 514, 0, 0), +(49123, 49127, 10, 195, 514, 0, 0), +(49123, 49124, 5, 155, 514, 0, 0), +(49123, 49125, 10, 155, 514, 0, 0), +(49123, 49130, 10, 180, 514, 0, 0), +(49123, 49129, 5, 180, 514, 0, 0), +(52267, 52267, 0, 0, 514, 0, 0), +(52267, 52271, 5, 195, 514, 0, 0), +(52267, 52270, 10, 195, 514, 0, 0), +(52267, 52269, 5, 155, 514, 0, 0), +(52267, 52268, 10, 155, 514, 0, 0), +(52267, 52265, 10, 180, 514, 0, 0), +(52267, 52266, 5, 180, 514, 0, 0), +(49651, 49651, 0, 0, 514, 0, 0), +(49651, 49652, 2, 180, 514, 0, 0), +(49651, 49653, 4, 180, 514, 0, 0), +(49651, 49654, 6, 180, 514, 0, 0), +(49359, 49359, 0, 0, 514, 0, 0), +(49359, 49362, 2, 180, 514, 0, 0), +(49359, 49361, 4, 180, 514, 0, 0), +(49359, 49389, 6, 180, 514, 0, 0), +(91441, 91441, 0, 0, 514, 0, 0), +(91441, 91440, 4, 90, 514, 0, 0), +(51951, 51951, 0, 0, 514, 0, 0), +(51951, 51952, 2, 90, 514, 0, 0), +(91458, 91458, 0, 0, 514, 0, 0), +(91458, 91457, 2, 90, 514, 0, 0), +(49057, 49057, 0, 0, 514, 0, 0), +(49057, 49149, 10, 180, 514, 0, 0), +(49065, 49065, 0, 0, 514, 0, 0), +(49065, 49066, 2, 180, 514, 0, 0), +(49065, 49067, 4, 180, 514, 0, 0), +(49062, 49062, 0, 0, 514, 0, 0), +(49062, 49063, 2, 180, 514, 0, 0), +(49062, 49064, 4, 180, 514, 0, 0), +(49053, 49053, 0, 0, 514, 0, 0), +(49053, 49054, 2, 180, 514, 0, 0), +(49053, 49055, 4, 180, 514, 0, 0), +(51403, 51403, 0, 0, 514, 0, 0), +(51403, 51417, 2, 90, 514, 0, 0), +(51403, 51418, 2, 180, 514, 0, 0), +(51403, 51415, 2, 135, 514, 0, 0), +(51403, 51414, 4, 135, 514, 0, 0), +(51403, 51416, 4, 180, 514, 0, 0), +(51427, 51427, 0, 0, 514, 0, 0), +(51427, 51428, 4, 135, 514, 0, 0), +(51427, 51429, 4, 225, 514, 0, 0), +(51390, 51390, 0, 0, 514, 0, 0), +(51390, 51425, 4, 135, 514, 0, 0), +(51390, 51426, 4, 225, 514, 0, 0), +(51388, 51388, 0, 0, 514, 0, 0), +(51388, 51389, 2, 195, 514, 0, 0), +(51388, 51394, 2, 165, 514, 0, 0), +(51388, 51424, 4, 165, 514, 0, 0), +(51388, 51391, 4, 195, 514, 0, 0), +(51388, 51392, 4, 180, 514, 0, 0); + + From f66a1150efc0e65d39b69761f92a2025286b8d1e Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 14:56:19 +0000 Subject: [PATCH 078/119] chore(DB): import pending files Referenced commit(s): 7e60a7a4f88df7db7c7d9deca6068b4b3673da18 --- .../zgpatrolspart2.sql => db_world/2022_07_09_03.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/zgpatrolspart2.sql => db_world/2022_07_09_03.sql} (99%) diff --git a/data/sql/updates/pending_db_world/zgpatrolspart2.sql b/data/sql/updates/db_world/2022_07_09_03.sql similarity index 99% rename from data/sql/updates/pending_db_world/zgpatrolspart2.sql rename to data/sql/updates/db_world/2022_07_09_03.sql index 9fb8905b6..9e0ae6433 100644 --- a/data/sql/updates/pending_db_world/zgpatrolspart2.sql +++ b/data/sql/updates/db_world/2022_07_09_03.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_02 -> 2022_07_09_03 UPDATE `creature` SET `wander_distance`=17,`MovementType`=1 WHERE `guid` IN (49295, 49303, 49304, 49306, 49800, 49814, 51344, 51580, 51581); UPDATE `creature` SET `id1` = 11830 WHERE `guid` = 51392; UPDATE `creature` SET `id1` = 11353 WHERE `guid` IN (51389, 51394); From 330c1ac2a4d444af3c39309a2eb1c5d73e363158 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 9 Jul 2022 16:57:11 +0200 Subject: [PATCH 079/119] =?UTF-8?q?fix(Scripts/Zulgurub):=20Hakkar=20shoul?= =?UTF-8?q?d=20cast=20Insanity=20only=20if=20there=20are=20=E2=80=A6=20(#1?= =?UTF-8?q?2325)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …at least 2 valid targets in raid. --- .../scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 3599a943b..23df176ac 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -140,9 +140,12 @@ public: events.ScheduleEvent(EVENT_CORRUPTED_BLOOD, urand(30000, 45000)); break; case EVENT_CAUSE_INSANITY: - if (Unit* victim = SelectTarget(SelectTargetMethod::MaxThreat, 0, 30.f, true)) + if (me->GetThreatMgr().getThreatList().size() > 1) { - DoCast(victim, SPELL_CAUSE_INSANITY); + if (Unit* victim = SelectTarget(SelectTargetMethod::MaxThreat, 0, 30.f, true)) + { + DoCast(victim, SPELL_CAUSE_INSANITY); + } } events.ScheduleEvent(EVENT_CAUSE_INSANITY, urand(35000, 45000)); break; From d88ff4119815f1c5185c26980777d492adb68c3d Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 9 Jul 2022 16:58:44 +0200 Subject: [PATCH 080/119] fix(Scripts/ZulGurub): Added Sweeping Strikes to Gri'lek encounter (#12328) --- .../scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp index 6fd79576d..a8b91ac68 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_grilek.cpp @@ -30,7 +30,8 @@ enum Spells { SPELL_AVATAR = 24646, // Enrage Spell SPELL_GROUND_TREMOR = 6524, - SPELL_ENTANGLING_ROOTS = 24648 + SPELL_ENTANGLING_ROOTS = 24648, + SPELL_SWEEPING_STRIKES = 18765 }; enum Events @@ -39,7 +40,8 @@ enum Events EVENT_GROUND_TREMOR = 2, EVENT_START_PURSUIT = 3, EVENT_STOP_PURSUIT = 4, - EVENT_ENTANGLING_ROOTS = 5 + EVENT_ENTANGLING_ROOTS = 5, + EVENT_SWEEPING_STRIKES = 6 }; class boss_grilek : public CreatureScript // grilek @@ -65,6 +67,7 @@ public: events.ScheduleEvent(EVENT_AVATAR, 20s, 30s); events.ScheduleEvent(EVENT_GROUND_TREMOR, 15s, 25s); events.ScheduleEvent(EVENT_ENTANGLING_ROOTS, 5s, 15s); + events.ScheduleEvent(EVENT_SWEEPING_STRIKES, 30s); } void UpdateAI(uint32 diff) override @@ -115,6 +118,10 @@ public: DoCastVictim(SPELL_ENTANGLING_ROOTS); events.ScheduleEvent(EVENT_ENTANGLING_ROOTS, 10s, 20s); break; + case EVENT_SWEEPING_STRIKES: + DoCastSelf(SPELL_SWEEPING_STRIKES, true); + events.ScheduleEvent(EVENT_SWEEPING_STRIKES, 30s); + break; default: break; } From c17eed9706707638237e1357f389649128436ce8 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 9 Jul 2022 17:01:38 +0200 Subject: [PATCH 081/119] fix(Scripts/ZulGurub): Added missing yell on Hakkar's evade. (#12329) Fixes #12273 --- .../pending_db_world/rev_1657358307029243000.sql | 4 ++++ .../scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp | 10 +++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) create mode 100644 data/sql/updates/pending_db_world/rev_1657358307029243000.sql diff --git a/data/sql/updates/pending_db_world/rev_1657358307029243000.sql b/data/sql/updates/pending_db_world/rev_1657358307029243000.sql new file mode 100644 index 000000000..95a27ca49 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657358307029243000.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `creature_text` WHERE `CreatureID`=14834 AND `groupid`=7; +INSERT INTO `creature_text` VALUES +(14834,7,0,'Fleeing will do you no good, mortals!',14,0,100,0,0,0,10635,0,'Hakkar Evade Yell'); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 23df176ac..93c6eebbb 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -34,7 +34,8 @@ enum Says SAY_FLEEING = 1, SAY_MINION_DESTROY = 2, SAY_PROTECT_ALTAR = 3, - SAY_PROTECT_GURUBASHI_EMPIRE = 4 + SAY_PROTECT_GURUBASHI_EMPIRE = 4, + SAY_EVADE = 7 }; enum Spells @@ -117,6 +118,13 @@ public: Talk(SAY_AGGRO); } + void EnterEvadeMode(EvadeReason evadeReason) override + { + BossAI::EnterEvadeMode(evadeReason); + + Talk(SAY_EVADE); + } + void UpdateAI(uint32 diff) override { if (!UpdateVictim() || !CheckInRoom()) From 30f3f8b72f7956b04e070f9916ba4ba9d318abe5 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 15:09:44 +0000 Subject: [PATCH 082/119] chore(DB): import pending files Referenced commit(s): c17eed9706707638237e1357f389649128436ce8 --- .../rev_1657358307029243000.sql => db_world/2022_07_09_04.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657358307029243000.sql => db_world/2022_07_09_04.sql} (82%) diff --git a/data/sql/updates/pending_db_world/rev_1657358307029243000.sql b/data/sql/updates/db_world/2022_07_09_04.sql similarity index 82% rename from data/sql/updates/pending_db_world/rev_1657358307029243000.sql rename to data/sql/updates/db_world/2022_07_09_04.sql index 95a27ca49..b14d7185e 100644 --- a/data/sql/updates/pending_db_world/rev_1657358307029243000.sql +++ b/data/sql/updates/db_world/2022_07_09_04.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_03 -> 2022_07_09_04 -- DELETE FROM `creature_text` WHERE `CreatureID`=14834 AND `groupid`=7; INSERT INTO `creature_text` VALUES From 4753cbfaf8a4b646b31e2b1a3ef8feba65f09802 Mon Sep 17 00:00:00 2001 From: neifion-00000000 <91289495+neifion-00000000@users.noreply.github.com> Date: Sat, 9 Jul 2022 10:10:21 -0500 Subject: [PATCH 083/119] fix(DB/GameObjects): Improve ZG Mining Spawns (#12314) --- .../rev_1657160513357568200.sql | 47 +++++++++++++++++++ 1 file changed, 47 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1657160513357568200.sql diff --git a/data/sql/updates/pending_db_world/rev_1657160513357568200.sql b/data/sql/updates/pending_db_world/rev_1657160513357568200.sql new file mode 100644 index 000000000..811f09f34 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657160513357568200.sql @@ -0,0 +1,47 @@ +-- +-- ZG Mining Improvements +-- Remove Old Nodes +DELETE FROM `gameobject` WHERE `id` IN (180215); +SET @OGUID :=9688; +DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+15; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `VerifiedBuild`) VALUES +-- 4x per run +(@OGUID+0, 180215, 309, 1977, 1977, 1, 1, -11994.1826171875, -1458.61767578125, 83.11444854736328125, 5.044002056121826171, 0, 0, -0.58070278167724609, 0.814115643501281738, 259200, 255, 1, 0), -- 180215 (Area: 1977 - Difficulty: 148) +(@OGUID+1, 180215, 309, 1977, 3380, 1, 1, -12398.201171875, -1934.4305419921875, 133.2330322265625, 0.733038187026977539, 0, 0, 0.358367919921875, 0.933580458164215087, 259200, 255, 1, 0), -- 180215 (Area: 3380 - Difficulty: 148) +(@OGUID+2, 180215, 309, 1977, 0, 1, 1, -11546.4208984375, -1745.0648193359375, 40.15413284301757812, 1.343901276588439941, 0, 0, 0.622513771057128906, 0.78260880708694458, 259200, 255, 1, 0), -- 180215 (Area: 0 - Difficulty: 148) +(@OGUID+3, 180215, 309, 1977, 3382, 1, 1, -11647.36328125, -1476.961669921875, 50.38566970825195312, 4.310965538024902343, 0, 0, -0.83388519287109375, 0.55193793773651123, 259200, 255, 1, 0), -- 180215 (Area: 3382 - Difficulty: 148) +(@OGUID+4, 180215, 309, 1977, 3378, 1, 1, -12310.1220703125, -1465.364013671875, 130.6002044677734375, 3.961898565292358447, 0, 0, -0.91705989837646484, 0.447749500513076782, 259200, 255, 1, 0), -- 180215 (Area: 3378 - Difficulty: 148) +(@OGUID+5, 180215, 309, 1977, 3447, 1, 1, -11803.48046875, -1905.7122802734375, 52.92700958251953125, 2.548179388046264648, 0, 0, 0.956304550170898437, 0.292372345924377441, 259200, 255, 1, 0), -- 180215 (Area: 3447 - Difficulty: 148) +(@OGUID+6, 180215, 309, 1977, 0, 1, 1, -11998.046875, -1843.457275390625, 60.41311264038085937, 5.864306926727294921, 0, 0, -0.20791149139404296, 0.978147625923156738, 259200, 255, 1, 0), -- 180215 (Area: 0 - Difficulty: 148) +(@OGUID+7, 180215, 309, 1977, 3380, 1, 1, -12406.1650390625, -1837.8758544921875, 135.840057373046875, 1.274088263511657714, 0, 0, 0.594821929931640625, 0.80385744571685791, 259200, 255, 1, 0), -- 180215 (Area: 3380 - Difficulty: 148) +(@OGUID+8, 180215, 309, 1977, 3378, 1, 1, -12241.8525390625, -1488.2923584474375, 131.5126495361328125, 1.588248729705810546, 0, 0, 0.713250160217285156, 0.700909554958343505, 259200, 255, 1, 0), -- 180215 (Area: 3378 - Difficulty: 148) +(@OGUID+9, 180215, 309, 1977, 3383, 1, 1, -11545.5927734375, -1237.4613037109375, 79.219268798828125, 2.373644113540649414, 0, 0, 0.927183151245117187, 0.37460830807685852, 259200, 255, 1, 0), -- 180215 (Area: 3383 - Difficulty: 148) +(@OGUID+10, 180215, 309, 1977, 3380, 1, 1, -12177.271484375, -1910.1519775390625, 130.806854248046875, 1.937312245368957519, 0, 0, 0.824125289916992187, 0.566407561302185058, 259200, 255, 1, 0), -- 180215 (Area: 3380 - Difficulty: 148) +(@OGUID+11, 180215, 309, 1977, 3383, 1, 1, -11599, -1217.4381103515625, 80.36554718017578125, 1.727874636650085449, 0, 0, 0.760405540466308593, 0.649448514474680175, 259200, 255, 1, 0), -- 180215 (Area: 3383 - Difficulty: 148) +(@OGUID+12, 180215, 309, 1977, 0, 1, 1, -11549.494140625, -1489.06103515625, 73.21334075927734375, 3.717553615570068359, 0, 0, -0.95881938934326171, 0.284016460180282592, 259200, 255, 1, 0), -- 180215 (Area: 0 - Difficulty: 148) +(@OGUID+13, 180215, 309, 1977, 3380, 1, 1, -12145.384765625, -1941.7357177734375, 134.8932342529296875, 1.867502212524414062, 0, 0, 0.803856849670410156, 0.594822824001312255, 259200, 255, 1, 0), -- 180215 (Area: 3380 - Difficulty: 148) +(@OGUID+14, 180215, 309, 1977, 0, 1, 1, -12063.4775390625, -1437.3966064453125, 130.2297821044921875, 1.256635904312133789, 0, 0, 0.587784767150878906, 0.809017360210418701, 259200, 255, 1, 0), -- 180215 (Area: 0 - Difficulty: 148) +(@OGUID+15, 180215, 309, 1977, 3447, 1, 1, -11927.7021484375, -1756.9566650390625, 50.15846633911132812, 3.141592741012573242, 0, 0, -1, 0, 259200, 255, 1, 0); -- 180215 (Area: 3447 - Difficulty: 148) + +DELETE FROM `pool_gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+15; +DELETE FROM `pool_template` WHERE `entry` IN (447); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(447, 4, 'ZG Hakkari Thorium Vein'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@OGUID+0, 447, 0, 'ZG Hakkari Thorium Vein 1/16'), +(@OGUID+1, 447, 0, 'ZG Hakkari Thorium Vein 2/16'), +(@OGUID+2, 447, 0, 'ZG Hakkari Thorium Vein 3/16'), +(@OGUID+3, 447, 0, 'ZG Hakkari Thorium Vein 4/16'), +(@OGUID+4, 447, 0, 'ZG Hakkari Thorium Vein 5/16'), +(@OGUID+5, 447, 0, 'ZG Hakkari Thorium Vein 6/16'), +(@OGUID+6, 447, 0, 'ZG Hakkari Thorium Vein 7/16'), +(@OGUID+7, 447, 0, 'ZG Hakkari Thorium Vein 8/16'), +(@OGUID+8, 447, 0, 'ZG Hakkari Thorium Vein 9/16'), +(@OGUID+9, 447, 0, 'ZG Hakkari Thorium Vein 10/16'), +(@OGUID+10, 447, 0, 'ZG Hakkari Thorium Vein 11/16'), +(@OGUID+11, 447, 0, 'ZG Hakkari Thorium Vein 12/16'), +(@OGUID+12, 447, 0, 'ZG Hakkari Thorium Vein 13/16'), +(@OGUID+13, 447, 0, 'ZG Hakkari Thorium Vein 14/16'), +(@OGUID+14, 447, 0, 'ZG Hakkari Thorium Vein 15/16'), +(@OGUID+15, 447, 0, 'ZG Hakkari Thorium Vein 16/16'); From 37c76b71c1f5bb69c19b07ff9e9a3c5085a216e2 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 15:32:23 +0000 Subject: [PATCH 084/119] chore(DB): import pending files Referenced commit(s): 4753cbfaf8a4b646b31e2b1a3ef8feba65f09802 --- .../rev_1657160513357568200.sql => db_world/2022_07_09_05.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657160513357568200.sql => db_world/2022_07_09_05.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1657160513357568200.sql b/data/sql/updates/db_world/2022_07_09_05.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1657160513357568200.sql rename to data/sql/updates/db_world/2022_07_09_05.sql index 811f09f34..b237b79d7 100644 --- a/data/sql/updates/pending_db_world/rev_1657160513357568200.sql +++ b/data/sql/updates/db_world/2022_07_09_05.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_04 -> 2022_07_09_05 -- -- ZG Mining Improvements -- Remove Old Nodes From 9df8596bd3eaa8c1e456d08eb0eb7c1ae598dcb6 Mon Sep 17 00:00:00 2001 From: temperrr Date: Sat, 9 Jul 2022 17:40:24 +0200 Subject: [PATCH 085/119] fix(DB/GameObject): Dark Iron deposit respawn time (#12319) --- .../updates/pending_db_world/brdmcveins.sql | 21 +++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 data/sql/updates/pending_db_world/brdmcveins.sql diff --git a/data/sql/updates/pending_db_world/brdmcveins.sql b/data/sql/updates/pending_db_world/brdmcveins.sql new file mode 100644 index 000000000..648fce431 --- /dev/null +++ b/data/sql/updates/pending_db_world/brdmcveins.sql @@ -0,0 +1,21 @@ +DELETE FROM `gameobject` WHERE (`id` = 165658) AND (`guid` IN (43103, 43104, 43105, 43106, 43107, 43108, 43166, 43167, 43168, 43169, 43170, 43171, 43172, 43173, 43174, 43175, 56435, 56436, 56438)); +INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`) VALUES +(43103, 165658, 230, 0, 0, 1, 1, 502.794, -191.522, -57.5144, -0.401426, 0, 0, 0.199368, -0.979925, 604800, 100, 1, '', 0), +(43104, 165658, 230, 0, 0, 1, 1, 418.63, -158.696, -63.1528, 0.226893, 0, 0, 0.113203, 0.993572, 604800, 100, 1, '', 0), +(43105, 165658, 230, 0, 0, 1, 1, 679.721, 102.181, -73.2564, -1.18682, 0, 0, 0.559193, -0.829037, 604800, 100, 1, '', 0), +(43106, 165658, 230, 0, 0, 1, 1, 748.476, -53.7894, -71.278, 2.96706, 0, 0, 0.996195, 0.087156, 604800, 100, 1, '', 0), +(43107, 165658, 230, 0, 0, 1, 1, 1001.83, -395.972, -62.7024, 0.15708, 0, 0, 0.078459, 0.996917, 604800, 100, 1, '', 0), +(43108, 165658, 230, 0, 0, 1, 1, 545.169, -128.195, -60.3184, -1.72788, 0, 0, 0.760406, -0.649448, 604800, 100, 1, '', 0), +(43166, 165658, 409, 0, 0, 1, 1, 646.1, -865.918, -208.326, -2.18166, 0, 0, 0.887011, -0.461749, 604800, 100, 1, '', 0), +(43167, 165658, 409, 0, 0, 1, 1, 638.447, -754.949, -208.723, 1.81514, 0, 0, 0.788011, 0.615662, 604800, 100, 1, '', 0), +(43168, 165658, 409, 0, 0, 1, 1, 713.891, -862.482, -202.019, -1.6057, 0, 0, 0.71934, -0.694658, 604800, 100, 1, '', 0), +(43169, 165658, 409, 0, 0, 1, 1, 962.736, -569.84, -201.54, 1.11701, 0, 0, 0.529919, 0.848048, 604800, 100, 1, '', 0), +(43170, 165658, 409, 0, 0, 1, 1, 1000.87, -732.561, -173.765, 0.471239, 0, 0, 0.233445, 0.97237, 604800, 100, 1, '', 0), +(43171, 165658, 409, 0, 0, 1, 1, 914.487, -630.667, -199.639, 1.32645, 0, 0, 0.615662, 0.788011, 604800, 100, 1, '', 0), +(43172, 165658, 409, 0, 0, 1, 1, 1066.79, -863.968, -158.071, 1.25664, 0, 0, 0.587785, 0.809017, 604800, 100, 1, '', 0), +(43173, 165658, 409, 0, 0, 1, 1, 1015.03, -818.843, -149.959, 0.994838, 0, 0, 0.477159, 0.878817, 604800, 100, 1, '', 0), +(43174, 165658, 409, 0, 0, 1, 1, 666.984, -567.945, -209.082, 0.10472, 0, 0, 0.052336, 0.99863, 604800, 100, 1, '', 0), +(43175, 165658, 409, 0, 0, 1, 1, 714.65, -721.695, -209.823, 0.907571, 0, 0, 0.438371, 0.898794, 604800, 100, 1, '', 0), +(56435, 165658, 230, 0, 0, 1, 1, 977.641, -316.468, -69.4667, 1.79769, 0, 0, 0, 1, 604800, 100, 1, '', 0), +(56436, 165658, 230, 0, 0, 1, 1, 291.891, -122.786, -69.1713, 1.41372, 0, 0, 0, 1, 604800, 100, 1, '', 0), +(56438, 165658, 230, 0, 0, 1, 1, 640.727, 28.869, -74.0452, 1.8675, 0, 0, 0, 1, 604800, 100, 1, '', 0); From aa754bb561e08df015f2a17fb3b4992719aea088 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 15:56:28 +0000 Subject: [PATCH 086/119] chore(DB): import pending files Referenced commit(s): 9df8596bd3eaa8c1e456d08eb0eb7c1ae598dcb6 --- .../brdmcveins.sql => db_world/2022_07_09_06.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/brdmcveins.sql => db_world/2022_07_09_06.sql} (98%) diff --git a/data/sql/updates/pending_db_world/brdmcveins.sql b/data/sql/updates/db_world/2022_07_09_06.sql similarity index 98% rename from data/sql/updates/pending_db_world/brdmcveins.sql rename to data/sql/updates/db_world/2022_07_09_06.sql index 648fce431..76f81ab00 100644 --- a/data/sql/updates/pending_db_world/brdmcveins.sql +++ b/data/sql/updates/db_world/2022_07_09_06.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_05 -> 2022_07_09_06 DELETE FROM `gameobject` WHERE (`id` = 165658) AND (`guid` IN (43103, 43104, 43105, 43106, 43107, 43108, 43166, 43167, 43168, 43169, 43170, 43171, 43172, 43173, 43174, 43175, 56435, 56436, 56438)); INSERT INTO `gameobject` (`guid`, `id`, `map`, `zoneId`, `areaId`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`, `ScriptName`, `VerifiedBuild`) VALUES (43103, 165658, 230, 0, 0, 1, 1, 502.794, -191.522, -57.5144, -0.401426, 0, 0, 0.199368, -0.979925, 604800, 100, 1, '', 0), From a9e872bd649314333be013c28704613881fb9a96 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 9 Jul 2022 17:58:14 +0200 Subject: [PATCH 087/119] =?UTF-8?q?fix(Scripts/ZulGurub):=20Prevent=20from?= =?UTF-8?q?=20summoning=20multiple=20Edge=20of=20Madnes=E2=80=A6=20(#12331?= =?UTF-8?q?)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ...s bosses. --- .../ZulGurub/instance_zulgurub.cpp | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index 325dd749c..bbd5c1e8d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -82,6 +82,12 @@ public: case NPC_GAHZRANKA: _gahzrankaGUID = creature->GetGUID(); break; + case NPC_GRILEK: + case NPC_HAZZARAH: + case NPC_RENATAKI: + case NPC_WUSHOOLAY: + _edgeOfMadnessGUID = creature->GetGUID(); + break; default: break; } @@ -119,6 +125,8 @@ public: return _goGongOfBethekkGUID; case DATA_HAKKAR: return _hakkarGUID; + case DATA_EDGE_OF_MADNESS: + return _edgeOfMadnessGUID; } return ObjectGuid::Empty; @@ -186,6 +194,7 @@ public: ObjectGuid _goGongOfBethekkGUID; ObjectGuid _hakkarGUID; ObjectGuid _gahzrankaGUID; + ObjectGuid _edgeOfMadnessGUID; }; InstanceScript* GetInstanceScript(InstanceMap* map) const override @@ -223,6 +232,14 @@ struct go_brazier_of_madness : public GameObjectAI return true; } + if (InstanceScript* instanceScript = me->GetInstanceScript()) + { + if (instanceScript->GetGuidData(DATA_EDGE_OF_MADNESS)) + { + return false; + } + } + uint32 bossEntry = 0; for (uint8 i = 0; i < 4; ++i) { From dfe28a75a6e928eb5522d3ab649fbf069a05e500 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sat, 9 Jul 2022 18:56:25 +0200 Subject: [PATCH 088/119] fix(Scripts/ZulGurub): Added more missing areatrigger whispers (#12326) --- .../rev_1657353730911093900.sql | 10 +++ .../EasternKingdoms/ZulGurub/boss_hakkar.cpp | 70 ++++++++++++++++++- 2 files changed, 77 insertions(+), 3 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1657353730911093900.sql diff --git a/data/sql/updates/pending_db_world/rev_1657353730911093900.sql b/data/sql/updates/pending_db_world/rev_1657353730911093900.sql new file mode 100644 index 000000000..27631c536 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657353730911093900.sql @@ -0,0 +1,10 @@ +-- +DELETE FROM `areatrigger_scripts` WHERE `entry` IN (3961,3962); +INSERT INTO `areatrigger_scripts` VALUES +(3961,'at_zulgurub_bloodfire_pit_speech'), +(3962,'at_zulgurub_edge_of_madness_speech'); + +DELETE FROM `creature_text` WHERE `CreatureID`=14834 AND `groupid` IN (5,6); +INSERT INTO `creature_text` VALUES +(14834,5,0,'Pledge your allegiance to Hakkar and the pain you suffer shall be minimal.',15,0,100,0,0,0,10593,0,'Hakkar Bloodfire Pit Whisper'), +(14834,6,0,'The world will suffer immeasurable cruelties under my reign.',15,0,100,0,0,0,10590,0,'Hakkar Edge Of Madness Whisper'); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 93c6eebbb..0d2d5624d 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -35,6 +35,8 @@ enum Says SAY_MINION_DESTROY = 2, SAY_PROTECT_ALTAR = 3, SAY_PROTECT_GURUBASHI_EMPIRE = 4, + SAY_PLEDGE_ALLEGIANCE = 5, + SAY_WORLD_WILL_SUFFER = 6, SAY_EVADE = 7 }; @@ -226,8 +228,8 @@ public: hakkar->AI()->Talk(SAY_PROTECT_GURUBASHI_EMPIRE); } } - return false; } + return false; } }; @@ -241,6 +243,10 @@ public: { if (InstanceScript* instance = player->GetInstanceScript()) { + // Instance map's enormous, Hakkar's GRID is not loaded by the time players enter. + // Without this, the creature never says anything, because it doesn't load in time. + player->GetMap()->LoadGrid(-11783.99f, -1655.27f); + if (Creature* hakkar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_HAKKAR))) { if (hakkar->GetAI()) @@ -248,8 +254,8 @@ public: hakkar->AI()->Talk(SAY_PROTECT_ALTAR); } } - return false; } + return false; } }; @@ -263,6 +269,10 @@ public: { if (InstanceScript* instance = player->GetInstanceScript()) { + // Instance map's enormous, Hakkar's GRID is not loaded by the time players enter. + // Without this, the creature never says anything, because it doesn't load in time. + player->GetMap()->LoadGrid(-11783.99f, -1655.27f); + if (Creature* hakkar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_HAKKAR))) { if (hakkar->GetAI()) @@ -270,8 +280,60 @@ public: hakkar->AI()->Talk(SAY_MINION_DESTROY); } } - return false; } + + return false; + } +}; + +class at_zulgurub_bloodfire_pit_speech : public OnlyOnceAreaTriggerScript +{ +public: + at_zulgurub_bloodfire_pit_speech() : OnlyOnceAreaTriggerScript("at_zulgurub_bloodfire_pit_speech") {} + + bool _OnTrigger(Player* player, const AreaTrigger* /*at*/) override + { + if (InstanceScript* instance = player->GetInstanceScript()) + { + // Instance map's enormous, Hakkar's GRID is not loaded by the time players enter. + // Without this, the creature never says anything, because it doesn't load in time. + player->GetMap()->LoadGrid(-11783.99f, -1655.27f); + + if (Creature* hakkar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_HAKKAR))) + { + if (hakkar->GetAI()) + { + hakkar->AI()->Talk(SAY_PLEDGE_ALLEGIANCE, player); + } + } + } + + return false; + } +}; + +class at_zulgurub_edge_of_madness_speech : public OnlyOnceAreaTriggerScript +{ +public: + at_zulgurub_edge_of_madness_speech() : OnlyOnceAreaTriggerScript("at_zulgurub_edge_of_madness_speech") {} + + bool _OnTrigger(Player* player, const AreaTrigger* /*at*/) override + { + if (InstanceScript* instance = player->GetInstanceScript()) + { + // Instance map's enormous, Hakkar's GRID is not loaded by the time players enter. + // Without this, the creature never says anything, because it doesn't load in time. + player->GetMap()->LoadGrid(-11783.99f, -1655.27f); + + if (Creature* hakkar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_HAKKAR))) + { + if (hakkar->GetAI()) + { + hakkar->AI()->Talk(SAY_WORLD_WILL_SUFFER, player); + } + } + } + return false; } }; @@ -318,5 +380,7 @@ void AddSC_boss_hakkar() new at_zulgurub_entrance_speech(); new at_zulgurub_bridge_speech(); new at_zulgurub_temple_speech(); + new at_zulgurub_bloodfire_pit_speech(); + new at_zulgurub_edge_of_madness_speech(); RegisterSpellScript(spell_blood_siphon); } From b2e5ab4a9057ca9bb193004d0d7aa98fe7fb37b0 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 16:58:47 +0000 Subject: [PATCH 089/119] chore(DB): import pending files Referenced commit(s): dfe28a75a6e928eb5522d3ab649fbf069a05e500 --- .../rev_1657353730911093900.sql => db_world/2022_07_09_07.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657353730911093900.sql => db_world/2022_07_09_07.sql} (93%) diff --git a/data/sql/updates/pending_db_world/rev_1657353730911093900.sql b/data/sql/updates/db_world/2022_07_09_07.sql similarity index 93% rename from data/sql/updates/pending_db_world/rev_1657353730911093900.sql rename to data/sql/updates/db_world/2022_07_09_07.sql index 27631c536..033cd795f 100644 --- a/data/sql/updates/pending_db_world/rev_1657353730911093900.sql +++ b/data/sql/updates/db_world/2022_07_09_07.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_06 -> 2022_07_09_07 -- DELETE FROM `areatrigger_scripts` WHERE `entry` IN (3961,3962); INSERT INTO `areatrigger_scripts` VALUES From bafac46639de2d2625f3aa32c7ad2e427487d201 Mon Sep 17 00:00:00 2001 From: Nefertumm Date: Sat, 9 Jul 2022 16:49:35 -0300 Subject: [PATCH 090/119] fix(Core/ZulGurub): Hakkar hardmode (#12333) --- .../rev_1657371029609597700.sql | 4 ++ .../EasternKingdoms/ZulGurub/boss_hakkar.cpp | 42 +++++++++++++++---- .../ZulGurub/instance_zulgurub.cpp | 30 +++++++++++++ .../EasternKingdoms/ZulGurub/zulgurub.h | 6 +++ 4 files changed, 75 insertions(+), 7 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1657371029609597700.sql diff --git a/data/sql/updates/pending_db_world/rev_1657371029609597700.sql b/data/sql/updates/pending_db_world/rev_1657371029609597700.sql new file mode 100644 index 000000000..423fa6945 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657371029609597700.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_hakkar_power_down'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(24693, 'spell_hakkar_power_down'); diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp index 0d2d5624d..b63fb4780 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp @@ -90,9 +90,19 @@ public: return true; } + void ApplyHakkarPowerStacks() + { + me->RemoveAurasDueToSpell(SPELL_HAKKAR_POWER); + for (int i = DATA_JEKLIK; i < DATA_HAKKAR; i++) + if (instance->GetBossState(i) != DONE) + DoCastSelf(SPELL_HAKKAR_POWER, true); + } + void Reset() override { _Reset(); + + ApplyHakkarPowerStacks(); } void JustDied(Unit* /*killer*/) override @@ -108,13 +118,13 @@ public: events.ScheduleEvent(EVENT_CAUSE_INSANITY, 17000); events.ScheduleEvent(EVENT_ENRAGE, 600000); if (instance->GetBossState(DATA_JEKLIK) != DONE) - events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 4000); + events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 21000); if (instance->GetBossState(DATA_VENOXIS) != DONE) - events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 7000); + events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 14000); if (instance->GetBossState(DATA_MARLI) != DONE) - events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 12000); + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 15000); if (instance->GetBossState(DATA_THEKAL) != DONE) - events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 8000); + events.ScheduleEvent(EVENT_ASPECT_OF_THEKAL, 10000); if (instance->GetBossState(DATA_ARLOKK) != DONE) events.ScheduleEvent(EVENT_ASPECT_OF_ARLOKK, 18000); Talk(SAY_AGGRO); @@ -166,11 +176,11 @@ public: break; case EVENT_ASPECT_OF_JEKLIK: DoCastVictim(SPELL_ASPECT_OF_JEKLIK, true); - events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, urand(10000, 14000)); + events.ScheduleEvent(EVENT_ASPECT_OF_JEKLIK, 24000); break; case EVENT_ASPECT_OF_VENOXIS: DoCastVictim(SPELL_ASPECT_OF_VENOXIS, true); - events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, 8000); + events.ScheduleEvent(EVENT_ASPECT_OF_VENOXIS, urand(16000, 18000)); break; case EVENT_ASPECT_OF_MARLI: if (Unit* victim = SelectTarget(SelectTargetMethod::MaxThreat, 0, 5.f, true)) @@ -178,7 +188,7 @@ public: DoCast(victim, SPELL_ASPECT_OF_MARLI, true); me->GetThreatMgr().modifyThreatPercent(victim, -100.f); } - events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 10000); + events.ScheduleEvent(EVENT_ASPECT_OF_MARLI, 45000); break; case EVENT_ASPECT_OF_THEKAL: DoCastVictim(SPELL_ASPECT_OF_THEKAL, true); @@ -374,6 +384,23 @@ class spell_blood_siphon : public SpellScript } }; +class spell_hakkar_power_down : public SpellScript +{ + PrepareSpellScript(spell_hakkar_power_down); + + void HandleOnHit() + { + if (Unit* caster = GetCaster()) + if (caster->HasAura(SPELL_HAKKAR_POWER)) + caster->RemoveAuraFromStack(SPELL_HAKKAR_POWER); + } + + void Register() override + { + OnHit += SpellHitFn(spell_hakkar_power_down::HandleOnHit); + } +}; + void AddSC_boss_hakkar() { new boss_hakkar(); @@ -383,4 +410,5 @@ void AddSC_boss_hakkar() new at_zulgurub_bloodfire_pit_speech(); new at_zulgurub_edge_of_madness_speech(); RegisterSpellScript(spell_blood_siphon); + RegisterSpellScript(spell_hakkar_power_down); } diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp index bbd5c1e8d..a99c4ad5f 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/instance_zulgurub.cpp @@ -142,6 +142,36 @@ public: return 0; } + void RemoveHakkarPowerStack() + { + if (Creature* hakkar = instance->GetCreature(_hakkarGUID)) + { + hakkar->CastSpell(hakkar, SPELL_HAKKAR_POWER_DOWN, true); + } + } + + bool SetBossState(uint32 type, EncounterState state) override + { + if (!InstanceScript::SetBossState(type, state)) + return false; + + switch (type) + { + case DATA_JEKLIK: + case DATA_VENOXIS: + case DATA_MARLI: + case DATA_ARLOKK: + case DATA_THEKAL: + if (state == DONE) + RemoveHakkarPowerStack(); + break; + default: + break; + } + + return true; + } + std::string GetSaveData() override { OUT_SAVE_INST_DATA; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h index 232328acf..7c88c3fa0 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h +++ b/src/server/scripts/EasternKingdoms/ZulGurub/zulgurub.h @@ -76,6 +76,12 @@ enum GameobjectIds GO_GONG_OF_BETHEKK = 180526 // Arlokk Event }; +enum SpellIds +{ + SPELL_HAKKAR_POWER = 24692, + SPELL_HAKKAR_POWER_DOWN = 24693 +}; + template inline AI* GetZulGurubAI(T* obj) { From 1a503e4f44bc439e96ba67a79edc1879b77e0a2d Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 19:51:26 +0000 Subject: [PATCH 091/119] chore(DB): import pending files Referenced commit(s): bafac46639de2d2625f3aa32c7ad2e427487d201 --- .../rev_1657371029609597700.sql => db_world/2022_07_09_08.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657371029609597700.sql => db_world/2022_07_09_08.sql} (80%) diff --git a/data/sql/updates/pending_db_world/rev_1657371029609597700.sql b/data/sql/updates/db_world/2022_07_09_08.sql similarity index 80% rename from data/sql/updates/pending_db_world/rev_1657371029609597700.sql rename to data/sql/updates/db_world/2022_07_09_08.sql index 423fa6945..79f48ad5b 100644 --- a/data/sql/updates/pending_db_world/rev_1657371029609597700.sql +++ b/data/sql/updates/db_world/2022_07_09_08.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_07 -> 2022_07_09_08 -- DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_hakkar_power_down'; INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES From 5786efe873b6441b0df8a87e0c7ac0e3799cefba Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sat, 9 Jul 2022 18:22:12 -0300 Subject: [PATCH 092/119] fix(DB/creature): More ZulGurub pathing (#12334) --- data/sql/updates/pending_db_world/zg_path.sql | 43 +++++++++++++++++++ 1 file changed, 43 insertions(+) create mode 100644 data/sql/updates/pending_db_world/zg_path.sql diff --git a/data/sql/updates/pending_db_world/zg_path.sql b/data/sql/updates/pending_db_world/zg_path.sql new file mode 100644 index 000000000..27ef0c5ba --- /dev/null +++ b/data/sql/updates/pending_db_world/zg_path.sql @@ -0,0 +1,43 @@ +-- +SET @NPC := 51384; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=0,`position_x`=-11625.495,`position_y`=-1686.3772,`position_z`=39.85919 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +DELETE FROM `waypoint_data` WHERE `id`=@PATH; + +SET @NPC := 49705; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-12304.316,`position_y`=-1828.3707,`position_z`=130.3816 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`visibilityDistanceType`,`auras`) VALUES (@NPC,@PATH,0,0,1,0,0, ''); +DELETE FROM `waypoint_data` WHERE `id`=@PATH; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-12304.316,-1828.3707,130.3816,0,0,0,0,100,0), +(@PATH,2,-12316.513,-1835.5278,130.3816,0,0,0,0,100,0), +(@PATH,3,-12333.007,-1831.8125,130.3816,0,0,0,0,100,0), +(@PATH,4,-12302.664,-1882.1113,130.38538,0,0,0,0,100,0), +(@PATH,5,-12292.008,-1899.5505,130.28304,0,0,0,0,100,0), +(@PATH,6,-12277.654,-1913.2064,130.3583,0,0,0,0,100,0), +(@PATH,7,-12253.349,-1920.6671,130.39581,0,0,0,0,100,0), +(@PATH,8,-12232.099,-1935.3337,130.39581,0,0,0,0,100,0), +(@PATH,9,-12253.349,-1920.6671,130.39581,0,0,0,0,100,0), +(@PATH,10,-12277.654,-1913.2064,130.3583,0,0,0,0,100,0), +(@PATH,11,-12292.008,-1899.5505,130.28304,0,0,0,0,100,0), +(@PATH,12,-12302.664,-1882.1113,130.38538,0,0,0,0,100,0), +(@PATH,13,-12308.578,-1866.2955,130.3816,0,0,0,0,100,0), +(@PATH,14,-12321.762,-1855.7916,130.3816,0,0,0,0,100,0), +(@PATH,15,-12319.301,-1837.3279,130.3816,0,0,0,0,100,0), +(@PATH,16,-12333.007,-1831.8125,130.3816,0,0,0,0,100,0), +(@PATH,17,-12316.513,-1835.5278,130.3816,0,0,0,0,100,0), +(@PATH,18,-12304.316,-1828.3707,130.3816,0,0,0,0,100,0), +(@PATH,19,-12291.655,-1821.4,130.38538,0,0,0,0,100,0), +(@PATH,20,-12321.201,-1840.0312,130.3816,0,0,0,0,100,0), +(@PATH,21,-12326.542,-1865.9154,130.3816,0,0,0,0,100,0), +(@PATH,22,-12333.967,-1876.9497,130.3084,0,0,0,0,100,0), +(@PATH,23,-12345.774,-1883.2954,130.3084,0,0,0,0,100,0), +(@PATH,24,-12357.866,-1904.3063,130.4747,0,0,0,0,100,0), +(@PATH,25,-12345.774,-1883.2954,130.3084,0,0,0,0,100,0), +(@PATH,26,-12333.967,-1876.9497,130.3084,0,0,0,0,100,0), +(@PATH,27,-12326.542,-1865.9154,130.3816,0,0,0,0,100,0), +(@PATH,28,-12321.201,-1840.0312,130.3816,0,0,0,0,100,0), +(@PATH,29,-12291.655,-1821.4,130.38538,0,0,0,0,100,0); From c63d70e95fb860d4491eb1711b630c940f6c7d6c Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 21:24:09 +0000 Subject: [PATCH 093/119] chore(DB): import pending files Referenced commit(s): 5786efe873b6441b0df8a87e0c7ac0e3799cefba --- .../{pending_db_world/zg_path.sql => db_world/2022_07_09_09.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/zg_path.sql => db_world/2022_07_09_09.sql} (98%) diff --git a/data/sql/updates/pending_db_world/zg_path.sql b/data/sql/updates/db_world/2022_07_09_09.sql similarity index 98% rename from data/sql/updates/pending_db_world/zg_path.sql rename to data/sql/updates/db_world/2022_07_09_09.sql index 27ef0c5ba..aaeb98392 100644 --- a/data/sql/updates/pending_db_world/zg_path.sql +++ b/data/sql/updates/db_world/2022_07_09_09.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_08 -> 2022_07_09_09 -- SET @NPC := 51384; SET @PATH := @NPC * 10; From 9c09857b190c36f587db11ab18c87d79ceef5b99 Mon Sep 17 00:00:00 2001 From: Nefertumm Date: Sat, 9 Jul 2022 18:36:51 -0300 Subject: [PATCH 094/119] fix(Core/ZulGurub): Jin'do the Hexxer rewrite (#12233) Co-authored-by: UltraNix --- .../rev_1656469500232857400.sql | 36 ++ .../EasternKingdoms/ZulGurub/boss_jindo.cpp | 425 +++++++++--------- 2 files changed, 244 insertions(+), 217 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1656469500232857400.sql diff --git a/data/sql/updates/pending_db_world/rev_1656469500232857400.sql b/data/sql/updates/pending_db_world/rev_1656469500232857400.sql new file mode 100644 index 000000000..d5e671a32 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656469500232857400.sql @@ -0,0 +1,36 @@ +-- +DELETE FROM `spell_target_position` WHERE `id` = 24466; +INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`) VALUES +(24466, 0, 309, -11582.9, -1251.15, 90, 5.04179); + +UPDATE `creature` SET `spawntimesecs` = 20 WHERE `id1` = 14826; + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 14826; + +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 14826) AND (`source_type` = 0) AND (`id` IN (0, 1)); +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 +(14826, 0, 0, 0, 6, 0, 100, 0, 0, 0, 0, 0, 0, 41, 5000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Sacrificed Troll - On Just Died - Despawn In 5000 ms'), +(14826, 0, 1, 0, 11, 0, 100, 0, 0, 0, 0, 0, 0, 70, 0, 0, 0, 0, 0, 0, 9, 14826, 0, 100, 2, 0, 0, 0, 0, 'Sacrificed Troll - On Respawn - Respawn Closest Creature \'Sacrificed Troll\''); + +SET @LEADERGUID := 49081; +DELETE FROM `creature_formations` WHERE `memberGUID` IN (@LEADERGUID, 49078, 49079, 49080, 49082, 49083, 49084, 49085, 49086, 49087); +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`) VALUES +(@LEADERGUID, @LEADERGUID, 0, 0, 3), +(@LEADERGUID, 49078, 0, 0, 3), +(@LEADERGUID, 49079, 0, 0, 3), +(@LEADERGUID, 49080, 0, 0, 3), +(@LEADERGUID, 49082, 0, 0, 3), +(@LEADERGUID, 49083, 0, 0, 3), +(@LEADERGUID, 49084, 0, 0, 3), +(@LEADERGUID, 49085, 0, 0, 3), +(@LEADERGUID, 49086, 0, 0, 3), +(@LEADERGUID, 49087, 0, 0, 3); + +UPDATE `creature_template_spell` SET `Spell` = 24261 WHERE `CreatureID` = 15112 AND `Index` = 0; + +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_random_aggro', 'spell_delusions_of_jindo'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(23878, 'spell_random_aggro'), +(24306, 'spell_delusions_of_jindo'); + +UPDATE `creature_template` SET `speed_run` = 1.14286, `speed_walk` = 1.32 WHERE `entry` = 11380; diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp index 0b912aef1..d4aa84a18 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp @@ -15,15 +15,10 @@ * with this program. If not, see . */ -/* ScriptData -SDName: Boss_Jin'do the Hexxer -SD%Complete: 85 -SDComment: Mind Control not working because of core bug. Shades visible for all. -SDCategory: Zul'Gurub -EndScriptData */ - #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "SpellScript.h" +#include "TaskScheduler.h" #include "zulgurub.h" enum Say @@ -33,269 +28,265 @@ enum Say enum Spells { - SPELL_BRAINWASHTOTEM = 24262, - SPELL_POWERFULLHEALINGWARD = 24309, + SPELL_BRAIN_WASH_TOTEM = 24262, + SPELL_POWERFULL_HEALING_WARD = 24309, SPELL_HEX = 24053, - SPELL_DELUSIONSOFJINDO = 24306, + SPELL_DELUSIONS_OF_JINDO = 24306, + SPELL_SUMMON_SHADE_OF_JINDO = 24308, + SPELL_BANISH = 24466, + //Healing Ward Spell SPELL_HEAL = 24311, + //Shade of Jindo Spell - SPELL_SHADEOFJINDO_PASSIVE = 24307, - SPELL_SHADEOFJINDO_VISUAL = 24313, - SPELL_SHADOWSHOCK = 19460 + SPELL_SHADE_OF_JINDO_PASSIVE = 24307, + SPELL_SHADE_OF_JINDO_VISUAL = 24313, + SPELL_SHADOW_SHOCK = 19460, + SPELL_RANDOM_AGGRO = 23878 }; enum Events { - EVENT_BRAINWASHTOTEM = 1, - EVENT_POWERFULLHEALINGWARD = 2, + EVENT_BRAIN_WASH_TOTEM = 1, + EVENT_POWERFULL_HEALING_WARD = 2, EVENT_HEX = 3, - EVENT_DELUSIONSOFJINDO = 4, + EVENT_DELUSIONS_OF_JINDO = 4, EVENT_TELEPORT = 5 }; -Position const TeleportLoc = {-11583.7783f, -1249.4278f, 77.5471f, 4.745f}; - -class boss_jindo : public CreatureScript +struct boss_jindo : public BossAI { -public: - boss_jindo() : CreatureScript("boss_jindo") { } + boss_jindo(Creature* creature) : BossAI(creature, DATA_JINDO) { } - struct boss_jindoAI : public BossAI + void EnterCombat(Unit* who) override { - boss_jindoAI(Creature* creature) : BossAI(creature, DATA_JINDO) { } + BossAI::EnterCombat(who); + events.ScheduleEvent(EVENT_BRAIN_WASH_TOTEM, 20000); + events.ScheduleEvent(EVENT_POWERFULL_HEALING_WARD, 16000); + events.ScheduleEvent(EVENT_HEX, 8000); + events.ScheduleEvent(EVENT_DELUSIONS_OF_JINDO, 10000); + events.ScheduleEvent(EVENT_TELEPORT, 5000); - void Reset() override + Talk(SAY_AGGRO); + } + + void JustSummoned(Creature* summon) override + { + BossAI::JustSummoned(summon); + + switch (summon->GetEntry()) { - _Reset(); - } - - void JustDied(Unit* /*killer*/) override - { - _JustDied(); - } - - void EnterCombat(Unit* /*who*/) override - { - _EnterCombat(); - events.ScheduleEvent(EVENT_BRAINWASHTOTEM, 20000); - events.ScheduleEvent(EVENT_POWERFULLHEALINGWARD, 16000); - events.ScheduleEvent(EVENT_HEX, 8000); - events.ScheduleEvent(EVENT_DELUSIONSOFJINDO, 10000); - events.ScheduleEvent(EVENT_TELEPORT, 5000); - Talk(SAY_AGGRO); - } - - void JustSummoned(Creature* summon) override - { - BossAI::JustSummoned(summon); - - switch (summon->GetEntry()) + case NPC_BRAIN_WASH_TOTEM: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) { - case NPC_BRAIN_WASH_TOTEM: - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1)) - { - summon->CastSpell(target, summon->m_spells[0], true); - } - break; - default: - break; + summon->CastSpell(target, summon->m_spells[0], true); + } + break; + default: + break; + } + } + + void EnterEvadeMode(EvadeReason evadeReason) override + { + if (_EnterEvadeMode(evadeReason)) + { + me->AddUnitState(UNIT_STATE_EVADE); + Reset(); + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_DANCE); + + me->m_Events.AddEventAtOffset([&]() + { + me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_NONE); + me->GetMotionMaster()->MoveTargetedHome(); + }, 4s); + } + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_BRAIN_WASH_TOTEM: + DoCastSelf(SPELL_BRAIN_WASH_TOTEM); + events.ScheduleEvent(EVENT_BRAIN_WASH_TOTEM, urand(18000, 26000)); + break; + case EVENT_POWERFULL_HEALING_WARD: + DoCastSelf(SPELL_POWERFULL_HEALING_WARD, true); + events.ScheduleEvent(EVENT_POWERFULL_HEALING_WARD, urand(14000, 20000)); + break; + case EVENT_HEX: + if (me->GetThreatMgr().getThreatList().size() > 1) + DoCastVictim(SPELL_HEX, true); + events.ScheduleEvent(EVENT_HEX, urand(12000, 20000)); + break; + case EVENT_DELUSIONS_OF_JINDO: + DoCastRandomTarget(SPELL_DELUSIONS_OF_JINDO); + events.ScheduleEvent(EVENT_DELUSIONS_OF_JINDO, urand(4000, 12000)); + break; + case EVENT_TELEPORT: + DoCastRandomTarget(SPELL_BANISH); + events.ScheduleEvent(EVENT_TELEPORT, urand(15000, 23000)); + break; + default: + break; } } - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; + DoMeleeAttackIfReady(); + } - events.Update(diff); - - if (me->HasUnitState(UNIT_STATE_CASTING)) - return; - - while (uint32 eventId = events.ExecuteEvent()) - { - switch (eventId) - { - case EVENT_BRAINWASHTOTEM: - DoCast(me, SPELL_BRAINWASHTOTEM); - events.ScheduleEvent(EVENT_BRAINWASHTOTEM, urand(18000, 26000)); - break; - case EVENT_POWERFULLHEALINGWARD: - DoCastSelf(SPELL_POWERFULLHEALINGWARD, true); - events.ScheduleEvent(EVENT_POWERFULLHEALINGWARD, urand(14000, 20000)); - break; - case EVENT_HEX: - DoCastVictim(SPELL_HEX, true); - events.ScheduleEvent(EVENT_HEX, urand(12000, 20000)); - break; - case EVENT_DELUSIONSOFJINDO: // HACK - // Casting the delusion curse with a shade so shade will attack the same target with the curse. - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) - { - DoCast(target, SPELL_DELUSIONSOFJINDO); - Creature* Shade = me->SummonCreature(NPC_SHADE_OF_JINDO, target->GetPositionX(), target->GetPositionY(), target->GetPositionZ(), 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (Shade) - Shade->AI()->AttackStart(target); - } - events.ScheduleEvent(EVENT_DELUSIONSOFJINDO, urand(4000, 12000)); - break; - case EVENT_TELEPORT: // Possible HACK - // Teleports a random player and spawns 9 Sacrificed Trolls to attack player - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0)) - { - DoTeleportPlayer(target, TeleportLoc.m_positionX, TeleportLoc.m_positionY, TeleportLoc.m_positionZ, TeleportLoc.GetOrientation()); - if (DoGetThreat(me->GetVictim())) - DoModifyThreatPercent(target, -100); - Creature* SacrificedTroll; - SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, TeleportLoc.m_positionX + 2, TeleportLoc.m_positionY, TeleportLoc.m_positionZ, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (SacrificedTroll) - SacrificedTroll->AI()->AttackStart(target); - SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, TeleportLoc.m_positionX - 2, TeleportLoc.m_positionY, TeleportLoc.m_positionZ, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (SacrificedTroll) - SacrificedTroll->AI()->AttackStart(target); - SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, TeleportLoc.m_positionX + 4, TeleportLoc.m_positionY, TeleportLoc.m_positionZ, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (SacrificedTroll) - SacrificedTroll->AI()->AttackStart(target); - SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, TeleportLoc.m_positionX - 4, TeleportLoc.m_positionY, TeleportLoc.m_positionZ, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (SacrificedTroll) - SacrificedTroll->AI()->AttackStart(target); - SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, TeleportLoc.m_positionX, TeleportLoc.m_positionY + 2, TeleportLoc.m_positionZ, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (SacrificedTroll) - SacrificedTroll->AI()->AttackStart(target); - SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, TeleportLoc.m_positionX, TeleportLoc.m_positionY - 2, TeleportLoc.m_positionZ, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (SacrificedTroll) - SacrificedTroll->AI()->AttackStart(target); - SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, TeleportLoc.m_positionX, TeleportLoc.m_positionY + 4, TeleportLoc.m_positionZ, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (SacrificedTroll) - SacrificedTroll->AI()->AttackStart(target); - SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, TeleportLoc.m_positionX, TeleportLoc.m_positionY - 4, TeleportLoc.m_positionZ, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (SacrificedTroll) - SacrificedTroll->AI()->AttackStart(target); - SacrificedTroll = me->SummonCreature(NPC_SACRIFICED_TROLL, TeleportLoc.m_positionX + 3, TeleportLoc.m_positionY, TeleportLoc.m_positionZ, 0, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 15000); - if (SacrificedTroll) - SacrificedTroll->AI()->AttackStart(target); - } - events.ScheduleEvent(EVENT_TELEPORT, urand(15000, 23000)); - break; - default: - break; - } - } - - DoMeleeAttackIfReady(); - } - - bool CanAIAttack(Unit const* target) const override - { + bool CanAIAttack(Unit const* target) const override + { + if (me->GetThreatMgr().getThreatList().size() > 1 && me->GetThreatMgr().getOnlineContainer().getMostHated()->getTarget() == target) return !target->HasAura(SPELL_HEX); - } - }; - CreatureAI* GetAI(Creature* creature) const override - { - return GetZulGurubAI(creature); + return true; } }; //Healing Ward -class npc_healing_ward : public CreatureScript +struct npc_healing_ward : public ScriptedAI { -public: - npc_healing_ward() - : CreatureScript("npc_healing_ward") + npc_healing_ward(Creature* creature) : ScriptedAI(creature) { + _instance = creature->GetInstanceScript(); } - struct npc_healing_wardAI : public ScriptedAI + void Reset() override { - npc_healing_wardAI(Creature* creature) : ScriptedAI(creature) - { - instance = creature->GetInstanceScript(); - } + _scheduler.CancelAll(); + } - uint32 Heal_Timer; - - InstanceScript* instance; - - void Reset() override - { - Heal_Timer = 2000; - } - - void EnterCombat(Unit* /*who*/) override - { - } - - void UpdateAI(uint32 diff) override - { - //Heal_Timer - if (Heal_Timer <= diff) + void EnterCombat(Unit* /*who*/) override + { + _scheduler. + Schedule(2s, [this](TaskContext context) { - Unit* pJindo = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_JINDO)); + Unit* pJindo = ObjectAccessor::GetUnit(*me, _instance->GetGuidData(DATA_JINDO)); if (pJindo) DoCast(pJindo, SPELL_HEAL); - Heal_Timer = 3000; - } - else Heal_Timer -= diff; - - DoMeleeAttackIfReady(); - } - }; - - CreatureAI* GetAI(Creature* creature) const override - { - return GetZulGurubAI(creature); + context.Repeat(3s); + }); } + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff, [this] + { + DoMeleeAttackIfReady(); + }); + } + +private: + InstanceScript* _instance; + TaskScheduler _scheduler; }; //Shade of Jindo -class npc_shade_of_jindo : public CreatureScript +struct npc_shade_of_jindo : public ScriptedAI { -public: - npc_shade_of_jindo() - : CreatureScript("npc_shade_of_jindo") + npc_shade_of_jindo(Creature* creature) : ScriptedAI(creature) { } + + void IsSummonedBy(Unit* /*summoner*/) override { + DoZoneInCombat(); + DoCastSelf(SPELL_SHADE_OF_JINDO_PASSIVE, true); + DoCastSelf(SPELL_SHADE_OF_JINDO_VISUAL, true); + DoCastAOE(SPELL_RANDOM_AGGRO, true); } - struct npc_shade_of_jindoAI : public ScriptedAI + void Reset() override { - npc_shade_of_jindoAI(Creature* creature) : ScriptedAI(creature) { } + _scheduler.CancelAll(); - uint32 ShadowShock_Timer; - - void Reset() override - { - ShadowShock_Timer = 1000; - DoCastSelf(SPELL_SHADEOFJINDO_PASSIVE, true); - DoCastSelf(SPELL_SHADEOFJINDO_VISUAL, true); - } - - void EnterCombat(Unit* /*who*/) override { } - - void UpdateAI(uint32 diff) override - { - //ShadowShock_Timer - if (ShadowShock_Timer <= diff) + _scheduler. + Schedule(1s, [this](TaskContext context) { - DoCastVictim(SPELL_SHADOWSHOCK); - ShadowShock_Timer = 2000; - } - else ShadowShock_Timer -= diff; + DoCastAOE(SPELL_RANDOM_AGGRO, true); + context.Repeat(); + }); + } - DoMeleeAttackIfReady(); - } - }; - - CreatureAI* GetAI(Creature* creature) const override + void EnterCombat(Unit* /*who*/) override { - return GetZulGurubAI(creature); + _scheduler. + Schedule(1s, [this](TaskContext context) + { + DoCastVictim(SPELL_SHADOW_SHOCK); + context.Repeat(2s); + }); + } + + void UpdateAI(uint32 diff) override + { + _scheduler.Update(diff, [this] + { + DoMeleeAttackIfReady(); + }); + } + +private: + TaskScheduler _scheduler; +}; + +class spell_random_aggro : public SpellScript +{ + PrepareSpellScript(spell_random_aggro); + + void HandleOnHit() + { + Unit* caster = GetCaster(); + Unit* target = GetHitUnit(); + if (!caster || !target || !caster->GetAI()) + return; + + caster->GetAI()->AttackStart(target); + } + + void Register() override + { + OnHit += SpellHitFn(spell_random_aggro::HandleOnHit); + } +}; + +class spell_delusions_of_jindo : public SpellScript +{ + PrepareSpellScript(spell_delusions_of_jindo); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SUMMON_SHADE_OF_JINDO }); + } + + void HandleOnHit() + { + Unit* caster = GetCaster(); + if (caster) + caster->CastSpell(caster, SPELL_SUMMON_SHADE_OF_JINDO, true); + } + + void Register() override + { + OnHit += SpellHitFn(spell_delusions_of_jindo::HandleOnHit); } }; void AddSC_boss_jindo() { - new boss_jindo(); - new npc_healing_ward(); - new npc_shade_of_jindo(); + RegisterZulGurubCreatureAI(boss_jindo); + RegisterZulGurubCreatureAI(npc_healing_ward); + RegisterZulGurubCreatureAI(npc_shade_of_jindo); + RegisterSpellScript(spell_random_aggro); + RegisterSpellScript(spell_delusions_of_jindo); } From 1d6dc750fa37184525f3de2837cbd57230ee62ab Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 9 Jul 2022 21:38:58 +0000 Subject: [PATCH 095/119] chore(DB): import pending files Referenced commit(s): 9c09857b190c36f587db11ab18c87d79ceef5b99 --- .../rev_1656469500232857400.sql => db_world/2022_07_09_10.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1656469500232857400.sql => db_world/2022_07_09_10.sql} (98%) diff --git a/data/sql/updates/pending_db_world/rev_1656469500232857400.sql b/data/sql/updates/db_world/2022_07_09_10.sql similarity index 98% rename from data/sql/updates/pending_db_world/rev_1656469500232857400.sql rename to data/sql/updates/db_world/2022_07_09_10.sql index d5e671a32..fae73481d 100644 --- a/data/sql/updates/pending_db_world/rev_1656469500232857400.sql +++ b/data/sql/updates/db_world/2022_07_09_10.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_09 -> 2022_07_09_10 -- DELETE FROM `spell_target_position` WHERE `id` = 24466; INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`) VALUES From 5930eed64643fe6c4f8c480137c87c683f9fede7 Mon Sep 17 00:00:00 2001 From: "Julio A. Leyva Osorio" Date: Sun, 10 Jul 2022 14:14:04 -0400 Subject: [PATCH 096/119] fix(DB/Locale): Creature: Nayura (#11355) * fix(DB/Locale): Creature: Nayura Source TC: https://github.com/TrinityCore/TrinityCore/issues/24972 * Update rev_1649656477945100427.sql * Update rev_1649656477945100427.sql * Update rev_1649656477945100427.sql * Update rev_1649656477945100427.sql --- .../updates/pending_db_world/rev_1649656477945100427.sql | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1649656477945100427.sql diff --git a/data/sql/updates/pending_db_world/rev_1649656477945100427.sql b/data/sql/updates/pending_db_world/rev_1649656477945100427.sql new file mode 100644 index 000000000..0f7a01d8f --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1649656477945100427.sql @@ -0,0 +1,7 @@ +DELETE FROM `npc_text_locale` WHERE `ID`=13321 AND `locale` IN ('esES','esMX','frFR','zhCN','deDE'); +INSERT INTO `npc_text_locale` (`ID`, `Locale`, `Text0_0`, `Text0_1`) VALUES +(13321,"frFR","","Depuis ce quai, la Bravoure fait l\'aller-retour entre Hurlevent et Auberdine."), +(13321,"esES","","Desde este muelle, El Valentía hace el viaje de ida y vuelta entre Ventormenta y Auberdine."), +(13321,"esMX","","Desde este muelle, El Valentía hace el viaje de ida y vuelta entre Ventormenta y Auberdine."), +(13321,"zhCN","","从这个码头,勇敢者号在暴风城和奥伯丁之间往返"), +(13321,"deDE","","Von diesem Dock aus fährt die Bravado zwischen Sturmwind und Auberdine hin und her."); From a6e8f060a5e3ee736a5fa79eacfcf1f7bcf1d95a Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Sun, 10 Jul 2022 12:14:27 -0600 Subject: [PATCH 097/119] feat(Core/Config): Configurable Water Breath Timer (#11945) * feat(Core/Config): Configurable Water Breath Timer * Config Formatting Add missing linebreaks * Use int instead of float for water breath timer * Correctly get CONFIG_WATER_BREATH as Int instead of Float value * Move CONFIG_WATER_BREATH_TIMER to WorldInt configs * More logical WaterBreath configuration --- src/server/apps/worldserver/worldserver.conf.dist | 9 +++++++++ src/server/game/Entities/Player/Player.cpp | 2 +- src/server/game/World/IWorld.h | 1 + src/server/game/World/World.cpp | 7 +++++++ 4 files changed, 18 insertions(+), 1 deletion(-) diff --git a/src/server/apps/worldserver/worldserver.conf.dist b/src/server/apps/worldserver/worldserver.conf.dist index f39c5925a..a0a06f1c4 100644 --- a/src/server/apps/worldserver/worldserver.conf.dist +++ b/src/server/apps/worldserver/worldserver.conf.dist @@ -2423,8 +2423,17 @@ Rate.InstanceResetTime = 1 # The lower the rate the less experience is required. # Default: 0.05 # + Rate.Pet.LevelXP = 0.05 +# +# WaterBreath.Timer +# Description: The timer for player's breath underwater in milliseconds +# Default: 180000 (3 minutes) +# + +WaterBreath.Timer = 180000 + # # SkillGain.Crafting # SkillGain.Defense diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index f8f73de79..2c8fe1dfb 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -813,7 +813,7 @@ int32 Player::getMaxTimer(MirrorTimerType timer) { if (!IsAlive() || HasAuraType(SPELL_AURA_WATER_BREATHING) || GetSession()->GetSecurity() >= AccountTypes(sWorld->getIntConfig(CONFIG_DISABLE_BREATHING))) return DISABLED_MIRROR_TIMER; - int32 UnderWaterTime = 3 * MINUTE * IN_MILLISECONDS; + int32 UnderWaterTime = sWorld->getIntConfig(CONFIG_WATER_BREATH_TIMER); AuraEffectList const& mModWaterBreathing = GetAuraEffectsByType(SPELL_AURA_MOD_WATER_BREATHING); for (AuraEffectList::const_iterator i = mModWaterBreathing.begin(); i != mModWaterBreathing.end(); ++i) AddPct(UnderWaterTime, (*i)->GetAmount()); diff --git a/src/server/game/World/IWorld.h b/src/server/game/World/IWorld.h index 4a8ae02c3..0544a463d 100644 --- a/src/server/game/World/IWorld.h +++ b/src/server/game/World/IWorld.h @@ -401,6 +401,7 @@ enum WorldIntConfigs CONFIG_LFG_MAX_KICK_COUNT, CONFIG_LFG_KICK_PREVENTION_TIMER, CONFIG_CHANGE_FACTION_MAX_MONEY, + CONFIG_WATER_BREATH_TIMER, INT_CONFIG_VALUE_COUNT }; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 24c35fa74..072fc251d 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1184,6 +1184,13 @@ void World::LoadConfigSettings(bool reload) m_bool_configs[CONFIG_OFFHAND_CHECK_AT_SPELL_UNLEARN] = sConfigMgr->GetOption("OffhandCheckAtSpellUnlearn", true); m_int_configs[CONFIG_CREATURE_STOP_FOR_PLAYER] = sConfigMgr->GetOption("Creature.MovingStopTimeForPlayer", 3 * MINUTE * IN_MILLISECONDS); + m_int_configs[CONFIG_WATER_BREATH_TIMER] = sConfigMgr->GetOption("WaterBreath.Timer", 180000); + if (m_int_configs[CONFIG_WATER_BREATH_TIMER] <= 0) + { + LOG_ERROR("server.loading", "WaterBreath.Timer ({}) must be > 0. Using 180000 instead.", m_int_configs[CONFIG_WATER_BREATH_TIMER]); + m_int_configs[CONFIG_WATER_BREATH_TIMER] = 180000; + } + if (int32 clientCacheId = sConfigMgr->GetOption("ClientCacheVersion", 0)) { // overwrite DB/old value From 388270e6d5e330e21512ca5751df6f0a91773f2d Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 10 Jul 2022 18:16:34 +0000 Subject: [PATCH 098/119] chore(DB): import pending files Referenced commit(s): a6e8f060a5e3ee736a5fa79eacfcf1f7bcf1d95a --- .../rev_1649656477945100427.sql => db_world/2022_07_10_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1649656477945100427.sql => db_world/2022_07_10_00.sql} (94%) diff --git a/data/sql/updates/pending_db_world/rev_1649656477945100427.sql b/data/sql/updates/db_world/2022_07_10_00.sql similarity index 94% rename from data/sql/updates/pending_db_world/rev_1649656477945100427.sql rename to data/sql/updates/db_world/2022_07_10_00.sql index 0f7a01d8f..370ed1d8c 100644 --- a/data/sql/updates/pending_db_world/rev_1649656477945100427.sql +++ b/data/sql/updates/db_world/2022_07_10_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_09_10 -> 2022_07_10_00 DELETE FROM `npc_text_locale` WHERE `ID`=13321 AND `locale` IN ('esES','esMX','frFR','zhCN','deDE'); INSERT INTO `npc_text_locale` (`ID`, `Locale`, `Text0_0`, `Text0_1`) VALUES (13321,"frFR","","Depuis ce quai, la Bravoure fait l\'aller-retour entre Hurlevent et Auberdine."), From f0706e13e4d0feee6a875781e80caa38e346927b Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 10 Jul 2022 20:17:20 +0200 Subject: [PATCH 099/119] fix(DB/Creature): Removed permanent root from Nergeld. (#12291) * fix(DB/Creature): Removed permanent root from Nergeld. Fixes #12218 * Update. * Update. --- data/sql/updates/pending_db_world/rev_1656838125070106100.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1656838125070106100.sql diff --git a/data/sql/updates/pending_db_world/rev_1656838125070106100.sql b/data/sql/updates/pending_db_world/rev_1656838125070106100.sql new file mode 100644 index 000000000..07ad450a2 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1656838125070106100.sql @@ -0,0 +1,2 @@ +-- +UPDATE `smart_scripts` SET `event_flags`=`event_flags`|512 WHERE `entryorguid`=3040300 AND `source_type`=9; From 40e28f2492c9a1b877d5d38915163d4851ce0505 Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Sun, 10 Jul 2022 12:17:57 -0600 Subject: [PATCH 100/119] fix(DB/Pathing): Missing Westfall Pathing (#12312) * fix(DB/Pathing): Missing Westfall Pathing * Add several more missing Westfall paths --- .../rev_1657123989788786700.sql | 1191 +++++++++++++++++ 1 file changed, 1191 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1657123989788786700.sql diff --git a/data/sql/updates/pending_db_world/rev_1657123989788786700.sql b/data/sql/updates/pending_db_world/rev_1657123989788786700.sql new file mode 100644 index 000000000..cb7bb1869 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657123989788786700.sql @@ -0,0 +1,1191 @@ +-- +/* Defias Pillager - GUID 90358 */ + + +SET @NPC := 90358; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11013.9, `position_y` = 1526.34, `position_z` = 43.5456, `orientation` = 0.872665 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11013.9, 1526.34, 43.5456, 100.0, 0), +(@PATH, 2, -11024.2, 1514.22, 43.0419, 100.0, 5000), +(@PATH, 3, -11033.7, 1520.32, 43.1222, 100.0, 0), +(@PATH, 4, -11040.3, 1523.96, 44.0335, 100.0, 0), +(@PATH, 5, -11046.1, 1525.12, 44.8055, 100.0, 0), +(@PATH, 6, -11052.3, 1525.4, 43.4291, 100.0, 0), +(@PATH, 7, -11060.0, 1527.29, 43.1826, 100.0, 5000), +(@PATH, 8, -11062.1, 1541.59, 43.2847, 100.0, 0), +(@PATH, 9, -11061.8, 1550.5, 43.5759, 100.0, 0), +(@PATH, 10, -11061.6, 1555.51, 43.2883, 100.0, 0), +(@PATH, 11, -11061.5, 1558.3, 43.7854, 100.0, 0), +(@PATH, 12, -11061.4, 1563.31, 44.7892, 100.0, 0), +(@PATH, 13, -11051.2, 1563.06, 43.774, 100.0, 0), +(@PATH, 14, -11040.7, 1563.24, 44.1439, 100.0, 0), +(@PATH, 15, -11035.2, 1561.71, 44.5776, 100.0, 0), +(@PATH, 16, -11025.5, 1558.66, 43.5138, 100.0, 0), +(@PATH, 17, -11014.9, 1555.34, 43.464, 100.0, 0), +(@PATH, 18, -11012.5, 1548.38, 43.2418, 100.0, 0), +(@PATH, 19, -11012.2, 1530.67, 43.8959, 100.0, 0); + +/* Defias Smuggler - GUID 90350 */ + + +SET @NPC := 90350; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10381.3, `position_y` = 1276.99, `position_z` = 43.7388, `orientation` = 1.37881 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10381.3, 1276.99, 43.7388, 100.0, 0), +(@PATH, 2, -10375.2, 1286.1, 39.7524, 100.0, 0), +(@PATH, 3, -10368.6, 1296.23, 39.8004, 100.0, 0), +(@PATH, 4, -10366.3, 1307.64, 40.5539, 100.0, 0), +(@PATH, 5, -10365.8, 1323.52, 43.5592, 100.0, 0), +(@PATH, 6, -10362.8, 1330.4, 45.6286, 100.0, 0), +(@PATH, 7, -10353.7, 1336.09, 49.4501, 100.0, 0), +(@PATH, 8, -10350.1, 1337.0, 50.8949, 100.0, 0), +(@PATH, 9, -10340.1, 1333.29, 53.3552, 100.0, 0), +(@PATH, 10, -10329.0, 1315.43, 56.19, 100.0, 0), +(@PATH, 11, -10331.5, 1304.13, 54.6818, 100.0, 0), +(@PATH, 12, -10334.1, 1292.54, 52.3621, 100.0, 0), +(@PATH, 13, -10335.6, 1284.83, 50.5088, 100.0, 0), +(@PATH, 14, -10339.5, 1258.11, 43.0081, 100.0, 0), +(@PATH, 15, -10340.8, 1246.47, 40.0832, 100.0, 0), +(@PATH, 16, -10340.8, 1234.33, 39.4116, 100.0, 0), +(@PATH, 17, -10339.5, 1230.53, 39.1954, 100.0, 0), +(@PATH, 18, -10335.4, 1224.18, 38.3961, 100.0, 0), +(@PATH, 19, -10333.7, 1220.53, 38.1536, 100.0, 0), +(@PATH, 20, -10325.1, 1217.49, 36.8027, 100.0, 0), +(@PATH, 21, -10320.2, 1220.7, 36.8137, 100.0, 0), +(@PATH, 22, -10317.7, 1215.73, 36.8383, 100.0, 0), +(@PATH, 23, -10326.1, 1207.24, 37.9803, 100.0, 0), +(@PATH, 24, -10329.4, 1205.02, 38.7191, 100.0, 0), +(@PATH, 25, -10336.4, 1201.38, 39.9898, 100.0, 0), +(@PATH, 26, -10343.4, 1201.5, 41.5607, 100.0, 0), +(@PATH, 27, -10349.7, 1206.12, 43.4238, 100.0, 0), +(@PATH, 28, -10363.3, 1220.43, 47.0017, 100.0, 0), +(@PATH, 29, -10368.1, 1226.72, 48.6343, 100.0, 0), +(@PATH, 30, -10377.8, 1238.4, 53.1986, 100.0, 0), +(@PATH, 31, -10384.8, 1246.36, 55.3563, 100.0, 0), +(@PATH, 32, -10385.0, 1254.46, 54.8993, 100.0, 0), +(@PATH, 33, -10384.3, 1265.85, 51.1467, 100.0, 0); + +/* Riverpaw Gnoll - GUID 90339 */ + + +SET @NPC := 90339; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9733.86, `position_y` = 1033.9, `position_z` = 36.6799, `orientation` = 5.4891 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9733.86, 1033.9, 36.6799, 100.0, 0), +(@PATH, 2, -9730.37, 1037.65, 36.1886, 100.0, 0), +(@PATH, 3, -9728.65, 1047.72, 35.6938, 100.0, 0), +(@PATH, 4, -9733.25, 1044.45, 36.0473, 100.0, 0), +(@PATH, 5, -9733.25, 1044.45, 36.0473, 100.0, 0), +(@PATH, 6, -9734.38, 1039.72, 36.1325, 100.0, 0), +(@PATH, 7, -9733.14, 1015.86, 37.7528, 100.0, 0), +(@PATH, 8, -9713.75, 990.32, 35.1059, 100.0, 0), +(@PATH, 9, -9728.36, 1002.99, 36.1766, 100.0, 0), +(@PATH, 10, -9733.67, 1029.95, 37.4562, 100.0, 0); + +/* Defias Pillager - GUID 90334 */ + + +SET @NPC := 90334; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10990.4, `position_y` = 1470.57, `position_z` = 43.2027, `orientation` = 6.26153 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10990.4, 1470.57, 43.2027, 100.0, 0), +(@PATH, 2, -10969.7, 1470.42, 43.2836, 100.0, 0), +(@PATH, 3, -10987.0, 1470.77, 43.2028, 100.0, 0), +(@PATH, 4, -11001.9, 1470.2, 43.2028, 100.0, 0), +(@PATH, 5, -11004.8, 1474.26, 43.2719, 100.0, 0), +(@PATH, 6, -11005.6, 1485.05, 43.4474, 100.0, 0), +(@PATH, 7, -11009.5, 1491.76, 43.438, 100.0, 0), +(@PATH, 8, -11015.4, 1495.34, 43.2219, 100.0, 0), +(@PATH, 9, -11016.1, 1498.34, 43.2023, 100.0, 0), +(@PATH, 10, -11012.5, 1507.18, 43.2116, 100.0, 0), +(@PATH, 11, -11006.9, 1512.16, 43.1356, 100.0, 0), +(@PATH, 12, -10992.1, 1515.56, 43.5812, 100.0, 0), +(@PATH, 13, -10984.1, 1515.59, 43.2338, 100.0, 0), +(@PATH, 14, -10972.1, 1515.62, 43.2303, 100.0, 0), +(@PATH, 15, -10952.9, 1515.54, 43.3141, 100.0, 0), +(@PATH, 16, -10973.7, 1515.32, 43.2298, 100.0, 0), +(@PATH, 17, -10981.7, 1515.24, 43.0236, 100.0, 0), +(@PATH, 18, -10988.7, 1515.16, 43.5447, 100.0, 0), +(@PATH, 19, -10999.2, 1515.05, 43.2992, 100.0, 0), +(@PATH, 20, -11007.0, 1513.06, 43.1063, 100.0, 0), +(@PATH, 21, -11012.7, 1508.11, 43.2005, 100.0, 0), +(@PATH, 22, -11016.3, 1498.66, 43.2022, 100.0, 0), +(@PATH, 23, -11013.6, 1494.86, 43.2536, 100.0, 0), +(@PATH, 24, -11008.6, 1488.69, 43.7166, 100.0, 0), +(@PATH, 25, -11006.1, 1482.73, 43.5303, 100.0, 0), +(@PATH, 26, -11003.7, 1472.12, 43.2018, 100.0, 0), +(@PATH, 27, -10998.5, 1470.52, 43.2018, 100.0, 0); + +/* Murloc Oracle - GUID 90114 */ + + +SET @NPC := 90114; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11368.4, `position_y` = 1838.63, `position_z` = 2.56064, `orientation` = 0.141069 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11368.4, 1838.63, 2.56064, 100.0, 0), +(@PATH, 2, -11409.8, 1832.37, -3.20341, 100.0, 0), +(@PATH, 3, -11428.7, 1808.82, -0.126871, 100.0, 0), +(@PATH, 4, -11430.1, 1787.12, 4.75527, 100.0, 0), +(@PATH, 5, -11413.2, 1774.67, 8.57256, 100.0, 0), +(@PATH, 6, -11381.7, 1776.74, 8.93824, 100.0, 0), +(@PATH, 7, -11352.7, 1790.51, 9.28233, 100.0, 0), +(@PATH, 8, -11348.8, 1813.23, 8.39409, 100.0, 0); + +/* Murloc Oracle - GUID 90114 */ + + +SET @NPC := 90114; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11368.4, `position_y` = 1838.63, `position_z` = 2.56064, `orientation` = 0.141069 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11368.4, 1838.63, 2.56064, 100.0, 0), +(@PATH, 2, -11409.8, 1832.37, -3.20341, 100.0, 0), +(@PATH, 3, -11428.7, 1808.82, -0.126871, 100.0, 0), +(@PATH, 4, -11430.1, 1787.12, 4.75527, 100.0, 0), +(@PATH, 5, -11413.2, 1774.67, 8.57256, 100.0, 0), +(@PATH, 6, -11381.7, 1776.74, 8.93824, 100.0, 0), +(@PATH, 7, -11352.7, 1790.51, 9.28233, 100.0, 0), +(@PATH, 8, -11348.8, 1813.23, 8.39409, 100.0, 0); + + +/* Defias Trapper - GUID 89446 */ + + +SET @NPC := 89446; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9865.91, `position_y` = 1282.22, `position_z` = 41.075, `orientation` = 1.45052 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9865.91, 1282.22, 41.075, 100.0, 0), +(@PATH, 2, -9855.47, 1334.11, 42.0275, 100.0, 0), +(@PATH, 3, -9858.09, 1337.14, 42.0275, 100.0, 0), +(@PATH, 4, -9864.26, 1347.41, 42.2422, 100.0, 0), +(@PATH, 5, -9876.45, 1356.29, 43.304, 100.0, 0), +(@PATH, 6, -9903.66, 1341.49, 42.227, 100.0, 0), +(@PATH, 7, -9909.55, 1327.98, 43.6793, 100.0, 0), +(@PATH, 8, -9907.43, 1312.43, 41.8484, 100.0, 0), +(@PATH, 9, -9888.3, 1289.56, 41.2171, 100.0, 0), +(@PATH, 10, -9881.77, 1286.46, 40.94, 100.0, 0), +(@PATH, 11, -9881.77, 1286.46, 40.94, 100.0, 0), +(@PATH, 12, -9878.98, 1283.59, 40.9402, 100.0, 0), +(@PATH, 13, -9873.12, 1278.0, 41.0067, 100.0, 0), +(@PATH, 14, -9870.62, 1275.69, 41.0454, 100.0, 0); + + +/* Defias Trapper - GUID 89455 */ + + +SET @NPC := 89455; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10196.2, `position_y` = 1933.59, `position_z` = 34.3548, `orientation` = 0.243558 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10196.2, 1933.59, 34.3548, 100.0, 0), +(@PATH, 2, -10172.7, 1949.45, 34.5606, 100.0, 0), +(@PATH, 3, -10165.0, 1948.98, 35.6094, 100.0, 0), +(@PATH, 4, -10161.3, 1947.41, 35.578, 100.0, 0), +(@PATH, 5, -10158.1, 1940.82, 35.2363, 100.0, 0), +(@PATH, 6, -10156.6, 1933.68, 35.0369, 100.0, 0), +(@PATH, 7, -10155.6, 1917.85, 34.6293, 100.0, 0), +(@PATH, 8, -10169.5, 1899.29, 34.4169, 100.0, 0), +(@PATH, 9, -10195.8, 1901.09, 36.581, 100.0, 0), +(@PATH, 10, -10208.0, 1901.65, 36.8232, 100.0, 0), +(@PATH, 11, -10219.8, 1911.92, 37.4382, 100.0, 0), +(@PATH, 12, -10216.1, 1913.47, 37.5772, 100.0, 0); + + +/* Murloc Netter - GUID 89481 */ + + +SET @NPC := 89481; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9914.59, `position_y` = 1752.35, `position_z` = 12.8358, `orientation` = 2.50359 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9914.59, 1752.35, 12.8358, 100.0, 0), +(@PATH, 2, -9902.26, 1752.25, 11.3582, 100.0, 0), +(@PATH, 3, -9881.66, 1765.31, 9.47887, 100.0, 0), +(@PATH, 4, -9875.1, 1775.49, 8.5288, 100.0, 0), +(@PATH, 5, -9874.13, 1783.04, 6.79059, 100.0, 0), +(@PATH, 6, -9874.39, 1794.77, 3.76829, 100.0, 0), +(@PATH, 7, -9903.08, 1808.47, 5.87756, 100.0, 0), +(@PATH, 8, -9914.24, 1806.03, 8.55169, 100.0, 0), +(@PATH, 9, -9923.94, 1799.06, 10.9354, 100.0, 0), +(@PATH, 10, -9927.95, 1775.17, 13.1672, 100.0, 0), +(@PATH, 11, -9926.36, 1766.37, 13.1647, 100.0, 0); + + +/* Murloc Hunter - GUID 89482 */ + + +SET @NPC := 89482; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10219.3, `position_y` = 1938.64, `position_z` = 32.0274, `orientation` = 6.21337 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10219.3, 1938.64, 32.0274, 100.0, 0), +(@PATH, 2, -10205.9, 1955.58, 18.9374, 100.0, 0), +(@PATH, 3, -10202.0, 1966.41, 14.6351, 100.0, 0), +(@PATH, 4, -10214.1, 1987.34, 13.7051, 100.0, 0), +(@PATH, 5, -10236.9, 1999.2, 12.8899, 100.0, 0), +(@PATH, 6, -10224.8, 1994.79, 13.1926, 100.0, 0), +(@PATH, 7, -10204.5, 1982.36, 12.4621, 100.0, 0); + + +/* Defias Henchman - GUID 89539 */ + + +SET @NPC := 89539; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11094.0, `position_y` = 1515.68, `position_z` = 29.6682, `orientation` = 1.54702 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11094.0, 1515.68, 29.6682, 100.0, 0), +(@PATH, 2, -11097.0, 1508.24, 27.9174, 100.0, 0), +(@PATH, 3, -11102.6, 1502.71, 25.7775, 100.0, 0), +(@PATH, 4, -11108.3, 1499.75, 24.8937, 100.0, 0), +(@PATH, 5, -11111.4, 1499.1, 24.0996, 100.0, 0), +(@PATH, 6, -11122.4, 1500.49, 23.7685, 100.0, 0), +(@PATH, 7, -11128.2, 1503.81, 23.6246, 100.0, 0), +(@PATH, 8, -11135.8, 1510.13, 24.1285, 100.0, 0), +(@PATH, 9, -11140.7, 1515.16, 22.2516, 100.0, 0), +(@PATH, 10, -11145.9, 1520.65, 20.5637, 100.0, 0), +(@PATH, 11, -11140.1, 1513.41, 22.8337, 100.0, 0), +(@PATH, 12, -11136.3, 1509.59, 24.2035, 100.0, 0), +(@PATH, 13, -11127.5, 1503.32, 23.4235, 100.0, 0), +(@PATH, 14, -11122.0, 1500.11, 23.8235, 100.0, 0), +(@PATH, 15, -11112.4, 1499.08, 24.0635, 100.0, 0), +(@PATH, 16, -11109.1, 1499.75, 24.8094, 100.0, 0), +(@PATH, 17, -11102.8, 1502.75, 25.7257, 100.0, 0), +(@PATH, 18, -11097.4, 1508.22, 27.8733, 100.0, 0), +(@PATH, 19, -11095.5, 1510.28, 28.3437, 100.0, 0); + + +/* Defias Henchman - GUID 89540 */ + + +SET @NPC := 89540; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11230.1, `position_y` = 1552.47, `position_z` = 34.8252, `orientation` = 4.01685 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11230.1, 1552.47, 34.8252, 100.0, 0), +(@PATH, 2, -11221.9, 1560.27, 33.6759, 100.0, 0), +(@PATH, 3, -11216.5, 1564.62, 32.1784, 100.0, 0), +(@PATH, 4, -11211.7, 1569.23, 30.0665, 100.0, 0), +(@PATH, 5, -11205.5, 1573.36, 29.1579, 100.0, 0), +(@PATH, 6, -11199.0, 1578.48, 28.3536, 100.0, 0), +(@PATH, 7, -11189.8, 1580.01, 27.5988, 100.0, 0), +(@PATH, 8, -11197.1, 1579.18, 28.0992, 100.0, 0), +(@PATH, 9, -11202.9, 1576.39, 28.8413, 100.0, 0), +(@PATH, 10, -11211.4, 1571.1, 29.7876, 100.0, 0), +(@PATH, 11, -11216.1, 1565.64, 31.6509, 100.0, 0), +(@PATH, 12, -11219.5, 1562.13, 32.8494, 100.0, 0), +(@PATH, 13, -11223.8, 1558.48, 33.8651, 100.0, 0); + + +/* Defias Conjurer - GUID 89542 */ + + +SET @NPC := 89542; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11134.2, 1487.29, 34.4006, 100.0, 0), +(@PATH, 2, -11130.9, 1481.86, 34.0631, 100.0, 0), +(@PATH, 3, -11125.8, 1479.81, 34.1457, 100.0, 0), +(@PATH, 4, -11120.4, 1480.2, 33.394, 100.0, 0), +(@PATH, 5, -11118.1, 1480.34, 32.8811, 100.0, 1000), +(@PATH, 6, -11122.2, 1479.99, 33.7389, 100.0, 0), +(@PATH, 7, -11126.2, 1480.33, 34.1436, 100.0, 0), +(@PATH, 8, -11131.2, 1482.19, 34.034, 100.0, 0), +(@PATH, 9, -11134.0, 1487.54, 34.4618, 100.0, 0), +(@PATH, 10, -11133.2, 1493.89, 35.4293, 100.0, 0), +(@PATH, 11, -11131.7, 1496.18, 36.0648, 100.0, 0), +(@PATH, 12, -11126.5, 1505.59, 36.0837, 100.0, 0), +(@PATH, 13, -11124.0, 1508.4, 35.368, 100.0, 0), +(@PATH, 14, -11115.8, 1513.71, 32.2482, 100.0, 0), +(@PATH, 15, -11109.8, 1518.14, 31.0309, 100.0, 0), +(@PATH, 16, -11106.1, 1521.27, 30.5751, 100.0, 0), +(@PATH, 17, -11101.2, 1523.96, 30.0775, 100.0, 0), +(@PATH, 18, -11106.4, 1520.33, 30.5448, 100.0, 0), +(@PATH, 19, -11111.2, 1516.98, 31.3695, 100.0, 0), +(@PATH, 20, -11116.8, 1513.1, 32.536, 100.0, 0), +(@PATH, 21, -11122.2, 1509.78, 34.584, 100.0, 0), +(@PATH, 22, -11125.6, 1508.02, 35.8518, 100.0, 0), +(@PATH, 23, -11127.0, 1504.95, 36.2006, 100.0, 0), +(@PATH, 24, -11132.0, 1496.91, 36.0692, 100.0, 0), +(@PATH, 25, -11133.2, 1495.18, 35.8511, 100.0, 0), +(@PATH, 26, -11134.4, 1492.74, 35.1301, 100.0, 0); + + +/* Defias Conjurer - GUID 89543 */ + + +SET @NPC := 89543; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11225.8, `position_y` = 1599.5, `position_z` = 32.5048, `orientation` = 4.57128 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11225.8, 1599.5, 32.5048, 100.0, 0), +(@PATH, 2, -11231.4, 1593.3, 32.3584, 100.0, 0), +(@PATH, 3, -11236.7, 1591.89, 32.5344, 100.0, 0), +(@PATH, 4, -11241.9, 1591.47, 33.9402, 100.0, 0), +(@PATH, 5, -11249.0, 1589.34, 33.8443, 100.0, 0), +(@PATH, 6, -11254.4, 1583.28, 33.6242, 100.0, 0), +(@PATH, 7, -11257.1, 1576.84, 34.4809, 100.0, 0), +(@PATH, 8, -11258.3, 1572.04, 34.2398, 100.0, 0), +(@PATH, 9, -11258.7, 1563.69, 33.8814, 100.0, 0), +(@PATH, 10, -11255.9, 1558.79, 34.0503, 100.0, 0), +(@PATH, 11, -11250.9, 1557.46, 34.1264, 100.0, 0), +(@PATH, 12, -11246.4, 1556.22, 34.3026, 100.0, 0), +(@PATH, 13, -11240.4, 1553.9, 34.0097, 100.0, 0), +(@PATH, 14, -11235.2, 1551.54, 34.6532, 100.0, 0), +(@PATH, 15, -11231.0, 1549.0, 34.6751, 100.0, 0), +(@PATH, 16, -11227.1, 1546.37, 33.2081, 100.0, 0), +(@PATH, 17, -11223.6, 1540.88, 33.363, 100.0, 0), +(@PATH, 18, -11225.3, 1536.64, 35.8336, 100.0, 0), +(@PATH, 19, -11227.4, 1532.78, 36.3449, 100.0, 0), +(@PATH, 20, -11225.6, 1536.5, 35.8424, 100.0, 0), +(@PATH, 21, -11224.2, 1541.66, 33.3484, 100.0, 0), +(@PATH, 22, -11227.0, 1547.04, 33.0505, 100.0, 0), +(@PATH, 23, -11231.6, 1550.07, 34.7343, 100.0, 0), +(@PATH, 24, -11236.6, 1552.22, 34.5733, 100.0, 0), +(@PATH, 25, -11240.9, 1553.79, 34.0058, 100.0, 0), +(@PATH, 26, -11248.2, 1555.38, 34.512, 100.0, 0), +(@PATH, 27, -11256.0, 1557.74, 34.1733, 100.0, 0), +(@PATH, 28, -11258.9, 1564.62, 33.9098, 100.0, 0), +(@PATH, 29, -11257.8, 1572.19, 34.2096, 100.0, 0), +(@PATH, 30, -11256.3, 1578.33, 34.4142, 100.0, 0), +(@PATH, 31, -11254.2, 1584.0, 33.5165, 100.0, 0), +(@PATH, 32, -11248.9, 1588.66, 33.9453, 100.0, 0), +(@PATH, 33, -11243.6, 1590.26, 34.1238, 100.0, 0), +(@PATH, 34, -11241.0, 1590.71, 33.9038, 100.0, 0), +(@PATH, 35, -11235.8, 1591.62, 32.4636, 100.0, 0), +(@PATH, 36, -11230.0, 1594.15, 32.2135, 100.0, 0), +(@PATH, 37, -11226.3, 1599.69, 32.5146, 100.0, 0), +(@PATH, 38, -11224.9, 1603.64, 32.8318, 100.0, 0), +(@PATH, 39, -11224.8, 1609.44, 32.4755, 100.0, 0), +(@PATH, 40, -11225.2, 1618.89, 32.7543, 100.0, 0), +(@PATH, 41, -11225.1, 1609.8, 32.5821, 100.0, 0); + + +/* Defias Conjurer - GUID 89544 */ + + +SET @NPC := 89544; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11175.1, 1557.35, 20.8878, 100.0, 0), +(@PATH, 2, -11176.8, 1551.92, 19.7929, 100.0, 0), +(@PATH, 3, -11180.2, 1543.6, 19.1841, 100.0, 0), +(@PATH, 4, -11176.0, 1541.38, 19.5086, 100.0, 0), +(@PATH, 5, -11171.2, 1538.67, 19.9968, 100.0, 0), +(@PATH, 6, -11172.0, 1528.09, 19.4731, 100.0, 0), +(@PATH, 7, -11174.8, 1525.48, 19.2678, 100.0, 0), +(@PATH, 8, -11179.1, 1522.45, 18.2682, 100.0, 0), +(@PATH, 9, -11183.2, 1521.24, 18.8178, 100.0, 0), +(@PATH, 10, -11187.9, 1520.28, 19.0749, 100.0, 0), +(@PATH, 11, -11195.8, 1516.17, 19.2995, 100.0, 0), +(@PATH, 12, -11188.3, 1520.47, 19.0449, 100.0, 0), +(@PATH, 13, -11182.0, 1521.92, 18.5771, 100.0, 0), +(@PATH, 14, -11179.2, 1522.0, 18.1742, 100.0, 0), +(@PATH, 15, -11173.0, 1524.07, 19.5604, 100.0, 0), +(@PATH, 16, -11171.3, 1529.91, 19.4338, 100.0, 0), +(@PATH, 17, -11171.5, 1539.58, 20.0647, 100.0, 0), +(@PATH, 18, -11179.8, 1543.5, 19.2262, 100.0, 0), +(@PATH, 19, -11178.3, 1548.47, 19.2018, 100.0, 0), +(@PATH, 20, -11176.9, 1552.79, 19.885, 100.0, 0), +(@PATH, 21, -11174.8, 1558.16, 21.0343, 100.0, 0), +(@PATH, 22, -11173.3, 1562.81, 21.6115, 100.0, 0), +(@PATH, 23, -11173.8, 1566.87, 22.0143, 100.0, 0), +(@PATH, 24, -11174.1, 1561.54, 21.5484, 100.0, 0); + + +/* Defias Henchman - GUID 89545 */ + + +SET @NPC := 89545; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11197.1, 1483.13, 14.7718, 100.0, 0), +(@PATH, 2, -11194.6, 1481.43, 15.2471, 100.0, 0), +(@PATH, 3, -11185.8, 1475.91, 15.1833, 100.0, 0), +(@PATH, 4, -11192.3, 1479.89, 15.0735, 100.0, 0), +(@PATH, 5, -11195.2, 1481.87, 15.2271, 100.0, 0), +(@PATH, 6, -11200.0, 1484.69, 14.3403, 100.0, 0), +(@PATH, 7, -11203.3, 1486.41, 14.1811, 100.0, 0), +(@PATH, 8, -11207.5, 1485.28, 15.2073, 100.0, 0), +(@PATH, 9, -11213.0, 1484.44, 16.3027, 100.0, 0), +(@PATH, 10, -11217.4, 1483.69, 17.1971, 100.0, 0), +(@PATH, 11, -11221.6, 1483.33, 17.18, 100.0, 0), +(@PATH, 12, -11225.2, 1482.19, 18.4761, 100.0, 0), +(@PATH, 13, -11221.6, 1483.51, 17.2067, 100.0, 0), +(@PATH, 14, -11216.3, 1483.23, 17.0766, 100.0, 0), +(@PATH, 15, -11211.0, 1484.23, 15.5416, 100.0, 0), +(@PATH, 16, -11206.8, 1485.7, 15.0362, 100.0, 0), +(@PATH, 17, -11203.1, 1486.92, 14.1065, 100.0, 0), +(@PATH, 18, -11203.6, 1492.16, 14.5976, 100.0, 0), +(@PATH, 19, -11203.9, 1497.3, 15.6943, 100.0, 0), +(@PATH, 20, -11203.4, 1500.5, 16.8106, 100.0, 0), +(@PATH, 21, -11201.4, 1505.96, 17.7007, 100.0, 0), +(@PATH, 22, -11200.3, 1509.78, 17.1463, 100.0, 0), +(@PATH, 23, -11201.2, 1504.96, 17.7165, 100.0, 0), +(@PATH, 24, -11202.0, 1501.27, 17.0266, 100.0, 0), +(@PATH, 25, -11203.0, 1495.52, 14.9367, 100.0, 0), +(@PATH, 26, -11202.6, 1491.69, 14.3678, 100.0, 0), +(@PATH, 27, -11202.7, 1488.68, 13.9171, 100.0, 0), +(@PATH, 28, -11207.4, 1485.98, 15.1297, 100.0, 0), +(@PATH, 29, -11212.1, 1484.39, 16.0848, 100.0, 0), +(@PATH, 30, -11217.2, 1483.14, 17.1309, 100.0, 0), +(@PATH, 31, -11222.3, 1483.82, 17.3443, 100.0, 0), +(@PATH, 32, -11225.5, 1481.97, 18.5549, 100.0, 0), +(@PATH, 33, -11221.9, 1483.21, 17.1994, 100.0, 0), +(@PATH, 34, -11216.1, 1483.39, 17.0702, 100.0, 0), +(@PATH, 35, -11211.8, 1484.46, 15.9843, 100.0, 0), +(@PATH, 36, -11207.2, 1485.61, 15.114, 100.0, 0), +(@PATH, 37, -11202.8, 1485.76, 14.2358, 100.0, 0), +(@PATH, 38, -11199.4, 1484.85, 14.3099, 100.0, 0); + + +/* Defias Henchman - GUID 89546 */ + + +SET @NPC := 89546; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11138.1, `position_y` = 1539.61, `position_z` = 19.8672, `orientation` = 1.03873 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11138.1, 1539.61, 19.8672, 100.0, 0), +(@PATH, 2, -11139.3, 1544.8, 20.0026, 100.0, 0), +(@PATH, 3, -11143.5, 1549.38, 20.3499, 100.0, 0), +(@PATH, 4, -11147.0, 1554.18, 20.5807, 100.0, 0), +(@PATH, 5, -11152.0, 1560.88, 21.135, 100.0, 0), +(@PATH, 6, -11154.2, 1565.87, 20.6251, 100.0, 0), +(@PATH, 7, -11157.6, 1569.39, 22.1427, 100.0, 0), +(@PATH, 8, -11160.5, 1570.58, 22.6205, 100.0, 0), +(@PATH, 9, -11167.3, 1570.8, 22.3262, 100.0, 0), +(@PATH, 10, -11159.5, 1570.13, 22.557, 100.0, 0), +(@PATH, 11, -11156.8, 1568.41, 21.8058, 100.0, 0), +(@PATH, 12, -11154.1, 1565.52, 20.6765, 100.0, 0), +(@PATH, 13, -11151.9, 1561.47, 21.133, 100.0, 0), +(@PATH, 14, -11149.3, 1556.3, 20.6631, 100.0, 0), +(@PATH, 15, -11144.0, 1549.96, 20.4302, 100.0, 0), +(@PATH, 16, -11139.1, 1544.44, 19.9948, 100.0, 0), +(@PATH, 17, -11138.5, 1540.12, 19.8858, 100.0, 0), +(@PATH, 18, -11138.9, 1537.73, 19.8196, 100.0, 0), +(@PATH, 19, -11142.0, 1531.21, 19.8486, 100.0, 0), +(@PATH, 20, -11145.4, 1526.58, 20.6125, 100.0, 0), +(@PATH, 21, -11142.1, 1531.45, 19.8534, 100.0, 0); + + +/* Defias Magician - GUID 89547 */ + + +SET @NPC := 89547; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11248.1, `position_y` = 1540.82, `position_z` = 30.3923, `orientation` = 4.05791 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11248.1, 1540.82, 30.3923, 100.0, 0), +(@PATH, 2, -11250.1, 1535.74, 28.794, 100.0, 0), +(@PATH, 3, -11248.0, 1529.0, 28.5427, 100.0, 0), +(@PATH, 4, -11242.7, 1522.63, 29.0852, 100.0, 0), +(@PATH, 5, -11239.2, 1518.81, 29.4526, 100.0, 0), +(@PATH, 6, -11235.6, 1514.86, 28.9362, 100.0, 0), +(@PATH, 7, -11231.8, 1508.71, 27.3691, 100.0, 0), +(@PATH, 8, -11231.5, 1505.13, 26.7057, 100.0, 0), +(@PATH, 9, -11232.9, 1499.5, 24.6279, 100.0, 0), +(@PATH, 10, -11235.3, 1495.83, 24.0899, 100.0, 0), +(@PATH, 11, -11239.0, 1491.15, 23.2676, 100.0, 0), +(@PATH, 12, -11243.4, 1486.42, 23.3557, 100.0, 0), +(@PATH, 13, -11244.8, 1481.92, 23.4936, 100.0, 0), +(@PATH, 14, -11245.9, 1475.25, 23.2748, 100.0, 0), +(@PATH, 15, -11243.6, 1485.17, 23.4756, 100.0, 0), +(@PATH, 16, -11240.2, 1489.71, 23.1676, 100.0, 0), +(@PATH, 17, -11236.1, 1494.49, 23.8889, 100.0, 0), +(@PATH, 18, -11232.7, 1500.2, 24.7314, 100.0, 0), +(@PATH, 19, -11231.9, 1504.27, 26.3206, 100.0, 0), +(@PATH, 20, -11232.1, 1508.78, 27.4447, 100.0, 0), +(@PATH, 21, -11233.2, 1512.05, 28.2267, 100.0, 0), +(@PATH, 22, -11236.2, 1515.27, 29.0431, 100.0, 0), +(@PATH, 23, -11240.1, 1519.18, 29.5584, 100.0, 0), +(@PATH, 24, -11245.4, 1524.08, 28.7879, 100.0, 0), +(@PATH, 25, -11248.6, 1528.17, 28.8883, 100.0, 0), +(@PATH, 26, -11249.4, 1531.72, 28.3138, 100.0, 0), +(@PATH, 27, -11249.7, 1538.15, 28.9969, 100.0, 0), +(@PATH, 28, -11247.3, 1541.78, 31.0061, 100.0, 0), +(@PATH, 29, -11243.8, 1546.86, 33.499, 100.0, 0), +(@PATH, 30, -11242.0, 1549.11, 34.077, 100.0, 0), +(@PATH, 31, -11244.8, 1544.96, 32.8711, 100.0, 0); + + +/* Defias Watchman - GUID 89548 */ + + +SET @NPC := 89548; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11243.4, `position_y` = 1644.96, `position_z` = 28.3952, `orientation` = 5.21458 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11243.4, 1644.96, 28.3952, 100.0, 0), +(@PATH, 2, -11240.1, 1639.82, 27.247, 100.0, 0), +(@PATH, 3, -11235.7, 1634.67, 26.5843, 100.0, 0), +(@PATH, 4, -11230.2, 1629.99, 26.6885, 100.0, 0), +(@PATH, 5, -11234.9, 1632.98, 26.5913, 100.0, 0), +(@PATH, 6, -11238.5, 1637.99, 26.721, 100.0, 0), +(@PATH, 7, -11241.5, 1641.15, 27.7996, 100.0, 0), +(@PATH, 8, -11244.2, 1646.21, 29.0121, 100.0, 0), +(@PATH, 9, -11246.3, 1650.37, 31.178, 100.0, 0), +(@PATH, 10, -11247.5, 1652.76, 32.6129, 100.0, 0), +(@PATH, 11, -11247.5, 1656.95, 33.1515, 100.0, 0), +(@PATH, 12, -11242.7, 1660.01, 33.1569, 100.0, 0), +(@PATH, 13, -11237.5, 1660.08, 33.4376, 100.0, 0), +(@PATH, 14, -11232.7, 1658.87, 33.6492, 100.0, 0), +(@PATH, 15, -11228.1, 1654.63, 33.7588, 100.0, 0), +(@PATH, 16, -11225.6, 1647.44, 33.9664, 100.0, 0), +(@PATH, 17, -11225.3, 1645.56, 34.0018, 100.0, 0), +(@PATH, 18, -11225.0, 1641.48, 33.5206, 100.0, 0), +(@PATH, 19, -11225.0, 1635.55, 34.3171, 100.0, 0), +(@PATH, 20, -11225.1, 1630.86, 34.3065, 100.0, 0), +(@PATH, 21, -11225.2, 1626.43, 33.8627, 100.0, 0), +(@PATH, 22, -11225.2, 1621.65, 32.8276, 100.0, 0), +(@PATH, 23, -11225.1, 1625.67, 33.6907, 100.0, 0), +(@PATH, 24, -11225.0, 1631.38, 34.3498, 100.0, 0), +(@PATH, 25, -11225.0, 1635.81, 34.3142, 100.0, 0), +(@PATH, 26, -11225.4, 1642.32, 33.5582, 100.0, 0), +(@PATH, 27, -11225.6, 1645.7, 34.0176, 100.0, 0), +(@PATH, 28, -11226.1, 1651.15, 33.8824, 100.0, 0), +(@PATH, 29, -11229.5, 1656.02, 33.6558, 100.0, 0), +(@PATH, 30, -11234.7, 1659.15, 33.6779, 100.0, 0), +(@PATH, 31, -11240.8, 1660.11, 33.0679, 100.0, 0), +(@PATH, 32, -11246.4, 1658.1, 33.1507, 100.0, 0), +(@PATH, 33, -11247.3, 1652.35, 32.4744, 100.0, 0), +(@PATH, 34, -11246.9, 1650.45, 31.378, 100.0, 0); + + +/* Defias Watchman - GUID 89549 */ + + +SET @NPC := 89549; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11209.5, `position_y` = 1630.75, `position_z` = 27.6946, `orientation` = 6.08786 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11209.5, 1630.75, 27.6946, 100.0, 0), +(@PATH, 2, -11207.5, 1630.12, 27.9765, 100.0, 0), +(@PATH, 3, -11200.3, 1628.43, 28.2547, 100.0, 0), +(@PATH, 4, -11196.0, 1627.64, 28.298, 100.0, 0), +(@PATH, 5, -11191.2, 1626.44, 27.7467, 100.0, 0), +(@PATH, 6, -11186.5, 1623.49, 27.4069, 100.0, 0), +(@PATH, 7, -11181.6, 1623.12, 27.4995, 100.0, 0), +(@PATH, 8, -11177.2, 1624.82, 26.8471, 100.0, 0), +(@PATH, 9, -11172.7, 1627.88, 26.7131, 100.0, 0), +(@PATH, 10, -11170.2, 1632.69, 25.8934, 100.0, 0), +(@PATH, 11, -11172.3, 1628.27, 26.633, 100.0, 0), +(@PATH, 12, -11177.8, 1624.46, 26.9755, 100.0, 0), +(@PATH, 13, -11182.2, 1623.12, 27.5322, 100.0, 0), +(@PATH, 14, -11187.2, 1623.67, 27.4429, 100.0, 0), +(@PATH, 15, -11192.9, 1627.5, 27.8782, 100.0, 0), +(@PATH, 16, -11198.3, 1627.88, 28.4775, 100.0, 0), +(@PATH, 17, -11203.6, 1628.7, 28.1579, 100.0, 0), +(@PATH, 18, -11209.9, 1630.88, 27.6221, 100.0, 0), +(@PATH, 19, -11214.5, 1631.01, 27.3626, 100.0, 0), +(@PATH, 20, -11218.1, 1630.43, 27.5549, 100.0, 0), +(@PATH, 21, -11215.0, 1630.64, 27.4725, 100.0, 0); + + +/* Defias Watchman - GUID 89552 */ + + +SET @NPC := 89552; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11275.5, `position_y` = 1514.45, `position_z` = 37.4291, `orientation` = 5.74718 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11275.5, 1514.45, 37.4291, 100.0, 0), +(@PATH, 2, -11276.2, 1526.52, 37.8871, 100.0, 0), +(@PATH, 3, -11276.8, 1534.65, 37.7208, 100.0, 0), +(@PATH, 4, -11276.3, 1522.64, 37.7833, 100.0, 0), +(@PATH, 5, -11276.2, 1518.6, 37.7137, 100.0, 0), +(@PATH, 6, -11272.3, 1512.54, 37.6033, 100.0, 0), +(@PATH, 7, -11265.1, 1509.08, 37.602, 100.0, 0), +(@PATH, 8, -11253.8, 1508.86, 37.0322, 100.0, 0), +(@PATH, 9, -11246.9, 1512.06, 37.6119, 100.0, 0), +(@PATH, 10, -11232.6, 1524.94, 36.5898, 100.0, 0), +(@PATH, 11, -11238.3, 1519.31, 37.3898, 100.0, 0), +(@PATH, 12, -11248.0, 1511.29, 37.596, 100.0, 0), +(@PATH, 13, -11255.3, 1508.63, 37.0006, 100.0, 0), +(@PATH, 14, -11262.9, 1508.45, 38.5104, 100.0, 0); + + +/* Skeletal Miner - GUID 89571 */ + + +SET @NPC := 89571; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11298.4, `position_y` = 1541.34, `position_z` = 36.2275, `orientation` = 2.48481 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11298.4, 1541.34, 36.2275, 100.0, 0), +(@PATH, 2, -11299.1, 1550.36, 35.0483, 100.0, 0), +(@PATH, 3, -11298.7, 1557.11, 35.2341, 100.0, 0), +(@PATH, 4, -11299.3, 1558.21, 35.9197, 100.0, 0), +(@PATH, 5, -11297.9, 1563.77, 35.8406, 100.0, 0), +(@PATH, 6, -11293.2, 1568.2, 36.4277, 100.0, 0), +(@PATH, 7, -11291.2, 1573.17, 36.4677, 100.0, 0), +(@PATH, 8, -11290.8, 1578.81, 36.2772, 100.0, 0), +(@PATH, 9, -11291.0, 1582.19, 36.3787, 100.0, 0), +(@PATH, 10, -11293.1, 1586.51, 34.3967, 100.0, 0), +(@PATH, 11, -11290.6, 1582.5, 36.401, 100.0, 0), +(@PATH, 12, -11291.6, 1573.55, 36.4412, 100.0, 0), +(@PATH, 13, -11294.0, 1568.91, 36.3576, 100.0, 0), +(@PATH, 14, -11297.7, 1563.42, 35.8459, 100.0, 0), +(@PATH, 15, -11299.0, 1558.56, 35.9184, 100.0, 0), +(@PATH, 16, -11298.9, 1555.66, 34.9815, 100.0, 0), +(@PATH, 17, -11299.0, 1548.78, 35.1173, 100.0, 0); + + +/* Defias Trapper - GUID 89580 */ + + +SET @NPC := 89580; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10272.4, `position_y` = 1389.16, `position_z` = 39.8143, `orientation` = 1.09613 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10272.4, 1389.16, 39.8143, 100.0, 0), +(@PATH, 2, -10269.1, 1383.22, 40.0638, 100.0, 0), +(@PATH, 3, -10271.1, 1378.12, 40.3763, 100.0, 0), +(@PATH, 4, -10264.8, 1362.0, 41.7079, 100.0, 0), +(@PATH, 5, -10268.2, 1354.66, 42.3306, 100.0, 0), +(@PATH, 6, -10280.5, 1345.8, 42.4084, 100.0, 0), +(@PATH, 7, -10296.5, 1344.48, 40.745, 100.0, 0), +(@PATH, 8, -10300.2, 1346.06, 40.4689, 100.0, 0), +(@PATH, 9, -10310.4, 1352.34, 40.7874, 100.0, 0), +(@PATH, 10, -10315.4, 1366.59, 40.2821, 100.0, 0), +(@PATH, 11, -10309.4, 1381.76, 40.4122, 100.0, 0), +(@PATH, 12, -10285.4, 1391.57, 40.1888, 100.0, 0); + + +/* Riverpaw Mongrel - GUID 89608 */ + + +SET @NPC := 89608; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10627.1, `position_y` = 1921.69, `position_z` = 44.6054, `orientation` = 2.94496 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10627.1, 1921.69, 44.6054, 100.0, 0), +(@PATH, 2, -10606.5, 1909.1, 42.1032, 100.0, 0), +(@PATH, 3, -10598.6, 1908.01, 41.615, 100.0, 0), +(@PATH, 4, -10588.5, 1913.88, 39.8285, 100.0, 0), +(@PATH, 5, -10579.0, 1930.5, 35.4542, 100.0, 0), +(@PATH, 6, -10577.5, 1946.43, 35.7899, 100.0, 0), +(@PATH, 7, -10581.7, 1970.09, 35.1459, 100.0, 0), +(@PATH, 8, -10611.2, 1977.96, 39.4256, 100.0, 0), +(@PATH, 9, -10645.1, 1952.56, 36.3332, 100.0, 0); + + +/* Defias Looter - GUID 89854 */ + + +SET @NPC := 89854; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10559.6, `position_y` = 1963.24, `position_z` = -4.16059, `orientation` = 2.22827 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10559.6, 1963.24, -4.16059, 100.0, 0), +(@PATH, 2, -10557.0, 1960.16, -3.6813, 100.0, 0), +(@PATH, 3, -10552.0, 1955.1, -2.11934, 100.0, 0), +(@PATH, 4, -10545.1, 1949.99, 0.710735, 100.0, 0), +(@PATH, 5, -10530.0, 1943.98, 3.47681, 100.0, 0), +(@PATH, 6, -10519.3, 1946.39, 4.41357, 100.0, 0), +(@PATH, 7, -10511.5, 1960.43, 7.24038, 100.0, 0), +(@PATH, 8, -10507.2, 1966.95, 8.97882, 100.0, 0), +(@PATH, 9, -10509.8, 1963.67, 8.09104, 100.0, 0), +(@PATH, 10, -10517.8, 1949.99, 4.70008, 100.0, 0), +(@PATH, 11, -10523.7, 1945.09, 4.12331, 100.0, 0), +(@PATH, 12, -10538.7, 1946.93, 2.26992, 100.0, 0); + + +/* Murloc Warrior - GUID 89945 */ + + +SET @NPC := 89945; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10194.1, `position_y` = 2000.96, `position_z` = 10.1692, `orientation` = 3.20151 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10194.1, 2000.96, 10.1692, 100.0, 0), +(@PATH, 2, -10228.4, 2004.84, 12.3037, 100.0, 0), +(@PATH, 3, -10230.8, 2013.02, 12.5739, 100.0, 0), +(@PATH, 4, -10205.1, 2043.05, 4.62464, 100.0, 0), +(@PATH, 5, -10178.8, 2031.62, 4.20453, 100.0, 0), +(@PATH, 6, -10173.9, 2025.71, 6.4271, 100.0, 0), +(@PATH, 7, -10171.9, 2016.29, 6.86461, 100.0, 0); + + +/* Skeletal Miner - GUID 89989 */ + + +SET @NPC := 89989; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11341.2, `position_y` = 1568.69, `position_z` = 32.3883, `orientation` = 3.85718 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11341.2, 1568.69, 32.3883, 100.0, 0), +(@PATH, 2, -11343.8, 1560.84, 31.8406, 100.0, 0), +(@PATH, 3, -11344.4, 1555.17, 30.7656, 100.0, 0), +(@PATH, 4, -11343.1, 1547.98, 28.7201, 100.0, 0), +(@PATH, 5, -11340.2, 1542.73, 28.5754, 100.0, 0), +(@PATH, 6, -11336.6, 1539.72, 29.0597, 100.0, 0), +(@PATH, 7, -11332.6, 1539.87, 29.0933, 100.0, 0), +(@PATH, 8, -11327.8, 1543.21, 28.6285, 100.0, 0), +(@PATH, 9, -11324.7, 1549.85, 27.9406, 100.0, 0), +(@PATH, 10, -11324.6, 1553.88, 27.2777, 100.0, 0), +(@PATH, 11, -11325.9, 1558.22, 26.4931, 100.0, 0), +(@PATH, 12, -11324.7, 1550.65, 27.813, 100.0, 0), +(@PATH, 13, -11325.7, 1544.95, 28.6396, 100.0, 0), +(@PATH, 14, -11331.5, 1539.43, 28.9613, 100.0, 0), +(@PATH, 15, -11335.8, 1538.97, 29.1052, 100.0, 0), +(@PATH, 16, -11341.1, 1541.43, 28.4216, 100.0, 0), +(@PATH, 17, -11343.4, 1547.55, 28.7287, 100.0, 0), +(@PATH, 18, -11343.9, 1552.88, 29.9349, 100.0, 0), +(@PATH, 19, -11343.8, 1560.35, 31.7605, 100.0, 0); + +/* Riverpaw Scout - GUID 88749 */ + + +SET @NPC := 88749; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10059.4, `position_y` = 1673.4, `position_z` = 36.1322, `orientation` = 0.002869 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10059.4, 1673.4, 36.1322, 100.0, 0), +(@PATH, 2, -10062.1, 1678.72, 35.0778, 100.0, 0), +(@PATH, 3, -10062.8, 1679.95, 34.8889, 100.0, 0), +(@PATH, 4, -10070.7, 1666.99, 37.3629, 100.0, 0), +(@PATH, 5, -10072.2, 1664.41, 38.0826, 100.0, 0), +(@PATH, 6, -10087.5, 1664.8, 40.1002, 100.0, 0), +(@PATH, 7, -10092.6, 1674.94, 40.4896, 100.0, 0), +(@PATH, 8, -10076.9, 1709.13, 35.3352, 100.0, 0), +(@PATH, 9, -10067.3, 1714.01, 36.6148, 100.0, 0), +(@PATH, 10, -10065.5, 1714.88, 36.9976, 100.0, 0), +(@PATH, 11, -10041.9, 1717.4, 38.2179, 100.0, 0), +(@PATH, 12, -10030.7, 1714.01, 37.3666, 100.0, 0), +(@PATH, 13, -10023.7, 1692.4, 38.5037, 100.0, 0), +(@PATH, 14, -10025.5, 1672.48, 40.4177, 100.0, 0), +(@PATH, 15, -10043.5, 1659.81, 39.1718, 100.0, 0), +(@PATH, 16, -10053.5, 1664.03, 37.745, 100.0, 0); + + +/* Riverpaw Scout - GUID 88748 */ + + +SET @NPC := 88748; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10151.5, `position_y` = 1613.36, `position_z` = 41.8154, `orientation` = 2.84194 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10151.5, 1613.36, 41.8154, 100.0, 0), +(@PATH, 2, -10170.8, 1609.61, 44.1574, 100.0, 0), +(@PATH, 3, -10180.3, 1632.16, 43.0468, 100.0, 0), +(@PATH, 4, -10173.2, 1650.24, 41.0259, 100.0, 0), +(@PATH, 5, -10165.9, 1653.4, 40.1324, 100.0, 0), +(@PATH, 6, -10149.0, 1649.16, 38.1738, 100.0, 0), +(@PATH, 7, -10151.3, 1659.9, 38.9078, 100.0, 0), +(@PATH, 8, -10139.4, 1668.6, 38.988, 100.0, 0), +(@PATH, 9, -10122.2, 1661.83, 38.1707, 100.0, 0), +(@PATH, 10, -10115.6, 1652.04, 38.6099, 100.0, 0), +(@PATH, 11, -10115.7, 1644.7, 38.2118, 100.0, 0); + + +/* Riverpaw Gnoll - GUID 86784 */ + + +SET @NPC := 86784; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9730.34, `position_y` = 1451.46, `position_z` = 44.769, `orientation` = 2.89254 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9730.34, 1451.46, 44.769, 100.0, 0), +(@PATH, 2, -9738.7, 1470.82, 44.2172, 100.0, 0), +(@PATH, 3, -9747.79, 1475.23, 43.549, 100.0, 0), +(@PATH, 4, -9750.1, 1474.15, 43.4027, 100.0, 0), +(@PATH, 5, -9750.1, 1474.15, 43.4027, 100.0, 0), +(@PATH, 6, -9756.14, 1463.63, 42.9047, 100.0, 0), +(@PATH, 7, -9759.92, 1440.27, 41.6578, 100.0, 0), +(@PATH, 8, -9753.55, 1421.69, 42.4276, 100.0, 0), +(@PATH, 9, -9746.56, 1411.95, 43.6791, 100.0, 0), +(@PATH, 10, -9735.13, 1407.75, 43.5392, 100.0, 0), +(@PATH, 11, -9728.78, 1426.62, 45.1107, 100.0, 0); + + +/* Riverpaw Scout - GUID 86788 */ + + +SET @NPC := 86788; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9880.3, `position_y` = 1540.43, `position_z` = 44.9256, `orientation` = 2.62696 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9880.3, 1540.43, 44.9256, 100.0, 0), +(@PATH, 2, -9882.0, 1538.97, 45.198, 100.0, 0), +(@PATH, 3, -9915.98, 1554.02, 41.8685, 100.0, 0), +(@PATH, 4, -9925.49, 1564.06, 42.5624, 100.0, 0), +(@PATH, 5, -9926.4, 1571.31, 42.8584, 100.0, 0), +(@PATH, 6, -9919.27, 1577.08, 45.3244, 100.0, 0), +(@PATH, 7, -9913.63, 1584.0, 43.2094, 100.0, 0), +(@PATH, 8, -9893.66, 1593.97, 41.7161, 100.0, 0), +(@PATH, 9, -9874.96, 1590.52, 41.6566, 100.0, 0), +(@PATH, 10, -9842.02, 1575.39, 39.5086, 100.0, 0), +(@PATH, 11, -9838.06, 1561.86, 42.1772, 100.0, 0), +(@PATH, 12, -9844.73, 1545.88, 45.8219, 100.0, 0); + + +/* Riverpaw Mongrel - GUID 87031 */ + + +SET @NPC := 87031; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10044.9, `position_y` = 1825.42, `position_z` = 36.7228, `orientation` = 2.37829 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10044.9, 1825.42, 36.7228, 100.0, 0), +(@PATH, 2, -10054.0, 1843.14, 36.2392, 100.0, 0), +(@PATH, 3, -10071.7, 1865.05, 37.271, 100.0, 0), +(@PATH, 4, -10080.1, 1865.5, 36.1371, 100.0, 0), +(@PATH, 5, -10083.2, 1863.06, 36.1071, 100.0, 0), +(@PATH, 6, -10088.9, 1848.24, 35.8601, 100.0, 0), +(@PATH, 7, -10079.3, 1827.32, 34.5404, 100.0, 0), +(@PATH, 8, -10078.7, 1819.33, 34.8642, 100.0, 0), +(@PATH, 9, -10063.0, 1802.55, 35.6077, 100.0, 0), +(@PATH, 10, -10047.5, 1799.62, 36.8821, 100.0, 0), +(@PATH, 11, -10030.5, 1814.1, 37.8549, 100.0, 0); + + +/* Riverpaw Mongrel - GUID 87034 */ + + +SET @NPC := 87034; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -10130.5, `position_y` = 1771.31, `position_z` = 33.4298, `orientation` = 0.30238 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -10130.5, 1771.31, 33.4298, 100.0, 0), +(@PATH, 2, -10113.5, 1753.53, 33.7831, 100.0, 0), +(@PATH, 3, -10117.0, 1728.55, 34.8017, 100.0, 0), +(@PATH, 4, -10134.7, 1712.59, 33.8679, 100.0, 0), +(@PATH, 5, -10162.3, 1718.54, 33.0249, 100.0, 0), +(@PATH, 6, -10166.6, 1710.57, 34.1821, 100.0, 0), +(@PATH, 7, -10178.1, 1703.31, 35.3224, 100.0, 0), +(@PATH, 8, -10209.6, 1720.62, 34.3335, 100.0, 0), +(@PATH, 9, -10209.8, 1745.43, 35.3641, 100.0, 0), +(@PATH, 10, -10193.3, 1763.24, 37.9666, 100.0, 0), +(@PATH, 11, -10167.8, 1768.87, 35.3923, 100.0, 0), +(@PATH, 12, -10154.6, 1770.99, 34.7537, 100.0, 0); + + +/* Defias Drone - GUID 66989 */ + + +SET @NPC := 66989; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11065.4, `position_y` = 503.794, `position_z` = 22.6767, `orientation` = 2.46632 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11072.2, 508.853, 24.8021, 0.0, 0), +(@PATH, 2, -11080.5, 515.885, 26.1464, 0.0, 0), +(@PATH, 3, -11092.1, 525.413, 29.6541, 0.0, 0), +(@PATH, 4, -11100.2, 529.407, 31.2408, 0.0, 0), +(@PATH, 5, -11103.7, 534.984, 32.6456, 0.0, 0), +(@PATH, 6, -11107.0, 546.109, 33.8103, 0.0, 0), +(@PATH, 7, -11105.5, 554.917, 33.4921, 0.0, 0), +(@PATH, 8, -11106.7, 564.058, 33.2482, 0.0, 0), +(@PATH, 9, -11110.5, 571.955, 33.3912, 0.0, 0), +(@PATH, 10, -11116.3, 576.251, 33.3609, 0.0, 3000), +(@PATH, 11, -11112.4, 576.758, 33.6797, 0.0, 0), +(@PATH, 12, -11108.1, 572.881, 33.6452, 0.0, 0), +(@PATH, 13, -11104.9, 567.346, 33.5479, 0.0, 0), +(@PATH, 14, -11102.7, 558.91, 33.437, 0.0, 0), +(@PATH, 15, -11102.7, 552.037, 33.6585, 0.0, 0), +(@PATH, 16, -11104.2, 543.763, 33.6709, 0.0, 0), +(@PATH, 17, -11099.8, 534.054, 32.1437, 0.0, 0), +(@PATH, 18, -11091.1, 527.534, 29.8738, 0.0, 0), +(@PATH, 19, -11078.8, 517.76, 26.1589, 0.0, 0), +(@PATH, 20, -11070.2, 509.893, 24.6128, 0.0, 0), +(@PATH, 21, -11064.0, 504.684, 22.4856, 0.0, 0), +(@PATH, 22, -11065.9, 504.269, 22.9024, 0.0, 3000); + + +/* Venture Co. Drone - GUID 66992 */ + + +SET @NPC := 66992; +SET @PATH := @NPC * 10; + +UPDATE `creature_addon` set `path_id` = @PATH WHERE `guid` = @NPC; +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11103.2, 530.823, 31.8316, 4.65353, 0), +(@PATH, 2, -11105.0, 519.364, 30.8736, 4.28204, 0), +(@PATH, 3, -11106.8, 511.95, 31.1417, 4.08176, 3000), +(@PATH, 4, -11114.1, 505.521, 30.9313, 3.66472, 0), +(@PATH, 5, -11127.2, 500.049, 31.919, 3.19505, 0), +(@PATH, 6, -11142.9, 504.602, 32.1449, 2.61543, 0), +(@PATH, 7, -11157.8, 512.947, 30.8424, 2.64684, 0), +(@PATH, 8, -11170.1, 520.713, 32.6791, 2.26592, 0), +(@PATH, 9, -11169.5, 539.733, 33.3686, 1.57477, 0), +(@PATH, 10, -11170.2, 552.948, 34.0339, 1.18207, 0), +(@PATH, 11, -11160.4, 573.238, 33.3233, 0.981012, 0), +(@PATH, 12, -11146.9, 585.606, 35.0119, 0.509772, 0), +(@PATH, 13, -11134.1, 590.105, 34.7976, 0.144562, 0), +(@PATH, 14, -11121.6, 588.518, 34.5425, 5.96829, 0), +(@PATH, 15, -11112.1, 582.693, 34.3821, 5.51984, 0), +(@PATH, 16, -11104.8, 572.473, 33.868, 5.01247, 0), +(@PATH, 17, -11103.4, 560.609, 33.3978, 4.80827, 0), +(@PATH, 18, -11102.8, 544.496, 33.6181, 4.67083, 0); + + +/* Defias Tower Sentry - GUID 66995 */ + + +SET @NPC := 66995; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -11137.9, `position_y` = 528.19, `position_z` = 61.6491, `orientation` = 5.98733 WHERE `guid` = @NPC; + +UPDATE `creature_addon` set `path_id` = @PATH WHERE `guid` = @NPC; +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -11137.9, 528.19, 61.6491, 100.0, 0), +(@PATH, 2, -11132.5, 531.749, 61.6491, 100.0, 0), +(@PATH, 3, -11128.7, 538.241, 61.6491, 100.0, 0), +(@PATH, 4, -11127.7, 545.851, 61.6491, 100.0, 0), +(@PATH, 5, -11131.4, 554.485, 61.6491, 100.0, 0), +(@PATH, 6, -11139.1, 558.844, 61.6491, 100.0, 0), +(@PATH, 7, -11147.1, 559.053, 61.6491, 100.0, 0), +(@PATH, 8, -11154.2, 554.621, 61.6491, 100.0, 0), +(@PATH, 9, -11158.1, 546.604, 61.6491, 100.0, 0), +(@PATH, 10, -11157.2, 538.943, 61.6491, 100.0, 0), +(@PATH, 11, -11152.6, 531.842, 61.6491, 100.0, 0), +(@PATH, 12, -11146.3, 529.056, 61.6491, 100.0, 0); From 12a07ff91fd51fb1062dd88ea057952601e6b428 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 10 Jul 2022 20:18:36 +0200 Subject: [PATCH 101/119] fix(Core/Spells): Fixed LoS problems with hunter traps. (#12348) * fix(Core/Spells): Fixed LoS problems with hunter traps. Fixes #12332 * missing --- src/server/game/Entities/GameObject/GameObject.cpp | 6 +++--- src/server/game/Entities/Object/Object.cpp | 14 +++++++------- src/server/game/Entities/Object/Object.h | 6 +++--- src/server/game/Grids/Notifiers/GridNotifiers.h | 14 +++++++++++++- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index 782c53a78..be992f4fe 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -2055,12 +2055,12 @@ void GameObject::CastSpell(Unit* target, uint32 spellId) if (!spellInfo) return; - bool self = false; + bool self = true; for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i) { - if (spellInfo->Effects[i].TargetA.GetReferenceType() == TARGET_REFERENCE_TYPE_CASTER && !spellInfo->Effects[i].TargetB.GetTarget()) + if (spellInfo->Effects[i].TargetA.GetReferenceType() != TARGET_REFERENCE_TYPE_CASTER || spellInfo->Effects[i].TargetB.GetTarget()) { - self = true; + self = false; break; } } diff --git a/src/server/game/Entities/Object/Object.cpp b/src/server/game/Entities/Object/Object.cpp index f894f9355..ac23ffbaf 100644 --- a/src/server/game/Entities/Object/Object.cpp +++ b/src/server/game/Entities/Object/Object.cpp @@ -1230,9 +1230,9 @@ bool WorldObject::_IsWithinDist(WorldObject const* obj, float dist2compare, bool return distsq < maxdist * maxdist; } -Position WorldObject::GetHitSpherePointFor(Position const& dest) const +Position WorldObject::GetHitSpherePointFor(Position const& dest, Optional collisionHeight) const { - G3D::Vector3 vThis(GetPositionX(), GetPositionY(), GetPositionZ() + GetCollisionHeight()); + G3D::Vector3 vThis(GetPositionX(), GetPositionY(), GetPositionZ() + (collisionHeight ? *collisionHeight : GetCollisionHeight())); G3D::Vector3 vObj(dest.GetPositionX(), dest.GetPositionY(), dest.GetPositionZ()); G3D::Vector3 contactPoint = vThis + (vObj - vThis).directionOrZero() * std::min(dest.GetExactDist(this), GetCombatReach()); @@ -1341,7 +1341,7 @@ bool WorldObject::IsWithinLOS(float ox, float oy, float oz, VMAP::ModelIgnoreFla return true; } -bool WorldObject::IsWithinLOSInMap(WorldObject const* obj, VMAP::ModelIgnoreFlags ignoreFlags, LineOfSightChecks checks) const +bool WorldObject::IsWithinLOSInMap(WorldObject const* obj, VMAP::ModelIgnoreFlags ignoreFlags, LineOfSightChecks checks, Optional collisionHeight /*= {}*/) const { if (!IsInMap(obj)) return false; @@ -1353,7 +1353,7 @@ bool WorldObject::IsWithinLOSInMap(WorldObject const* obj, VMAP::ModelIgnoreFlag oz += obj->GetCollisionHeight(); } else - obj->GetHitSpherePointFor({ GetPositionX(), GetPositionY(), GetPositionZ() + GetCollisionHeight() }, ox, oy, oz); + obj->GetHitSpherePointFor({ GetPositionX(), GetPositionY(), GetPositionZ() + (collisionHeight ? *collisionHeight : GetCollisionHeight()) }, ox, oy, oz); float x, y, z; if (GetTypeId() == TYPEID_PLAYER) @@ -1362,14 +1362,14 @@ bool WorldObject::IsWithinLOSInMap(WorldObject const* obj, VMAP::ModelIgnoreFlag z += GetCollisionHeight(); } else - GetHitSpherePointFor({ obj->GetPositionX(), obj->GetPositionY(), obj->GetPositionZ() + obj->GetCollisionHeight() }, x, y, z); + GetHitSpherePointFor({ obj->GetPositionX(), obj->GetPositionY(), obj->GetPositionZ() + obj->GetCollisionHeight() }, x, y, z, collisionHeight); return GetMap()->isInLineOfSight(x, y, z, ox, oy, oz, GetPhaseMask(), checks, ignoreFlags); } -void WorldObject::GetHitSpherePointFor(Position const& dest, float& x, float& y, float& z) const +void WorldObject::GetHitSpherePointFor(Position const& dest, float& x, float& y, float& z, Optional collisionHeight) const { - Position pos = GetHitSpherePointFor(dest); + Position pos = GetHitSpherePointFor(dest, collisionHeight); x = pos.GetPositionX(); y = pos.GetPositionY(); z = pos.GetPositionZ(); diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index 306a30db7..a3ba74bbd 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -463,9 +463,9 @@ public: bool IsWithinDist(WorldObject const* obj, float dist2compare, bool is3D = true, bool useBoundingRadius = true) const; bool IsWithinDistInMap(WorldObject const* obj, float dist2compare, bool is3D = true, bool useBoundingRadius = true) const; [[nodiscard]] bool IsWithinLOS(float x, float y, float z, VMAP::ModelIgnoreFlags ignoreFlags = VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks = LINEOFSIGHT_ALL_CHECKS) const; - [[nodiscard]] bool IsWithinLOSInMap(WorldObject const* obj, VMAP::ModelIgnoreFlags ignoreFlags = VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks = LINEOFSIGHT_ALL_CHECKS) const; - [[nodiscard]] Position GetHitSpherePointFor(Position const& dest) const; - void GetHitSpherePointFor(Position const& dest, float& x, float& y, float& z) const; + [[nodiscard]] bool IsWithinLOSInMap(WorldObject const* obj, VMAP::ModelIgnoreFlags ignoreFlags = VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks checks = LINEOFSIGHT_ALL_CHECKS, Optional collisionHeight = { }) const; + [[nodiscard]] Position GetHitSpherePointFor(Position const& dest, Optional collisionHeight = { }) const; + void GetHitSpherePointFor(Position const& dest, float& x, float& y, float& z, Optional collisionHeight = { }) const; bool GetDistanceOrder(WorldObject const* obj1, WorldObject const* obj2, bool is3D = true) const; bool IsInRange(WorldObject const* obj, float minRange, float maxRange, bool is3D = true) const; [[nodiscard]] bool IsInRange2d(float x, float y, float minRange, float maxRange) const; diff --git a/src/server/game/Grids/Notifiers/GridNotifiers.h b/src/server/game/Grids/Notifiers/GridNotifiers.h index 3d5eff4b1..d14d20479 100644 --- a/src/server/game/Grids/Notifiers/GridNotifiers.h +++ b/src/server/game/Grids/Notifiers/GridNotifiers.h @@ -925,7 +925,19 @@ namespace Acore return false; } - if (!i_obj->IsWithinDistInMap(u, i_range) || !i_owner->IsValidAttackTarget(u) || !i_obj->IsWithinLOSInMap(u)) + uint32 losChecks = LINEOFSIGHT_ALL_CHECKS; + Optional collisionHeight = { }; + if (i_obj->GetTypeId() == TYPEID_GAMEOBJECT) + { + losChecks &= ~LINEOFSIGHT_CHECK_GOBJECT_M2; + if (i_owner->IsPlayer()) + { + collisionHeight = i_owner->GetCollisionHeight(); + } + } + + if (!i_obj->IsWithinDistInMap(u, i_range) || !i_owner->IsValidAttackTarget(u) || + !i_obj->IsWithinLOSInMap(u, VMAP::ModelIgnoreFlags::Nothing, LineOfSightChecks(losChecks), collisionHeight)) { return false; } From 2c7b274bc53b2dd6b86bc925c54089e775b7a45b Mon Sep 17 00:00:00 2001 From: Maelthyr <100411212+Maelthyrr@users.noreply.github.com> Date: Sun, 10 Jul 2022 20:19:11 +0200 Subject: [PATCH 102/119] refactor(Core): Improve struct alignment and codestyle (#12335) refactor(Core): improve struct alignment and codestyle --- src/server/game/Achievements/AchievementMgr.h | 106 +-- src/server/game/Battlegrounds/Battleground.h | 80 +-- src/server/game/Conditions/ConditionMgr.h | 110 +-- src/server/game/DataStores/M2Structure.h | 12 +- src/server/game/DungeonFinding/LFGGroupData.h | 12 +- src/server/game/DungeonFinding/LFGMgr.h | 30 +- src/server/game/DungeonFinding/LFGQueue.h | 44 +- src/server/game/Entities/Item/ItemTemplate.h | 28 +- src/server/game/Entities/Object/Object.h | 4 +- .../game/Entities/Object/ObjectDefines.h | 18 +- src/server/game/Entities/Object/ObjectGuid.h | 4 +- .../game/Entities/Object/ObjectPosSelector.h | 4 +- src/server/game/Entities/Pet/PetDefines.h | 54 +- .../game/Entities/Vehicle/VehicleDefines.h | 8 +- src/server/game/Events/GameEventMgr.h | 22 +- src/server/game/Loot/LootMgr.h | 94 +-- .../game/Spells/Auras/SpellAuraDefines.h | 662 +++++++++--------- src/server/game/Tickets/TicketMgr.h | 32 +- 18 files changed, 661 insertions(+), 663 deletions(-) diff --git a/src/server/game/Achievements/AchievementMgr.h b/src/server/game/Achievements/AchievementMgr.h index 3ebe5698a..549ebf68a 100644 --- a/src/server/game/Achievements/AchievementMgr.h +++ b/src/server/game/Achievements/AchievementMgr.h @@ -43,39 +43,39 @@ struct CriteriaProgress enum AchievementCriteriaDataType { // value1 value2 comment - ACHIEVEMENT_CRITERIA_DATA_TYPE_NONE = 0, // 0 0 - ACHIEVEMENT_CRITERIA_DATA_TYPE_T_CREATURE = 1, // creature_id 0 - ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE = 2, // class_id race_id + ACHIEVEMENT_CRITERIA_DATA_TYPE_NONE = 0, // 0 0 + ACHIEVEMENT_CRITERIA_DATA_TYPE_T_CREATURE = 1, // creature_id 0 + ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE = 2, // class_id race_id ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_LESS_HEALTH = 3, // health_percent 0 - ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_DEAD = 4, // own_team 0 not corpse (not released body), own_team == false if enemy team expected - ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AURA = 5, // spell_id effect_idx - ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AREA = 6, // area id 0 - ACHIEVEMENT_CRITERIA_DATA_TYPE_T_AURA = 7, // spell_id effect_idx - ACHIEVEMENT_CRITERIA_DATA_TYPE_VALUE = 8, // minvalue value provided with achievement update must be not less that limit - ACHIEVEMENT_CRITERIA_DATA_TYPE_T_LEVEL = 9, // minlevel minlevel of target - ACHIEVEMENT_CRITERIA_DATA_TYPE_T_GENDER = 10, // gender 0=male; 1=female - ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT = 11, // scripted requirement - ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_DIFFICULTY = 12, // difficulty normal/heroic difficulty for current event map - ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_PLAYER_COUNT = 13, // count "with less than %u people in the zone" - ACHIEVEMENT_CRITERIA_DATA_TYPE_T_TEAM = 14, // team HORDE(67), ALLIANCE(469) - ACHIEVEMENT_CRITERIA_DATA_TYPE_S_DRUNK = 15, // drunken_state 0 (enum DrunkenState) of player - ACHIEVEMENT_CRITERIA_DATA_TYPE_HOLIDAY = 16, // holiday_id 0 event in holiday time - ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_LOSS_TEAM_SCORE = 17, // min_score max_score player's team win bg and opposition team have team score in range - ACHIEVEMENT_CRITERIA_DATA_TYPE_INSTANCE_SCRIPT = 18, // 0 0 maker instance script call for check current criteria requirements fit - ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPED_ITEM = 19, // item_level item_quality for equipped item in slot to check item level and quality - ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_ID = 20, // map_id 0 player must be on map with id in map_id - ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE = 21, // class_id race_id - ACHIEVEMENT_CRITERIA_DATA_TYPE_NTH_BIRTHDAY = 22, // N login on day of N-th Birthday - ACHIEVEMENT_CRITERIA_DATA_TYPE_S_KNOWN_TITLE = 23, // title_id known (pvp) title, values from dbc - ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES = 24, // winner_score loser score player's team win bg and their teams have exact scores - ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY = 25 // item_quality + ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_DEAD = 4, // own_team 0 not corpse (not released body), own_team == false if enemy team expected + ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AURA = 5, // spell_id effect_idx + ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AREA = 6, // area id 0 + ACHIEVEMENT_CRITERIA_DATA_TYPE_T_AURA = 7, // spell_id effect_idx + ACHIEVEMENT_CRITERIA_DATA_TYPE_VALUE = 8, // minvalue value provided with achievement update must be not less that limit + ACHIEVEMENT_CRITERIA_DATA_TYPE_T_LEVEL = 9, // minlevel minlevel of target + ACHIEVEMENT_CRITERIA_DATA_TYPE_T_GENDER = 10, // gender 0=male; 1=female + ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT = 11, // scripted requirement + ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_DIFFICULTY = 12, // difficulty normal/heroic difficulty for current event map + ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_PLAYER_COUNT = 13, // count "with less than %u people in the zone" + ACHIEVEMENT_CRITERIA_DATA_TYPE_T_TEAM = 14, // team HORDE(67), ALLIANCE(469) + ACHIEVEMENT_CRITERIA_DATA_TYPE_S_DRUNK = 15, // drunken_state 0 (enum DrunkenState) of player + ACHIEVEMENT_CRITERIA_DATA_TYPE_HOLIDAY = 16, // holiday_id 0 event in holiday time + ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_LOSS_TEAM_SCORE = 17, // min_score max_score player's team win bg and opposition team have team score in range + ACHIEVEMENT_CRITERIA_DATA_TYPE_INSTANCE_SCRIPT = 18, // 0 0 maker instance script call for check current criteria requirements fit + ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPED_ITEM = 19, // item_level item_quality for equipped item in slot to check item level and quality + ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_ID = 20, // map_id 0 player must be on map with id in map_id + ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE = 21, // class_id race_id + ACHIEVEMENT_CRITERIA_DATA_TYPE_NTH_BIRTHDAY = 22, // N login on day of N-th Birthday + ACHIEVEMENT_CRITERIA_DATA_TYPE_S_KNOWN_TITLE = 23, // title_id known (pvp) title, values from dbc + ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES = 24, // winner_score loser score player's team win bg and their teams have exact scores + ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY = 25 // item_quality }; #define MAX_ACHIEVEMENT_CRITERIA_DATA_TYPE 26 // maximum value in AchievementCriteriaDataType enum enum AchievementCommonCategories { - ACHIEVEMENT_CATEOGRY_GENERAL = -1, - ACHIEVEMENT_CATEGORY_STATISTICS = 1 + ACHIEVEMENT_CATEOGRY_GENERAL = -1, + ACHIEVEMENT_CATEGORY_STATISTICS = 1 }; class Player; @@ -86,118 +86,118 @@ struct AchievementCriteriaData AchievementCriteriaDataType dataType{ACHIEVEMENT_CRITERIA_DATA_TYPE_NONE}; union { - // ACHIEVEMENT_CRITERIA_DATA_TYPE_NONE = 0 (no data) - // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_CREATURE = 1 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_NONE = 0 (no data) + // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_CREATURE = 1 struct { uint32 id; } creature; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE = 2 - // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE = 21 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_CLASS_RACE = 2 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_PLAYER_CLASS_RACE = 21 struct { uint32 class_id; uint32 race_id; } classRace; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_LESS_HEALTH = 3 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_LESS_HEALTH = 3 struct { uint32 percent; } health; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_DEAD = 4 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_PLAYER_DEAD = 4 struct { uint32 own_team_flag; } player_dead; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AURA = 5 - // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_AURA = 7 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AURA = 5 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_AURA = 7 struct { uint32 spell_id; uint32 effect_idx; } aura; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AREA = 6 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_AREA = 6 struct { uint32 id; } area; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_VALUE = 8 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_VALUE = 8 struct { uint32 value; uint32 compType; } value; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_LEVEL = 9 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_LEVEL = 9 struct { uint32 minlevel; } level; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_GENDER = 10 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_GENDER = 10 struct { uint32 gender; } gender; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT = 11 (no data) - // ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_DIFFICULTY = 12 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_SCRIPT = 11 (no data) + // ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_DIFFICULTY = 12 struct { uint32 difficulty; } difficulty; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_PLAYER_COUNT = 13 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_PLAYER_COUNT = 13 struct { uint32 maxcount; } map_players; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_TEAM = 14 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_T_TEAM = 14 struct { uint32 team; } team; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_DRUNK = 15 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_DRUNK = 15 struct { uint32 state; } drunk; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_HOLIDAY = 16 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_HOLIDAY = 16 struct { uint32 id; } holiday; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_LOSS_TEAM_SCORE= 17 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_LOSS_TEAM_SCORE = 17 struct { uint32 min_score; uint32 max_score; } bg_loss_team_score; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_INSTANCE_SCRIPT = 18 (no data) - // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPED_ITEM = 19 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_INSTANCE_SCRIPT = 18 (no data) + // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_EQUIPED_ITEM = 19 struct { uint32 item_level; uint32 item_quality; } equipped_item; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_ID = 20 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_MAP_ID = 20 struct { uint32 mapId; } map_id; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_NTH_BIRTHDAY = 22 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_NTH_BIRTHDAY = 22 struct { uint32 nth_birthday; } birthday_login; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_KNOWN_TITLE = 23 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_KNOWN_TITLE = 23 struct { uint32 title_id; } known_title; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES = 24 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_BG_TEAMS_SCORES = 24 struct { uint32 winner_score; uint32 loser_score; } teams_scores; - // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY = 25 + // ACHIEVEMENT_CRITERIA_DATA_TYPE_S_ITEM_QUALITY = 25 struct { uint32 item_quality; diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 1777699d4..7e2331f2f 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -56,23 +56,23 @@ enum BattlegroundDesertionType enum BattlegroundMaps { - MAP_BG_ALTERAC_VALLEY = 30, - MAP_BG_WARSONG_GULCH = 489, - MAP_BG_ARATHI_BASIN = 529, - MAP_BG_EYE_OF_THE_STORM = 566, - MAP_BG_STRAND_OF_THE_ANCIENTS = 607, - MAP_BG_ISLE_OF_CONQUEST = 628 + MAP_BG_ALTERAC_VALLEY = 30, + MAP_BG_WARSONG_GULCH = 489, + MAP_BG_ARATHI_BASIN = 529, + MAP_BG_EYE_OF_THE_STORM = 566, + MAP_BG_STRAND_OF_THE_ANCIENTS = 607, + MAP_BG_ISLE_OF_CONQUEST = 628 }; enum BattlegroundBroadcastTexts { - BG_TEXT_ALLIANCE_WINS = 10633, - BG_TEXT_HORDE_WINS = 10634, + BG_TEXT_ALLIANCE_WINS = 10633, + BG_TEXT_HORDE_WINS = 10634, - BG_TEXT_START_TWO_MINUTES = 18193, - BG_TEXT_START_ONE_MINUTE = 18194, - BG_TEXT_START_HALF_MINUTE = 18195, - BG_TEXT_BATTLE_HAS_BEGUN = 18196, + BG_TEXT_START_TWO_MINUTES = 18193, + BG_TEXT_START_ONE_MINUTE = 18194, + BG_TEXT_START_HALF_MINUTE = 18195, + BG_TEXT_BATTLE_HAS_BEGUN = 18196, }; enum BattlegroundSounds @@ -122,8 +122,8 @@ enum BattlegroundMarksCount enum BattlegroundCreatures { - BG_CREATURE_ENTRY_A_SPIRITGUIDE = 13116, // alliance - BG_CREATURE_ENTRY_H_SPIRITGUIDE = 13117, // horde + BG_CREATURE_ENTRY_A_SPIRITGUIDE = 13116, // alliance + BG_CREATURE_ENTRY_H_SPIRITGUIDE = 13117, // horde }; enum BattlegroundSpells @@ -143,18 +143,18 @@ enum BattlegroundSpells enum BattlegroundReputations { - BG_REP_AV_HORDE = 729, - BG_REP_AV_ALLIANCE = 730, - BG_REP_AB_HORDE = 510, - BG_REP_AB_ALLIANCE = 509, - BG_REP_WS_HORDE = 889, - BG_REP_WS_ALLIANCE = 890, + BG_REP_AV_HORDE = 729, + BG_REP_AV_ALLIANCE = 730, + BG_REP_AB_HORDE = 510, + BG_REP_AB_ALLIANCE = 509, + BG_REP_WS_HORDE = 889, + BG_REP_WS_ALLIANCE = 890, }; enum BattlegroundTimeIntervals { CHECK_PLAYER_POSITION_INVERVAL = 9000, // ms - //REMIND_INTERVAL = 10000, // ms + //REMIND_INTERVAL = 10000, // ms INVITATION_REMIND_TIME = 20000, // ms INVITE_ACCEPT_WAIT_TIME = 60000, // ms TIME_TO_AUTOREMOVE = 120000, // ms @@ -190,11 +190,11 @@ const uint32 Buff_Entries[3] = { BG_OBJECTID_SPEEDBUFF_ENTRY, BG_OBJECTID_REGENB enum BattlegroundStatus { - STATUS_NONE = 0, // first status, should mean bg is not instance - STATUS_WAIT_QUEUE = 1, // means bg is empty and waiting for queue - STATUS_WAIT_JOIN = 2, // this means, that BG has already started and it is waiting for more players - STATUS_IN_PROGRESS = 3, // means bg is running - STATUS_WAIT_LEAVE = 4 // means some faction has won BG and it is ending + STATUS_NONE = 0, // first status, should mean bg is not instance + STATUS_WAIT_QUEUE = 1, // means bg is empty and waiting for queue + STATUS_WAIT_JOIN = 2, // this means, that BG has already started and it is waiting for more players + STATUS_IN_PROGRESS = 3, // means bg is running + STATUS_WAIT_LEAVE = 4 // means some faction has won BG and it is ending }; struct BattlegroundObjectInfo @@ -208,32 +208,32 @@ struct BattlegroundObjectInfo enum ArenaType : uint8 { - ARENA_TYPE_2v2 = 2, - ARENA_TYPE_3v3 = 3, - ARENA_TYPE_5v5 = 5 + ARENA_TYPE_2v2 = 2, + ARENA_TYPE_3v3 = 3, + ARENA_TYPE_5v5 = 5 }; enum BattlegroundType { - TYPE_BATTLEGROUND = 3, - TYPE_ARENA = 4 + TYPE_BATTLEGROUND = 3, + TYPE_ARENA = 4 }; enum BattlegroundStartingEvents { - BG_STARTING_EVENT_NONE = 0x00, - BG_STARTING_EVENT_1 = 0x01, - BG_STARTING_EVENT_2 = 0x02, - BG_STARTING_EVENT_3 = 0x04, - BG_STARTING_EVENT_4 = 0x08 + BG_STARTING_EVENT_NONE = 0x00, + BG_STARTING_EVENT_1 = 0x01, + BG_STARTING_EVENT_2 = 0x02, + BG_STARTING_EVENT_3 = 0x04, + BG_STARTING_EVENT_4 = 0x08 }; enum BattlegroundStartingEventsIds { - BG_STARTING_EVENT_FIRST = 0, - BG_STARTING_EVENT_SECOND = 1, - BG_STARTING_EVENT_THIRD = 2, - BG_STARTING_EVENT_FOURTH = 3 + BG_STARTING_EVENT_FIRST = 0, + BG_STARTING_EVENT_SECOND = 1, + BG_STARTING_EVENT_THIRD = 2, + BG_STARTING_EVENT_FOURTH = 3 }; constexpr auto BG_STARTING_EVENT_COUNT = 4; diff --git a/src/server/game/Conditions/ConditionMgr.h b/src/server/game/Conditions/ConditionMgr.h index e05944051..185a5e1bd 100644 --- a/src/server/game/Conditions/ConditionMgr.h +++ b/src/server/game/Conditions/ConditionMgr.h @@ -31,63 +31,63 @@ struct Condition; enum ConditionTypes { - // value1 value2 value3 - CONDITION_NONE = 0, // 0 0 0 always true - CONDITION_AURA = 1, // spell_id effindex use target? true if player (or target, if value3) has aura of spell_id with effect effindex - CONDITION_ITEM = 2, // item_id count bank true if has #count of item_ids (if 'bank' is set it searches in bank slots too) - CONDITION_ITEM_EQUIPPED = 3, // item_id 0 0 true if has item_id equipped - CONDITION_ZONEID = 4, // zone_id 0 0 true if in zone_id - CONDITION_REPUTATION_RANK = 5, // faction_id rankMask 0 true if has min_rank for faction_id - CONDITION_TEAM = 6, // player_team 0, 0 469 - Alliance, 67 - Horde) - CONDITION_SKILL = 7, // skill_id skill_value 0 true if has skill_value for skill_id - CONDITION_QUESTREWARDED = 8, // quest_id 0 0 true if quest_id was rewarded before - CONDITION_QUESTTAKEN = 9, // quest_id 0, 0 true while quest active - CONDITION_DRUNKENSTATE = 10, // DrunkenState 0, 0 true if player is drunk enough - CONDITION_WORLD_STATE = 11, // index value 0 true if world has the value for the index - CONDITION_ACTIVE_EVENT = 12, // event_id 0 0 true if event is active - CONDITION_INSTANCE_INFO = 13, // entry data type true if the instance info defined by type (enum InstanceInfo) equals data. - CONDITION_QUEST_NONE = 14, // quest_id 0 0 true if doesn't have quest saved - CONDITION_CLASS = 15, // class 0 0 true if player's class is equal to class - CONDITION_RACE = 16, // race 0 0 true if player's race is equal to race - CONDITION_ACHIEVEMENT = 17, // achievement_id 0 0 true if achievement is complete - CONDITION_TITLE = 18, // title id 0 0 true if player has title - CONDITION_SPAWNMASK = 19, // spawnMask 0 0 true if in spawnMask - CONDITION_GENDER = 20, // gender 0 0 true if player's gender is equal to gender - CONDITION_UNIT_STATE = 21, // unitState 0 0 true if unit has unitState - CONDITION_MAPID = 22, // map_id 0 0 true if in map_id - CONDITION_AREAID = 23, // area_id 0 0 true if in area_id - CONDITION_CREATURE_TYPE = 24, // cinfo.type 0 0 true if creature_template.type = value1 - CONDITION_SPELL = 25, // spell_id 0 0 true if player has learned spell - CONDITION_PHASEMASK = 26, // phasemask 0 0 true if object is in phasemask - CONDITION_LEVEL = 27, // level ComparisonType 0 true if unit's level is equal to param1 (param2 can modify the statement) - CONDITION_QUEST_COMPLETE = 28, // quest_id 0 0 true if player has quest_id with all objectives complete, but not yet rewarded - CONDITION_NEAR_CREATURE = 29, // creature entry distance dead true if there is a creature of entry in range - CONDITION_NEAR_GAMEOBJECT = 30, // gameobject entry distance 0 true if there is a gameobject of entry in range - CONDITION_OBJECT_ENTRY_GUID = 31, // TypeID entry guid/Attackable true if object is type TypeID and the entry is 0 or matches entry of the object or matches guid of the object - CONDITION_TYPE_MASK = 32, // TypeMask 0 0 true if object is type object's TypeMask matches provided TypeMask - CONDITION_RELATION_TO = 33, // ConditionTarget RelationType 0 true if object is in given relation with object specified by ConditionTarget - CONDITION_REACTION_TO = 34, // ConditionTarget rankMask 0 true if object's reaction matches rankMask object specified by ConditionTarget - CONDITION_DISTANCE_TO = 35, // ConditionTarget distance ComparisonType true if object and ConditionTarget are within distance given by parameters - CONDITION_ALIVE = 36, // 0 0 0 true if unit is alive - CONDITION_HP_VAL = 37, // hpVal ComparisonType 0 true if unit's hp matches given value - CONDITION_HP_PCT = 38, // hpPct ComparisonType 0 true if unit's hp matches given pct - CONDITION_REALM_ACHIEVEMENT = 39, // achievement_id 0 0 true if realm achievement is complete - CONDITION_IN_WATER = 40, // 0 0 0 true if unit in water - CONDITION_TERRAIN_SWAP = 41, // don't use on 3.3.5a - CONDITION_STAND_STATE = 42, // stateType state 0 true if unit matches specified sitstate (0,x: has exactly state x; 1,0: any standing state; 1,1: any sitting state;) - CONDITION_DAILY_QUEST_DONE = 43, // quest id 0 0 true if daily quest has been completed for the day - CONDITION_CHARMED = 44, // 0 0 0 true if unit is currently charmed - CONDITION_PET_TYPE = 45, // mask 0 0 true if player has a pet of given type(s) - CONDITION_TAXI = 46, // 0 0 0 true if player is on taxi - CONDITION_QUESTSTATE = 47, // quest_id state_mask 0 true if player is in any of the provided quest states for the quest (1 = not taken, 2 = completed, 8 = in progress, 32 = failed, 64 = rewarded) - CONDITION_QUEST_OBJECTIVE_PROGRESS = 48, // quest_id objectiveIndex objectiveCount true if player has reached the specified objectiveCount quest progress for the objectiveIndex for the specified quest - CONDITION_DIFFICULTY_ID = 49, // Difficulty 0 0 true is map has difficulty id - CONDITION_TC_END = 50, // placeholder + // value1 value2 value3 + CONDITION_NONE = 0, // 0 0 0 always true + CONDITION_AURA = 1, // spell_id effindex use target? true if player (or target, if value3) has aura of spell_id with effect effindex + CONDITION_ITEM = 2, // item_id count bank true if has #count of item_ids (if 'bank' is set it searches in bank slots too) + CONDITION_ITEM_EQUIPPED = 3, // item_id 0 0 true if has item_id equipped + CONDITION_ZONEID = 4, // zone_id 0 0 true if in zone_id + CONDITION_REPUTATION_RANK = 5, // faction_id rankMask 0 true if has min_rank for faction_id + CONDITION_TEAM = 6, // player_team 0, 0 469 - Alliance, 67 - Horde) + CONDITION_SKILL = 7, // skill_id skill_value 0 true if has skill_value for skill_id + CONDITION_QUESTREWARDED = 8, // quest_id 0 0 true if quest_id was rewarded before + CONDITION_QUESTTAKEN = 9, // quest_id 0, 0 true while quest active + CONDITION_DRUNKENSTATE = 10, // DrunkenState 0, 0 true if player is drunk enough + CONDITION_WORLD_STATE = 11, // index value 0 true if world has the value for the index + CONDITION_ACTIVE_EVENT = 12, // event_id 0 0 true if event is active + CONDITION_INSTANCE_INFO = 13, // entry data type true if the instance info defined by type (enum InstanceInfo) equals data. + CONDITION_QUEST_NONE = 14, // quest_id 0 0 true if doesn't have quest saved + CONDITION_CLASS = 15, // class 0 0 true if player's class is equal to class + CONDITION_RACE = 16, // race 0 0 true if player's race is equal to race + CONDITION_ACHIEVEMENT = 17, // achievement_id 0 0 true if achievement is complete + CONDITION_TITLE = 18, // title id 0 0 true if player has title + CONDITION_SPAWNMASK = 19, // spawnMask 0 0 true if in spawnMask + CONDITION_GENDER = 20, // gender 0 0 true if player's gender is equal to gender + CONDITION_UNIT_STATE = 21, // unitState 0 0 true if unit has unitState + CONDITION_MAPID = 22, // map_id 0 0 true if in map_id + CONDITION_AREAID = 23, // area_id 0 0 true if in area_id + CONDITION_CREATURE_TYPE = 24, // cinfo.type 0 0 true if creature_template.type = value1 + CONDITION_SPELL = 25, // spell_id 0 0 true if player has learned spell + CONDITION_PHASEMASK = 26, // phasemask 0 0 true if object is in phasemask + CONDITION_LEVEL = 27, // level ComparisonType 0 true if unit's level is equal to param1 (param2 can modify the statement) + CONDITION_QUEST_COMPLETE = 28, // quest_id 0 0 true if player has quest_id with all objectives complete, but not yet rewarded + CONDITION_NEAR_CREATURE = 29, // creature entry distance dead true if there is a creature of entry in range + CONDITION_NEAR_GAMEOBJECT = 30, // gameobject entry distance 0 true if there is a gameobject of entry in range + CONDITION_OBJECT_ENTRY_GUID = 31, // TypeID entry guid/Attackable true if object is type TypeID and the entry is 0 or matches entry of the object or matches guid of the object + CONDITION_TYPE_MASK = 32, // TypeMask 0 0 true if object is type object's TypeMask matches provided TypeMask + CONDITION_RELATION_TO = 33, // ConditionTarget RelationType 0 true if object is in given relation with object specified by ConditionTarget + CONDITION_REACTION_TO = 34, // ConditionTarget rankMask 0 true if object's reaction matches rankMask object specified by ConditionTarget + CONDITION_DISTANCE_TO = 35, // ConditionTarget distance ComparisonType true if object and ConditionTarget are within distance given by parameters + CONDITION_ALIVE = 36, // 0 0 0 true if unit is alive + CONDITION_HP_VAL = 37, // hpVal ComparisonType 0 true if unit's hp matches given value + CONDITION_HP_PCT = 38, // hpPct ComparisonType 0 true if unit's hp matches given pct + CONDITION_REALM_ACHIEVEMENT = 39, // achievement_id 0 0 true if realm achievement is complete + CONDITION_IN_WATER = 40, // 0 0 0 true if unit in water + CONDITION_TERRAIN_SWAP = 41, // don't use on 3.3.5a + CONDITION_STAND_STATE = 42, // stateType state 0 true if unit matches specified sitstate (0,x: has exactly state x; 1,0: any standing state; 1,1: any sitting state;) + CONDITION_DAILY_QUEST_DONE = 43, // quest id 0 0 true if daily quest has been completed for the day + CONDITION_CHARMED = 44, // 0 0 0 true if unit is currently charmed + CONDITION_PET_TYPE = 45, // mask 0 0 true if player has a pet of given type(s) + CONDITION_TAXI = 46, // 0 0 0 true if player is on taxi + CONDITION_QUESTSTATE = 47, // quest_id state_mask 0 true if player is in any of the provided quest states for the quest (1 = not taken, 2 = completed, 8 = in progress, 32 = failed, 64 = rewarded) + CONDITION_QUEST_OBJECTIVE_PROGRESS = 48, // quest_id objectiveIndex objectiveCount true if player has reached the specified objectiveCount quest progress for the objectiveIndex for the specified quest + CONDITION_DIFFICULTY_ID = 49, // Difficulty 0 0 true is map has difficulty id + CONDITION_TC_END = 50, // placeholder CONDITION_AC_START = 100, - CONDITION_QUEST_SATISFY_EXCLUSIVE = 101, // quest_id 0 0 true if satisfied exclusive group - CONDITION_HAS_AURA_TYPE = 102, // aura_type 0 0 true if has aura type - CONDITION_AC_END = 103 // placeholder + CONDITION_QUEST_SATISFY_EXCLUSIVE = 101, // quest_id 0 0 true if satisfied exclusive group + CONDITION_HAS_AURA_TYPE = 102, // aura_type 0 0 true if has aura type + CONDITION_AC_END = 103 // placeholder }; /*! Documentation on implementing a new ConditionSourceType: diff --git a/src/server/game/DataStores/M2Structure.h b/src/server/game/DataStores/M2Structure.h index 6f9004f86..a3316c711 100644 --- a/src/server/game/DataStores/M2Structure.h +++ b/src/server/game/DataStores/M2Structure.h @@ -73,7 +73,7 @@ struct M2Header uint32 ofsTransLookup; // Everything needs its lookup. Here are the transparencies. uint32 nUVAnimLookup; uint32 ofsUVAnimLookup; - G3D::AABox BoundingBox; // min/max( [1].z, 2.0277779f ) - 0.16f seems to be the maximum camera height + G3D::AABox BoundingBox; // min/max( [1].z, 2.0277779f ) - 0.16f seems to be the maximum camera height float BoundingSphereRadius; G3D::AABox CollisionBox; float CollisionSphereRadius; @@ -118,15 +118,15 @@ struct M2Track struct M2Camera { - uint32_t type; // 0: portrait, 1: characterinfo; -1: else (flyby etc.); referenced backwards in the lookup table. - float fov; // No radians, no degrees. Multiply by 35 to get degrees. + uint32_t type; // 0: portrait, 1: characterinfo; -1: else (flyby etc.); referenced backwards in the lookup table. + float fov; // No radians, no degrees. Multiply by 35 to get degrees. float far_clip; float near_clip; - M2Track positions; // How the camera's position moves. Should be 3*3 floats. + M2Track positions; // How the camera's position moves. Should be 3*3 floats. G3D::Vector3 position_base; - M2Track target_positions; // How the target moves. Should be 3*3 floats. + M2Track target_positions; // How the target moves. Should be 3*3 floats. G3D::Vector3 target_position_base; - M2Track rolldata; // The camera can have some roll-effect. Its 0 to 2*Pi. + M2Track rolldata; // The camera can have some roll-effect. Its 0 to 2*Pi. }; #pragma pack(pop) diff --git a/src/server/game/DungeonFinding/LFGGroupData.h b/src/server/game/DungeonFinding/LFGGroupData.h index 4afe3066c..61220d02f 100644 --- a/src/server/game/DungeonFinding/LFGGroupData.h +++ b/src/server/game/DungeonFinding/LFGGroupData.h @@ -62,15 +62,15 @@ namespace lfg private: // General - LfgState m_State; ///< State if group in LFG - LfgState m_OldState; ///< Old State - ObjectGuid m_Leader; ///< Leader GUID - LfgGuidSet m_Players; ///< Players in group + LfgState m_State; ///< State if group in LFG + LfgState m_OldState; ///< Old State + ObjectGuid m_Leader; ///< Leader GUID + LfgGuidSet m_Players; ///< Players in group // Dungeon - uint32 m_Dungeon; ///< Dungeon entry + uint32 m_Dungeon; ///< Dungeon entry bool _isLFGGroup; // Vote Kick - uint8 m_KicksLeft; ///< Number of kicks left + uint8 m_KicksLeft; ///< Number of kicks left }; } // namespace lfg diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h index 2e0abf067..1b2636156 100644 --- a/src/server/game/DungeonFinding/LFGMgr.h +++ b/src/server/game/DungeonFinding/LFGMgr.h @@ -38,9 +38,9 @@ namespace lfg enum LfgOptions { - LFG_OPTION_ENABLE_DUNGEON_FINDER = 0x01, - LFG_OPTION_ENABLE_RAID_BROWSER = 0x02, - LFG_OPTION_ENABLE_SEASONAL_BOSSES = 0x04 + LFG_OPTION_ENABLE_DUNGEON_FINDER = 0x01, + LFG_OPTION_ENABLE_RAID_BROWSER = 0x02, + LFG_OPTION_ENABLE_SEASONAL_BOSSES = 0x04 }; enum LFGMgrEnum @@ -330,7 +330,7 @@ namespace lfg Quest const* quest; }; - /// Reward info + // Reward info struct LfgReward { LfgReward(uint32 _maxLevel = 0, uint32 _firstQuest = 0, uint32 _otherQuest = 0): @@ -341,35 +341,35 @@ namespace lfg uint32 otherQuest; }; - /// Stores player data related to proposal to join + // Stores player data related to proposal to join struct LfgProposalPlayer { LfgProposalPlayer() = default; - uint8 role{0}; ///< Proposed role - LfgAnswer accept{LFG_ANSWER_PENDING}; ///< Accept status (-1 not answer | 0 Not agree | 1 agree) + uint8 role{0}; ///< Proposed role + LfgAnswer accept{LFG_ANSWER_PENDING}; ///< Accept status (-1 not answer | 0 Not agree | 1 agree) ObjectGuid group; ///< Original group guid. 0 if no original group }; - /// Stores group data related to proposal to join + // Stores group data related to proposal to join struct LfgProposal { LfgProposal(uint32 dungeon = 0): dungeonId(dungeon) { } - uint32 id{0}; ///< Proposal Id + uint32 id{0}; ///< Proposal Id uint32 dungeonId; ///< Dungeon to join - LfgProposalState state{LFG_PROPOSAL_INITIATING}; ///< State of the proposal + LfgProposalState state{LFG_PROPOSAL_INITIATING}; ///< State of the proposal ObjectGuid group; ///< Proposal group (0 if new) ObjectGuid leader; ///< Leader guid. - time_t cancelTime{0}; ///< Time when we will cancel this proposal - uint32 encounters{0}; ///< Dungeon Encounters - bool isNew{true}; ///< Determines if it's new group or not + time_t cancelTime{0}; ///< Time when we will cancel this proposal + uint32 encounters{0}; ///< Dungeon Encounters + bool isNew{true}; ///< Determines if it's new group or not Lfg5Guids queues; ///< Queue Ids to remove/readd LfgGuidList showorder; ///< Show order in update window LfgProposalPlayerContainer players; ///< Players data }; - /// Stores all rolecheck info of a group that wants to join + // Stores all rolecheck info of a group that wants to join struct LfgRoleCheck { time_t cancelTime; ///< Time when the rolecheck will fail @@ -380,7 +380,7 @@ namespace lfg ObjectGuid leader; ///< Leader of the group }; - /// Stores information of a current vote to kick someone from a group + // Stores information of a current vote to kick someone from a group struct LfgPlayerBoot { time_t cancelTime; ///< Time left to vote diff --git a/src/server/game/DungeonFinding/LFGQueue.h b/src/server/game/DungeonFinding/LFGQueue.h index 0f5c1cab6..cef355bcc 100644 --- a/src/server/game/DungeonFinding/LFGQueue.h +++ b/src/server/game/DungeonFinding/LFGQueue.h @@ -24,7 +24,6 @@ namespace lfg { - enum LfgCompatibility { LFG_COMPATIBILITY_PENDING, @@ -38,7 +37,7 @@ namespace lfg LFG_COMPATIBLES_MATCH // Must be the last one }; - /// Stores player or group queue info + // Stores player or group queue info struct LfgQueueData { LfgQueueData(); @@ -48,21 +47,21 @@ namespace lfg dps(LFG_DPS_NEEDED), dungeons(std::move(_dungeons)), roles(std::move(_roles)) { } - time_t joinTime; ///< Player queue join time (to calculate wait times) - time_t lastRefreshTime; ///< pussywizard - uint8 tanks{LFG_TANKS_NEEDED}; ///< Tanks needed - uint8 healers{LFG_HEALERS_NEEDED}; ///< Healers needed - uint8 dps{LFG_DPS_NEEDED}; ///< Dps needed - LfgDungeonSet dungeons; ///< Selected Player/Group Dungeon/s - LfgRolesMap roles; ///< Selected Player Role/s - Lfg5Guids bestCompatible; ///< Best compatible combination of people queued + time_t joinTime; // Player queue join time (to calculate wait times) + time_t lastRefreshTime; // pussywizard + uint8 tanks{LFG_TANKS_NEEDED}; // Tanks needed + uint8 healers{LFG_HEALERS_NEEDED}; // Healers needed + uint8 dps{LFG_DPS_NEEDED}; // Dps needed + LfgDungeonSet dungeons; // Selected Player/Group Dungeon/s + LfgRolesMap roles; // Selected Player Role/s + Lfg5Guids bestCompatible; // Best compatible combination of people queued }; struct LfgWaitTime { LfgWaitTime() = default; - int32 time{-1}; ///< Wait time - uint32 number{0}; ///< Number of people used to get that wait time + int32 time{-1}; // Wait time + uint32 number{0}; // Number of people used to get that wait time }; typedef std::map LfgWaitTimesContainer; @@ -110,19 +109,18 @@ namespace lfg LfgCompatibility CheckCompatibility(Lfg5Guids const& checkWith, const ObjectGuid& newGuid, uint64& foundMask, uint32& foundCount, const std::set& currentCompatibles); // Queue - uint32 m_QueueStatusTimer; ///< used to check interval of sending queue status - LfgQueueDataContainer QueueDataStore; ///< Queued groups - LfgCompatibleContainer CompatibleList; ///< Compatible dungeons - LfgCompatibleContainer CompatibleTempList; ///< new compatibles are added to this container while main one is being iterated + uint32 m_QueueStatusTimer; // used to check interval of sending queue status + LfgQueueDataContainer QueueDataStore; // Queued groups + LfgCompatibleContainer CompatibleList; // Compatible dungeons + LfgCompatibleContainer CompatibleTempList; // new compatibles are added to this container while main one is being iterated - LfgWaitTimesContainer waitTimesAvgStore; ///< Average wait time to find a group queuing as multiple roles - LfgWaitTimesContainer waitTimesTankStore; ///< Average wait time to find a group queuing as tank - LfgWaitTimesContainer waitTimesHealerStore; ///< Average wait time to find a group queuing as healer - LfgWaitTimesContainer waitTimesDpsStore; ///< Average wait time to find a group queuing as dps - LfgGuidList newToQueueStore; ///< New groups to add to queue + LfgWaitTimesContainer waitTimesAvgStore; // Average wait time to find a group queuing as multiple roles + LfgWaitTimesContainer waitTimesTankStore; // Average wait time to find a group queuing as tank + LfgWaitTimesContainer waitTimesHealerStore; // Average wait time to find a group queuing as healer + LfgWaitTimesContainer waitTimesDpsStore; // Average wait time to find a group queuing as dps + LfgGuidList newToQueueStore; // New groups to add to queue LfgGuidList restoredAfterProposal; }; - -} // namespace lfg +} #endif diff --git a/src/server/game/Entities/Item/ItemTemplate.h b/src/server/game/Entities/Item/ItemTemplate.h index 56da3f837..2b6020e13 100644 --- a/src/server/game/Entities/Item/ItemTemplate.h +++ b/src/server/game/Entities/Item/ItemTemplate.h @@ -60,9 +60,9 @@ enum ItemModType ITEM_MOD_EXPERTISE_RATING = 37, ITEM_MOD_ATTACK_POWER = 38, ITEM_MOD_RANGED_ATTACK_POWER = 39, - //ITEM_MOD_FERAL_ATTACK_POWER = 40, not in 3.3 - ITEM_MOD_SPELL_HEALING_DONE = 41, // deprecated - ITEM_MOD_SPELL_DAMAGE_DONE = 42, // deprecated + //ITEM_MOD_FERAL_ATTACK_POWER = 40, not in 3.3 + ITEM_MOD_SPELL_HEALING_DONE = 41, // deprecated + ITEM_MOD_SPELL_DAMAGE_DONE = 42, // deprecated ITEM_MOD_MANA_REGENERATION = 43, ITEM_MOD_ARMOR_PENETRATION_RATING = 44, ITEM_MOD_SPELL_POWER = 45, @@ -75,7 +75,7 @@ enum ItemModType enum ItemSpelltriggerType { - ITEM_SPELLTRIGGER_ON_USE = 0, // use after equip cooldown + ITEM_SPELLTRIGGER_ON_USE = 0, // use after equip cooldown ITEM_SPELLTRIGGER_ON_EQUIP = 1, ITEM_SPELLTRIGGER_CHANCE_ON_HIT = 2, ITEM_SPELLTRIGGER_SOULSTONE = 4, @@ -85,20 +85,20 @@ enum ItemSpelltriggerType * other hand the item is destroyed if the aura is removed ("removed on * death" of spell 57348 makes me think so) */ - ITEM_SPELLTRIGGER_ON_NO_DELAY_USE = 5, // no equip cooldown - ITEM_SPELLTRIGGER_LEARN_SPELL_ID = 6 // used in item_template.spell_2 with spell_id with SPELL_GENERIC_LEARN in spell_1 + ITEM_SPELLTRIGGER_ON_NO_DELAY_USE = 5, // no equip cooldown + ITEM_SPELLTRIGGER_LEARN_SPELL_ID = 6 // used in item_template.spell_2 with spell_id with SPELL_GENERIC_LEARN in spell_1 }; #define MAX_ITEM_SPELLTRIGGER 7 enum ItemBondingType { - NO_BIND = 0, - BIND_WHEN_PICKED_UP = 1, - BIND_WHEN_EQUIPED = 2, - BIND_WHEN_USE = 3, - BIND_QUEST_ITEM = 4, - BIND_QUEST_ITEM1 = 5 // not used in game + NO_BIND = 0, + BIND_WHEN_PICKED_UP = 1, + BIND_WHEN_EQUIPED = 2, + BIND_WHEN_USE = 3, + BIND_QUEST_ITEM = 4, + BIND_QUEST_ITEM1 = 5 // not used in game }; #define MAX_BIND_TYPE 6 @@ -597,7 +597,7 @@ struct _ItemStat }; struct _Spell { - int32 SpellId; // id from Spell.dbc + int32 SpellId; // id from Spell.dbc uint32 SpellTrigger; int32 SpellCharges; float SpellPPMRate; @@ -701,7 +701,7 @@ struct ItemTemplate uint32 MinMoneyLoot; uint32 MaxMoneyLoot; uint32 FlagsCu; - WorldPacket queryData; // pussywizard + WorldPacket queryData; // pussywizard // helpers [[nodiscard]] bool HasSignature() const diff --git a/src/server/game/Entities/Object/Object.h b/src/server/game/Entities/Object/Object.h index a3ba74bbd..bb1bbb476 100644 --- a/src/server/game/Entities/Object/Object.h +++ b/src/server/game/Entities/Object/Object.h @@ -67,8 +67,8 @@ enum NotifyFlags enum GOSummonType { - GO_SUMMON_TIMED_OR_CORPSE_DESPAWN = 0, // despawns after a specified time OR when the summoner dies - GO_SUMMON_TIMED_DESPAWN = 1 // despawns after a specified time + GO_SUMMON_TIMED_OR_CORPSE_DESPAWN = 0, // despawns after a specified time OR when the summoner dies + GO_SUMMON_TIMED_DESPAWN = 1 // despawns after a specified time }; class WorldPacket; diff --git a/src/server/game/Entities/Object/ObjectDefines.h b/src/server/game/Entities/Object/ObjectDefines.h index 2dbd40426..55c482633 100644 --- a/src/server/game/Entities/Object/ObjectDefines.h +++ b/src/server/game/Entities/Object/ObjectDefines.h @@ -23,31 +23,31 @@ #define CONTACT_DISTANCE 0.5f #define INTERACTION_DISTANCE 5.5f #define ATTACK_DISTANCE 5.0f -#define VISIBILITY_COMPENSATION 15.0f // increase searchers +#define VISIBILITY_COMPENSATION 15.0f // increase searchers #define INSPECT_DISTANCE 28.0f -#define VISIBILITY_INC_FOR_GOBJECTS 30.0f // pussywizard -#define SPELL_SEARCHER_COMPENSATION 30.0f // increase searchers size in case we have large npc near cell border +#define VISIBILITY_INC_FOR_GOBJECTS 30.0f // pussywizard +#define SPELL_SEARCHER_COMPENSATION 30.0f // increase searchers size in case we have large npc near cell border #define TRADE_DISTANCE 11.11f -#define MAX_VISIBILITY_DISTANCE 250.0f // max distance for visible objects, experimental +#define MAX_VISIBILITY_DISTANCE 250.0f // max distance for visible objects, experimental #define SIGHT_RANGE_UNIT 50.0f -#define MAX_SEARCHER_DISTANCE 150.0f // pussywizard: replace the use of MAX_VISIBILITY_DISTANCE in searchers, because MAX_VISIBILITY_DISTANCE is quite too big for this purpose +#define MAX_SEARCHER_DISTANCE 150.0f // pussywizard: replace the use of MAX_VISIBILITY_DISTANCE in searchers, because MAX_VISIBILITY_DISTANCE is quite too big for this purpose #define VISIBILITY_DISTANCE_INFINITE 533.0f #define VISIBILITY_DISTANCE_GIGANTIC 400.0f #define VISIBILITY_DISTANCE_LARGE 200.0f #define VISIBILITY_DISTANCE_NORMAL 100.0f #define VISIBILITY_DISTANCE_SMALL 50.0f #define VISIBILITY_DISTANCE_TINY 25.0f -#define DEFAULT_VISIBILITY_DISTANCE 100.0f // default visible distance, 100 yards on continents -#define DEFAULT_VISIBILITY_INSTANCE 170.0f // default visible distance in instances, 170 yards +#define DEFAULT_VISIBILITY_DISTANCE 100.0f // default visible distance, 100 yards on continents +#define DEFAULT_VISIBILITY_INSTANCE 170.0f // default visible distance in instances, 170 yards #define VISIBILITY_DIST_WINTERGRASP 175.0f -#define DEFAULT_VISIBILITY_BGARENAS 533.0f // default visible distance in BG/Arenas, roughly 533 yards +#define DEFAULT_VISIBILITY_BGARENAS 533.0f // default visible distance in BG/Arenas, roughly 533 yards #define DEFAULT_WORLD_OBJECT_SIZE 0.388999998569489f // player size, also currently used (correctly?) for any non Unit world objects #define DEFAULT_COMBAT_REACH 1.5f #define MIN_MELEE_REACH 2.0f #define NOMINAL_MELEE_RANGE 5.0f #define MELEE_RANGE (NOMINAL_MELEE_RANGE - MIN_MELEE_REACH * 2) //center to center for players -#define DEFAULT_COLLISION_HEIGHT 2.03128f // Most common value in dbc +#define DEFAULT_COLLISION_HEIGHT 2.03128f // Most common value in dbc // used for creating values for respawn for example inline uint32 PAIR64_HIPART(uint64 x); diff --git a/src/server/game/Entities/Object/ObjectGuid.h b/src/server/game/Entities/Object/ObjectGuid.h index 3e9d68f14..bb8029048 100644 --- a/src/server/game/Entities/Object/ObjectGuid.h +++ b/src/server/game/Entities/Object/ObjectGuid.h @@ -47,8 +47,8 @@ enum TypeMask { TYPEMASK_OBJECT = 0x0001, TYPEMASK_ITEM = 0x0002, - TYPEMASK_CONTAINER = 0x0006, // TYPEMASK_ITEM | 0x0004 - TYPEMASK_UNIT = 0x0008, // creature + TYPEMASK_CONTAINER = 0x0006, // TYPEMASK_ITEM | 0x0004 + TYPEMASK_UNIT = 0x0008, // creature TYPEMASK_PLAYER = 0x0010, TYPEMASK_GAMEOBJECT = 0x0020, TYPEMASK_DYNAMICOBJECT = 0x0040, diff --git a/src/server/game/Entities/Object/ObjectPosSelector.h b/src/server/game/Entities/Object/ObjectPosSelector.h index a08b0f7a1..e3996207a 100644 --- a/src/server/game/Entities/Object/ObjectPosSelector.h +++ b/src/server/game/Entities/Object/ObjectPosSelector.h @@ -42,7 +42,7 @@ struct ObjectPosSelector float dist; // dist to central point (including central point size) }; - typedef std::multimap UsedPosList; // std::abs(angle)->Node + typedef std::multimap UsedPosList; // std::abs(angle)->Node ObjectPosSelector(float x, float y, float size, float dist); @@ -60,7 +60,7 @@ struct ObjectPosSelector float angle_step2 = GetAngle(nextUsedPos.second); float next_angle = nextUsedPos.first; - if (nextUsedPos.second.sign * sign < 0) // last node from diff. list (-pi+alpha) + if (nextUsedPos.second.sign * sign < 0) // last node from diff. list (-pi+alpha) next_angle = 2 * M_PI - next_angle; // move to positive return std::fabs(angle) + angle_step2 <= next_angle; diff --git a/src/server/game/Entities/Pet/PetDefines.h b/src/server/game/Entities/Pet/PetDefines.h index 017fd8ad5..e46639095 100644 --- a/src/server/game/Entities/Pet/PetDefines.h +++ b/src/server/game/Entities/Pet/PetDefines.h @@ -28,9 +28,9 @@ enum ReactStates : uint8; enum PetType : uint8 { - SUMMON_PET = 0, - HUNTER_PET = 1, - MAX_PET_TYPE = 4 + SUMMON_PET = 0, + HUNTER_PET = 1, + MAX_PET_TYPE = 4 }; constexpr auto MAX_PET_STABLES = 4; @@ -38,54 +38,54 @@ constexpr auto MAX_PET_STABLES = 4; // stored in character_pet.slot enum PetSaveMode : int8 { - PET_SAVE_AS_DELETED = -1, // not saved in fact - PET_SAVE_AS_CURRENT = 0, // in current slot (with player) - PET_SAVE_FIRST_STABLE_SLOT = 1, - PET_SAVE_LAST_STABLE_SLOT = MAX_PET_STABLES, // last in DB stable slot index (including), all higher have same meaning as PET_SAVE_NOT_IN_SLOT - PET_SAVE_NOT_IN_SLOT = 100 // for avoid conflict with stable size grow will use 100 + PET_SAVE_AS_DELETED = -1, // not saved in fact + PET_SAVE_AS_CURRENT = 0, // in current slot (with player) + PET_SAVE_FIRST_STABLE_SLOT = 1, + PET_SAVE_LAST_STABLE_SLOT = MAX_PET_STABLES, // last in DB stable slot index (including), all higher have same meaning as PET_SAVE_NOT_IN_SLOT + PET_SAVE_NOT_IN_SLOT = 100 // for avoid conflict with stable size grow will use 100 }; enum HappinessState { - UNHAPPY = 1, - CONTENT = 2, - HAPPY = 3 + UNHAPPY = 1, + CONTENT = 2, + HAPPY = 3 }; enum PetSpellState { - PETSPELL_UNCHANGED = 0, - PETSPELL_CHANGED = 1, - PETSPELL_NEW = 2, - PETSPELL_REMOVED = 3 + PETSPELL_UNCHANGED = 0, + PETSPELL_CHANGED = 1, + PETSPELL_NEW = 2, + PETSPELL_REMOVED = 3 }; enum PetSpellType { - PETSPELL_NORMAL = 0, - PETSPELL_FAMILY = 1, - PETSPELL_TALENT = 2 + PETSPELL_NORMAL = 0, + PETSPELL_FAMILY = 1, + PETSPELL_TALENT = 2 }; enum ActionFeedback { - FEEDBACK_NONE = 0, - FEEDBACK_PET_DEAD = 1, - FEEDBACK_NOTHING_TO_ATT = 2, - FEEDBACK_CANT_ATT_TARGET = 3 + FEEDBACK_NONE = 0, + FEEDBACK_PET_DEAD = 1, + FEEDBACK_NOTHING_TO_ATT = 2, + FEEDBACK_CANT_ATT_TARGET = 3 }; enum PetTalk { - PET_TALK_SPECIAL_SPELL = 0, - PET_TALK_ATTACK = 1 + PET_TALK_SPECIAL_SPELL = 0, + PET_TALK_ATTACK = 1 }; enum PetLoadState { - PET_LOAD_OK = 0, - PET_LOAD_NO_RESULT = 1, - PET_LOAD_ERROR = 2 + PET_LOAD_OK = 0, + PET_LOAD_NO_RESULT = 1, + PET_LOAD_ERROR = 2 }; enum NPCEntries diff --git a/src/server/game/Entities/Vehicle/VehicleDefines.h b/src/server/game/Entities/Vehicle/VehicleDefines.h index ad43ae342..7b3991946 100644 --- a/src/server/game/Entities/Vehicle/VehicleDefines.h +++ b/src/server/game/Entities/Vehicle/VehicleDefines.h @@ -50,11 +50,11 @@ enum VehicleFlags enum VehicleSpells { - VEHICLE_SPELL_RIDE_HARDCODED = 46598, - VEHICLE_SPELL_PARACHUTE = 45472, + VEHICLE_SPELL_RIDE_HARDCODED = 46598, + VEHICLE_SPELL_PARACHUTE = 45472, - VEHICLE_SPELL_GEIST_CONTROL_END = 58119, - VEHICLE_SPELL_SHADE_CONTROL_END = 58664 + VEHICLE_SPELL_GEIST_CONTROL_END = 58119, + VEHICLE_SPELL_SHADE_CONTROL_END = 58664 }; enum VehicleNPCs diff --git a/src/server/game/Events/GameEventMgr.h b/src/server/game/Events/GameEventMgr.h index a77f19f96..c251cf803 100644 --- a/src/server/game/Events/GameEventMgr.h +++ b/src/server/game/Events/GameEventMgr.h @@ -24,16 +24,16 @@ #include #include -#define max_ge_check_delay DAY // 1 day in seconds +#define max_ge_check_delay DAY // 1 day in seconds enum GameEventState { - GAMEEVENT_NORMAL = 0, // standard game events - GAMEEVENT_WORLD_INACTIVE = 1, // not yet started - GAMEEVENT_WORLD_CONDITIONS = 2, // condition matching phase - GAMEEVENT_WORLD_NEXTPHASE = 3, // conditions are met, now 'length' timer to start next event - GAMEEVENT_WORLD_FINISHED = 4, // next events are started, unapply this one - GAMEEVENT_INTERNAL = 5, // never handled in update + GAMEEVENT_NORMAL = 0, // standard game events + GAMEEVENT_WORLD_INACTIVE = 1, // not yet started + GAMEEVENT_WORLD_CONDITIONS = 2, // condition matching phase + GAMEEVENT_WORLD_NEXTPHASE = 3, // conditions are met, now 'length' timer to start next event + GAMEEVENT_WORLD_FINISHED = 4, // next events are started, unapply this one + GAMEEVENT_INTERNAL = 5, // never handled in update }; struct GameEventFinishCondition @@ -83,10 +83,10 @@ struct ModelEquip struct NPCVendorEntry { - uint32 entry; // creature entry - uint32 item; // item id - int32 maxcount; // 0 for infinite - uint32 incrtime; // time for restore items amount if maxcount != 0 + uint32 entry; // creature entry + uint32 item; // item id + int32 maxcount; // 0 for infinite + uint32 incrtime; // time for restore items amount if maxcount != 0 uint32 ExtendedCost; }; diff --git a/src/server/game/Loot/LootMgr.h b/src/server/game/Loot/LootMgr.h index bd1633abf..ce03c8f40 100644 --- a/src/server/game/Loot/LootMgr.h +++ b/src/server/game/Loot/LootMgr.h @@ -31,22 +31,22 @@ enum RollType { - ROLL_PASS = 0, - ROLL_NEED = 1, - ROLL_GREED = 2, - ROLL_DISENCHANT = 3, - MAX_ROLL_TYPE = 4 + ROLL_PASS = 0, + ROLL_NEED = 1, + ROLL_GREED = 2, + ROLL_DISENCHANT = 3, + MAX_ROLL_TYPE = 4 }; enum RollMask { - ROLL_FLAG_TYPE_PASS = 0x01, - ROLL_FLAG_TYPE_NEED = 0x02, - ROLL_FLAG_TYPE_GREED = 0x04, - ROLL_FLAG_TYPE_DISENCHANT = 0x08, + ROLL_FLAG_TYPE_PASS = 0x01, + ROLL_FLAG_TYPE_NEED = 0x02, + ROLL_FLAG_TYPE_GREED = 0x04, + ROLL_FLAG_TYPE_DISENCHANT = 0x08, - ROLL_ALL_TYPE_NO_DISENCHANT = 0x07, - ROLL_ALL_TYPE_MASK = 0x0F + ROLL_ALL_TYPE_NO_DISENCHANT = 0x07, + ROLL_ALL_TYPE_MASK = 0x0F }; #define MAX_NR_LOOT_ITEMS 18 @@ -56,40 +56,40 @@ enum RollMask enum LootMethod { - FREE_FOR_ALL = 0, - ROUND_ROBIN = 1, - MASTER_LOOT = 2, - GROUP_LOOT = 3, - NEED_BEFORE_GREED = 4 + FREE_FOR_ALL = 0, + ROUND_ROBIN = 1, + MASTER_LOOT = 2, + GROUP_LOOT = 3, + NEED_BEFORE_GREED = 4 }; enum PermissionTypes { - ALL_PERMISSION = 0, - GROUP_PERMISSION = 1, - MASTER_PERMISSION = 2, - RESTRICTED_PERMISSION = 3, - ROUND_ROBIN_PERMISSION = 4, - OWNER_PERMISSION = 5, - NONE_PERMISSION = 6 + ALL_PERMISSION = 0, + GROUP_PERMISSION = 1, + MASTER_PERMISSION = 2, + RESTRICTED_PERMISSION = 3, + ROUND_ROBIN_PERMISSION = 4, + OWNER_PERMISSION = 5, + NONE_PERMISSION = 6 }; enum LootType { - LOOT_NONE = 0, + LOOT_NONE = 0, - LOOT_CORPSE = 1, - LOOT_PICKPOCKETING = 2, - LOOT_FISHING = 3, - LOOT_DISENCHANTING = 4, + LOOT_CORPSE = 1, + LOOT_PICKPOCKETING = 2, + LOOT_FISHING = 3, + LOOT_DISENCHANTING = 4, // ignored always by client - LOOT_SKINNING = 6, - LOOT_PROSPECTING = 7, - LOOT_MILLING = 8, + LOOT_SKINNING = 6, + LOOT_PROSPECTING = 7, + LOOT_MILLING = 8, - LOOT_FISHINGHOLE = 20, // unsupported by client, sending LOOT_FISHING instead - LOOT_INSIGNIA = 21, // unsupported by client, sending LOOT_CORPSE instead - LOOT_FISHING_JUNK = 22 // unsupported by client, sending LOOT_FISHING instead + LOOT_FISHINGHOLE = 20, // unsupported by client, sending LOOT_FISHING instead + LOOT_INSIGNIA = 21, // unsupported by client, sending LOOT_CORPSE instead + LOOT_FISHING_JUNK = 22 // unsupported by client, sending LOOT_FISHING instead }; enum LootError @@ -112,11 +112,11 @@ enum LootError // type of Loot Item in Loot View enum LootSlotType { - LOOT_SLOT_TYPE_ALLOW_LOOT = 0, // player can loot the item. - LOOT_SLOT_TYPE_ROLL_ONGOING = 1, // roll is ongoing. player cannot loot. - LOOT_SLOT_TYPE_MASTER = 2, // item can only be distributed by group loot master. - LOOT_SLOT_TYPE_LOCKED = 3, // item is shown in red. player cannot loot. - LOOT_SLOT_TYPE_OWNER = 4, // ignore binding confirmation and etc, for single player looting + LOOT_SLOT_TYPE_ALLOW_LOOT = 0, // player can loot the item. + LOOT_SLOT_TYPE_ROLL_ONGOING = 1, // roll is ongoing. player cannot loot. + LOOT_SLOT_TYPE_MASTER = 2, // item can only be distributed by group loot master. + LOOT_SLOT_TYPE_LOCKED = 3, // item is shown in red. player cannot loot. + LOOT_SLOT_TYPE_OWNER = 4, // ignore binding confirmation and etc, for single player looting }; class Player; @@ -127,15 +127,15 @@ struct Loot; struct LootStoreItem { - uint32 itemid; // id of the item - int32 reference; // referenced TemplateleId - float chance; // chance to drop for both quest and non-quest items, chance to be used for refs - bool needs_quest : 1; // quest drop (quest is required for item to drop) + uint32 itemid; // id of the item + int32 reference; // referenced TemplateleId + float chance; // chance to drop for both quest and non-quest items, chance to be used for refs + bool needs_quest : 1; // quest drop (quest is required for item to drop) uint16 lootmode; uint8 groupid : 7; - uint8 mincount; // mincount for drop items - uint8 maxcount; // max drop count for the item mincount or Ref multiplicator - ConditionList conditions; // additional loot condition + uint8 mincount; // mincount for drop items + uint8 maxcount; // max drop count for the item mincount or Ref multiplicator + ConditionList conditions; // additional loot condition // Constructor // displayid is filled in IsValid() which must be called after @@ -144,7 +144,7 @@ struct LootStoreItem lootmode(_lootmode), groupid(_groupid), mincount(_mincount), maxcount(_maxcount) {} - bool Roll(bool rate, Player const* player, Loot& loot, LootStore const& store) const; // Checks if the entry takes it's chance (at loot generation) + bool Roll(bool rate, Player const* player, Loot& loot, LootStore const& store) const; // Checks if the entry takes it's chance (at loot generation) [[nodiscard]] bool IsValid(LootStore const& store, uint32 entry) const; // Checks correctness of values }; diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h index fd53071c4..37b046f44 100644 --- a/src/server/game/Spells/Auras/SpellAuraDefines.h +++ b/src/server/game/Spells/Auras/SpellAuraDefines.h @@ -38,13 +38,13 @@ enum AURA_FLAGS enum AuraEffectHandleModes { - AURA_EFFECT_HANDLE_DEFAULT = 0x0, - AURA_EFFECT_HANDLE_REAL = 0x01, // handler applies/removes effect from unit - AURA_EFFECT_HANDLE_SEND_FOR_CLIENT = 0x02, // handler sends apply/remove packet to unit - AURA_EFFECT_HANDLE_CHANGE_AMOUNT = 0x04, // handler updates effect on target after effect amount change - AURA_EFFECT_HANDLE_REAPPLY = 0x08, // handler updates effect on target after aura is reapplied on target - AURA_EFFECT_HANDLE_STAT = 0x10, // handler updates effect on target when stat removal/apply is needed for calculations by core - AURA_EFFECT_HANDLE_SKILL = 0x20, // handler updates effect on target when skill removal/apply is needed for calculations by core + AURA_EFFECT_HANDLE_DEFAULT = 0x0, + AURA_EFFECT_HANDLE_REAL = 0x01, // handler applies/removes effect from unit + AURA_EFFECT_HANDLE_SEND_FOR_CLIENT = 0x02, // handler sends apply/remove packet to unit + AURA_EFFECT_HANDLE_CHANGE_AMOUNT = 0x04, // handler updates effect on target after effect amount change + AURA_EFFECT_HANDLE_REAPPLY = 0x08, // handler updates effect on target after aura is reapplied on target + AURA_EFFECT_HANDLE_STAT = 0x10, // handler updates effect on target when stat removal/apply is needed for calculations by core + AURA_EFFECT_HANDLE_SKILL = 0x20, // handler updates effect on target when skill removal/apply is needed for calculations by core AURA_EFFECT_HANDLE_SEND_FOR_CLIENT_MASK = (AURA_EFFECT_HANDLE_SEND_FOR_CLIENT | AURA_EFFECT_HANDLE_REAL), // any case handler need to send packet AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK = (AURA_EFFECT_HANDLE_CHANGE_AMOUNT | AURA_EFFECT_HANDLE_REAL), // any case handler applies effect depending on amount AURA_EFFECT_HANDLE_CHANGE_AMOUNT_SEND_FOR_CLIENT_MASK = (AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK | AURA_EFFECT_HANDLE_SEND_FOR_CLIENT_MASK), @@ -54,330 +54,330 @@ enum AuraEffectHandleModes //m_schoolAbsorb enum DAMAGE_ABSORB_TYPE { - ALL_DAMAGE_ABSORB = -2, - ONLY_MAGIC_ABSORB = -1, + ALL_DAMAGE_ABSORB = -2, + ONLY_MAGIC_ABSORB = -1, }; enum AuraType { - SPELL_AURA_NONE = 0, - SPELL_AURA_BIND_SIGHT = 1, - SPELL_AURA_MOD_POSSESS = 2, - SPELL_AURA_PERIODIC_DAMAGE = 3, - SPELL_AURA_DUMMY = 4, - SPELL_AURA_MOD_CONFUSE = 5, - SPELL_AURA_MOD_CHARM = 6, - SPELL_AURA_MOD_FEAR = 7, - SPELL_AURA_PERIODIC_HEAL = 8, - SPELL_AURA_MOD_ATTACKSPEED = 9, - SPELL_AURA_MOD_THREAT = 10, - SPELL_AURA_MOD_TAUNT = 11, - SPELL_AURA_MOD_STUN = 12, - SPELL_AURA_MOD_DAMAGE_DONE = 13, - SPELL_AURA_MOD_DAMAGE_TAKEN = 14, - SPELL_AURA_DAMAGE_SHIELD = 15, - SPELL_AURA_MOD_STEALTH = 16, - SPELL_AURA_MOD_STEALTH_DETECT = 17, - SPELL_AURA_MOD_INVISIBILITY = 18, - SPELL_AURA_MOD_INVISIBILITY_DETECT = 19, - SPELL_AURA_OBS_MOD_HEALTH = 20, //20, 21 unofficial - SPELL_AURA_OBS_MOD_POWER = 21, - SPELL_AURA_MOD_RESISTANCE = 22, - SPELL_AURA_PERIODIC_TRIGGER_SPELL = 23, - SPELL_AURA_PERIODIC_ENERGIZE = 24, - SPELL_AURA_MOD_PACIFY = 25, - SPELL_AURA_MOD_ROOT = 26, - SPELL_AURA_MOD_SILENCE = 27, - SPELL_AURA_REFLECT_SPELLS = 28, - SPELL_AURA_MOD_STAT = 29, - SPELL_AURA_MOD_SKILL = 30, - SPELL_AURA_MOD_INCREASE_SPEED = 31, - SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED = 32, - SPELL_AURA_MOD_DECREASE_SPEED = 33, - SPELL_AURA_MOD_INCREASE_HEALTH = 34, - SPELL_AURA_MOD_INCREASE_ENERGY = 35, - SPELL_AURA_MOD_SHAPESHIFT = 36, - SPELL_AURA_EFFECT_IMMUNITY = 37, - SPELL_AURA_STATE_IMMUNITY = 38, - SPELL_AURA_SCHOOL_IMMUNITY = 39, - SPELL_AURA_DAMAGE_IMMUNITY = 40, - SPELL_AURA_DISPEL_IMMUNITY = 41, - SPELL_AURA_PROC_TRIGGER_SPELL = 42, - SPELL_AURA_PROC_TRIGGER_DAMAGE = 43, - SPELL_AURA_TRACK_CREATURES = 44, - SPELL_AURA_TRACK_RESOURCES = 45, - SPELL_AURA_46 = 46, // Ignore all Gear test spells - SPELL_AURA_MOD_PARRY_PERCENT = 47, - SPELL_AURA_PERIODIC_TRIGGER_SPELL_FROM_CLIENT = 48, // One periodic spell - SPELL_AURA_MOD_DODGE_PERCENT = 49, - SPELL_AURA_MOD_CRITICAL_HEALING_AMOUNT = 50, - SPELL_AURA_MOD_BLOCK_PERCENT = 51, - SPELL_AURA_MOD_WEAPON_CRIT_PERCENT = 52, - SPELL_AURA_PERIODIC_LEECH = 53, - SPELL_AURA_MOD_HIT_CHANCE = 54, - SPELL_AURA_MOD_SPELL_HIT_CHANCE = 55, - SPELL_AURA_TRANSFORM = 56, - SPELL_AURA_MOD_SPELL_CRIT_CHANCE = 57, - SPELL_AURA_MOD_INCREASE_SWIM_SPEED = 58, - SPELL_AURA_MOD_DAMAGE_DONE_CREATURE = 59, - SPELL_AURA_MOD_PACIFY_SILENCE = 60, - SPELL_AURA_MOD_SCALE = 61, - SPELL_AURA_PERIODIC_HEALTH_FUNNEL = 62, - SPELL_AURA_63 = 63, // old SPELL_AURA_PERIODIC_MANA_FUNNEL - SPELL_AURA_PERIODIC_MANA_LEECH = 64, - SPELL_AURA_MOD_CASTING_SPEED_NOT_STACK = 65, - SPELL_AURA_FEIGN_DEATH = 66, - SPELL_AURA_MOD_DISARM = 67, - SPELL_AURA_MOD_STALKED = 68, - SPELL_AURA_SCHOOL_ABSORB = 69, - SPELL_AURA_EXTRA_ATTACKS = 70, - SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL = 71, - SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT = 72, - SPELL_AURA_MOD_POWER_COST_SCHOOL = 73, - SPELL_AURA_REFLECT_SPELLS_SCHOOL = 74, - SPELL_AURA_MOD_LANGUAGE = 75, - SPELL_AURA_FAR_SIGHT = 76, - SPELL_AURA_MECHANIC_IMMUNITY = 77, - SPELL_AURA_MOUNTED = 78, - SPELL_AURA_MOD_DAMAGE_PERCENT_DONE = 79, - SPELL_AURA_MOD_PERCENT_STAT = 80, - SPELL_AURA_SPLIT_DAMAGE_PCT = 81, - SPELL_AURA_WATER_BREATHING = 82, - SPELL_AURA_MOD_BASE_RESISTANCE = 83, - SPELL_AURA_MOD_REGEN = 84, - SPELL_AURA_MOD_POWER_REGEN = 85, - SPELL_AURA_CHANNEL_DEATH_ITEM = 86, - SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN = 87, - SPELL_AURA_MOD_HEALTH_REGEN_PERCENT = 88, - SPELL_AURA_PERIODIC_DAMAGE_PERCENT = 89, - SPELL_AURA_90 = 90, // old SPELL_AURA_MOD_RESIST_CHANCE - SPELL_AURA_MOD_DETECT_RANGE = 91, - SPELL_AURA_PREVENTS_FLEEING = 92, - SPELL_AURA_MOD_UNATTACKABLE = 93, - SPELL_AURA_INTERRUPT_REGEN = 94, - SPELL_AURA_GHOST = 95, - SPELL_AURA_SPELL_MAGNET = 96, - SPELL_AURA_MANA_SHIELD = 97, - SPELL_AURA_MOD_SKILL_TALENT = 98, - SPELL_AURA_MOD_ATTACK_POWER = 99, - SPELL_AURA_AURAS_VISIBLE = 100, - SPELL_AURA_MOD_RESISTANCE_PCT = 101, - SPELL_AURA_MOD_MELEE_ATTACK_POWER_VERSUS = 102, - SPELL_AURA_MOD_TOTAL_THREAT = 103, - SPELL_AURA_WATER_WALK = 104, - SPELL_AURA_FEATHER_FALL = 105, - SPELL_AURA_HOVER = 106, - SPELL_AURA_ADD_FLAT_MODIFIER = 107, - SPELL_AURA_ADD_PCT_MODIFIER = 108, - SPELL_AURA_ADD_TARGET_TRIGGER = 109, - SPELL_AURA_MOD_POWER_REGEN_PERCENT = 110, - SPELL_AURA_ADD_CASTER_HIT_TRIGGER = 111, - SPELL_AURA_OVERRIDE_CLASS_SCRIPTS = 112, - SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN = 113, - SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN_PCT = 114, - SPELL_AURA_MOD_HEALING = 115, - SPELL_AURA_MOD_REGEN_DURING_COMBAT = 116, - SPELL_AURA_MOD_MECHANIC_RESISTANCE = 117, - SPELL_AURA_MOD_HEALING_PCT = 118, - SPELL_AURA_119 = 119, // old SPELL_AURA_SHARE_PET_TRACKING - SPELL_AURA_UNTRACKABLE = 120, - SPELL_AURA_EMPATHY = 121, - SPELL_AURA_MOD_OFFHAND_DAMAGE_PCT = 122, - SPELL_AURA_MOD_TARGET_RESISTANCE = 123, - SPELL_AURA_MOD_RANGED_ATTACK_POWER = 124, - SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN = 125, - SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN_PCT = 126, - SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS = 127, - SPELL_AURA_MOD_POSSESS_PET = 128, - SPELL_AURA_MOD_SPEED_ALWAYS = 129, - SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS = 130, - SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS = 131, - SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT = 132, - SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT = 133, - SPELL_AURA_MOD_MANA_REGEN_INTERRUPT = 134, - SPELL_AURA_MOD_HEALING_DONE = 135, - SPELL_AURA_MOD_HEALING_DONE_PERCENT = 136, - SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE = 137, - SPELL_AURA_MOD_MELEE_HASTE = 138, - SPELL_AURA_FORCE_REACTION = 139, - SPELL_AURA_MOD_RANGED_HASTE = 140, - SPELL_AURA_MOD_RANGED_AMMO_HASTE = 141, - SPELL_AURA_MOD_BASE_RESISTANCE_PCT = 142, - SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE = 143, - SPELL_AURA_SAFE_FALL = 144, - SPELL_AURA_MOD_PET_TALENT_POINTS = 145, - SPELL_AURA_ALLOW_TAME_PET_TYPE = 146, - SPELL_AURA_MECHANIC_IMMUNITY_MASK = 147, - SPELL_AURA_RETAIN_COMBO_POINTS = 148, - SPELL_AURA_REDUCE_PUSHBACK = 149, // Reduce Pushback - SPELL_AURA_MOD_SHIELD_BLOCKVALUE_PCT = 150, - SPELL_AURA_TRACK_STEALTHED = 151, // Track Stealthed - SPELL_AURA_MOD_DETECTED_RANGE = 152, // Mod Detected Range - SPELL_AURA_SPLIT_DAMAGE_FLAT = 153, // Split Damage Flat - SPELL_AURA_MOD_STEALTH_LEVEL = 154, // Stealth Level Modifier - SPELL_AURA_MOD_WATER_BREATHING = 155, // Mod Water Breathing - SPELL_AURA_MOD_REPUTATION_GAIN = 156, // Mod Reputation Gain - SPELL_AURA_PET_DAMAGE_MULTI = 157, // Mod Pet Damage - SPELL_AURA_MOD_SHIELD_BLOCKVALUE = 158, - SPELL_AURA_NO_PVP_CREDIT = 159, - SPELL_AURA_MOD_AOE_AVOIDANCE = 160, - SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT = 161, - SPELL_AURA_POWER_BURN = 162, - SPELL_AURA_MOD_CRIT_DAMAGE_BONUS = 163, - SPELL_AURA_164 = 164, - SPELL_AURA_MELEE_ATTACK_POWER_ATTACKER_BONUS = 165, - SPELL_AURA_MOD_ATTACK_POWER_PCT = 166, - SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT = 167, - SPELL_AURA_MOD_DAMAGE_DONE_VERSUS = 168, - SPELL_AURA_MOD_CRIT_PERCENT_VERSUS = 169, - SPELL_AURA_DETECT_AMORE = 170, - SPELL_AURA_MOD_SPEED_NOT_STACK = 171, - SPELL_AURA_MOD_MOUNTED_SPEED_NOT_STACK = 172, - SPELL_AURA_173 = 173, // old SPELL_AURA_ALLOW_CHAMPION_SPELLS - SPELL_AURA_MOD_SPELL_DAMAGE_OF_STAT_PERCENT = 174, // by defeult intelect, dependent from SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT - SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT = 175, - SPELL_AURA_SPIRIT_OF_REDEMPTION = 176, - SPELL_AURA_AOE_CHARM = 177, - SPELL_AURA_MOD_DEBUFF_RESISTANCE = 178, - SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE = 179, - SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS = 180, - SPELL_AURA_181 = 181, // old SPELL_AURA_MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS - possible flat spell crit damage versus - SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT = 182, - SPELL_AURA_MOD_CRITICAL_THREAT = 183, - SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE = 184, - SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE = 185, - SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE = 186, - SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_CHANCE = 187, - SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_CHANCE = 188, - SPELL_AURA_MOD_RATING = 189, - SPELL_AURA_MOD_FACTION_REPUTATION_GAIN = 190, - SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED = 191, - SPELL_AURA_MOD_MELEE_RANGED_HASTE = 192, - SPELL_AURA_MELEE_SLOW = 193, - SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL = 194, - SPELL_AURA_MOD_TARGET_ABILITY_ABSORB_SCHOOL = 195, - SPELL_AURA_MOD_COOLDOWN = 196, // only 24818 Noxious Breath - SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE = 197, - SPELL_AURA_198 = 198, // old SPELL_AURA_MOD_ALL_WEAPON_SKILLS - SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT = 199, - SPELL_AURA_MOD_XP_PCT = 200, - SPELL_AURA_FLY = 201, - SPELL_AURA_IGNORE_COMBAT_RESULT = 202, - SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203, - SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204, - SPELL_AURA_MOD_SCHOOL_CRIT_DMG_TAKEN = 205, - SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED = 206, - SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED = 207, - SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED = 208, - SPELL_AURA_MOD_MOUNTED_FLIGHT_SPEED_ALWAYS = 209, - SPELL_AURA_MOD_VEHICLE_SPEED_ALWAYS = 210, - SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK = 211, - SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT = 212, - SPELL_AURA_MOD_RAGE_FROM_DAMAGE_DEALT = 213, - SPELL_AURA_214 = 214, - SPELL_AURA_ARENA_PREPARATION = 215, - SPELL_AURA_HASTE_SPELLS = 216, - SPELL_AURA_MOD_MELEE_HASTE_2 = 217, // NYI - SPELL_AURA_HASTE_RANGED = 218, - SPELL_AURA_MOD_MANA_REGEN_FROM_STAT = 219, - SPELL_AURA_MOD_RATING_FROM_STAT = 220, - SPELL_AURA_IGNORED = 221, - SPELL_AURA_222 = 222, - SPELL_AURA_RAID_PROC_FROM_CHARGE = 223, - SPELL_AURA_224 = 224, - SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE = 225, - SPELL_AURA_PERIODIC_DUMMY = 226, - SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE = 227, - SPELL_AURA_DETECT_STEALTH = 228, - SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE = 229, - SPELL_AURA_230 = 230, - SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE = 231, - SPELL_AURA_MECHANIC_DURATION_MOD = 232, - SPELL_AURA_CHANGE_MODEL_FOR_ALL_HUMANOIDS = 233, // client-side only - SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK = 234, - SPELL_AURA_MOD_DISPEL_RESIST = 235, - SPELL_AURA_CONTROL_VEHICLE = 236, - SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER = 237, - SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER = 238, - SPELL_AURA_MOD_SCALE_2 = 239, - SPELL_AURA_MOD_EXPERTISE = 240, - SPELL_AURA_FORCE_MOVE_FORWARD = 241, - SPELL_AURA_MOD_SPELL_DAMAGE_FROM_HEALING = 242, - SPELL_AURA_MOD_FACTION = 243, - SPELL_AURA_COMPREHEND_LANGUAGE = 244, - SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL = 245, - SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL_NOT_STACK = 246, - SPELL_AURA_CLONE_CASTER = 247, - SPELL_AURA_MOD_COMBAT_RESULT_CHANCE = 248, - SPELL_AURA_CONVERT_RUNE = 249, - SPELL_AURA_MOD_INCREASE_HEALTH_2 = 250, - SPELL_AURA_MOD_ENEMY_DODGE = 251, - SPELL_AURA_MOD_SPEED_SLOW_ALL = 252, - SPELL_AURA_MOD_BLOCK_CRIT_CHANCE = 253, - SPELL_AURA_MOD_DISARM_OFFHAND = 254, - SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT = 255, - SPELL_AURA_NO_REAGENT_USE = 256, - SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS = 257, - SPELL_AURA_258 = 258, - SPELL_AURA_MOD_HOT_PCT = 259, - SPELL_AURA_SCREEN_EFFECT = 260, - SPELL_AURA_PHASE = 261, - SPELL_AURA_ABILITY_IGNORE_AURASTATE = 262, - SPELL_AURA_ALLOW_ONLY_ABILITY = 263, - SPELL_AURA_264 = 264, - SPELL_AURA_265 = 265, - SPELL_AURA_266 = 266, - SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL = 267, - SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT = 268, - SPELL_AURA_MOD_IGNORE_TARGET_RESIST = 269, - SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST = 270, // Possibly need swap vs 195 aura used only in 1 spell Chaos Bolt Passive - SPELL_AURA_MOD_DAMAGE_FROM_CASTER = 271, - SPELL_AURA_IGNORE_MELEE_RESET = 272, - SPELL_AURA_X_RAY = 273, - SPELL_AURA_ABILITY_CONSUME_NO_AMMO = 274, - SPELL_AURA_MOD_IGNORE_SHAPESHIFT = 275, - SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC = 276, // NYI - SPELL_AURA_MOD_MAX_AFFECTED_TARGETS = 277, - SPELL_AURA_MOD_DISARM_RANGED = 278, - SPELL_AURA_INITIALIZE_IMAGES = 279, - SPELL_AURA_MOD_ARMOR_PENETRATION_PCT = 280, - SPELL_AURA_MOD_HONOR_GAIN_PCT = 281, - SPELL_AURA_MOD_BASE_HEALTH_PCT = 282, - SPELL_AURA_MOD_HEALING_RECEIVED = 283, // Possibly only for some spell family class spells - SPELL_AURA_LINKED = 284, - SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR = 285, - SPELL_AURA_ABILITY_PERIODIC_CRIT = 286, - SPELL_AURA_DEFLECT_SPELLS = 287, - SPELL_AURA_IGNORE_HIT_DIRECTION = 288, - SPELL_AURA_PREVENT_DURABILITY_LOSS = 289, - SPELL_AURA_MOD_CRIT_PCT = 290, - SPELL_AURA_MOD_XP_QUEST_PCT = 291, - SPELL_AURA_OPEN_STABLE = 292, - SPELL_AURA_OVERRIDE_SPELLS = 293, - SPELL_AURA_PREVENT_REGENERATE_POWER = 294, - SPELL_AURA_295 = 295, - SPELL_AURA_SET_VEHICLE_ID = 296, - SPELL_AURA_BLOCK_SPELL_FAMILY = 297, - SPELL_AURA_STRANGULATE = 298, - SPELL_AURA_299 = 299, - SPELL_AURA_SHARE_DAMAGE_PCT = 300, - SPELL_AURA_SCHOOL_HEAL_ABSORB = 301, - SPELL_AURA_302 = 302, - SPELL_AURA_MOD_DAMAGE_DONE_VERSUS_AURASTATE = 303, - SPELL_AURA_MOD_FAKE_INEBRIATE = 304, - SPELL_AURA_MOD_MINIMUM_SPEED = 305, - SPELL_AURA_306 = 306, - SPELL_AURA_HEAL_ABSORB_TEST = 307, - SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER = 308, - SPELL_AURA_309 = 309, - SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE = 310, - SPELL_AURA_311 = 311, - SPELL_AURA_312 = 312, - SPELL_AURA_313 = 313, - SPELL_AURA_PREVENT_RESURRECTION = 314, - SPELL_AURA_UNDERWATER_WALKING = 315, - SPELL_AURA_PERIODIC_HASTE = 316, - TOTAL_AURAS = 317 + SPELL_AURA_NONE = 0, + SPELL_AURA_BIND_SIGHT = 1, + SPELL_AURA_MOD_POSSESS = 2, + SPELL_AURA_PERIODIC_DAMAGE = 3, + SPELL_AURA_DUMMY = 4, + SPELL_AURA_MOD_CONFUSE = 5, + SPELL_AURA_MOD_CHARM = 6, + SPELL_AURA_MOD_FEAR = 7, + SPELL_AURA_PERIODIC_HEAL = 8, + SPELL_AURA_MOD_ATTACKSPEED = 9, + SPELL_AURA_MOD_THREAT = 10, + SPELL_AURA_MOD_TAUNT = 11, + SPELL_AURA_MOD_STUN = 12, + SPELL_AURA_MOD_DAMAGE_DONE = 13, + SPELL_AURA_MOD_DAMAGE_TAKEN = 14, + SPELL_AURA_DAMAGE_SHIELD = 15, + SPELL_AURA_MOD_STEALTH = 16, + SPELL_AURA_MOD_STEALTH_DETECT = 17, + SPELL_AURA_MOD_INVISIBILITY = 18, + SPELL_AURA_MOD_INVISIBILITY_DETECT = 19, + SPELL_AURA_OBS_MOD_HEALTH = 20, // unofficial + SPELL_AURA_OBS_MOD_POWER = 21, // unofficial + SPELL_AURA_MOD_RESISTANCE = 22, + SPELL_AURA_PERIODIC_TRIGGER_SPELL = 23, + SPELL_AURA_PERIODIC_ENERGIZE = 24, + SPELL_AURA_MOD_PACIFY = 25, + SPELL_AURA_MOD_ROOT = 26, + SPELL_AURA_MOD_SILENCE = 27, + SPELL_AURA_REFLECT_SPELLS = 28, + SPELL_AURA_MOD_STAT = 29, + SPELL_AURA_MOD_SKILL = 30, + SPELL_AURA_MOD_INCREASE_SPEED = 31, + SPELL_AURA_MOD_INCREASE_MOUNTED_SPEED = 32, + SPELL_AURA_MOD_DECREASE_SPEED = 33, + SPELL_AURA_MOD_INCREASE_HEALTH = 34, + SPELL_AURA_MOD_INCREASE_ENERGY = 35, + SPELL_AURA_MOD_SHAPESHIFT = 36, + SPELL_AURA_EFFECT_IMMUNITY = 37, + SPELL_AURA_STATE_IMMUNITY = 38, + SPELL_AURA_SCHOOL_IMMUNITY = 39, + SPELL_AURA_DAMAGE_IMMUNITY = 40, + SPELL_AURA_DISPEL_IMMUNITY = 41, + SPELL_AURA_PROC_TRIGGER_SPELL = 42, + SPELL_AURA_PROC_TRIGGER_DAMAGE = 43, + SPELL_AURA_TRACK_CREATURES = 44, + SPELL_AURA_TRACK_RESOURCES = 45, + SPELL_AURA_46 = 46, // Ignore all Gear test spells + SPELL_AURA_MOD_PARRY_PERCENT = 47, + SPELL_AURA_PERIODIC_TRIGGER_SPELL_FROM_CLIENT = 48, // One periodic spell + SPELL_AURA_MOD_DODGE_PERCENT = 49, + SPELL_AURA_MOD_CRITICAL_HEALING_AMOUNT = 50, + SPELL_AURA_MOD_BLOCK_PERCENT = 51, + SPELL_AURA_MOD_WEAPON_CRIT_PERCENT = 52, + SPELL_AURA_PERIODIC_LEECH = 53, + SPELL_AURA_MOD_HIT_CHANCE = 54, + SPELL_AURA_MOD_SPELL_HIT_CHANCE = 55, + SPELL_AURA_TRANSFORM = 56, + SPELL_AURA_MOD_SPELL_CRIT_CHANCE = 57, + SPELL_AURA_MOD_INCREASE_SWIM_SPEED = 58, + SPELL_AURA_MOD_DAMAGE_DONE_CREATURE = 59, + SPELL_AURA_MOD_PACIFY_SILENCE = 60, + SPELL_AURA_MOD_SCALE = 61, + SPELL_AURA_PERIODIC_HEALTH_FUNNEL = 62, + SPELL_AURA_63 = 63, // old SPELL_AURA_PERIODIC_MANA_FUNNEL + SPELL_AURA_PERIODIC_MANA_LEECH = 64, + SPELL_AURA_MOD_CASTING_SPEED_NOT_STACK = 65, + SPELL_AURA_FEIGN_DEATH = 66, + SPELL_AURA_MOD_DISARM = 67, + SPELL_AURA_MOD_STALKED = 68, + SPELL_AURA_SCHOOL_ABSORB = 69, + SPELL_AURA_EXTRA_ATTACKS = 70, + SPELL_AURA_MOD_SPELL_CRIT_CHANCE_SCHOOL = 71, + SPELL_AURA_MOD_POWER_COST_SCHOOL_PCT = 72, + SPELL_AURA_MOD_POWER_COST_SCHOOL = 73, + SPELL_AURA_REFLECT_SPELLS_SCHOOL = 74, + SPELL_AURA_MOD_LANGUAGE = 75, + SPELL_AURA_FAR_SIGHT = 76, + SPELL_AURA_MECHANIC_IMMUNITY = 77, + SPELL_AURA_MOUNTED = 78, + SPELL_AURA_MOD_DAMAGE_PERCENT_DONE = 79, + SPELL_AURA_MOD_PERCENT_STAT = 80, + SPELL_AURA_SPLIT_DAMAGE_PCT = 81, + SPELL_AURA_WATER_BREATHING = 82, + SPELL_AURA_MOD_BASE_RESISTANCE = 83, + SPELL_AURA_MOD_REGEN = 84, + SPELL_AURA_MOD_POWER_REGEN = 85, + SPELL_AURA_CHANNEL_DEATH_ITEM = 86, + SPELL_AURA_MOD_DAMAGE_PERCENT_TAKEN = 87, + SPELL_AURA_MOD_HEALTH_REGEN_PERCENT = 88, + SPELL_AURA_PERIODIC_DAMAGE_PERCENT = 89, + SPELL_AURA_90 = 90, // old SPELL_AURA_MOD_RESIST_CHANCE + SPELL_AURA_MOD_DETECT_RANGE = 91, + SPELL_AURA_PREVENTS_FLEEING = 92, + SPELL_AURA_MOD_UNATTACKABLE = 93, + SPELL_AURA_INTERRUPT_REGEN = 94, + SPELL_AURA_GHOST = 95, + SPELL_AURA_SPELL_MAGNET = 96, + SPELL_AURA_MANA_SHIELD = 97, + SPELL_AURA_MOD_SKILL_TALENT = 98, + SPELL_AURA_MOD_ATTACK_POWER = 99, + SPELL_AURA_AURAS_VISIBLE = 100, + SPELL_AURA_MOD_RESISTANCE_PCT = 101, + SPELL_AURA_MOD_MELEE_ATTACK_POWER_VERSUS = 102, + SPELL_AURA_MOD_TOTAL_THREAT = 103, + SPELL_AURA_WATER_WALK = 104, + SPELL_AURA_FEATHER_FALL = 105, + SPELL_AURA_HOVER = 106, + SPELL_AURA_ADD_FLAT_MODIFIER = 107, + SPELL_AURA_ADD_PCT_MODIFIER = 108, + SPELL_AURA_ADD_TARGET_TRIGGER = 109, + SPELL_AURA_MOD_POWER_REGEN_PERCENT = 110, + SPELL_AURA_ADD_CASTER_HIT_TRIGGER = 111, + SPELL_AURA_OVERRIDE_CLASS_SCRIPTS = 112, + SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN = 113, + SPELL_AURA_MOD_RANGED_DAMAGE_TAKEN_PCT = 114, + SPELL_AURA_MOD_HEALING = 115, + SPELL_AURA_MOD_REGEN_DURING_COMBAT = 116, + SPELL_AURA_MOD_MECHANIC_RESISTANCE = 117, + SPELL_AURA_MOD_HEALING_PCT = 118, + SPELL_AURA_119 = 119, // old SPELL_AURA_SHARE_PET_TRACKING + SPELL_AURA_UNTRACKABLE = 120, + SPELL_AURA_EMPATHY = 121, + SPELL_AURA_MOD_OFFHAND_DAMAGE_PCT = 122, + SPELL_AURA_MOD_TARGET_RESISTANCE = 123, + SPELL_AURA_MOD_RANGED_ATTACK_POWER = 124, + SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN = 125, + SPELL_AURA_MOD_MELEE_DAMAGE_TAKEN_PCT = 126, + SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS = 127, + SPELL_AURA_MOD_POSSESS_PET = 128, + SPELL_AURA_MOD_SPEED_ALWAYS = 129, + SPELL_AURA_MOD_MOUNTED_SPEED_ALWAYS = 130, + SPELL_AURA_MOD_RANGED_ATTACK_POWER_VERSUS = 131, + SPELL_AURA_MOD_INCREASE_ENERGY_PERCENT = 132, + SPELL_AURA_MOD_INCREASE_HEALTH_PERCENT = 133, + SPELL_AURA_MOD_MANA_REGEN_INTERRUPT = 134, + SPELL_AURA_MOD_HEALING_DONE = 135, + SPELL_AURA_MOD_HEALING_DONE_PERCENT = 136, + SPELL_AURA_MOD_TOTAL_STAT_PERCENTAGE = 137, + SPELL_AURA_MOD_MELEE_HASTE = 138, + SPELL_AURA_FORCE_REACTION = 139, + SPELL_AURA_MOD_RANGED_HASTE = 140, + SPELL_AURA_MOD_RANGED_AMMO_HASTE = 141, + SPELL_AURA_MOD_BASE_RESISTANCE_PCT = 142, + SPELL_AURA_MOD_RESISTANCE_EXCLUSIVE = 143, + SPELL_AURA_SAFE_FALL = 144, + SPELL_AURA_MOD_PET_TALENT_POINTS = 145, + SPELL_AURA_ALLOW_TAME_PET_TYPE = 146, + SPELL_AURA_MECHANIC_IMMUNITY_MASK = 147, + SPELL_AURA_RETAIN_COMBO_POINTS = 148, + SPELL_AURA_REDUCE_PUSHBACK = 149, // Reduce Pushback + SPELL_AURA_MOD_SHIELD_BLOCKVALUE_PCT = 150, + SPELL_AURA_TRACK_STEALTHED = 151, // Track Stealthed + SPELL_AURA_MOD_DETECTED_RANGE = 152, // Mod Detected Range + SPELL_AURA_SPLIT_DAMAGE_FLAT = 153, // Split Damage Flat + SPELL_AURA_MOD_STEALTH_LEVEL = 154, // Stealth Level Modifier + SPELL_AURA_MOD_WATER_BREATHING = 155, // Mod Water Breathing + SPELL_AURA_MOD_REPUTATION_GAIN = 156, // Mod Reputation Gain + SPELL_AURA_PET_DAMAGE_MULTI = 157, // Mod Pet Damage + SPELL_AURA_MOD_SHIELD_BLOCKVALUE = 158, + SPELL_AURA_NO_PVP_CREDIT = 159, + SPELL_AURA_MOD_AOE_AVOIDANCE = 160, + SPELL_AURA_MOD_HEALTH_REGEN_IN_COMBAT = 161, + SPELL_AURA_POWER_BURN = 162, + SPELL_AURA_MOD_CRIT_DAMAGE_BONUS = 163, + SPELL_AURA_164 = 164, + SPELL_AURA_MELEE_ATTACK_POWER_ATTACKER_BONUS = 165, + SPELL_AURA_MOD_ATTACK_POWER_PCT = 166, + SPELL_AURA_MOD_RANGED_ATTACK_POWER_PCT = 167, + SPELL_AURA_MOD_DAMAGE_DONE_VERSUS = 168, + SPELL_AURA_MOD_CRIT_PERCENT_VERSUS = 169, + SPELL_AURA_DETECT_AMORE = 170, + SPELL_AURA_MOD_SPEED_NOT_STACK = 171, + SPELL_AURA_MOD_MOUNTED_SPEED_NOT_STACK = 172, + SPELL_AURA_173 = 173, // old SPELL_AURA_ALLOW_CHAMPION_SPELLS + SPELL_AURA_MOD_SPELL_DAMAGE_OF_STAT_PERCENT = 174, // by defeult intelect, dependent from SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT + SPELL_AURA_MOD_SPELL_HEALING_OF_STAT_PERCENT = 175, + SPELL_AURA_SPIRIT_OF_REDEMPTION = 176, + SPELL_AURA_AOE_CHARM = 177, + SPELL_AURA_MOD_DEBUFF_RESISTANCE = 178, + SPELL_AURA_MOD_ATTACKER_SPELL_CRIT_CHANCE = 179, + SPELL_AURA_MOD_FLAT_SPELL_DAMAGE_VERSUS = 180, + SPELL_AURA_181 = 181, // old SPELL_AURA_MOD_FLAT_SPELL_CRIT_DAMAGE_VERSUS - possible flat spell crit damage versus + SPELL_AURA_MOD_RESISTANCE_OF_STAT_PERCENT = 182, + SPELL_AURA_MOD_CRITICAL_THREAT = 183, + SPELL_AURA_MOD_ATTACKER_MELEE_HIT_CHANCE = 184, + SPELL_AURA_MOD_ATTACKER_RANGED_HIT_CHANCE = 185, + SPELL_AURA_MOD_ATTACKER_SPELL_HIT_CHANCE = 186, + SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_CHANCE = 187, + SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_CHANCE = 188, + SPELL_AURA_MOD_RATING = 189, + SPELL_AURA_MOD_FACTION_REPUTATION_GAIN = 190, + SPELL_AURA_USE_NORMAL_MOVEMENT_SPEED = 191, + SPELL_AURA_MOD_MELEE_RANGED_HASTE = 192, + SPELL_AURA_MELEE_SLOW = 193, + SPELL_AURA_MOD_TARGET_ABSORB_SCHOOL = 194, + SPELL_AURA_MOD_TARGET_ABILITY_ABSORB_SCHOOL = 195, + SPELL_AURA_MOD_COOLDOWN = 196, // only 24818 Noxious Breath + SPELL_AURA_MOD_ATTACKER_SPELL_AND_WEAPON_CRIT_CHANCE = 197, + SPELL_AURA_198 = 198, // old SPELL_AURA_MOD_ALL_WEAPON_SKILLS + SPELL_AURA_MOD_INCREASES_SPELL_PCT_TO_HIT = 199, + SPELL_AURA_MOD_XP_PCT = 200, + SPELL_AURA_FLY = 201, + SPELL_AURA_IGNORE_COMBAT_RESULT = 202, + SPELL_AURA_MOD_ATTACKER_MELEE_CRIT_DAMAGE = 203, + SPELL_AURA_MOD_ATTACKER_RANGED_CRIT_DAMAGE = 204, + SPELL_AURA_MOD_SCHOOL_CRIT_DMG_TAKEN = 205, + SPELL_AURA_MOD_INCREASE_VEHICLE_FLIGHT_SPEED = 206, + SPELL_AURA_MOD_INCREASE_MOUNTED_FLIGHT_SPEED = 207, + SPELL_AURA_MOD_INCREASE_FLIGHT_SPEED = 208, + SPELL_AURA_MOD_MOUNTED_FLIGHT_SPEED_ALWAYS = 209, + SPELL_AURA_MOD_VEHICLE_SPEED_ALWAYS = 210, + SPELL_AURA_MOD_FLIGHT_SPEED_NOT_STACK = 211, + SPELL_AURA_MOD_RANGED_ATTACK_POWER_OF_STAT_PERCENT = 212, + SPELL_AURA_MOD_RAGE_FROM_DAMAGE_DEALT = 213, + SPELL_AURA_214 = 214, + SPELL_AURA_ARENA_PREPARATION = 215, + SPELL_AURA_HASTE_SPELLS = 216, + SPELL_AURA_MOD_MELEE_HASTE_2 = 217, // NYI + SPELL_AURA_HASTE_RANGED = 218, + SPELL_AURA_MOD_MANA_REGEN_FROM_STAT = 219, + SPELL_AURA_MOD_RATING_FROM_STAT = 220, + SPELL_AURA_IGNORED = 221, + SPELL_AURA_222 = 222, + SPELL_AURA_RAID_PROC_FROM_CHARGE = 223, + SPELL_AURA_224 = 224, + SPELL_AURA_RAID_PROC_FROM_CHARGE_WITH_VALUE = 225, + SPELL_AURA_PERIODIC_DUMMY = 226, + SPELL_AURA_PERIODIC_TRIGGER_SPELL_WITH_VALUE = 227, + SPELL_AURA_DETECT_STEALTH = 228, + SPELL_AURA_MOD_AOE_DAMAGE_AVOIDANCE = 229, + SPELL_AURA_230 = 230, + SPELL_AURA_PROC_TRIGGER_SPELL_WITH_VALUE = 231, + SPELL_AURA_MECHANIC_DURATION_MOD = 232, + SPELL_AURA_CHANGE_MODEL_FOR_ALL_HUMANOIDS = 233, // client-side only + SPELL_AURA_MECHANIC_DURATION_MOD_NOT_STACK = 234, + SPELL_AURA_MOD_DISPEL_RESIST = 235, + SPELL_AURA_CONTROL_VEHICLE = 236, + SPELL_AURA_MOD_SPELL_DAMAGE_OF_ATTACK_POWER = 237, + SPELL_AURA_MOD_SPELL_HEALING_OF_ATTACK_POWER = 238, + SPELL_AURA_MOD_SCALE_2 = 239, + SPELL_AURA_MOD_EXPERTISE = 240, + SPELL_AURA_FORCE_MOVE_FORWARD = 241, + SPELL_AURA_MOD_SPELL_DAMAGE_FROM_HEALING = 242, + SPELL_AURA_MOD_FACTION = 243, + SPELL_AURA_COMPREHEND_LANGUAGE = 244, + SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL = 245, + SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL_NOT_STACK = 246, + SPELL_AURA_CLONE_CASTER = 247, + SPELL_AURA_MOD_COMBAT_RESULT_CHANCE = 248, + SPELL_AURA_CONVERT_RUNE = 249, + SPELL_AURA_MOD_INCREASE_HEALTH_2 = 250, + SPELL_AURA_MOD_ENEMY_DODGE = 251, + SPELL_AURA_MOD_SPEED_SLOW_ALL = 252, + SPELL_AURA_MOD_BLOCK_CRIT_CHANCE = 253, + SPELL_AURA_MOD_DISARM_OFFHAND = 254, + SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT = 255, + SPELL_AURA_NO_REAGENT_USE = 256, + SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS = 257, + SPELL_AURA_258 = 258, + SPELL_AURA_MOD_HOT_PCT = 259, + SPELL_AURA_SCREEN_EFFECT = 260, + SPELL_AURA_PHASE = 261, + SPELL_AURA_ABILITY_IGNORE_AURASTATE = 262, + SPELL_AURA_ALLOW_ONLY_ABILITY = 263, + SPELL_AURA_264 = 264, + SPELL_AURA_265 = 265, + SPELL_AURA_266 = 266, + SPELL_AURA_MOD_IMMUNE_AURA_APPLY_SCHOOL = 267, + SPELL_AURA_MOD_ATTACK_POWER_OF_STAT_PERCENT = 268, + SPELL_AURA_MOD_IGNORE_TARGET_RESIST = 269, + SPELL_AURA_MOD_ABILITY_IGNORE_TARGET_RESIST = 270, // Possibly need swap vs 195 aura used only in 1 spell Chaos Bolt Passive + SPELL_AURA_MOD_DAMAGE_FROM_CASTER = 271, + SPELL_AURA_IGNORE_MELEE_RESET = 272, + SPELL_AURA_X_RAY = 273, + SPELL_AURA_ABILITY_CONSUME_NO_AMMO = 274, + SPELL_AURA_MOD_IGNORE_SHAPESHIFT = 275, + SPELL_AURA_MOD_DAMAGE_DONE_FOR_MECHANIC = 276, // NYI + SPELL_AURA_MOD_MAX_AFFECTED_TARGETS = 277, + SPELL_AURA_MOD_DISARM_RANGED = 278, + SPELL_AURA_INITIALIZE_IMAGES = 279, + SPELL_AURA_MOD_ARMOR_PENETRATION_PCT = 280, + SPELL_AURA_MOD_HONOR_GAIN_PCT = 281, + SPELL_AURA_MOD_BASE_HEALTH_PCT = 282, + SPELL_AURA_MOD_HEALING_RECEIVED = 283, // Possibly only for some spell family class spells + SPELL_AURA_LINKED = 284, + SPELL_AURA_MOD_ATTACK_POWER_OF_ARMOR = 285, + SPELL_AURA_ABILITY_PERIODIC_CRIT = 286, + SPELL_AURA_DEFLECT_SPELLS = 287, + SPELL_AURA_IGNORE_HIT_DIRECTION = 288, + SPELL_AURA_PREVENT_DURABILITY_LOSS = 289, + SPELL_AURA_MOD_CRIT_PCT = 290, + SPELL_AURA_MOD_XP_QUEST_PCT = 291, + SPELL_AURA_OPEN_STABLE = 292, + SPELL_AURA_OVERRIDE_SPELLS = 293, + SPELL_AURA_PREVENT_REGENERATE_POWER = 294, + SPELL_AURA_295 = 295, + SPELL_AURA_SET_VEHICLE_ID = 296, + SPELL_AURA_BLOCK_SPELL_FAMILY = 297, + SPELL_AURA_STRANGULATE = 298, + SPELL_AURA_299 = 299, + SPELL_AURA_SHARE_DAMAGE_PCT = 300, + SPELL_AURA_SCHOOL_HEAL_ABSORB = 301, + SPELL_AURA_302 = 302, + SPELL_AURA_MOD_DAMAGE_DONE_VERSUS_AURASTATE = 303, + SPELL_AURA_MOD_FAKE_INEBRIATE = 304, + SPELL_AURA_MOD_MINIMUM_SPEED = 305, + SPELL_AURA_306 = 306, + SPELL_AURA_HEAL_ABSORB_TEST = 307, + SPELL_AURA_MOD_CRIT_CHANCE_FOR_CASTER = 308, + SPELL_AURA_309 = 309, + SPELL_AURA_MOD_CREATURE_AOE_DAMAGE_AVOIDANCE = 310, + SPELL_AURA_311 = 311, + SPELL_AURA_312 = 312, + SPELL_AURA_313 = 313, + SPELL_AURA_PREVENT_RESURRECTION = 314, + SPELL_AURA_UNDERWATER_WALKING = 315, + SPELL_AURA_PERIODIC_HASTE = 316, + TOTAL_AURAS = 317 }; enum AuraObjectType @@ -388,11 +388,11 @@ enum AuraObjectType enum AuraRemoveMode { - AURA_REMOVE_NONE = 0, - AURA_REMOVE_BY_DEFAULT = 1, // scripted remove, remove by stack with aura with different ids and sc aura remove + AURA_REMOVE_NONE = 0, + AURA_REMOVE_BY_DEFAULT = 1, // scripted remove, remove by stack with aura with different ids and sc aura remove AURA_REMOVE_BY_CANCEL, - AURA_REMOVE_BY_ENEMY_SPELL, // dispel and absorb aura destroy - AURA_REMOVE_BY_EXPIRE, // aura duration has ended + AURA_REMOVE_BY_ENEMY_SPELL, // dispel and absorb aura destroy + AURA_REMOVE_BY_EXPIRE, // aura duration has ended AURA_REMOVE_BY_DEATH }; diff --git a/src/server/game/Tickets/TicketMgr.h b/src/server/game/Tickets/TicketMgr.h index c5538489a..6d6957e74 100644 --- a/src/server/game/Tickets/TicketMgr.h +++ b/src/server/game/Tickets/TicketMgr.h @@ -27,8 +27,8 @@ class ChatHandler; // from blizzard lua enum GMTicketSystemStatus { - GMTICKET_QUEUE_STATUS_DISABLED = 0, - GMTICKET_QUEUE_STATUS_ENABLED = 1 + GMTICKET_QUEUE_STATUS_DISABLED = 0, + GMTICKET_QUEUE_STATUS_ENABLED = 1 }; enum GMTicketStatus @@ -48,9 +48,9 @@ enum GMTicketResponse }; // from Blizzard LUA: -// GMTICKET_ASSIGNEDTOGM_STATUS_NOT_ASSIGNED = 0; -- ticket is not currently assigned to a gm -// GMTICKET_ASSIGNEDTOGM_STATUS_ASSIGNED = 1; -- ticket is assigned to a normal gm -// GMTICKET_ASSIGNEDTOGM_STATUS_ESCALATED = 2; -- ticket is in the escalation queue +// GMTICKET_ASSIGNEDTOGM_STATUS_NOT_ASSIGNED = 0; -- ticket is not currently assigned to a gm +// GMTICKET_ASSIGNEDTOGM_STATUS_ASSIGNED = 1; -- ticket is assigned to a normal gm +// GMTICKET_ASSIGNEDTOGM_STATUS_ESCALATED = 2; -- ticket is in the escalation queue // 3 is a custom value and should never actually be sent enum GMTicketEscalationStatus { @@ -63,25 +63,25 @@ enum GMTicketEscalationStatus // from blizzard lua enum GMTicketOpenedByGMStatus { - GMTICKET_OPENEDBYGM_STATUS_NOT_OPENED = 0, // ticket has never been opened by a gm - GMTICKET_OPENEDBYGM_STATUS_OPENED = 1 // ticket has been opened by a gm + GMTICKET_OPENEDBYGM_STATUS_NOT_OPENED = 0, // ticket has never been opened by a gm + GMTICKET_OPENEDBYGM_STATUS_OPENED = 1 // ticket has been opened by a gm }; enum LagReportType { - LAG_REPORT_TYPE_LOOT = 1, - LAG_REPORT_TYPE_AUCTION_HOUSE = 2, - LAG_REPORT_TYPE_MAIL = 3, - LAG_REPORT_TYPE_CHAT = 4, - LAG_REPORT_TYPE_MOVEMENT = 5, - LAG_REPORT_TYPE_SPELL = 6 + LAG_REPORT_TYPE_LOOT = 1, + LAG_REPORT_TYPE_AUCTION_HOUSE = 2, + LAG_REPORT_TYPE_MAIL = 3, + LAG_REPORT_TYPE_CHAT = 4, + LAG_REPORT_TYPE_MOVEMENT = 5, + LAG_REPORT_TYPE_SPELL = 6 }; enum TicketType { - TICKET_TYPE_OPEN = 0, - TICKET_TYPE_CLOSED = 1, - TICKET_TYPE_CHARACTER_DELETED = 2, + TICKET_TYPE_OPEN = 0, + TICKET_TYPE_CLOSED = 1, + TICKET_TYPE_CHARACTER_DELETED = 2, }; class GmTicket From 5cb69ef600413f26616d574902765d8797707255 Mon Sep 17 00:00:00 2001 From: Maelthyr <100411212+Maelthyrr@users.noreply.github.com> Date: Sun, 10 Jul 2022 20:19:43 +0200 Subject: [PATCH 103/119] fix(Scripts/World): Prevent Taerar to be untargetable on death (#12351) prevent unlooting and untargetable boss if kill too quickly --- src/server/scripts/World/boss_emerald_dragons.cpp | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp index b667c468d..06a315f5c 100644 --- a/src/server/scripts/World/boss_emerald_dragons.cpp +++ b/src/server/scripts/World/boss_emerald_dragons.cpp @@ -643,6 +643,12 @@ public: emerald_dragonAI::UpdateAI(diff); } + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE); + } + private: bool _banished; // used for shades activation testing uint32 _banishedTimer; // counter for banishment timeout From e66be9bb9c9b4d870a4fb3679ca1dc839276171e Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 10 Jul 2022 18:21:58 +0000 Subject: [PATCH 104/119] chore(DB): import pending files Referenced commit(s): 5cb69ef600413f26616d574902765d8797707255 --- .../rev_1656838125070106100.sql => db_world/2022_07_10_01.sql} | 1 + .../rev_1657123989788786700.sql => db_world/2022_07_10_02.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1656838125070106100.sql => db_world/2022_07_10_01.sql} (71%) rename data/sql/updates/{pending_db_world/rev_1657123989788786700.sql => db_world/2022_07_10_02.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1656838125070106100.sql b/data/sql/updates/db_world/2022_07_10_01.sql similarity index 71% rename from data/sql/updates/pending_db_world/rev_1656838125070106100.sql rename to data/sql/updates/db_world/2022_07_10_01.sql index 07ad450a2..4b3e5fd88 100644 --- a/data/sql/updates/pending_db_world/rev_1656838125070106100.sql +++ b/data/sql/updates/db_world/2022_07_10_01.sql @@ -1,2 +1,3 @@ +-- DB update 2022_07_10_00 -> 2022_07_10_01 -- UPDATE `smart_scripts` SET `event_flags`=`event_flags`|512 WHERE `entryorguid`=3040300 AND `source_type`=9; diff --git a/data/sql/updates/pending_db_world/rev_1657123989788786700.sql b/data/sql/updates/db_world/2022_07_10_02.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1657123989788786700.sql rename to data/sql/updates/db_world/2022_07_10_02.sql index cb7bb1869..2f6152d92 100644 --- a/data/sql/updates/pending_db_world/rev_1657123989788786700.sql +++ b/data/sql/updates/db_world/2022_07_10_02.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_10_01 -> 2022_07_10_02 -- /* Defias Pillager - GUID 90358 */ From 4d85488e60f3b1b00b410e0389735218b8d33d2f Mon Sep 17 00:00:00 2001 From: ZhengPeiRu21 <98835050+ZhengPeiRu21@users.noreply.github.com> Date: Sun, 10 Jul 2022 12:22:27 -0600 Subject: [PATCH 105/119] fix(DB/Pathing): Missing Elwynn Forest Pathing (#12313) --- .../rev_1657125381696313300.sql | 1739 +++++++++++++++++ 1 file changed, 1739 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1657125381696313300.sql diff --git a/data/sql/updates/pending_db_world/rev_1657125381696313300.sql b/data/sql/updates/pending_db_world/rev_1657125381696313300.sql new file mode 100644 index 000000000..5502ef3df --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657125381696313300.sql @@ -0,0 +1,1739 @@ +-- +/* Defias Cutpurse - GUID 79887 */ + + +SET @NPC := 79887; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9184.27, `position_y` = 82.9969, `position_z` = 77.8678, `orientation` = 0.0 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9146.52, 63.7888, 77.4371, 100.0, 3000), +(@PATH, 2, -9181.75, 81.5944, 77.8001, 100.0, 5000); + + +/* Kobold Worker - GUID 80020 */ + + +SET @NPC := 80020; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -8768.63, `position_y` = -113.135, `position_z` = 83.6789, `orientation` = 0.0699 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8768.63, -113.135, 83.6789, 100.0, 10000), +(@PATH, 2, -8779.78, -112.687, 82.8591, 100.0, 10000); + + +/* Kobold Tunneler - GUID 80586 */ + + +SET @NPC := 80586; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9821.12, `position_y` = 181.442, `position_z` = 22.8145, `orientation` = 3.23508 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9821.12, 181.442, 22.8145, 100.0, 0), +(@PATH, 2, -9812.57, 181.622, 22.4308, 100.0, 0), +(@PATH, 3, -9806.84, 180.282, 22.516, 100.0, 0), +(@PATH, 4, -9802.57, 176.404, 22.9158, 100.0, 0), +(@PATH, 5, -9800.23, 171.249, 23.5777, 100.0, 0), +(@PATH, 6, -9798.93, 164.737, 24.5829, 100.0, 0), +(@PATH, 7, -9798.08, 159.897, 25.5307, 100.0, 0), +(@PATH, 8, -9796.68, 154.262, 24.9964, 100.0, 0), +(@PATH, 9, -9793.59, 150.493, 24.3035, 100.0, 0), +(@PATH, 10, -9789.53, 149.032, 24.8311, 100.0, 0), +(@PATH, 11, -9795.06, 152.658, 24.6638, 100.0, 0), +(@PATH, 12, -9797.59, 159.216, 25.4769, 100.0, 0), +(@PATH, 13, -9798.22, 163.957, 24.8396, 100.0, 0), +(@PATH, 14, -9799.43, 171.421, 23.5447, 100.0, 0), +(@PATH, 15, -9803.26, 178.853, 22.5306, 100.0, 0), +(@PATH, 16, -9809.33, 181.893, 22.5443, 100.0, 0), +(@PATH, 17, -9814.82, 181.66, 22.7054, 100.0, 0); + + +/* Kobold Tunneler - GUID 80599 */ + + +SET @NPC := 80599; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9893.88, `position_y` = 206.749, `position_z` = 14.1337, `orientation` = 2.27603 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9893.88, 206.749, 14.1337, 100.0, 0), +(@PATH, 2, -9886.05, 197.556, 15.0531, 100.0, 0), +(@PATH, 3, -9877.8, 189.04, 17.0695, 100.0, 0), +(@PATH, 4, -9868.45, 181.622, 18.4445, 100.0, 0), +(@PATH, 5, -9861.16, 179.321, 19.7976, 100.0, 0), +(@PATH, 6, -9849.52, 181.456, 20.9188, 100.0, 0), +(@PATH, 7, -9838.6, 191.236, 23.0431, 100.0, 0), +(@PATH, 8, -9843.56, 185.032, 22.0514, 100.0, 0), +(@PATH, 9, -9853.73, 179.872, 20.7946, 100.0, 0), +(@PATH, 10, -9875.41, 186.683, 17.5265, 100.0, 0), +(@PATH, 11, -9881.08, 192.256, 16.2368, 100.0, 0), +(@PATH, 12, -9891.66, 204.146, 14.1922, 100.0, 0), +(@PATH, 13, -9899.03, 213.692, 14.6043, 100.0, 0), +(@PATH, 14, -9909.15, 219.366, 16.8257, 100.0, 0), +(@PATH, 15, -9936.3, 225.593, 22.256, 100.0, 0), +(@PATH, 16, -9916.98, 221.63, 18.2814, 100.0, 0); + + +/* Kobold Tunneler - GUID 80611 */ + + +SET @NPC := 80611; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9827.58, `position_y` = 124.721, `position_z` = 4.29443, `orientation` = 6.19969 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9827.58, 124.721, 4.29443, 100.0, 0), +(@PATH, 2, -9834.6, 127.581, 5.92036, 100.0, 0), +(@PATH, 3, -9840.32, 129.915, 5.08228, 100.0, 0), +(@PATH, 4, -9846.87, 133.711, 5.48071, 100.0, 0), +(@PATH, 5, -9850.69, 139.49, 6.82782, 100.0, 0), +(@PATH, 6, -9850.97, 145.17, 7.63263, 100.0, 0), +(@PATH, 7, -9848.77, 152.659, 6.51507, 100.0, 0), +(@PATH, 8, -9849.92, 158.612, 6.20037, 100.0, 0), +(@PATH, 9, -9855.5, 161.287, 6.6418, 100.0, 0), +(@PATH, 10, -9848.05, 158.397, 6.13954, 100.0, 0), +(@PATH, 11, -9849.1, 151.357, 6.85399, 100.0, 0), +(@PATH, 12, -9850.62, 146.464, 7.71677, 100.0, 0), +(@PATH, 13, -9851.63, 140.664, 7.05198, 100.0, 0), +(@PATH, 14, -9849.24, 134.669, 5.87276, 100.0, 0), +(@PATH, 15, -9843.18, 130.174, 4.9141, 100.0, 0), +(@PATH, 16, -9838.07, 128.054, 5.23315, 100.0, 0), +(@PATH, 17, -9833.38, 127.057, 5.80306, 100.0, 0), +(@PATH, 18, -9827.44, 124.681, 4.25654, 100.0, 0), +(@PATH, 19, -9820.89, 123.051, 4.11039, 100.0, 0); + + +/* Kobold Tunneler - GUID 80626 */ + + +SET @NPC := 80626; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9772.54, `position_y` = 97.5499, `position_z` = 6.61966, `orientation` = 6.27415 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9772.54, 97.5499, 6.61966, 100.0, 0), +(@PATH, 2, -9763.0, 91.0127, 11.7574, 100.0, 0), +(@PATH, 3, -9755.14, 89.8728, 12.9887, 100.0, 0), +(@PATH, 4, -9751.18, 89.2988, 13.2646, 100.0, 0), +(@PATH, 5, -9745.66, 93.2163, 12.7301, 100.0, 0), +(@PATH, 6, -9748.11, 104.038, 13.1711, 100.0, 0), +(@PATH, 7, -9752.51, 115.017, 14.8096, 100.0, 0), +(@PATH, 8, -9752.39, 122.545, 16.3799, 100.0, 0), +(@PATH, 9, -9749.37, 136.042, 19.438, 100.0, 0), +(@PATH, 10, -9750.93, 128.521, 17.5928, 100.0, 0), +(@PATH, 11, -9752.82, 120.954, 16.0507, 100.0, 0), +(@PATH, 12, -9750.63, 109.701, 14.6651, 100.0, 0), +(@PATH, 13, -9745.46, 99.0967, 12.6827, 100.0, 0), +(@PATH, 14, -9744.54, 96.4222, 12.5925, 100.0, 0); + + +/* Kobold Tunneler - GUID 80631 */ + + +SET @NPC := 80631; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9750.79, `position_y` = 109.939, `position_z` = 25.6415, `orientation` = 3.41538 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9750.79, 109.939, 25.6415, 100.0, 0), +(@PATH, 2, -9759.34, 107.582, 26.4571, 100.0, 0), +(@PATH, 3, -9767.97, 104.127, 26.9001, 100.0, 0), +(@PATH, 4, -9775.45, 101.363, 27.9247, 100.0, 0), +(@PATH, 5, -9781.46, 99.5414, 28.9681, 100.0, 0), +(@PATH, 6, -9786.07, 97.1477, 28.3451, 100.0, 0), +(@PATH, 7, -9788.82, 95.1768, 28.8618, 100.0, 0), +(@PATH, 8, -9793.46, 91.8429, 28.5285, 100.0, 0), +(@PATH, 9, -9801.82, 88.4649, 28.301, 100.0, 0), +(@PATH, 10, -9792.09, 92.9807, 28.5154, 100.0, 0), +(@PATH, 11, -9787.36, 95.7524, 28.753, 100.0, 0), +(@PATH, 12, -9784.84, 97.2292, 28.2636, 100.0, 0), +(@PATH, 13, -9780.62, 99.6409, 28.8109, 100.0, 0), +(@PATH, 14, -9771.46, 102.346, 27.3412, 100.0, 0), +(@PATH, 15, -9763.96, 105.843, 26.6897, 100.0, 0), +(@PATH, 16, -9758.97, 107.443, 26.3248, 100.0, 0), +(@PATH, 17, -9751.48, 109.698, 25.7138, 100.0, 0), +(@PATH, 18, -9747.04, 110.992, 25.6706, 100.0, 0), +(@PATH, 19, -9737.6, 112.874, 24.3529, 100.0, 0), +(@PATH, 20, -9746.9, 110.972, 25.6571, 100.0, 0); + + +/* Kobold Miner - GUID 80634 */ + + +SET @NPC := 80634; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9761.75, `position_y` = 106.757, `position_z` = 26.4413, `orientation` = 3.19397 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9761.75, 106.757, 26.4413, 100.0, 0), +(@PATH, 2, -9765.44, 105.214, 26.7822, 100.0, 0), +(@PATH, 3, -9776.47, 100.503, 28.0404, 100.0, 0), +(@PATH, 4, -9787.27, 95.5281, 28.778, 100.0, 0), +(@PATH, 5, -9797.38, 89.0863, 28.5202, 100.0, 0), +(@PATH, 6, -9794.07, 91.3368, 28.5611, 100.0, 0), +(@PATH, 7, -9783.73, 97.2472, 28.3922, 100.0, 0), +(@PATH, 8, -9772.83, 102.085, 27.6762, 100.0, 0), +(@PATH, 9, -9765.5, 105.191, 26.8265, 100.0, 0), +(@PATH, 10, -9750.19, 110.003, 25.6018, 100.0, 0), +(@PATH, 11, -9740.37, 112.974, 24.8141, 100.0, 0), +(@PATH, 12, -9744.17, 111.802, 25.4323, 100.0, 0), +(@PATH, 13, -9759.54, 107.377, 26.4451, 100.0, 0); + + +/* Kobold Tunneler - GUID 80638 */ + + +SET @NPC := 80638; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9752.62, `position_y` = 121.197, `position_z` = 16.0766, `orientation` = 1.30766 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9752.62, 121.197, 16.0766, 100.0, 0), +(@PATH, 2, -9750.2, 128.741, 17.4484, 100.0, 0), +(@PATH, 3, -9749.65, 133.127, 19.2605, 100.0, 0), +(@PATH, 4, -9750.91, 137.888, 19.6607, 100.0, 0), +(@PATH, 5, -9749.75, 132.71, 19.2628, 100.0, 0), +(@PATH, 6, -9750.35, 128.291, 17.35, 100.0, 0), +(@PATH, 7, -9752.74, 121.726, 16.2315, 100.0, 0), +(@PATH, 8, -9753.27, 114.92, 14.6497, 100.0, 0), +(@PATH, 9, -9751.28, 109.687, 14.6265, 100.0, 0), +(@PATH, 10, -9747.76, 100.164, 12.6553, 100.0, 0), +(@PATH, 11, -9746.15, 92.5698, 12.8579, 100.0, 0), +(@PATH, 12, -9750.25, 88.5063, 13.2823, 100.0, 0), +(@PATH, 13, -9754.73, 89.2679, 13.0468, 100.0, 0), +(@PATH, 14, -9763.45, 91.3394, 11.751, 100.0, 0), +(@PATH, 15, -9768.82, 95.4488, 9.02473, 100.0, 0), +(@PATH, 16, -9773.67, 99.6478, 5.72225, 100.0, 0), +(@PATH, 17, -9777.81, 100.878, 5.61255, 100.0, 0), +(@PATH, 18, -9774.03, 98.8019, 5.9558, 100.0, 0), +(@PATH, 19, -9769.0, 94.9396, 9.01634, 100.0, 0), +(@PATH, 20, -9763.11, 90.9472, 11.7534, 100.0, 0), +(@PATH, 21, -9759.02, 89.4984, 12.5023, 100.0, 0), +(@PATH, 22, -9750.88, 88.4202, 13.272, 100.0, 0), +(@PATH, 23, -9745.13, 94.1737, 12.6233, 100.0, 0), +(@PATH, 24, -9748.87, 103.495, 13.0417, 100.0, 0), +(@PATH, 25, -9752.01, 109.357, 14.4729, 100.0, 0), +(@PATH, 26, -9753.99, 116.753, 14.9938, 100.0, 0); + + +/* Prowler - GUID 80878 */ + + +SET @NPC := 80878; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9665.92, -1118.42, 40.462, 4.31454, 0), +(@PATH, 2, -9688.89, -1137.12, 39.7716, 3.53503, 0), +(@PATH, 3, -9721.8, -1129.75, 39.0381, 0.487688, 0), +(@PATH, 4, -9710.44, -1109.61, 40.8079, 0.572118, 0), +(@PATH, 5, -9689.68, -1084.73, 43.2639, 6.27215, 0), +(@PATH, 6, -9663.99, -1091.1, 42.6487, 3.85509, 0); + + +/* Servant of Azora - GUID 80927 */ + + +SET @NPC := 80927; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9554.81, -706.766, 90.4123, 100.0, 0), +(@PATH, 2, -9559.78, -705.204, 90.4257, 100.0, 0), +(@PATH, 3, -9567.61, -707.474, 90.422, 100.0, 0), +(@PATH, 4, -9573.15, -714.011, 90.4237, 100.0, 0), +(@PATH, 5, -9573.83, -722.376, 90.4257, 100.0, 0), +(@PATH, 6, -9569.41, -729.787, 90.4263, 100.0, 0), +(@PATH, 7, -9557.52, -734.085, 90.4258, 100.0, 0), +(@PATH, 8, -9549.81, -728.635, 90.4258, 100.0, 0), +(@PATH, 9, -9546.45, -720.288, 90.4259, 100.0, 0), +(@PATH, 10, -9548.53, -712.153, 90.4209, 100.0, 0); + + +/* Kobold Geomancer - GUID 80954 */ + + +SET @NPC := 80954; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9256.46, -711.838, 62.856, 4.05948, 30000), +(@PATH, 2, -9250.56, -705.341, 63.0889, 0.870763, 0), +(@PATH, 3, -9245.83, -700.187, 63.4148, 0.827566, 0), +(@PATH, 4, -9232.77, -686.143, 62.132, 0.898252, 0), +(@PATH, 5, -9220.14, -667.976, 62.8553, 0.965011, 0), +(@PATH, 6, -9212.16, -656.468, 62.8427, 0.965011, 0), +(@PATH, 7, -9204.57, -645.251, 62.7165, 0.9925, 0), +(@PATH, 8, -9199.22, -637.044, 63.2789, 0.9925, 5000), +(@PATH, 9, -9205.08, -645.676, 62.7152, 4.12624, 0), +(@PATH, 10, -9216.9, -663.027, 62.851, 4.12231, 0), +(@PATH, 11, -9222.74, -671.747, 62.902, 4.12231, 0), +(@PATH, 12, -9230.53, -683.38, 62.3675, 4.12231, 0), +(@PATH, 13, -9241.98, -698.354, 63.1308, 4.04456, 0), +(@PATH, 14, -9250.06, -706.134, 63.028, 3.9668, 0); + + +/* Kobold Geomancer - GUID 80977 */ + + +SET @NPC := 80977; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9136.17, `position_y` = -596.723, `position_z` = 57.5405, `orientation` = 1.8477 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9136.17, -596.723, 57.5405, 100.0, 0), +(@PATH, 2, -9145.28, -596.958, 58.2834, 100.0, 0), +(@PATH, 3, -9151.68, -592.22, 58.315, 100.0, 0), +(@PATH, 4, -9160.13, -594.177, 59.1343, 100.0, 0), +(@PATH, 5, -9168.36, -597.849, 62.2733, 100.0, 0), +(@PATH, 6, -9176.89, -602.55, 63.2155, 100.0, 0), +(@PATH, 7, -9182.03, -604.513, 63.2441, 100.0, 30000), +(@PATH, 8, -9166.25, -598.061, 61.8035, 100.0, 0), +(@PATH, 9, -9158.22, -593.823, 58.9564, 100.0, 0), +(@PATH, 10, -9149.23, -593.643, 58.0814, 100.0, 0), +(@PATH, 11, -9142.53, -597.237, 57.969, 100.0, 0), +(@PATH, 12, -9133.25, -593.905, 57.5412, 100.0, 0), +(@PATH, 13, -9134.57, -589.276, 57.5747, 100.0, 30000); + + +/* Kobold Geomancer - GUID 80978 */ + + +SET @NPC := 80978; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9088.73, `position_y` = -573.684, `position_z` = 62.5813, `orientation` = 5.08187 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9088.73, -573.684, 62.5813, 100.0, 0), +(@PATH, 2, -9093.98, -563.002, 61.9256, 100.0, 0), +(@PATH, 3, -9107.36, -564.851, 60.7017, 100.0, 0), +(@PATH, 4, -9116.43, -568.471, 59.1505, 100.0, 30000), +(@PATH, 5, -9103.89, -564.522, 60.9894, 100.0, 0), +(@PATH, 6, -9092.17, -566.279, 61.8373, 100.0, 0), +(@PATH, 7, -9083.02, -578.523, 62.5244, 100.0, 0), +(@PATH, 8, -9079.75, -586.978, 62.146, 100.0, 30000); + + +/* Murloc Streamrunner - GUID 81033 */ + + +SET @NPC := 81033; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9472.89, `position_y` = -268.673, `position_z` = 58.3486, `orientation` = 5.62523 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9472.89, -268.673, 58.3486, 100.0, 0), +(@PATH, 2, -9479.12, -262.841, 57.0205, 100.0, 0), +(@PATH, 3, -9491.52, -258.676, 54.6929, 100.0, 0), +(@PATH, 4, -9477.09, -261.979, 57.5638, 100.0, 0), +(@PATH, 5, -9472.8, -268.775, 58.3511, 100.0, 0), +(@PATH, 6, -9467.66, -278.412, 58.0115, 100.0, 0), +(@PATH, 7, -9459.47, -288.208, 58.3994, 100.0, 0), +(@PATH, 8, -9448.11, -287.272, 57.8952, 100.0, 0), +(@PATH, 9, -9438.42, -298.192, 59.6035, 100.0, 0), +(@PATH, 10, -9430.3, -307.357, 57.5573, 100.0, 0), +(@PATH, 11, -9422.17, -316.522, 57.4645, 100.0, 0), +(@PATH, 12, -9416.76, -322.624, 58.4012, 100.0, 0), +(@PATH, 13, -9404.37, -338.839, 57.2041, 100.0, 0), +(@PATH, 14, -9389.82, -353.156, 58.9918, 100.0, 0), +(@PATH, 15, -9401.59, -361.778, 57.9821, 100.0, 0), +(@PATH, 16, -9414.64, -368.074, 57.6703, 100.0, 0), +(@PATH, 17, -9430.84, -361.918, 56.4163, 100.0, 0), +(@PATH, 18, -9447.2, -360.684, 56.4163, 100.0, 0), +(@PATH, 19, -9454.94, -361.925, 58.1026, 100.0, 0), +(@PATH, 20, -9465.38, -363.155, 59.9546, 100.0, 0), +(@PATH, 21, -9477.01, -362.391, 59.7298, 100.0, 0), +(@PATH, 22, -9473.52, -372.051, 57.4971, 100.0, 0), +(@PATH, 23, -9477.87, -382.003, 56.3233, 100.0, 0), +(@PATH, 24, -9482.76, -390.608, 57.3174, 100.0, 0), +(@PATH, 25, -9490.48, -401.183, 59.7477, 100.0, 0), +(@PATH, 26, -9493.8, -408.633, 60.1274, 100.0, 0), +(@PATH, 27, -9494.93, -417.302, 59.4803, 100.0, 0), +(@PATH, 28, -9490.78, -435.071, 59.5064, 100.0, 0), +(@PATH, 29, -9495.63, -442.316, 57.1879, 100.0, 0), +(@PATH, 30, -9496.34, -459.043, 57.2209, 100.0, 0), +(@PATH, 31, -9492.46, -468.19, 58.7605, 100.0, 0), +(@PATH, 32, -9481.18, -476.479, 58.5739, 100.0, 0), +(@PATH, 33, -9468.9, -479.573, 58.7028, 100.0, 0), +(@PATH, 34, -9454.08, -472.743, 59.6918, 100.0, 0), +(@PATH, 35, -9438.64, -462.321, 58.9072, 100.0, 0), +(@PATH, 36, -9429.81, -450.018, 59.0442, 100.0, 0), +(@PATH, 37, -9416.67, -435.968, 58.0753, 100.0, 0), +(@PATH, 38, -9408.63, -421.084, 59.0249, 100.0, 0), +(@PATH, 39, -9415.0, -409.988, 58.9108, 100.0, 0), +(@PATH, 40, -9411.89, -398.809, 59.1793, 100.0, 0), +(@PATH, 41, -9407.69, -386.671, 58.9828, 100.0, 0), +(@PATH, 42, -9406.23, -372.763, 58.8581, 100.0, 0), +(@PATH, 43, -9397.28, -357.774, 58.2173, 100.0, 0), +(@PATH, 44, -9393.88, -343.046, 58.8213, 100.0, 0), +(@PATH, 45, -9403.38, -330.522, 58.3647, 100.0, 0), +(@PATH, 46, -9411.14, -320.285, 59.7813, 100.0, 0), +(@PATH, 47, -9419.85, -309.393, 58.5444, 100.0, 0), +(@PATH, 48, -9433.39, -301.416, 59.4742, 100.0, 0), +(@PATH, 49, -9436.68, -298.983, 59.831, 100.0, 0), +(@PATH, 50, -9447.94, -290.662, 57.2169, 100.0, 0), +(@PATH, 51, -9455.9, -287.022, 58.6051, 100.0, 0), +(@PATH, 52, -9461.4, -283.697, 58.868, 100.0, 0), +(@PATH, 53, -9466.93, -277.335, 58.2595, 100.0, 0); + + +/* Murloc - GUID 81043 */ + + +SET @NPC := 81043; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9474.87, `position_y` = -386.517, `position_z` = 56.5797, `orientation` = 0.98265 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9474.87, -386.517, 56.5797, 100.0, 10000), +(@PATH, 2, -9480.67, -408.144, 58.7091, 100.0, 0), +(@PATH, 3, -9488.49, -408.804, 59.8561, 100.0, 10000), +(@PATH, 4, -9491.34, -434.71, 59.5044, 100.0, 10000), +(@PATH, 5, -9498.57, -411.1, 59.9164, 100.0, 0); + + +/* Murloc - GUID 81047 */ + + +SET @NPC := 81047; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9482.6, `position_y` = -357.314, `position_z` = 59.9421, `orientation` = 6.10036 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9482.6, -357.314, 59.9421, 100.0, 5000), +(@PATH, 2, -9470.69, -341.556, 59.6252, 100.0, 5000), +(@PATH, 3, -9475.48, -355.735, 60.6425, 100.0, 0), +(@PATH, 4, -9479.15, -362.678, 59.2231, 100.0, 5000), +(@PATH, 5, -9468.87, -365.711, 59.6787, 100.0, 0), +(@PATH, 6, -9468.69, -369.716, 59.0699, 100.0, 0), +(@PATH, 7, -9469.79, -372.916, 58.4774, 100.0, 0), +(@PATH, 8, -9480.27, -360.566, 59.7696, 100.0, 0); + + +/* Murloc - GUID 81051 */ + + +SET @NPC := 81051; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9474.62, -353.098, 60.4873, 0.19516, 0), +(@PATH, 2, -9472.23, -349.059, 60.2115, 1.2633, 0), +(@PATH, 3, -9473.05, -345.561, 59.9094, 1.52719, 0), +(@PATH, 4, -9471.61, -343.021, 59.6889, 1.05596, 5000), +(@PATH, 5, -9473.16, -345.527, 59.9081, 4.37819, 0), +(@PATH, 6, -9472.5, -349.483, 60.2316, 4.51328, 0), +(@PATH, 7, -9477.02, -355.999, 60.8303, 4.51328, 2000), +(@PATH, 8, -9474.17, -358.386, 60.4579, 5.60106, 0), +(@PATH, 9, -9468.08, -362.975, 59.9448, 5.60028, 1000), +(@PATH, 10, -9464.64, -366.699, 59.5676, 5.48246, 2000), +(@PATH, 11, -9479.1, -356.839, 60.761, 2.54115, 1000), +(@PATH, 12, -9476.26, -358.19, 60.5788, 5.83982, 1000); + + +/* Murloc Streamrunner - GUID 81066 */ + + +SET @NPC := 81066; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9511.85, `position_y` = -302.882, `position_z` = 55.0908, `orientation` = 5.76622 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9511.85, -302.882, 55.0908, 100.0, 0), +(@PATH, 2, -9524.14, -308.378, 57.4013, 100.0, 0), +(@PATH, 3, -9529.77, -317.939, 60.0075, 100.0, 0), +(@PATH, 4, -9534.75, -330.956, 58.2253, 100.0, 0), +(@PATH, 5, -9531.1, -346.889, 59.6187, 100.0, 0), +(@PATH, 6, -9527.33, -363.367, 61.0741, 100.0, 0), +(@PATH, 7, -9529.39, -367.577, 61.6662, 100.0, 0), +(@PATH, 8, -9535.83, -380.676, 59.3496, 100.0, 0), +(@PATH, 9, -9539.01, -394.294, 59.147, 100.0, 0), +(@PATH, 10, -9539.59, -408.821, 61.3778, 100.0, 0), +(@PATH, 11, -9539.77, -422.26, 59.7689, 100.0, 0), +(@PATH, 12, -9536.85, -434.103, 58.7586, 100.0, 0), +(@PATH, 13, -9529.73, -446.05, 59.744, 100.0, 0), +(@PATH, 14, -9520.27, -454.603, 59.7656, 100.0, 0), +(@PATH, 15, -9509.81, -463.043, 58.0262, 100.0, 0), +(@PATH, 16, -9494.3, -468.035, 58.8489, 100.0, 0), +(@PATH, 17, -9474.82, -479.728, 58.7317, 100.0, 0), +(@PATH, 18, -9465.01, -478.329, 58.8766, 100.0, 0), +(@PATH, 19, -9456.09, -472.871, 59.402, 100.0, 0), +(@PATH, 20, -9439.7, -464.025, 59.008, 100.0, 0), +(@PATH, 21, -9429.6, -456.253, 60.1198, 100.0, 0), +(@PATH, 22, -9416.86, -441.113, 58.4483, 100.0, 0), +(@PATH, 23, -9410.71, -427.954, 58.5316, 100.0, 0), +(@PATH, 24, -9410.62, -418.645, 58.7677, 100.0, 0), +(@PATH, 25, -9410.52, -408.145, 60.112, 100.0, 0), +(@PATH, 26, -9410.33, -389.491, 58.2605, 100.0, 0), +(@PATH, 27, -9409.47, -376.147, 58.5487, 100.0, 0), +(@PATH, 28, -9407.14, -362.378, 57.6734, 100.0, 0), +(@PATH, 29, -9402.86, -337.078, 57.608, 100.0, 0), +(@PATH, 30, -9406.75, -329.24, 58.2366, 100.0, 0), +(@PATH, 31, -9412.04, -320.191, 59.6613, 100.0, 0), +(@PATH, 32, -9423.98, -305.114, 58.1266, 100.0, 0), +(@PATH, 33, -9437.65, -300.124, 59.4878, 100.0, 0), +(@PATH, 34, -9449.09, -292.725, 56.765, 100.0, 0), +(@PATH, 35, -9456.11, -288.572, 58.1898, 100.0, 0), +(@PATH, 36, -9461.62, -285.309, 58.6243, 100.0, 0), +(@PATH, 37, -9466.73, -276.826, 58.34, 100.0, 0), +(@PATH, 38, -9471.61, -268.946, 58.511, 100.0, 0), +(@PATH, 39, -9468.39, -261.434, 59.3741, 100.0, 0), +(@PATH, 40, -9465.1, -250.838, 58.8599, 100.0, 0), +(@PATH, 41, -9460.18, -239.01, 58.1093, 100.0, 0), +(@PATH, 42, -9452.95, -224.38, 58.5347, 100.0, 0), +(@PATH, 43, -9470.66, -219.899, 56.3133, 100.0, 0), +(@PATH, 44, -9478.36, -215.65, 57.8558, 100.0, 0), +(@PATH, 45, -9484.97, -210.055, 59.0649, 100.0, 0), +(@PATH, 46, -9481.15, -199.045, 56.3992, 100.0, 0), +(@PATH, 47, -9477.95, -189.858, 57.683, 100.0, 0), +(@PATH, 48, -9474.51, -179.952, 59.3135, 100.0, 0), +(@PATH, 49, -9473.18, -176.117, 59.5718, 100.0, 0), +(@PATH, 50, -9467.46, -167.37, 59.491, 100.0, 0), +(@PATH, 51, -9462.79, -160.674, 60.7006, 100.0, 0), +(@PATH, 52, -9476.79, -159.425, 56.3049, 100.0, 0), +(@PATH, 53, -9506.55, -158.605, 56.6827, 100.0, 0), +(@PATH, 54, -9513.39, -160.008, 58.9176, 100.0, 0), +(@PATH, 55, -9518.2, -171.877, 59.0638, 100.0, 0), +(@PATH, 56, -9525.25, -190.427, 58.4655, 100.0, 0), +(@PATH, 57, -9528.24, -201.662, 58.6404, 100.0, 0), +(@PATH, 58, -9529.43, -219.1, 59.2527, 100.0, 0), +(@PATH, 59, -9534.32, -234.068, 58.8253, 100.0, 0), +(@PATH, 60, -9533.44, -247.443, 59.154, 100.0, 0), +(@PATH, 61, -9530.7, -262.914, 59.2828, 100.0, 0), +(@PATH, 62, -9527.02, -278.804, 59.1731, 100.0, 0), +(@PATH, 63, -9521.57, -287.811, 58.7998, 100.0, 0), +(@PATH, 64, -9516.64, -295.753, 56.8313, 100.0, 0); + + +/* Murloc - GUID 81075 */ + + +SET @NPC := 81075; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9526.93, -285.396, 59.5467, 100.0, 0), +(@PATH, 2, -9527.61, -292.303, 59.1049, 100.0, 0), +(@PATH, 3, -9530.63, -301.207, 58.3739, 100.0, 0), +(@PATH, 4, -9531.74, -314.601, 60.6373, 100.0, 0), +(@PATH, 5, -9533.53, -324.735, 59.2103, 100.0, 0), +(@PATH, 6, -9535.15, -333.945, 58.3414, 100.0, 0), +(@PATH, 7, -9533.05, -341.368, 59.5604, 100.0, 0), +(@PATH, 8, -9530.1, -349.627, 59.598, 100.0, 0), +(@PATH, 9, -9525.13, -358.166, 59.0207, 100.0, 0), +(@PATH, 10, -9522.94, -363.136, 58.971, 100.0, 0), +(@PATH, 11, -9525.12, -367.745, 60.0007, 100.0, 0), +(@PATH, 12, -9529.59, -373.125, 60.0734, 100.0, 0), +(@PATH, 13, -9533.0, -382.533, 58.2308, 100.0, 0), +(@PATH, 14, -9538.12, -391.038, 58.9703, 100.0, 0), +(@PATH, 15, -9539.35, -395.911, 59.3127, 100.0, 0), +(@PATH, 16, -9536.47, -406.153, 60.1629, 100.0, 0), +(@PATH, 17, -9536.74, -416.201, 60.264, 100.0, 0), +(@PATH, 18, -9537.87, -429.28, 58.5419, 100.0, 0), +(@PATH, 19, -9537.82, -432.787, 58.7907, 100.0, 0), +(@PATH, 20, -9535.28, -435.842, 58.6941, 100.0, 0), +(@PATH, 21, -9523.99, -441.676, 58.7635, 100.0, 0), +(@PATH, 22, -9517.93, -448.962, 59.4715, 100.0, 0), +(@PATH, 23, -9510.8, -452.213, 57.6683, 100.0, 0), +(@PATH, 24, -9497.28, -460.999, 57.6426, 100.0, 0), +(@PATH, 25, -9490.2, -468.303, 58.5747, 100.0, 0), +(@PATH, 26, -9480.62, -476.252, 58.4637, 100.0, 0), +(@PATH, 27, -9473.07, -481.147, 59.0252, 100.0, 0), +(@PATH, 28, -9464.45, -476.681, 58.5417, 100.0, 0), +(@PATH, 29, -9457.22, -470.558, 58.6759, 100.0, 0), +(@PATH, 30, -9455.04, -465.644, 57.9474, 100.0, 0), +(@PATH, 31, -9445.86, -457.86, 56.658, 100.0, 0), +(@PATH, 32, -9437.89, -452.973, 57.6314, 100.0, 0), +(@PATH, 33, -9430.25, -445.79, 58.2607, 100.0, 0), +(@PATH, 34, -9419.51, -441.484, 58.3789, 100.0, 0), +(@PATH, 35, -9414.33, -433.69, 58.2152, 100.0, 0), +(@PATH, 36, -9412.2, -426.436, 58.0708, 100.0, 0), +(@PATH, 37, -9413.08, -417.396, 58.2457, 100.0, 0), +(@PATH, 38, -9413.35, -407.874, 59.4805, 100.0, 0), +(@PATH, 39, -9414.28, -401.303, 58.9778, 100.0, 0), +(@PATH, 40, -9411.41, -391.67, 58.1261, 100.0, 0), +(@PATH, 41, -9411.7, -379.985, 58.1249, 100.0, 0), +(@PATH, 42, -9408.9, -369.836, 58.3438, 100.0, 0), +(@PATH, 43, -9401.37, -357.998, 57.87, 100.0, 0), +(@PATH, 44, -9398.53, -343.426, 58.0562, 100.0, 0), +(@PATH, 45, -9400.42, -333.312, 58.4127, 100.0, 0), +(@PATH, 46, -9407.72, -327.094, 58.7075, 100.0, 0), +(@PATH, 47, -9419.01, -317.461, 58.4034, 100.0, 0), +(@PATH, 48, -9431.82, -306.537, 57.8234, 100.0, 0), +(@PATH, 49, -9436.26, -299.673, 59.719, 100.0, 0), +(@PATH, 50, -9443.15, -289.656, 58.5493, 100.0, 0), +(@PATH, 51, -9451.89, -287.059, 58.1195, 100.0, 0), +(@PATH, 52, -9461.37, -287.18, 58.4068, 100.0, 0), +(@PATH, 53, -9470.27, -274.719, 57.9699, 100.0, 0), +(@PATH, 54, -9474.7, -268.988, 57.9762, 100.0, 0), +(@PATH, 55, -9471.8, -257.181, 58.3496, 100.0, 0), +(@PATH, 56, -9466.18, -247.866, 58.1487, 100.0, 0), +(@PATH, 57, -9461.47, -243.147, 58.3831, 100.0, 0), +(@PATH, 58, -9460.29, -241.266, 58.3823, 100.0, 0), +(@PATH, 59, -9458.73, -232.757, 57.8008, 100.0, 0), +(@PATH, 60, -9454.74, -225.068, 58.3335, 100.0, 0), +(@PATH, 61, -9451.38, -222.16, 58.3667, 100.0, 0), +(@PATH, 62, -9436.67, -219.383, 58.3314, 100.0, 0), +(@PATH, 63, -9425.75, -218.588, 58.4336, 100.0, 0), +(@PATH, 64, -9414.45, -211.747, 58.404, 100.0, 0), +(@PATH, 65, -9407.06, -202.089, 58.3292, 100.0, 0), +(@PATH, 66, -9401.83, -191.937, 58.3821, 100.0, 0), +(@PATH, 67, -9398.99, -178.2, 58.2758, 100.0, 0), +(@PATH, 68, -9397.22, -186.382, 58.8436, 100.0, 0), +(@PATH, 69, -9400.34, -196.2, 59.1179, 100.0, 0), +(@PATH, 70, -9406.54, -206.796, 58.9968, 100.0, 0), +(@PATH, 71, -9411.45, -213.731, 59.5305, 100.0, 0), +(@PATH, 72, -9418.15, -219.391, 59.623, 100.0, 0), +(@PATH, 73, -9429.92, -222.801, 59.2838, 100.0, 0), +(@PATH, 74, -9439.33, -224.396, 59.0535, 100.0, 0), +(@PATH, 75, -9451.09, -225.385, 59.0377, 100.0, 0), +(@PATH, 76, -9455.6, -228.535, 58.3439, 100.0, 0), +(@PATH, 77, -9456.89, -236.085, 58.3142, 100.0, 0), +(@PATH, 78, -9463.13, -245.874, 58.4287, 100.0, 0), +(@PATH, 79, -9468.72, -252.04, 58.3867, 100.0, 0), +(@PATH, 80, -9471.59, -260.817, 58.6599, 100.0, 0), +(@PATH, 81, -9470.45, -268.813, 58.7031, 100.0, 0), +(@PATH, 82, -9465.56, -277.23, 58.5089, 100.0, 0), +(@PATH, 83, -9456.94, -283.661, 59.5827, 100.0, 0), +(@PATH, 84, -9451.81, -289.061, 57.5824, 100.0, 0), +(@PATH, 85, -9442.62, -296.304, 58.5089, 100.0, 0), +(@PATH, 86, -9432.88, -303.577, 58.8105, 100.0, 0), +(@PATH, 87, -9423.18, -311.948, 57.3591, 100.0, 0), +(@PATH, 88, -9413.51, -320.507, 59.3467, 100.0, 0), +(@PATH, 89, -9406.03, -326.823, 59.0337, 100.0, 0), +(@PATH, 90, -9397.47, -331.361, 59.2249, 100.0, 0), +(@PATH, 91, -9394.32, -341.237, 58.8416, 100.0, 0), +(@PATH, 92, -9394.34, -348.601, 58.6107, 100.0, 0), +(@PATH, 93, -9398.84, -360.024, 58.1032, 100.0, 0), +(@PATH, 94, -9406.72, -367.451, 58.2864, 100.0, 0), +(@PATH, 95, -9408.36, -376.665, 58.742, 100.0, 0), +(@PATH, 96, -9407.05, -387.686, 59.2576, 100.0, 0), +(@PATH, 97, -9408.76, -397.243, 59.7092, 100.0, 0), +(@PATH, 98, -9411.24, -411.058, 59.6969, 100.0, 0), +(@PATH, 99, -9412.9, -420.43, 57.8578, 100.0, 0), +(@PATH, 100, -9414.58, -428.293, 58.0399, 100.0, 0), +(@PATH, 101, -9413.27, -433.629, 58.3313, 100.0, 0), +(@PATH, 102, -9417.09, -441.775, 58.509, 100.0, 0), +(@PATH, 103, -9431.5, -451.761, 58.9674, 100.0, 0), +(@PATH, 104, -9440.13, -457.083, 57.646, 100.0, 0), +(@PATH, 105, -9449.69, -462.903, 57.4956, 100.0, 0), +(@PATH, 106, -9456.42, -470.864, 58.8739, 100.0, 0), +(@PATH, 107, -9463.22, -477.555, 58.9884, 100.0, 0), +(@PATH, 108, -9471.66, -482.116, 59.2805, 100.0, 0), +(@PATH, 109, -9474.79, -482.487, 59.4486, 100.0, 0), +(@PATH, 110, -9480.72, -479.911, 59.211, 100.0, 0), +(@PATH, 111, -9489.82, -471.161, 58.8715, 100.0, 0), +(@PATH, 112, -9500.81, -463.613, 58.1139, 100.0, 0), +(@PATH, 113, -9511.98, -455.93, 57.8465, 100.0, 0), +(@PATH, 114, -9519.15, -449.663, 59.6295, 100.0, 0), +(@PATH, 115, -9528.37, -442.945, 59.2488, 100.0, 0), +(@PATH, 116, -9536.69, -437.328, 59.1452, 100.0, 0), +(@PATH, 117, -9541.11, -432.342, 59.3252, 100.0, 0), +(@PATH, 118, -9541.02, -424.815, 59.525, 100.0, 0), +(@PATH, 119, -9538.49, -419.161, 60.1225, 100.0, 0), +(@PATH, 120, -9537.19, -411.727, 60.8444, 100.0, 0), +(@PATH, 121, -9538.33, -404.686, 60.4075, 100.0, 0), +(@PATH, 122, -9541.88, -396.048, 60.1178, 100.0, 0), +(@PATH, 123, -9540.84, -387.951, 59.9352, 100.0, 0), +(@PATH, 124, -9535.36, -379.132, 59.4486, 100.0, 0), +(@PATH, 125, -9529.66, -372.169, 60.4515, 100.0, 0), +(@PATH, 126, -9526.27, -365.894, 60.7335, 100.0, 0), +(@PATH, 127, -9526.08, -361.692, 60.2865, 100.0, 0), +(@PATH, 128, -9529.7, -354.745, 60.4647, 100.0, 0), +(@PATH, 129, -9532.19, -345.368, 59.8048, 100.0, 0), +(@PATH, 130, -9535.49, -336.256, 58.836, 100.0, 0), +(@PATH, 131, -9537.37, -330.84, 58.9244, 100.0, 0), +(@PATH, 132, -9533.55, -323.214, 59.6467, 100.0, 0), +(@PATH, 133, -9528.78, -317.071, 59.9019, 100.0, 0), +(@PATH, 134, -9528.87, -311.109, 59.2594, 100.0, 0), +(@PATH, 135, -9532.4, -302.701, 58.7929, 100.0, 0), +(@PATH, 136, -9530.55, -296.177, 58.8768, 100.0, 0), +(@PATH, 137, -9526.65, -290.204, 59.2711, 100.0, 0), +(@PATH, 138, -9528.52, -279.496, 59.5445, 100.0, 0), +(@PATH, 139, -9531.63, -270.045, 59.5306, 100.0, 0), +(@PATH, 140, -9533.59, -261.138, 59.7819, 100.0, 0), +(@PATH, 141, -9535.25, -246.891, 59.4823, 100.0, 0), +(@PATH, 142, -9531.74, -254.945, 59.2799, 100.0, 0), +(@PATH, 143, -9529.11, -269.769, 59.0871, 100.0, 0); + + +/* Defias Bandit - GUID 81108 */ + + +SET @NPC := 81108; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9309.45, -272.666, 70.8032, 3.9598, 0), +(@PATH, 2, -9318.39, -284.107, 69.666, 4.13258, 0), +(@PATH, 3, -9316.23, -295.466, 69.9815, 4.95332, 0), +(@PATH, 4, -9318.45, -282.884, 69.6828, 1.6036, 0); + + +/* Prowler - GUID 81123 */ + + +SET @NPC := 81123; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8966.28, -791.905, 70.2783, 5.29834, 0), +(@PATH, 2, -8955.22, -815.873, 69.2877, 5.22372, 0), +(@PATH, 3, -8934.31, -829.745, 68.6447, 5.82259, 0), +(@PATH, 4, -8906.55, -835.019, 70.7683, 5.9404, 0), +(@PATH, 5, -8897.35, -856.237, 72.7295, 5.38669, 0), +(@PATH, 6, -8908.18, -834.852, 70.6518, 2.48268, 0), +(@PATH, 7, -8936.18, -827.081, 68.6501, 2.60049, 0), +(@PATH, 8, -8957.31, -815.545, 69.2454, 2.31971, 0), +(@PATH, 9, -8982.21, -781.457, 71.7048, 2.33346, 0); + + +/* Prowler - GUID 81135 */ + + +SET @NPC := 81135; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -8941.04, `position_y` = -734.319, `position_z` = 70.3332, `orientation` = 3.03639 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8964.89, -731.513, 74.6737, 3.18169, 0), +(@PATH, 2, -8933.24, -732.708, 70.2942, 6.11319, 0), +(@PATH, 3, -8902.79, -733.989, 70.8979, 5.3867, 0), +(@PATH, 4, -8886.2, -743.922, 70.0961, 5.89131, 0), +(@PATH, 5, -8901.53, -735.474, 70.9763, 2.6378, 0), +(@PATH, 6, -8928.82, -733.46, 70.3772, 3.0737, 0); + + +/* Prowler - GUID 81150 */ + + +SET @NPC := 81150; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8882.43, -908.221, 75.6399, 5.14125, 0), +(@PATH, 2, -8860.34, -927.013, 75.7779, 5.61249, 0), +(@PATH, 3, -8840.07, -943.021, 74.6259, 5.76368, 0), +(@PATH, 4, -8855.33, -926.03, 75.6663, 2.12337, 0), +(@PATH, 5, -8875.0, -926.394, 75.6173, 3.05406, 0), +(@PATH, 6, -8894.47, -853.761, 72.5103, 2.41985, 0); + + +/* Prowler - GUID 81155 */ + + +SET @NPC := 81155; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8926.76, -893.678, 71.8135, 2.35113, 0), +(@PATH, 2, -8930.74, -874.417, 70.9489, 1.76601, 0), +(@PATH, 3, -8927.11, -895.924, 71.8636, 5.13733, 0), +(@PATH, 4, -8904.25, -919.447, 73.2514, 5.5477, 0), +(@PATH, 5, -8887.03, -943.427, 74.5526, 5.33761, 0), +(@PATH, 6, -8883.66, -952.704, 74.4524, 5.06076, 0), +(@PATH, 7, -8891.26, -931.274, 74.3827, 3.22096, 0); + + +/* Prowler - GUID 81182 */ + + +SET @NPC := 81182; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9775.46, -1105.2, 35.8893, 5.41214, 0), +(@PATH, 2, -9777.18, -1138.69, 36.186, 4.17318, 0), +(@PATH, 3, -9775.33, -1169.47, 38.0415, 4.57765, 0), +(@PATH, 4, -9759.99, -1196.44, 40.8238, 5.88927, 0), +(@PATH, 5, -9737.73, -1195.54, 43.6243, 1.50675, 0), +(@PATH, 6, -9739.96, -1166.83, 38.6606, 2.05064, 0), +(@PATH, 7, -9725.38, -1145.56, 40.2523, 3.34654, 0), +(@PATH, 8, -9747.45, -1106.38, 37.9466, 3.27978, 0); + + +/* Prowler - GUID 81183 */ + + +SET @NPC := 81183; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9711.87, -1110.23, 40.793, 3.38778, 0), +(@PATH, 2, -9734.6, -1104.79, 38.0429, 0.648701, 0), +(@PATH, 3, -9726.86, -1079.22, 37.2147, 5.27274, 0), +(@PATH, 4, -9704.93, -1058.16, 39.7983, 4.38327, 0), +(@PATH, 5, -9687.69, -1051.44, 40.6868, 4.613, 0), +(@PATH, 6, -9679.24, -1061.49, 41.7164, 4.33222, 0), +(@PATH, 7, -9683.68, -1078.65, 43.2869, 4.01806, 0), +(@PATH, 8, -9696.4, -1101.99, 41.1554, 1.76594, 0); + + +/* Prowler - GUID 81184 */ + + +SET @NPC := 81184; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9728.65, -1155.06, 40.7077, 3.6607, 0), +(@PATH, 2, -9741.16, -1167.35, 38.6065, 3.81385, 0), +(@PATH, 3, -9723.81, -1193.61, 45.8664, 5.38661, 0), +(@PATH, 4, -9711.73, -1204.81, 50.9605, 3.15411, 0), +(@PATH, 5, -9715.03, -1227.73, 51.9014, 4.83879, 0), +(@PATH, 6, -9710.66, -1246.37, 52.5536, 3.99253, 0), +(@PATH, 7, -9718.06, -1201.3, 49.0624, 2.18022, 0), +(@PATH, 8, -9742.17, -1166.56, 38.4627, 0.261893, 0), +(@PATH, 9, -9720.98, -1147.76, 40.7964, 0.511257, 0), +(@PATH, 10, -9703.23, -1142.13, 38.4101, 5.87553, 0); + + +/* Prowler - GUID 81230 */ + + +SET @NPC := 81230; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9756.86, -1261.4, 46.3064, 5.69687, 0), +(@PATH, 2, -9769.87, -1270.48, 45.0175, 4.2105, 0), +(@PATH, 3, -9782.87, -1301.77, 41.8294, 4.17712, 0), +(@PATH, 4, -9812.15, -1336.59, 45.6955, 2.53957, 0), +(@PATH, 5, -9831.46, -1341.15, 43.6729, 0.953065, 0), +(@PATH, 6, -9810.52, -1334.87, 45.4289, 1.11603, 0), +(@PATH, 7, -9783.7, -1305.4, 42.2509, 1.15923, 0), +(@PATH, 8, -9770.69, -1271.83, 44.8069, 1.24563, 0); + + +/* Prowler - GUID 81231 */ + + +SET @NPC := 81231; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9769.1, -1238.95, 42.9905, 2.51795, 0), +(@PATH, 2, -9804.72, -1223.33, 36.6754, 5.78914, 0), +(@PATH, 3, -9826.18, -1195.0, 35.61, 5.82841, 0), +(@PATH, 4, -9824.65, -1175.48, 34.1506, 6.03261, 0), +(@PATH, 5, -9824.99, -1195.21, 35.6815, 5.78129, 0), +(@PATH, 6, -9808.53, -1222.56, 36.575, 5.8991, 0), +(@PATH, 7, -9768.38, -1239.97, 43.1148, 5.80681, 0), +(@PATH, 8, -9757.13, -1253.27, 45.7275, 4.90361, 0); + + +/* Chicken - GUID 81244 */ + + +SET @NPC := 81244; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9457.06, `position_y` = -1277.88, `position_z` = 42.3997, `orientation` = 5.48294 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9456.2, -1279.19, 42.4625, 5.17272, 0), +(@PATH, 2, -9444.68, -1283.16, 44.5371, 1.55399, 0), +(@PATH, 3, -9435.43, -1272.15, 47.4998, 1.50883, 0), +(@PATH, 4, -9437.58, -1257.17, 47.896, 1.57166, 0), +(@PATH, 5, -9442.67, -1241.57, 47.8932, 4.30288, 0), +(@PATH, 6, -9467.67, -1220.92, 45.3217, 4.38731, 0), +(@PATH, 7, -9480.93, -1218.29, 45.2774, 5.46527, 0), +(@PATH, 8, -9492.49, -1226.8, 43.8178, 5.79514, 0), +(@PATH, 9, -9494.44, -1248.02, 43.4802, 6.16817, 0), +(@PATH, 10, -9486.2, -1263.96, 41.9025, 6.17603, 0), +(@PATH, 11, -9470.13, -1269.33, 42.2024, 6.08571, 0); + + +/* Prowler - GUID 81260 */ + + +SET @NPC := 81260; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9414.74, -1167.24, 57.3056, 0.161835, 0), +(@PATH, 2, -9421.44, -1139.63, 57.6522, 1.52646, 0), +(@PATH, 3, -9405.63, -1110.96, 60.8357, 5.71853, 0), +(@PATH, 4, -9382.35, -1128.48, 61.6769, 5.45935, 0), +(@PATH, 5, -9379.78, -1157.34, 63.7879, 4.21253, 0), +(@PATH, 6, -9392.34, -1173.81, 62.917, 4.37157, 0), +(@PATH, 7, -9386.12, -1200.34, 61.2639, 5.0529, 0); + + +/* Prowler - GUID 81261 */ + + +SET @NPC := 81261; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9340.57, -1283.54, 63.5864, 4.26161, 0), +(@PATH, 2, -9345.12, -1258.78, 64.1334, 1.86222, 0), +(@PATH, 3, -9355.74, -1232.36, 66.4044, 1.96825, 0), +(@PATH, 4, -9339.71, -1264.16, 64.7917, 4.61504, 0), +(@PATH, 5, -9339.91, -1312.43, 63.1499, 1.86025, 0), +(@PATH, 6, -9352.72, -1322.72, 59.9825, 1.62659, 0); + + +/* Prowler - GUID 81262 */ + + +SET @NPC := 81262; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9337.84, -1225.29, 68.3339, 0.864758, 0), +(@PATH, 2, -9317.42, -1220.63, 69.6461, 6.03071, 0), +(@PATH, 3, -9305.8, -1242.37, 68.1696, 3.5626, 0), +(@PATH, 4, -9301.22, -1277.09, 70.5435, 4.48152, 0), +(@PATH, 5, -9300.88, -1319.03, 69.0481, 2.12337, 0), +(@PATH, 6, -9301.81, -1278.04, 70.4627, 2.14497, 0), +(@PATH, 7, -9331.12, -1256.0, 65.5546, 2.61228, 0), +(@PATH, 8, -9342.32, -1238.49, 66.562, 1.98003, 0); + + +/* Prowler - GUID 81265 */ + + +SET @NPC := 81265; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9361.51, -1194.59, 64.5418, 0.499551, 0), +(@PATH, 2, -9336.08, -1202.43, 68.9593, 0.222701, 0), +(@PATH, 3, -9318.5, -1166.67, 67.8049, 3.84731, 0), +(@PATH, 4, -9329.31, -1147.61, 68.9541, 2.68885, 0), +(@PATH, 5, -9359.87, -1145.67, 65.1786, 2.97945, 0); + + +/* Murloc Forager - GUID 81276 */ + + +SET @NPC := 81276; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9243.64, -1221.85, 73.2475, 5.76187, 0), +(@PATH, 2, -9234.08, -1221.5, 72.3247, 0.135273, 0), +(@PATH, 3, -9226.85, -1218.01, 71.2244, 0.606512, 0), +(@PATH, 4, -9221.26, -1217.66, 70.5818, 6.02733, 0), +(@PATH, 5, -9219.52, -1222.75, 71.3881, 4.4581, 0), +(@PATH, 6, -9223.6, -1226.49, 71.9291, 3.71119, 0), +(@PATH, 7, -9229.19, -1231.02, 72.4573, 3.90675, 0), +(@PATH, 8, -9234.24, -1235.87, 73.0311, 3.90675, 0), +(@PATH, 9, -9242.69, -1243.17, 73.7172, 3.74889, 0), +(@PATH, 10, -9248.44, -1247.17, 73.86, 3.74889, 0), +(@PATH, 11, -9256.51, -1251.0, 73.7161, 3.07973, 0), +(@PATH, 12, -9265.73, -1249.36, 73.7164, 2.80405, 0), +(@PATH, 13, -9273.42, -1246.04, 73.0175, 2.64619, 0), +(@PATH, 14, -9280.03, -1239.44, 71.4302, 2.2692, 0), +(@PATH, 15, -9283.82, -1231.35, 70.245, 1.95582, 0), +(@PATH, 16, -9286.44, -1224.87, 69.7279, 1.95582, 0), +(@PATH, 17, -9295.03, -1206.19, 69.2629, 1.84587, 0), +(@PATH, 18, -9296.07, -1190.06, 69.3975, 1.53956, 0), +(@PATH, 19, -9291.14, -1184.12, 70.1385, 0.439219, 0), +(@PATH, 20, -9281.42, -1187.53, 70.8704, 5.66212, 0), +(@PATH, 21, -9274.78, -1193.01, 71.0541, 5.50425, 0), +(@PATH, 22, -9264.82, -1202.85, 71.1303, 5.50425, 0), +(@PATH, 23, -9251.62, -1215.88, 72.7773, 5.50425, 0); + + +/* Murloc Lurker - GUID 81282 */ + + +SET @NPC := 81282; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9273.79, -1174.44, 70.1089, 6.27002, 0), +(@PATH, 2, -9261.38, -1175.86, 68.742, 5.50819, 0), +(@PATH, 3, -9251.58, -1187.17, 68.4639, 5.39039, 0), +(@PATH, 4, -9242.8, -1198.08, 69.2372, 5.39039, 0), +(@PATH, 5, -9230.14, -1209.55, 70.138, 5.54825, 0), +(@PATH, 6, -9220.51, -1217.1, 70.4131, 5.66842, 0), +(@PATH, 7, -9212.75, -1222.04, 71.1277, 5.78858, 0), +(@PATH, 8, -9207.12, -1225.64, 72.1687, 5.19953, 0), +(@PATH, 9, -9206.49, -1235.5, 74.4256, 4.25705, 0), +(@PATH, 10, -9212.17, -1239.51, 75.2881, 3.47244, 0), +(@PATH, 11, -9218.98, -1239.63, 75.2031, 2.96115, 0), +(@PATH, 12, -9227.58, -1235.21, 73.3385, 2.29199, 0), +(@PATH, 13, -9230.25, -1229.28, 72.2781, 1.82075, 0), +(@PATH, 14, -9232.84, -1219.1, 72.0268, 1.82075, 0), +(@PATH, 15, -9236.06, -1212.1, 71.4959, 2.17182, 0), +(@PATH, 16, -9244.83, -1203.41, 70.5868, 2.48755, 0), +(@PATH, 17, -9252.35, -1198.58, 70.396, 2.68312, 0), +(@PATH, 18, -9259.77, -1195.92, 70.778, 2.91874, 0), +(@PATH, 19, -9268.39, -1194.56, 71.1093, 3.07424, 0), +(@PATH, 20, -9278.28, -1193.14, 70.8562, 2.87632, 0), +(@PATH, 21, -9281.43, -1191.77, 70.7009, 2.28963, 0), +(@PATH, 22, -9284.81, -1187.24, 70.6204, 1.74064, 0), +(@PATH, 23, -9285.24, -1180.95, 70.6783, 1.07148, 0), +(@PATH, 24, -9282.37, -1176.17, 70.6259, 0.677993, 0); + + +/* Murloc Forager - GUID 81301 */ + + +SET @NPC := 81301; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8986.08, -1213.23, 72.5457, 5.37309, 0), +(@PATH, 2, -8991.99, -1206.38, 71.9178, 2.27862, 0), +(@PATH, 3, -8995.93, -1201.77, 70.9621, 2.27862, 0), +(@PATH, 4, -8991.88, -1206.52, 71.9383, 5.40843, 0); + + +/* Murloc Forager - GUID 81315 */ + + +SET @NPC := 81315; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8979.13, -1192.8, 71.0781, 0.117569, 0), +(@PATH, 2, -8970.33, -1191.76, 70.8275, 0.117569, 0), +(@PATH, 3, -8982.51, -1193.09, 71.0088, 3.25523, 0), +(@PATH, 4, -8991.55, -1194.12, 70.2383, 3.25523, 0), +(@PATH, 5, -8979.6, -1192.74, 71.0625, 0.113639, 0); + + +/* Murloc Lurker - GUID 81317 */ + + +SET @NPC := 81317; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8982.79, -1197.27, 71.5068, 4.25486, 0), +(@PATH, 2, -8992.38, -1216.21, 72.667, 4.26664, 0), +(@PATH, 3, -8982.89, -1197.2, 71.4966, 1.05122, 0), +(@PATH, 4, -8972.12, -1172.88, 67.4567, 1.15332, 0); + + +/* Prowler - GUID 81332 */ + + +SET @NPC := 81332; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8872.29, -1087.06, 74.9164, 4.05152, 0), +(@PATH, 2, -8907.6, -1106.92, 71.4863, 3.63329, 0), +(@PATH, 3, -8906.84, -1137.5, 72.7956, 4.73089, 0), +(@PATH, 4, -8907.01, -1105.96, 71.5832, 0.146127, 0), +(@PATH, 5, -8875.17, -1088.51, 74.7873, 0.360148, 0), +(@PATH, 6, -8846.56, -1064.91, 76.2546, 0.758738, 0), +(@PATH, 7, -8827.76, -1053.79, 75.571, 0.562388, 0), +(@PATH, 8, -8848.08, -1061.99, 76.2686, 3.55279, 0); + + +/* Prowler - GUID 81334 */ + + +SET @NPC := 81334; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8877.08, -1039.29, 74.3784, 5.04505, 0), +(@PATH, 2, -8871.29, -1056.91, 75.192, 5.02345, 0), +(@PATH, 3, -8889.57, -1033.36, 71.2921, 1.21623, 0), +(@PATH, 4, -8889.9, -998.814, 70.4607, 6.09355, 0), +(@PATH, 5, -8868.08, -986.474, 74.5212, 0.472061, 0), +(@PATH, 6, -8862.79, -1013.32, 74.2073, 4.86048, 0); + + +/* Prowler - GUID 81335 */ + + +SET @NPC := 81335; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8799.25, -1100.22, 75.5618, 5.0961, 0), +(@PATH, 2, -8805.56, -1137.58, 76.7985, 4.90368, 0), +(@PATH, 3, -8829.51, -1152.93, 78.2275, 0.746962, 0), +(@PATH, 4, -8866.75, -1149.64, 75.7552, 0.236453, 0), +(@PATH, 5, -8829.35, -1154.91, 78.1821, 1.34386, 0), +(@PATH, 6, -8805.08, -1138.63, 76.8065, 1.25943, 0), +(@PATH, 7, -8800.45, -1100.8, 75.4307, 1.60108, 0), +(@PATH, 8, -8802.86, -1083.46, 77.0368, 1.70907, 0); + + +/* Prowler - GUID 81336 */ + + +SET @NPC := 81336; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -8822.31, `position_y` = -1020.83, `position_z` = 76.3172, `orientation` = 0.238409 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8813.17, -1023.99, 76.3728, 6.20744, 0), +(@PATH, 2, -8783.64, -1025.11, 73.6915, 6.06606, 0), +(@PATH, 3, -8766.76, -1029.71, 76.4465, 6.02483, 0), +(@PATH, 4, -8785.37, -1023.36, 73.6443, 2.681, 0), +(@PATH, 5, -8794.71, -1007.3, 75.1043, 1.86811, 0), +(@PATH, 6, -8800.23, -970.311, 73.1399, 1.73852, 0), +(@PATH, 7, -8803.9, -952.496, 73.4327, 2.25688, 0), +(@PATH, 8, -8802.08, -970.334, 73.2541, 3.8964, 0), +(@PATH, 9, -8821.89, -982.26, 74.9575, 3.81393, 0), +(@PATH, 10, -8833.15, -1005.52, 74.1467, 4.61503, 0), +(@PATH, 11, -8827.99, -1022.25, 76.1497, 5.01166, 0); + + +/* Prowler - GUID 81337 */ + + +SET @NPC := 81337; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -8812.42, `position_y` = -1038.22, `position_z` = 75.4827, `orientation` = 4.77211 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8802.44, -1058.98, 73.5921, 5.03914, 0), +(@PATH, 2, -8812.52, -1077.39, 74.2502, 4.62485, 0), +(@PATH, 3, -8828.8, -1109.15, 74.4035, 4.02599, 0), +(@PATH, 4, -8814.38, -1081.03, 74.448, 1.63053, 0), +(@PATH, 5, -8832.53, -1056.33, 75.9011, 0.481884, 0), +(@PATH, 6, -8820.81, -1035.34, 75.7089, 1.20445, 0), +(@PATH, 7, -8808.45, -1039.65, 75.0196, 5.71853, 0); + + +/* Prowler - GUID 81351 */ + + +SET @NPC := 81351; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9735.17, -1270.18, 51.1113, 2.99705, 0), +(@PATH, 2, -9724.03, -1295.48, 49.9265, 4.9625, 0), +(@PATH, 3, -9700.12, -1318.31, 51.4495, 4.48145, 0), +(@PATH, 4, -9699.98, -1348.61, 52.2218, 1.95836, 0), +(@PATH, 5, -9731.73, -1348.0, 53.1919, 0.340436, 0), +(@PATH, 6, -9733.68, -1302.55, 47.7874, 1.63831, 0), +(@PATH, 7, -9732.0, -1276.77, 51.734, 1.85036, 0), +(@PATH, 8, -9735.16, -1245.51, 49.6506, 1.4557, 0); + + +/* Prowler - GUID 81352 */ + + +SET @NPC := 81352; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9801.45, -1220.49, 36.8131, 3.6882, 0), +(@PATH, 2, -9828.03, -1235.7, 36.6896, 3.75889, 0), +(@PATH, 3, -9842.07, -1253.63, 36.5134, 4.41666, 0), +(@PATH, 4, -9826.56, -1234.9, 36.7272, 0.998214, 0), +(@PATH, 5, -9800.72, -1221.21, 36.8294, 0.526975, 0), +(@PATH, 6, -9784.82, -1189.23, 36.7496, 0.34437, 0), +(@PATH, 7, -9765.74, -1178.86, 37.3987, 0.44647, 0), +(@PATH, 8, -9784.21, -1187.78, 36.6843, 4.10839, 0); + + +/* Prowler - GUID 81353 */ + + +SET @NPC := 81353; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9838.14, -1200.88, 34.7705, 3.9101, 0), +(@PATH, 2, -9857.99, -1214.38, 32.9456, 3.77265, 0), +(@PATH, 3, -9874.36, -1228.24, 31.2223, 3.90028, 0), +(@PATH, 4, -9878.72, -1255.1, 31.7114, 1.51072, 0), +(@PATH, 5, -9889.28, -1283.57, 34.52, 3.95723, 0), +(@PATH, 6, -9891.67, -1311.19, 33.6973, 5.28847, 0), +(@PATH, 7, -9888.44, -1281.63, 34.3064, 0.884354, 0), +(@PATH, 8, -9878.1, -1257.12, 31.7551, 1.57943, 0), +(@PATH, 9, -9876.84, -1228.84, 30.8487, 0.570194, 0); + + +/* Prowler - GUID 81359 */ + + +SET @NPC := 81359; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -9917.58, `position_y` = -1435.52, `position_z` = 27.7561, `orientation` = 4.68765 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9917.41, -1452.89, 29.1725, 0.766552, 0), +(@PATH, 2, -9889.33, -1484.24, 28.9159, 5.91876, 0), +(@PATH, 3, -9859.52, -1491.9, 33.8901, 0.807784, 0), +(@PATH, 4, -9844.87, -1472.89, 34.5438, 1.40665, 0), +(@PATH, 5, -9834.17, -1436.21, 37.7908, 2.71827, 0), +(@PATH, 6, -9874.99, -1421.41, 34.6227, 3.14238, 0), +(@PATH, 7, -9910.84, -1424.56, 29.1021, 4.08092, 0); + + +/* Prowler - GUID 81375 */ + + +SET @NPC := 81375; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9611.71, -1499.37, 58.7902, 4.95863, 0), +(@PATH, 2, -9604.33, -1468.04, 59.5202, 1.44005, 0), +(@PATH, 3, -9587.28, -1453.13, 59.8799, 1.9859, 0), +(@PATH, 4, -9583.3, -1426.06, 59.2257, 1.47932, 0), +(@PATH, 5, -9601.21, -1390.53, 57.4595, 4.72694, 0), +(@PATH, 6, -9622.88, -1421.02, 56.981, 4.65429, 0), +(@PATH, 7, -9620.36, -1455.3, 57.0095, 4.76229, 0), +(@PATH, 8, -9610.05, -1474.48, 59.2641, 2.3845, 0), +(@PATH, 9, -9592.15, -1511.58, 61.5523, 0.136294, 0); + + +/* Prowler - GUID 81376 */ + + +SET @NPC := 81376; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9508.12, -1501.09, 60.5075, 0.919729, 0), +(@PATH, 2, -9492.05, -1487.48, 61.587, 0.744977, 0), +(@PATH, 3, -9446.15, -1507.12, 65.4989, 5.85988, 0), +(@PATH, 4, -9407.42, -1496.15, 66.1352, 0.295337, 0), +(@PATH, 5, -9367.82, -1476.92, 67.3466, 0.900094, 0), +(@PATH, 6, -9411.07, -1499.55, 66.933, 1.01987, 0), +(@PATH, 7, -9446.54, -1507.6, 65.5374, 2.93624, 0); + + +/* Prowler - GUID 81377 */ + + +SET @NPC := 81377; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9459.3, -1471.33, 62.3001, 0.297305, 0), +(@PATH, 2, -9437.29, -1468.54, 61.4541, 5.44755, 0), +(@PATH, 3, -9426.47, -1484.38, 62.0016, 5.27673, 0), +(@PATH, 4, -9439.38, -1467.18, 61.1962, 3.01872, 0), +(@PATH, 5, -9468.93, -1450.58, 59.7379, 2.72223, 0), +(@PATH, 6, -9495.76, -1438.24, 57.9974, 2.74972, 0), +(@PATH, 7, -9489.73, -1470.03, 60.4695, 4.94687, 0), +(@PATH, 8, -9477.19, -1486.69, 62.6042, 0.128445, 0); + + +/* Prowler - GUID 81395 */ + + +SET @NPC := 81395; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9360.01, -1395.05, 62.565, 0.990413, 0), +(@PATH, 2, -9345.56, -1364.45, 62.011, 1.17302, 0), +(@PATH, 3, -9344.61, -1341.34, 63.5134, 2.24116, 0), +(@PATH, 4, -9335.49, -1310.42, 64.3921, 0.582007, 0), +(@PATH, 5, -9345.39, -1340.8, 63.4341, 4.07114, 0), +(@PATH, 6, -9346.55, -1366.27, 62.0328, 3.92781, 0), +(@PATH, 7, -9362.65, -1397.07, 62.5107, 4.15361, 0), +(@PATH, 8, -9376.38, -1421.79, 63.2695, 4.36174, 0); + + +/* Prowler - GUID 81396 */ + + +SET @NPC := 81396; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9357.19, -1407.52, 63.4828, 0.487756, 0), +(@PATH, 2, -9318.32, -1382.08, 67.7708, 1.0395, 0), +(@PATH, 3, -9319.77, -1364.65, 68.5057, 1.65407, 0), +(@PATH, 4, -9299.94, -1338.26, 69.6551, 0.896163, 0), +(@PATH, 5, -9321.71, -1366.44, 68.1734, 4.38922, 0), +(@PATH, 6, -9321.61, -1382.71, 67.2971, 3.97493, 0), +(@PATH, 7, -9357.33, -1407.69, 63.4862, 3.32698, 0), +(@PATH, 8, -9380.69, -1409.32, 61.2156, 3.02263, 0); + + +/* Prowler - GUID 81398 */ + + +SET @NPC := 81398; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9389.21, -1449.72, 61.9269, 0.79014, 0), +(@PATH, 2, -9366.72, -1440.86, 64.541, 0.153966, 0), +(@PATH, 3, -9344.35, -1433.97, 65.7716, 1.41846, 0), +(@PATH, 4, -9338.47, -1402.09, 63.7427, 3.4762, 0), +(@PATH, 5, -9360.38, -1413.93, 63.5893, 3.82177, 0), +(@PATH, 6, -9382.14, -1441.18, 63.1157, 3.57437, 0), +(@PATH, 7, -9430.3, -1464.42, 61.813, 4.87813, 0); + + +/* Prowler - GUID 81399 */ + + +SET @NPC := 81399; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9395.29, -1468.65, 61.9998, 5.80884, 0), +(@PATH, 2, -9390.14, -1494.15, 67.4398, 4.08882, 0), +(@PATH, 3, -9399.88, -1514.81, 69.224, 4.38727, 0), +(@PATH, 4, -9387.93, -1495.8, 67.9299, 1.3301, 0), +(@PATH, 5, -9392.52, -1471.85, 62.448, 1.94468, 0), +(@PATH, 6, -9391.54, -1442.66, 61.5114, 1.44988, 0), +(@PATH, 7, -9390.07, -1420.9, 60.394, 1.48915, 0), +(@PATH, 8, -9393.33, -1439.26, 61.0959, 4.25768, 0); + + +/* Prowler - GUID 81402 */ + + +SET @NPC := 81402; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9521.88, -1515.28, 60.9161, 5.06074, 0), +(@PATH, 2, -9503.63, -1549.14, 61.1535, 5.56929, 0), +(@PATH, 3, -9484.63, -1556.75, 63.6488, 1.55983, 0), +(@PATH, 4, -9462.42, -1541.6, 64.2264, 3.60186, 0), +(@PATH, 5, -9459.55, -1520.29, 65.2988, 2.52587, 0), +(@PATH, 6, -9478.9, -1502.5, 62.7253, 2.44929, 0); + + +/* Prowler - GUID 81417 */ + + +SET @NPC := 81417; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9819.22, -1526.23, 39.8074, 5.63013, 0), +(@PATH, 2, -9838.75, -1550.17, 31.9678, 1.65209, 0), +(@PATH, 3, -9834.95, -1576.54, 29.0597, 1.62656, 0), +(@PATH, 4, -9820.47, -1598.01, 31.2972, 1.63244, 0), +(@PATH, 5, -9833.05, -1573.78, 30.0464, 1.45769, 0), +(@PATH, 6, -9837.12, -1550.74, 32.3041, 1.47929, 0), +(@PATH, 7, -9824.79, -1525.68, 38.8875, 1.33988, 0), +(@PATH, 8, -9838.08, -1496.82, 38.8147, 2.04281, 0); + + +/* Prowler - GUID 81420 */ + + +SET @NPC := 81420; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9804.52, -1493.64, 42.2424, 0.51325, 0), +(@PATH, 2, -9752.8, -1473.1, 48.3114, 5.94232, 0), +(@PATH, 3, -9734.55, -1442.36, 51.5916, 0.328682, 0), +(@PATH, 4, -9725.32, -1428.65, 52.2953, 4.38134, 0), +(@PATH, 5, -9696.62, -1438.23, 54.0833, 3.79819, 0), +(@PATH, 6, -9699.24, -1458.55, 51.7496, 3.7707, 0), +(@PATH, 7, -9730.7, -1463.59, 52.3724, 4.68176, 0), +(@PATH, 8, -9801.64, -1491.33, 42.8277, 4.17518, 0), +(@PATH, 9, -9822.9, -1504.85, 40.3474, 3.74911, 0); + + +/* Prowler - GUID 81431 */ + + +SET @NPC := 81431; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9560.29, -1483.68, 61.7165, 5.91486, 0), +(@PATH, 2, -9572.82, -1466.54, 60.393, 0.456343, 0), +(@PATH, 3, -9556.99, -1456.71, 58.9596, 6.11906, 0), +(@PATH, 4, -9522.11, -1442.81, 58.2297, 5.11376, 0), +(@PATH, 5, -9496.87, -1447.8, 59.7234, 3.73735, 0), +(@PATH, 6, -9496.47, -1460.55, 60.7852, 3.85319, 0), +(@PATH, 7, -9506.37, -1475.12, 61.4576, 3.01675, 0), +(@PATH, 8, -9523.86, -1475.89, 62.049, 3.18561, 0), +(@PATH, 9, -9538.96, -1486.62, 60.8387, 3.06583, 0); + + +/* Murloc - GUID 79623 */ + + +SET @NPC := 79623; +SET @PATH := @NPC * 10; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -9485.44, -409.706, 59.6521, 2.51726, 2000), +(@PATH, 2, -9484.27, -420.253, 59.9958, 6.18113, 2000), +(@PATH, 3, -9481.08, -420.579, 59.8585, 6.18113, 0), +(@PATH, 4, -9474.34, -421.269, 59.7554, 6.18113, 0), +(@PATH, 5, -9469.23, -421.793, 59.4631, 6.18113, 0); + + +/* Stormwind Orphan - GUID 79805 */ + + +SET @NPC := 79805; +SET @PATH := @NPC * 10; + +UPDATE `creature` SET `position_x` = -8625.0, `position_y` = 752.292, `position_z` = 96.7747, `orientation` = 3.76508 WHERE `guid` = @NPC; + +DELETE FROM `creature_addon` WHERE `guid` = @NPC; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES (@NPC, @PATH); +UPDATE `creature` SET `MovementType` = 2 WHERE `guid` = @NPC; + +DELETE FROM `waypoint_data` where `id` = @PATH; +INSERT INTO `waypoint_data` (`id`, `point`, `position_x`, `position_y`, `position_z`, `orientation`, `delay`) VALUES +(@PATH, 1, -8626.39, 743.037, 96.8322, 100.0, 0), +(@PATH, 2, -8627.57, 745.924, 96.8672, 100.0, 0), +(@PATH, 3, -8623.4, 753.237, 96.7595, 100.0, 0), +(@PATH, 4, -8617.67, 748.748, 97.6345, 100.0, 0), +(@PATH, 5, -8612.07, 742.614, 101.903, 100.0, 0), +(@PATH, 6, -8612.12, 735.167, 101.89, 100.0, 0), +(@PATH, 7, -8613.1, 728.437, 101.9, 100.0, 0), +(@PATH, 8, -8608.61, 733.172, 101.897, 100.0, 0), +(@PATH, 9, -8603.27, 740.623, 101.904, 100.0, 0), +(@PATH, 10, -8595.66, 740.165, 101.904, 100.0, 0), +(@PATH, 11, -8601.48, 733.407, 101.904, 100.0, 0), +(@PATH, 12, -8605.31, 727.319, 101.904, 100.0, 0), +(@PATH, 13, -8615.52, 727.063, 101.901, 100.0, 1000), +(@PATH, 14, -8607.57, 729.512, 101.903, 100.0, 0), +(@PATH, 15, -8600.44, 730.201, 101.903, 100.0, 0), +(@PATH, 16, -8597.01, 737.467, 101.904, 100.0, 0), +(@PATH, 17, -8600.44, 742.183, 101.904, 100.0, 0), +(@PATH, 18, -8607.69, 736.292, 101.898, 100.0, 0), +(@PATH, 19, -8610.44, 726.97, 101.902, 100.0, 0), +(@PATH, 20, -8610.4, 732.759, 101.896, 100.0, 0), +(@PATH, 21, -8613.14, 740.34, 101.897, 100.0, 0), +(@PATH, 22, -8616.39, 746.937, 99.3798, 100.0, 0), +(@PATH, 23, -8621.3, 753.886, 96.7381, 100.0, 0), +(@PATH, 24, -8628.01, 749.11, 96.8317, 100.0, 0), +(@PATH, 25, -8626.67, 739.997, 96.8415, 100.0, 0), +(@PATH, 26, -8625.76, 749.978, 96.8014, 100.0, 0), +(@PATH, 27, -8619.42, 756.304, 96.7158, 100.0, 0), +(@PATH, 28, -8608.4, 754.026, 96.7741, 100.0, 1000), +(@PATH, 29, -8616.48, 757.203, 96.6794, 100.0, 0), +(@PATH, 30, -8624.98, 752.307, 96.7744, 100.0, 0); From 0cc6a8cbf69e73fbbdd0a445ee099e991d449710 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 10 Jul 2022 18:24:24 +0000 Subject: [PATCH 106/119] chore(DB): import pending files Referenced commit(s): 4d85488e60f3b1b00b410e0389735218b8d33d2f --- .../rev_1657125381696313300.sql => db_world/2022_07_10_03.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657125381696313300.sql => db_world/2022_07_10_03.sql} (99%) diff --git a/data/sql/updates/pending_db_world/rev_1657125381696313300.sql b/data/sql/updates/db_world/2022_07_10_03.sql similarity index 99% rename from data/sql/updates/pending_db_world/rev_1657125381696313300.sql rename to data/sql/updates/db_world/2022_07_10_03.sql index 5502ef3df..26dcc3ea1 100644 --- a/data/sql/updates/pending_db_world/rev_1657125381696313300.sql +++ b/data/sql/updates/db_world/2022_07_10_03.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_10_02 -> 2022_07_10_03 -- /* Defias Cutpurse - GUID 79887 */ From 1704c78caa9ffa88996874224417d9111524a924 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 10 Jul 2022 20:24:55 +0200 Subject: [PATCH 107/119] =?UTF-8?q?fix(DB/SAI):=20Fixed=20summoning=20frie?= =?UTF-8?q?ndly=20NPCs=20during=20quest=20"The=20Air=20Stan=E2=80=A6=20(#1?= =?UTF-8?q?2349)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fix(DB/SAI): Fixed summoning friendly NPCs during quest "The Air Stands Still" Fixes #12315 --- data/sql/updates/pending_db_world/rev_1657467322559240600.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1657467322559240600.sql diff --git a/data/sql/updates/pending_db_world/rev_1657467322559240600.sql b/data/sql/updates/pending_db_world/rev_1657467322559240600.sql new file mode 100644 index 000000000..3e762c8fe --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657467322559240600.sql @@ -0,0 +1,4 @@ +-- +UPDATE `smart_scripts` SET `action_type`=85, `action_param1`=57911, `target_type`=1 WHERE `entryorguid`=30829 AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `action_type`=85, `action_param1`=57892, `target_type`=1 WHERE `entryorguid`=30830 AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `action_type`=85, `action_param1`=57917, `target_type`=1 WHERE `entryorguid`=30831 AND `source_type`=0 AND `id`=0; From e7500d37ff97370add4553bc7d50b5803159505f Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sun, 10 Jul 2022 18:27:09 +0000 Subject: [PATCH 108/119] chore(DB): import pending files Referenced commit(s): 1704c78caa9ffa88996874224417d9111524a924 --- .../rev_1657467322559240600.sql => db_world/2022_07_10_04.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657467322559240600.sql => db_world/2022_07_10_04.sql} (90%) diff --git a/data/sql/updates/pending_db_world/rev_1657467322559240600.sql b/data/sql/updates/db_world/2022_07_10_04.sql similarity index 90% rename from data/sql/updates/pending_db_world/rev_1657467322559240600.sql rename to data/sql/updates/db_world/2022_07_10_04.sql index 3e762c8fe..a4774a298 100644 --- a/data/sql/updates/pending_db_world/rev_1657467322559240600.sql +++ b/data/sql/updates/db_world/2022_07_10_04.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_10_03 -> 2022_07_10_04 -- UPDATE `smart_scripts` SET `action_type`=85, `action_param1`=57911, `target_type`=1 WHERE `entryorguid`=30829 AND `source_type`=0 AND `id`=0; UPDATE `smart_scripts` SET `action_type`=85, `action_param1`=57892, `target_type`=1 WHERE `entryorguid`=30830 AND `source_type`=0 AND `id`=0; From 6b2361312c898b9a7bec2dc0da8ae72dbebe1d8a Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Sun, 10 Jul 2022 18:08:48 -0300 Subject: [PATCH 109/119] fix(Scripts/ZulGurub): fix Thekal not dying in phase 2 (#12353) --- .../scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp index de71c138f..1b7bd7064 100644 --- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp +++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp @@ -144,7 +144,7 @@ public: CheckPhaseTransition(); _scheduler.Schedule(10s, [this, data](TaskContext /*context*/) { - if ((!_lorkhanDied || !_zathDied) && !WasDead) + if (!_lorkhanDied || !_zathDied || !WasDead) { ReviveZealot(data); } @@ -153,7 +153,7 @@ public: void DamageTaken(Unit* /*attacker*/, uint32& damage, DamageEffectType, SpellSchoolMask) override { - if (me->GetEntry() == NPC_HIGH_PRIEST_THEKAL && damage >= me->GetHealth()) + if (!me->HasAura(SPELL_TIGER_FORM) && damage >= me->GetHealth()) { damage = me->GetHealth() - 1; @@ -170,7 +170,7 @@ public: } } - if (!Enraged && me->HealthBelowPctDamaged(20, damage) && me->GetEntry() != NPC_HIGH_PRIEST_THEKAL) + if (!Enraged && me->HealthBelowPctDamaged(20, damage) && me->HasAura(SPELL_TIGER_FORM)) { DoCastSelf(SPELL_ENRAGE); Enraged = true; @@ -204,6 +204,7 @@ public: if (Creature* zealot = instance->GetCreature(zealotData)) { zealot->Respawn(true); + zealot->SetInCombatWithZone(); UpdateZealotStatus(zealotData, false); } } From 4d888f94316d15f35b3bae4539ac81b033093c96 Mon Sep 17 00:00:00 2001 From: acidmanifesto Date: Sun, 10 Jul 2022 19:27:56 -0400 Subject: [PATCH 110/119] update (core): Clean Up SendGMText (#12317) --- src/server/game/World/World.cpp | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 072fc251d..8e64e7b49 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2651,13 +2651,17 @@ void World::SendGMText(uint32 string_id, ...) Acore::LocalizedPacketListDo wt_do(wt_builder); for (SessionMap::iterator itr = m_sessions.begin(); itr != m_sessions.end(); ++itr) { - if (!itr->second || !itr->second->GetPlayer() || !itr->second->GetPlayer()->IsInWorld()) + // Session should have permissions to receive global gm messages + WorldSession* session = itr->second; + if (!session || AccountMgr::IsPlayerAccount(session->GetSecurity())) continue; - if (AccountMgr::IsPlayerAccount(itr->second->GetSecurity())) + // Player should be in world + Player* player = session->GetPlayer(); + if (!player || !player->IsInWorld()) continue; - wt_do(itr->second->GetPlayer()); + wt_do(session->GetPlayer()); } va_end(ap); From aa89f6c3a6fd441dfc74a7a5ab07a309e6acdb1d Mon Sep 17 00:00:00 2001 From: Axel Cocat Date: Mon, 11 Jul 2022 14:11:26 +0200 Subject: [PATCH 111/119] feat(Core): add OnDisplayId hook (#12320) --- src/server/game/Entities/Unit/Unit.cpp | 2 ++ src/server/game/Scripting/ScriptDefines/UnitScript.cpp | 8 ++++++++ src/server/game/Scripting/ScriptMgr.h | 3 +++ 3 files changed, 13 insertions(+) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 1bfbb3d5c..0e3f2dbb7 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -16359,6 +16359,8 @@ void Unit::SetDisplayId(uint32 modelId) // Set Gender by modelId if (CreatureModelInfo const* minfo = sObjectMgr->GetCreatureModelInfo(modelId)) SetByteValue(UNIT_FIELD_BYTES_0, 2, minfo->gender); + + sScriptMgr->OnDisplayIdChange(this, modelId); } void Unit::RestoreDisplayId() diff --git a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp index 7c7d755fd..86bcb42c8 100644 --- a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp @@ -210,3 +210,11 @@ void ScriptMgr::OnUnitUpdate(Unit* unit, uint32 diff) script->OnUnitUpdate(unit, diff); }); } + +void ScriptMgr::OnDisplayIdChange(Unit* unit, uint32 displayId) +{ + ExecuteScript([&](UnitScript* script) + { + script->OnDisplayIdChange(unit, displayId); + }); +} diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index ed213f619..550dadf4c 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -459,6 +459,8 @@ public: * @param diff Contains information about the diff time */ virtual void OnUnitUpdate(Unit* /*unit*/, uint32 /*diff*/) { } + + virtual void OnDisplayIdChange(Unit* /*unit*/, uint32 /*displayId*/) { } }; class MovementHandlerScript : public ScriptObject @@ -2400,6 +2402,7 @@ public: /* UnitScript */ bool IsCustomBuildValuesUpdate(Unit const* unit, uint8 updateType, ByteBuffer& fieldBuffer, Player const* target, uint16 index); bool OnBuildValuesUpdate(Unit const* unit, uint8 updateType, ByteBuffer& fieldBuffer, Player* target, uint16 index); void OnUnitUpdate(Unit* unit, uint32 diff); + void OnDisplayIdChange(Unit* unit, uint32 displayId); public: /* MovementHandlerScript */ void OnPlayerMove(Player* player, MovementInfo movementInfo, uint32 opcode); From a24da9b25258a5183555a30ff940d6d5a2707dfd Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Mon, 11 Jul 2022 15:39:49 +0200 Subject: [PATCH 112/119] =?UTF-8?q?fix(DB/SAI):=20Fixes=20starting=20waypo?= =?UTF-8?q?int=20movement=20during=20"I=20Sense=20a=20Distu=E2=80=A6=20(#1?= =?UTF-8?q?2350)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(DB/SAI): Fixes starting waypoint movement during "I Sense a Disturbance" quest. Fixes #11857 * Update. --- data/sql/updates/pending_db_world/rev_1657468147873034500.sql | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1657468147873034500.sql diff --git a/data/sql/updates/pending_db_world/rev_1657468147873034500.sql b/data/sql/updates/pending_db_world/rev_1657468147873034500.sql new file mode 100644 index 000000000..83b80d103 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657468147873034500.sql @@ -0,0 +1,4 @@ +-- +UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=28665 AND `source_type`=0 AND `id`=0; +UPDATE `smart_scripts` SET `event_type`=27 WHERE `entryorguid`=28665 AND `source_type`=0 AND `id`=1; +UPDATE `smart_scripts` SET `event_flags`=`event_flags`|512 WHERE `entryorguid`=2866500 AND `source_type`=9; From d6d961174d54b3e2c459acfb0e09117ffcf3e765 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Mon, 11 Jul 2022 13:42:04 +0000 Subject: [PATCH 113/119] chore(DB): import pending files Referenced commit(s): a24da9b25258a5183555a30ff940d6d5a2707dfd --- .../rev_1657468147873034500.sql => db_world/2022_07_11_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657468147873034500.sql => db_world/2022_07_11_00.sql} (87%) diff --git a/data/sql/updates/pending_db_world/rev_1657468147873034500.sql b/data/sql/updates/db_world/2022_07_11_00.sql similarity index 87% rename from data/sql/updates/pending_db_world/rev_1657468147873034500.sql rename to data/sql/updates/db_world/2022_07_11_00.sql index 83b80d103..b2dd391c6 100644 --- a/data/sql/updates/pending_db_world/rev_1657468147873034500.sql +++ b/data/sql/updates/db_world/2022_07_11_00.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_10_04 -> 2022_07_11_00 -- UPDATE `smart_scripts` SET `link`=0 WHERE `entryorguid`=28665 AND `source_type`=0 AND `id`=0; UPDATE `smart_scripts` SET `event_type`=27 WHERE `entryorguid`=28665 AND `source_type`=0 AND `id`=1; From 9920e01b2b961362d217a1042cd463ba2596eb61 Mon Sep 17 00:00:00 2001 From: Skjalf <47818697+Nyeriah@users.noreply.github.com> Date: Mon, 11 Jul 2022 14:57:38 -0300 Subject: [PATCH 114/119] feat(Core/Scripting): Add several UnitHooks (#12365) --- src/server/game/AI/CreatureAI.cpp | 3 +++ src/server/game/Entities/Unit/Unit.cpp | 3 +++ .../Scripting/ScriptDefines/UnitScript.cpp | 24 +++++++++++++++++++ src/server/game/Scripting/ScriptMgr.h | 7 ++++++ 4 files changed, 37 insertions(+) diff --git a/src/server/game/AI/CreatureAI.cpp b/src/server/game/AI/CreatureAI.cpp index 61ca3c80a..46ce5b842 100644 --- a/src/server/game/AI/CreatureAI.cpp +++ b/src/server/game/AI/CreatureAI.cpp @@ -25,6 +25,7 @@ #include "MapReference.h" #include "Player.h" #include "Vehicle.h" +#include "ScriptMgr.h" #include "Language.h" class PhasedRespawn : public BasicEvent @@ -226,6 +227,8 @@ void CreatureAI::EnterEvadeMode(EvadeReason why) me->DespawnOnEvade(); me->m_Events.AddEvent(new PhasedRespawn(*me), me->m_Events.CalculateTime(20000)); } + + sScriptMgr->OnUnitEnterEvadeMode(me, why); } /*void CreatureAI::AttackedBy(Unit* attacker) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 0e3f2dbb7..1823c9be7 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -13187,6 +13187,8 @@ void Unit::SetInCombatState(bool PvP, Unit* enemy, uint32 duration) if (creature->GetFormation()) creature->GetFormation()->MemberEngagingTarget(creature, enemy); + + sScriptMgr->OnUnitEnterCombat(creature, enemy); } creature->RefreshSwimmingFlag(); @@ -17498,6 +17500,7 @@ void Unit::Kill(Unit* killer, Unit* victim, bool durabilityLoss, WeaponAttackTyp if (CreatureAI* ai = creature->AI()) { ai->JustDied(killer); + sScriptMgr->OnUnitDeath(creature, killer); } if (TempSummon* summon = creature->ToTempSummon()) diff --git a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp index 86bcb42c8..538da43e9 100644 --- a/src/server/game/Scripting/ScriptDefines/UnitScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/UnitScript.cpp @@ -218,3 +218,27 @@ void ScriptMgr::OnDisplayIdChange(Unit* unit, uint32 displayId) script->OnDisplayIdChange(unit, displayId); }); } + +void ScriptMgr::OnUnitEnterEvadeMode(Unit* unit, uint8 evadeReason) +{ + ExecuteScript([&](UnitScript* script) + { + script->OnUnitEnterEvadeMode(unit, evadeReason); + }); +} + +void ScriptMgr::OnUnitEnterCombat(Unit* unit, Unit* victim) +{ + ExecuteScript([&](UnitScript* script) + { + script->OnUnitEnterCombat(unit, victim); + }); +} + +void ScriptMgr::OnUnitDeath(Unit* unit, Unit* killer) +{ + ExecuteScript([&](UnitScript* script) + { + script->OnUnitDeath(unit, killer); + }); +} diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 550dadf4c..66d2eeca1 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -461,6 +461,10 @@ public: virtual void OnUnitUpdate(Unit* /*unit*/, uint32 /*diff*/) { } virtual void OnDisplayIdChange(Unit* /*unit*/, uint32 /*displayId*/) { } + + virtual void OnUnitEnterEvadeMode(Unit* /*unit*/, uint8 /*evadeReason*/) { } + virtual void OnUnitEnterCombat(Unit* /*unit*/, Unit* /*victim*/) { } + virtual void OnUnitDeath(Unit* /*unit*/, Unit* /*killer*/) { } }; class MovementHandlerScript : public ScriptObject @@ -2403,6 +2407,9 @@ public: /* UnitScript */ bool OnBuildValuesUpdate(Unit const* unit, uint8 updateType, ByteBuffer& fieldBuffer, Player* target, uint16 index); void OnUnitUpdate(Unit* unit, uint32 diff); void OnDisplayIdChange(Unit* unit, uint32 displayId); + void OnUnitEnterEvadeMode(Unit* unit, uint8 why); + void OnUnitEnterCombat(Unit* unit, Unit* victim); + void OnUnitDeath(Unit* unit, Unit* killer); public: /* MovementHandlerScript */ void OnPlayerMove(Player* player, MovementInfo movementInfo, uint32 opcode); From e3e69fbbd1871daaa5f244db2c5fba1e035eec9e Mon Sep 17 00:00:00 2001 From: temperrr Date: Tue, 12 Jul 2022 03:32:06 +0200 Subject: [PATCH 115/119] fix(DB/Creature): Emeriss should not give reputation on kill (#12357) --- data/sql/updates/pending_db_world/emerissrep.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 data/sql/updates/pending_db_world/emerissrep.sql diff --git a/data/sql/updates/pending_db_world/emerissrep.sql b/data/sql/updates/pending_db_world/emerissrep.sql new file mode 100644 index 000000000..124ee39ff --- /dev/null +++ b/data/sql/updates/pending_db_world/emerissrep.sql @@ -0,0 +1 @@ +DELETE FROM `creature_onkill_reputation` WHERE (`creature_id` = 14889); From 71b8cea82801e9cd8858594e47fcdaf19adfdfba Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 12 Jul 2022 01:34:14 +0000 Subject: [PATCH 116/119] chore(DB): import pending files Referenced commit(s): e3e69fbbd1871daaa5f244db2c5fba1e035eec9e --- .../emerissrep.sql => db_world/2022_07_12_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/emerissrep.sql => db_world/2022_07_12_00.sql} (62%) diff --git a/data/sql/updates/pending_db_world/emerissrep.sql b/data/sql/updates/db_world/2022_07_12_00.sql similarity index 62% rename from data/sql/updates/pending_db_world/emerissrep.sql rename to data/sql/updates/db_world/2022_07_12_00.sql index 124ee39ff..db13456cd 100644 --- a/data/sql/updates/pending_db_world/emerissrep.sql +++ b/data/sql/updates/db_world/2022_07_12_00.sql @@ -1 +1,2 @@ +-- DB update 2022_07_11_00 -> 2022_07_12_00 DELETE FROM `creature_onkill_reputation` WHERE (`creature_id` = 14889); From 654ad10b7fd4fe66857ce900403f6053f5d8df02 Mon Sep 17 00:00:00 2001 From: Maelthyr <100411212+Maelthyrr@users.noreply.github.com> Date: Tue, 12 Jul 2022 13:30:06 +0200 Subject: [PATCH 117/119] fix(Scripts/World): Ysondre - Spawn adds should scale with raid size v2 (Source: VMangos) (#12368) --- src/server/scripts/World/boss_emerald_dragons.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/World/boss_emerald_dragons.cpp b/src/server/scripts/World/boss_emerald_dragons.cpp index 06a315f5c..5d0a3d35e 100644 --- a/src/server/scripts/World/boss_emerald_dragons.cpp +++ b/src/server/scripts/World/boss_emerald_dragons.cpp @@ -268,7 +268,19 @@ public: { Talk(SAY_YSONDRE_SUMMON_DRUIDS); - for (uint8 i = 0; i < 10; ++i) + auto const& attackers = me->GetThreatMgr().getThreatList(); + uint8 attackersCount = 0; + + for (const auto attacker : attackers) + { + if ((*attacker)->ToPlayer() && (*attacker)->IsAlive()) + ++attackersCount; + } + + uint8 amount = attackersCount < 30 ? attackersCount * 0.5f : 15; + amount = amount < 1 ? 1 : amount; + + for (uint8 i = 0; i < amount; ++i) DoCast(me, SPELL_SUMMON_DRUID_SPIRITS, true); ++_stage; } From afddf979803dd97158988951bf8808508f231d94 Mon Sep 17 00:00:00 2001 From: neifion-00000000 <91289495+neifion-00000000@users.noreply.github.com> Date: Tue, 12 Jul 2022 06:31:18 -0500 Subject: [PATCH 118/119] fix(DB/Creature): Zul'Gurub entrance creature improvements (#12367) --- .../rev_1657581203983147300.sql | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1657581203983147300.sql diff --git a/data/sql/updates/pending_db_world/rev_1657581203983147300.sql b/data/sql/updates/pending_db_world/rev_1657581203983147300.sql new file mode 100644 index 000000000..f20e370b0 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1657581203983147300.sql @@ -0,0 +1,20 @@ +-- +/* Maintenance on ZG Entranceway mobs part 1 Unpooled */ + +/* these paths do not exist, the creatures do tho and belong where they end up without the pathing */ +DELETE FROM `creature_addon` WHERE `guid` IN (49116, 49117, 49119); +DELETE FROM `waypoint_data` WHERE `id` IN (491160, 491170, 491190); +UPDATE `creature` SET `MovementType`=0 WHERE `guid` IN (49116, 49117, 49119); + +-- Below comments are research notes + +/* Trolls in front in Huts Can be Priests or Axe Throwers, outside huts are Axe Throwers */ +UPDATE `creature` SET `id2`=11350 WHERE `guid`=49115; +UPDATE `creature` SET `id2`=11350 WHERE `guid`=49742; + +/* All paired snakes can be either type, but there are some complexities on bigger packs. Adder/Adder is slightly less common than the other combos, except when it's not. Leaving it 50/50 is prolly fine on all 2 packs. */ +UPDATE `creature` SET `id1`=11371 WHERE `guid` IN (49739, 49740, 49091, 49090, 49089, 49088); +UPDATE `creature` SET `id2`=11372 WHERE `guid` IN (49739, 49740, 49091, 49090, 49089, 49088); + +/* (3) Bridge Entrance Patrol seen Axe/Priest and Axe/Axe */ +UPDATE `creature` SET `id2`=11350 WHERE `guid`=49752; From 35dfcf588f62339c44ff99a3e7e85f0b983ed923 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Tue, 12 Jul 2022 11:33:26 +0000 Subject: [PATCH 119/119] chore(DB): import pending files Referenced commit(s): afddf979803dd97158988951bf8808508f231d94 --- .../rev_1657581203983147300.sql => db_world/2022_07_12_01.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/rev_1657581203983147300.sql => db_world/2022_07_12_01.sql} (96%) diff --git a/data/sql/updates/pending_db_world/rev_1657581203983147300.sql b/data/sql/updates/db_world/2022_07_12_01.sql similarity index 96% rename from data/sql/updates/pending_db_world/rev_1657581203983147300.sql rename to data/sql/updates/db_world/2022_07_12_01.sql index f20e370b0..f482d047a 100644 --- a/data/sql/updates/pending_db_world/rev_1657581203983147300.sql +++ b/data/sql/updates/db_world/2022_07_12_01.sql @@ -1,3 +1,4 @@ +-- DB update 2022_07_12_00 -> 2022_07_12_01 -- /* Maintenance on ZG Entranceway mobs part 1 Unpooled */