From 256b291fa3b07603954e13330fc538b3e30a44aa Mon Sep 17 00:00:00 2001 From: temperrr Date: Sun, 16 Oct 2022 00:03:32 +0200 Subject: [PATCH 01/17] fix(DB/gameobject): Dutotar Food and Water Gameobject Overhaul (#13416) * Create durotarinsanity.sql * Update durotarinsanity.sql --- .../pending_db_world/durotarinsanity.sql | 343 ++++++++++++++++++ 1 file changed, 343 insertions(+) create mode 100644 data/sql/updates/pending_db_world/durotarinsanity.sql diff --git a/data/sql/updates/pending_db_world/durotarinsanity.sql b/data/sql/updates/pending_db_world/durotarinsanity.sql new file mode 100644 index 000000000..6cc4164f7 --- /dev/null +++ b/data/sql/updates/pending_db_world/durotarinsanity.sql @@ -0,0 +1,343 @@ +-- Durotar Food Crate Water Barrel Gameobject Overhaul + +/* Remove existing Water Barrels 3658--some of these may be correct, but we have all the spawns now so this will be easier */ +DELETE FROM `gameobject` WHERE `guid` IN (12551, 12397, 12395, 12351, 12391, 12498, 12550, 12393); +/* Remove existing Food Crates 3719 as well */ +DELETE FROM `gameobject` WHERE `guid` IN (12553, 12549, 12502, 12501, 12350, 12346, 12602, 12505, 12392); +SET @GAMEOBJECTBLOCK :=44477; -- There is a large free block of gameobject guids starting there that fits all 122 objects +DELETE FROM `gameobject` WHERE `guid` BETWEEN @GAMEOBJECTBLOCK+0 AND @GAMEOBJECTBLOCK+121; +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 +-- Durotar Food Water GO Pool I Kolkar Crag +(@GAMEOBJECTBLOCK+0, 3658, 1, 0, 0, 1, 1, -1045.77, -4608.98, 25.831, 0.0349062, 0, 0, 0.0174522, 0.999848, 420, 255, 1, '', 0), -- .go xyz -1045.77 -4608.98 +(@GAMEOBJECTBLOCK+1, 3719, 1, 0, 0, 1, 1, -1045.77, -4608.98, 25.831, 0.0349062, 0, 0, 0.0174522, 0.999848, 420, 255, 1, '', 0), -- .go xyz -1045.77 -4608.98 +(@GAMEOBJECTBLOCK+2, 3658, 1, 0, 0, 1, 1, -912.076, -4474.18, 29.7029, 0.0349062, 0, 0, 0.0174522, 0.999848, 420, 255, 1, '', 0), -- .go xyz -912.076 -4474.18 +(@GAMEOBJECTBLOCK+3, 3719, 1, 0, 0, 1, 1, -912.076, -4474.18, 29.7029, 0.0349062, 0, 0, 0.0174522, 0.999848, 420, 255, 1, '', 0), -- .go xyz -912.076 -4474.18 +(@GAMEOBJECTBLOCK+4, 3658, 1, 0, 0, 1, 1, -970.388, -4401.15, 29.264133, 3.735006, 0, 0, -0.956305, 0.292372, 420, 255, 1, "", 0), -- .go xyz -970.388 -4401.15 +(@GAMEOBJECTBLOCK+5, 3719, 1, 0, 0, 1, 1, -970.388, -4401.15, 29.264133, 3.735006, 0, 0, -0.956305, 0.292372, 420, 255, 1, "", 0), -- .go xyz -970.388 -4401.15 +-- Durotar Food Water GO Pool II x4 Echo Isles +(@GAMEOBJECTBLOCK+6, 3658, 1, 0, 0, 1, 1, -1336.29, -5200.97, -0.091026, 5.60251, 0, 0, -0.333807, 0.942641, 420, 255, 1, '', 0), -- .go xyz -1336.29 -5200.97 +(@GAMEOBJECTBLOCK+7, 3719, 1, 0, 0, 1, 1, -1336.29, -5200.97, -0.091026, 5.60251, 0, 0, -0.333807, 0.942641, 420, 255, 1, '', 0), -- .go xyz -1336.29 -5200.97 +(@GAMEOBJECTBLOCK+8, 3658, 1, 0, 0, 1, 1, -968.305, -5199.9, 0.064211, 0.366518, 0, 0, 0.182235, 0.983255, 420, 255, 1, '', 0), -- .go xyz -968.305 -5199.9 +(@GAMEOBJECTBLOCK+9, 3719, 1, 0, 0, 1, 1, -968.305, -5199.9, 0.064211, 0.366518, 0, 0, 0.182235, 0.983255, 420, 255, 1, '', 0), -- .go xyz -968.305 -5199.9 +(@GAMEOBJECTBLOCK+10, 3658, 1, 0, 0, 1, 1, -758.5, -5366.35, -0.032768, 4.2237, 0, 0, -0.857167, 0.515038, 420, 255, 1, '', 0), -- .go xyz -758.5 -5366.35 +(@GAMEOBJECTBLOCK+11, 3719, 1, 0, 0, 1, 1, -758.5, -5366.35, -0.032768, 4.2237, 0, 0, -0.857167, 0.515038, 420, 255, 1, '', 0), -- .go xyz -758.5 -5366.35 +(@GAMEOBJECTBLOCK+12, 3658, 1, 0, 0, 1, 1, -1004.27, -5600.04, -0.21399, 5.98648, 0, 0, -0.147809, 0.989016, 420, 255, 1, '', 0), -- .go xyz -1004.27 -5600.04 +(@GAMEOBJECTBLOCK+13, 3719, 1, 0, 0, 1, 1, -1004.27, -5600.04, -0.21399, 5.98648, 0, 0, -0.147809, 0.989016, 420, 255, 1, '', 0), -- .go xyz -1004.27 -5600.04 +(@GAMEOBJECTBLOCK+14, 3658, 1, 0, 0, 1, 1, -641.353, -5689.82, -0.171481, 5.2709, 0, 0, -0.484809, 0.87462, 420, 255, 1, '', 0), -- .go xyz -641.353 -5689.82 +(@GAMEOBJECTBLOCK+15, 3719, 1, 0, 0, 1, 1, -641.353, -5689.82, -0.171481, 5.2709, 0, 0, -0.484809, 0.87462, 420, 255, 1, '', 0), -- .go xyz -641.353 -5689.82 +(@GAMEOBJECTBLOCK+16, 3658, 1, 0, 0, 1, 1, -1166.98, -5145.53, -0.077441, 5.48033, 0, 0, -0.390731, 0.920505, 420, 255, 1, '', 0), -- .go xyz -1166.98 -5145.53 +(@GAMEOBJECTBLOCK+17, 3719, 1, 0, 0, 1, 1, -1166.98, -5145.53, -0.077441, 5.48033, 0, 0, -0.390731, 0.920505, 420, 255, 1, '', 0), -- .go xyz -1166.98 -5145.53 +(@GAMEOBJECTBLOCK+18, 3658, 1, 0, 0, 1, 1, -1245.5, -5619.57, -0.066979, 2.42601, 0, 0, 0.936672, 0.350207, 420, 255, 1, '', 0), -- .go xyz -1245.5 -5619.57 +(@GAMEOBJECTBLOCK+19, 3719, 1, 0, 0, 1, 1, -1245.5, -5619.57, -0.066979, 2.42601, 0, 0, 0.936672, 0.350207, 420, 255, 1, '', 0), -- .go xyz -1245.5 -5619.57 +(@GAMEOBJECTBLOCK+20, 3658, 1, 0, 0, 1, 1, -1404.75, -5116.98, -0.015283, 2.9845, 0, 0, 0.996917, 0.0784664, 420, 255, 1, '', 0), -- .go xyz -1404.75 -5116.98 +(@GAMEOBJECTBLOCK+21, 3719, 1, 0, 0, 1, 1, -1404.75, -5116.98, -0.015283, 2.9845, 0, 0, 0.996917, 0.0784664, 420, 255, 1, '', 0), -- .go xyz -1404.75 -5116.98 +(@GAMEOBJECTBLOCK+22, 3658, 1, 0, 0, 1, 1, -1123.15, -5575.75, 7.39658, 0.226892, 0, 0, 0.113203, 0.993572, 420, 255, 1, '', 0), -- .go xyz -1123.15 -5575.75 +(@GAMEOBJECTBLOCK+23, 3719, 1, 0, 0, 1, 1, -1123.15, -5575.75, 7.39658, 0.226892, 0, 0, 0.113203, 0.993572, 420, 255, 1, '', 0), -- .go xyz -1123.15 -5575.75 +(@GAMEOBJECTBLOCK+24, 3658, 1, 0, 0, 1, 1, -805.108, -5698.99, 0.052685, 5.68977, 0, 0, -0.292372, 0.956305, 420, 255, 1, '', 0), -- .go xyz -805.108 -5698.99 +(@GAMEOBJECTBLOCK+25, 3719, 1, 0, 0, 1, 1, -805.108, -5698.99, 0.052685, 5.68977, 0, 0, -0.292372, 0.956305, 420, 255, 1, '', 0), -- .go xyz -805.108 -5698.99 +(@GAMEOBJECTBLOCK+26, 3658, 1, 0, 0, 1, 1, -1241.68, -5507.15, 5.7288, 1.27409, 0, 0, 0.594822, 0.803857, 420, 255, 1, '', 0), -- .go xyz -1241.68 -5507.15 +(@GAMEOBJECTBLOCK+27, 3719, 1, 0, 0, 1, 1, -1241.68, -5507.15, 5.7288, 1.27409, 0, 0, 0.594822, 0.803857, 420, 255, 1, '', 0), -- .go xyz -1241.68 -5507.15 +(@GAMEOBJECTBLOCK+28, 3658, 1, 0, 0, 1, 1, -1295.43, -5368.52, -0.16403, 0.436332, 0, 0, 0.216439, 0.976296, 420, 255, 1, '', 0), -- .go xyz -1295.43 -5368.52 +(@GAMEOBJECTBLOCK+29, 3719, 1, 0, 0, 1, 1, -1295.43, -5368.52, -0.16403, 0.436332, 0, 0, 0.216439, 0.976296, 420, 255, 1, '', 0), -- .go xyz -1295.43 -5368.52 +(@GAMEOBJECTBLOCK+30, 3719, 1, 0, 0, 1, 1, -1550.397, -5221.865, -0.031495, 2.426008, 0, 0, 0.936672, 0.350207, 420, 255, 1, '', 0), -- .go xyz -1550.3973388671875 -5221.86474609375 +(@GAMEOBJECTBLOCK+31, 3719, 1, 0, 0, 1, 1, -1550.397, -5221.865, -0.031495, 2.426008, 0, 0, 0.936672, 0.350207, 420, 255, 1, '', 0), -- .go xyz -1550.3973388671875 -5221.86474609375 +(@GAMEOBJECTBLOCK+32, 3719, 1, 0, 0, 1, 1, -1642.232, -5284.792, -0.033276, 0.523598, 0, 0, 0.258819, 0.965926, 420, 255, 1, '', 0), -- .go xyz -1642.2322998046875 -5284.79248046875 +(@GAMEOBJECTBLOCK+33, 3719, 1, 0, 0, 1, 1, -1642.232, -5284.792, -0.033276, 0.523598, 0, 0, 0.258819, 0.965926, 420, 255, 1, '', 0), -- .go xyz -1642.2322998046875 -5284.79248046875 +-- Durotar Food Water GO Pool III Tiragaurd Keep +(@GAMEOBJECTBLOCK+34, 3658, 1, 0, 0, 1, 1, -174.109, -4986.14, 22.5386, 6.14356, 0, 0, -0.0697556, 0.997564, 420, 255, 1, '', 0), -- .go xyz -174.109 -4986.14 +(@GAMEOBJECTBLOCK+35, 3719, 1, 0, 0, 1, 1, -174.109, -4986.14, 22.5386, 6.14356, 0, 0, -0.0697556, 0.997564, 420, 255, 1, '', 0), -- .go xyz -174.109 -4986.14 +(@GAMEOBJECTBLOCK+36, 3658, 1, 0, 0, 1, 1, -236.963, -5121.01, 25.2436, 2.16421, 0, 0, 0.882947, 0.469473, 420, 255, 1, '', 0), -- .go xyz -236.963 -5121.01 +(@GAMEOBJECTBLOCK+37, 3719, 1, 0, 0, 1, 1, -236.963, -5121.01, 25.2436, 2.16421, 0, 0, 0.882947, 0.469473, 420, 255, 1, '', 0), -- .go xyz -236.963 -5121.01 +(@GAMEOBJECTBLOCK+38, 3658, 1, 0, 0, 1, 1, -153.696, -5023.12, 21.9477, 6.17847, 0, 0, -0.0523357, 0.99863, 420, 255, 1, '', 0), -- .go xyz -153.696 -5023.12 +(@GAMEOBJECTBLOCK+39, 3719, 1, 0, 0, 1, 1, -153.696, -5023.12, 21.9477, 6.17847, 0, 0, -0.0523357, 0.99863, 420, 255, 1, '', 0), -- .go xyz -153.696 -5023.12 +-- Durotar Food Water GO Pool IV x2 Coast +(@GAMEOBJECTBLOCK+40, 3658, 1, 0, 0, 1, 1, 390.932, -5124.09, -0.05675, 2.65289, 0, 0, 0.970295, 0.241925, 420, 255, 1, '', 0), -- .go xyz 390.932 -5124.09 +(@GAMEOBJECTBLOCK+41, 3719, 1, 0, 0, 1, 1, 390.932, -5124.09, -0.05675, 2.65289, 0, 0, 0.970295, 0.241925, 420, 255, 1, '', 0), -- .go xyz 390.932 -5124.09 +(@GAMEOBJECTBLOCK+42, 3658, 1, 0, 0, 1, 1, -515.953, -5243.47, 0.036085, 0.767944, 0, 0, 0.374606, 0.927184, 420, 255, 1, '', 0), -- .go xyz -515.953 -5243.47 +(@GAMEOBJECTBLOCK+43, 3719, 1, 0, 0, 1, 1, -515.953, -5243.47, 0.036085, 0.767944, 0, 0, 0.374606, 0.927184, 420, 255, 1, '', 0), -- .go xyz -515.953 -5243.47 +(@GAMEOBJECTBLOCK+44, 3658, 1, 0, 0, 1, 1, -639.43, -5185.13, 0.112274, 2.60054, 0, 0, 0.96363, 0.267241, 420, 255, 1, '', 0), -- .go xyz -639.43 -5185.13 +(@GAMEOBJECTBLOCK+45, 3719, 1, 0, 0, 1, 1, -639.43, -5185.13, 0.112274, 2.60054, 0, 0, 0.96363, 0.267241, 420, 255, 1, '', 0), -- .go xyz -639.43 -5185.13 +(@GAMEOBJECTBLOCK+46, 3658, 1, 0, 0, 1, 1, 1266.49, -5030.35, -0.039411, 0.802851, 0, 0, 0.390731, 0.920505, 420, 255, 1, '', 0), -- .go xyz 1266.49 -5030.35 +(@GAMEOBJECTBLOCK+47, 3719, 1, 0, 0, 1, 1, 1266.49, -5030.35, -0.039411, 0.802851, 0, 0, 0.390731, 0.920505, 420, 255, 1, '', 0), -- .go xyz 1266.49 -5030.35 +(@GAMEOBJECTBLOCK+48, 3658, 1, 0, 0, 1, 1, 933.269, -5104.26, -0.032131, 0.471238, 0, 0, 0.233445, 0.97237, 420, 255, 1, '', 0), -- .go xyz 933.269 -5104.26 +(@GAMEOBJECTBLOCK+49, 3719, 1, 0, 0, 1, 1, 933.269, -5104.26, -0.032131, 0.471238, 0, 0, 0.233445, 0.97237, 420, 255, 1, '', 0), -- .go xyz 933.269 -5104.26 +(@GAMEOBJECTBLOCK+50, 3658, 1, 0, 0, 1, 1, 730.074, -5079.44, -0.030667, 2.68781, 0, 0, 0.97437, 0.224951, 420, 255, 1, '', 0), -- .go xyz 730.074 -5079.44 +(@GAMEOBJECTBLOCK+51, 3719, 1, 0, 0, 1, 1, 730.074, -5079.44, -0.030667, 2.68781, 0, 0, 0.97437, 0.224951, 420, 255, 1, '', 0), -- .go xyz 730.074 -5079.44 +(@GAMEOBJECTBLOCK+52, 3658, 1, 0, 0, 1, 1, -366.615, -5211.02, -0.034382, 1.53589, 0, 0, 0.694658, 0.71934, 420, 255, 1, '', 0), -- .go xyz -366.615 -5211.02 +(@GAMEOBJECTBLOCK+53, 3719, 1, 0, 0, 1, 1, -366.615, -5211.02, -0.034382, 1.53589, 0, 0, 0.694658, 0.71934, 420, 255, 1, '', 0), -- .go xyz -366.615 -5211.02 +(@GAMEOBJECTBLOCK+54, 3658, 1, 0, 0, 1, 1, 204.816, -5146.84, -0.014512, 5.39307, 0, 0, -0.430511, 0.902586, 420, 255, 1, '', 0), -- .go xyz 204.816 -5146.84 +(@GAMEOBJECTBLOCK+55, 3719, 1, 0, 0, 1, 1, 204.816, -5146.84, -0.014512, 5.39307, 0, 0, -0.430511, 0.902586, 420, 255, 1, '', 0), -- .go xyz 204.816 -5146.84 +(@GAMEOBJECTBLOCK+56, 3658, 1, 0, 0, 1, 1, -103.63, -5201.51, -0.04023, 2.21657, 0, 0, 0.894934, 0.446199, 420, 255, 1, '', 0), -- .go xyz -103.63 -5201.51 +(@GAMEOBJECTBLOCK+57, 3719, 1, 0, 0, 1, 1, -103.63, -5201.51, -0.04023, 2.21657, 0, 0, 0.894934, 0.446199, 420, 255, 1, '', 0), -- .go xyz -103.63 -5201.51 +-- Durotar Food Water GO Pool V x3 Razor Hill (on longer timer) +(@GAMEOBJECTBLOCK+58, 3658, 1, 0, 0, 1, 1, 289.618, -4771.3, 11.769, 5.77704, 0, 0, -0.25038, 0.968148, 900, 255, 1, '', 0), -- .go xyz 289.618 -4771.3 +(@GAMEOBJECTBLOCK+59, 3719, 1, 0, 0, 1, 1, 289.618, -4771.3, 11.769, 5.77704, 0, 0, -0.25038, 0.968148, 900, 255, 1, '', 0), -- .go xyz 289.618 -4771.3 +(@GAMEOBJECTBLOCK+60, 3658, 1, 0, 0, 1, 1, 319.151, -4667.86, 16.0833, 0.767944, 0, 0, 0.374606, 0.927184, 900, 255, 1, '', 0), -- .go xyz 319.151 -4667.86 +(@GAMEOBJECTBLOCK+61, 3719, 1, 0, 0, 1, 1, 319.151, -4667.86, 16.0833, 0.767944, 0, 0, 0.374606, 0.927184, 900, 255, 1, '', 0), -- .go xyz 319.151 -4667.86 +(@GAMEOBJECTBLOCK+62, 3658, 1, 0, 0, 1, 1, 292.627, -4828.49, 10.5234, 0.855211, 0, 0, 0.414693, 0.909961, 900, 255, 1, '', 0), -- .go xyz 292.627 -4828.49 +(@GAMEOBJECTBLOCK+63, 3719, 1, 0, 0, 1, 1, 292.627, -4828.49, 10.5234, 0.855211, 0, 0, 0.414693, 0.909961, 900, 255, 1, '', 0), -- .go xyz 292.627 -4828.49 +(@GAMEOBJECTBLOCK+64, 3658, 1, 0, 0, 1, 1, 269.646, -4701.72, 11.6288, 1.39626, 0, 0, 0.642787, 0.766045, 900, 255, 1, '', 0), -- .go xyz 269.646 -4701.72 +(@GAMEOBJECTBLOCK+65, 3719, 1, 0, 0, 1, 1, 269.646, -4701.72, 11.6288, 1.39626, 0, 0, 0.642787, 0.766045, 900, 255, 1, '', 0), -- .go xyz 269.646 -4701.72 +(@GAMEOBJECTBLOCK+66, 3658, 1, 0, 0, 1, 1, 382.927, -4597.71, 54.7897, 0.610863, 0, 0, 0.300705, 0.953717, 900, 255, 1, '', 0), -- .go xyz 382.927 -4597.71 +(@GAMEOBJECTBLOCK+67, 3719, 1, 0, 0, 1, 1, 382.927, -4597.71, 54.7897, 0.610863, 0, 0, 0.300705, 0.953717, 900, 255, 1, '', 0), -- .go xyz 382.927 -4597.71 +(@GAMEOBJECTBLOCK+68, 3658, 1, 0, 0, 1, 1, 319.082, -4768.63, 11.9896, 1.72787, 0, 0, 0.760406, 0.649449, 900, 255, 1, '', 0), -- .go xyz 319.082 -4768.63 +(@GAMEOBJECTBLOCK+69, 3719, 1, 0, 0, 1, 1, 319.082, -4768.63, 11.9896, 1.72787, 0, 0, 0.760406, 0.649449, 900, 255, 1, '', 0), -- .go xyz 319.082 -4768.63 +(@GAMEOBJECTBLOCK+70, 3658, 1, 0, 0, 1, 1, 387.24, -4586.66, 76.1843, 0.680677, 0, 0, 0.333806, 0.942642, 900, 255, 1, '', 0), -- .go xyz 387.24 -4586.66 +(@GAMEOBJECTBLOCK+71, 3719, 1, 0, 0, 1, 1, 387.24, -4586.66, 76.1843, 0.680677, 0, 0, 0.333806, 0.942642, 900, 255, 1, '', 0), -- .go xyz 387.24 -4586.66 +(@GAMEOBJECTBLOCK+72, 3658, 1, 0, 0, 1, 1, 290.396, -4706.11, 12.8422, 4.5204, 0, 0, -0.771625, 0.636078, 900, 255, 1, '', 0), -- .go xyz 290.396 -4706.11 +(@GAMEOBJECTBLOCK+73, 3719, 1, 0, 0, 1, 1, 290.396, -4706.11, 12.8422, 4.5204, 0, 0, -0.771625, 0.636078, 900, 255, 1, '', 0), -- .go xyz 290.396 -4706.11 +(@GAMEOBJECTBLOCK+74, 3658, 1, 0, 0, 1, 1, 298.8803, -4663.1113, 16.77118, 4.4156833, 0, 0, -0.80385685, 0.5948228, 900, 255, 1, '', 0), -- .go xyz 290.396 -4706.11 +(@GAMEOBJECTBLOCK+75, 3719, 1, 0, 0, 1, 1, 298.8803, -4663.1113, 16.77118, 4.4156833, 0, 0, -0.80385685, 0.5948228, 900, 255, 1, '', 0), -- .go xyz 290.396 -4706.11 +(@GAMEOBJECTBLOCK+76, 3658, 1, 0, 0, 1, 1, 339.33615, -4700.809, 16.457773, 1.9198616, 0, 0, 0.8191519, 0.5735767, 900, 255, 1, '', 0), -- .go xyz 290.396 -4706.11 +(@GAMEOBJECTBLOCK+77, 3719, 1, 0, 0, 1, 1, 339.33615, -4700.809, 16.457773, 1.9198616, 0, 0, 0.8191519, 0.5735767, 900, 255, 1, '', 0), -- .go xyz 290.396 -4706.11 +(@GAMEOBJECTBLOCK+78, 3658, 1, 0, 0, 1, 1, 321.55337, -4768.1733, 11.671841, 3.385940, 0, 0, -0.99254608, 0.12186995, 900, 255, 1, '', 0), -- .go xyz 290.396 -4706.11 +(@GAMEOBJECTBLOCK+79, 3719, 1, 0, 0, 1, 1, 321.55337, -4768.1733, 11.671841, 3.385940, 0, 0, -0.99254608, 0.12186995, 900, 255, 1, '', 0), -- .go xyz 290.396 -4706.11 +-- Durotar Food Water GO Pool VI Path to Orgrimmar +(@GAMEOBJECTBLOCK+80, 3658, 1, 0, 0, 1, 1, 787.201, -4530.7, 5.7406, 1.78023, 0, 0, 0.777145, 0.629321, 420, 255, 1, '', 0), -- .go xyz 787.201 -4530.7 +(@GAMEOBJECTBLOCK+81, 3719, 1, 0, 0, 1, 1, 787.201, -4530.7, 5.7406, 1.78023, 0, 0, 0.777145, 0.629321, 420, 255, 1, '', 0), -- .go xyz 787.201 -4530.7 +(@GAMEOBJECTBLOCK+82, 3658, 1, 0, 0, 1, 1, 758.13, -4565.89, 1.62941, 3.42085, 0, 0, -0.990268, 0.139175, 420, 255, 1, '', 0), -- .go xy 758.13 -4565.8 +(@GAMEOBJECTBLOCK+83, 3719, 1, 0, 0, 1, 1, 758.13, -4565.89, 1.62941, 3.42085, 0, 0, -0.990268, 0.139175, 420, 255, 1, '', 0), -- .go xy 758.13 -4565.8 +(@GAMEOBJECTBLOCK+84, 3658, 1, 0, 0, 1, 1, 737.128, -4604.469, -3.308156, 5.550147, 0, 0, -0.358368, 0.933580, 420, 255, 1, '', 0), +(@GAMEOBJECTBLOCK+85, 3719, 1, 0, 0, 1, 1, 737.128, -4604.469, -3.308156, 5.550147, 0, 0, -0.358368, 0.933580, 420, 255, 1, '', 0), +-- Durotar Food Water GO Pool VII Dustwind Cave +(@GAMEOBJECTBLOCK+86, 3658, 1, 0, 0, 1, 1, 946.095, -4704.73, 23.0614, 3.00195, 0, 0, 0.997563, 0.0697661, 420, 255, 1, '', 0), -- .go xyz 946.095 -4704.73 +(@GAMEOBJECTBLOCK+87, 3719, 1, 0, 0, 1, 1, 946.095, -4704.73, 23.0614, 3.00195, 0, 0, 0.997563, 0.0697661, 420, 255, 1, '', 0), -- .go xyz 946.095 -4704.73 +(@GAMEOBJECTBLOCK+88, 3658, 1, 0, 0, 1, 1, 859.76, -4792.43, 36.3753, 3.10665, 0, 0, 0.999847, 0.0174693, 420, 255, 1, '', 0), -- .go xyz 859.76 -4792.43 +(@GAMEOBJECTBLOCK+89, 3719, 1, 0, 0, 1, 1, 859.76, -4792.43, 36.3753, 3.10665, 0, 0, 0.999847, 0.0174693, 420, 255, 1, '', 0), -- .go xyz 859.76 -4792.43 +(@GAMEOBJECTBLOCK+90, 3658, 1, 0, 0, 1, 1, 1102.29, -4951.8, 15.6024, 3.82227, 0, 0, -0.942641, 0.333808, 420, 255, 1, '', 0), -- .go xyz 1102.29 -4951.8 +(@GAMEOBJECTBLOCK+91, 3719, 1, 0, 0, 1, 1, 1102.29, -4951.8, 15.6024, 3.82227, 0, 0, -0.942641, 0.333808, 420, 255, 1, '', 0), -- .go xyz 1102.29 -4951.8 +-- Durotar Food Water GO Pool VIII Harpies East +(@GAMEOBJECTBLOCK+92, 3658, 1, 0, 0, 1, 1, 915.418, -4633.35, 18.9878, 1.41372, 0, 0, 0.649447, 0.760406, 420, 255, 1, '', 0), -- .go xyz 915.418 -4633.35 +(@GAMEOBJECTBLOCK+93, 3719, 1, 0, 0, 1, 1, 915.418, -4633.35, 18.9878, 1.41372, 0, 0, 0.649447, 0.760406, 420, 255, 1, '', 0), -- .go xyz 915.418 -4633.35 +(@GAMEOBJECTBLOCK+94, 3658, 1, 0, 0, 1, 1, 993.55, -4672.15, 26.9618, 5.86431, 0, 0, -0.207911, 0.978148, 420, 255, 1, '', 0), -- .go xyz 993.55 -4672.15 +(@GAMEOBJECTBLOCK+95, 3719, 1, 0, 0, 1, 1, 993.55, -4672.15, 26.9618, 5.86431, 0, 0, -0.207911, 0.978148, 420, 255, 1, '', 0), -- .go xyz 993.55 -4672.15 +(@GAMEOBJECTBLOCK+96, 3658, 1, 0, 0, 1, 1, 1143.52, -4695.76, 17.7529, 0.226892, 0, 0, 0.113203, 0.993572, 420, 255, 1, '', 0), -- .go xyz 1143.52 -4695.76 +(@GAMEOBJECTBLOCK+97, 3719, 1, 0, 0, 1, 1, 1143.52, -4695.76, 17.7529, 0.226892, 0, 0, 0.113203, 0.993572, 420, 255, 1, '', 0), -- .go xyz 1143.52 -4695.76 +-- Durotar Food Water GO Pool IX Harpies West +(@GAMEOBJECTBLOCK+98, 3658, 1, 0, 0, 1, 1, 665.216, -4540.14, 8.83067, 4.50295, 0, 0, -0.777145, 0.629321, 420, 255, 1, '', 0), -- .go xyz 665.216 -4540.14 +(@GAMEOBJECTBLOCK+99, 3719, 1, 0, 0, 1, 1, 665.216, -4540.14, 8.83067, 4.50295, 0, 0, -0.777145, 0.629321, 420, 255, 1, '', 0), -- .go xyz 665.216 -4540.14 +(@GAMEOBJECTBLOCK+100, 3658, 1, 0, 0, 1, 1, 627.12, -4443.5, 11.6634, 3.61284, 0, 0, -0.972369, 0.233448, 420, 255, 1, '', 0), -- .go xyz 627.12 -4443.5 +(@GAMEOBJECTBLOCK+101, 3719, 1, 0, 0, 1, 1, 627.12, -4443.5, 11.6634, 3.61284, 0, 0, -0.972369, 0.233448, 420, 255, 1, '', 0), -- .go xyz 627.12 -4443.5 +(@GAMEOBJECTBLOCK+102, 3658, 1, 0, 0, 1, 1, 771.55, -4460.79, 15.6685, 2.30383, 0, 0, 0.913545, 0.406738, 420, 255, 1, '', 0), -- .go xyz 771.55 -4460.79 +(@GAMEOBJECTBLOCK+103, 3719, 1, 0, 0, 1, 1, 771.55, -4460.79, 15.6685, 2.30383, 0, 0, 0.913545, 0.406738, 420, 255, 1, '', 0), -- .go xyz 771.55 -4460.79 +-- Durotar Food Water GO Pool X Orc Huts +(@GAMEOBJECTBLOCK+104, 3658, 1, 0, 0, 1, 1, 563.076, -4090.13, 15.6692, 1.16937, 0, 0, 0.551936, 0.833886, 420, 255, 1, '', 0), -- .go xyz 563.076 -4090.13 +(@GAMEOBJECTBLOCK+105, 3719, 1, 0, 0, 1, 1, 563.076, -4090.13, 15.6692, 1.16937, 0, 0, 0.551936, 0.833886, 420, 255, 1, '', 0), -- .go xyz 563.076 -4090.13 +(@GAMEOBJECTBLOCK+106, 3658, 1, 0, 0, 1, 1, 1269, -4178.72, 26.0548, 1.39626, 0, 0, 0.642787, 0.766045, 420, 255, 1, '', 0), -- .go xyz 1269 -4178.72 +(@GAMEOBJECTBLOCK+107, 3719, 1, 0, 0, 1, 1, 1269, -4178.72, 26.0548, 1.39626, 0, 0, 0.642787, 0.766045, 420, 255, 1, '', 0), -- .go xyz 1269 -4178.72 +(@GAMEOBJECTBLOCK+108, 3658, 1, 0, 0, 1, 1, 758.85, -4251.66, 18.3729, 1.8675, 0, 0, 0.803857, 0.594823, 420, 255, 1, '', 0), -- .go xyz 758.85 -4251.66 +(@GAMEOBJECTBLOCK+109, 3719, 1, 0, 0, 1, 1, 758.85, -4251.66, 18.3729, 1.8675, 0, 0, 0.803857, 0.594823, 420, 255, 1, '', 0), -- .go xyz 758.85 -4251.66 +-- Durotar Food Water GO Pool XI x2 Misc Durotar +(@GAMEOBJECTBLOCK+110, 3658, 1, 0, 0, 1, 1, 859.703, -4170.78, -14.1103, 4.50295, 0, 0, -0.777145, 0.629321, 420, 255, 1, '', 0), -- .go xyz 859.703 -4170.78 +(@GAMEOBJECTBLOCK+111, 3719, 1, 0, 0, 1, 1, 859.703, -4170.78, -14.1103, 4.50295, 0, 0, -0.777145, 0.629321, 420, 255, 1, '', 0), -- .go xyz 859.703 -4170.78 +(@GAMEOBJECTBLOCK+112, 3658, 1, 0, 0, 1, 1, -97.4073, -4045.79, 64.7427, 5.63741, 0, 0, -0.317305, 0.948324, 420, 255, 1, '', 0), -- .go xyz -97.4073 -4045.79 +(@GAMEOBJECTBLOCK+113, 3719, 1, 0, 0, 1, 1, -97.4073, -4045.79, 64.7427, 5.63741, 0, 0, -0.317305, 0.948324, 420, 255, 1, '', 0), -- .go xyz -97.4073 -4045.79 +(@GAMEOBJECTBLOCK+114, 3658, 1, 0, 0, 1, 1, 325.073, -3795.73, 26.4866, 0.90757, 0, 0, 0.438371, 0.898794, 420, 255, 1, '', 0), -- .go xyz 325.073 -3795.73 +(@GAMEOBJECTBLOCK+115, 3719, 1, 0, 0, 1, 1, 325.073, -3795.73, 26.4866, 0.90757, 0, 0, 0.438371, 0.898794, 420, 255, 1, '', 0), -- .go xyz 325.073 -3795.73 +(@GAMEOBJECTBLOCK+116, 3658, 1, 0, 0, 1, 1, 74.5528, -4218.84, 60.8336, 2.07694, 0, 0, 0.861629, 0.507539, 420, 255, 1, '', 0), -- .go xyz 74.5528 -4218.84 +(@GAMEOBJECTBLOCK+117, 3719, 1, 0, 0, 1, 1, 74.5528, -4218.84, 60.8336, 2.07694, 0, 0, 0.861629, 0.507539, 420, 255, 1, '', 0), -- .go xyz 74.5528 -4218.84 +(@GAMEOBJECTBLOCK+118, 3658, 1, 0, 0, 1, 1, 1001.38, -3919.05, 18.7792, 3.99681, 0, 0, -0.909961, 0.414694, 420, 255, 1, '', 0), -- .go xyz 1001.38 -3919.05 +(@GAMEOBJECTBLOCK+119, 3719, 1, 0, 0, 1, 1, 1001.38, -3919.05, 18.7792, 3.99681, 0, 0, -0.909961, 0.414694, 420, 255, 1, '', 0), -- .go xyz 1001.38 -3919.05 +(@GAMEOBJECTBLOCK+120, 3658, 1, 0, 0, 1, 1, 992.105, -4407.13, 14.5778, 3.33359, 0, 0, -0.995396, 0.0958512, 420, 255, 1, '', 0), -- .go xyz 992.105 -4407.13 +(@GAMEOBJECTBLOCK+121, 3719, 1, 0, 0, 1, 1, 992.105, -4407.13, 14.5778, 3.33359, 0, 0, -0.995396, 0.0958512, 420, 255, 1, '', 0); -- .go xyz 992.105 -4407.13 +-- Total 18 maximum active in Durotar + +-- Some liberties were taken to make this work within the current system. This may actually be blizzlike (except that some pools are mixed a little), or its possible gameobjects need multiple ids like creatures do. + +SET @OBJECTPOOLS :=516; +DELETE FROM `pool_gameobject` WHERE `guid` BETWEEN @GAMEOBJECTBLOCK+0 AND @GAMEOBJECTBLOCK+121; +DELETE FROM `pool_template` WHERE `entry` BETWEEN @OBJECTPOOLS+0 AND @OBJECTPOOLS+17; + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+0, 1, 'Durotar Food Water GO Pool I Kolkar Crag'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+0, @OBJECTPOOLS+0, 22, 'Food Water Kolkar Crag 1/6'), +(@GAMEOBJECTBLOCK+1, @OBJECTPOOLS+0, 11, 'Food Water Kolkar Crag 2/6'), +(@GAMEOBJECTBLOCK+2, @OBJECTPOOLS+0, 22, 'Food Water Kolkar Crag 3/6'), +(@GAMEOBJECTBLOCK+3, @OBJECTPOOLS+0, 11, 'Food Water Kolkar Crag 4/6'), +(@GAMEOBJECTBLOCK+4, @OBJECTPOOLS+0, 22, 'Food Water Kolkar Crag 5/6'), +(@GAMEOBJECTBLOCK+5, @OBJECTPOOLS+0, 12, 'Food Water Kolkar Crag 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+1, 1, 'Durotar Food Water GO Pool II 1/4 Echo Isles'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+6, @OBJECTPOOLS+1, 22, 'Food Water Echo Isles 1 1/6'), +(@GAMEOBJECTBLOCK+7, @OBJECTPOOLS+1, 11, 'Food Water Echo Isles 1 2/6'), +(@GAMEOBJECTBLOCK+8, @OBJECTPOOLS+1, 22, 'Food Water Echo Isles 1 3/6'), +(@GAMEOBJECTBLOCK+9, @OBJECTPOOLS+1, 11, 'Food Water Echo Isles 1 4/6'), +(@GAMEOBJECTBLOCK+10, @OBJECTPOOLS+1, 22, 'Food Water Echo Isles 1 5/6'), +(@GAMEOBJECTBLOCK+11, @OBJECTPOOLS+1, 12, 'Food Water Echo Isles 1 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+2, 1, 'Durotar Food Water GO Pool II 2/4 Echo Isles'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+12, @OBJECTPOOLS+2, 22, 'Food Water Echo Isles 2 1/6'), +(@GAMEOBJECTBLOCK+13, @OBJECTPOOLS+2, 11, 'Food Water Echo Isles 2 2/6'), +(@GAMEOBJECTBLOCK+14, @OBJECTPOOLS+2, 22, 'Food Water Echo Isles 2 3/6'), +(@GAMEOBJECTBLOCK+15, @OBJECTPOOLS+2, 11, 'Food Water Echo Isles 2 4/6'), +(@GAMEOBJECTBLOCK+16, @OBJECTPOOLS+2, 22, 'Food Water Echo Isles 2 5/6'), +(@GAMEOBJECTBLOCK+17, @OBJECTPOOLS+2, 12, 'Food Water Echo Isles 2 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+3, 1, 'Durotar Food Water GO Pool II 3/4 Echo Isles'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+18, @OBJECTPOOLS+3, 16.5, 'Food Water Echo Isles 3 1/8'), +(@GAMEOBJECTBLOCK+19, @OBJECTPOOLS+3, 8.5, 'Food Water Echo Isles 3 2/8'), +(@GAMEOBJECTBLOCK+20, @OBJECTPOOLS+3, 16.5, 'Food Water Echo Isles 3 3/8'), +(@GAMEOBJECTBLOCK+21, @OBJECTPOOLS+3, 8.5, 'Food Water Echo Isles 3 4/8'), +(@GAMEOBJECTBLOCK+22, @OBJECTPOOLS+3, 16.5, 'Food Water Echo Isles 3 5/8'), +(@GAMEOBJECTBLOCK+23, @OBJECTPOOLS+3, 8.5, 'Food Water Echo Isles 3 6/8'), +(@GAMEOBJECTBLOCK+24, @OBJECTPOOLS+3, 16.5, 'Food Water Echo Isles 3 7/8'), +(@GAMEOBJECTBLOCK+25, @OBJECTPOOLS+3, 8.5, 'Food Water Echo Isles 3 8/8'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+4, 1, 'Durotar Food Water GO Pool II 4/4 Echo Isles'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+26, @OBJECTPOOLS+4, 16.5, 'Food Water Echo Isles 4 1/8'), +(@GAMEOBJECTBLOCK+27, @OBJECTPOOLS+4, 8.5, 'Food Water Echo Isles 4 2/8'), +(@GAMEOBJECTBLOCK+28, @OBJECTPOOLS+4, 16.5, 'Food Water Echo Isles 4 3/8'), +(@GAMEOBJECTBLOCK+29, @OBJECTPOOLS+4, 8.5, 'Food Water Echo Isles 4 4/8'), +(@GAMEOBJECTBLOCK+30, @OBJECTPOOLS+4, 16.5, 'Food Water Echo Isles 4 5/8'), +(@GAMEOBJECTBLOCK+31, @OBJECTPOOLS+4, 8.5, 'Food Water Echo Isles 4 6/8'), +(@GAMEOBJECTBLOCK+32, @OBJECTPOOLS+4, 16.5, 'Food Water Echo Isles 4 7/8'), +(@GAMEOBJECTBLOCK+33, @OBJECTPOOLS+4, 8.5, 'Food Water Echo Isles 4 8/8'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+5, 1, 'Durotar Food Water GO Pool III Tiragaurd Keep'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+34, @OBJECTPOOLS+5, 22, 'Food Water Tiragaurd Keep 1/6'), +(@GAMEOBJECTBLOCK+35, @OBJECTPOOLS+5, 11, 'Food Water Tiragaurd Keep 2/6'), +(@GAMEOBJECTBLOCK+36, @OBJECTPOOLS+5, 22, 'Food Water Tiragaurd Keep 3/6'), +(@GAMEOBJECTBLOCK+37, @OBJECTPOOLS+5, 11, 'Food Water Tiragaurd Keep 4/6'), +(@GAMEOBJECTBLOCK+38, @OBJECTPOOLS+5, 22, 'Food Water Tiragaurd Keep 5/6'), +(@GAMEOBJECTBLOCK+39, @OBJECTPOOLS+5, 12, 'Food Water Tiragaurd Keep 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+6, 1, 'Durotar Food Water GO Pool IV 1/2 Coast'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+40, @OBJECTPOOLS+6, 16.5, 'Food Water Coast 1 1/8'), +(@GAMEOBJECTBLOCK+41, @OBJECTPOOLS+6, 8.5, 'Food Water Coast 1 2/8'), +(@GAMEOBJECTBLOCK+42, @OBJECTPOOLS+6, 16.5, 'Food Water Coast 1 3/8'), +(@GAMEOBJECTBLOCK+43, @OBJECTPOOLS+6, 8.5, 'Food Water Coast 1 4/8'), +(@GAMEOBJECTBLOCK+44, @OBJECTPOOLS+6, 16.5, 'Food Water Coast 1 5/8'), +(@GAMEOBJECTBLOCK+45, @OBJECTPOOLS+6, 8.5, 'Food Water Coast 1 6/8'), +(@GAMEOBJECTBLOCK+46, @OBJECTPOOLS+6, 16.5, 'Food Water Coast 1 7/8'), +(@GAMEOBJECTBLOCK+47, @OBJECTPOOLS+6, 8.5, 'Food Water Coast 1 8/8'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+7, 1, 'Durotar Food Water GO Pool IV 2/2 Coast'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+48, @OBJECTPOOLS+7, 13.2, 'Food Water Coast 2 1/10'), +(@GAMEOBJECTBLOCK+49, @OBJECTPOOLS+7, 6.8, 'Food Water Coast 2 2/10'), +(@GAMEOBJECTBLOCK+50, @OBJECTPOOLS+7, 13.2, 'Food Water Coast 2 3/10'), +(@GAMEOBJECTBLOCK+51, @OBJECTPOOLS+7, 6.8, 'Food Water Coast 2 4/10'), +(@GAMEOBJECTBLOCK+52, @OBJECTPOOLS+7, 13.2, 'Food Water Coast 2 5/10'), +(@GAMEOBJECTBLOCK+53, @OBJECTPOOLS+7, 6.8, 'Food Water Coast 2 6/10'), +(@GAMEOBJECTBLOCK+54, @OBJECTPOOLS+7, 13.2, 'Food Water Coast 2 7/10'), +(@GAMEOBJECTBLOCK+55, @OBJECTPOOLS+7, 6.8, 'Food Water Coast 2 8/10'), +(@GAMEOBJECTBLOCK+56, @OBJECTPOOLS+7, 13.2, 'Food Water Coast 2 9/10'), +(@GAMEOBJECTBLOCK+57, @OBJECTPOOLS+7, 6.8, 'Food Water Coast 2 10/10'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+8, 1, 'Durotar Food Water GO Pool V 1/3 Razor Hill'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+58, @OBJECTPOOLS+8, 22, 'Food Water Razor Hill 1 1/6'), +(@GAMEOBJECTBLOCK+59, @OBJECTPOOLS+8, 11, 'Food Water Razor Hill 1 2/6'), +(@GAMEOBJECTBLOCK+60, @OBJECTPOOLS+8, 22, 'Food Water Razor Hill 1 3/6'), +(@GAMEOBJECTBLOCK+61, @OBJECTPOOLS+8, 11, 'Food Water Razor Hill 1 4/6'), +(@GAMEOBJECTBLOCK+62, @OBJECTPOOLS+8, 22, 'Food Water Razor Hill 1 5/6'), +(@GAMEOBJECTBLOCK+63, @OBJECTPOOLS+8, 12, 'Food Water Razor Hill 1 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+9, 1, 'Durotar Food Water GO Pool V 2/3 Razor Hill'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+64, @OBJECTPOOLS+9, 16.5, 'Food Water Razor Hill 2 1/8'), +(@GAMEOBJECTBLOCK+65, @OBJECTPOOLS+9, 8.5, 'Food Water Razor Hill 2 2/8'), +(@GAMEOBJECTBLOCK+66, @OBJECTPOOLS+9, 16.5, 'Food Water Razor Hill 2 3/8'), +(@GAMEOBJECTBLOCK+67, @OBJECTPOOLS+9, 8.5, 'Food Water Razor Hill 2 4/8'), +(@GAMEOBJECTBLOCK+68, @OBJECTPOOLS+9, 16.5, 'Food Water Razor Hill 2 5/8'), +(@GAMEOBJECTBLOCK+69, @OBJECTPOOLS+9, 8.5, 'Food Water Razor Hill 2 6/8'), +(@GAMEOBJECTBLOCK+70, @OBJECTPOOLS+9, 16.5, 'Food Water Razor Hill 2 7/8'), +(@GAMEOBJECTBLOCK+71, @OBJECTPOOLS+9, 8.5, 'Food Water Razor Hill 2 8/8'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+10, 1, 'Durotar Food Water GO Pool V 3/3 Razor Hill'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+72, @OBJECTPOOLS+10, 16.5, 'Food Water Razor Hill 3 1/8'), +(@GAMEOBJECTBLOCK+73, @OBJECTPOOLS+10, 8.5, 'Food Water Razor Hill 3 2/8'), +(@GAMEOBJECTBLOCK+74, @OBJECTPOOLS+10, 16.5, 'Food Water Razor Hill 3 3/8'), +(@GAMEOBJECTBLOCK+75, @OBJECTPOOLS+10, 8.5, 'Food Water Razor Hill 3 4/8'), +(@GAMEOBJECTBLOCK+76, @OBJECTPOOLS+10, 16.5, 'Food Water Razor Hill 3 5/8'), +(@GAMEOBJECTBLOCK+77, @OBJECTPOOLS+10, 8.5, 'Food Water Razor Hill 3 6/8'), +(@GAMEOBJECTBLOCK+78, @OBJECTPOOLS+10, 16.5, 'Food Water Razor Hill 3 7/8'), +(@GAMEOBJECTBLOCK+79, @OBJECTPOOLS+10, 8.5, 'Food Water Razor Hill 3 8/8'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+11, 1, 'Durotar Food Water GO Pool VI Path to Orgrimmar'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+80, @OBJECTPOOLS+11, 22, 'Food Water Path to Org 1/6'), +(@GAMEOBJECTBLOCK+81, @OBJECTPOOLS+11, 11, 'Food Water Path to Org 2/6'), +(@GAMEOBJECTBLOCK+82, @OBJECTPOOLS+11, 22, 'Food Water Path to Org 3/6'), +(@GAMEOBJECTBLOCK+83, @OBJECTPOOLS+11, 11, 'Food Water Path to Org 4/6'), +(@GAMEOBJECTBLOCK+84, @OBJECTPOOLS+11, 22, 'Food Water Path to Org 5/6'), +(@GAMEOBJECTBLOCK+85, @OBJECTPOOLS+11, 12, 'Food Water Path to Org 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+12, 1, 'Durotar Food Water GO Pool VII Dustwind Cave'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+86, @OBJECTPOOLS+12, 22, 'Food Water Dustwind Cave 1/6'), +(@GAMEOBJECTBLOCK+87, @OBJECTPOOLS+12, 11, 'Food Water Dustwind Cave 2/6'), +(@GAMEOBJECTBLOCK+88, @OBJECTPOOLS+12, 22, 'Food Water Dustwind Cave 3/6'), +(@GAMEOBJECTBLOCK+89, @OBJECTPOOLS+12, 11, 'Food Water Dustwind Cave 4/6'), +(@GAMEOBJECTBLOCK+90, @OBJECTPOOLS+12, 22, 'Food Water Dustwind Cave 5/6'), +(@GAMEOBJECTBLOCK+91, @OBJECTPOOLS+12, 12, 'Food Water Dustwind Cave 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+13, 1, 'Durotar Food Water GO Pool VIII Harpies East'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+92, @OBJECTPOOLS+13, 22, 'Food Water Harpies East 1/6'), +(@GAMEOBJECTBLOCK+93, @OBJECTPOOLS+13, 11, 'Food Water Harpies East 2/6'), +(@GAMEOBJECTBLOCK+94, @OBJECTPOOLS+13, 22, 'Food Water Harpies East 3/6'), +(@GAMEOBJECTBLOCK+95, @OBJECTPOOLS+13, 11, 'Food Water Harpies East 4/6'), +(@GAMEOBJECTBLOCK+96, @OBJECTPOOLS+13, 22, 'Food Water Harpies East 5/6'), +(@GAMEOBJECTBLOCK+97, @OBJECTPOOLS+13, 12, 'Food Water Harpies East 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+14, 1, 'Durotar Food Water GO Pool IX Harpies West'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+98, @OBJECTPOOLS+14, 22, 'Food Water Harpies West 1/6'), +(@GAMEOBJECTBLOCK+99, @OBJECTPOOLS+14, 11, 'Food Water Harpies West 2/6'), +(@GAMEOBJECTBLOCK+100, @OBJECTPOOLS+14, 22, 'Food Water Harpies West 3/6'), +(@GAMEOBJECTBLOCK+101, @OBJECTPOOLS+14, 11, 'Food Water Harpies West 4/6'), +(@GAMEOBJECTBLOCK+102, @OBJECTPOOLS+14, 22, 'Food Water Harpies West 5/6'), +(@GAMEOBJECTBLOCK+103, @OBJECTPOOLS+14, 12, 'Food Water Harpies West 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+15, 1, 'Durotar Food Water GO Pool X Orc Huts'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+104, @OBJECTPOOLS+15, 22, 'Food Water Orc Huts 1/6'), +(@GAMEOBJECTBLOCK+105, @OBJECTPOOLS+15, 11, 'Food Water Orc Huts 2/6'), +(@GAMEOBJECTBLOCK+106, @OBJECTPOOLS+15, 22, 'Food Water Orc Huts 3/6'), +(@GAMEOBJECTBLOCK+107, @OBJECTPOOLS+15, 11, 'Food Water Orc Huts 4/6'), +(@GAMEOBJECTBLOCK+108, @OBJECTPOOLS+15, 22, 'Food Water Orc Huts 5/6'), +(@GAMEOBJECTBLOCK+109, @OBJECTPOOLS+15, 12, 'Food Water Orc Huts 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+16, 1, 'Durotar Food Water GO Pool XI 1/2 Misc Durotar'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+110, @OBJECTPOOLS+16, 22, 'Food Water Misc Durotar 1 1/6'), +(@GAMEOBJECTBLOCK+111, @OBJECTPOOLS+16, 11, 'Food Water Misc Durotar 1 2/6'), +(@GAMEOBJECTBLOCK+112, @OBJECTPOOLS+16, 22, 'Food Water Misc Durotar 1 3/6'), +(@GAMEOBJECTBLOCK+113, @OBJECTPOOLS+16, 11, 'Food Water Misc Durotar 1 4/6'), +(@GAMEOBJECTBLOCK+114, @OBJECTPOOLS+16, 22, 'Food Water Misc Durotar 1 5/6'), +(@GAMEOBJECTBLOCK+115, @OBJECTPOOLS+16, 12, 'Food Water Misc Durotar 1 6/6'); + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(@OBJECTPOOLS+17, 1, 'Durotar Food Water GO Pool XI 2/2 Misc Durotar'); +INSERT INTO `pool_gameobject` (`guid`, `pool_entry`, `chance`, `description`) VALUES +(@GAMEOBJECTBLOCK+116, @OBJECTPOOLS+17, 22, 'Food Water Misc Durotar 2 1/6'), +(@GAMEOBJECTBLOCK+117, @OBJECTPOOLS+17, 11, 'Food Water Misc Durotar 2 2/6'), +(@GAMEOBJECTBLOCK+118, @OBJECTPOOLS+17, 22, 'Food Water Misc Durotar 2 3/6'), +(@GAMEOBJECTBLOCK+119, @OBJECTPOOLS+17, 11, 'Food Water Misc Durotar 2 4/6'), +(@GAMEOBJECTBLOCK+120, @OBJECTPOOLS+17, 22, 'Food Water Misc Durotar 2 5/6'), +(@GAMEOBJECTBLOCK+121, @OBJECTPOOLS+17, 12, 'Food Water Misc Durotar 2 6/6'); From b37bc945a56522333e4975b2f325f493db8f797e Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Sat, 15 Oct 2022 22:05:34 +0000 Subject: [PATCH 02/17] chore(DB): import pending files Referenced commit(s): 256b291fa3b07603954e13330fc538b3e30a44aa --- .../durotarinsanity.sql => db_world/2022_10_15_09.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/durotarinsanity.sql => db_world/2022_10_15_09.sql} (99%) diff --git a/data/sql/updates/pending_db_world/durotarinsanity.sql b/data/sql/updates/db_world/2022_10_15_09.sql similarity index 99% rename from data/sql/updates/pending_db_world/durotarinsanity.sql rename to data/sql/updates/db_world/2022_10_15_09.sql index 6cc4164f7..5b0b9dabb 100644 --- a/data/sql/updates/pending_db_world/durotarinsanity.sql +++ b/data/sql/updates/db_world/2022_10_15_09.sql @@ -1,3 +1,4 @@ +-- DB update 2022_10_15_08 -> 2022_10_15_09 -- Durotar Food Crate Water Barrel Gameobject Overhaul /* Remove existing Water Barrels 3658--some of these may be correct, but we have all the spawns now so this will be easier */ From 7530d6aff5f8d33d37dd1d5e4e50b8297057b2c1 Mon Sep 17 00:00:00 2001 From: Dev-Priest <115832852+Dev-Priest@users.noreply.github.com> Date: Sat, 15 Oct 2022 22:06:31 +0000 Subject: [PATCH 03/17] fix(Core/Battleground): Correct Alterac Valley mine announcement (#13411) Fix text when capturing an alterac valley mine which was the wrong way --- src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp index 68263014a..6518e7066 100644 --- a/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundAV.cpp @@ -729,8 +729,8 @@ void BattlegroundAV::ChangeMineOwner(uint8 mine, TeamId teamId, bool initial) { m_Mine_Reclaim_Timer[mine] = AV_MINE_RECLAIM_TIMER; char buf[256]; - sprintf(buf, GetAcoreString(LANG_BG_AV_MINE_TAKEN), GetAcoreString((mine == AV_NORTH_MINE) ? LANG_BG_AV_MINE_NORTH : LANG_BG_AV_MINE_SOUTH), - (teamId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE)); + sprintf(buf, GetAcoreString(LANG_BG_AV_MINE_TAKEN), (teamId == TEAM_ALLIANCE) ? GetAcoreString(LANG_BG_AV_ALLY) : GetAcoreString(LANG_BG_AV_HORDE), + GetAcoreString((mine == AV_NORTH_MINE) ? LANG_BG_AV_MINE_NORTH : LANG_BG_AV_MINE_SOUTH)); Creature* creature = GetBGCreature(AV_CPLACE_HERALD); if (creature) YellToAll(creature, buf, LANG_UNIVERSAL); From 252755415c87029d67e1d94cf983717ff02e78b7 Mon Sep 17 00:00:00 2001 From: Angelo Venturini Date: Sat, 15 Oct 2022 19:42:25 -0300 Subject: [PATCH 04/17] fix(Core/Spells): Overflow damage (#13424) --- src/server/game/Entities/Unit/StatSystem.cpp | 2 +- src/server/scripts/Spells/spell_rogue.cpp | 2 +- src/server/scripts/Spells/spell_warrior.cpp | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/server/game/Entities/Unit/StatSystem.cpp b/src/server/game/Entities/Unit/StatSystem.cpp index 30d24d1ff..18c07d9c8 100644 --- a/src/server/game/Entities/Unit/StatSystem.cpp +++ b/src/server/game/Entities/Unit/StatSystem.cpp @@ -62,9 +62,9 @@ void Unit::UpdateDamagePhysical(WeaponAttackType attType) float totalMin = 0.f; float totalMax = 0.f; + float tmpMin, tmpMax; for (uint8 i = 0; i < MAX_ITEM_PROTO_DAMAGES; ++i) { - float tmpMin, tmpMax; CalculateMinMaxDamage(attType, false, true, tmpMin, tmpMax, i); totalMin += tmpMin; totalMax += tmpMax; diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index bb6b8b9e2..cddeabf53 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -122,7 +122,7 @@ class spell_rog_blade_flurry : public AuraScript DamageInfo* damageInfo = eventInfo.GetDamageInfo(); if (procTarget && damageInfo) { - int32 damage = damageInfo->GetUnmitigatedDamage(); + int32 damage = damageInfo->GetDamage(); CustomSpellValues values; values.AddSpellMod(SPELLVALUE_BASE_POINT0, damage); diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 35aec6db2..d5f253ffe 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -668,7 +668,7 @@ class spell_warr_sweeping_strikes : public AuraScript } else { - int32 damage = damageInfo->GetUnmitigatedDamage(); + int32 damage = damageInfo->GetDamage(); GetTarget()->CastCustomSpell(_procTarget, SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1, &damage, 0, 0, true, nullptr, aurEff); } } From 33cba08f5089e26f06588c28ff9e0c264df7d7d1 Mon Sep 17 00:00:00 2001 From: Angelo Venturini Date: Sat, 15 Oct 2022 20:13:23 -0300 Subject: [PATCH 05/17] fix(Core): Build (#13425) --- src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index a5e3efe93..ce8d29ef4 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -993,7 +993,7 @@ public: player->m_Events.AddEventAtOffset([player, cthun]() { - if (Creature* trigger = player->FindNearestCreature(NPC_EXIT_TRIGGER, 10.0f)) + if (player->FindNearestCreature(NPC_EXIT_TRIGGER, 10.0f)) { player->JumpTo(0.0f, 80.0f, false); From 63ac0fd5d97c45f6f0a2d1b4ce6027e036716e84 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 16 Oct 2022 21:58:00 +0200 Subject: [PATCH 06/17] fix(Scripts/Temple of AhnQiraj): Fixed Sartura's aggro reset mechanic. (#13185) * fix(Scripts/Temple of AhnQiraj): Fixed Sartura's aggro reset mechanic. Fixes #13072 * Update. * Update boss_sartura.cpp * Update boss_sartura.cpp * fix? Co-authored-by: Angelo Venturini --- .../TempleOfAhnQiraj/boss_sartura.cpp | 164 ++++-------------- 1 file changed, 38 insertions(+), 126 deletions(-) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index 46de14dcc..b77eb7bbb 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -34,7 +34,6 @@ enum Spells SPELL_ENRAGE = 8269, SPELL_BERSERK = 27680, SPELL_SUNDERING_CLEAVE = 25174, - // Sartura's Royal Guard SPELL_GUARD_WHIRLWIND = 26038, SPELL_GUARD_KNOCKBACK = 26027 @@ -44,20 +43,15 @@ enum events { // Battleguard Sartura EVENT_SARTURA_WHIRLWIND = 1, - EVENT_SARTURA_WHIRLWIND_RANDOM = 2, - EVENT_SARTURA_WHIRLWIND_END = 3, - EVENT_SPELL_BERSERK = 4, - EVENT_SARTURA_AGGRO_RESET = 5, - EVENT_SARTURA_AGGRO_RESET_END = 6, - EVENT_SARTURA_SUNDERING_CLEAVE = 7, - + EVENT_SARTURA_WHIRLWIND_RANDOM, + EVENT_SARTURA_WHIRLWIND_END, + EVENT_SPELL_BERSERK, + EVENT_SARTURA_SUNDERING_CLEAVE, // Sartura's Royal Guard - EVENT_GUARD_WHIRLWIND = 8, - EVENT_GUARD_WHIRLWIND_RANDOM = 9, - EVENT_GUARD_WHIRLWIND_END = 10, - EVENT_GUARD_KNOCKBACK = 11, - EVENT_GUARD_AGGRO_RESET = 12, - EVENT_GUARD_AGGRO_RESET_END = 13 + EVENT_GUARD_WHIRLWIND, + EVENT_GUARD_WHIRLWIND_RANDOM, + EVENT_GUARD_WHIRLWIND_END, + EVENT_GUARD_KNOCKBACK, }; struct boss_sartura : public BossAI @@ -74,13 +68,11 @@ struct boss_sartura : public BossAI void Reset() override { _Reset(); - whirlwind = false; enraged = false; berserked = false; - aggroReset = false; MinionReset(); - _savedTargetGUID.Clear(); - _savedTargetThreat = 0.f; + + me->SetReactState(REACT_AGGRESSIVE); } void MinionReset() @@ -98,8 +90,7 @@ struct boss_sartura : public BossAI BossAI::EnterCombat(who); Talk(SAY_AGGRO); events.ScheduleEvent(EVENT_SARTURA_WHIRLWIND, 12s, 22s); - events.ScheduleEvent(EVENT_SARTURA_AGGRO_RESET, urand(45000, 55000)); - events.ScheduleEvent(EVENT_SPELL_BERSERK, 10 * 60000); + events.ScheduleEvent(EVENT_SPELL_BERSERK, 10min); events.ScheduleEvent(EVENT_SARTURA_SUNDERING_CLEAVE, 2400ms, 3s); } @@ -125,7 +116,7 @@ struct boss_sartura : public BossAI void UpdateAI(uint32 diff) override { - if (!UpdateVictim()) + if (!UpdateVictimWithGaze()) return; events.Update(diff); @@ -135,61 +126,26 @@ struct boss_sartura : public BossAI switch (eventId) { case EVENT_SARTURA_WHIRLWIND: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true)) + { + SetGazeOn(target); + } DoCastSelf(SPELL_WHIRLWIND, true); - whirlwind = true; - events.ScheduleEvent(EVENT_SARTURA_WHIRLWIND_RANDOM, urand(3000, 7000)); - events.ScheduleEvent(EVENT_SARTURA_WHIRLWIND_END, 15000); + events.ScheduleEvent(EVENT_SARTURA_WHIRLWIND_RANDOM, 2s, 7s); + events.ScheduleEvent(EVENT_SARTURA_WHIRLWIND_END, 15s); break; case EVENT_SARTURA_WHIRLWIND_RANDOM: - if (whirlwind == true) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true)) { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true)) - { - me->AddThreat(target, 1.0f); - me->TauntApply(target); - AttackStart(target); - } - events.RepeatEvent(urand(3000, 7000)); + SetGazeOn(target); } + events.Repeat(2s, 7s); break; case EVENT_SARTURA_WHIRLWIND_END: + me->SetReactState(REACT_AGGRESSIVE); events.CancelEvent(EVENT_SARTURA_WHIRLWIND_RANDOM); - whirlwind = false; events.ScheduleEvent(EVENT_SARTURA_WHIRLWIND, 5s, 11s); break; - case EVENT_SARTURA_AGGRO_RESET: - if (aggroReset == false) - { - if (Unit* originalTarget = SelectTarget(SelectTargetMethod::Random, 0)) - { - _savedTargetGUID = originalTarget->GetGUID(); - _savedTargetThreat = me->GetThreatMgr().GetThreat(originalTarget); - me->GetThreatMgr().ModifyThreatByPercent(originalTarget, -100); - } - aggroReset = true; - events.ScheduleEvent(EVENT_SARTURA_AGGRO_RESET_END, 5000); - } - else - { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true)) - { - me->AddThreat(target, 1.0f); - me->TauntApply(target); - AttackStart(target); - } - } - events.RepeatEvent(urand(1000, 2000)); - break; - case EVENT_SARTURA_AGGRO_RESET_END: - events.CancelEvent(EVENT_SARTURA_AGGRO_RESET); - if (Unit* originalTarget = ObjectAccessor::GetUnit(*me, _savedTargetGUID)) - { - me->GetThreatMgr().AddThreat(originalTarget, _savedTargetThreat); - _savedTargetGUID.Clear(); - } - aggroReset = false; - events.RescheduleEvent(EVENT_SARTURA_AGGRO_RESET, urand(30000, 40000)); - break; case EVENT_SPELL_BERSERK: if (!berserked) { @@ -198,7 +154,7 @@ struct boss_sartura : public BossAI } break; case EVENT_SARTURA_SUNDERING_CLEAVE: - if (whirlwind) + if (me->HasReactState(REACT_PASSIVE)) { Milliseconds whirlwindTimer = events.GetTimeUntilEvent(EVENT_SARTURA_WHIRLWIND_END); events.RescheduleEvent(EVENT_SARTURA_SUNDERING_CLEAVE, whirlwindTimer + 500ms); @@ -213,15 +169,13 @@ struct boss_sartura : public BossAI break; } } + DoMeleeAttackIfReady(); }; + private: - bool whirlwind; bool enraged; bool berserked; - bool aggroReset; - ObjectGuid _savedTargetGUID; - float _savedTargetThreat; }; struct npc_sartura_royal_guard : public ScriptedAI @@ -231,22 +185,19 @@ struct npc_sartura_royal_guard : public ScriptedAI void Reset() override { events.Reset(); - whirlwind = false; - aggroReset = false; - _savedTargetGUID.Clear(); - _savedTargetThreat = 0.f; + + me->SetReactState(REACT_AGGRESSIVE); } void EnterCombat(Unit* /*who*/) override { events.ScheduleEvent(EVENT_GUARD_WHIRLWIND, 6s, 10s); - events.ScheduleEvent(EVENT_GUARD_AGGRO_RESET, urand(45000, 55000)); events.ScheduleEvent(EVENT_GUARD_KNOCKBACK, 12s, 16s); } void UpdateAI(uint32 diff) override { - if (!UpdateVictim()) + if (!UpdateVictimWithGaze()) return; events.Update(diff); @@ -256,74 +207,35 @@ struct npc_sartura_royal_guard : public ScriptedAI switch (eventid) { case EVENT_GUARD_WHIRLWIND: + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true)) + { + SetGazeOn(target); + } DoCastSelf(SPELL_GUARD_WHIRLWIND); - whirlwind = true; - events.ScheduleEvent(EVENT_GUARD_WHIRLWIND_RANDOM, urand(3000, 7000)); + events.ScheduleEvent(EVENT_GUARD_WHIRLWIND_RANDOM, 2s, 7s); events.ScheduleEvent(EVENT_GUARD_WHIRLWIND_END, 8s); break; case EVENT_GUARD_WHIRLWIND_RANDOM: - if (whirlwind == true) + if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 100.0f, true)) { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true)) - { - me->AddThreat(target, 1.0f); - me->TauntApply(target); - AttackStart(target); - } - events.RepeatEvent(urand(3000, 7000)); + SetGazeOn(target); } + events.Repeat(2s, 7s); break; case EVENT_GUARD_WHIRLWIND_END: + me->SetReactState(REACT_AGGRESSIVE); events.CancelEvent(EVENT_GUARD_WHIRLWIND_RANDOM); - whirlwind = false; events.ScheduleEvent(EVENT_GUARD_WHIRLWIND, 500ms, 9s); break; - case EVENT_GUARD_AGGRO_RESET: - if (aggroReset == true) - { - if (Unit* originalTarget = SelectTarget(SelectTargetMethod::Random, 0)) - { - _savedTargetGUID = originalTarget->GetGUID(); - _savedTargetThreat = me->GetThreatMgr().GetThreat(originalTarget); - me->GetThreatMgr().ModifyThreatByPercent(originalTarget, -100); - } - aggroReset = true; - events.ScheduleEvent(EVENT_GUARD_AGGRO_RESET_END, 5000); - } - else - { - if (Unit* target = SelectTarget(SelectTargetMethod::Random, 1, 100.0f, true)) - { - me->AddThreat(target, 1.0f); - me->TauntApply(target); - AttackStart(target); - } - } - events.RepeatEvent(urand(1000, 2000)); - break; - case EVENT_GUARD_AGGRO_RESET_END: - events.CancelEvent(EVENT_GUARD_AGGRO_RESET); - if (Unit* originalTarget = ObjectAccessor::GetUnit(*me, _savedTargetGUID)) - { - me->GetThreatMgr().AddThreat(originalTarget, _savedTargetThreat); - _savedTargetGUID.Clear(); - } - aggroReset = false; - events.RescheduleEvent(EVENT_GUARD_AGGRO_RESET, urand(30000, 40000)); - break; case EVENT_GUARD_KNOCKBACK: DoCastVictim(SPELL_GUARD_KNOCKBACK); events.Repeat(21s, 37s); break; } } + DoMeleeAttackIfReady(); } - private: - bool whirlwind; - bool aggroReset; - ObjectGuid _savedTargetGUID; - float _savedTargetThreat; }; void AddSC_boss_sartura() From 8d26ce6bb59421d4e4bfdd541774605b83b0208a Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sun, 16 Oct 2022 23:48:19 -0300 Subject: [PATCH 07/17] fix(Scripts/TempleOfAhnQiraj): Use correct Ids for Drain Mana (#13436) --- .../Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp index 08a51d129..76fcb671f 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.cpp @@ -47,7 +47,7 @@ enum Spells // Obsidian Eradicator SPELL_SHOCK_BLAST = 26458, - SPELL_DRAIN_MANA = 25671, + SPELL_DRAIN_MANA_ERADICATOR = 25755, SPELL_DRAIN_MANA_VISUAL = 26639, // Anubisath Warder @@ -59,6 +59,7 @@ enum Spells // Obsidian Nullifier SPELL_NULLIFY = 26552, + SPELL_DRAIN_MANA_NULLIFIER = 25671, SPELL_CLEAVE = 40504, // Qiraji Scorpion @@ -268,7 +269,7 @@ struct npc_obsidian_eradicator : public ScriptedAI for (Unit* target : _targets) { - DoCast(target, SPELL_DRAIN_MANA, true); + DoCast(target, SPELL_DRAIN_MANA_ERADICATOR, true); } if (me->GetPowerPct(POWER_MANA) >= 100.f) @@ -401,7 +402,7 @@ struct npc_obsidian_nullifier : public ScriptedAI for (Unit* target : _targets) { - DoCast(target, SPELL_DRAIN_MANA, true); + DoCast(target, SPELL_DRAIN_MANA_NULLIFIER, true); } if (me->GetPowerPct(POWER_MANA) >= 100.f) From 572a4325d832756dced4d47227448595ae70ad89 Mon Sep 17 00:00:00 2001 From: Angelo Venturini Date: Sun, 16 Oct 2022 23:53:45 -0300 Subject: [PATCH 08/17] fix(Scripts/TempleOfAhnQiraj): C'Thun pull range (#13438) --- src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp index ce8d29ef4..d8740a99c 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_cthun.cpp @@ -151,6 +151,7 @@ struct boss_eye_of_cthun : public BossAI boss_eye_of_cthun(Creature* creature) : BossAI(creature, DATA_CTHUN) { SetCombatMovement(false); + me->m_SightDistance = 90.f; } void Reset() override @@ -199,7 +200,7 @@ struct boss_eye_of_cthun : public BossAI if (who->GetTypeId() == TYPEID_PLAYER && !me->IsInCombat()) { // Z checks are necessary here because AQ maps do funky stuff. - if (me->IsWithinLOSInMap(who) && me->IsWithinDist2d(who, 50.0f) && who->GetPositionZ() > 100.0f) + if (me->IsWithinLOSInMap(who) && me->IsWithinDist2d(who, 90.0f) && who->GetPositionZ() > 100.0f) { AttackStart(who); } From 0c848d836f52b6314235ca65b64547f3ab5e6e57 Mon Sep 17 00:00:00 2001 From: temperrr Date: Mon, 17 Oct 2022 04:58:03 +0200 Subject: [PATCH 09/17] fix(DB/SAI): vekniss warrior should not use impale (#13428) --- data/sql/updates/pending_db_world/veknissimpale.sql | 1 + 1 file changed, 1 insertion(+) create mode 100644 data/sql/updates/pending_db_world/veknissimpale.sql diff --git a/data/sql/updates/pending_db_world/veknissimpale.sql b/data/sql/updates/pending_db_world/veknissimpale.sql new file mode 100644 index 000000000..b6dfa9327 --- /dev/null +++ b/data/sql/updates/pending_db_world/veknissimpale.sql @@ -0,0 +1 @@ +DELETE FROM `smart_scripts` WHERE (`entryorguid` = 15230) AND (`source_type` = 0) AND (`id` IN (2)); From 018a825e0cce317becfee138c1bfe467b33842ca Mon Sep 17 00:00:00 2001 From: Gultask <100873791+Gultask@users.noreply.github.com> Date: Sun, 16 Oct 2022 23:59:22 -0300 Subject: [PATCH 10/17] fix(Scripts/TempleOfAhnQiraj): Correct post-teleport threat values for Twin Emperors (#13437) --- .../scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index 7ccba318e..01fcee937 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -168,7 +168,7 @@ struct boss_twinemperorsAI : public BossAI me->SetControlled(false, UNIT_STATE_ROOT); if (Unit* victim = me->SelectNearestTarget()) { - me->AddThreat(victim, 200000.f); + me->AddThreat(victim, 2000.f); AttackStart(victim); } }); From 048d82ae69b26b52154f58380c3a86f79ed6a5c6 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Mon, 17 Oct 2022 03:01:32 +0000 Subject: [PATCH 11/17] chore(DB): import pending files Referenced commit(s): 018a825e0cce317becfee138c1bfe467b33842ca --- .../veknissimpale.sql => db_world/2022_10_17_00.sql} | 1 + 1 file changed, 1 insertion(+) rename data/sql/updates/{pending_db_world/veknissimpale.sql => db_world/2022_10_17_00.sql} (69%) diff --git a/data/sql/updates/pending_db_world/veknissimpale.sql b/data/sql/updates/db_world/2022_10_17_00.sql similarity index 69% rename from data/sql/updates/pending_db_world/veknissimpale.sql rename to data/sql/updates/db_world/2022_10_17_00.sql index b6dfa9327..0dd5a165d 100644 --- a/data/sql/updates/pending_db_world/veknissimpale.sql +++ b/data/sql/updates/db_world/2022_10_17_00.sql @@ -1 +1,2 @@ +-- DB update 2022_10_15_09 -> 2022_10_17_00 DELETE FROM `smart_scripts` WHERE (`entryorguid` = 15230) AND (`source_type` = 0) AND (`id` IN (2)); From a949f812a752c83dfe2346d4a14ad7df59c38b5d Mon Sep 17 00:00:00 2001 From: Angelo Venturini Date: Mon, 17 Oct 2022 01:25:23 -0300 Subject: [PATCH 12/17] =?UTF-8?q?fix(Scripts/TempleOfAhnQiraj):=20Anubisat?= =?UTF-8?q?h=20Sentinel=20Mortal=20Strike=20and=20M=E2=80=A6=20(#13435)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ...ana Burn --- .../rev_1665949856612609200.sql | 5 ++ .../mob_anubisath_sentinel.cpp | 54 ++++++++++++++----- 2 files changed, 46 insertions(+), 13 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1665949856612609200.sql diff --git a/data/sql/updates/pending_db_world/rev_1665949856612609200.sql b/data/sql/updates/pending_db_world/rev_1665949856612609200.sql new file mode 100644 index 000000000..70029b95c --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1665949856612609200.sql @@ -0,0 +1,5 @@ +-- +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_anubisath_mortal_strike', 'spell_mana_burn_area'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(9347, 'spell_anubisath_mortal_strike'), +(26626, 'spell_mana_burn_area'); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp index f7a9ae516..7d9ffdc9b 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/mob_anubisath_sentinel.cpp @@ -15,22 +15,11 @@ * with this program. If not, see . */ -/* ScriptData -SDName: npc_anubisath_sentinel -SD%Complete: 95 -SDComment: Shadow storm is not properly implemented in core it should only target ppl outside of melee range. -SDCategory: Temple of Ahn'Qiraj -EndScriptData */ - -#include "Cell.h" -#include "CellImpl.h" -#include "GridNotifiers.h" -#include "GridNotifiersImpl.h" #include "Player.h" #include "ScriptMgr.h" #include "ScriptedCreature.h" -#include "Spell.h" -#include "WorldPacket.h" +#include "SpellScript.h" +#include "temple_of_ahnqiraj.h" enum Spells { @@ -316,7 +305,46 @@ public: }; }; +// 9347: Mortal Strike +class spell_anubisath_mortal_strike : public AuraScript +{ + PrepareAuraScript(spell_anubisath_mortal_strike); + + void OnPeriodic(AuraEffect const* /*aurEff*/) + { + PreventDefaultAction(); + + if (Unit* target = GetUnitOwner()->GetVictim()) + if (target->IsWithinDist(GetUnitOwner(), 5.f)) + GetUnitOwner()->CastSpell(target, GetSpellInfo()->Effects[EFFECT_0].TriggerSpell, true); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_anubisath_mortal_strike::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } +}; + +// 26626 (Server-side): Mana Burn Area +class spell_mana_burn_area : public SpellScript +{ + PrepareSpellScript(spell_mana_burn_area); + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + if (Unit* target = GetHitUnit()) + GetCaster()->CastSpell(target, SPELL_MANAB, true); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_mana_burn_area::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } +}; + void AddSC_npc_anubisath_sentinel() { new npc_anubisath_sentinel(); + RegisterSpellScript(spell_anubisath_mortal_strike); + RegisterSpellScript(spell_mana_burn_area); } From 2af95abc2c112ddee1efe0223d731625cf2f3e5d Mon Sep 17 00:00:00 2001 From: Angelo Venturini Date: Mon, 17 Oct 2022 01:26:20 -0300 Subject: [PATCH 13/17] fix(Scripts/TempleOfAhnQiraj): Skeram copies shouldn't save raid cd (#13422) --- data/sql/updates/pending_db_world/rev_1665863988336160100.sql | 2 ++ src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp | 2 ++ 2 files changed, 4 insertions(+) create mode 100644 data/sql/updates/pending_db_world/rev_1665863988336160100.sql diff --git a/data/sql/updates/pending_db_world/rev_1665863988336160100.sql b/data/sql/updates/pending_db_world/rev_1665863988336160100.sql new file mode 100644 index 000000000..56b6f66d1 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1665863988336160100.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `flags_extra` = `flags_extra`&~1 WHERE `entry` = 15263; diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp index b59655524..1d605ee86 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_skeram.cpp @@ -134,6 +134,8 @@ struct boss_skeram : public BossAI { _JustDied(); Talk(SAY_DEATH); + if (me->GetMap() && me->GetMap()->ToInstanceMap()) + me->GetMap()->ToInstanceMap()->PermBindAllPlayers(); } else me->RemoveCorpse(); From b427e8e18cb6baa80124ce8e3a7e79aa670bcc74 Mon Sep 17 00:00:00 2001 From: AzerothCoreBot Date: Mon, 17 Oct 2022 04:28:24 +0000 Subject: [PATCH 14/17] chore(DB): import pending files Referenced commit(s): 2af95abc2c112ddee1efe0223d731625cf2f3e5d --- .../rev_1665863988336160100.sql => db_world/2022_10_17_01.sql} | 1 + .../rev_1665949856612609200.sql => db_world/2022_10_17_02.sql} | 1 + 2 files changed, 2 insertions(+) rename data/sql/updates/{pending_db_world/rev_1665863988336160100.sql => db_world/2022_10_17_01.sql} (67%) rename data/sql/updates/{pending_db_world/rev_1665949856612609200.sql => db_world/2022_10_17_02.sql} (85%) diff --git a/data/sql/updates/pending_db_world/rev_1665863988336160100.sql b/data/sql/updates/db_world/2022_10_17_01.sql similarity index 67% rename from data/sql/updates/pending_db_world/rev_1665863988336160100.sql rename to data/sql/updates/db_world/2022_10_17_01.sql index 56b6f66d1..63a783d26 100644 --- a/data/sql/updates/pending_db_world/rev_1665863988336160100.sql +++ b/data/sql/updates/db_world/2022_10_17_01.sql @@ -1,2 +1,3 @@ +-- DB update 2022_10_17_00 -> 2022_10_17_01 -- UPDATE `creature_template` SET `flags_extra` = `flags_extra`&~1 WHERE `entry` = 15263; diff --git a/data/sql/updates/pending_db_world/rev_1665949856612609200.sql b/data/sql/updates/db_world/2022_10_17_02.sql similarity index 85% rename from data/sql/updates/pending_db_world/rev_1665949856612609200.sql rename to data/sql/updates/db_world/2022_10_17_02.sql index 70029b95c..a2e6ccb4a 100644 --- a/data/sql/updates/pending_db_world/rev_1665949856612609200.sql +++ b/data/sql/updates/db_world/2022_10_17_02.sql @@ -1,3 +1,4 @@ +-- DB update 2022_10_17_01 -> 2022_10_17_02 -- DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_anubisath_mortal_strike', 'spell_mana_burn_area'); INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES From c855e8d227a73b8328fb3d0a7a9eb99347a60738 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Mon, 17 Oct 2022 10:53:42 +0200 Subject: [PATCH 15/17] fix(CORE/dbupdate)): allow to pass MySQL password via env (#13404) * fix(CORE/dbupdate)): allow to pass MySQL password via env + fixed devContainer override file issue + added authserver dry-run in our CI --- .devcontainer/devcontainer.json | 11 +++++------ .github/workflows/core_build.yml | 4 +++- .github/workflows/core_matrix_build.yml | 4 +++- src/common/Utilities/StartProcess.cpp | 21 +++++++++++---------- src/common/Utilities/StartProcess.h | 5 +++-- src/server/database/Updater/DBUpdater.cpp | 10 ++++++---- 6 files changed, 31 insertions(+), 24 deletions(-) diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index ed955ab61..15221f1aa 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -3,12 +3,11 @@ "name": "ac-dev-server", // Update the 'dockerComposeFile' list if you have more compose files or use different names. - // The .devcontainer/docker-compose.yml file contains any overrides you need/want to make. - "dockerComposeFile": [ - "../docker-compose.yml", - "../docker-compose.override.yml", // needed until this issue will be solved: https://github.com/microsoft/vscode-remote-release/issues/1080 - "docker-compose.yml" - ], + // set an empty array to automatically solve + // the docker-compose files (including the .override.yml) + // https://github.com/microsoft/vscode-remote-release/issues/1080#issuecomment-824213014 + // it requires vscode 1.57+ + "dockerComposeFile": [], // The 'service' property is the name of the service for the container that VS Code should // use. Update this value and .devcontainer/docker-compose.yml to the real service name. "service": "ac-dev-server", diff --git a/.github/workflows/core_build.yml b/.github/workflows/core_build.yml index 93cad079d..7c43a1bb7 100644 --- a/.github/workflows/core_build.yml +++ b/.github/workflows/core_build.yml @@ -42,7 +42,9 @@ jobs: run: bash bin/acore-db-pendings - name: Build run: source ./apps/ci/ci-compile.sh - - name: Dry run + - name: Dry run authserver + run: source ./apps/ci/ci-dry-run.sh authserver + - name: Dry run worldserver run: source ./apps/ci/ci-dry-run.sh worldserver - name: Check startup errors run: source ./apps/ci/ci-error-check.sh diff --git a/.github/workflows/core_matrix_build.yml b/.github/workflows/core_matrix_build.yml index 5852c6c17..a0f4d47f9 100644 --- a/.github/workflows/core_matrix_build.yml +++ b/.github/workflows/core_matrix_build.yml @@ -50,7 +50,9 @@ jobs: run: bash bin/acore-db-pendings - name: Build run: source ./apps/ci/ci-compile.sh - - name: Dry run + - name: Dry run authserver + run: source ./apps/ci/ci-dry-run.sh authserver + - name: Dry run worldserver run: source ./apps/ci/ci-dry-run.sh worldserver - name: Check startup errors run: source ./apps/ci/ci-error-check.sh diff --git a/src/common/Utilities/StartProcess.cpp b/src/common/Utilities/StartProcess.cpp index 7fbe053a8..1da7817f4 100644 --- a/src/common/Utilities/StartProcess.cpp +++ b/src/common/Utilities/StartProcess.cpp @@ -70,7 +70,7 @@ namespace Acore static int CreateChildProcess(T waiter, std::string const& executable, std::vector const& argsVector, std::string const& logger, std::string const& input, - bool secure) + bool secure, boost::process::environment envVariables = boost::this_process::environment()) { ipstream outStream; ipstream errStream; @@ -97,7 +97,7 @@ namespace Acore return child{ exe = std::filesystem::absolute(executable).string(), args = argsVector, - env = environment(boost::this_process::environment()), + env = environment(envVariables), std_in = inputFile.get(), std_out = outStream, std_err = errStream @@ -109,7 +109,7 @@ namespace Acore return child{ exe = std::filesystem::absolute(executable).string(), args = argsVector, - env = environment(boost::this_process::environment()), + env = environment(envVariables), std_in = boost::process::close, std_out = outStream, std_err = errStream @@ -144,7 +144,7 @@ namespace Acore } int StartProcess(std::string const& executable, std::vector const& args, - std::string const& logger, std::string input_file, bool secure) + std::string const& logger, std::string input_file, bool secure, boost::process::environment env) { return CreateChildProcess([](child& c) -> int { @@ -157,7 +157,7 @@ namespace Acore { return EXIT_FAILURE; } - }, executable, args, logger, input_file, secure); + }, executable, args, logger, input_file, secure, env); } class AsyncProcessResultImplementation @@ -168,6 +168,7 @@ namespace Acore std::string const logger; std::string const input_file; bool const is_secure; + boost::process::environment envVariables; std::atomic was_terminated; @@ -177,10 +178,10 @@ namespace Acore public: explicit AsyncProcessResultImplementation(std::string executable_, std::vector args_, std::string logger_, std::string input_file_, - bool secure) + bool secure, boost::process::environment env) : executable(std::move(executable_)), args(std::move(args_)), logger(std::move(logger_)), input_file(input_file_), - is_secure(secure), was_terminated(false) { } + is_secure(secure), envVariables(env), was_terminated(false) { } AsyncProcessResultImplementation(AsyncProcessResultImplementation const&) = delete; AsyncProcessResultImplementation& operator= (AsyncProcessResultImplementation const&) = delete; @@ -209,7 +210,7 @@ namespace Acore my_child.reset(); return was_terminated ? EXIT_FAILURE : exitCode; - }, executable, args, logger, input_file, is_secure); + }, executable, args, logger, input_file, is_secure, envVariables); } void SetFuture(std::future result_) @@ -245,10 +246,10 @@ namespace Acore std::shared_ptr StartAsyncProcess(std::string executable, std::vector args, - std::string logger, std::string input_file, bool secure) + std::string logger, std::string input_file, bool secure, boost::process::native_environment env) { auto handle = std::make_shared( - std::move(executable), std::move(args), std::move(logger), std::move(input_file), secure); + std::move(executable), std::move(args), std::move(logger), std::move(input_file), secure, env); handle->SetFuture(std::async(std::launch::async, [handle] { return handle->StartProcess(); })); return handle; diff --git a/src/common/Utilities/StartProcess.h b/src/common/Utilities/StartProcess.h index 6b564cb9e..f0d5d9781 100644 --- a/src/common/Utilities/StartProcess.h +++ b/src/common/Utilities/StartProcess.h @@ -23,6 +23,7 @@ #include #include #include +#include namespace Acore { @@ -34,7 +35,7 @@ namespace Acore /// Note that most executables expect it's name as the first argument. AC_COMMON_API int StartProcess(std::string const& executable, std::vector const& args, std::string const& logger, std::string input_file = "", - bool secure = false); + bool secure = false, boost::process::environment env = boost::this_process::environment()); /// Platform and library independent representation /// of asynchronous process results @@ -58,7 +59,7 @@ namespace Acore /// Note that most executables expect it's name as the first argument. AC_COMMON_API std::shared_ptr StartAsyncProcess(std::string executable, std::vector args, std::string logger, std::string input_file = "", - bool secure = false); + bool secure = false, boost::process::environment env = boost::this_process::environment()); /// Searches for the given executable in the PATH variable /// and returns a non-empty string when it was found. diff --git a/src/server/database/Updater/DBUpdater.cpp b/src/server/database/Updater/DBUpdater.cpp index d4f45c297..e1a1518f1 100644 --- a/src/server/database/Updater/DBUpdater.cpp +++ b/src/server/database/Updater/DBUpdater.cpp @@ -447,9 +447,6 @@ void DBUpdater::ApplyFile(DatabaseWorkerPool& pool, std::string const& hos args.emplace_back("-h" + host); args.emplace_back("-u" + user); - if (!password.empty()) - args.emplace_back("-p" + password); - // Check if we want to connect through ip or socket (Unix only) #ifdef _WIN32 @@ -499,9 +496,14 @@ void DBUpdater::ApplyFile(DatabaseWorkerPool& pool, std::string const& hos if (!database.empty()) args.emplace_back(database); + auto env = boost::process::environment(); + + if (!password.empty()) + env["MYSQL_PWD"]=password; + // Invokes a mysql process which doesn't leak credentials to logs int const ret = Acore::StartProcess(DBUpdaterUtil::GetCorrectedMySQLExecutable(), args, - "sql.updates", "", true); + "sql.updates", "", true, env); if (ret != EXIT_SUCCESS) { From a8d41010f55062459ae260b04b723a448112bd08 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Mon, 17 Oct 2022 16:01:32 +0200 Subject: [PATCH 16/17] fix(CORE): gcc compilation errors with gtest (#13445) --- src/cmake/googletest-download.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/cmake/googletest-download.cmake b/src/cmake/googletest-download.cmake index 1cc4361e5..2df129f61 100644 --- a/src/cmake/googletest-download.cmake +++ b/src/cmake/googletest-download.cmake @@ -24,7 +24,7 @@ ExternalProject_Add( GIT_REPOSITORY https://github.com/google/googletest.git GIT_TAG - main + release-1.12.1 CONFIGURE_COMMAND "" BUILD_COMMAND "" INSTALL_COMMAND "" From 563596bc69ed2feabf76bf5377acf5159f951604 Mon Sep 17 00:00:00 2001 From: Yehonal Date: Mon, 17 Oct 2022 15:46:56 +0000 Subject: [PATCH 17/17] fix(CORE): revert to mysql -p argument. A different and non deprecated approach should be used. --- src/server/database/Updater/DBUpdater.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/server/database/Updater/DBUpdater.cpp b/src/server/database/Updater/DBUpdater.cpp index e1a1518f1..f5d8f65a3 100644 --- a/src/server/database/Updater/DBUpdater.cpp +++ b/src/server/database/Updater/DBUpdater.cpp @@ -447,6 +447,9 @@ void DBUpdater::ApplyFile(DatabaseWorkerPool& pool, std::string const& hos args.emplace_back("-h" + host); args.emplace_back("-u" + user); + if (!password.empty()) + args.emplace_back("-p" + password); + // Check if we want to connect through ip or socket (Unix only) #ifdef _WIN32 @@ -498,8 +501,6 @@ void DBUpdater::ApplyFile(DatabaseWorkerPool& pool, std::string const& hos auto env = boost::process::environment(); - if (!password.empty()) - env["MYSQL_PWD"]=password; // Invokes a mysql process which doesn't leak credentials to logs int const ret = Acore::StartProcess(DBUpdaterUtil::GetCorrectedMySQLExecutable(), args,