diff --git a/data/sql/updates/pending_db_world/rev_1660252072288200163.sql b/data/sql/updates/db_world/2022_09_06_04.sql similarity index 73% rename from data/sql/updates/pending_db_world/rev_1660252072288200163.sql rename to data/sql/updates/db_world/2022_09_06_04.sql index 3e97a6001..561a4878a 100644 --- a/data/sql/updates/pending_db_world/rev_1660252072288200163.sql +++ b/data/sql/updates/db_world/2022_09_06_04.sql @@ -1 +1,2 @@ +-- DB update 2022_09_06_03 -> 2022_09_06_04 DELETE FROM `smart_scripts` WHERE (`entryorguid` IN (15651, 15652)) AND (`action_param1` = 22863) AND (`source_type` = 0); diff --git a/data/sql/updates/db_world/2022_09_06_05.sql b/data/sql/updates/db_world/2022_09_06_05.sql new file mode 100644 index 000000000..2cd99a300 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_06_05.sql @@ -0,0 +1,3 @@ +-- DB update 2022_09_06_04 -> 2022_09_06_05 + +UPDATE `smart_scripts` SET `target_type` = 23 WHERE (`entryorguid` = 33519) AND (`source_type` = 0) AND (`id` IN (1)); diff --git a/data/sql/updates/db_world/2022_09_06_06.sql b/data/sql/updates/db_world/2022_09_06_06.sql new file mode 100644 index 000000000..246b18e05 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_06_06.sql @@ -0,0 +1,8 @@ +-- DB update 2022_09_06_05 -> 2022_09_06_06 +DELETE FROM `lfg_dungeon_template` WHERE `dungeonId` IN (2, 276); +INSERT INTO `lfg_dungeon_template` +(`dungeonId`, `name`, `position_x`, `position_y`, `position_z`, `orientation`, +`VerifiedBuild`) +VALUES +(2, 'Scholomance', 196.37, 127.05, 134.91, 6.09, 0), +(276, 'Blackrock Depths - Upper City', 458.32, 26.52, -70.67, 4.95, 0); diff --git a/data/sql/updates/db_world/2022_09_06_07.sql b/data/sql/updates/db_world/2022_09_06_07.sql new file mode 100644 index 000000000..603acf29e --- /dev/null +++ b/data/sql/updates/db_world/2022_09_06_07.sql @@ -0,0 +1,560 @@ +-- DB update 2022_09_06_06 -> 2022_09_06_07 +-- +-- Brambleblade Ravine is in regards to entries 2952 (Bristleback Quilboar), 2954 (Bristbleback Battleboar), 2953 (Bristleback Shaman), 8554 (Chief Sharptusk Thornmantle), and 3229 (Squealer) +-- A few Bristbleback are still movement type +-- Squealer mob and pooled shaman has multiple spawn locations for whatever reason +-- Distance data based on sniffs of 50+ waypoints, taking largest seen value, most mobs were sniffed multiple times and most had several hundred waypoints gathered, its worth noting that blizzard picks "mid" values more than edge values here where I believe we do true random + +-- Remove all entries, they will be replaced +DELETE FROM `creature` WHERE `id1` IN (2952, 2953, 2954, 3229, 8554); +DELETE FROM `creature` WHERE `id2` IN (2952, 2953, 2954, 3229, 8554); +DELETE FROM `creature` WHERE `id3` IN (2952, 2953, 2954, 3229, 8554); + +DELETE FROM `creature_addon` WHERE `guid` IN (24868, 24869, 24870, 24871, 24872, 24873, 24874, 24875, 24876, 24877, 24878, 24879, 24880, 24881, 24882, 24883, 24884, 24885, 24886, 24887, 24888, 24889, 24890, 24891, 24892, 24893, 24894, 24895, 24896, 24897, 24898, 24899, 24900, 24901, 24902, 24903, 24904, 24905, 24906, 24907, 24908, 24909, 24910, 24911, 24912, 24913, 24914, 24915, 26208, 24788); + +DELETE FROM `waypoint_data` WHERE `id` IN (248710, 248840, 249040, 249050, 249060); + +SET @GUID :=132314; +DELETE FROM `creature` WHERE `guid` BETWEEN @GUID+0 AND @GUID+83; +-- All Bristbleback Quilboar includes patroling mobs +-- Any wander_distance values of 5 are "default" and not sniffed +-- Their spawntimes should not be any higher than the rest of the mobs in the area and have been adjusted to be so +-- They had a bytes2 value that should be sniffable but was not present and does nothing +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 +(@GUID+0, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3150.7534, -1052.9648, 56.43975, 5.302966594696044921, 155, 12.629, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3150.7534 -1052.9648 56.43975 +(@GUID+1, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3116.3357, -1051.2448, 55.295044, 4.60250091552734375, 155, 10.5589, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3116.3357 -1051.2448 55.295044 +(@GUID+2, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3085.2102, -1051.0903, 52.662544, 0.692077338695526123, 155, 12.81, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3085.2102 -1051.0903 52.662544 +(@GUID+3, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3083.872, -1019.1116, 52.962753, 2.956784248352050781, 155, 13.927, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3083.872 -1019.1116 52.962753 +(@GUID+4, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3048.8372, -1050.974, 52.59941, 2.282494544982910156, 155, 13.49656, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3048.8372 -1050.974 52.59941 +(@GUID+5, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3012.1736, -1034.0265, 53.144695, 5.669462203979492187, 155, 12.86959, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3012.1736 -1034.0265 53.144695 +(@GUID+6, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3052.054, -1116.1522, 62.405098, 0.814660429954528808, 155, 11.14, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3052.054 -1116.1522 62.405098 +(@GUID+7, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2999.921, -958.1629, 56.8227, 5.088941574096679687, 155, 11.65, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2999.921 -958.1629 56.8227 +(@GUID+8, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2950.7747, -946.5612, 55.603836, 2.140457630157470703, 155, 11.9, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2950.7747 -946.5612 55.603836 +(@GUID+9, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2950.1194, -980.11633, 54.702705, 4.818135261535644531, 155, 11.73, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2950.1194 -980.11633 54.702705 +(@GUID+10, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2916.3105, -1015.9456, 54.139874, 6.199100971221923828, 155, 11.77, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2916.3105 -1015.9456 54.139874 +(@GUID+11, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2982.2224, -1017.4263, 55.201473, 2.54172372817993164, 155, 10.49, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2982.2224 -1017.4263 55.201473 +(@GUID+12, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2996.7488, -1000.0406, 58.73503, 4.447712898254394531, 155, 11.38, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2996.7488 -1000.0406 58.73503 +(@GUID+13, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2950.8784, -1046.4603, 58.379433, 2.563724040985107421, 155, 10.4, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2950.8784 -1046.4603 58.379433 +(@GUID+14, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2959.413, -998.5598, 54.76306, 1.208631634712219238, 155, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2959.413 -998.5598 54.76306 +(@GUID+15, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2953.7734, -998.9086, 54.833206, 3.40339207649230957, 155, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), -- .go xyz -2953.7734 -998.9086 54.833206 STAY MOVETYPE +(@GUID+16, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3093.4758, -1088.4801, 71.43378, 5.683098316192626953, 155, 12.6357, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3093.4758 -1088.4801 71.43378 +(@GUID+17, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3086.019, -1149.5739, 69.29934, 1.664784789085388183, 155, 9.81, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3086.019 -1149.5739 69.29934 +(@GUID+18, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3066.1868, -1153.8861, 66.41088, 4.519444465637207031, 155, 12.7, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3066.1868 -1153.8861 66.41088 +(@GUID+19, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2999.8765, -1159.9207, 59.410393, 5.69529581069946289, 155, 12.735, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2999.8765 -1159.9207 59.410393 +(@GUID+20, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2950.6687, -1183.3853, 60.347267, 2.954801559448242187, 155, 10.75, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2950.6687 -1183.3853 60.347267 +(@GUID+21, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2951.1953, -1113.5035, 55.92694, 0.498246490955352783, 155, 9.8395, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2951.1953 -1113.5035 55.92694 +(@GUID+22, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2978.7075, -1122.8317, 57.782227, 2.84458017349243164, 155, 13.37, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2978.7075 -1122.8317 57.782227 +(@GUID+23, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2913.9424, -1106.5435, 54.56086, 6.088618278503417968, 155, 13.85, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2913.9424 -1106.5435 54.56086 +(@GUID+24, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2893.681, -1072.3804, 57.030727, 2.903368949890136718, 155, 11.06, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2893.681 -1072.3804 57.030727 +(@GUID+25, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2864.629, -1102.7501, 88.42688, 4.175736427307128906, 155, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), -- .go xyz -2864.629 -1102.7501 88.42688 PATROL 3/8 HILL PATROL +(@GUID+26, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2850.3103, -1073.8496, 78.23195, 3.153982400894165039, 155, 10.1187, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2850.3103 -1073.8496 78.23195 +(@GUID+27, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2915.7349, -1184.3763, 58.542664, 0.522246479988098144, 155, 12.0875, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2915.7349 -1184.3763 58.542664 +(@GUID+28, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2956.0144, -1236.8876, 64.73535, 3.626140832901000976, 155, 4.04, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2956.0144 -1236.8876 64.73535 +(@GUID+29, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2937.2708, -1248.2839, 72.0923, 2.181661605834960937, 155, 13.36, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2937.2708 -1248.2839 72.0923 +(@GUID+30, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2919.3887, -1246.2042, 71.87682, 0.9738960862159729, 155, 12.48866, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2919.3887 -1246.2042 71.87682 +(@GUID+31, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2899.7214, -1232.9889, 69.692184, 3.863359689712524414, 155, 4.12, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2899.7214 -1232.9889 69.692184 +(@GUID+32, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2916.9836, -1217.7164, 64.90637, 3.537041425704956054, 155, 13.596, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2916.9836 -1217.7164 64.90637 +(@GUID+33, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2935.3293, -1263.4711, 72.28772, 5.316411972045898437, 155, 4.2196, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2935.3293 -1263.4711 72.28772 +(@GUID+34, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2954.3838, -1256.5177, 71.82747, 1.832595705986022949, 155, 5, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2954.3838 -1256.5177 71.82747 +(@GUID+35, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2981.86, -1249.7069, 70.48874, 1.735272526741027832, 155, 14.278, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2981.86 -1249.7069 70.48874 +(@GUID+36, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2991.9094, -1276.4977, 72.28772, 3.770852565765380859, 155, 10.29, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2991.9094 -1276.4977 72.28772 +(@GUID+37, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2942.7583, -1299.1029, 72.28772, 0.758449733257293701, 155, 4.4297, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2942.7583 -1299.1029 72.28772 +(@GUID+38, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2922.9338, -1326.9536, 87.80231, 5.167690277099609375, 155, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), -- .go xyz -2922.9338 -1326.9536 87.80231 5/8 BACK STEEP HILL +(@GUID+39, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2952.7402, -1332.5857, 87.488365, 2.092166900634765625, 155, 3.9656, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2952.7402 -1332.5857 87.488365 +(@GUID+40, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2939.507, -1266.5256, 72.28772, 1.899880409240722656, 155, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), -- .go xyz -2939.507 -1266.5256 72.28772 6/8 LONG HILL GUY +(@GUID+41, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3151.1858, -1105.2335, 77.93116, 0.038982797414064407, 155, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), -- .go xyz -3151.1858 -1105.2335 77.93116 PATROL 2/8 LINE PATH OFFSHOOT FROM WEST CIRCLE PATH AREA +(@GUID+42, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2966.5222, -1166.9137, 60.150906, 4.363323211669921875, 155, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), -- .go xyz -2966.5222 -1166.9137 60.150906 PATROL 4/8 WEST CIRCLE PATROL +(@GUID+43, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -2960.4856, -1011.1829, 56.297466, 3.17542433738708496, 155, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), -- .go xyz -2960.4856 -1011.1829 56.297466 PATROL 1/8 NORTH TO SOUTH LINE ON WEST SIDE +(@GUID+44, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3119.4185, -1023.7673, 51.761677, 3.700098037719726562, 155, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), -- .go xyz -3119.4185 -1023.7673 51.761677 LATE FIND TUNNEL PATROL 7/8 +(@GUID+81, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3069.691, -921.935, 93.34613, 3.544991016387939453, 155, 5, 10.03, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3069.691 -921.935 93.34613 +(@GUID+82, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3079.552, -950.42786, 91.93386, 5.242145538330078125, 155, 11.877, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3079.552 -950.42786 91.93386 +(@GUID+83, 2952, 0, 0, 1, 0, 0, 1, 1, 0, -3189.8025, -999.37683, 93.33854, 2.977879285812377929, 155, 0, 0, 1, 0, 2, 0, 0, 0, '', 0), -- .go xyz -3189.8025 -999.37683 93.33854 ABOVE TUNNEL PATROL 8/8 + +-- All Bristbleback Battleboar (14) wander_distance "default" 10 + +(@GUID+45, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -3237.8066, -1075.9987, 97.312035, 1.733676552772521972, 155, 10, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3237.8066 -1075.9987 97.312035 +(@GUID+46, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -3184.8052, -1083.6736, 67.167305, 4.214093685150146484, 155, 10.981, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3184.8052 -1083.6736 67.167305 +(@GUID+47, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -3042.6934, -1080.635, 56.154224, 2.631436586380004882, 155, 11.56, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3042.6934 -1080.635 56.154224 +(@GUID+48, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2915.6345, -984.0473, 57.54398, 5.086844921112060546, 155, 9.96, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2915.6345 -984.0473 57.54398 +(@GUID+49, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2955.4253, -1022.7043, 56.01615, 4.47153329849243164, 155, 4.47, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2955.4253 -1022.7043 56.01615 +(@GUID+50, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2984.4314, -1150.1814, 58.376797, 2.902925491333007812, 155, 12.7, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2984.4314 -1150.1814 58.376797 +(@GUID+51, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2949.1694, -1216.911, 62.210266, 3.092623472213745117, 155, 10.007, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2949.1694 -1216.911 62.210266 +(@GUID+52, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2867.558, -1108.9894, 88.61443, 5.386580467224121093, 155, 3.89, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2867.558 -1108.9894 88.61443 +(@GUID+53, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2883.245, -1183.3043, 60.074165, 1.793056964874267578, 155, 10.311, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2883.245 -1183.3043 60.074165 +(@GUID+54, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2933.1707, -1234.4275, 67.6243, 5.398324966430664062, 155, 3.73, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2933.1707 -1234.4275 67.6243 +(@GUID+55, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2965.7278, -1250.1086, 69.96643, 1.673408389091491699, 155, 4.31, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2965.7278 -1250.1086 69.96643 +(@GUID+56, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2982.7717, -1218.3132, 63.217068, 5.572542667388916015, 155, 12, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2982.7717 -1218.3132 63.217068 +(@GUID+57, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -2941.8237, -1323.2695, 88.24578, 5.342491626739501953, 155, 4.41, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2941.8237 -1323.2695 88.24578 +(@GUID+58, 2954, 0, 0, 1, 0, 0, 1, 1, 0, -3073.399, -1230.3141, 88.40157, 0.404302150011062622, 155, 4.286, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3073.399 -1230.3141 88.40157 + +-- All Bristleback Shaman including those pooled with Squealer Thornmantle wander_distance "default" 1 +(@GUID+59, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2944.709, -1004.2018, 54.716393, 3.001966238021850585, 155, 0.83, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2944.709 -1004.2018 54.716393 +(@GUID+60, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2880.731, -1048.5382, 54.629375, 0.613354802131652832, 155, 10.42, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2880.731 -1048.5382 54.629375 +(@GUID+61, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2852.2021, -1019.8367, 55.96327, 0.88501816987991333, 155, 8.16, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2852.2021 -1019.8367 55.96327 +(@GUID+62, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2851.6155, -1034.9342, 55.19425, 3.968293428421020507, 155, 9.08, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2851.6155 -1034.9342 55.19425 +(@GUID+63, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2877.8242, -1115.7709, 88.57609, 1.659793019294738769, 155, 0.77, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2877.8242 -1115.7709 88.57609 +(@GUID+64, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2869.8643, -1123.9333, 88.61066, 4.590215682983398437, 155, 0.72, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2869.8643 -1123.9333 88.61066 +(@GUID+65, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2883.6667, -1217.8553, 67.21337, 5.547870635986328125, 155, 12.19, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2883.6667 -1217.8553 67.21337 +(@GUID+66, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2939.574, -1277.1733, 72.28772, 5.246784687042236328, 155, 0.82, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2939.574 -1277.1733 72.28772 +(@GUID+67, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -3016.1924, -1233.6248, 69.02434, 0.62902987003326416, 155, 14.95762, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3016.1924 -1233.6248 69.02434 +(@GUID+68, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2964.0217, -1292.0299, 72.28772, 4.874174118041992187, 155, 0.97, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2964.0217 -1292.0299 72.28772 +(@GUID+69, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2937.7422, -1347.1462, 87.42025, 3.804817676544189453, 155, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2937.7422 -1347.1462 87.42025 +(@GUID+70, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -2913.2542, -1340.1007, 87.42305, 1.39061903953552246, 155, 1, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -2913.2542 -1340.1007 87.42305 +(@GUID+71, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -3103.7544, -1196.7037, 85.66892, 5.480333805084228515, 76, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), -- .go xyz -3103.7544 -1196.7037 85.66892 PAIRED W SQUEALER +(@GUID+72, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -3052.261, -1224.8212, 78.78548, 4.489466190338134765, 155, 13.61, 0, 1, 0, 1, 0, 0, 0, '', 0), -- .go xyz -3052.261 -1224.8212 78.78548 +(@GUID+73, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -3109.7998, -1196.0378, 85.89288, 5.707226753234863281, 76, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), -- .go xyz -3109.7998 -1196.0378 85.89288 PAIRED W SQUEALER +(@GUID+74, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -3110.423, -1202.7513, 85.450165, 0.261799395084381103, 76, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), -- .go xyz -3110.423 -1202.7513 85.450165 PAIRED W SQUEALER +(@GUID+75, 2953, 0, 0, 1, 0, 0, 1, 1, 0, -3101.2073, -1203.3483, 85.60877, 5.916666030883789062, 76, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), -- .go xyz -3101.2073 -1203.3483 85.60877 PAIRED W SQUEALER + +-- Chief Sharptusk Thornmantle has an accellerated spawn timer that seems to be "just over a min" +-- They had a bytes2 value that should be sniffable but was not present and does nothing +(@GUID+76, 8554, 0, 0, 1, 0, 0, 1, 1, 0, -2932.8672, -1276.2454, 72.28772, 1.762782573699951171, 66, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), -- .go xyz -2932.8672 -1276.2454 72.28772 + +-- 4 Variations of Squealer also on an accellerated spawn timer +-- They had a bytes2 value that should be sniffable but was not present and does nothing +(@GUID+77, 3229, 0, 0, 1, 0, 0, 1, 1, 0, -3110.423, -1202.7513, 85.450165, 0.261799395084381103, 76, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), -- .go xyz -3110.423 -1202.7513 85.450165 +(@GUID+78, 3229, 0, 0, 1, 0, 0, 1, 1, 0, -3101.2073, -1203.3483, 85.60877, 5.916666030883789062, 76, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), -- .go xyz -3101.2073 -1203.3483 85.60877 +(@GUID+79, 3229, 0, 0, 1, 0, 0, 1, 1, 0, -3109.7998, -1196.0378, 85.89288, 5.707226753234863281, 76, 0, 0, 1, 0, 0, 0, 0, 0, '', 0), -- .go xyz -3109.7998 -1196.0378 85.89288 +(@GUID+80, 3229, 0, 0, 1, 0, 0, 1, 1, 0, -3103.7544, -1196.7037, 85.66892, 5.480333805084228515, 76, 0, 0, 1, 0, 0, 0, 0, 0, '', 0); -- .go xyz -3103.7544 -1196.7037 85.66892 + +-- Create 4 Pools for Squealer and his shaman. This should be 12 pools to be blizzlike, but my goal in this PR is to get spawnpoints correct and it's my belief that this should be handled differently than 12 pools (which would require adding 16 more NPCs as well) another issue with pooling is if one mob is killed, the pool will respawn eventually. This should not happen, the remaining mob should stand alone indefinitely, this is a problem with the way pool_pool functions in general. I feel pool_pool is incorrect and should eventually be replaced but that's a tangent for somewhere else/an issue post and is at least a 3 step proccess (adding a new system, moving existing pool_pool use into it which would include cleaning up "duplicate" creatures and possibly gameobjects, then removing pool_pool)........ in any case, this "pretty good enough" and minimalist for those reasons--all spawn points are used exactly 1 time in the pooling, in the same pairings they were sniffed in the first time seen. + +DELETE FROM `pool_template` WHERE `entry` BETWEEN 484 AND 488; +DELETE FROM `pool_pool` WHERE `pool_id` BETWEEN 484 AND 488; +DELETE FROM `pool_pool` WHERE `mother_pool` BETWEEN 484 AND 488; +DELETE FROM `pool_creature` WHERE `pool_entry` BETWEEN 484 AND 488; +DELETE FROM `pool_creature` WHERE `guid` BETWEEN @GUID+0 AND @GUID+80; -- A bit overkill but there is no other pooling required here + +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES +(484, 1, 'Squealer Variations'), +(485, 2, 'Squealer Variant 1'), +(486, 2, 'Squealer Variant 2'), +(487, 2, 'Squealer Variant 3'), +(488, 2, 'Squealer Variant 4'); + +INSERT INTO `pool_pool` (`pool_id`, `mother_pool`, `chance`, `description`) VALUES +(485, 484, 25, 'Squealer 1'), +(486, 484, 25, 'Squealer 2'), +(487, 484, 25, 'Squealer 3'), +(488, 484, 25, 'Squealer 4'); + +INSERT INTO `pool_creature` (`guid`, `pool_entry`, `description`) VALUES +(@GUID+77, 485, 'Squealer Thornmantle 1'), +(@GUID+71, 485, 'Bristleback Shaman 1'), + +(@GUID+78, 486, 'Squealer Thronmantle 2'), +(@GUID+73, 486, 'Bristleback Shaman 2'), + +(@GUID+79, 487, 'Squealer Thornmantle 3'), +(@GUID+74, 487, 'Bristleback Shaman 3'), + +(@GUID+80, 488, 'Sqealer Thornmantle 4'), +(@GUID+75, 488, 'Bristleback Shaman 4'); + +-- Pathing for Entry: 2952 PATROL 1/8 NORTH TO SOUTH LINE ON WEST SIDE +SET @NPC := @GUID+43; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2 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,-2961.712,-1011.2244,56.166748,0,0,0,0,100,0), +(@PATH,2,-2971.4773,-1019.3734,54.697845,0,0,0,0,100,0), +(@PATH,3,-2983.6985,-1025.3036,54.95175,0,0,0,0,100,0), +(@PATH,4,-2997.0415,-1027.8938,54.390717,0,0,0,0,100,0), +(@PATH,5,-3007.3867,-1029.2715,54.32701,0,0,0,0,100,0), +(@PATH,6,-3027.1973,-1040.9512,49.216076,0,0,0,0,100,0), +(@PATH,7,-3045.8252,-1044.3395,49.151966,0,0,0,0,100,0), +(@PATH,8,-3057.0012,-1040.9094,49.151966,0,0,0,0,100,0), +(@PATH,9,-3068.8245,-1037.146,49.236847,0,0,0,0,100,0), +(@PATH,10,-3081.5195,-1038.8552,49.236847,0,0,0,0,100,0), +(@PATH,11,-3097.514,-1040.9816,50.001007,0,0,0,0,100,0), +(@PATH,12,-3111.7708,-1045.7502,52.833817,0,0,0,0,100,0), +(@PATH,13,-3124.2632,-1051.6448,54.31038,0,0,0,0,100,0), +(@PATH,14,-3142.9316,-1060.3864,55.953236,0,0,0,0,100,0), +(@PATH,15,-3159.9397,-1069.763,58.288166,0,0,0,0,100,0), +(@PATH,16,-3172.7832,-1079.2949,64.25776,0,0,0,0,100,0), +(@PATH,17,-3191.036,-1078.7428,67.50434,0,0,0,0,100,0), +(@PATH,18,-3214.8147,-1077.1764,81.09084,0,0,0,0,100,0), +(@PATH,19,-3227.1787,-1077.1012,89.57278,0,0,0,0,100,0), +(@PATH,20,-3246.1743,-1073.8044,102.49158,0,0,0,0,100,0), +(@PATH,21,-3256.6477,-1066.4739,109.23329,0,0,0,0,100,0), +(@PATH,22,-3267.388,-1057.1256,113.91971,0,0,0,0,100,0), +(@PATH,23,-3256.6477,-1066.4739,109.23329,0,0,0,0,100,0), +(@PATH,24,-3246.1743,-1073.8044,102.49158,0,0,0,0,100,0), +(@PATH,25,-3227.1787,-1077.1012,89.57278,0,0,0,0,100,0), +(@PATH,26,-3214.8147,-1077.1764,81.09084,0,0,0,0,100,0), +(@PATH,27,-3191.036,-1078.7428,67.50434,0,0,0,0,100,0), +(@PATH,28,-3172.7832,-1079.2949,64.25776,0,0,0,0,100,0), +(@PATH,29,-3159.9397,-1069.763,58.288166,0,0,0,0,100,0), +(@PATH,30,-3142.9316,-1060.3864,55.953236,0,0,0,0,100,0), +(@PATH,31,-3124.2632,-1051.6448,54.31038,0,0,0,0,100,0), +(@PATH,32,-3111.7708,-1045.7502,52.833817,0,0,0,0,100,0), +(@PATH,33,-3097.514,-1040.9816,50.001007,0,0,0,0,100,0), +(@PATH,34,-3081.5195,-1038.8552,49.236847,0,0,0,0,100,0), +(@PATH,35,-3068.8245,-1037.146,49.236847,0,0,0,0,100,0), +(@PATH,36,-3057.0012,-1040.9094,49.151966,0,0,0,0,100,0), +(@PATH,37,-3045.8252,-1044.3395,49.151966,0,0,0,0,100,0), +(@PATH,38,-3027.1973,-1040.9512,49.216076,0,0,0,0,100,0), +(@PATH,39,-3007.3867,-1029.2715,54.32701,0,0,0,0,100,0), +(@PATH,40,-2997.0415,-1027.8938,54.390717,0,0,0,0,100,0), +(@PATH,41,-2983.6985,-1025.3036,54.95175,0,0,0,0,100,0), +(@PATH,42,-2971.4773,-1019.3734,54.697845,0,0,0,0,100,0); +-- 0x204494002002E200003F0E00007B28E4 .go xyz -2961.712 -1011.2244 56.166748 + +-- Pathing for Entry: 2952 PATROL 2/8 LINE PATH OFFSHOOT FROM WEST CIRCLE PATH AREA +SET @NPC := @GUID+41; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2 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,-3146.7832,-1118.2994,81.629944,0,0,0,0,100,0), +(@PATH,2,-3144.558,-1123.2455,82.362366,0,0,0,0,100,0), +(@PATH,3,-3141.0127,-1127.8922,84.52106,0,0,0,0,100,0), +(@PATH,4,-3138.776,-1131.7545,85.79083,0,0,0,0,100,0), +(@PATH,5,-3135.7861,-1134.4666,86.17131,0,0,0,0,100,0), +(@PATH,6,-3130.9817,-1139.6838,84.58054,0,0,0,0,100,0), +(@PATH,7,-3127.846,-1141.9879,83.001686,0,0,0,0,100,0), +(@PATH,8,-3125.4783,-1144.7509,81.2949,0,0,0,0,100,0), +(@PATH,9,-3122.837,-1148.3398,79.78025,0,0,0,0,100,0), +(@PATH,10,-3119.168,-1152.6188,78.18626,0,0,0,0,100,0), +(@PATH,11,-3114.9998,-1155.1896,77.13328,0,0,0,0,100,0), +(@PATH,12,-3111.0703,-1155.9473,76.22288,0,0,0,0,100,0), +(@PATH,13,-3104.269,-1156.2095,75.655495,0,0,0,0,100,0), +(@PATH,14,-3098.3984,-1153.2089,73.569534,0,0,0,0,100,0), +(@PATH,15,-3092.219,-1148.8915,70.98189,0,0,0,0,100,0), +(@PATH,16,-3082.1536,-1140.3633,69.596146,0,0,0,0,100,0), +(@PATH,17,-3082.2766,-1132.5764,72.37984,0,0,0,0,100,0), +(@PATH,18,-3087.681,-1121.0466,76.498,0,0,0,0,100,0), +(@PATH,19,-3089.2246,-1112.0756,76.7397,0,0,0,0,100,0), +(@PATH,20,-3082.923,-1096.7307,74.80794,0,0,0,0,100,0), +(@PATH,21,-3076.344,-1094.6487,73.62532,0,0,0,0,100,0), +(@PATH,22,-3082.923,-1096.7307,74.80794,0,0,0,0,100,0), +(@PATH,23,-3089.2246,-1112.0756,76.7397,0,0,0,0,100,0), +(@PATH,24,-3087.681,-1121.0466,76.498,0,0,0,0,100,0), +(@PATH,25,-3082.2766,-1132.5764,72.37984,0,0,0,0,100,0), +(@PATH,26,-3082.1536,-1140.3633,69.596146,0,0,0,0,100,0), +(@PATH,27,-3092.219,-1148.8915,70.98189,0,0,0,0,100,0), +(@PATH,28,-3098.334,-1153.125,73.58345,0,0,0,0,100,0), +(@PATH,29,-3104.269,-1156.2095,75.655495,0,0,0,0,100,0), +(@PATH,30,-3110.9585,-1155.9677,76.25681,0,0,0,0,100,0), +(@PATH,31,-3114.8887,-1155.209,77.22288,0,0,0,0,100,0), +(@PATH,32,-3119.166,-1152.6211,78.22288,0,0,0,0,100,0), +(@PATH,33,-3122.837,-1148.3398,79.78025,0,0,0,0,100,0), +(@PATH,34,-3125.4783,-1144.7509,81.2949,0,0,0,0,100,0), +(@PATH,35,-3127.846,-1141.9879,83.001686,0,0,0,0,100,0), +(@PATH,36,-3130.9817,-1139.6838,84.58054,0,0,0,0,100,0), +(@PATH,37,-3135.7861,-1134.4666,86.17131,0,0,0,0,100,0), +(@PATH,38,-3138.748,-1131.7793,85.760315,0,0,0,0,100,0), +(@PATH,39,-3141.0127,-1127.8922,84.52106,0,0,0,0,100,0), +(@PATH,40,-3144.558,-1123.2455,82.362366,0,0,0,0,100,0), +(@PATH,41,-3146.7832,-1118.2994,81.629944,0,0,0,0,100,0), +(@PATH,42,-3148.4307,-1114.0474,80.62872,0,0,0,0,100,0), +(@PATH,43,-3149.6172,-1110.0563,78.74835,0,0,0,0,100,0), +(@PATH,44,-3150.804,-1105.2186,77.862854,0,0,0,0,100,0), +(@PATH,45,-3149.6172,-1110.0563,78.74835,0,0,0,0,100,0), +(@PATH,46,-3148.4307,-1114.0474,80.62872,0,0,0,0,100,0); +-- 0x204494002002E200003F0E00007B47C8 .go xyz -3146.7832 -1118.2994 81.629944 + +-- Pathing for Entry: 2952 PATROL 3/8 HILL PATROL +SET @NPC := @GUID+25; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2852.1565,`position_y`=-1094.1387,`position_z`=86.89366 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,-2852.1565,-1094.1387,86.89366,0,0,0,0,100,0), +(@PATH,2,-2850.1191,-1089.8453,82.18321,0,0,0,0,100,0), +(@PATH,3,-2847.5715,-1084.5143,78.30846,0,0,0,0,100,0), +(@PATH,4,-2844.4636,-1076.7814,77.229355,0,0,0,0,100,0), +(@PATH,5,-2840.5664,-1070.9707,75.18346,0,0,0,0,100,0), +(@PATH,6,-2836.2793,-1068.3926,72.68346,0,0,0,0,100,0), +(@PATH,7,-2834.5415,-1063.892,70.703354,0,0,0,0,100,0), +(@PATH,8,-2836.5215,-1057.9679,68.83128,0,0,0,0,100,0), +(@PATH,9,-2839.361,-1053.0757,66.261215,0,0,0,0,100,0), +(@PATH,10,-2842.3506,-1048.498,62.99828,0,0,0,0,100,0), +(@PATH,11,-2847.8005,-1042.7087,58.317127,0,0,0,0,100,0), +(@PATH,12,-2853.6597,-1040.6172,55.818592,0,0,0,0,100,0), +(@PATH,13,-2862.998,-1041.666,54.63915,0,0,0,0,100,0), +(@PATH,14,-2869.8333,-1045.0111,54.719086,0,0,0,0,100,0), +(@PATH,15,-2877.8167,-1049.8906,55.065277,0,0,0,0,100,0), +(@PATH,16,-2884.8599,-1057.5271,54.75717,0,0,0,0,100,0), +(@PATH,17,-2877.8167,-1049.8906,55.065277,0,0,0,0,100,0), +(@PATH,18,-2869.8333,-1045.0111,54.719086,0,0,0,0,100,0), +(@PATH,19,-2862.998,-1041.666,54.63915,0,0,0,0,100,0), +(@PATH,20,-2853.6597,-1040.6172,55.818592,0,0,0,0,100,0), +(@PATH,21,-2847.8005,-1042.7087,58.317127,0,0,0,0,100,0), +(@PATH,22,-2842.3506,-1048.498,62.99828,0,0,0,0,100,0), +(@PATH,23,-2839.361,-1053.0757,66.261215,0,0,0,0,100,0), +(@PATH,24,-2836.5215,-1057.9679,68.83128,0,0,0,0,100,0), +(@PATH,25,-2834.5415,-1063.892,70.703354,0,0,0,0,100,0), +(@PATH,26,-2836.1736,-1068.3346,72.73131,0,0,0,0,100,0), +(@PATH,27,-2840.4805,-1070.8828,75.18346,0,0,0,0,100,0), +(@PATH,28,-2844.4636,-1076.7814,77.229355,0,0,0,0,100,0), +(@PATH,29,-2847.5715,-1084.5143,78.30846,0,0,0,0,100,0), +(@PATH,30,-2850.1191,-1089.8453,82.18321,0,0,0,0,100,0), +(@PATH,31,-2852.1565,-1094.1387,86.89366,0,0,0,0,100,0), +(@PATH,32,-2856.3054,-1096.593,88.92369,0,0,0,0,100,0), +(@PATH,33,-2861.179,-1099.9493,88.70909,0,0,0,0,100,0), +(@PATH,34,-2864.896,-1103.1991,88.51355,0,0,0,0,100,0), +(@PATH,35,-2856.3054,-1096.593,88.92369,0,0,0,0,100,0); +-- 0x204494002002E200003F0E00007B3D7E .go xyz -2852.1565 -1094.1387 86.89366 + +-- Pathing for Entry: 2952 PATROL 4/8 WEST CIRCLE PATROL +SET @NPC := @GUID+42; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2 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,-2966.6282,-1166.7826,59.79027,0,0,0,0,100,0), +(@PATH,2,-2976.7695,-1159.4805,59.338833,0,0,0,0,100,0), +(@PATH,3,-2983.6057,-1157.9626,58.743618,0,0,0,0,100,0), +(@PATH,4,-2994.0664,-1158.4838,58.9194,0,0,0,0,100,0), +(@PATH,5,-3002.771,-1161.9937,59.502087,0,0,0,0,100,0), +(@PATH,6,-3008.088,-1164.4954,59.469128,0,0,0,0,100,0), +(@PATH,7,-3014.562,-1167.2656,60.09375,0,0,0,0,100,0), +(@PATH,8,-3020.82,-1170.2137,61.323486,0,0,0,0,100,0), +(@PATH,9,-3028.963,-1169.9653,61.857666,0,0,0,0,100,0), +(@PATH,10,-3038.551,-1169.9587,62.88227,0,0,0,0,100,0), +(@PATH,11,-3046.7822,-1167.1433,63.489693,0,0,0,0,100,0), +(@PATH,12,-3053.6487,-1162.8998,63.745937,0,0,0,0,100,0), +(@PATH,13,-3058.2432,-1157.1339,64.06186,0,0,0,0,100,0), +(@PATH,14,-3060.5042,-1149.7556,64.328705,0,0,0,0,100,0), +(@PATH,15,-3059.798,-1140.2621,62.517178,0,0,0,0,100,0), +(@PATH,16,-3059.2058,-1129.8031,61.685894,0,0,0,0,100,0), +(@PATH,17,-3057.5806,-1120.1815,60.90855,0,0,0,0,100,0), +(@PATH,18,-3054.9438,-1109.9918,61.18028,0,0,0,0,100,0), +(@PATH,19,-3050.7104,-1102.8596,57.989117,0,0,0,0,100,0), +(@PATH,20,-3044.2527,-1092.0681,56.23148,0,0,0,0,100,0), +(@PATH,21,-3039.5813,-1081.878,54.214878,0,0,0,0,100,0), +(@PATH,22,-3041.483,-1070.166,51.886753,0,0,0,0,100,0), +(@PATH,23,-3049.7534,-1055.7463,53.098743,0,0,0,0,100,0), +(@PATH,24,-3055.148,-1046.4718,49.597767,0,0,0,0,100,0), +(@PATH,25,-3063.0867,-1039.9294,49.151966,0,0,0,0,100,0), +(@PATH,26,-3074.7327,-1041.3402,49.236847,0,0,0,0,100,0), +(@PATH,27,-3087.5217,-1043.9277,49.904327,0,0,0,0,100,0), +(@PATH,28,-3100.2888,-1052.9208,55.24739,0,0,0,0,100,0), +(@PATH,29,-3104.511,-1060.6345,59.014725,0,0,0,0,100,0), +(@PATH,30,-3100.8115,-1075.0563,64.1783,0,0,0,0,100,0), +(@PATH,31,-3093.472,-1092.7599,72.37312,0,0,0,0,100,0), +(@PATH,32,-3092.5696,-1099.5211,74.38899,0,0,0,0,100,0), +(@PATH,33,-3091.8142,-1110.9763,76.75777,0,0,0,0,100,0), +(@PATH,34,-3090.17,-1118.4949,77.09126,0,0,0,0,100,0), +(@PATH,35,-3084.7969,-1131.6705,74.17305,0,0,0,0,100,0), +(@PATH,36,-3080.3618,-1143.4012,67.61568,0,0,0,0,100,0), +(@PATH,37,-3072.304,-1146.0973,65.45845,0,0,0,0,100,0), +(@PATH,38,-3063.675,-1145.1855,63.95053,0,0,0,0,100,0), +(@PATH,39,-3072.304,-1146.0973,65.45845,0,0,0,0,100,0), +(@PATH,40,-3080.3618,-1143.4012,67.61568,0,0,0,0,100,0), +(@PATH,41,-3084.7969,-1131.6705,74.17305,0,0,0,0,100,0), +(@PATH,42,-3090.17,-1118.4949,77.09126,0,0,0,0,100,0), +(@PATH,43,-3091.8142,-1110.9763,76.75777,0,0,0,0,100,0), +(@PATH,44,-3092.5696,-1099.5211,74.38899,0,0,0,0,100,0), +(@PATH,45,-3093.472,-1092.7599,72.37312,0,0,0,0,100,0), +(@PATH,46,-3100.8115,-1075.0563,64.1783,0,0,0,0,100,0), +(@PATH,47,-3104.511,-1060.6345,59.014725,0,0,0,0,100,0), +(@PATH,48,-3100.2888,-1052.9208,55.24739,0,0,0,0,100,0), +(@PATH,49,-3087.5217,-1043.9277,49.904327,0,0,0,0,100,0), +(@PATH,50,-3074.7327,-1041.3402,49.236847,0,0,0,0,100,0), +(@PATH,51,-3063.0867,-1039.9294,49.151966,0,0,0,0,100,0), +(@PATH,52,-3055.148,-1046.4718,49.597767,0,0,0,0,100,0), +(@PATH,53,-3049.7534,-1055.7463,53.098743,0,0,0,0,100,0), +(@PATH,54,-3041.483,-1070.166,51.886753,0,0,0,0,100,0), +(@PATH,55,-3039.5813,-1081.878,54.214878,0,0,0,0,100,0), +(@PATH,56,-3044.2527,-1092.0681,56.23148,0,0,0,0,100,0), +(@PATH,57,-3050.7104,-1102.8596,57.989117,0,0,0,0,100,0), +(@PATH,58,-3054.9438,-1109.9918,61.18028,0,0,0,0,100,0), +(@PATH,59,-3057.5806,-1120.1815,60.90855,0,0,0,0,100,0), +(@PATH,60,-3059.2058,-1129.8031,61.685894,0,0,0,0,100,0), +(@PATH,61,-3059.798,-1140.2621,62.517178,0,0,0,0,100,0), +(@PATH,62,-3060.5042,-1149.7556,64.328705,0,0,0,0,100,0), +(@PATH,63,-3058.2432,-1157.1339,64.06186,0,0,0,0,100,0), +(@PATH,64,-3053.6487,-1162.8998,63.745937,0,0,0,0,100,0), +(@PATH,65,-3046.7822,-1167.1433,63.489693,0,0,0,0,100,0), +(@PATH,66,-3038.551,-1169.9587,62.88227,0,0,0,0,100,0), +(@PATH,67,-3028.963,-1169.9653,61.857666,0,0,0,0,100,0), +(@PATH,68,-3020.82,-1170.2137,61.323486,0,0,0,0,100,0), +(@PATH,69,-3014.562,-1167.2656,60.09375,0,0,0,0,100,0), +(@PATH,70,-3008.088,-1164.4954,59.469128,0,0,0,0,100,0), +(@PATH,71,-3002.771,-1161.9937,59.502087,0,0,0,0,100,0), +(@PATH,72,-2994.0664,-1158.4838,58.9194,0,0,0,0,100,0), +(@PATH,73,-2983.6057,-1157.9626,58.743618,0,0,0,0,100,0), +(@PATH,74,-2976.7695,-1159.4805,59.338833,0,0,0,0,100,0); +-- 0x204494002002E200003F0E00007B4A07 .go xyz -2966.6282 -1166.7826 59.79027 + +-- Pathing for Entry: 2952 5/8 BACK STEEP HILL +SET @NPC := @GUID+38; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-2936.0652,`position_y`=-1329.1919,`position_z`=88.24882 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,-2936.0652,-1329.1919,88.24882,0,0,0,0,100,0), +(@PATH,2,-2941.6055,-1329.6256,87.71195,0,0,0,0,100,0), +(@PATH,3,-2946.7676,-1327.098,87.77982,0,0,0,0,100,0), +(@PATH,4,-2953.729,-1324.7623,86.4683,0,0,0,0,100,0), +(@PATH,5,-2959.1643,-1323.8787,84.44901,0,0,0,0,100,0), +(@PATH,6,-2968.2048,-1322.0011,81.11845,0,0,0,0,100,0), +(@PATH,7,-2971.0168,-1318.8032,79.547646,0,0,0,0,100,0), +(@PATH,8,-2976.9666,-1314.3882,76.76176,0,0,0,0,100,0), +(@PATH,9,-2980.8179,-1309.3013,74.72587,0,0,0,0,100,0), +(@PATH,10,-2982.7288,-1304.3756,73.52421,0,0,0,0,100,0), +(@PATH,11,-2985.4448,-1294.0367,72.26551,0,0,0,0,100,0), +(@PATH,12,-2982.7668,-1285.9819,72.26551,0,0,0,0,100,0), +(@PATH,13,-2980.2083,-1279.4545,72.26551,0,0,0,0,100,0), +(@PATH,14,-2982.7668,-1285.9819,72.26551,0,0,0,0,100,0), +(@PATH,15,-2985.4448,-1294.0367,72.26551,0,0,0,0,100,0), +(@PATH,16,-2982.7288,-1304.3756,73.52421,0,0,0,0,100,0), +(@PATH,17,-2980.8179,-1309.3013,74.72587,0,0,0,0,100,0), +(@PATH,18,-2976.9666,-1314.3882,76.76176,0,0,0,0,100,0), +(@PATH,19,-2971.0168,-1318.8032,79.547646,0,0,0,0,100,0), +(@PATH,20,-2968.2048,-1322.0011,81.11845,0,0,0,0,100,0), +(@PATH,21,-2959.1643,-1323.8787,84.44901,0,0,0,0,100,0), +(@PATH,22,-2953.729,-1324.7623,86.4683,0,0,0,0,100,0), +(@PATH,23,-2946.7676,-1327.098,87.77982,0,0,0,0,100,0), +(@PATH,24,-2941.6055,-1329.6256,87.71195,0,0,0,0,100,0), +(@PATH,25,-2936.0652,-1329.1919,88.24882,0,0,0,0,100,0), +(@PATH,26,-2928.9438,-1327.5259,88.454384,0,0,0,0,100,0), +(@PATH,27,-2922.7239,-1327.3824,87.770546,0,0,0,0,100,0), +(@PATH,28,-2928.9438,-1327.5259,88.454384,0,0,0,0,100,0); +-- 0x204494002002E200003F0E00007B45A3 .go xyz -2936.0652 -1329.1919 88.24882 + +-- Pathing for Entry: 2952 6/8 LONG HILL GUY +SET @NPC := @GUID+40; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2 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,-2946.3318,-1252.1638,71.8886,0,0,0,0,100,0), +(@PATH,2,-2952.6064,-1245.0092,68.88445,0,0,0,0,100,0), +(@PATH,3,-2962.3926,-1239.0801,65.04583,0,0,0,0,100,0), +(@PATH,4,-2970.3557,-1236.7878,64.636765,0,0,0,0,100,0), +(@PATH,5,-2990.205,-1234.6272,64.44682,0,0,0,0,100,0), +(@PATH,6,-3002.0015,-1232.859,66.188034,0,0,0,0,100,0), +(@PATH,7,-3020.425,-1230.2251,70.09502,0,0,0,0,100,0), +(@PATH,8,-3034.9863,-1226.6211,74.35703,0,0,0,0,100,0), +(@PATH,9,-3045.6091,-1224.5006,77.05088,0,0,0,0,100,0), +(@PATH,10,-3054.6707,-1221.685,79.685646,0,0,0,0,100,0), +(@PATH,11,-3063.6133,-1219.7833,82.49912,0,0,0,0,100,0), +(@PATH,12,-3072.1113,-1215.9227,85.353264,0,0,0,0,100,0), +(@PATH,13,-3078.3245,-1212.4366,86.5053,0,0,0,0,100,0), +(@PATH,14,-3088.474,-1208.2225,85.65675,0,0,0,0,100,0), +(@PATH,15,-3078.3245,-1212.4366,86.5053,0,0,0,0,100,0), +(@PATH,16,-3072.2148,-1215.8164,85.33373,0,0,0,0,100,0), +(@PATH,17,-3063.6133,-1219.7833,82.49912,0,0,0,0,100,0), +(@PATH,18,-3054.8066,-1221.6641,79.60703,0,0,0,0,100,0), +(@PATH,19,-3045.6091,-1224.5006,77.05088,0,0,0,0,100,0), +(@PATH,20,-3035.012,-1226.6161,74.37852,0,0,0,0,100,0), +(@PATH,21,-3020.425,-1230.2251,70.09502,0,0,0,0,100,0), +(@PATH,22,-3002.0015,-1232.859,66.188034,0,0,0,0,100,0), +(@PATH,23,-2990.205,-1234.6272,64.44682,0,0,0,0,100,0), +(@PATH,24,-2970.3557,-1236.7878,64.636765,0,0,0,0,100,0), +(@PATH,25,-2962.3926,-1239.0801,65.04583,0,0,0,0,100,0), +(@PATH,26,-2952.6064,-1245.0092,68.88445,0,0,0,0,100,0), +(@PATH,27,-2946.3318,-1252.1638,71.8886,0,0,0,0,100,0), +(@PATH,28,-2943.6946,-1256.3978,72.24407,0,0,0,0,100,0), +(@PATH,29,-2940.987,-1262.1919,72.24407,0,0,0,0,100,0), +(@PATH,30,-2939.4636,-1266.726,72.329384,0,0,0,0,100,0), +(@PATH,31,-2943.6946,-1256.3978,72.24407,0,0,0,0,100,0); +-- 0x204494002002E200003F0E00007B4630 .go xyz -2946.3318 -1252.1638 71.8886 + +-- Pathing for Entry: 2952 LATE FIND TUNNEL PATROL 7/8 +SET @NPC := @GUID+44; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0 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,-3128.819,-1015.3105,51.516167,0,0,0,0,100,0), +(@PATH,2,-3135.294,-1009.4896,50.93017,0,0,0,0,100,0), +(@PATH,3,-3140.0098,-1005.2151,50.164234,0,0,0,0,100,0), +(@PATH,4,-3143.754,-1002.8673,50.693275,0,0,0,0,100,0), +(@PATH,5,-3149.185,-999.8543,50.978836,0,0,0,0,100,0), +(@PATH,6,-3153.8984,-994.8447,50.52997,0,0,0,0,100,0), +(@PATH,7,-3156.861,-990.53284,50.30574,0,0,0,0,100,0), +(@PATH,8,-3160.9102,-981.7381,50.024147,0,0,0,0,100,0), +(@PATH,9,-3162.0635,-969.6567,51.31704,0,0,0,0,100,0), +(@PATH,10,-3162.736,-965.17645,51.14846,0,0,0,0,100,0), +(@PATH,11,-3167.1892,-959.7274,49.331295,0,0,0,0,100,0), +(@PATH,12,-3171.1692,-955.2677,49.970737,0,0,0,0,100,0), +(@PATH,13,-3178.252,-947.1688,50.293358,0,0,0,0,100,0), +(@PATH,14,-3184.6882,-940.8143,51.613605,0,0,0,0,100,0), +(@PATH,15,-3187.9836,-934.8941,51.979214,0,0,0,0,100,0), +(@PATH,16,-3189.5715,-931.58777,52.50561,0,0,0,0,100,0), +(@PATH,17,-3184.6882,-940.8143,51.613605,0,0,0,0,100,0), +(@PATH,18,-3178.252,-947.1688,50.293358,0,0,0,0,100,0), +(@PATH,19,-3171.1692,-955.2677,49.970737,0,0,0,0,100,0), +(@PATH,20,-3167.2083,-959.7042,49.311344,0,0,0,0,100,0), +(@PATH,21,-3162.736,-965.17645,51.14846,0,0,0,0,100,0), +(@PATH,22,-3162.0635,-969.6567,51.31704,0,0,0,0,100,0), +(@PATH,23,-3161.174,-979.3392,50.468437,0,0,0,0,100,0), +(@PATH,24,-3158.5876,-987.058,49.906708,0,0,0,0,100,0), +(@PATH,25,-3156.9138,-990.45593,50.289776,0,0,0,0,100,0), +(@PATH,26,-3153.8984,-994.8447,50.52997,0,0,0,0,100,0), +(@PATH,27,-3149.1904,-999.84863,50.979122,0,0,0,0,100,0), +(@PATH,28,-3143.754,-1002.8673,50.693275,0,0,0,0,100,0), +(@PATH,29,-3140.0098,-1005.2151,50.164234,0,0,0,0,100,0), +(@PATH,30,-3135.294,-1009.4896,50.93017,0,0,0,0,100,0), +(@PATH,31,-3128.819,-1015.3105,51.516167,0,0,0,0,100,0), +(@PATH,32,-3124.93,-1019.7272,51.062088,0,0,0,0,100,0), +(@PATH,33,-3119.2927,-1024.0083,50.593548,0,0,0,0,100,0), +(@PATH,34,-3124.8574,-1019.7123,51.074574,0,0,0,0,100,0); +-- 0x204494002002E20000001D0000073279 .go xyz -3128.819 -1015.3105 51.516167 + +-- Pathing for Entry: 2952 ABOVE TUNNEL PATROL 8/8 +-- 0x204494002002E20000001D0000086E34 .go xyz -3177.3604 -994.7924 93.245804 +SET @NPC := @GUID+83; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `wander_distance`=0,`MovementType`=2,`position_x`=-3177.3604,`position_y`=-994.7924,`position_z`=93.245804 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,-3177.3604,-994.7924,93.245804,0,0,0,0,100,0), +(@PATH,2,-3170.251,-991.2536,93.196,0,0,0,0,100,0), +(@PATH,3,-3164.749,-987.4129,93.162735,0,0,0,0,100,0), +(@PATH,4,-3156.9866,-981.63043,92.52089,0,0,0,0,100,0), +(@PATH,5,-3150.1423,-976.2628,93.287735,0,0,0,0,100,0), +(@PATH,6,-3145.8997,-971.18176,93.287735,0,0,0,0,100,0), +(@PATH,7,-3144.206,-964.76935,93.52335,0,0,0,0,100,0), +(@PATH,8,-3137.0825,-961.3595,93.27335,0,0,0,0,100,0), +(@PATH,9,-3128.3264,-960.39575,93.38651,0,0,0,0,100,0), +(@PATH,10,-3121.3025,-962.5877,93.38651,0,0,0,0,100,0), +(@PATH,11,-3109.048,-961.9134,93.77714,0,0,0,0,100,0), +(@PATH,12,-3103.8723,-959.48395,93.96317,0,0,0,0,100,0), +(@PATH,13,-3093.718,-955.32117,93.40212,0,0,0,0,100,0), +(@PATH,14,-3085.0796,-950.825,93.118675,0,0,0,0,100,0), +(@PATH,15,-3079.3599,-945.0343,93.16311,0,0,0,0,100,0), +(@PATH,16,-3072.1787,-935.6571,93.29421,0,0,0,0,100,0), +(@PATH,17,-3071.6152,-928.2733,93.31096,0,0,0,0,100,0), +(@PATH,18,-3073.047,-911.60187,93.27971,0,0,0,0,100,0), +(@PATH,19,-3071.6152,-928.2733,93.31096,0,0,0,0,100,0), +(@PATH,20,-3072.1787,-935.6571,93.29421,0,0,0,0,100,0), +(@PATH,21,-3079.3599,-945.0343,93.16311,0,0,0,0,100,0), +(@PATH,22,-3085.0796,-950.825,93.118675,0,0,0,0,100,0), +(@PATH,23,-3093.718,-955.32117,93.40212,0,0,0,0,100,0), +(@PATH,24,-3103.8723,-959.48395,93.96317,0,0,0,0,100,0), +(@PATH,25,-3109.048,-961.9134,93.77714,0,0,0,0,100,0), +(@PATH,26,-3121.3025,-962.5877,93.38651,0,0,0,0,100,0), +(@PATH,27,-3128.3264,-960.39575,93.38651,0,0,0,0,100,0), +(@PATH,28,-3137.0825,-961.3595,93.27335,0,0,0,0,100,0), +(@PATH,29,-3144.206,-964.76935,93.52335,0,0,0,0,100,0), +(@PATH,30,-3145.8997,-971.18176,93.287735,0,0,0,0,100,0), +(@PATH,31,-3150.1423,-976.2628,93.287735,0,0,0,0,100,0), +(@PATH,32,-3156.9866,-981.63043,92.52089,0,0,0,0,100,0), +(@PATH,33,-3164.749,-987.4129,93.162735,0,0,0,0,100,0), +(@PATH,34,-3170.251,-991.2536,93.196,0,0,0,0,100,0), +(@PATH,35,-3177.3604,-994.7924,93.245804,0,0,0,0,100,0), +(@PATH,36,-3182.6372,-995.90607,93.30806,0,0,0,0,100,0), +(@PATH,37,-3190.2163,-999.3085,93.30806,0,0,0,0,100,0), +(@PATH,38,-3182.6372,-995.90607,93.30806,0,0,0,0,100,0); diff --git a/data/sql/updates/db_world/2022_09_06_08.sql b/data/sql/updates/db_world/2022_09_06_08.sql new file mode 100644 index 000000000..a7631420a --- /dev/null +++ b/data/sql/updates/db_world/2022_09_06_08.sql @@ -0,0 +1,310 @@ +-- DB update 2022_09_06_07 -> 2022_09_06_08 +-- Kurinnaxx +SET @BOSS=144632; +SET @NPC=144521; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+9; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0), +(@NPC+9, @BOSS, 0); +SET @NPC=144490; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+19; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0), +(@NPC+9, @BOSS, 0), +(@NPC+10, @BOSS, 0), +(@NPC+11, @BOSS, 0), +(@NPC+12, @BOSS, 0), +(@NPC+13, @BOSS, 0), +(@NPC+14, @BOSS, 0), +(@NPC+15, @BOSS, 0), +(@NPC+16, @BOSS, 0), +(@NPC+17, @BOSS, 0), +(@NPC+18, @BOSS, 0), +(@NPC+19, @BOSS, 0); +SET @NPC=144604; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+5; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0); +SET @NPC=144482; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+3; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0); + +-- General Rajaxx - Waves are already linked +SET @BOSS=144603; +SET @NPC=144486; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+3; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0); + +-- Moam +SET @BOSS=144602; +SET @NPC=144592; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+8; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0); +SET @NPC=144748; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+29; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0), +(@NPC+9, @BOSS, 0), +(@NPC+10, @BOSS, 0), +(@NPC+11, @BOSS, 0), +(@NPC+12, @BOSS, 0), +(@NPC+13, @BOSS, 0), +(@NPC+14, @BOSS, 0), +(@NPC+15, @BOSS, 0), +(@NPC+16, @BOSS, 0), +(@NPC+17, @BOSS, 0), +(@NPC+18, @BOSS, 0), +(@NPC+19, @BOSS, 0), +(@NPC+20, @BOSS, 0), +(@NPC+21, @BOSS, 0), +(@NPC+22, @BOSS, 0), +(@NPC+23, @BOSS, 0), +(@NPC+24, @BOSS, 0), +(@NPC+25, @BOSS, 0), +(@NPC+26, @BOSS, 0), +(@NPC+27, @BOSS, 0), +(@NPC+28, @BOSS, 0), +(@NPC+29, @BOSS, 0); +SET @NPC=144706; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+24; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0), +(@NPC+9, @BOSS, 0), +(@NPC+10, @BOSS, 0), +(@NPC+11, @BOSS, 0), +(@NPC+12, @BOSS, 0), +(@NPC+13, @BOSS, 0), +(@NPC+14, @BOSS, 0), +(@NPC+15, @BOSS, 0), +(@NPC+16, @BOSS, 0), +(@NPC+17, @BOSS, 0), +(@NPC+18, @BOSS, 0), +(@NPC+19, @BOSS, 0), +(@NPC+20, @BOSS, 0), +(@NPC+21, @BOSS, 0), +(@NPC+22, @BOSS, 0), +(@NPC+23, @BOSS, 0), +(@NPC+24, @BOSS, 0); +SET @NPC=144681; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+24; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0), +(@NPC+9, @BOSS, 0), +(@NPC+10, @BOSS, 0), +(@NPC+11, @BOSS, 0), +(@NPC+12, @BOSS, 0), +(@NPC+13, @BOSS, 0), +(@NPC+14, @BOSS, 0), +(@NPC+15, @BOSS, 0), +(@NPC+16, @BOSS, 0), +(@NPC+17, @BOSS, 0), +(@NPC+18, @BOSS, 0), +(@NPC+19, @BOSS, 0), +(@NPC+20, @BOSS, 0), +(@NPC+21, @BOSS, 0), +(@NPC+22, @BOSS, 0), +(@NPC+23, @BOSS, 0), +(@NPC+24, @BOSS, 0); + +-- Ossirian the Unscarred +SET @BOSS=144601; +SET @NPC=144633; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+7; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0); + +-- Ayamiss the Hunter +SET @BOSS=144641; +SET @NPC=144540; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+40; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0), +(@NPC+9, @BOSS, 0), +(@NPC+10, @BOSS, 0), +(@NPC+11, @BOSS, 0), +(@NPC+12, @BOSS, 0), +(@NPC+13, @BOSS, 0), +(@NPC+14, @BOSS, 0), +(@NPC+15, @BOSS, 0), +(@NPC+16, @BOSS, 0), +(@NPC+17, @BOSS, 0), +(@NPC+18, @BOSS, 0), +(@NPC+19, @BOSS, 0), +(@NPC+20, @BOSS, 0), +(@NPC+21, @BOSS, 0), +(@NPC+22, @BOSS, 0), +(@NPC+23, @BOSS, 0), +(@NPC+24, @BOSS, 0), +(@NPC+25, @BOSS, 0), +(@NPC+26, @BOSS, 0), +(@NPC+27, @BOSS, 0), +(@NPC+28, @BOSS, 0), +(@NPC+29, @BOSS, 0), +(@NPC+30, @BOSS, 0), +(@NPC+31, @BOSS, 0), +(@NPC+32, @BOSS, 0), +(@NPC+33, @BOSS, 0), +(@NPC+34, @BOSS, 0), +(@NPC+35, @BOSS, 0), +(@NPC+36, @BOSS, 0), +(@NPC+37, @BOSS, 0), +(@NPC+38, @BOSS, 0), +(@NPC+39, @BOSS, 0), +(@NPC+40, @BOSS, 0); +SET @NPC=144452; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+11; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0), +(@NPC+9, @BOSS, 0), +(@NPC+10, @BOSS, 0), +(@NPC+11, @BOSS, 0); +SET @NPC=144586; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+5; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0); +SET @NPC=144531; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+8; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0); +SET @NPC=144510; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+10; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0), +(@NPC+9, @BOSS, 0), +(@NPC+10, @BOSS, 0); + +-- Buru the Gorger +SET @BOSS=144642; +SET @NPC=144464; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+8; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0); +SET @NPC=144473; +DELETE FROM `linked_respawn` WHERE `linkedGuid`=@BOSS AND `guid` BETWEEN @NPC AND @NPC+8; +INSERT INTO `linked_respawn` (`guid`, `linkedGuid`, `linkType`) VALUES +(@NPC, @BOSS, 0), +(@NPC+1, @BOSS, 0), +(@NPC+2, @BOSS, 0), +(@NPC+3, @BOSS, 0), +(@NPC+4, @BOSS, 0), +(@NPC+5, @BOSS, 0), +(@NPC+6, @BOSS, 0), +(@NPC+7, @BOSS, 0), +(@NPC+8, @BOSS, 0); + +-- Flesh Hunters do not respawn +UPDATE `creature` SET `spawntimesecs`=259200 WHERE `id1`=15335 AND `map`=509; diff --git a/data/sql/updates/db_world/2022_09_06_09.sql b/data/sql/updates/db_world/2022_09_06_09.sql new file mode 100644 index 000000000..1ae4bedd8 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_06_09.sql @@ -0,0 +1,483 @@ +-- DB update 2022_09_06_08 -> 2022_09_06_09 +-- Set random movement to all of them +UPDATE `creature` SET `MovementType`=1, `wander_distance`=3 WHERE `id1` IN (15316,15317) AND `map`=531; + +-- Delete old spawns, add new spawns for patrolling critters +DELETE FROM `creature` WHERE `guid` IN (144235,144236,144237,144242,144244,144259,144332,144333,144348,144356,144291,144293,144310,144311,144312,144313,144399,144404,144405,144412,144679); +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`) VALUES +(144235, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-8709.916,1662.6412,-84.64706, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144236, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-8879.1875,1362.2852,-98.36637, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144237, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-8901.615,1486.9878,-92.56509, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144242, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-8957.687,1441.4086,-92.35549, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144244, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-8797.018,1610.714,-90.64299, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144259, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-8891.035,1438.89,-89.74331, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144332, 15317, 0, 0, 531, 0, 0, 1, 1, 0,-8822.126,1500.405,-93.86366, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144333, 15317, 0, 0, 531, 0, 0, 1, 1, 0,-8760.808,1618.244,-84.36525, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144348, 15317, 0, 0, 531, 0, 0, 1, 1, 0,-8754.792,1577.6238,-88.39652, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144356, 15317, 0, 0, 531, 0, 0, 1, 1, 0,-8910.943,1403.7899,-97.94198, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144291, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-9161.17,1520.4386,-92.79693, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144293, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-9071.885,1481.3569,-105.22721, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144310, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-8931.336,1518.0297,-94.619255, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144311, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-9178.233,1555.376,-83.15645, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144312, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-9092.085,1471.9957,-103.95926, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144313, 15316, 0, 0, 531, 0, 0, 1, 1, 0,-9085.651,1336.6029,-104.9923, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144399, 15317, 0, 0, 531, 0, 0, 1, 1, 0,-9088.224,1416.7762,-107.078896, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144404, 15317, 0, 0, 531, 0, 0, 1, 1, 0,-9096.186,1444.9286,-104.47447, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144405, 15317, 0, 0, 531, 0, 0, 1, 1, 0,-9095.084,1390.2705,-105.85795, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144412, 15317, 0, 0, 531, 0, 0, 1, 1, 0,-9073.12,1388.0787,-107.209076, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(144679, 15317, 0, 0, 531, 0, 0, 1, 1, 0,-9121.533,1375.1395,-106.184975, 0, 17400, 0, 0, 1, 0, 2, 0, 0, 0, ''); + +-- UPDATE MOVEMENTTYPE FOR NEW CREATURES +UPDATE `creature` SET `MovementType`=2, `wander_distance`=0 WHERE `guid` IN (144235,144236,144237,144242,144244,144259,144332,144333,144348,144356,144291,144293,144310,144311,144312,144313,144399,144404,144405,144412,144679); + +-- Add addons +DELETE FROM `creature_addon` WHERE `guid` IN (144235,144236,144237,144242,144244,144259,144332,144333,144348,144356,144291,144293,144310,144311,144312,144313,144399,144404,144405,144412,144679); +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES +(144235, 1442350), +(144236, 1442360), +(144237, 1442370), +(144242, 1442420), +(144244, 1442440), +(144259, 1442590), +(144332, 1443320), +(144333, 1443330), +(144348, 1443480), +(144356, 1443560), +(144291, 1442910), +(144293, 1442930), +(144310, 1443100), +(144311, 1443110), +(144312, 1443120), +(144313, 1443130), +(144399, 1443990), +(144404, 1444040), +(144405, 1444050), +(144412, 1444120), +(144679, 1446790); + +-- Add waypoints +DELETE FROM `waypoint_data` WHERE `id` IN (1442350,1442360,1442370,1442420,1442440,1442590,1443320,1443330,1443480,1443560,1442910,1442930,1443100,1443110,1443120,1443130,1443990,1444040,1444050,1444120,1446790); +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(1442350,1,-8709.916,1662.6412,-84.64706,0,0,0,0,100,0), +(1442350,2,-8704.922,1648.0223,-82.86381,0,0,0,0,100,0), +(1442350,3,-8720.256,1639.4169,-82.8503,0,0,0,0,100,0), +(1442350,4,-8737.091,1631.815,-81.6951,0,0,0,0,100,0), +(1442350,5,-8747.508,1627.3049,-82.07862,0,0,0,0,100,0), +(1442350,6,-8759.189,1617.1493,-83.763596,0,0,0,0,100,0), +(1442350,7,-8773.706,1603.3866,-87.08513,0,0,0,0,100,0), +(1442350,8,-8791.415,1623.7231,-87.6898,0,0,0,0,100,0), +(1442350,9,-8774.919,1635.5029,-84.493835,0,0,0,0,100,0), +(1442350,10,-8754.987,1649.186,-81.04529,0,0,0,0,100,0), +(1442350,11,-8738.826,1659.0065,-81.912865,0,0,0,0,100,0), +(1442350,12,-8724.29,1670.1774,-82.408104,0,0,0,0,100,0), + +(1442360,1,-8879.1875,1362.2852,-98.36637,0,0,0,0,100,0), +(1442360,2,-8877.842,1374.6134,-98.13042,0,0,0,0,100,0), +(1442360,3,-8871.135,1389.6156,-96.69604,0,0,0,0,100,0), +(1442360,4,-8869.234,1406.5952,-94.331825,0,0,0,0,100,0), +(1442360,5,-8873.806,1419.1112,-92.369026,0,0,0,0,100,0), +(1442360,6,-8875.747,1434.907,-90.549904,0,0,0,0,100,0), +(1442360,7,-8871.698,1448.6813,-90.62127,0,0,0,0,100,0), +(1442360,8,-8864.111,1447.3325,-91.40244,0,0,0,0,100,0), +(1442360,9,-8862.138,1439.3253,-90.95677,0,0,0,0,100,0), +(1442360,10,-8861.489,1422.8735,-91.96901,0,0,0,0,100,0), +(1442360,11,-8859.439,1407.6573,-93.50757,0,0,0,0,100,0), +(1442360,12,-8861.519,1392.4116,-96.10952,0,0,0,0,100,0), +(1442360,13,-8863.297,1373.6831,-97.59476,0,0,0,0,100,0), +(1442360,14,-8870.3545,1363.8999,-98.28948,0,0,0,0,100,0), +(1442360,15,-8875.194,1362.149,-97.96593,0,0,0,0,100,0), +(1442360,16,-8870.3545,1363.8999,-98.28948,0,0,0,0,100,0), +(1442360,17,-8863.297,1373.6831,-97.59476,0,0,0,0,100,0), +(1442360,18,-8861.519,1392.4116,-96.10952,0,0,0,0,100,0), +(1442360,19,-8859.439,1407.6573,-93.50757,0,0,0,0,100,0), +(1442360,20,-8861.489,1422.8735,-91.96901,0,0,0,0,100,0), +(1442360,21,-8862.138,1439.3253,-90.95677,0,0,0,0,100,0), +(1442360,22,-8864.111,1447.3325,-91.40244,0,0,0,0,100,0), +(1442360,23,-8871.698,1448.6813,-90.62127,0,0,0,0,100,0), +(1442360,24,-8875.747,1434.907,-90.549904,0,0,0,0,100,0), +(1442360,25,-8873.806,1419.1112,-92.369026,0,0,0,0,100,0), +(1442360,26,-8869.234,1406.5952,-94.331825,0,0,0,0,100,0), +(1442360,27,-8871.135,1389.6156,-96.69604,0,0,0,0,100,0), +(1442360,28,-8877.842,1374.6134,-98.13042,0,0,0,0,100,0), + +(1442370,1,-8901.615,1486.9878,-92.56509,0,0,0,0,100,0), +(1442370,2,-8894.615,1501.9271,-93.31495,0,0,0,0,100,0), +(1442370,3,-8893.057,1512.8271,-94.24682,0,0,0,0,100,0), +(1442370,4,-8902.624,1518.0614,-92.5049,0,0,0,0,100,0), +(1442370,5,-8906.995,1520.1177,-93.1783,0,0,0,0,100,0), +(1442370,6,-8916.412,1514.2351,-94.16516,0,0,0,0,100,0), +(1442370,7,-8922.951,1500.2008,-93.495995,0,0,0,0,100,0), +(1442370,8,-8929.048,1484.6302,-92.72202,0,0,0,0,100,0), +(1442370,9,-8934.22,1471.741,-92.128784,0,0,0,0,100,0), +(1442370,10,-8930.449,1464.1768,-91.627365,0,0,0,0,100,0), +(1442370,11,-8922.018,1459.343,-92.51893,0,0,0,0,100,0), +(1442370,12,-8914.986,1463.158,-92.310745,0,0,0,0,100,0), +(1442370,13,-8908.553,1475.0021,-91.95947,0,0,0,0,100,0), + +(1442420,1,-8957.687,1441.4086,-92.35549,0,0,0,0,100,0), +(1442420,2,-8957.109,1448.8145,-91.779015,0,0,0,0,100,0), +(1442420,3,-8954.798,1461.109,-91.92982,0,0,0,0,100,0), +(1442420,4,-8950.785,1475.7125,-92.5044,0,0,0,0,100,0), +(1442420,5,-8940.726,1499.1289,-93.43882,0,0,0,0,100,0), +(1442420,6,-8931.336,1518.0297,-94.619255,0,0,0,0,100,0), +(1442420,7,-8921.133,1532.732,-95.145676,0,0,0,0,100,0), +(1442420,8,-8913.712,1545.54,-95.47196,0,0,0,0,100,0), +(1442420,9,-8900.031,1566.4486,-95.75281,0,0,0,0,100,0), +(1442420,10,-8891.205,1567.1182,-94.31571,0,0,0,0,100,0), +(1442420,11,-8887.606,1557.8823,-95.07148,0,0,0,0,100,0), +(1442420,12,-8892.903,1544.9524,-95.09268,0,0,0,0,100,0), +(1442420,13,-8906.302,1535.4017,-95.15878,0,0,0,0,100,0), +(1442420,14,-8912.736,1526.1064,-94.81041,0,0,0,0,100,0), +(1442420,15,-8921.759,1508.2211,-93.969986,0,0,0,0,100,0), +(1442420,16,-8926.561,1493.8021,-93.25992,0,0,0,0,100,0), +(1442420,17,-8937.755,1465.6974,-92.20584,0,0,0,0,100,0), +(1442420,18,-8939.568,1453.1688,-91.83563,0,0,0,0,100,0), +(1442420,19,-8939.462,1439.5057,-92.06916,0,0,0,0,100,0), +(1442420,20,-8939.116,1429.8024,-93.09846,0,0,0,0,100,0), +(1442420,21,-8942.206,1420.408,-95.6026,0,0,0,0,100,0), +(1442420,22,-8949.488,1418.712,-95.651375,0,0,0,0,100,0), +(1442420,23,-8956.407,1423.2029,-93.34446,0,0,0,0,100,0), +(1442420,24,-8959.321,1430.307,-92.080696,0,0,0,0,100,0), + +(1442440,1,-8797.018,1610.714,-90.64299,0,0,1,0,100,0), +(1442440,2,-8799.708,1576.0378,-92.291405,0,0,1,0,100,0), +(1442440,3,-8832.841,1576.931,-94.97763,0,0,1,0,100,0), +(1442440,4,-8836.67,1548.1146,-95.38926,0,0,1,0,100,0), +(1442440,5,-8878.974,1531.4718,-95.186424,0,0,1,0,100,0), +(1442440,6,-8876.113,1496.8469,-92.22732,0,0,1,0,100,0), +(1442440,7,-8902.331,1492.512,-92.26631,0,0,1,0,100,0), +(1442440,8,-8893.682,1467.2194,-91.18648,0,0,1,0,100,0), +(1442440,9,-8912.335,1447.5905,-92.25001,0,0,1,0,100,0), +(1442440,10,-8889.106,1431.9249,-90.12599,0,0,1,0,100,0), +(1442440,11,-8914.496,1419.4996,-94.89586,0,0,1,0,100,0), +(1442440,12,-8893.065,1397.7928,-96.55446,0,0,1,0,100,0), +(1442440,13,-8913.483,1393.8298,-99.049255,0,0,1,0,100,0), +(1442440,14,-8911.748,1365.6313,-103.29147,0,0,1,0,100,0), +(1442440,15,-8930.997,1371.5281,-104.26125,0,0,1,0,100,0), +(1442440,16,-8911.748,1365.6313,-103.29147,0,0,1,0,100,0), +(1442440,17,-8913.504,1393.8258,-99.04673,0,0,1,0,100,0), +(1442440,18,-8893.065,1397.7928,-96.55446,0,0,1,0,100,0), +(1442440,19,-8914.496,1419.4996,-94.89586,0,0,1,0,100,0), +(1442440,20,-8889.106,1431.9249,-90.12599,0,0,1,0,100,0), +(1442440,21,-8912.335,1447.5905,-92.25001,0,0,1,0,100,0), +(1442440,22,-8893.657,1467.1482,-91.116905,0,0,1,0,100,0), +(1442440,23,-8902.331,1492.512,-92.26631,0,0,1,0,100,0), +(1442440,24,-8876.113,1496.8469,-92.22732,0,0,1,0,100,0), +(1442440,25,-8878.974,1531.4718,-95.186424,0,0,1,0,100,0), +(1442440,26,-8836.67,1548.1146,-95.38926,0,0,1,0,100,0), +(1442440,27,-8832.841,1576.931,-94.97763,0,0,1,0,100,0), +(1442440,28,-8799.708,1576.0378,-92.291405,0,0,1,0,100,0), + +(1442590,1,-8891.035,1438.89,-89.74331,0,0,0,0,100,0), +(1442590,2,-8879.028,1437.6437,-90.06562,0,0,0,0,100,0), +(1442590,3,-8865.397,1433.4955,-91.751205,0,0,0,0,100,0), +(1442590,4,-8861.905,1425.7185,-91.67395,0,0,0,0,100,0), +(1442590,5,-8867.022,1417.7177,-93.1436,0,0,0,0,100,0), +(1442590,6,-8885.744,1425.2048,-90.67367,0,0,0,0,100,0), +(1442590,7,-8898.218,1431.0944,-92.211716,0,0,0,0,100,0), +(1442590,8,-8901.993,1435.3002,-92.81072,0,0,0,0,100,0), +(1442590,9,-8919.422,1437.7391,-93.23863,0,0,0,0,100,0), +(1442590,10,-8924.775,1435.864,-93.11082,0,0,0,0,100,0), +(1442590,11,-8941.288,1442.17,-92.097916,0,0,0,0,100,0), +(1442590,12,-8948.592,1445.0094,-92.205505,0,0,0,0,100,0), +(1442590,13,-8954.505,1450.9745,-92.264305,0,0,0,0,100,0), +(1442590,14,-8952.63,1455.1658,-92.66071,0,0,0,0,100,0), +(1442590,15,-8936.276,1460.8806,-91.96269,0,0,0,0,100,0), +(1442590,16,-8928.016,1459.0157,-91.83072,0,0,0,0,100,0), +(1442590,17,-8912.489,1457.1178,-92.21006,0,0,0,0,100,0), +(1442590,18,-8900.334,1452.6049,-91.78114,0,0,0,0,100,0), +(1442590,19,-8895.714,1439.8229,-90.47308,0,0,0,0,100,0), + +(1443320,1,-8822.126,1500.405,-93.86366,0,0,0,0,100,0), +(1443320,2,-8828.658,1494.334,-93.68562,0,0,0,0,100,0), +(1443320,3,-8838.2295,1503.8063,-94.373146,0,0,0,0,100,0), +(1443320,4,-8841.758,1514.9296,-94.69837,0,0,0,0,100,0), +(1443320,5,-8850.98,1521.575,-95.04134,0,0,0,0,100,0), +(1443320,6,-8860.441,1524.6168,-94.80845,0,0,0,0,100,0), +(1443320,7,-8873.537,1522.2963,-95.11584,0,0,0,0,100,0), +(1443320,8,-8884.092,1523.0099,-94.82321,0,0,0,0,100,0), +(1443320,9,-8899.644,1525.0096,-93.69322,0,0,0,0,100,0), +(1443320,10,-8913.182,1532.5382,-95.240395,0,0,0,0,100,0), +(1443320,11,-8909.919,1542.7625,-95.77908,0,0,0,0,100,0), +(1443320,12,-8905.436,1549.5841,-96.07218,0,0,0,0,100,0), +(1443320,13,-8899.203,1555.4316,-96.22511,0,0,0,0,100,0), +(1443320,14,-8884.99,1548.4818,-94.76164,0,0,0,0,100,0), +(1443320,15,-8875.507,1542.3378,-95.588036,0,0,0,0,100,0), +(1443320,16,-8858.749,1538.0184,-95.86659,0,0,0,0,100,0), +(1443320,17,-8844.169,1536.9783,-95.33141,0,0,0,0,100,0), +(1443320,18,-8825.314,1532.5233,-95.50407,0,0,0,0,100,0), +(1443320,19,-8816.446,1525.8988,-95.47302,0,0,0,0,100,0), +(1443320,20,-8818.018,1510.5206,-94.65973,0,0,0,0,100,0), + +(1443330,1,-8760.808,1618.244,-84.36525,0,0,0,0,100,0), +(1443330,2,-8772.906,1610.891,-87.32371,0,0,0,0,100,0), +(1443330,3,-8787.417,1623.8663,-87.48943,0,0,0,0,100,0), +(1443330,4,-8782.579,1631.1953,-85.72162,0,0,0,0,100,0), +(1443330,5,-8766.031,1641.5411,-82.6734,0,0,0,0,100,0), +(1443330,6,-8750.186,1653.0125,-81.00926,0,0,0,0,100,0), +(1443330,7,-8726.348,1669.038,-82.59135,0,0,0,0,100,0), +(1443330,8,-8708.614,1668.9208,-83.7078,0,0,0,0,100,0), +(1443330,9,-8705.537,1648.5631,-83.06354,0,0,0,0,100,0), +(1443330,10,-8727.311,1636.0825,-82.477104,0,0,0,0,100,0), +(1443330,11,-8743.633,1626.1401,-81.32434,0,0,0,0,100,0), + +(1443480,1,-8754.792,1577.6238,-88.39652,0,0,0,0,100,0), +(1443480,2,-8759.031,1561.37,-90.63265,0,0,0,0,100,0), +(1443480,3,-8773.014,1544.3585,-93.6597,0,0,0,0,100,0), +(1443480,4,-8787.051,1529.0981,-95.33403,0,0,0,0,100,0), +(1443480,5,-8800.996,1518.8502,-94.883484,0,0,0,0,100,0), +(1443480,6,-8826.272,1501.1176,-94.76043,0,0,0,0,100,0), +(1443480,7,-8838.889,1507.8043,-94.42932,0,0,0,0,100,0), +(1443480,8,-8848.135,1515.5707,-94.45049,0,0,0,0,100,0), +(1443480,9,-8849.216,1524.4657,-95.217255,0,0,0,0,100,0), +(1443480,10,-8824.049,1543.6608,-95.95855,0,0,0,0,100,0), +(1443480,11,-8815.965,1554.2954,-94.66055,0,0,0,0,100,0), +(1443480,12,-8788.221,1568.3591,-91.13077,0,0,0,0,100,0), +(1443480,13,-8770.573,1577.815,-89.21338,0,0,0,0,100,0), + +(1443560,1,-8910.943,1403.7899,-97.94198,0,0,0,0,100,0), +(1443560,2,-8912.83,1419.4586,-95.32133,0,0,0,0,100,0), +(1443560,3,-8919.317,1425.7145,-93.40584,0,0,0,0,100,0), +(1443560,4,-8940.032,1451.2579,-91.80255,0,0,0,0,100,0), +(1443560,5,-8919.317,1425.7145,-93.40584,0,0,0,0,100,0), +(1443560,6,-8912.83,1419.4586,-95.32133,0,0,0,0,100,0), +(1443560,7,-8910.943,1403.7899,-97.94198,0,0,0,0,100,0), +(1443560,8,-8917.794,1379.9219,-101.44869,0,0,0,0,100,0), +(1443560,9,-8926.473,1370.907,-104.26201,0,0,0,0,100,0), +(1443560,10,-8934.904,1361.403,-104.25662,0,0,0,0,100,0), +(1443560,11,-8914.032,1338.9567,-104.25077,0,0,0,0,100,0), +(1443560,12,-8934.904,1361.403,-104.25662,0,0,0,0,100,0), +(1443560,13,-8926.473,1370.907,-104.26201,0,0,0,0,100,0), +(1443560,14,-8917.794,1379.9219,-101.44869,0,0,0,0,100,0), + +(1442910,1,-9161.17,1520.4386,-92.79693,0,0,0,0,100,0), +(1442910,2,-9130.765,1500.3616,-98.75215,0,0,0,0,100,0), +(1442910,3,-9135.577,1458.2761,-102.54528,0,0,0,0,100,0), +(1442910,4,-9130.765,1500.3616,-98.75215,0,0,0,0,100,0), +(1442910,5,-9161.17,1520.4386,-92.79693,0,0,0,0,100,0), +(1442910,6,-9158.677,1561.7367,-85.121376,0,0,0,0,100,0), +(1442910,7,-9190.653,1594.7052,-74.04944,0,0,0,0,100,0), +(1442910,8,-9173.741,1634.4298,-68.58729,0,0,0,0,100,0), +(1442910,9,-9158.677,1561.7367,-85.121376,0,0,0,0,100,0), + +(1442930,1,-9071.885,1481.3569,-105.22721,0,0,0,0,100,0), +(1442930,2,-9060.615,1466.8123,-105.259155,0,0,0,0,100,0), +(1442930,3,-9079.044,1448.7009,-104.6841,0,0,0,0,100,0), +(1442930,4,-9071.177,1434.1946,-106.11778,0,0,0,0,100,0), +(1442930,5,-9041.022,1427.2418,-105.7893,0,0,0,0,100,0), +(1442930,6,-9071.111,1434.0739,-106.12702,0,0,0,0,100,0), +(1442930,7,-9079.044,1448.7009,-104.6841,0,0,0,0,100,0), +(1442930,8,-9060.615,1466.8123,-105.259155,0,0,0,0,100,0), + +(1443100,1,-8931.336,1518.0297,-94.619255,0,0,0,0,100,0), +(1443100,2,-8921.133,1532.732,-95.145676,0,0,0,0,100,0), +(1443100,3,-8913.712,1545.54,-95.47196,0,0,0,0,100,0), +(1443100,4,-8900.031,1566.4486,-95.75281,0,0,0,0,100,0), +(1443100,5,-8891.205,1567.1182,-94.31571,0,0,0,0,100,0), +(1443100,6,-8887.606,1557.8823,-95.07148,0,0,0,0,100,0), +(1443100,7,-8892.903,1544.9524,-95.09268,0,0,0,0,100,0), +(1443100,8,-8906.302,1535.4017,-95.15878,0,0,0,0,100,0), +(1443100,9,-8912.736,1526.1064,-94.81041,0,0,0,0,100,0), +(1443100,10,-8921.759,1508.2211,-93.969986,0,0,0,0,100,0), +(1443100,11,-8926.561,1493.8021,-93.25992,0,0,0,0,100,0), +(1443100,12,-8937.755,1465.6974,-92.20584,0,0,0,0,100,0), +(1443100,13,-8939.568,1453.1688,-91.83563,0,0,0,0,100,0), +(1443100,14,-8939.462,1439.5057,-92.06916,0,0,0,0,100,0), +(1443100,15,-8939.116,1429.8024,-93.09846,0,0,0,0,100,0), +(1443100,16,-8942.206,1420.408,-95.6026,0,0,0,0,100,0), +(1443100,17,-8949.488,1418.712,-95.651375,0,0,0,0,100,0), +(1443100,18,-8956.407,1423.2029,-93.34446,0,0,0,0,100,0), +(1443100,19,-8959.321,1430.307,-92.080696,0,0,0,0,100,0), +(1443100,20,-8957.687,1441.4086,-92.35549,0,0,0,0,100,0), +(1443100,21,-8957.109,1448.8145,-91.779015,0,0,0,0,100,0), +(1443100,22,-8954.798,1461.109,-91.92982,0,0,0,0,100,0), +(1443100,23,-8950.785,1475.7125,-92.5044,0,0,0,0,100,0), +(1443100,24,-8940.726,1499.1289,-93.43882,0,0,0,0,100,0), + +(1443110,1,-9178.233,1555.376,-83.15645,0,0,0,0,100,0), +(1443110,2,-9167.777,1584.2893,-79.79106,0,0,0,0,100,0), +(1443110,3,-9189.589,1586.6539,-75.309814,0,0,0,0,100,0), +(1443110,4,-9174.193,1619.9218,-71.54867,0,0,0,0,100,0), +(1443110,5,-9193.841,1633.76,-67.11974,0,0,0,0,100,0), +(1443110,6,-9167.777,1584.2893,-79.79106,0,0,0,0,100,0), +(1443110,7,-9178.233,1555.376,-83.15645,0,0,0,0,100,0), +(1443110,8,-9151.221,1542.8898,-88.77483,0,0,0,0,100,0), +(1443110,9,-9160.63,1516.2305,-94.12372,0,0,0,0,100,0), +(1443110,10,-9133.765,1502.3481,-98.33693,0,0,0,0,100,0), +(1443110,11,-9143.146,1472.9918,-101.21955,0,0,0,0,100,0), +(1443110,12,-9108.831,1465.2284,-102.95489,0,0,0,0,100,0), +(1443110,13,-9114.237,1442.453,-105.926094,0,0,0,0,100,0), +(1443110,14,-9092.371,1419.9313,-107.13244,0,0,0,0,100,0), +(1443110,15,-9108.026,1392.3177,-105.1018,0,0,0,0,100,0), +(1443110,16,-9131.012,1395.0933,-106.94944,0,0,0,0,100,0), +(1443110,17,-9131.191,1415.7412,-105.08317,0,0,0,0,100,0), +(1443110,18,-9131.012,1395.0933,-106.94944,0,0,0,0,100,0), +(1443110,19,-9108.026,1392.3177,-105.1018,0,0,0,0,100,0), +(1443110,20,-9092.371,1419.9313,-107.13244,0,0,0,0,100,0), +(1443110,21,-9114.237,1442.453,-105.926094,0,0,0,0,100,0), +(1443110,22,-9108.831,1465.2284,-102.95489,0,0,0,0,100,0), +(1443110,23,-9143.146,1472.9918,-101.21955,0,0,0,0,100,0), +(1443110,24,-9133.765,1502.3481,-98.33693,0,0,0,0,100,0), +(1443110,25,-9160.63,1516.2305,-94.12372,0,0,0,0,100,0), +(1443110,26,-9151.186,1542.8734,-88.78504,0,0,0,0,100,0), + +(1443120,1,-9092.085,1471.9957,-103.95926,0,0,1,0,100,0), +(1443120,2,-9102.179,1479.8092,-102.8728,0,0,1,0,100,0), +(1443120,3,-9110.067,1480.0641,-101.70714,0,0,1,0,100,0), +(1443120,4,-9092.085,1471.9957,-103.95926,0,0,1,0,100,0), +(1443120,5,-9082.689,1455.4238,-104.146194,0,0,1,0,100,0), +(1443120,6,-9075.948,1438.5471,-104.75654,0,0,1,0,100,0), +(1443120,7,-9081.033,1431.1344,-104.84649,0,0,1,0,100,0), +(1443120,8,-9096.013,1444.2252,-104.60646,0,0,1,0,100,0), +(1443120,9,-9102.711,1455.3546,-103.723785,0,0,1,0,100,0), +(1443120,10,-9108.812,1463.8667,-103.24451,0,0,1,0,100,0), +(1443120,11,-9112.757,1474.4939,-102.87201,0,0,1,0,100,0), +(1443120,12,-9102.711,1455.3546,-103.723785,0,0,1,0,100,0), +(1443120,13,-9096.013,1444.2252,-104.60646,0,0,1,0,100,0), +(1443120,14,-9088.046,1434.5918,-105.35985,0,0,1,0,100,0), +(1443120,15,-9081.033,1431.1344,-104.84649,0,0,1,0,100,0), +(1443120,16,-9075.948,1438.5471,-104.75654,0,0,1,0,100,0), +(1443120,17,-9082.689,1455.4238,-104.146194,0,0,1,0,100,0), +(1443120,18,-9092.085,1471.9957,-103.95926,0,0,1,0,100,0), +(1443120,19,-9102.179,1479.8092,-102.8728,0,0,1,0,100,0), +(1443120,20,-9110.067,1480.0641,-101.70714,0,0,1,0,100,0), + +(1443130,1,-9085.651,1336.6029,-104.9923,0,0,1,0,100,0), +(1443130,2,-9119.982,1368.3717,-105.290474,0,0,1,0,100,0), +(1443130,3,-9116.589,1396.586,-105.531105,0,0,1,0,100,0), +(1443130,4,-9141.109,1401.1655,-106.611755,0,0,1,0,100,0), +(1443130,5,-9129.991,1420.1001,-103.56941,0,0,1,0,100,0), +(1443130,6,-9135.993,1428.6875,-103.10408,0,0,1,0,100,0), +(1443130,7,-9159.872,1426.0575,-103.80925,0,0,1,0,100,0), +(1443130,8,-9150.262,1450.0487,-101.24118,0,0,1,0,100,0), +(1443130,9,-9177.595,1447.4342,-101.04538,0,0,1,0,100,0), +(1443130,10,-9187.247,1463.9581,-99.04017,0,0,1,0,100,0), +(1443130,11,-9167.497,1489.6934,-96.0687,0,0,1,0,100,0), +(1443130,12,-9202.894,1490.942,-94.153076,0,0,1,0,100,0), +(1443130,13,-9184.8125,1524.3752,-87.429214,0,0,1,0,100,0), +(1443130,14,-9202.894,1490.942,-94.153076,0,0,1,0,100,0), +(1443130,15,-9167.497,1489.6934,-96.0687,0,0,1,0,100,0), +(1443130,16,-9187.247,1463.9581,-99.04017,0,0,1,0,100,0), +(1443130,17,-9177.595,1447.4342,-101.04538,0,0,1,0,100,0), +(1443130,18,-9150.239,1450.1044,-101.21063,0,0,1,0,100,0), +(1443130,19,-9159.872,1426.0575,-103.80925,0,0,1,0,100,0), +(1443130,20,-9135.993,1428.6875,-103.10408,0,0,1,0,100,0), +(1443130,21,-9129.969,1420.1389,-103.554955,0,0,1,0,100,0), +(1443130,22,-9141.109,1401.1655,-106.611755,0,0,1,0,100,0), +(1443130,23,-9116.589,1396.586,-105.531105,0,0,1,0,100,0), +(1443130,24,-9119.982,1368.3717,-105.290474,0,0,1,0,100,0), + +(1443990,1,-9088.224,1416.7762,-107.078896,0,0,0,0,100,0), +(1443990,2,-9064.474,1433.8949,-107.40771,0,0,0,0,100,0), +(1443990,3,-9045.458,1413.9893,-105.14605,0,0,0,0,100,0), +(1443990,4,-9060.456,1439.5322,-107.87486,0,0,0,0,100,0), +(1443990,5,-9075.492,1447.3765,-106.04157,0,0,0,0,100,0), +(1443990,6,-9068.736,1473.6458,-105.594604,0,0,0,0,100,0), +(1443990,7,-9090.594,1477.8917,-105.19114,0,0,0,0,100,0), +(1443990,8,-9087.122,1499.0575,-102.4129,0,0,0,0,100,0), +(1443990,9,-9134.32,1492.2637,-100.58225,0,0,0,0,100,0), +(1443990,10,-9131.947,1457.0625,-103.54422,0,0,0,0,100,0), +(1443990,11,-9142.201,1498.5511,-99.481766,0,0,0,0,100,0), +(1443990,12,-9155.63,1544.8326,-88.94196,0,0,0,0,100,0), +(1443990,13,-9186.541,1579.5227,-77.94017,0,0,0,0,100,0), +(1443990,14,-9155.63,1544.8326,-88.94196,0,0,0,0,100,0), +(1443990,15,-9142.201,1498.5511,-99.481766,0,0,0,0,100,0), +(1443990,16,-9131.947,1457.0625,-103.54422,0,0,0,0,100,0), +(1443990,17,-9134.32,1492.2637,-100.58225,0,0,0,0,100,0), +(1443990,18,-9087.122,1499.0575,-102.4129,0,0,0,0,100,0), +(1443990,19,-9090.594,1477.8917,-105.19114,0,0,0,0,100,0), +(1443990,20,-9068.736,1473.6458,-105.594604,0,0,0,0,100,0), +(1443990,21,-9075.492,1447.3765,-106.04157,0,0,0,0,100,0), +(1443990,22,-9060.456,1439.5322,-107.87486,0,0,0,0,100,0), +(1443990,23,-9045.458,1413.9893,-105.14605,0,0,0,0,100,0), +(1443990,24,-9064.474,1433.8949,-107.40771,0,0,0,0,100,0), +(1443990,25,-9088.224,1416.7762,-107.078896,0,0,0,0,100,0), +(1443990,26,-9109.554,1398.6786,-104.97673,0,0,0,0,100,0), +(1443990,27,-9125.061,1382.0105,-106.36454,0,0,0,0,100,0), +(1443990,28,-9091.705,1348.9445,-105.59918,0,0,0,0,100,0), +(1443990,29,-9113.404,1388.1455,-105.58472,0,0,0,0,100,0), +(1443990,30,-9098.755,1402.1635,-106.73558,0,0,0,0,100,0), +(1443990,31,-9074.518,1396.3596,-106.83152,0,0,0,0,100,0), +(1443990,32,-9070.744,1367.5884,-105.04272,0,0,0,0,100,0), +(1443990,33,-9038.456,1356.9011,-103.17066,0,0,0,0,100,0), +(1443990,34,-9030.489,1332.9258,-104.20322,0,0,0,0,100,0), +(1443990,35,-9029.674,1316.1685,-104.25114,0,0,0,0,100,0), +(1443990,36,-9030.489,1332.9258,-104.20322,0,0,0,0,100,0), +(1443990,37,-9038.456,1356.9011,-103.17066,0,0,0,0,100,0), +(1443990,38,-9070.744,1367.5884,-105.04272,0,0,0,0,100,0), +(1443990,39,-9074.518,1396.3596,-106.83152,0,0,0,0,100,0), +(1443990,40,-9098.755,1402.1635,-106.73558,0,0,0,0,100,0), +(1443990,41,-9113.404,1388.1455,-105.58472,0,0,0,0,100,0), +(1443990,42,-9091.705,1348.9445,-105.59918,0,0,0,0,100,0), +(1443990,43,-9125.061,1382.0105,-106.36454,0,0,0,0,100,0), +(1443990,44,-9109.554,1398.6786,-104.97673,0,0,0,0,100,0), + +(1444040,1,-9096.186,1444.9286,-104.47447,0,0,0,0,100,0), +(1444040,2,-9104.419,1415.1979,-106.00152,0,0,0,0,100,0), +(1444040,3,-9096.186,1444.9286,-104.47447,0,0,0,0,100,0), +(1444040,4,-9119.389,1449.448,-105.36713,0,0,0,0,100,0), +(1444040,5,-9116.547,1472.7252,-103.54946,0,0,0,0,100,0), +(1444040,6,-9132.342,1456.4852,-103.345665,0,0,0,0,100,0), +(1444040,7,-9116.547,1472.7252,-103.54946,0,0,0,0,100,0), +(1444040,8,-9119.389,1449.448,-105.36713,0,0,0,0,100,0), + +(1444050,1,-9095.084,1390.2705,-105.85795,0,0,0,0,100,0), +(1444050,2,-9126.132,1378.705,-105.72979,0,0,0,0,100,0), +(1444050,3,-9122.575,1402.7551,-105.24444,0,0,0,0,100,0), +(1444050,4,-9145.673,1408.1447,-105.48799,0,0,0,0,100,0), +(1444050,5,-9137.399,1432.448,-102.555534,0,0,0,0,100,0), +(1444050,6,-9163.476,1429.0597,-103.73565,0,0,0,0,100,0), +(1444050,7,-9153.607,1454.8204,-100.4185,0,0,0,0,100,0), +(1444050,8,-9176.5,1455.4498,-101.46861,0,0,0,0,100,0), +(1444050,9,-9147.856,1481.0919,-100.3486,0,0,0,0,100,0), +(1444050,10,-9187.243,1476.0885,-98.5702,0,0,0,0,100,0), +(1444050,11,-9177.395,1509.4562,-91.8547,0,0,0,0,100,0), +(1444050,12,-9187.243,1476.0885,-98.5702,0,0,0,0,100,0), +(1444050,13,-9147.856,1481.0919,-100.3486,0,0,0,0,100,0), +(1444050,14,-9176.5,1455.4498,-101.46861,0,0,0,0,100,0), +(1444050,15,-9153.607,1454.8204,-100.4185,0,0,0,0,100,0), +(1444050,16,-9163.476,1429.0597,-103.73565,0,0,0,0,100,0), +(1444050,17,-9137.399,1432.448,-102.555534,0,0,0,0,100,0), +(1444050,18,-9145.673,1408.1447,-105.48799,0,0,0,0,100,0), +(1444050,19,-9122.575,1402.7551,-105.24444,0,0,0,0,100,0), +(1444050,20,-9126.132,1378.705,-105.72979,0,0,0,0,100,0), + +(1444120,1,-9073.12,1388.0787,-107.209076,0,0,0,0,100,0), +(1444120,2,-9086.354,1422.7172,-106.65163,0,0,0,0,100,0), +(1444120,3,-9113.222,1429.3259,-105.54492,0,0,0,0,100,0), +(1444120,4,-9111.067,1456.3689,-104.99337,0,0,0,0,100,0), +(1444120,5,-9138.88,1468.191,-102.23187,0,0,0,0,100,0), +(1444120,6,-9140.315,1512.219,-96.46165,0,0,0,0,100,0), +(1444120,7,-9160.634,1513.8718,-94.40244,0,0,0,0,100,0), +(1444120,8,-9150.69,1538.1831,-89.95865,0,0,0,0,100,0), +(1444120,9,-9172.558,1540.6093,-87.60278,0,0,0,0,100,0), +(1444120,10,-9174.308,1574.9885,-81.43824,0,0,0,0,100,0), +(1444120,11,-9161.178,1583.6495,-79.079315,0,0,0,0,100,0), +(1444120,12,-9174.308,1574.9885,-81.43824,0,0,0,0,100,0), +(1444120,13,-9172.558,1540.6093,-87.60278,0,0,0,0,100,0), +(1444120,14,-9150.69,1538.1831,-89.95865,0,0,0,0,100,0), +(1444120,15,-9160.634,1513.8718,-94.40244,0,0,0,0,100,0), +(1444120,16,-9140.317,1512.2665,-96.451584,0,0,0,0,100,0), +(1444120,17,-9138.88,1468.191,-102.23187,0,0,0,0,100,0), +(1444120,18,-9111.067,1456.3689,-104.99337,0,0,0,0,100,0), +(1444120,19,-9113.222,1429.3259,-105.54492,0,0,0,0,100,0), +(1444120,20,-9086.354,1422.7172,-106.65163,0,0,0,0,100,0), + +(1446790,1,-9121.533,1375.1395,-106.184975,0,0,1,0,100,0), +(1446790,2,-9101.4,1370.6641,-104.91555,0,0,1,0,100,0), +(1446790,3,-9097.856,1345.2212,-105.78354,0,0,1,0,100,0), +(1446790,4,-9076.13,1343.7213,-103.98316,0,0,1,0,100,0), +(1446790,5,-9097.856,1345.2212,-105.78354,0,0,1,0,100,0), +(1446790,6,-9101.385,1370.6605,-104.910065,0,0,1,0,100,0), +(1446790,7,-9121.533,1375.1395,-106.184975,0,0,1,0,100,0), +(1446790,8,-9092.77,1414.0785,-107.31365,0,0,1,0,100,0), +(1446790,9,-9109.889,1427.7504,-106.22019,0,0,1,0,100,0), +(1446790,10,-9101.874,1447.5159,-105.35749,0,0,1,0,100,0), +(1446790,11,-9135.379,1472.7727,-102.675354,0,0,1,0,100,0), +(1446790,12,-9128.466,1497.2003,-99.4334,0,0,1,0,100,0), +(1446790,13,-9162.139,1515.9567,-93.688705,0,0,1,0,100,0), +(1446790,14,-9128.466,1497.2003,-99.4334,0,0,1,0,100,0), +(1446790,15,-9135.379,1472.7727,-102.675354,0,0,1,0,100,0), +(1446790,16,-9101.874,1447.5159,-105.35749,0,0,1,0,100,0), +(1446790,17,-9109.8545,1427.8356,-106.239525,0,0,1,0,100,0), +(1446790,18,-9092.672,1414.2106,-107.29711,0,0,1,0,100,0); diff --git a/data/sql/updates/db_world/2022_09_06_10.sql b/data/sql/updates/db_world/2022_09_06_10.sql new file mode 100644 index 000000000..732acbc57 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_06_10.sql @@ -0,0 +1,18 @@ +-- DB update 2022_09_06_09 -> 2022_09_06_10 +-- Araga (14222) +DELETE FROM `creature_addon` WHERE (`guid` IN (17066)); + +DELETE FROM `creature` WHERE `guid` IN (17066, 23431, 23434); +INSERT INTO `creature` (`guid`, `id1`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `curhealth`, `wander_distance`, `MovementType`) VALUES +(17066, 14222, 153.893, -62.1832, 100.034, 4.13847, 95400, 1342, 50, 1), +(23431, 14222, -203.155, -308.609, 157.801, 0.395757, 95400, 1342, 50, 1), +(23434, 14222, -105.383, -85.8896, 139.728, 1.88409, 95400, 1342, 50, 1); + +DELETE FROM `pool_template` WHERE `entry`=1108 AND `description`='Araga Rare Spawn'; +INSERT INTO `pool_template` (`entry`, `max_limit`, `description`) VALUES (1108, 1, 'Araga Rare Spawn'); + +DELETE FROM `pool_creature` WHERE `pool_entry`=1108 AND `guid` IN (17066, 23431, 23434); +INSERT INTO `pool_creature` (`guid`, `pool_entry`, `description`) VALUES +(17066, 1108, 'Araga (14222) Spawn 1'), +(23431, 1108, 'Araga (14222) Spawn 2'), +(23434, 1108, 'Araga (14222) Spawn 3'); diff --git a/data/sql/updates/db_world/2022_09_07_00.sql b/data/sql/updates/db_world/2022_09_07_00.sql new file mode 100644 index 000000000..08822f827 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_00.sql @@ -0,0 +1,3 @@ +-- DB update 2022_09_06_10 -> 2022_09_07_00 +-- +UPDATE `item_template` SET `spellcategorycooldown_1`=900000 WHERE entry=20520; diff --git a/data/sql/updates/db_world/2022_09_07_01.sql b/data/sql/updates/db_world/2022_09_07_01.sql new file mode 100644 index 000000000..fc9c08075 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_01.sql @@ -0,0 +1,15 @@ +-- DB update 2022_09_07_00 -> 2022_09_07_01 +DELETE FROM `npc_vendor` WHERE `entry` = 26081; +INSERT INTO `npc_vendor` (`entry`, `slot`, `item`, `maxcount`, `incrtime`, `ExtendedCost`, `VerifiedBuild`) VALUES +(26081, 2, 2880, 0, 0, 0, 0), +(26081, 0, 2901, 0, 0, 0, 0), +(26081, 3, 3466, 0, 0, 0, 0), +(26081, 5, 3857, 0, 0, 0, 0), +(26081, 1, 5956, 0, 0, 0, 0), +(26081, 4, 18567, 0, 0, 0, 0); + +UPDATE `creature_equip_template` SET `ItemID1` = 19022 WHERE `CreatureID` = 26081; + +UPDATE `creature` SET `position_x` = -6378.61, `position_y` = 1263.21, `position_z` = 7.2709, `orientation` = 3.03687 WHERE `guid` = 1975958; +UPDATE `creature` SET `position_x` = -6373.53, `position_y` = 1267.88, `position_z` = 7.2709, `orientation` = 2.39110 WHERE `guid` = 1975959; +UPDATE `creature` SET `position_x` = -6378.08, `position_y` = 1268.47, `position_z` = 7.2709, `orientation` = 2.44346 WHERE `guid` = 1975960; diff --git a/data/sql/updates/db_world/2022_09_07_02.sql b/data/sql/updates/db_world/2022_09_07_02.sql new file mode 100644 index 000000000..e5f9300ca --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_02.sql @@ -0,0 +1,3 @@ +-- DB update 2022_09_07_01 -> 2022_09_07_02 +-- +UPDATE `quest_template_addon` SET `SpecialFlags` = 0 WHERE (`ID` = 8314); diff --git a/data/sql/updates/db_world/2022_09_07_03.sql b/data/sql/updates/db_world/2022_09_07_03.sql new file mode 100644 index 000000000..e18c32a9f --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_03.sql @@ -0,0 +1,43 @@ +-- DB update 2022_09_07_02 -> 2022_09_07_03 +-- +SET @GUID := 43456; + +DELETE FROM `creature` WHERE `guid` IN (@GUID, @GUID+1, @GUID+2); +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 +(@GUID, 15655, 0, 0, 530, 0, 0, 1, 1, 0, 8607.49, -6788.45, 101.839, 0.00836706, 60, 0, 0, 120, 0, 0, 0, 0, 0, '', 0), +(@GUID+1, 15654, 0, 0, 530, 0, 0, 1, 1, 1, 8605.56, -6790.09, 102.006, 0.00836706, 60, 0, 0, 120, 0, 0, 0, 0, 0, '', 0), +(@GUID+2, 15654, 0, 0, 530, 0, 0, 1, 1, 1, 8605.38, -6786.45, 102.481, 0.00836706, 60, 0, 0, 120, 0, 0, 0, 0, 0, '', 0); + +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry` IN (15942, 15655); +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (15942, -@GUID, -(@GUID+1), -(@GUID+2)) AND `source_type`=0; +INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `event_param5`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_param4`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(15942, 0, 0, 0, 1, 0, 100, 0, 10000, 30000, 300000, 540000, 0, 45, 1, 1, 0, 0, 0, 0, 10, @GUID, 15655, 0, 0, 0, 0, 0, 0, 'Ranger Sareyn - OOC - Set Data 1 1 (Rotlimb Cannibal)'), +(-@GUID, 0, 0, 1, 11, 0, 100, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rotlimb Cannibal - On Spawn - Set Invisible'), +(-@GUID, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rotlimb Cannibal - On Spawn - Set ReactState Passive'), +(-@GUID, 0, 2, 3, 38, 0, 100, 0, 1, 1, 0, 0, 0, 47, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rotlimb Cannibal - On Data 1 1 Set - Set Visible'), +(-@GUID, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 0, 53, 0, 1565501, 0, 0, 120000, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Rotlimb Cannibal - On Data 1 1 Set - Start Waypoint'), +(-@GUID, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @GUID+1, 15654, 0, 0, 0, 0, 0, 0, 'Rotlimb Cannibal - On Data 1 1 Set - Set Data 1 1 (Plaguebone Villager)'), +(-@GUID, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, @GUID+2, 15654, 0, 0, 0, 0, 0, 0, 'Rotlimb Cannibal - On Data 1 1 Set - Set Data 1 1 (Plaguebone Villager)'), +(-(@GUID+1), 0, 0, 0, 0, 0, 100, 0, 5900, 12200, 11900, 22100, 0, 11, 11976, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - In Combat - Cast \'Strike\''), +(-(@GUID+1), 0, 1, 2, 11, 0, 100, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - On Spawn - Set Invisible'), +(-(@GUID+1), 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - On Spawn - Set ReactState Passive'), +(-(@GUID+1), 0, 3, 4, 38, 0, 100, 0, 1, 1, 0, 0, 0, 47, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - On Data 1 1 Set - Set Visible'), +(-(@GUID+1), 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 53, 0, 1565501, 0, 0, 120000, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - On Data 1 1 Set - Start Waypoint'), +(-(@GUID+1), 0, 5, 0, 40, 0, 100, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 15942, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - On Waypoint 1 Reached - Say Line 0 (Ranger Sareyn)'), +(-(@GUID+2), 0, 0, 0, 0, 0, 100, 0, 5900, 12200, 11900, 22100, 0, 11, 11976, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - In Combat - Cast \'Strike\''), +(-(@GUID+2), 0, 1, 2, 11, 0, 100, 0, 0, 0, 0, 0, 0, 47, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - On Spawn - Set Invisible'), +(-(@GUID+2), 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - On Spawn - Set ReactState Passive'), +(-(@GUID+2), 0, 3, 4, 38, 0, 100, 0, 1, 1, 0, 0, 0, 47, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - On Data 1 1 Set - Set Visible'), +(-(@GUID+2), 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 0, 53, 0, 1565501, 0, 0, 120000, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Plaguebone Pillager - On Data 1 1 Set - Start Waypoint'); + +DELETE FROM `waypoints` WHERE `entry`=1565501; +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(1565501, 1, 8648.8262, -6790.4302, 96.2708, 'Rotlimb Cannibal/Plaguebone Villager'); + +DELETE FROM `creature_text` WHERE `CreatureID`=15942; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(15942, 0, 0, 'Open fire!', 14, 0, 100, 0, 0, 0, 12417, 0, 'Ranger Sareyn'), +(15942, 0, 1, 'Enemy sighted! Ready your weapons!', 14, 0, 100, 0, 0, 0, 12418, 0, 'Ranger Sareyn'), +(15942, 0, 2, 'Hold your positions!', 14, 0, 100, 0, 0, 0, 12419, 0, 'Ranger Sareyn'); diff --git a/data/sql/updates/db_world/2022_09_07_04.sql b/data/sql/updates/db_world/2022_09_07_04.sql new file mode 100644 index 000000000..3b424cd61 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_04.sql @@ -0,0 +1,3 @@ +-- DB update 2022_09_07_03 -> 2022_09_07_04 +-- +UPDATE `creature_template` SET `npcflag` = `npcflag`&~(4096) WHERE `entry` IN (16280, 16278); diff --git a/data/sql/updates/db_world/2022_09_07_05.sql b/data/sql/updates/db_world/2022_09_07_05.sql new file mode 100644 index 000000000..290545ea9 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_05.sql @@ -0,0 +1,35 @@ +-- DB update 2022_09_07_04 -> 2022_09_07_05 +-- I forgot these +UPDATE `creature_template` SET `DamageModifier` = 1.05, `ArmorModifier` = 1.1 WHERE (`entry` = 15316); +UPDATE `creature_template` SET `ArmorModifier` = 1.1 WHERE (`entry` = 15317); +UPDATE `creature_template` SET `DamageModifier` = 20, `ArmorModifier` = 1.15 WHERE (`entry` = 15246); +UPDATE `creature_template` SET `DamageModifier` = 3, `ArmorModifier` = 1.15 WHERE (`entry` = 15537); +UPDATE `creature_template` SET `DamageModifier` = 9.75, `ArmorModifier` = 1.15 WHERE (`entry` = 15538); + +DELETE FROM `creature_template_resistance` WHERE `CreatureID` IN (15316,15317,15246,15537,15538); +INSERT INTO `creature_template_resistance` (`CreatureID`, `School`, `Resistance`, `VerifiedBuild`) VALUES +(15316, 2, 75, 0), +(15316, 3, 75, 0), +(15316, 4, 75, 0), +(15316, 5, 75, 0), +(15316, 6, 75, 0), +(15317, 2, 75, 0), +(15317, 3, 75, 0), +(15317, 4, 75, 0), +(15317, 5, 75, 0), +(15317, 6, 75, 0), +(15246, 2, 75, 0), +(15246, 3, 75, 0), +(15246, 4, 75, 0), +(15246, 5, 75, 0), +(15246, 6, 75, 0), +(15537, 2, 75, 0), +(15537, 3, 75, 0), +(15537, 4, 75, 0), +(15537, 5, 75, 0), +(15537, 6, 75, 0), +(15538, 2, 115, 0), +(15538, 3, 115, 0), +(15538, 4, 115, 0), +(15538, 5, 115, 0), +(15538, 6, 115, 0); diff --git a/data/sql/updates/db_world/2022_09_07_06.sql b/data/sql/updates/db_world/2022_09_07_06.sql new file mode 100644 index 000000000..90a12d248 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_06.sql @@ -0,0 +1,5 @@ +-- DB update 2022_09_07_05 -> 2022_09_07_06 +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=19 AND `SourceEntry`=374; + +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(19, 0, 374, 0, 0, 8, 0, 427, 0, 0, 0, 0, 0, '', 'Enable quest 374, only if the player has completed quest 427.'); diff --git a/data/sql/updates/db_world/2022_09_07_07.sql b/data/sql/updates/db_world/2022_09_07_07.sql new file mode 100644 index 000000000..6f1c676fc --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_07.sql @@ -0,0 +1,44 @@ +-- DB update 2022_09_07_06 -> 2022_09_07_07 +-- +UPDATE `creature_template_addon` SET `bytes1` = 54432 WHERE `entry` = 15963; +UPDATE `creature_template_addon` SET `auras` = '18943' WHERE `entry` = 15275; + +DELETE FROM `areatrigger_scripts` WHERE `ScriptName` = 'at_twin_emperors'; +INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES +(4047, 'at_twin_emperors'); + +DELETE FROM `creature_text` WHERE `CreatureID` IN (15275, 15276) AND `GroupID` IN (0, 1, 2, 3, 4, 5, 6); +DELETE FROM `creature_text` WHERE `CreatureID` = 15963; +INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES +(15275, 0, 0, 'Where are your manners, brother. Let us properly welcome our guests.', 14, 0, 100, 6, 0, 0, 11706, 0, 'Emperor Vek\'nilash INTRO_0'), +(15275, 1, 0, 'Oh so much pain...', 14, 0, 100, 5, 0, 0, 11708, 0, 'Emperor Vek\'nilash INTRO_1'), +(15275, 2, 0, 'The feast of souls begins now...', 14, 0, 100, 0, 0, 0, 11710, 0, 'Emperor Vek\'nilash INTRO_2'), +(15275, 3, 0, 'Your fate is sealed!', 14, 0, 100, 0, 0, 8635, 11455, 0, 'Emperor Vek\'nilash KILL'), +(15275, 4, 0, 'Vek\'lor, I feel your pain!', 14, 0, 100, 0, 0, 8636, 11454, 0, 'Emperor Vek\'nilash DEATH'), +(15276, 0, 0, 'Only flesh and bone. Mortals are such easy prey...', 14, 0, 100, 1, 0, 0, 11702, 0, 'Emperor Vek\'lor INTRO_0'), +(15276, 1, 0, 'There will be pain...', 14, 0, 100, 273, 0, 0, 11707, 0, 'Emperor Vek\'lor INTRO_1'), +(15276, 2, 0, 'Come, little ones.', 14, 0, 100, 0, 0, 0, 11709, 0, 'Emperor Vek\'lor INTRO_2'), +(15276, 3, 0, 'You will not escape death!', 14, 0, 100, 0, 0, 8629, 11453, 0, 'Emperor Vek\'lor KILL'), +(15276, 4, 0, 'My brother, no!', 14, 0, 100, 0, 0, 8625, 11452, 0, 'Emperor Vek\'lor DEATH'), +(15276, 5, 0, '%s goes into a berserker rage!', 16, 0, 100, 0, 0, 0, 34057, 0, 'Emperor Vek\'lor ENRAGE'), +(15963, 0, 0, 'The massive floating eyeball in the center of the chamber turns its gaze upon you. You stand before a god.', 16, 0, 100, 0, 0, 0, 11700, 1, 'Masters Eye - On Areatrigger'); + +UPDATE `creature_template_movement` SET `Ground` = 2, `Flight` = 1 WHERE `CreatureId` = 15963; + +UPDATE `creature_template` SET `unit_flags` = `unit_flags`|512|256 WHERE `entry` = 15963; +UPDATE `creature_template` SET `spell_school_immune_mask` = `spell_school_immune_mask`|1 WHERE `entry` = 15276; -- Vek'lor immunity to phys +UPDATE `creature_template` SET `spell_school_immune_mask` = `spell_school_immune_mask`|4|8|16|32|64 WHERE `entry` = 15275; -- Vek'nilash immunity to everything but holy and phys + +DELETE FROM `spell_script_names` WHERE `spell_id` IN (802, 804); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(802, 'spell_mutate_explode_bug'), +(804, 'spell_mutate_explode_bug'); + +UPDATE `creature` SET `spawntimesecs` = 300 WHERE `id1` IN (15316, 15317); + +UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` IN (15316, 15317); + +DELETE FROM `smart_scripts` WHERE (`entryorguid` IN (15316, 15317)) 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 +(15317, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 2, 311, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Qiraji Scorpion - On Reset - Set Faction 311'), +(15316, 0, 0, 0, 25, 0, 100, 0, 0, 0, 0, 0, 0, 2, 311, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 'Qiraji Scarab - On Reset - Set Faction 311'); diff --git a/data/sql/updates/db_world/2022_09_07_08.sql b/data/sql/updates/db_world/2022_09_07_08.sql new file mode 100644 index 000000000..7387bd1d4 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_08.sql @@ -0,0 +1,242 @@ +-- DB update 2022_09_07_07 -> 2022_09_07_08 +-- Delete Current Spawns +DELETE FROM `creature` WHERE `guid` IN (88035,88042,88053,88039,88040,88041,88052,88057,88055,88056,88054,88058,88059,88060,88061,88062,88036,88049,88050,88051,88037,88043,88044,88048,88038,88045,88046,88047,88030,88031,88032,88033,88034); + +-- Spawn Qiraji Champions +SET @GUID=88000; +DELETE FROM `creature` WHERE (`id1` = 15252) AND `guid` BETWEEN @GUID AND @GUID+7; +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`) VALUES +(@GUID, 15252, 0, 0, 531, 0, 0, 1, 1, 0, -9084.354, 1468.4955, -106.0379, 5.43525, 604800, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(@GUID+1, 15252, 0, 0, 531, 0, 0, 1, 1, 0, -9090.233, 1422.9799, -106.97796, 3.50811, 604800, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(@GUID+2, 15252, 0, 0, 531, 0, 0, 1, 1, 0, -9137.567, 1487.8439, -100.96495, 5.36227, 604800, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(@GUID+3, 15252, 0, 0, 531, 0, 0, 1, 1, 0, -9190.533, 1554.3728, -81.214035, 3.10226, 604800, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(@GUID+4, 15252, 0, 0, 531, 0, 0, 1, 1, 0, -9186.851, 1666.4683, -62.07425, 4.80582, 604800, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(@GUID+5, 15252, 0, 0, 531, 0, 0, 1, 1, 0, -9103.887, 1791.9912, -42.998283, 5.37249, 604800, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(@GUID+6, 15252, 0, 0, 531, 0, 0, 1, 1, 0, -9041.144, 1908.4006, -48.003925, 4.45090, 604800, 0, 0, 1, 0, 2, 0, 0, 0, ''), +(@GUID+7, 15252, 0, 0, 531, 0, 0, 1, 1, 0, -8935.066, 1865.009, -23.424952, 6.17906, 604800, 0, 0, 1, 0, 2, 0, 0, 0, ''); + +-- Populate Qiraji Champion creature_addon +SET @GUID=88000; +SET @PATH=@GUID*10; +DELETE FROM `creature_addon` WHERE `guid` BETWEEN @GUID AND @GUID+7; +INSERT INTO `creature_addon` (`guid`, `path_id`) VALUES +(@GUID, @PATH), +(@GUID+1, @PATH+10), +(@GUID+2, @PATH+20), +(@GUID+3, @PATH+30), +(@GUID+4, @PATH+40), +(@GUID+5, @PATH+50), +(@GUID+6, @PATH+60), +(@GUID+7, @PATH+70); + +-- Populate Qiraji Champion waypoint_data +SET @PATH=880000; +DELETE FROM `waypoint_data` WHERE `id` BETWEEN @PATH AND @PATH+70; +INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES +(@PATH,1,-9071.842,1448.6152,-107.16646,0,0,0,0,100,0), +(@PATH,2,-9068.438,1426.9384,-106.18562,0,0,0,0,100,0), +(@PATH,3,-9079.124,1418.1312,-105.92381,0,0,0,0,100,0), +(@PATH,4,-9085.175,1408.8229,-107.159454,0,0,0,0,100,0), +(@PATH,5,-9078.674,1389.3668,-107.254326,0,0,0,0,100,0), +(@PATH,6,-9085.175,1408.8229,-107.159454,0,0,0,0,100,0), +(@PATH,7,-9079.124,1418.1312,-105.92381,0,0,0,0,100,0), +(@PATH,8,-9068.438,1426.9384,-106.18562,0,0,0,0,100,0), +(@PATH,9,-9071.842,1448.6152,-107.16646,0,0,0,0,100,0), +(@PATH,10,-9079.549,1463.0496,-106.512474,0,0,0,0,100,0), +(@PATH,11,-9095.044,1480.6129,-104.46336,0,0,0,0,100,0), +(@PATH,12,-9079.549,1463.0496,-106.512474,0,0,0,0,100,0), + +(@PATH+10,1,-9109.25,1389.2318,-105.27063,0,0,0,0,100,0), +(@PATH+10,2,-9113.79,1379.4674,-106.08063,0,0,0,0,100,0), +(@PATH+10,3,-9109.513,1368.4327,-106.12819,0,0,0,0,100,0), +(@PATH+10,4,-9093.346,1349.2266,-105.71996,0,0,0,0,100,0), +(@PATH+10,5,-9109.513,1368.4327,-106.12819,0,0,0,0,100,0), +(@PATH+10,6,-9113.79,1379.4674,-106.08063,0,0,0,0,100,0), +(@PATH+10,7,-9109.25,1389.2318,-105.27063,0,0,0,0,100,0), +(@PATH+10,8,-9088.794,1402.942,-107.27606,0,0,0,0,100,0), +(@PATH+10,9,-9090.342,1424.4956,-106.94064,0,0,0,0,100,0), +(@PATH+10,10,-9100.282,1443.9431,-105.77489,0,0,0,0,100,0), +(@PATH+10,11,-9112.797,1462.5339,-104.37182,0,0,0,0,100,0), +(@PATH+10,12,-9122.758,1479.1681,-102.85078,0,0,0,0,100,0), +(@PATH+10,13,-9104.083,1500.9688,-101.066635,0,0,0,0,100,0), +(@PATH+10,14,-9122.758,1479.1681,-102.85078,0,0,0,0,100,0), +(@PATH+10,15,-9112.797,1462.5339,-104.37182,0,0,0,0,100,0), +(@PATH+10,16,-9100.282,1443.9431,-105.77489,0,0,0,0,100,0), +(@PATH+10,17,-9090.342,1424.4956,-106.94064,0,0,0,0,100,0), +(@PATH+10,18,-9088.794,1402.942,-107.27606,0,0,0,0,100,0), + +(@PATH+20,1,-9120.028,1460.0247,-104.9437,0,0,0,0,100,0), +(@PATH+20,2,-9108.87,1443.3677,-106.25716,0,0,0,0,100,0), +(@PATH+20,3,-9099.057,1427.2927,-107.103226,0,0,0,0,100,0), +(@PATH+20,4,-9096.639,1417.5907,-107.26497,0,0,0,0,100,0), +(@PATH+20,5,-9099.442,1405.656,-106.94812,0,0,0,0,100,0), +(@PATH+20,6,-9105.756,1398.8098,-105.28489,0,0,0,0,100,0), +(@PATH+20,7,-9118.653,1397.3756,-105.598076,0,0,0,0,100,0), +(@PATH+20,8,-9130.374,1400.4437,-106.48076,0,0,0,0,100,0), +(@PATH+20,9,-9138.999,1407.8413,-106.61274,0,0,0,0,100,0), +(@PATH+20,10,-9146.455,1420.712,-105.819374,0,0,0,0,100,0), +(@PATH+20,11,-9156.749,1439.5825,-104.12464,0,0,0,0,100,0), +(@PATH+20,12,-9161.934,1452.5621,-102.512886,0,0,0,0,100,0), +(@PATH+20,13,-9165.986,1465.8962,-100.283134,0,0,0,0,100,0), +(@PATH+20,14,-9165.363,1479.6637,-97.66172,0,0,0,0,100,0), +(@PATH+20,15,-9159.533,1487.8873,-96.90047,0,0,0,0,100,0), +(@PATH+20,16,-9147.006,1492.9117,-99.39198,0,0,0,0,100,0), +(@PATH+20,17,-9139.057,1489.8036,-100.58021,0,0,0,0,100,0), +(@PATH+20,18,-9132.579,1481.2805,-102.249504,0,0,0,0,100,0), + +(@PATH+30,1,-9226.716,1588.6461,-74.27685,0,0,0,0,100,0), +(@PATH+30,2,-9207.555,1555.0427,-80.2188,0,0,0,0,100,0), +(@PATH+30,3,-9180.568,1553.9806,-82.713486,0,0,0,0,100,0), +(@PATH+30,4,-9163.466,1546.0941,-88.693794,0,0,0,0,100,0), +(@PATH+30,5,-9154.607,1528.3339,-92.51037,0,0,0,0,100,0), +(@PATH+30,6,-9146.913,1513.6383,-95.499725,0,0,0,0,100,0), +(@PATH+30,7,-9154.607,1528.3339,-92.51037,0,0,0,0,100,0), +(@PATH+30,8,-9163.466,1546.0941,-88.693794,0,0,0,0,100,0), +(@PATH+30,9,-9180.568,1553.9806,-82.713486,0,0,0,0,100,0), +(@PATH+30,10,-9207.555,1555.0427,-80.2188,0,0,0,0,100,0), +(@PATH+30,11,-9154.607,1528.3339,-92.51037,0,0,0,0,100,0), +(@PATH+30,12,-9163.466,1546.0941,-88.693794,0,0,0,0,100,0), +(@PATH+30,13,-9180.568,1553.9806,-82.713486,0,0,0,0,100,0), +(@PATH+30,14,-9207.555,1555.0427,-80.2188,0,0,0,0,100,0), + +(@PATH+40,1,-9180.012,1602.1628,-75.35062,0,0,0,0,100,0), +(@PATH+40,2,-9175.272,1573.6725,-81.40051,0,0,0,0,100,0), +(@PATH+40,3,-9180.012,1602.1628,-75.35062,0,0,0,0,100,0), +(@PATH+40,4,-9183.868,1634.6426,-68.77805,0,0,0,0,100,0), +(@PATH+40,5,-9180.012,1602.1628,-75.35062,0,0,0,0,100,0), +(@PATH+40,6,-9183.868,1634.6426,-68.77805,0,0,0,0,100,0), +(@PATH+40,7,-9187.721,1675.7582,-59.37428,0,0,0,0,100,0), +(@PATH+40,8,-9176.217,1702.235,-48.23823,0,0,0,0,100,0), +(@PATH+40,9,-9156.171,1732.5007,-41.41366,0,0,0,0,100,0), +(@PATH+40,10,-9176.217,1702.235,-48.23823,0,0,0,0,100,0), +(@PATH+40,11,-9187.721,1675.7582,-59.37428,0,0,0,0,100,0), +(@PATH+40,12,-9183.868,1634.6426,-68.77805,0,0,0,0,100,0), + +(@PATH+50,1,-9097.918,1764.9274,-42.487713,0,0,0,0,100,0), +(@PATH+50,2,-9109.785,1750.159,-42.950085,0,0,0,0,100,0), +(@PATH+50,3,-9128.2705,1748.0282,-42.561733,0,0,0,0,100,0), +(@PATH+50,4,-9136.415,1759.8807,-42.47679,0,0,0,0,100,0), +(@PATH+50,5,-9140.821,1771.0172,-42.568924,0,0,0,0,100,0), +(@PATH+50,6,-9137.58,1785.764,-42.458168,0,0,0,0,100,0), +(@PATH+50,7,-9128.144,1795.003,-42.741543,0,0,0,0,100,0), +(@PATH+50,8,-9114.63,1797.1588,-42.17985,0,0,0,0,100,0), +(@PATH+50,9,-9104.095,1792.2587,-42.982845,0,0,0,0,100,0), +(@PATH+50,10,-9095.07,1780.6278,-42.62543,0,0,0,0,100,0), + +(@PATH+60,1,-9051.911,1860.0577,-44.409836,0,0,0,0,100,0), +(@PATH+60,2,-9069.832,1836.4388,-44.38335,0,0,0,0,100,0), +(@PATH+60,3,-9094.577,1803.9618,-43.69297,0,0,0,0,100,0), +(@PATH+60,4,-9069.832,1836.4388,-44.38335,0,0,0,0,100,0), +(@PATH+60,5,-9051.911,1860.0577,-44.409836,0,0,0,0,100,0), +(@PATH+60,6,-9047.0205,1886.464,-45.332012,0,0,0,0,100,0), +(@PATH+60,7,-9041.144,1908.4006,-48.003925,0,0,0,0,100,0), +(@PATH+60,8,-9047.0205,1886.464,-45.332012,0,0,0,0,100,0), +(@PATH+60,9,-9051.911,1860.0577,-44.409836,0,0,0,0,100,0), + +(@PATH+70,1,-8941.5205,1865.6836,-23.960814,0,0,0,0,100,0), +(@PATH+70,2,-8955.824,1867.7888,-28.349794,0,0,0,0,100,0), +(@PATH+70,3,-8979.011,1871.0109,-38.4369,0,0,0,0,100,0), +(@PATH+70,4,-8999.37,1868.4137,-42.115707,0,0,0,0,100,0), +(@PATH+70,5,-9020.922,1856.5653,-44.284344,0,0,0,0,100,0), +(@PATH+70,6,-8999.37,1868.4137,-42.115707,0,0,0,0,100,0), +(@PATH+70,7,-8979.011,1871.0109,-38.4369,0,0,0,0,100,0), +(@PATH+70,8,-8955.824,1867.7888,-28.349794,0,0,0,0,100,0), +(@PATH+70,9,-8941.5205,1865.6836,-23.960814,0,0,0,0,100,0), +(@PATH+70,10,-8925.307,1863.9891,-23.26311,0,0,0,0,100,0); + +-- Spawn Formation Members +SET @GUID=88030; +DELETE FROM `creature` WHERE `guid` BETWEEN @GUID AND @GUID+31; +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`) VALUES +(@GUID, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9084.354, 1468.4955, -106.0379, 5.43525, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+1, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9084.354, 1468.4955, -106.0379, 5.43525, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+2, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9084.354, 1468.4955, -106.0379, 5.43525, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+3, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9084.354, 1468.4955, -106.0379, 5.43525, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), + +(@GUID+4, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9090.233, 1422.9799, -106.97796, 3.50811, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+5, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9090.233, 1422.9799, -106.97796, 3.50811, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+6, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9090.233, 1422.9799, -106.97796, 3.50811, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+7, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9090.233, 1422.9799, -106.97796, 3.50811, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), + +(@GUID+8, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9137.567, 1487.8439, -100.96495, 5.36227, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+9, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9137.567, 1487.8439, -100.96495, 5.36227, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+10, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9137.567, 1487.8439, -100.96495, 5.36227, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+11, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9137.567, 1487.8439, -100.96495, 5.36227, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), + +(@GUID+12, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9190.533, 1554.3728, -81.214035, 3.10226, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+13, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9190.533, 1554.3728, -81.214035, 3.10226, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+14, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9190.533, 1554.3728, -81.214035, 3.10226, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+15, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9190.533, 1554.3728, -81.214035, 3.10226, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), + +(@GUID+16, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9186.851, 1666.4683, -62.07425, 4.80582, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+17, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9186.851, 1666.4683, -62.07425, 4.80582, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+18, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9186.851, 1666.4683, -62.07425, 4.80582, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+19, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9186.851, 1666.4683, -62.07425, 4.80582, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), + +(@GUID+20, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9103.887, 1791.9912, -42.998283, 5.37249, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+21, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9103.887, 1791.9912, -42.998283, 5.37249, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+22, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9103.887, 1791.9912, -42.998283, 5.37249, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+23, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9103.887, 1791.9912, -42.998283, 5.37249, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), + +(@GUID+24, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9041.144, 1908.4006, -48.003925, 4.45090, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+25, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9041.144, 1908.4006, -48.003925, 4.45090, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+26, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9041.144, 1908.4006, -48.003925, 4.45090, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+27, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -9041.144, 1908.4006, -48.003925, 4.45090, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), + +(@GUID+28, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -8935.066, 1865.009, -23.424952, 6.17906, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+29, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -8935.066, 1865.009, -23.424952, 6.17906, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+30, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -8935.066, 1865.009, -23.424952, 6.17906, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''), +(@GUID+31, 15250, 15246, 0, 531, 0, 0, 1, 1, 0, -8935.066, 1865.009, -23.424952, 6.17906, 604800, 0, 0, 1, 0, 0, 0, 0, 0, ''); + +-- Create Formations +SET @LEADER=88000; +SET @MEMBER=88030; +DELETE FROM `creature_formations` WHERE `leaderGUID` BETWEEN @LEADER AND @LEADER+7; +INSERT INTO `creature_formations` (`leaderGUID`, `memberGUID`, `dist`, `angle`, `groupAI`, `point_1`, `point_2`) VALUES +(@LEADER, @LEADER, 0, 0, 515, 0, 0), +(@LEADER, @MEMBER, 6, 0, 515, 0, 0), +(@LEADER, @MEMBER+1, 6, 90, 515, 0, 0), +(@LEADER, @MEMBER+2, 6, 180, 515, 0, 0), +(@LEADER, @MEMBER+3, 6, 270, 515, 0, 0), + +(@LEADER+1, @LEADER+1, 0, 0, 515, 0, 0), +(@LEADER+1, @MEMBER+4, 6, 0, 515, 0, 0), +(@LEADER+1, @MEMBER+5, 6, 90, 515, 0, 0), +(@LEADER+1, @MEMBER+6, 6, 180, 515, 0, 0), +(@LEADER+1, @MEMBER+7, 6, 270, 515, 0, 0), + +(@LEADER+2, @LEADER+2, 0, 0, 515, 0, 0), +(@LEADER+2, @MEMBER+8, 6, 0, 515, 0, 0), +(@LEADER+2, @MEMBER+9, 6, 90, 515, 0, 0), +(@LEADER+2, @MEMBER+10, 6, 180, 515, 0, 0), +(@LEADER+2, @MEMBER+11, 6, 270, 515, 0, 0), + +(@LEADER+3, @LEADER+3, 0, 0, 515, 0, 0), +(@LEADER+3, @MEMBER+12, 6, 0, 515, 0, 0), +(@LEADER+3, @MEMBER+13, 6, 90, 515, 0, 0), +(@LEADER+3, @MEMBER+14, 6, 180, 515, 0, 0), +(@LEADER+3, @MEMBER+15, 6, 270, 515, 0, 0), + +(@LEADER+4, @LEADER+4, 0, 0, 515, 0, 0), +(@LEADER+4, @MEMBER+16, 6, 0, 515, 0, 0), +(@LEADER+4, @MEMBER+17, 6, 90, 515, 0, 0), +(@LEADER+4, @MEMBER+18, 6, 180, 515, 0, 0), +(@LEADER+4, @MEMBER+19, 6, 270, 515, 0, 0), + +(@LEADER+5, @LEADER+5, 0, 0, 515, 0, 0), +(@LEADER+5, @MEMBER+20, 6, 0, 515, 0, 0), +(@LEADER+5, @MEMBER+21, 6, 90, 515, 0, 0), +(@LEADER+5, @MEMBER+22, 6, 180, 515, 0, 0), +(@LEADER+5, @MEMBER+23, 6, 270, 515, 0, 0), + +(@LEADER+6, @LEADER+6, 0, 0, 515, 0, 0), +(@LEADER+6, @MEMBER+24, 6, 0, 515, 0, 0), +(@LEADER+6, @MEMBER+25, 6, 90, 515, 0, 0), +(@LEADER+6, @MEMBER+26, 6, 180, 515, 0, 0), +(@LEADER+6, @MEMBER+27, 6, 270, 515, 0, 0), + +(@LEADER+7, @LEADER+7, 0, 0, 515, 0, 0), +(@LEADER+7, @MEMBER+28, 6, 0, 515, 0, 0), +(@LEADER+7, @MEMBER+29, 6, 90, 515, 0, 0), +(@LEADER+7, @MEMBER+30, 6, 180, 515, 0, 0), +(@LEADER+7, @MEMBER+31, 6, 270, 515, 0, 0); diff --git a/data/sql/updates/db_world/2022_09_07_09.sql b/data/sql/updates/db_world/2022_09_07_09.sql new file mode 100644 index 000000000..576190ce0 --- /dev/null +++ b/data/sql/updates/db_world/2022_09_07_09.sql @@ -0,0 +1,5 @@ +-- DB update 2022_09_07_08 -> 2022_09_07_09 +-- +DELETE FROM `spell_script_names` WHERE `spell_id`=21848; +INSERT INTO `spell_script_names` VALUES +(21848,'spell_item_snowman'); diff --git a/src/server/game/Battlegrounds/BattlegroundQueue.cpp b/src/server/game/Battlegrounds/BattlegroundQueue.cpp index 43f9b7320..ebb4ad8ec 100644 --- a/src/server/game/Battlegrounds/BattlegroundQueue.cpp +++ b/src/server/game/Battlegrounds/BattlegroundQueue.cpp @@ -573,10 +573,18 @@ bool BattlegroundQueue::CheckPremadeMatch(BattlegroundBracketId bracket_id, uint // this method tries to create battleground or arena with MinPlayersPerTeam against MinPlayersPerTeam bool BattlegroundQueue::CheckNormalMatch(Battleground* bgTemplate, BattlegroundBracketId bracket_id, uint32 minPlayers, uint32 maxPlayers) { - if (sScriptMgr->IsCheckNormalMatch(this, bgTemplate, bracket_id, minPlayers, maxPlayers)) + auto CanStartMatch = [this, bgTemplate, minPlayers]() { - return true; - } + //allow 1v0 if debug bg + if (sBattlegroundMgr->isTesting() && bgTemplate->isBattleground() && (m_SelectionPools[TEAM_ALLIANCE].GetPlayerCount() || m_SelectionPools[TEAM_HORDE].GetPlayerCount())) + return true; + + //return true if there are enough players in selection pools - enable to work .debug bg command correctly + return m_SelectionPools[TEAM_ALLIANCE].GetPlayerCount() >= minPlayers && m_SelectionPools[TEAM_HORDE].GetPlayerCount() >= minPlayers; + }; + + if (sScriptMgr->IsCheckNormalMatch(this, bgTemplate, bracket_id, minPlayers, maxPlayers)) + return CanStartMatch(); GroupsQueueType::const_iterator itr_team[PVP_TEAMS_COUNT]; for (uint32 i = 0; i < PVP_TEAMS_COUNT; i++) @@ -615,12 +623,7 @@ bool BattlegroundQueue::CheckNormalMatch(Battleground* bgTemplate, BattlegroundB return false; } - //allow 1v0 if debug bg - if (sBattlegroundMgr->isTesting() && bgTemplate->isBattleground() && (m_SelectionPools[TEAM_ALLIANCE].GetPlayerCount() || m_SelectionPools[TEAM_HORDE].GetPlayerCount())) - return true; - - //return true if there are enough players in selection pools - enable to work .debug bg command correctly - return m_SelectionPools[TEAM_ALLIANCE].GetPlayerCount() >= minPlayers && m_SelectionPools[TEAM_HORDE].GetPlayerCount() >= minPlayers; + return CanStartMatch(); } // this method will check if we can invite players to same faction skirmish match diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 04b8cb522..2f20483e9 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -1535,7 +1535,7 @@ bool Player::TeleportTo(uint32 mapid, float x, float y, float z, float orientati oldmap->RemovePlayerFromMap(this, false); // xinef: do this before setting fall information! - if (IsMounted() && (!GetMap()->GetEntry()->IsDungeon() && !GetMap()->GetEntry()->IsBattlegroundOrArena())) + if (IsMounted() && (!GetMap()->GetEntry()->IsDungeon() && !GetMap()->GetEntry()->IsBattlegroundOrArena()) && !m_transport) { AuraEffectList const& auras = GetAuraEffectsByType(SPELL_AURA_MOUNTED); if (!auras.empty()) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 0fa7b1252..099e339d9 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -18592,8 +18592,11 @@ float Unit::MeleeSpellMissChance(Unit const* victim, WeaponAttackType attType, i //calculate miss chance float missChance = victim->GetUnitMissChance(attType); - if (!spellId && haveOffhandWeapon()) + // Check if dual wielding, add additional miss penalty - when mainhand has on next swing spell, offhand doesnt suffer penalty + if (!spellId && (attType != RANGED_ATTACK) && haveOffhandWeapon() && (!m_currentSpells[CURRENT_MELEE_SPELL] || !m_currentSpells[CURRENT_MELEE_SPELL]->IsNextMeleeSwingSpell())) + { missChance += 19; + } // bonus from skills is 0.04% //miss_chance -= skillDiff * 0.04f; @@ -19546,6 +19549,11 @@ bool Unit::CanSwim() const return HasUnitFlag(UNIT_FLAG_RENAME | UNIT_FLAG_SWIMMING); } +void Unit::NearTeleportTo(Position& pos, bool casting /*= false*/, bool vehicleTeleport /*= false*/, bool withPet /*= false*/, bool removeTransport /*= false*/) +{ + NearTeleportTo(pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), casting, vehicleTeleport, withPet, removeTransport); +} + void Unit::NearTeleportTo(float x, float y, float z, float orientation, bool casting /*= false*/, bool vehicleTeleport /*= false*/, bool withPet /*= false*/, bool removeTransport /*= false*/) { DisableSpline(); diff --git a/src/server/game/Entities/Unit/Unit.h b/src/server/game/Entities/Unit/Unit.h index 5df24dbb8..39c3d80ba 100644 --- a/src/server/game/Entities/Unit/Unit.h +++ b/src/server/game/Entities/Unit/Unit.h @@ -1733,6 +1733,7 @@ public: void SendSpellDamageResist(Unit* target, uint32 spellId); void SendSpellDamageImmune(Unit* target, uint32 spellId); + void NearTeleportTo(Position& pos, bool casting = false, bool vehicleTeleport = false, bool withPet = false, bool removeTransport = false); void NearTeleportTo(float x, float y, float z, float orientation, bool casting = false, bool vehicleTeleport = false, bool withPet = false, bool removeTransport = false); void SendTameFailure(uint8 result); void SendTeleportPacket(Position& pos); diff --git a/src/server/game/Handlers/BattleGroundHandler.cpp b/src/server/game/Handlers/BattleGroundHandler.cpp index 7e76aa6e4..585927819 100644 --- a/src/server/game/Handlers/BattleGroundHandler.cpp +++ b/src/server/game/Handlers/BattleGroundHandler.cpp @@ -403,6 +403,12 @@ void WorldSession::HandleBattleFieldPortOpcode(WorldPacket& recvData) return; } + if (_player->GetCharmGUID() || _player->IsInCombat()) + { + _player->GetSession()->SendNotification(LANG_YOU_IN_COMBAT); + return; + } + // get BattlegroundQueue for received BattlegroundTypeId bgTypeId = BattlegroundTypeId(bgTypeId_); BattlegroundQueueTypeId bgQueueTypeId = BattlegroundMgr::BGQueueTypeId(bgTypeId, arenaType); diff --git a/src/server/game/Handlers/SpellHandler.cpp b/src/server/game/Handlers/SpellHandler.cpp index 407201c1d..3a25d131e 100644 --- a/src/server/game/Handlers/SpellHandler.cpp +++ b/src/server/game/Handlers/SpellHandler.cpp @@ -233,16 +233,19 @@ void WorldSession::HandleOpenItemOpcode(WorldPacket& recvPacket) } } - if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))// wrapped? + if (sScriptMgr->OnBeforeOpenItem(pUser, item)) { - CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GIFT_BY_ITEM); - stmt->SetData(0, item->GetGUID().GetCounter()); - _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt) - .WithPreparedCallback(std::bind(&WorldSession::HandleOpenWrappedItemCallback, this, bagIndex, slot, item->GetGUID().GetCounter(), std::placeholders::_1))); - } - else - { - pUser->SendLoot(item->GetGUID(), LOOT_CORPSE); + if (item->HasFlag(ITEM_FIELD_FLAGS, ITEM_FIELD_FLAG_WRAPPED))// wrapped? + { + CharacterDatabasePreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_SEL_CHARACTER_GIFT_BY_ITEM); + stmt->SetData(0, item->GetGUID().GetCounter()); + _queryProcessor.AddCallback(CharacterDatabase.AsyncQuery(stmt) + .WithPreparedCallback(std::bind(&WorldSession::HandleOpenWrappedItemCallback, this, bagIndex, slot, item->GetGUID().GetCounter(), std::placeholders::_1))); + } + else + { + pUser->SendLoot(item->GetGUID(), LOOT_CORPSE); + } } } diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index e821c1623..39e38273a 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -1946,11 +1946,11 @@ inline LiquidData const GridMap::GetLiquidData(float x, float y, float z, float { // Get water level float liquid_level = _liquidMap ? _liquidMap[lx_int * _liquidWidth + ly_int] : _liquidLevel; - // Get ground level (sub 0.2 for fix some errors) + // Get ground level float ground_level = getHeight(x, y); - // Check water level and ground level - if (liquid_level >= ground_level && z >= ground_level) + // Check water level and ground level (sub 0.2 for fix some errors) + if (liquid_level >= ground_level && z >= ground_level - 0.2f) { // All ok in water -> store data liquidData.Entry = entry; diff --git a/src/server/game/Misc/GameGraveyard.cpp b/src/server/game/Misc/GameGraveyard.cpp index 1607d0087..cfb7756a1 100644 --- a/src/server/game/Misc/GameGraveyard.cpp +++ b/src/server/game/Misc/GameGraveyard.cpp @@ -20,6 +20,7 @@ #include "DatabaseEnv.h" #include "Log.h" #include "MapMgr.h" +#include "ScriptMgr.h" Graveyard* Graveyard::instance() { @@ -95,6 +96,13 @@ GraveyardStruct const* Graveyard::GetDefaultGraveyard(TeamId teamId) GraveyardStruct const* Graveyard::GetClosestGraveyard(Player* player, TeamId teamId, bool nearCorpse) { + uint32 graveyardOverride = 0; + sScriptMgr->OnBeforeChooseGraveyard(player, teamId, nearCorpse, graveyardOverride); + if (graveyardOverride) + { + return sGraveyard->GetGraveyard(graveyardOverride); + } + WorldLocation loc = player->GetWorldLocation(); if (nearCorpse) diff --git a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp index b62d36864..7f28a50a2 100644 --- a/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp +++ b/src/server/game/Scripting/ScriptDefines/PlayerScript.cpp @@ -606,6 +606,21 @@ void ScriptMgr::OnGroupRollRewardItem(Player* player, Item* item, uint32 count, }); } +bool ScriptMgr::OnBeforeOpenItem(Player* player, Item* item) +{ + auto ret = IsValidBoolScript([&](PlayerScript* script) + { + return !script->OnBeforeOpenItem(player, item); + }); + + if (ret && *ret) + { + return false; + } + + return true; +} + void ScriptMgr::OnFirstLogin(Player* player) { ExecuteScript([&](PlayerScript* script) @@ -1357,6 +1372,14 @@ void ScriptMgr::OnPlayerResurrect(Player* player, float restore_percent, bool ap }); } +void ScriptMgr::OnBeforeChooseGraveyard(Player* player, TeamId teamId, bool nearCorpse, uint32& graveyardOverride) +{ + ExecuteScript([&](PlayerScript* script) + { + script->OnBeforeChooseGraveyard(player, teamId, nearCorpse, graveyardOverride); + }); +} + bool ScriptMgr::CanPlayerUseChat(Player* player, uint32 type, uint32 language, std::string& msg) { auto ret = IsValidBoolScript([&](PlayerScript* script) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 36939d1b9..a9a77a354 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -1178,6 +1178,9 @@ public: // After receiving item as a group roll reward virtual void OnGroupRollRewardItem(Player* /*player*/, Item* /*item*/, uint32 /*count*/, RollVote /*voteType*/, Roll* /*roll*/) { } + //Before opening an item + [[nodiscard]] virtual bool OnBeforeOpenItem(Player* /*player*/, Item* /*item*/) { return true; } + // After completed a quest [[nodiscard]] virtual bool OnBeforeQuestComplete(Player* /*player*/, uint32 /*quest_id*/) { return true; } @@ -1318,6 +1321,9 @@ public: virtual void OnPlayerResurrect(Player* /*player*/, float /*restore_percent*/, bool /*applySickness*/) { } + // Called before selecting the graveyard when releasing spirit + virtual void OnBeforeChooseGraveyard(Player* /*player*/, TeamId /*teamId*/, bool /*nearCorpse*/, uint32& /*graveyardOverride*/) { } + /** * @brief This hook called before player sending message in default chat * @@ -2290,6 +2296,7 @@ public: /* PlayerScript */ void OnCreateItem(Player* player, Item* item, uint32 count); void OnQuestRewardItem(Player* player, Item* item, uint32 count); void OnGroupRollRewardItem(Player* player, Item* item, uint32 count, RollVote voteType, Roll* roll); + bool OnBeforeOpenItem(Player* player, Item* item); bool OnBeforePlayerQuestComplete(Player* player, uint32 quest_id); void OnQuestComputeXP(Player* player, Quest const* quest, uint32& xpValue); void OnBeforePlayerDurabilityRepair(Player* player, ObjectGuid npcGUID, ObjectGuid itemGUID, float& discountMod, uint8 guildBank); @@ -2358,6 +2365,7 @@ public: /* PlayerScript */ void OnSetServerSideVisibility(Player* player, ServerSideVisibilityType& type, AccountTypes& sec); void OnSetServerSideVisibilityDetect(Player* player, ServerSideVisibilityType& type, AccountTypes& sec); void OnPlayerResurrect(Player* player, float restore_percent, bool applySickness); + void OnBeforeChooseGraveyard(Player* player, TeamId teamId, bool nearCorpse, uint32& graveyardOverride); bool CanPlayerUseChat(Player* player, uint32 type, uint32 language, std::string& msg); bool CanPlayerUseChat(Player* player, uint32 type, uint32 language, std::string& msg, Player* receiver); bool CanPlayerUseChat(Player* player, uint32 type, uint32 language, std::string& msg, Group* group); diff --git a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp index d5b7269b1..1593a7498 100644 --- a/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp +++ b/src/server/scripts/Kalimdor/RuinsOfAhnQiraj/boss_moam.cpp @@ -55,6 +55,12 @@ struct boss_moam : public BossAI { boss_moam(Creature* creature) : BossAI(creature, DATA_MOAM) {} + void InitializeAI() override + { + me->m_CombatDistance = 50.0f; + Reset(); + } + void Reset() override { _Reset(); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp index 789fe5bcf..221c30c73 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_sartura.cpp @@ -63,6 +63,13 @@ struct boss_sartura : public BossAI { boss_sartura(Creature* creature) : BossAI(creature, DATA_SARTURA) {} + void InitializeAI() override + { + me->m_CombatDistance = 60.f; + me->m_SightDistance = 60.f; + Reset(); + } + void Reset() override { _Reset(); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp index e496ef8a3..7ccba318e 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/boss_twinemperors.cpp @@ -15,368 +15,283 @@ * with this program. If not, see . */ -/* ScriptData -SDName: Boss_Twinemperors -SD%Complete: 95 -SDComment: -SDCategory: Temple of Ahn'Qiraj -EndScriptData */ - -#include "Item.h" +#include "Player.h" #include "ScriptMgr.h" #include "ScriptedCreature.h" -#include "Spell.h" -#include "WorldPacket.h" +#include "SpellScript.h" +#include "TaskScheduler.h" #include "temple_of_ahnqiraj.h" enum Spells { + // Both + SPELL_TWIN_EMPATHY = 1177, + SPELL_TWIN_TELEPORT_1 = 800, + SPELL_TWIN_TELEPORT_VISUAL = 26638, SPELL_HEAL_BROTHER = 7393, - SPELL_TWIN_TELEPORT = 800, // CTRA watches for this spell to start its teleport timer - SPELL_TWIN_TELEPORT_VISUAL = 26638, // visual - SPELL_EXPLODEBUG = 804, - SPELL_MUTATE_BUG = 802, - SPELL_BERSERK = 26662, + // Vek'lor + SPELL_SHADOW_BOLT = 26006, + SPELL_BLIZZARD = 26607, + SPELL_FRENZY = 27897, + SPELL_ARCANE_BURST = 568, + SPELL_EXPLODE_BUG = 804, + SPELL_TWIN_TELEPORT_0 = 799, + // Vek'nilash SPELL_UPPERCUT = 26007, SPELL_UNBALANCING_STRIKE = 26613, - SPELL_SHADOWBOLT = 26006, - SPELL_BLIZZARD = 26607, - SPELL_ARCANEBURST = 568, + SPELL_BERSERK = 27680, + SPELL_MUTATE_BUG = 802, + // Bugs + SPELL_VIRULENT_POISON_PROC = 22413 }; -enum Sound +enum Actions { - SOUND_VL_AGGRO = 8657, //8657 - Aggro - To Late - SOUND_VL_KILL = 8658, //8658 - Kill - You will not - SOUND_VL_DEATH = 8659, //8659 - Death - SOUND_VN_DEATH = 8660, //8660 - Death - Feel - SOUND_VN_AGGRO = 8661, //8661 - Aggro - Let none - SOUND_VN_KILL = 8662, //8661 - Kill - your fate + ACTION_START_INTRO = 0, + ACTION_CANCEL_INTRO = 1, + ACTION_AFTER_TELEPORT = 2 +}; + +enum Say +{ + SAY_INTRO_0 = 0, + SAY_INTRO_1 = 1, + SAY_INTRO_2 = 2, + SAY_KILL = 3, + SAY_DEATH = 4, + EMOTE_ENRAGE = 5, + + EMOTE_MASTERS_EYE_AT = 0, +}; + +enum Sounds +{ + SOUND_VK_AGGRO = 8657, + SOUND_VN_AGGRO = 8661 }; enum Misc { - PULL_RANGE = 50, - ABUSE_BUG_RANGE = 20, - VEKLOR_DIST = 20, // VL will not come to melee when attacking - TELEPORTTIME = 30000 + GROUP_INTRO = 0, + + NPC_QIRAJI_SCARAB = 15316, + NPC_QIRAJI_SCORPION = 15317, + + FACTION_HOSTILE = 16 }; +constexpr float veklorOrientationIntro = 2.241519f; +constexpr float veknilashOrientationIntro = 1.144451f; + struct boss_twinemperorsAI : public BossAI { - boss_twinemperorsAI(Creature* creature): BossAI(creature, DATA_TWIN_EMPERORS) { } - - uint32 Heal_Timer; - uint32 Teleport_Timer; - bool AfterTeleport; - uint32 AfterTeleportTimer; - bool DontYellWhenDead; - uint32 Abuse_Bug_Timer, BugsTimer; - bool tspellcast; - uint32 EnrageTimer; - - virtual bool IAmVeklor() = 0; - void Reset() override = 0; - virtual void CastSpellOnBug(Creature* target) = 0; - - void TwinReset() + boss_twinemperorsAI(Creature* creature): BossAI(creature, DATA_TWIN_EMPERORS), _introDone(false) { - Heal_Timer = 0; // first heal immediately when they get close together - Teleport_Timer = TELEPORTTIME; - AfterTeleport = false; - tspellcast = false; - AfterTeleportTimer = 0; - Abuse_Bug_Timer = urand(10000, 17000); - BugsTimer = 2000; - me->ClearUnitState(UNIT_STATE_STUNNED); - DontYellWhenDead = false; - EnrageTimer = 15 * 60000; + me->SetStandState(UNIT_STAND_STATE_KNEEL); - instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_1), true); - } - - Creature* GetOtherBoss() - { - return ObjectAccessor::GetCreature(*me, instance->GetGuidData(IAmVeklor() ? DATA_VEKNILASH : DATA_VEKLOR)); - } - - void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override - { - Unit* pOtherBoss = GetOtherBoss(); - if (pOtherBoss) - { - float dPercent = ((float)damage) / ((float)me->GetMaxHealth()); - int odmg = (int)(dPercent * ((float)pOtherBoss->GetMaxHealth())); - int ohealth = pOtherBoss->GetHealth() - odmg; - pOtherBoss->SetHealth(ohealth > 0 ? ohealth : 0); - if (ohealth <= 0) + _scheduler.SetValidator([this] { - pOtherBoss->setDeathState(JUST_DIED); - pOtherBoss->SetDynamicFlag(UNIT_DYNFLAG_LOOTABLE); + return !me->HasUnitState(UNIT_STATE_CASTING); + }); + } + + Creature* GetTwin() + { + return instance->GetCreature(IAmVeklor() ? DATA_VEKNILASH : DATA_VEKLOR); + } + + void DamageTaken(Unit* attacker, uint32& damage, DamageEffectType, SpellSchoolMask) override + { + if (attacker) + { + if (attacker->GetEntry() == NPC_VEKLOR || attacker->GetEntry() == NPC_VEKNILASH) + { + me->LowerPlayerDamageReq(damage); + return; + } + + if (Creature* twin = GetTwin()) + { + float dmgPct = damage / (float)me->GetMaxHealth(); + int32 actualDmg = dmgPct * twin->GetMaxHealth(); + twin->CastCustomSpell(twin, SPELL_TWIN_EMPATHY, &actualDmg, nullptr, nullptr, true); } } } - void JustDied(Unit* /*killer*/) override + void KilledUnit(Unit* victim) override { - Creature* pOtherBoss = GetOtherBoss(); - if (pOtherBoss) - { - pOtherBoss->SetHealth(0); - pOtherBoss->setDeathState(JUST_DIED); - pOtherBoss->SetDynamicFlag(UNIT_DYNFLAG_LOOTABLE); - CAST_AI(boss_twinemperorsAI, pOtherBoss->AI())->DontYellWhenDead = true; - } - if (!DontYellWhenDead) // I hope AI is not threaded - DoPlaySoundToSet(me, IAmVeklor() ? SOUND_VL_DEATH : SOUND_VN_DEATH); - - instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_1), true); - instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_2), true); + if (victim && victim->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_KILL); } - void KilledUnit(Unit* /*victim*/) override + void EnterEvadeMode(EvadeReason why) override { - DoPlaySoundToSet(me, IAmVeklor() ? SOUND_VL_KILL : SOUND_VN_KILL); + BossAI::EnterEvadeMode(why); + + if (Creature* twin = GetTwin()) + if (!twin->IsInEvadeMode()) + twin->AI()->EnterEvadeMode(why); + + _scheduler.CancelAll(); + } + + void JustDied(Unit* killer) override + { + if (Creature* twin = GetTwin()) + if (twin->IsAlive()) + Unit::Kill(me, twin); + + Talk(SAY_DEATH); + + BossAI::JustDied(killer); + } + + void DoAction(int32 action) override + { + if (action == ACTION_CANCEL_INTRO) + { + _introDone = true; + _scheduler.CancelGroup(GROUP_INTRO); + return; + } + + if (action == ACTION_AFTER_TELEPORT) + { + DoResetThreat(); + me->SetReactState(REACT_PASSIVE); + DoCastSelf(SPELL_TWIN_TELEPORT_VISUAL, true); + _scheduler.DelayAll(2300ms); + _scheduler.Schedule(2s, [this](TaskContext /*context*/) + { + me->SetReactState(REACT_AGGRESSIVE); + me->SetControlled(false, UNIT_STATE_ROOT); + if (Unit* victim = me->SelectNearestTarget()) + { + me->AddThreat(victim, 200000.f); + AttackStart(victim); + } + }); + } + + if (action != ACTION_START_INTRO) + return; + + _scheduler.Schedule(5s, [this](TaskContext /*context*/) + { + me->SetStandState(UNIT_STAND_STATE_STAND); + me->LoadEquipment(1, true); + }); + + if (IAmVeklor()) + { + _scheduler + .Schedule(12s, GROUP_INTRO, [this](TaskContext /*context*/) + { + Talk(SAY_INTRO_0); + }) + .Schedule(20s, GROUP_INTRO, [this](TaskContext /*context*/) + { + Talk(SAY_INTRO_1); + }) + .Schedule(28s, GROUP_INTRO, [this](TaskContext /*context*/) + { + me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR); + }) + .Schedule(30s, GROUP_INTRO, [this](TaskContext /*context*/) + { + me->SetFacingTo(veklorOrientationIntro); + Talk(SAY_INTRO_2); + }) + .Schedule(33s, GROUP_INTRO, [this](TaskContext /*context*/) + { + me->HandleEmoteCommand(EMOTE_ONESHOT_POINT); + _introDone = true; + }); + } + else + { + _scheduler + .Schedule(17s, GROUP_INTRO, [this](TaskContext /*context*/) + { + Talk(SAY_INTRO_0); + }) + .Schedule(23s, GROUP_INTRO, [this](TaskContext /*context*/) + { + Talk(SAY_INTRO_1); + }) + .Schedule(28s, GROUP_INTRO, [this](TaskContext /*context*/) + { + me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR); + }) + .Schedule(32s, GROUP_INTRO, [this](TaskContext /*context*/) + { + me->SetFacingTo(veknilashOrientationIntro); + Talk(SAY_INTRO_2); + }) + .Schedule(33s, GROUP_INTRO, [this](TaskContext /*context*/) + { + me->HandleEmoteCommand(EMOTE_ONESHOT_POINT); + _introDone = true; + }); + } } void EnterCombat(Unit* who) override { - DoZoneInCombat(); - Creature* pOtherBoss = GetOtherBoss(); - if (pOtherBoss) + BossAI::EnterCombat(who); + + if (!_introDone) { - /// @todo we should activate the other boss location so he can start attackning even if nobody - // is near I dont know how to do that - ScriptedAI* otherAI = CAST_AI(ScriptedAI, pOtherBoss->AI()); - if (!pOtherBoss->IsInCombat()) + DoAction(ACTION_CANCEL_INTRO); + if (Creature* twin = GetTwin()) + twin->AI()->DoAction(ACTION_CANCEL_INTRO); + } + + if (Creature* twin = GetTwin()) + if (!twin->IsInCombat()) + twin->AI()->AttackStart(who); + + _scheduler + .Schedule(15min, [this](TaskContext /*context*/) { - DoPlaySoundToSet(me, IAmVeklor() ? SOUND_VL_AGGRO : SOUND_VN_AGGRO); - otherAI->AttackStart(who); - otherAI->DoZoneInCombat(); - } - } - - instance->HandleGameObject(instance->GetGuidData(AQ40_DOOR_1), false); - } - - void SpellHit(Unit* caster, SpellInfo const* entry) override - { - if (caster == me) - return; - - Creature* pOtherBoss = GetOtherBoss(); - if (entry->Id != SPELL_HEAL_BROTHER || !pOtherBoss) - return; - - // add health so we keep same percentage for both brothers - uint32 mytotal = me->GetMaxHealth(), histotal = pOtherBoss->GetMaxHealth(); - float mult = ((float)mytotal) / ((float)histotal); - if (mult < 1) - mult = 1.0f / mult; -#define HEAL_BROTHER_AMOUNT 30000.0f - uint32 largerAmount = (uint32)((HEAL_BROTHER_AMOUNT * mult) - HEAL_BROTHER_AMOUNT); - - if (mytotal > histotal) - { - uint32 h = me->GetHealth() + largerAmount; - me->SetHealth(std::min(mytotal, h)); - } - else - { - uint32 h = pOtherBoss->GetHealth() + largerAmount; - pOtherBoss->SetHealth(std::min(histotal, h)); - } - } - - void TryHealBrother(uint32 diff) - { - if (IAmVeklor()) // this spell heals caster and the other brother so let VN cast it - return; - - if (Heal_Timer <= diff) - { - Unit* pOtherBoss = GetOtherBoss(); - if (pOtherBoss && pOtherBoss->IsWithinDist(me, 60)) - { - DoCast(pOtherBoss, SPELL_HEAL_BROTHER); - Heal_Timer = 1000; - } - } - else Heal_Timer -= diff; - } - - void TeleportToMyBrother() - { - Teleport_Timer = TELEPORTTIME; - - if (IAmVeklor()) - return; // mechanics handled by veknilash so they teleport exactly at the same time and to correct coordinates - - Creature* pOtherBoss = GetOtherBoss(); - if (pOtherBoss) - { - //me->Yell("Teleporting ...", LANG_UNIVERSAL); - Position thisPos; - thisPos.Relocate(me); - Position otherPos; - otherPos.Relocate(pOtherBoss); - pOtherBoss->SetPosition(thisPos); - me->SetPosition(otherPos); - - SetAfterTeleport(); - CAST_AI(boss_twinemperorsAI, pOtherBoss->AI())->SetAfterTeleport(); - } - } - - void SetAfterTeleport() - { - me->InterruptNonMeleeSpells(false); - DoStopAttack(); - DoResetThreat(); - DoCast(me, SPELL_TWIN_TELEPORT_VISUAL); - me->AddUnitState(UNIT_STATE_STUNNED); - AfterTeleport = true; - AfterTeleportTimer = 2000; - tspellcast = false; - } - - bool TryActivateAfterTTelep(uint32 diff) - { - if (AfterTeleport) - { - if (!tspellcast) - { - me->ClearUnitState(UNIT_STATE_STUNNED); - DoCast(me, SPELL_TWIN_TELEPORT); - me->AddUnitState(UNIT_STATE_STUNNED); - } - - tspellcast = true; - - if (AfterTeleportTimer <= diff) - { - AfterTeleport = false; - me->ClearUnitState(UNIT_STATE_STUNNED); - if (Unit* nearu = me->SelectNearestTarget(100)) + if (IAmVeklor()) { - //DoYell(nearu->GetName(), LANG_UNIVERSAL); - AttackStart(nearu); - me->AddThreat(nearu, 10000); - } - return true; - } - else - { - AfterTeleportTimer -= diff; - // update important timers which would otherwise get skipped - if (EnrageTimer > diff) - EnrageTimer -= diff; - else - EnrageTimer = 0; - if (Teleport_Timer > diff) - Teleport_Timer -= diff; - else - Teleport_Timer = 0; - return false; - } - } - else - { - return true; - } - } - - void MoveInLineOfSight(Unit* who) override - { - if (!who || me->GetVictim()) - return; - - if (me->CanCreatureAttack(who)) - { - if (me->IsWithinDistInMap(who, PULL_RANGE, true, false) && me->GetDistanceZ(who) <= /*CREATURE_Z_ATTACK_RANGE*/7 /*there are stairs*/) - { - //if (who->HasStealthAura()) - // who->RemoveSpellsCausingAura(SPELL_AURA_MOD_STEALTH); - AttackStart(who); - } - } - } - - Creature* RespawnNearbyBugsAndGetOne() - { - std::list lUnitList; - me->GetCreatureListWithEntryInGrid(lUnitList, 15316, 150.0f); - me->GetCreatureListWithEntryInGrid(lUnitList, 15317, 150.0f); - - if (lUnitList.empty()) - return nullptr; - - Creature* nearb = nullptr; - - for (std::list::const_iterator iter = lUnitList.begin(); iter != lUnitList.end(); ++iter) - { - Creature* c = *iter; - if (c) - { - if (c->isDead()) - { - c->Respawn(); - c->SetFaction(FACTION_CREATURE); - c->RemoveAllAuras(); - } - if (c->IsWithinDistInMap(me, ABUSE_BUG_RANGE)) - { - if (!nearb || (rand() % 4) == 0) - nearb = c; - } - } - } - return nearb; - } - - void HandleBugs(uint32 diff) - { - if (BugsTimer < diff || Abuse_Bug_Timer <= diff) - { - Creature* c = RespawnNearbyBugsAndGetOne(); - if (Abuse_Bug_Timer <= diff) - { - if (c) - { - CastSpellOnBug(c); - Abuse_Bug_Timer = urand(10000, 17000); + DoCastSelf(SPELL_FRENZY, true); + Talk(EMOTE_ENRAGE); } else - { - Abuse_Bug_Timer = 1000; - } - } - else + DoCastSelf(SPELL_BERSERK, true); + }) + .Schedule(3600ms, [this](TaskContext context) // according to sniffs it should be casted by both emperors. { - Abuse_Bug_Timer -= diff; - } - BugsTimer = 2000; - } - else - { - BugsTimer -= diff; - Abuse_Bug_Timer -= diff; - } + if (Creature* twin = GetTwin()) + { + if (me->IsWithinDist(twin, 60.f)) + DoCast(twin, SPELL_HEAL_BROTHER, true); + } + + context.Repeat(); + }); } - void CheckEnrage(uint32 diff) + void UpdateAI(uint32 diff) override { - if (EnrageTimer <= diff) - { - if (!me->IsNonMeleeSpellCast(true)) + if (!UpdateVictim() && _introDone) + return; + + _scheduler.Update(diff, [this] { - DoCast(me, SPELL_BERSERK); - EnrageTimer = 60 * 60000; - } - else EnrageTimer = 0; - } - else EnrageTimer -= diff; + if (!IAmVeklor()) + DoMeleeAttackIfReady(); + }); } + + virtual bool IAmVeklor() = 0; + +protected: + TaskScheduler _scheduler; + bool _introDone; }; struct boss_veknilash : public boss_twinemperorsAI @@ -385,192 +300,172 @@ struct boss_veknilash : public boss_twinemperorsAI bool IAmVeklor() override { return false; } - uint32 UpperCut_Timer; - uint32 UnbalancingStrike_Timer; - uint32 Scarabs_Timer; - int Rand; - int RandX; - int RandY; - - Creature* Summoned; - - void Reset() override + void EnterCombat(Unit* who) override { - TwinReset(); - UpperCut_Timer = urand(14000, 29000); - UnbalancingStrike_Timer = urand(8000, 18000); - Scarabs_Timer = urand(7000, 14000); + boss_twinemperorsAI::EnterCombat(who); - //Added. Can be removed if its included in DB. - me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_MAGIC, true); - } + DoPlaySoundToSet(me, SOUND_VN_AGGRO); - void CastSpellOnBug(Creature* target) override - { - target->SetFaction(FACTION_MONSTER); - target->AI()->AttackStart(me->GetThreatMgr().getHostileTarget()); - target->AddAura(SPELL_MUTATE_BUG, target); - target->SetFullHealth(); - } - - void UpdateAI(uint32 diff) override - { - //Return since we have no target - if (!UpdateVictim()) - return; - - if (!TryActivateAfterTTelep(diff)) - return; - - //UnbalancingStrike_Timer - if (UnbalancingStrike_Timer <= diff) - { - DoCastVictim(SPELL_UNBALANCING_STRIKE); - UnbalancingStrike_Timer = 8000 + rand() % 12000; - } - else UnbalancingStrike_Timer -= diff; - - if (UpperCut_Timer <= diff) - { - Unit* randomMelee = SelectTarget(SelectTargetMethod::Random, 0, NOMINAL_MELEE_RANGE, true); - if (randomMelee) - DoCast(randomMelee, SPELL_UPPERCUT); - UpperCut_Timer = 15000 + rand() % 15000; - } - else UpperCut_Timer -= diff; - - HandleBugs(diff); - - //Heal brother when 60yrds close - TryHealBrother(diff); - - //Teleporting to brother - if (Teleport_Timer <= diff) - { - TeleportToMyBrother(); - } - else Teleport_Timer -= diff; - - CheckEnrage(diff); - - DoMeleeAttackIfReady(); + _scheduler + .Schedule(14s, [this](TaskContext context) + { + DoCastRandomTarget(SPELL_UPPERCUT, 0, me->GetMeleeReach(), true); + context.Repeat(4s, 15s); + }) + .Schedule(12s, [this](TaskContext context) + { + DoCastVictim(SPELL_UNBALANCING_STRIKE); + context.Repeat(8s, 20s); + }) + .Schedule(16s, [this](TaskContext context) + { + DoCastAOE(SPELL_MUTATE_BUG); + context.Repeat(10s, 20s); + }); } }; struct boss_veklor : public boss_twinemperorsAI { - boss_veklor(Creature* creature) : boss_twinemperorsAI(creature) { } + boss_veklor(Creature* creature) : boss_twinemperorsAI(creature) + { + me->SetFloatValue(UNIT_FIELD_COMBATREACH, 45.f); + } bool IAmVeklor() override { return true; } - uint32 ShadowBolt_Timer; - uint32 Blizzard_Timer; - uint32 ArcaneBurst_Timer; - uint32 Scorpions_Timer; - int Rand; - int RandX; - - Creature* Summoned; - - void Reset() override + void EnterCombat(Unit* who) override { - TwinReset(); - ShadowBolt_Timer = 0; - Blizzard_Timer = urand(15000, 20000); - ArcaneBurst_Timer = 1000; - Scorpions_Timer = urand(7000, 14000); + boss_twinemperorsAI::EnterCombat(who); - //Added. Can be removed if its included in DB. - me->ApplySpellImmune(0, IMMUNITY_DAMAGE, SPELL_SCHOOL_MASK_NORMAL, true); + DoPlaySoundToSet(me, SOUND_VK_AGGRO); + + _scheduler + .Schedule(4s, [this](TaskContext context) + { + DoCastVictim(SPELL_SHADOW_BOLT); + context.Repeat(2500ms); + }) + .Schedule(10s, 15s, [this](TaskContext context) + { + DoCastRandomTarget(SPELL_BLIZZARD, 0, 45.f); + context.Repeat(5s, 12s); + }) + .Schedule(1s, [this](TaskContext context) + { + if (me->SelectNearestPlayer(NOMINAL_MELEE_RANGE)) + DoCastAOE(SPELL_ARCANE_BURST); + context.Repeat(7s, 12s); + }) + .Schedule(30s, 40s, [this](TaskContext context) + { + DoCastSelf(SPELL_TWIN_TELEPORT_0); + context.Repeat(); + }) + .Schedule(5s, [this](TaskContext context) + { + DoCastAOE(SPELL_EXPLODE_BUG); + context.Repeat(4500ms, 10s); + }); } - void CastSpellOnBug(Creature* target) override + void SpellHit(Unit* /*caster*/, SpellInfo const* spellInfo) override { - target->SetFaction(FACTION_MONSTER); - target->AddAura(SPELL_EXPLODEBUG, target); - target->SetFullHealth(); + if (spellInfo->Id == SPELL_TWIN_TELEPORT_0) + { + if (Creature* veknilash = GetTwin()) + { + DoCastSelf(SPELL_TWIN_TELEPORT_1, true); + me->SetControlled(true, UNIT_STATE_ROOT); + + Position veklorPos = me->GetPosition(); + Position veknilashPos = veknilash->GetPosition(); + me->NearTeleportTo(veknilashPos); + + veknilash->CastSpell(veknilash, SPELL_TWIN_TELEPORT_1, true); + veknilash->SetControlled(true, UNIT_STATE_ROOT); + veknilash->NearTeleportTo(veklorPos); + + veknilash->AI()->DoAction(ACTION_AFTER_TELEPORT); + DoAction(ACTION_AFTER_TELEPORT); + } + } + } +}; + +class at_twin_emperors : public OnlyOnceAreaTriggerScript +{ +public: + at_twin_emperors() : OnlyOnceAreaTriggerScript("at_twin_emperors") { } + + bool _OnTrigger(Player* player, const AreaTrigger* /*at*/) override + { + if (InstanceScript* instance = player->GetInstanceScript()) + { + if (instance->GetBossState(DATA_TWIN_EMPERORS) != DONE) + { + if (Creature* mastersEye = instance->GetCreature(DATA_MASTERS_EYE)) + { + mastersEye->AI()->Talk(EMOTE_MASTERS_EYE_AT, player); + mastersEye->DespawnOrUnsummon(11000); + mastersEye->m_Events.AddEventAtOffset([mastersEye, player]() + { + mastersEye->SetFacingToObject(player); + }, 3s); + } + + if (Creature* veklor = instance->GetCreature(DATA_VEKLOR)) + veklor->AI()->DoAction(ACTION_START_INTRO); + + if (Creature* veknilash = instance->GetCreature(DATA_VEKNILASH)) + veknilash->AI()->DoAction(ACTION_START_INTRO); + } + } + return false; + } +}; + +class spell_mutate_explode_bug : public SpellScript +{ + PrepareSpellScript(spell_mutate_explode_bug); + + void FilterTargets(std::list& targets) + { + targets.remove_if([&](WorldObject const* target) -> bool + { + if (target->GetEntry() != NPC_QIRAJI_SCARAB && target->GetEntry() != NPC_QIRAJI_SCORPION) + return true; + if (Creature const* creature = target->ToCreature()) + if (creature->HasAura(SPELL_EXPLODE_BUG) || creature->HasAura(SPELL_MUTATE_BUG)) + return true; + + return false; + }); + + Acore::Containers::RandomResize(targets, 1); } - void UpdateAI(uint32 diff) override + void HandleOnHit() { - //Return since we have no target - if (!UpdateVictim()) + if (!GetHitUnit()) return; - // reset arcane burst after teleport - we need to do this because - // when VL jumps to VN's location there will be a warrior who will get only 2s to run away - // which is almost impossible - if (AfterTeleport) - ArcaneBurst_Timer = 5000; - if (!TryActivateAfterTTelep(diff)) + Creature* target = GetHitUnit()->ToCreature(); + + if (!target) return; - //ShadowBolt_Timer - if (ShadowBolt_Timer <= diff) - { - if (!me->IsWithinDist(me->GetVictim(), 45.0f)) - me->GetMotionMaster()->MoveChase(me->GetVictim(), VEKLOR_DIST, 0); - else - DoCastVictim(SPELL_SHADOWBOLT); - ShadowBolt_Timer = 2000; - } - else ShadowBolt_Timer -= diff; - - //Blizzard_Timer - if (Blizzard_Timer <= diff) - { - Unit* target = SelectTarget(SelectTargetMethod::Random, 0, 45, true); - if (target) - { - DoCast(target, SPELL_BLIZZARD); - } - Blizzard_Timer = 15000 + rand() % 15000; - } - else Blizzard_Timer -= diff; - - if (ArcaneBurst_Timer <= diff) - { - Unit* mvic; - if ((mvic = SelectTarget(SelectTargetMethod::MaxDistance, 0, NOMINAL_MELEE_RANGE, true)) != nullptr) - { - DoCast(mvic, SPELL_ARCANEBURST); - ArcaneBurst_Timer = 5000; - } - } - else ArcaneBurst_Timer -= diff; - - HandleBugs(diff); - - //Heal brother when 60yrds close - TryHealBrother(diff); - - //Teleporting to brother - if (Teleport_Timer <= diff) - { - TeleportToMyBrother(); - } - else Teleport_Timer -= diff; - - CheckEnrage(diff); - - //VL doesn't melee - //DoMeleeAttackIfReady(); + if (m_scriptSpellId == SPELL_MUTATE_BUG) + target->CastSpell(target, SPELL_VIRULENT_POISON_PROC, true); + target->SetFaction(FACTION_HOSTILE); + target->SetReactState(REACT_AGGRESSIVE); + target->SetInCombatWithZone(); } - void AttackStart(Unit* who) override + void Register() override { - if (!who) - return; - - if (who->isTargetableForAttack()) - { - // VL doesn't melee - if (me->Attack(who, false)) - { - me->GetMotionMaster()->MoveChase(who, VEKLOR_DIST, 0); - me->AddThreat(who, 0.0f); - } - } + OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_mutate_explode_bug::FilterTargets, EFFECT_ALL, TARGET_UNIT_SRC_AREA_ENTRY); + OnHit += SpellHitFn(spell_mutate_explode_bug::HandleOnHit); } }; @@ -578,4 +473,6 @@ void AddSC_boss_twinemperors() { RegisterTempleOfAhnQirajCreatureAI(boss_veknilash); RegisterTempleOfAhnQirajCreatureAI(boss_veklor); + new at_twin_emperors(); + RegisterSpellScript(spell_mutate_explode_bug); } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp index 38097a791..aeab896c8 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp @@ -24,7 +24,10 @@ ObjectData const creatureData[] = { { NPC_SARTURA, DATA_SARTURA }, { NPC_EYE_OF_CTHUN, DATA_EYE_OF_CTHUN }, - { NPC_OURO_SPAWNER, DATA_OURO_SPAWNER } + { NPC_OURO_SPAWNER, DATA_OURO_SPAWNER }, + { NPC_MASTERS_EYE, DATA_MASTERS_EYE }, + { NPC_VEKLOR, DATA_VEKLOR }, + { NPC_VEKNILASH, DATA_VEKNILASH } }; class instance_temple_of_ahnqiraj : public InstanceMapScript @@ -46,15 +49,10 @@ public: SetBossNumber(MAX_BOSS_NUMBER); } - //If Vem is dead... - bool IsBossDied[3]; - ObjectGuid SkeramGUID; ObjectGuid VemGUID; ObjectGuid KriGUID; ObjectGuid YaujGUID; - ObjectGuid VeklorGUID; - ObjectGuid VeknilashGUID; ObjectGuid ViscidusGUID; ObjectGuid CThunGUID; GuidVector CThunGraspGUIDs; @@ -65,9 +63,6 @@ public: void Initialize() override { - IsBossDied[0] = false; - IsBossDied[1] = false; - IsBossDied[2] = false; BugTrioDeathCount = 0; CthunPhase = 0; } @@ -92,16 +87,6 @@ public: case NPC_YAUJ: YaujGUID = creature->GetGUID(); break; - case NPC_VEKLOR: - VeklorGUID = creature->GetGUID(); - if (!creature->IsAlive()) - { - HandleGameObject(doorGUIDs[1], true); - } - break; - case NPC_VEKNILASH: - VeknilashGUID = creature->GetGUID(); - break; case NPC_VISCIDUS: ViscidusGUID = creature->GetGUID(); break; @@ -109,6 +94,10 @@ public: if (GetBossState(DATA_OURO) != DONE) creature->Respawn(); break; + case NPC_MASTERS_EYE: + if (GetBossState(DATA_TWIN_EMPERORS) != DONE) + creature->Respawn(true); + break; case NPC_CTHUN: CThunGUID = creature->GetGUID(); if (!creature->IsAlive()) @@ -138,7 +127,7 @@ public: break; case AQ40_DOOR_2: doorGUIDs[1] = go->GetGUID(); - if (Creature* veklor = instance->GetCreature(VeklorGUID)) + if (Creature* veklor = GetCreature(DATA_VEKLOR)) { if (!veklor->IsAlive()) { @@ -177,16 +166,6 @@ public: { switch (type) { - case DATA_VEKLORISDEAD: - if (IsBossDied[1]) - return 1; - break; - - case DATA_VEKNILASHISDEAD: - if (IsBossDied[2]) - return 1; - break; - case DATA_BUG_TRIO_DEATH: return BugTrioDeathCount; @@ -208,10 +187,6 @@ public: return KriGUID; case DATA_YAUJ: return YaujGUID; - case DATA_VEKLOR: - return VeklorGUID; - case DATA_VEKNILASH: - return VeknilashGUID; case DATA_VISCIDUS: return ViscidusGUID; case AQ40_DOOR_1: @@ -234,12 +209,6 @@ public: else BugTrioDeathCount = 0; break; - case DATA_VEKLOR_DEATH: - IsBossDied[1] = true; - break; - case DATA_VEKNILASH_DEATH: - IsBossDied[2] = true; - break; case DATA_CTHUN_PHASE: CthunPhase = data; if (data == PHASE_CTHUN_DONE) @@ -253,6 +222,8 @@ public: } } break; + default: + break; } } diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h index e5d2ed286..1cba3f384 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/temple_of_ahnqiraj.h @@ -42,17 +42,15 @@ enum DataTypes DATA_BUG_TRIO_DEATH = 13, DATA_OURO_SPAWNER = 14, DATA_VEKLOR = 15, - DATA_VEKLORISDEAD = 16, - DATA_VEKLOR_DEATH = 17, - DATA_VEKNILASH = 18, - DATA_VEKNILASHISDEAD = 19, - DATA_VEKNILASH_DEATH = 20, - DATA_CTHUN_PHASE = 21, - DATA_EYE_OF_CTHUN = 22 + DATA_VEKNILASH = 16, + DATA_CTHUN_PHASE = 17, + DATA_EYE_OF_CTHUN = 18, + DATA_MASTERS_EYE = 19 }; enum Creatures { + NPC_MASTERS_EYE = 15963, NPC_CTHUN = 15727, NPC_EYE_OF_CTHUN = 15589, NPC_CTHUN_PORTAL = 15896, diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp index 3c2984212..9eeaeb14e 100644 --- a/src/server/scripts/Spells/spell_item.cpp +++ b/src/server/scripts/Spells/spell_item.cpp @@ -3676,6 +3676,32 @@ class spell_item_mirrens_drinking_hat : public SpellScript } }; +class spell_item_snowman : public SpellScript +{ + PrepareSpellScript(spell_item_snowman); + + SpellCastResult CheckCast() + { + if (Player* caster = GetCaster()->ToPlayer()) + { + if (Battleground* bg = caster->GetBattleground()) + { + if (bg->GetStatus() == STATUS_WAIT_JOIN) + { + return SPELL_FAILED_NOT_READY; + } + } + } + + return SPELL_CAST_OK; + } + + void Register() override + { + OnCheckCast += SpellCheckCastFn(spell_item_snowman::CheckCast); + } +}; + void AddSC_item_spell_scripts() { RegisterSpellScript(spell_item_massive_seaforium_charge); @@ -3789,4 +3815,5 @@ void AddSC_item_spell_scripts() RegisterSpellScript(spell_item_recall); RegisterSpellScript(spell_item_wraith_scythe_drain_life); RegisterSpellScript(spell_item_mirrens_drinking_hat); + RegisterSpellScript(spell_item_snowman); }