aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2024_08_30_00_world.sql1121
-rw-r--r--src/server/game/DataStores/DB2Stores.cpp9
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp106
-rw-r--r--src/server/game/Globals/ObjectMgr.h11
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp35
-rw-r--r--src/server/game/Server/Packets/QuestPackets.cpp20
-rw-r--r--src/server/game/Server/Packets/QuestPackets.h22
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rw-r--r--src/server/game/Server/WorldSession.h2
-rw-r--r--src/server/game/World/World.cpp7
10 files changed, 1329 insertions, 8 deletions
diff --git a/sql/updates/world/master/2024_08_30_00_world.sql b/sql/updates/world/master/2024_08_30_00_world.sql
new file mode 100644
index 00000000000..607eb1c6d43
--- /dev/null
+++ b/sql/updates/world/master/2024_08_30_00_world.sql
@@ -0,0 +1,1121 @@
+DROP TABLE IF EXISTS `ui_map_quest_line`;
+CREATE TABLE `ui_map_quest_line` (
+ `UiMapId` INT UNSIGNED NOT NULL,
+ `QuestLineId` INT UNSIGNED NOT NULL,
+ `VerifiedBuild` INT NOT NULL DEFAULT '0',
+ PRIMARY KEY (`UiMapId`, `QuestLineId`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+DROP TABLE IF EXISTS `ui_map_quest`;
+CREATE TABLE `ui_map_quest` (
+ `UiMapId` INT UNSIGNED NOT NULL,
+ `QuestId` INT UNSIGNED NOT NULL,
+ `VerifiedBuild` INT NOT NULL DEFAULT '0',
+ PRIMARY KEY (`UiMapId`, `QuestId`)
+) ENGINE=INNODB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
+
+DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=371 AND `QuestLineId` IN (5557,5502,5500,5499,5496,5495,5491,5490,5489,560,559,558,555,554,553,290)) OR (`UIMapId`=379 AND `QuestLineId` IN (5502,5500,5499,5496,5492,5491,561,560,554,553,290)) OR (`UIMapId`=390 AND `QuestLineId` IN (5557,5502,5500,5499,5496,5493,5492,5491,5489,562,561,560,558,290)) OR (`UIMapId`=422 AND `QuestLineId` IN (5499,5495,5493,5492,5490,5489,562,561,559,558,290)) OR (`UIMapId`=116 AND `QuestLineId` IN (537,536,529,528)) OR (`UIMapId`=554 AND `QuestLineId`=5557) OR (`UIMapId`=504 AND `QuestLineId`=5500) OR (`UIMapId`=121 AND `QuestLineId` IN (537,536,535)) OR (`UIMapId`=102 AND `QuestLineId` IN (486,474,463,448)) OR (`UIMapId`=127 AND `QuestLineId` IN (5389,538,535,529)) OR (`UIMapId`=125 AND `QuestLineId`=5389) OR (`UIMapId`=207 AND `QuestLineId` IN (546,543)) OR (`UIMapId`=100 AND `QuestLineId` IN (538,486,473,463,448)) OR (`UIMapId`=418 AND `QuestLineId` IN (5499,5495,5493,5490,5489,562,559,558)) OR (`UIMapId`=105 AND `QuestLineId` IN (488,474,463)) OR (`UIMapId`=118 AND `QuestLineId` IN (5389,538,535,534,290)) OR (`UIMapId`=111 AND `QuestLineId` IN (538,493,488,486,473)) OR (`UIMapId`=170 AND `QuestLineId` IN (538,535,290)) OR (`UIMapId`=104 AND `QuestLineId` IN (493,473,290)) OR (`UIMapId`=120 AND `QuestLineId` IN (5389,538,536,535,290)) OR (`UIMapId`=109 AND `QuestLineId` IN (493,488,474)) OR (`UIMapId`=107 AND `QuestLineId` IN (538,493,488,486,473,463)) OR (`UIMapId`=114 AND `QuestLineId` IN (530,529)) OR (`UIMapId`=388 AND `QuestLineId` IN (5502,5500,5499,5496,5493,5492,5491,562,561,560)) OR (`UIMapId`=117 AND `QuestLineId`=528) OR (`UIMapId`=115 AND `QuestLineId` IN (538,537,536,530,529)) OR (`UIMapId`=174 AND `QuestLineId` IN (546,543)) OR (`UIMapId`=123 AND `QuestLineId` IN (534,530,529)) OR (`UIMapId`=108 AND `QuestLineId` IN (538,493,488,486,473,448,290)) OR (`UIMapId`=119 AND `QuestLineId` IN (538,534,530)) OR (`UIMapId`=376 AND `QuestLineId` IN (5495,5493,5490,5489,562,559,558,555,290));
+DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=127 AND `QuestLineId`=5372) OR (`UIMapId`=118 AND `QuestLineId`=5372) OR (`UIMapId`=371 AND `QuestLineId` IN (5503,5501,5497)) OR (`UIMapId`=418 AND `QuestLineId`=5497) OR (`UIMapId`=376 AND `QuestLineId` IN (5501,5497)) OR (`UIMapId`=379 AND `QuestLineId` IN (5501,5497)) OR (`UIMapId`=390 AND `QuestLineId` IN (5503,5501,5497)) OR (`UIMapId`=388 AND `QuestLineId` IN (5501,5497)) OR (`UIMapId`=120 AND `QuestLineId`=5372) OR (`UIMapId`=554 AND `QuestLineId`=5503) OR (`UIMapId`=504 AND `QuestLineId`=5501);
+DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=895 AND `QuestLineId` IN (5449,5448,5447,5446,5443,5441,5440,5437,5436,5435,5434,5433,5432,5431,5379,5376,5375,5373,5372,5371,1000,940,939,851,797,785,742,628,592,591,586)) OR (`UIMapId`=1462 AND `QuestLineId` IN (5376,1000,940)) OR (`UIMapId`=942 AND `QuestLineId` IN (5452,5451,5450,5436,5435,5371,851,794,740,738,591,582,577)) OR (`UIMapId`=680 AND `QuestLineId` IN (5375,342,280,206,191,184,152,82)) OR (`UIMapId`=646 AND `QuestLineId` IN (347,295,294,280,275,206,171,152,144,131)) OR (`UIMapId`=862 AND `QuestLineId` IN (5423,5411,5410,5409,5379,939,851,785,628)) OR (`UIMapId`=641 AND `QuestLineId` IN (5375,342,206,191,184,171,152,144)) OR (`UIMapId`=650 AND `QuestLineId` IN (5375,342,294,280,206,191,184,171,144,131)) OR (`UIMapId`=863 AND `QuestLineId` IN (5414,5413,5411)) OR (`UIMapId`=790 AND `QuestLineId`=82) OR (`UIMapId`=125 AND `QuestLineId`=5372) OR (`UIMapId`=630 AND `QuestLineId` IN (347,295,294,280,275,227,226,206,171,152,144,131,82)) OR (`UIMapId`=885 AND `QuestLineId`=365) OR (`UIMapId`=896 AND `QuestLineId` IN (5449,5448,5447,5446,5443,5441,5440,5437,5435,5433,5432,5376,5373,5372,5371,1000,940,851,592,591)) OR (`UIMapId`=535 AND `QuestLineId` IN (140,105,59,39,34,29,27)) OR (`UIMapId`=542 AND `QuestLineId` IN (59,50,34)) OR (`UIMapId`=539 AND `QuestLineId` IN (140,105,59,50,39,34)) OR (`UIMapId`=525 AND `QuestLineId`=105) OR (`UIMapId`=627 AND `QuestLineId` IN (295,294,280,275,206,171,152,144,131)) OR (`UIMapId`=882 AND `QuestLineId`=365) OR (`UIMapId`=534 AND `QuestLineId`=60) OR (`UIMapId`=864 AND `QuestLineId` IN (5423,5414,5413,5411,851,628)) OR (`UIMapId`=543 AND `QuestLineId` IN (140,52)) OR (`UIMapId`=550 AND `QuestLineId` IN (105,29,27)) OR (`UIMapId`=1355 AND `QuestLineId` IN (5375,5366,1070,926)) OR (`UIMapId`=634 AND `QuestLineId` IN (5375,342,294,280,206,152,144,131)) OR (`UIMapId`=830 AND `QuestLineId`=365);
+DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=1169 AND `QuestLineId`=5372) OR (`UIMapId`=1462 AND `QuestLineId` IN (5384,941)) OR (`UIMapId`=895 AND `QuestLineId` IN (5384,941,625)) OR (`UIMapId`=863 AND `QuestLineId` IN (5429,5419,5418,5416,5391,5390,5389,320)) OR (`UIMapId`=862 AND `QuestLineId` IN (5427,5424,5421,5402,5401,5400,5391,5390,5389,5384,941,856,747,625,320)) OR (`UIMapId`=627 AND `QuestLineId`=130) OR (`UIMapId`=646 AND `QuestLineId`=130) OR (`UIMapId`=896 AND `QuestLineId` IN (5384,941,625)) OR (`UIMapId`=680 AND `QuestLineId`=5385) OR (`UIMapId`=634 AND `QuestLineId` IN (5385,307,130)) OR (`UIMapId`=641 AND `QuestLineId` IN (5385,307)) OR (`UIMapId`=630 AND `QuestLineId`=130) OR (`UIMapId`=864 AND `QuestLineId` IN (5429,5427,5426,5425,5424,5422,5421,5419,5418,5416,5391,5390,5389,320)) OR (`UIMapId`=1355 AND `QuestLineId` IN (5385,5369,1107)) OR (`UIMapId`=535 AND `QuestLineId` IN (32,30,28)) OR (`UIMapId`=550 AND `QuestLineId` IN (30,28)) OR (`UIMapId`=525 AND `QuestLineId` IN (139,58,57,1)) OR (`UIMapId`=543 AND `QuestLineId` IN (139,58,57,1)) OR (`UIMapId`=650 AND `QuestLineId` IN (5385,307,130));
+DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=371 AND `QuestLineId` IN (289,5494,550)) OR (`UIMapId`=422 AND `QuestLineId`=289) OR (`UIMapId`=379 AND `QuestLineId` IN (289,5494,550)) OR (`UIMapId`=630 AND `QuestLineId`=238) OR (`UIMapId`=646 AND `QuestLineId`=238) OR (`UIMapId`=862 AND `QuestLineId`=612) OR (`UIMapId`=376 AND `QuestLineId`=289) OR (`UIMapId`=120 AND `QuestLineId` IN (589,289,612)) OR (`UIMapId`=125 AND `QuestLineId` IN (589,612)) OR (`UIMapId`=650 AND `QuestLineId`=238) OR (`UIMapId`=680 AND `QuestLineId`=238) OR (`UIMapId`=117 AND `QuestLineId`=1108) OR (`UIMapId`=108 AND `QuestLineId`=289) OR (`UIMapId`=634 AND `QuestLineId`=238) OR (`UIMapId`=127 AND `QuestLineId` IN (589,612)) OR (`UIMapId`=118 AND `QuestLineId` IN (1108,589,289,612)) OR (`UIMapId`=1169 AND `QuestLineId`=589) OR (`UIMapId`=104 AND `QuestLineId`=289) OR (`UIMapId`=390 AND `QuestLineId`=289) OR (`UIMapId`=895 AND `QuestLineId`=589);
+DELETE FROM `ui_map_quest_line` WHERE (`QuestLineId`=5369 AND `UIMapId` IN (1409,1727)) OR (`QuestLineId`=5366 AND `UIMapId`=1409) OR (`QuestLineId`=1107 AND `UIMapId` IN (1409,1727)) OR (`QuestLineId`=1070 AND `UIMapId`=1409) OR (`QuestLineId`=926 AND `UIMapId`=1409) OR (`QuestLineId`=1035 AND `UIMapId` IN (118,1602)) OR (`QuestLineId`=5453 AND `UIMapId` IN (23,124)) OR (`QuestLineId`=572 AND `UIMapId` IN (179,202)) OR (`QuestLineId`=5439 AND `UIMapId`=194) OR (`QuestLineId`=571 AND `UIMapId` IN (174,207)) OR (`QuestLineId`=573 AND `UIMapId`=378) OR (`QuestLineId`=150 AND `UIMapId` IN (630,634)) OR (`QuestLineId`=90 AND `UIMapId` IN (634,672,680)) OR (`QuestLineId`=206 AND `UIMapId`=672);
+DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=1525 AND `QuestLineId` IN (1257,1223)) OR (`UIMapId`=1161 AND `QuestLineId` IN (5372,589)) OR (`UIMapId`=1670 AND `QuestLineId`=1257) OR (`UIMapId`=1165 AND `QuestLineId` IN (5391,5390,5389));
+DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=1165 AND `QuestLineId` IN (5379,856,851,785,5384,941,747)) OR (`UIMapId`=1525 AND `QuestLineId` IN (1235,1137,1010)) OR (`UIMapId`=862 AND `QuestLineId` IN (5388,617)) OR (`UIMapId`=1533 AND `QuestLineId`=1235) OR (`UIMapId`=2025 AND `QuestLineId`=1325) OR (`UIMapId`=2022 AND `QuestLineId`=1325) OR (`UIMapId`=1670 AND `QuestLineId` IN (1235,1137,1010,1295)) OR (`UIMapId`=2133 AND `QuestLineId`=1325) OR (`UIMapId`=1161 AND `QuestLineId` IN (5379,5376,5375,5371,1000,940,939,851,797,785,628)) OR (`UIMapId`=1536 AND `QuestLineId`=1295) OR (`UIMapId`=895 AND `QuestLineId`=5388);
+DELETE FROM `ui_map_quest_line` WHERE (`QuestLineId`=5396 AND `UIMapId` IN (460,57)) OR (`QuestLineId`=5389 AND `UIMapId` IN (62,18,7,199,90,85,1,88,66,21,10,22,94,110)) OR (`QuestLineId`=856 AND `UIMapId`=62) OR (`QuestLineId`=612 AND `UIMapId` IN (62,249,18,81,7,199,90,85,1,327,88,66,21,10,22,94,110)) OR (`QuestLineId`=542 AND `UIMapId` IN (62,63,76,83,77,198)) OR (`QuestLineId`=538 AND `UIMapId` IN (62,83,80)) OR (`QuestLineId`=508 AND `UIMapId` IN (62,83,77,198)) OR (`QuestLineId`=507 AND `UIMapId` IN (62,63,83,77,198)) OR (`QuestLineId`=5379 AND `UIMapId` IN (249,81,327)) OR (`QuestLineId`=785 AND `UIMapId` IN (249,81,327)) OR (`QuestLineId`=545 AND `UIMapId` IN (249,81,327,71,78)) OR (`QuestLineId`=511 AND `UIMapId` IN (249,71)) OR (`QuestLineId`=290 AND `UIMapId` IN (249,7,199,63,76,85,1,83,77,198,65,71,66,10)) OR (`QuestLineId`=5406 AND `UIMapId` IN (18,465)) OR (`QuestLineId`=565 AND `UIMapId` IN (18,22)) OR (`QuestLineId`=432 AND `UIMapId` IN (18,244,217,21,25,245)) OR (`QuestLineId`=418 AND `UIMapId` IN (18,25,22,26)) OR (`QuestLineId`=199 AND `UIMapId` IN (18,90,21,25,22)) OR (`QuestLineId`=576 AND `UIMapId` IN (81,69,37,78,84)) OR (`QuestLineId`=512 AND `UIMapId` IN (81,69,71,78)) OR (`QuestLineId`=506 AND `UIMapId` IN (81,69,78)) OR (`QuestLineId`=5407 AND `UIMapId` IN (7,199,462,69)) OR (`QuestLineId`=564 AND `UIMapId` IN (7,199,69,88,66,10)) OR (`QuestLineId`=526 AND `UIMapId` IN (7,199,70,64,88,37,66,10,84)) OR (`QuestLineId`=525 AND `UIMapId` IN (7,199,69)) OR (`QuestLineId`=520 AND `UIMapId` IN (7,199,69,65,66)) OR (`QuestLineId`=519 AND `UIMapId` IN (7,199,70,64,65,10)) OR (`QuestLineId`=518 AND `UIMapId` IN (7,199,63,65,10)) OR (`QuestLineId`=509 AND `UIMapId` IN (7,199,63,1,65,461,10)) OR (`QuestLineId`=5499 AND `UIMapId` IN (199,1,57,463,461,10,89,94,110)) OR (`QuestLineId`=5430 AND `UIMapId` IN (199,1,463,10)) OR (`QuestLineId`=1227 AND `UIMapId` IN (199,1,461,10)) OR (`QuestLineId`=563 AND `UIMapId` IN (199,1,463,461,10)) OR (`QuestLineId`=521 AND `UIMapId` IN (199,70,64,69,71)) OR (`QuestLineId`=434 AND `UIMapId` IN (14,25,26)) OR (`QuestLineId`=409 AND `UIMapId` IN (14,244,217,21,25)) OR (`QuestLineId`=390 AND `UIMapId` IN (14,25,26)) OR (`QuestLineId`=516 AND `UIMapId` IN (63,76,85,1,77,65,10)) OR (`QuestLineId`=500 AND `UIMapId` IN (63,76,83,198)) OR (`QuestLineId`=1107 AND `UIMapId` IN (76,85,1,10)) OR (`QuestLineId`=546 AND `UIMapId` IN (76,85,241,1,37,48,10,56,84)) OR (`QuestLineId`=263 AND `UIMapId` IN (76,85,1,10)) OR (`QuestLineId`=260 AND `UIMapId` IN (76,85,1,10)) OR (`QuestLineId`=539 AND `UIMapId` IN (85,1,37,203,10,201,204,205,84)) OR (`QuestLineId`=414 AND `UIMapId` IN (224,50,52,47)) OR (`QuestLineId`=403 AND `UIMapId` IN (224,210,50)) OR (`QuestLineId`=398 AND `UIMapId` IN (224,17,51,42)) OR (`QuestLineId`=294 AND `UIMapId` IN (224,17,42)) OR (`QuestLineId`=60 AND `UIMapId` IN (224,17)) OR (`QuestLineId`=426 AND `UIMapId` IN (49,51,42)) OR (`QuestLineId`=376 AND `UIMapId` IN (1,10)) OR (`QuestLineId`=130 AND `UIMapId` IN (1,10)) OR (`QuestLineId`=206 AND `UIMapId` IN (97,103,23)) OR (`QuestLineId`=396 AND `UIMapId` IN (27,32,36,15,21,25)) OR (`QuestLineId`=386 AND `UIMapId` IN (27,32,36)) OR (`QuestLineId`=1199 AND `UIMapId` IN (467,94,110)) OR (`QuestLineId`=534 AND `UIMapId` IN (64,69,71,78)) OR (`QuestLineId`=926 AND `UIMapId` IN (37,84)) OR (`QuestLineId`=402 AND `UIMapId` IN (37,32,36,15)) OR (`QuestLineId`=262 AND `UIMapId` IN (37,84)) OR (`QuestLineId`=541 AND `UIMapId` IN (203,204,205)) OR (`QuestLineId`=406 AND `UIMapId` IN (22,26,23)) OR (`QuestLineId`=569 AND `UIMapId` IN (95,94,110)) OR (`QuestLineId`=444 AND `UIMapId` IN (95,94)) OR (`QuestLineId`=1325 AND `UIMapId`=2112);
+DELETE FROM `ui_map_quest_line` WHERE (`QuestLineId`=566 AND `UIMapId` IN (47,52,37)) OR (`QuestLineId`=425 AND `UIMapId` IN (47,52,37,17,42)) OR (`QuestLineId`=421 AND `UIMapId` IN (47,84,224,52,37)) OR (`QuestLineId`=5497 AND `UIMapId` IN (84,21,57,89)) OR (`QuestLineId`=5372 AND `UIMapId` IN (84,97,37,103,27,57,89,87)) OR (`QuestLineId`=1000 AND `UIMapId` IN (84,37)) OR (`QuestLineId`=797 AND `UIMapId` IN (84,62,37,63,77)) OR (`QuestLineId`=347 AND `UIMapId` IN (84,37)) OR (`QuestLineId`=240 AND `UIMapId` IN (84,37)) OR (`QuestLineId`=198 AND `UIMapId` IN (84,37)) OR (`QuestLineId`=131 AND `UIMapId` IN (84,37)) OR (`QuestLineId`=1226 AND `UIMapId` IN (18,22,32,21,37,425,25)) OR (`QuestLineId`=5375 AND `UIMapId` IN (81,327,249)) OR (`QuestLineId`=743 AND `UIMapId` IN (81,327,249)) OR (`QuestLineId`=433 AND `UIMapId` IN (51,49,36)) OR (`QuestLineId`=5395 AND `UIMapId` IN (427,27)) OR (`QuestLineId`=517 AND `UIMapId` IN (199,65,63,10)) OR (`QuestLineId`=441 AND `UIMapId` IN (48,241,56,15,27)) OR (`QuestLineId`=514 AND `UIMapId` IN (65,63,1,10,77)) OR (`QuestLineId`=443 AND `UIMapId` IN (241,56)) OR (`QuestLineId`=567 AND `UIMapId` IN (56,27,87)) OR (`QuestLineId`=510 AND `UIMapId` IN (83,62,63,77,80)) OR (`QuestLineId`=171 AND `UIMapId` IN (83,62,80)) OR (`QuestLineId`=5404 AND `UIMapId` IN (97,468)) OR (`QuestLineId`=570 AND `UIMapId`=97) OR (`QuestLineId`=504 AND `UIMapId` IN (97,103,106)) OR (`QuestLineId`=568 AND `UIMapId` IN (57,89)) OR (`QuestLineId`=1295 AND `UIMapId` IN (90,18)) OR (`QuestLineId`=747 AND `UIMapId`=14) OR (`QuestLineId`=5385 AND `UIMapId`=81);
+DELETE FROM `ui_map_quest_line` WHERE (`QuestLineId`=589 AND `UIMapId` IN (87,97,84,57,27,37)) OR (`QuestLineId`=289 AND `UIMapId` IN (52,84,37,224,50,49,17,47,42)) OR (`QuestLineId`=579 AND `UIMapId` IN (84,971)) OR (`QuestLineId`=308 AND `UIMapId` IN (650,641));
+DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=535 AND `QuestLineId` IN (114,103,41,40)) OR (`UIMapId`=89 AND `QuestLineId`=589) OR (`UIMapId`=550 AND `QuestLineId` IN (114,103)) OR (`UIMapId`=2024 AND `QuestLineId` IN (5464,5381,1398,1362,1331,1308)) OR (`UIMapId`=542 AND `QuestLineId`=40) OR (`UIMapId`=534 AND `QuestLineId`=57) OR (`UIMapId`=2200 AND `QuestLineId` IN (5381,1331,1308)) OR (`UIMapId`=543 AND `QuestLineId` IN (114,103)) OR (`UIMapId`=2025 AND `QuestLineId` IN (5538,5511,5464,5462,5381,1416,1413,1398,1362,1333,1331,1308)) OR (`UIMapId`=2022 AND `QuestLineId` IN (5538,5511,5464,5462,5381,1416,1413,1398,1362,1333,1331,1308)) OR (`UIMapId`=2112 AND `QuestLineId` IN (5538,5511,5464,5381,1416,1413,1398,1362,1333,1331,1308)) OR (`UIMapId`=2239 AND `QuestLineId` IN (5381,1308)) OR (`UIMapId`=103 AND `QuestLineId`=589) OR (`UIMapId`=2133 AND `QuestLineId` IN (5538,5511,5464,5462,5381,1416,1413,1398,1362,1333,1331,1308)) OR (`UIMapId`=2151 AND `QuestLineId`=1413) OR (`UIMapId`=525 AND `QuestLineId` IN (114,103)) OR (`UIMapId`=539 AND `QuestLineId` IN (41,40)) OR (`UIMapId`=2023 AND `QuestLineId` IN (5464,5381,1331,1308));
+DELETE FROM `ui_map_quest_line` WHERE (`QuestLineId`=1261 AND `UIMapId` IN (2118,2109)) OR (`QuestLineId`=5536 AND `UIMapId` IN (371,554)) OR (`QuestLineId`=1289 AND `UIMapId` IN (2025,2022,84)) OR (`QuestLineId`=1379 AND `UIMapId`=84);
+DELETE FROM `ui_map_quest_line` WHERE (`UIMapId`=830 AND `QuestLineId`=369) OR (`UIMapId`=882 AND `QuestLineId`=369) OR (`UIMapId`=680 AND `QuestLineId` IN (343,341,340,339,154,153)) OR (`UIMapId`=2022 AND `QuestLineId`=1367) OR (`UIMapId`=1543 AND `QuestLineId`=1065) OR (`UIMapId`=2025 AND `QuestLineId`=1367) OR (`UIMapId`=1525 AND `QuestLineId`=1065) OR (`UIMapId`=831 AND `QuestLineId`=369) OR (`UIMapId`=1536 AND `QuestLineId`=1294) OR (`UIMapId`=1670 AND `QuestLineId` IN (1294,1065)) OR (`UIMapId`=1672 AND `QuestLineId`=1235) OR (`UIMapId`=84 AND `QuestLineId` IN (5511,5399,547));
+DELETE FROM `ui_map_quest_line` WHERE (`QuestLineId`=1289 AND `UIMapId` IN (85,1,76)) OR (`QuestLineId`=860 AND `UIMapId` IN (85,1)) OR (`QuestLineId`=1368 AND `UIMapId` IN (2133,2022,2024,2025)) OR (`QuestLineId`=1367 AND `UIMapId`=2133) OR (`QuestLineId`=1314 AND `UIMapId` IN (2133,2024,2239,2023)) OR (`QuestLineId`=1310 AND `UIMapId` IN (2133,2022,2024,2025,2023)) OR (`QuestLineId`=1303 AND `UIMapId` IN (2133,2022,2025,2023)) OR (`QuestLineId`=5388 AND `UIMapId` IN (942,896));
+INSERT INTO `ui_map_quest_line` (`UIMapId`, `QuestLineId`, `VerifiedBuild`) VALUES
+(371, 5557, 54988),
+(371, 5502, 54988),
+(371, 5500, 54988),
+(371, 5499, 54988),
+(371, 5496, 54988),
+(371, 5495, 54988),
+(371, 5491, 54988),
+(371, 5490, 54988),
+(371, 5489, 54988),
+(371, 560, 54988),
+(371, 559, 54988),
+(371, 558, 54988),
+(371, 555, 54988),
+(371, 554, 54988),
+(371, 553, 54988),
+(371, 290, 54988),
+(379, 5502, 54988),
+(379, 5500, 54988),
+(379, 5499, 54988),
+(379, 5496, 54988),
+(379, 5492, 54988),
+(379, 5491, 54988),
+(379, 561, 54988),
+(379, 560, 54988),
+(379, 554, 54988),
+(379, 553, 54988),
+(379, 290, 54988),
+(390, 5557, 54988),
+(390, 5502, 54988),
+(390, 5500, 54988),
+(390, 5499, 54988),
+(390, 5496, 54988),
+(390, 5493, 54988),
+(390, 5492, 54988),
+(390, 5491, 54988),
+(390, 5489, 54988),
+(390, 562, 54988),
+(390, 561, 54988),
+(390, 560, 54988),
+(390, 558, 54988),
+(390, 290, 54988),
+(422, 5499, 54988),
+(422, 5495, 54988),
+(422, 5493, 54988),
+(422, 5492, 54988),
+(422, 5490, 54988),
+(422, 5489, 54988),
+(422, 562, 54988),
+(422, 561, 54988),
+(422, 559, 54988),
+(422, 558, 54988),
+(422, 290, 54988),
+(116, 537, 54988),
+(116, 536, 54988),
+(116, 529, 54988),
+(116, 528, 54988),
+(554, 5557, 54988),
+(504, 5500, 54988),
+(121, 537, 54988),
+(121, 536, 54988),
+(121, 535, 54988),
+(102, 486, 54988),
+(102, 474, 54988),
+(102, 463, 54988),
+(102, 448, 54988),
+(127, 5389, 54988),
+(127, 538, 54988),
+(127, 535, 54988),
+(127, 529, 54988),
+(125, 5389, 54988),
+(207, 546, 54988),
+(207, 543, 54988),
+(100, 538, 54988),
+(100, 486, 54988),
+(100, 473, 54988),
+(100, 463, 54988),
+(100, 448, 54988),
+(418, 5499, 54988),
+(418, 5495, 54988),
+(418, 5493, 54988),
+(418, 5490, 54988),
+(418, 5489, 54988),
+(418, 562, 54988),
+(418, 559, 54988),
+(418, 558, 54988),
+(105, 488, 54988),
+(105, 474, 54988),
+(105, 463, 54988),
+(118, 5389, 54988),
+(118, 538, 54988),
+(118, 535, 54988),
+(118, 534, 54988),
+(118, 290, 54988),
+(111, 538, 54988),
+(111, 493, 54988),
+(111, 488, 54988),
+(111, 486, 54988),
+(111, 473, 54988),
+(170, 538, 54988),
+(170, 535, 54988),
+(170, 290, 54988),
+(104, 493, 54988),
+(104, 473, 54988),
+(104, 290, 54988),
+(120, 5389, 54988),
+(120, 538, 54988),
+(120, 536, 54988),
+(120, 535, 54988),
+(120, 290, 54988),
+(109, 493, 54988),
+(109, 488, 54988),
+(109, 474, 54988),
+(107, 538, 54988),
+(107, 493, 54988),
+(107, 488, 54988),
+(107, 486, 54988),
+(107, 473, 54988),
+(107, 463, 54988),
+(114, 530, 54988),
+(114, 529, 54988),
+(388, 5502, 54988),
+(388, 5500, 54988),
+(388, 5499, 54988),
+(388, 5496, 54988),
+(388, 5493, 54988),
+(388, 5492, 54988),
+(388, 5491, 54988),
+(388, 562, 54988),
+(388, 561, 54988),
+(388, 560, 54988),
+(117, 528, 54988),
+(115, 538, 54988),
+(115, 537, 54988),
+(115, 536, 54988),
+(115, 530, 54988),
+(115, 529, 54988),
+(174, 546, 54988),
+(174, 543, 54988),
+(123, 534, 54988),
+(123, 530, 54988),
+(123, 529, 54988),
+(108, 538, 54988),
+(108, 493, 54988),
+(108, 488, 54988),
+(108, 486, 54988),
+(108, 473, 54988),
+(108, 448, 54988),
+(108, 290, 54988),
+(119, 538, 54988),
+(119, 534, 54988),
+(119, 530, 54988),
+(376, 5495, 54988),
+(376, 5493, 54988),
+(376, 5490, 54988),
+(376, 5489, 54988),
+(376, 562, 54988),
+(376, 559, 54988),
+(376, 558, 54988),
+(376, 555, 54988),
+(376, 290, 54988),
+(127, 5372, 54988),
+(118, 5372, 54988),
+(371, 5503, 54988),
+(371, 5501, 54988),
+(371, 5497, 54988),
+(418, 5497, 54988),
+(376, 5501, 54988),
+(376, 5497, 54988),
+(379, 5501, 54988),
+(379, 5497, 54988),
+(390, 5503, 54988),
+(390, 5501, 54988),
+(390, 5497, 54988),
+(388, 5501, 54988),
+(388, 5497, 54988),
+(120, 5372, 54988),
+(554, 5503, 54988),
+(504, 5501, 54988),
+(895, 5449, 54988),
+(895, 5448, 54988),
+(895, 5447, 54988),
+(895, 5446, 54988),
+(895, 5443, 54988),
+(895, 5441, 54988),
+(895, 5440, 54988),
+(895, 5437, 54988),
+(895, 5436, 54988),
+(895, 5435, 54988),
+(895, 5434, 54988),
+(895, 5433, 54988),
+(895, 5432, 54988),
+(895, 5431, 54988),
+(895, 5379, 54988),
+(895, 5376, 54988),
+(895, 5375, 54988),
+(895, 5373, 54988),
+(895, 5372, 54988),
+(895, 5371, 54988),
+(895, 1000, 54988),
+(895, 940, 54988),
+(895, 939, 54988),
+(895, 851, 54988),
+(895, 797, 54988),
+(895, 785, 54988),
+(895, 742, 54988),
+(895, 628, 54988),
+(895, 592, 54988),
+(895, 591, 54988),
+(895, 586, 54988),
+(1462, 5376, 54988),
+(1462, 1000, 54988),
+(1462, 940, 54988),
+(942, 5452, 54988),
+(942, 5451, 54988),
+(942, 5450, 54988),
+(942, 5436, 54988),
+(942, 5435, 54988),
+(942, 5371, 54988),
+(942, 851, 54988),
+(942, 794, 54988),
+(942, 740, 54988),
+(942, 738, 54988),
+(942, 591, 54988),
+(942, 582, 54988),
+(942, 577, 54988),
+(680, 5375, 54988),
+(680, 342, 54988),
+(680, 280, 54988),
+(680, 206, 54988),
+(680, 191, 54988),
+(680, 184, 54988),
+(680, 152, 54988),
+(680, 82, 54988),
+(646, 347, 54988),
+(646, 295, 54988),
+(646, 294, 54988),
+(646, 280, 54988),
+(646, 275, 54988),
+(646, 206, 54988),
+(646, 171, 54988),
+(646, 152, 54988),
+(646, 144, 54988),
+(646, 131, 54988),
+(862, 5423, 54988),
+(862, 5411, 54988),
+(862, 5410, 54988),
+(862, 5409, 54988),
+(862, 5379, 54988),
+(862, 939, 54988),
+(862, 851, 54988);
+
+INSERT INTO `ui_map_quest_line` (`UIMapId`, `QuestLineId`, `VerifiedBuild`) VALUES
+(862, 785, 54988),
+(862, 628, 54988),
+(641, 5375, 54988),
+(641, 342, 54988),
+(641, 206, 54988),
+(641, 191, 54988),
+(641, 184, 54988),
+(641, 171, 54988),
+(641, 152, 54988),
+(641, 144, 54988),
+(650, 5375, 54988),
+(650, 342, 54988),
+(650, 294, 54988),
+(650, 280, 54988),
+(650, 206, 54988),
+(650, 191, 54988),
+(650, 184, 54988),
+(650, 171, 54988),
+(650, 144, 54988),
+(650, 131, 54988),
+(863, 5414, 54988),
+(863, 5413, 54988),
+(863, 5411, 54988),
+(790, 82, 54988),
+(125, 5372, 54988),
+(630, 347, 54988),
+(630, 295, 54988),
+(630, 294, 54988),
+(630, 280, 54988),
+(630, 275, 54988),
+(630, 227, 54988),
+(630, 226, 54988),
+(630, 206, 54988),
+(630, 171, 54988),
+(630, 152, 54988),
+(630, 144, 54988),
+(630, 131, 54988),
+(630, 82, 54988),
+(885, 365, 54988),
+(896, 5449, 54988),
+(896, 5448, 54988),
+(896, 5447, 54988),
+(896, 5446, 54988),
+(896, 5443, 54988),
+(896, 5441, 54988),
+(896, 5440, 54988),
+(896, 5437, 54988),
+(896, 5435, 54988),
+(896, 5433, 54988),
+(896, 5432, 54988),
+(896, 5376, 54988),
+(896, 5373, 54988),
+(896, 5372, 54988),
+(896, 5371, 54988),
+(896, 1000, 54988),
+(896, 940, 54988),
+(896, 851, 54988),
+(896, 592, 54988),
+(896, 591, 54988),
+(535, 140, 54988),
+(535, 105, 54988),
+(535, 59, 54988),
+(535, 39, 54988),
+(535, 34, 54988),
+(535, 29, 54988),
+(535, 27, 54988),
+(542, 59, 54988),
+(542, 50, 54988),
+(542, 34, 54988),
+(539, 140, 54988),
+(539, 105, 54988),
+(539, 59, 54988),
+(539, 50, 54988),
+(539, 39, 54988),
+(539, 34, 54988),
+(525, 105, 54988),
+(627, 295, 54988),
+(627, 294, 54988),
+(627, 280, 54988),
+(627, 275, 54988),
+(627, 206, 54988),
+(627, 171, 54988),
+(627, 152, 54988),
+(627, 144, 54988),
+(627, 131, 54988),
+(882, 365, 54988),
+(534, 60, 54988),
+(864, 5423, 54988),
+(864, 5414, 54988),
+(864, 5413, 54988),
+(864, 5411, 54988),
+(864, 851, 54988),
+(864, 628, 54988),
+(543, 140, 54988),
+(543, 52, 54988),
+(550, 105, 54988),
+(550, 29, 54988),
+(550, 27, 54988),
+(1355, 5375, 54988),
+(1355, 5366, 54988),
+(1355, 1070, 54988),
+(1355, 926, 54988),
+(634, 5375, 54988),
+(634, 342, 54988),
+(634, 294, 54988),
+(634, 280, 54988),
+(634, 206, 54988),
+(634, 152, 54988),
+(634, 144, 54988),
+(634, 131, 54988),
+(830, 365, 54988),
+(1169, 5372, 54988),
+(1462, 5384, 54988),
+(1462, 941, 54988),
+(895, 5384, 54988),
+(895, 941, 54988),
+(895, 625, 54988),
+(863, 5429, 54988),
+(863, 5419, 54988),
+(863, 5418, 54988),
+(863, 5416, 54988),
+(863, 5391, 54988),
+(863, 5390, 54988),
+(863, 5389, 54988),
+(863, 320, 54988),
+(862, 5427, 54988),
+(862, 5424, 54988),
+(862, 5421, 54988),
+(862, 5402, 54988),
+(862, 5401, 54988),
+(862, 5400, 54988),
+(862, 5391, 54988),
+(862, 5390, 54988),
+(862, 5389, 54988),
+(862, 5384, 54988),
+(862, 941, 54988),
+(862, 856, 54988),
+(862, 747, 54988),
+(862, 625, 54988),
+(862, 320, 54988),
+(627, 130, 54988),
+(646, 130, 54988),
+(896, 5384, 54988),
+(896, 941, 54988),
+(896, 625, 54988),
+(680, 5385, 54988),
+(634, 5385, 54988),
+(634, 307, 54988),
+(634, 130, 54988),
+(641, 5385, 54988),
+(641, 307, 54988),
+(630, 130, 54988),
+(864, 5429, 54988),
+(864, 5427, 54988),
+(864, 5426, 54988),
+(864, 5425, 54988),
+(864, 5424, 54988),
+(864, 5422, 54988),
+(864, 5421, 54988),
+(864, 5419, 54988),
+(864, 5418, 54988),
+(864, 5416, 54988),
+(864, 5391, 54988),
+(864, 5390, 54988),
+(864, 5389, 54988),
+(864, 320, 54988),
+(1355, 5385, 54988),
+(1355, 5369, 54988),
+(1355, 1107, 54988),
+(535, 32, 54988),
+(535, 30, 54988),
+(535, 28, 54988),
+(550, 30, 54988),
+(550, 28, 54988),
+(525, 139, 54988),
+(525, 58, 54988),
+(525, 57, 54988),
+(525, 1, 54988),
+(543, 139, 54988),
+(543, 58, 54988),
+(543, 57, 54988),
+(543, 1, 54988),
+(650, 5385, 54988),
+(650, 307, 54988),
+(650, 130, 54988),
+(371, 289, 54988),
+(422, 289, 54988),
+(379, 289, 54988),
+(630, 238, 54988),
+(646, 238, 54988),
+(862, 612, 54988),
+(376, 289, 54988),
+(120, 589, 54988),
+(120, 289, 54988),
+(125, 589, 54988),
+(650, 238, 54988),
+(680, 238, 54988),
+(117, 1108, 54988),
+(108, 289, 54988),
+(634, 238, 54988),
+(371, 5494, 54988),
+(371, 550, 54988),
+(127, 589, 54988),
+(120, 612, 54988),
+(125, 612, 54988),
+(118, 1108, 54988),
+(118, 589, 54988),
+(118, 289, 54988),
+(127, 612, 54988),
+(1169, 589, 54988),
+(379, 5494, 54988),
+(379, 550, 54988),
+(118, 612, 54988),
+(104, 289, 54988),
+(390, 289, 54988),
+(895, 589, 54988),
+(1409, 5369, 54988),
+(1409, 5366, 54988),
+(1409, 1107, 54988),
+(1409, 1070, 54988),
+(1409, 926, 54988),
+(1727, 5369, 54988),
+(1727, 1107, 54988),
+(118, 1035, 54988),
+(23, 5453, 54988),
+(124, 5453, 54988),
+(179, 572, 54988),
+(194, 5439, 54988),
+(1602, 1035, 54988),
+(174, 571, 54988),
+(207, 571, 54988),
+(202, 572, 54988),
+(378, 573, 54988),
+(630, 150, 54988),
+(634, 150, 54988),
+(634, 90, 54988),
+(672, 206, 54988),
+(672, 90, 54988),
+(680, 90, 54988),
+(1525, 1257, 54988),
+(1525, 1223, 54988),
+(1161, 5372, 54988),
+(1161, 589, 54988),
+(1670, 1257, 54988),
+(1165, 5391, 54988),
+(1165, 5390, 54988),
+(1165, 5389, 54988),
+(1165, 5379, 54988),
+(1165, 856, 54988),
+(1165, 851, 54988);
+
+INSERT INTO `ui_map_quest_line` (`UIMapId`, `QuestLineId`, `VerifiedBuild`) VALUES
+(1165, 785, 54988),
+(1525, 1235, 54988),
+(1525, 1137, 54988),
+(1525, 1010, 54988),
+(862, 5388, 54988),
+(862, 617, 54988),
+(1533, 1235, 54988),
+(2025, 1325, 54988),
+(2022, 1325, 54988),
+(1670, 1235, 54988),
+(1670, 1137, 54988),
+(1670, 1010, 54988),
+(2133, 1325, 54988),
+(1161, 5379, 54988),
+(1161, 5376, 54988),
+(1161, 5375, 54988),
+(1161, 5371, 54988),
+(1161, 1000, 54988),
+(1161, 940, 54988),
+(1161, 939, 54988),
+(1161, 851, 54988),
+(1161, 797, 54988),
+(1161, 785, 54988),
+(1161, 628, 54988),
+(1670, 1295, 54988),
+(1536, 1295, 54988),
+(1165, 5384, 54988),
+(1165, 941, 54988),
+(1165, 747, 54988),
+(895, 5388, 54988),
+(460, 5396, 54988),
+(62, 5389, 54988),
+(62, 856, 54988),
+(62, 612, 54988),
+(62, 542, 54988),
+(62, 538, 54988),
+(62, 508, 54988),
+(62, 507, 54988),
+(249, 5379, 54988),
+(249, 785, 54988),
+(249, 612, 54988),
+(249, 545, 54988),
+(249, 511, 54988),
+(249, 290, 54988),
+(18, 5406, 54988),
+(18, 5389, 54988),
+(18, 612, 54988),
+(18, 565, 54988),
+(18, 432, 54988),
+(18, 418, 54988),
+(18, 199, 54988),
+(81, 5379, 54988),
+(81, 785, 54988),
+(81, 612, 54988),
+(81, 576, 54988),
+(81, 545, 54988),
+(81, 512, 54988),
+(81, 506, 54988),
+(7, 5407, 54988),
+(7, 5389, 54988),
+(7, 612, 54988),
+(7, 564, 54988),
+(7, 526, 54988),
+(7, 525, 54988),
+(7, 520, 54988),
+(7, 519, 54988),
+(7, 518, 54988),
+(7, 509, 54988),
+(7, 290, 54988),
+(199, 5499, 54988),
+(199, 5430, 54988),
+(199, 5407, 54988),
+(199, 5389, 54988),
+(199, 1227, 54988),
+(199, 612, 54988),
+(199, 564, 54988),
+(199, 563, 54988),
+(199, 526, 54988),
+(199, 525, 54988),
+(199, 521, 54988),
+(199, 520, 54988),
+(199, 519, 54988),
+(199, 518, 54988),
+(199, 509, 54988),
+(199, 290, 54988),
+(14, 434, 54988),
+(14, 409, 54988),
+(14, 390, 54988),
+(63, 542, 54988),
+(63, 518, 54988),
+(63, 516, 54988),
+(63, 509, 54988),
+(63, 507, 54988),
+(63, 500, 54988),
+(63, 290, 54988),
+(76, 1107, 54988),
+(76, 546, 54988),
+(76, 542, 54988),
+(76, 516, 54988),
+(76, 500, 54988),
+(76, 290, 54988),
+(76, 263, 54988),
+(76, 260, 54988),
+(90, 5389, 54988),
+(90, 612, 54988),
+(90, 199, 54988),
+(85, 5389, 54988),
+(85, 1107, 54988),
+(85, 612, 54988),
+(85, 546, 54988),
+(85, 539, 54988),
+(85, 516, 54988),
+(85, 290, 54988),
+(85, 263, 54988),
+(85, 260, 54988),
+(241, 546, 54988),
+(70, 526, 54988),
+(70, 521, 54988),
+(70, 519, 54988),
+(462, 5407, 54988),
+(224, 414, 54988),
+(224, 403, 54988),
+(224, 398, 54988),
+(224, 294, 54988),
+(224, 60, 54988),
+(17, 398, 54988),
+(17, 294, 54988),
+(17, 60, 54988),
+(49, 426, 54988),
+(1, 5499, 54988),
+(1, 5430, 54988),
+(1, 5389, 54988),
+(1, 1227, 54988),
+(1, 1107, 54988),
+(1, 612, 54988),
+(1, 563, 54988),
+(1, 546, 54988),
+(1, 539, 54988),
+(1, 516, 54988),
+(1, 509, 54988),
+(1, 376, 54988),
+(1, 290, 54988),
+(1, 263, 54988),
+(1, 260, 54988),
+(1, 130, 54988),
+(97, 206, 54988),
+(27, 396, 54988),
+(27, 386, 54988),
+(327, 5379, 54988),
+(327, 785, 54988),
+(327, 612, 54988),
+(327, 545, 54988),
+(83, 542, 54988),
+(83, 538, 54988),
+(83, 508, 54988),
+(83, 507, 54988),
+(83, 500, 54988),
+(83, 290, 54988),
+(467, 1199, 54988),
+(77, 542, 54988),
+(77, 516, 54988),
+(77, 508, 54988),
+(77, 507, 54988),
+(77, 290, 54988),
+(64, 534, 54988),
+(64, 526, 54988),
+(64, 521, 54988),
+(64, 519, 54988),
+(69, 5407, 54988),
+(69, 576, 54988),
+(69, 564, 54988),
+(69, 534, 54988),
+(69, 525, 54988),
+(69, 521, 54988),
+(69, 520, 54988),
+(69, 512, 54988),
+(69, 506, 54988),
+(88, 5389, 54988),
+(88, 612, 54988),
+(88, 564, 54988),
+(88, 526, 54988),
+(198, 542, 54988),
+(198, 508, 54988),
+(198, 507, 54988),
+(198, 500, 54988),
+(198, 290, 54988),
+(51, 426, 54988),
+(51, 398, 54988),
+(37, 926, 54988),
+(37, 576, 54988),
+(37, 546, 54988),
+(37, 539, 54988),
+(37, 526, 54988),
+(37, 402, 54988),
+(37, 262, 54988),
+(48, 546, 54988),
+(32, 402, 54988),
+(32, 396, 54988),
+(32, 386, 54988),
+(65, 520, 54988),
+(65, 519, 54988),
+(65, 518, 54988),
+(65, 516, 54988),
+(65, 509, 54988),
+(65, 290, 54988),
+(36, 402, 54988),
+(36, 396, 54988),
+(36, 386, 54988),
+(244, 432, 54988),
+(244, 409, 54988),
+(57, 5499, 54988),
+(57, 5396, 54988),
+(103, 206, 54988),
+(217, 432, 54988),
+(217, 409, 54988),
+(71, 545, 54988),
+(71, 534, 54988),
+(71, 521, 54988),
+(71, 512, 54988),
+(71, 511, 54988),
+(71, 290, 54988),
+(463, 5499, 54988),
+(463, 5430, 54988),
+(463, 563, 54988),
+(210, 403, 54988),
+(465, 5406, 54988),
+(66, 5389, 54988),
+(66, 612, 54988),
+(66, 564, 54988),
+(66, 526, 54988),
+(66, 520, 54988),
+(66, 290, 54988),
+(461, 5499, 54988),
+(461, 1227, 54988),
+(461, 563, 54988),
+(461, 509, 54988),
+(15, 402, 54988),
+(15, 396, 54988),
+(203, 541, 54988),
+(203, 539, 54988),
+(21, 5389, 54988),
+(21, 612, 54988),
+(21, 432, 54988),
+(21, 409, 54988),
+(21, 396, 54988),
+(21, 199, 54988),
+(10, 5499, 54988),
+(10, 5430, 54988),
+(10, 5389, 54988),
+(10, 1227, 54988);
+
+INSERT INTO `ui_map_quest_line` (`UIMapId`, `QuestLineId`, `VerifiedBuild`) VALUES
+(10, 1107, 54988),
+(10, 612, 54988),
+(10, 564, 54988),
+(10, 563, 54988),
+(10, 546, 54988),
+(10, 539, 54988),
+(10, 526, 54988),
+(10, 519, 54988),
+(10, 518, 54988),
+(10, 516, 54988),
+(10, 509, 54988),
+(10, 376, 54988),
+(10, 290, 54988),
+(10, 263, 54988),
+(10, 260, 54988),
+(10, 130, 54988),
+(42, 426, 54988),
+(42, 398, 54988),
+(42, 294, 54988),
+(50, 414, 54988),
+(50, 403, 54988),
+(25, 434, 54988),
+(25, 432, 54988),
+(25, 418, 54988),
+(25, 409, 54988),
+(25, 396, 54988),
+(25, 390, 54988),
+(25, 199, 54988),
+(22, 5389, 54988),
+(22, 612, 54988),
+(22, 565, 54988),
+(22, 418, 54988),
+(22, 406, 54988),
+(22, 199, 54988),
+(201, 539, 54988),
+(26, 434, 54988),
+(26, 418, 54988),
+(26, 406, 54988),
+(26, 390, 54988),
+(23, 406, 54988),
+(23, 206, 54988),
+(89, 5499, 54988),
+(80, 538, 54988),
+(52, 414, 54988),
+(95, 569, 54988),
+(95, 444, 54988),
+(47, 414, 54988),
+(94, 5499, 54988),
+(94, 5389, 54988),
+(94, 1199, 54988),
+(94, 612, 54988),
+(94, 569, 54988),
+(94, 444, 54988),
+(56, 546, 54988),
+(110, 5499, 54988),
+(110, 5389, 54988),
+(110, 1199, 54988),
+(110, 612, 54988),
+(110, 569, 54988),
+(2112, 1325, 54988),
+(204, 541, 54988),
+(204, 539, 54988),
+(78, 576, 54988),
+(78, 545, 54988),
+(78, 534, 54988),
+(78, 512, 54988),
+(78, 506, 54988),
+(205, 541, 54988),
+(205, 539, 54988),
+(245, 432, 54988),
+(84, 926, 54988),
+(84, 576, 54988),
+(84, 546, 54988),
+(84, 539, 54988),
+(84, 526, 54988),
+(84, 262, 54988),
+(47, 566, 54988),
+(47, 425, 54988),
+(47, 421, 54988),
+(84, 5497, 54988),
+(84, 5372, 54988),
+(84, 1000, 54988),
+(84, 797, 54988),
+(84, 421, 54988),
+(84, 347, 54988),
+(84, 240, 54988),
+(84, 198, 54988),
+(84, 131, 54988),
+(18, 1226, 54988),
+(81, 5375, 54988),
+(81, 743, 54988),
+(51, 433, 54988),
+(427, 5395, 54988),
+(199, 517, 54988),
+(224, 421, 54988),
+(22, 1226, 54988),
+(52, 566, 54988),
+(52, 425, 54988),
+(52, 421, 54988),
+(32, 1226, 54988),
+(21, 5497, 54988),
+(21, 1226, 54988),
+(48, 441, 54988),
+(327, 5375, 54988),
+(327, 743, 54988),
+(65, 517, 54988),
+(65, 514, 54988),
+(241, 443, 54988),
+(241, 441, 54988),
+(56, 567, 54988),
+(56, 443, 54988),
+(56, 441, 54988),
+(83, 510, 54988),
+(83, 171, 54988),
+(62, 797, 54988),
+(62, 510, 54988),
+(62, 171, 54988),
+(97, 5404, 54988),
+(97, 5372, 54988),
+(97, 570, 54988),
+(97, 504, 54988),
+(37, 5372, 54988),
+(37, 1226, 54988),
+(37, 1000, 54988),
+(37, 797, 54988),
+(37, 566, 54988),
+(37, 425, 54988),
+(37, 421, 54988),
+(37, 347, 54988),
+(37, 240, 54988),
+(37, 198, 54988),
+(37, 131, 54988),
+(425, 1226, 54988),
+(63, 797, 54988),
+(63, 517, 54988),
+(63, 514, 54988),
+(63, 510, 54988),
+(103, 5372, 54988),
+(103, 504, 54988),
+(106, 504, 54988),
+(15, 441, 54988),
+(27, 5395, 54988),
+(27, 5372, 54988),
+(27, 567, 54988),
+(27, 441, 54988),
+(25, 1226, 54988),
+(1, 514, 54988),
+(17, 425, 54988),
+(57, 5497, 54988),
+(57, 5372, 54988),
+(57, 568, 54988),
+(249, 5375, 54988),
+(249, 743, 54988),
+(468, 5404, 54988),
+(89, 5497, 54988),
+(89, 5372, 54988),
+(89, 568, 54988),
+(42, 425, 54988),
+(49, 433, 54988),
+(90, 1295, 54988),
+(10, 517, 54988),
+(10, 514, 54988),
+(18, 1295, 54988),
+(36, 433, 54988),
+(14, 747, 54988),
+(81, 5385, 54988),
+(87, 5372, 54988),
+(87, 567, 54988),
+(77, 797, 54988),
+(77, 514, 54988),
+(77, 510, 54988),
+(80, 510, 54988),
+(80, 171, 54988),
+(87, 589, 54988),
+(97, 589, 54988),
+(52, 289, 54988),
+(84, 589, 54988),
+(84, 289, 54988),
+(57, 589, 54988),
+(84, 579, 54988),
+(650, 308, 54988),
+(27, 589, 54988),
+(641, 308, 54988),
+(37, 589, 54988),
+(37, 289, 54988),
+(224, 289, 54988),
+(50, 289, 54988),
+(49, 289, 54988),
+(17, 289, 54988),
+(47, 289, 54988),
+(42, 289, 54988),
+(971, 579, 54988),
+(535, 114, 54988),
+(535, 103, 54988),
+(535, 41, 54988),
+(535, 40, 54988),
+(89, 589, 54988),
+(550, 114, 54988),
+(550, 103, 54988),
+(2024, 5464, 54988),
+(2024, 5381, 54988),
+(2024, 1398, 54988),
+(2024, 1362, 54988),
+(2024, 1331, 54988),
+(2024, 1308, 54988),
+(542, 40, 54988),
+(534, 57, 54988),
+(2200, 5381, 54988),
+(2200, 1331, 54988),
+(2200, 1308, 54988),
+(543, 114, 54988),
+(543, 103, 54988),
+(2025, 5538, 54988),
+(2025, 5511, 54988),
+(2025, 5464, 54988),
+(2025, 5462, 54988),
+(2025, 5381, 54988),
+(2025, 1416, 54988),
+(2025, 1413, 54988),
+(2025, 1398, 54988),
+(2025, 1362, 54988),
+(2025, 1333, 54988),
+(2025, 1331, 54988),
+(2025, 1308, 54988),
+(2022, 5538, 54988),
+(2022, 5511, 54988),
+(2022, 5464, 54988),
+(2022, 5462, 54988),
+(2022, 5381, 54988),
+(2022, 1416, 54988),
+(2022, 1413, 54988),
+(2022, 1398, 54988),
+(2022, 1362, 54988),
+(2022, 1333, 54988),
+(2022, 1331, 54988),
+(2022, 1308, 54988),
+(2112, 5538, 54988),
+(2112, 5511, 54988),
+(2112, 5464, 54988),
+(2112, 5381, 54988),
+(2112, 1416, 54988),
+(2112, 1413, 54988),
+(2112, 1398, 54988),
+(2112, 1362, 54988),
+(2112, 1333, 54988),
+(2112, 1331, 54988),
+(2112, 1308, 54988),
+(2239, 5381, 54988),
+(2239, 1308, 54988),
+(103, 589, 54988);
+
+INSERT INTO `ui_map_quest_line` (`UIMapId`, `QuestLineId`, `VerifiedBuild`) VALUES
+(2133, 5538, 54988),
+(2133, 5511, 54988),
+(2133, 5464, 54988),
+(2133, 5462, 54988),
+(2133, 5381, 54988),
+(2133, 1416, 54988),
+(2133, 1413, 54988),
+(2133, 1398, 54988),
+(2133, 1362, 54988),
+(2133, 1333, 54988),
+(2133, 1331, 54988),
+(2133, 1308, 54988),
+(2151, 1413, 54988),
+(525, 114, 54988),
+(525, 103, 54988),
+(539, 41, 54988),
+(539, 40, 54988),
+(2023, 5464, 54988),
+(2023, 5381, 54988),
+(2023, 1331, 54988),
+(2023, 1308, 54988),
+(2118, 1261, 54988),
+(371, 5536, 54988),
+(554, 5536, 54988),
+(2025, 1289, 54988),
+(2022, 1289, 54988),
+(2109, 1261, 54988),
+(84, 1379, 54988),
+(84, 1289, 54988),
+(830, 369, 54988),
+(882, 369, 54988),
+(680, 343, 54988),
+(680, 341, 54988),
+(680, 340, 54988),
+(680, 339, 54988),
+(680, 154, 54988),
+(680, 153, 54988),
+(2022, 1367, 54988),
+(1543, 1065, 54988),
+(2025, 1367, 54988),
+(1525, 1065, 54988),
+(831, 369, 54988),
+(1536, 1294, 54988),
+(1670, 1294, 54988),
+(1670, 1065, 54988),
+(1672, 1235, 54988),
+(84, 5511, 54988),
+(84, 5399, 54988),
+(84, 547, 54988),
+(85, 1289, 54988),
+(85, 860, 54988),
+(2133, 1368, 54988),
+(2133, 1367, 54988),
+(2133, 1314, 54988),
+(2133, 1310, 54988),
+(2133, 1303, 54988),
+(2022, 1368, 54988),
+(2022, 1310, 54988),
+(2022, 1303, 54988),
+(2024, 1368, 54988),
+(2024, 1314, 54988),
+(2024, 1310, 54988),
+(1, 1289, 54988),
+(1, 860, 54988),
+(2239, 1314, 54988),
+(76, 1289, 54988),
+(2025, 1368, 54988),
+(2025, 1310, 54988),
+(2025, 1303, 54988),
+(2023, 1314, 54988),
+(2023, 1310, 54988),
+(2023, 1303, 54988),
+(942, 5388, 54988),
+(896, 5388, 54988);
+
+DELETE FROM `ui_map_quest` WHERE (`UIMapId`=371 AND `QuestId`=30134);
+DELETE FROM `ui_map_quest` WHERE (`UIMapId`=1536 AND `QuestId` IN (59867,57301));
+INSERT INTO `ui_map_quest` (`UIMapId`, `QuestId`, `VerifiedBuild`) VALUES
+(371, 30134, 54988), -- Wild Things
+(1536, 59867, 54988), -- WANTED: Appraiser Vix
+(1536, 57301, 54988); -- Callous Concoctions
diff --git a/src/server/game/DataStores/DB2Stores.cpp b/src/server/game/DataStores/DB2Stores.cpp
index f3552765c43..22e4fd2496d 100644
--- a/src/server/game/DataStores/DB2Stores.cpp
+++ b/src/server/game/DataStores/DB2Stores.cpp
@@ -1467,8 +1467,13 @@ uint32 DB2Manager::LoadStores(std::string const& dataPath, LocaleConstant defaul
}
}
- for (QuestLineXQuestEntry const* questLineQuest : sQuestLineXQuestStore)
- _questsByQuestLine[questLineQuest->QuestLineID].push_back(questLineQuest);
+ {
+ for (QuestLineXQuestEntry const* questLineQuest : sQuestLineXQuestStore)
+ _questsByQuestLine[questLineQuest->QuestLineID].push_back(questLineQuest);
+
+ for (auto& [questLineId, questLineQuests] : _questsByQuestLine)
+ std::ranges::sort(questLineQuests, std::ranges::less(), &QuestLineXQuestEntry::OrderIndex);
+ }
for (QuestPackageItemEntry const* questPackageItem : sQuestPackageItemStore)
{
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index a684806b88c..fca4e4ff71b 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -3518,7 +3518,7 @@ void ObjectMgr::LoadVehicleAccessories()
if (!result)
{
- TC_LOG_INFO("server.loading", ">> Loaded 0 Vehicle Accessories in {} ms", GetMSTimeDiffToNow(oldMSTime));
+ TC_LOG_INFO("server.loading", ">> Loaded 0 vehicle accessories. DB table `vehicle_accessory` is empty.");
return;
}
@@ -11060,8 +11060,6 @@ void ObjectMgr::LoadSceneTemplates()
return;
}
- uint32 count = 0;
-
do
{
Field* fields = templates->Fetch();
@@ -11076,7 +11074,7 @@ void ObjectMgr::LoadSceneTemplates()
} while (templates->NextRow());
- TC_LOG_INFO("server.loading", ">> Loaded {} scene templates in {} ms.", count, GetMSTimeDiffToNow(oldMSTime));
+ TC_LOG_INFO("server.loading", ">> Loaded {} scene templates in {} ms.", _sceneTemplateStore.size(), GetMSTimeDiffToNow(oldMSTime));
}
void ObjectMgr::LoadPlayerChoices()
@@ -11544,6 +11542,106 @@ void ObjectMgr::LoadPlayerChoicesLocale()
}
}
+void ObjectMgr::LoadUiMapQuestLines()
+{
+ uint32 oldMSTime = getMSTime();
+
+ // need for reload case
+ _uiMapQuestLinesStore.clear();
+
+ // 0 1
+ QueryResult result = WorldDatabase.Query("SELECT UiMapId, QuestLineId FROM ui_map_quest_line");
+
+ if (!result)
+ {
+ TC_LOG_INFO("server.loading", ">> Loaded 0 questlines for UIMaps. DB table `ui_map_quest_line` is empty!");
+ return;
+ }
+
+ uint32 count = 0;
+
+ do
+ {
+ Field* fields = result->Fetch();
+
+ uint32 uiMapId = fields[0].GetUInt32();
+ uint32 questLineId = fields[1].GetUInt32();
+
+ if (!sUiMapStore.HasRecord(uiMapId))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `ui_map_quest_line` references non-existing UIMap {}, skipped", uiMapId);
+ continue;
+ }
+
+ if (!sDB2Manager.GetQuestsForQuestLine(questLineId))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `ui_map_quest_line` references empty or non-existing questline {}, skipped", questLineId);
+ continue;
+ }
+
+ _uiMapQuestLinesStore[uiMapId].push_back(questLineId);
+ ++count;
+
+ } while (result->NextRow());
+
+ TC_LOG_INFO("server.loading", ">> Loaded {} UiMap questlines definitions in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
+}
+
+std::vector<uint32> const* ObjectMgr::GetUiMapQuestLinesList(uint32 uiMapId) const
+{
+ return Trinity::Containers::MapGetValuePtr(_uiMapQuestLinesStore, uiMapId);
+}
+
+void ObjectMgr::LoadUiMapQuests()
+{
+ uint32 oldMSTime = getMSTime();
+
+ // need for reload case
+ _uiMapQuestsStore.clear();
+
+ // 0 1
+ QueryResult result = WorldDatabase.Query("SELECT UiMapId, QuestId FROM ui_map_quest");
+
+ if (!result)
+ {
+ TC_LOG_INFO("server.loading", ">> Loaded 0 quests for UIMaps. DB table `ui_map_quest` is empty!");
+ return;
+ }
+
+ uint32 count = 0;
+
+ do
+ {
+ Field* fields = result->Fetch();
+
+ uint32 uiMapId = fields[0].GetUInt32();
+ uint32 questId = fields[1].GetUInt32();
+
+ if (!sUiMapStore.HasRecord(uiMapId))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `ui_map_quest` references non-existing UIMap {}, skipped", uiMapId);
+ continue;
+ }
+
+ if (!GetQuestTemplate(questId))
+ {
+ TC_LOG_ERROR("sql.sql", "Table `ui_map_quest` references non-existing quest {}, skipped", questId);
+ continue;
+ }
+
+ _uiMapQuestsStore[uiMapId].push_back(questId);
+ ++count;
+
+ } while (result->NextRow());
+
+ TC_LOG_INFO("server.loading", ">> Loaded {} UiMap quests definitions in {} ms", count, GetMSTimeDiffToNow(oldMSTime));
+}
+
+std::vector<uint32> const* ObjectMgr::GetUiMapQuestsList(uint32 uiMapId) const
+{
+ return Trinity::Containers::MapGetValuePtr(_uiMapQuestsStore, uiMapId);
+}
+
void ObjectMgr::LoadJumpChargeParams()
{
uint32 oldMSTime = getMSTime();
diff --git a/src/server/game/Globals/ObjectMgr.h b/src/server/game/Globals/ObjectMgr.h
index 9a0423daa8c..32318209a39 100644
--- a/src/server/game/Globals/ObjectMgr.h
+++ b/src/server/game/Globals/ObjectMgr.h
@@ -530,6 +530,8 @@ typedef std::unordered_map<uint32, QuestObjectivesLocale> QuestObjectivesLocaleC
typedef std::unordered_map<uint32, QuestOfferRewardLocale> QuestOfferRewardLocaleContainer;
typedef std::unordered_map<uint32, QuestRequestItemsLocale> QuestRequestItemsLocaleContainer;
typedef std::unordered_map<uint32, PageTextLocale> PageTextLocaleContainer;
+typedef std::unordered_map<uint32, std::vector<uint32>> UiMapQuestLinesMap;
+typedef std::unordered_map<uint32, std::vector<uint32>> UiMapQuestsMap;
typedef std::unordered_map<uint32, VehicleSeatAddon> VehicleSeatAddonContainer;
struct GossipMenuItemsLocale
@@ -1283,6 +1285,9 @@ class TC_GAME_API ObjectMgr
QuestPOIData const* GetQuestPOIData(int32 questId);
+ std::vector<uint32> const* GetUiMapQuestLinesList(uint32 uiMapId) const;
+ std::vector<uint32> const* GetUiMapQuestsList(uint32 uiMapId) const;
+
VehicleTemplate const* GetVehicleTemplate(Vehicle* veh) const;
VehicleAccessoryList const* GetVehicleAccessoryList(Vehicle* veh) const;
@@ -1420,6 +1425,9 @@ class TC_GAME_API ObjectMgr
void LoadPlayerChoices();
void LoadPlayerChoicesLocale();
+ void LoadUiMapQuestLines();
+ void LoadUiMapQuests();
+
void LoadJumpChargeParams();
void LoadPhaseNames();
@@ -1957,6 +1965,9 @@ class TC_GAME_API ObjectMgr
SceneTemplateContainer _sceneTemplateStore;
+ UiMapQuestLinesMap _uiMapQuestLinesStore;
+ UiMapQuestsMap _uiMapQuestsStore;
+
std::unordered_map<int32, JumpChargeParams> _jumpChargeParams;
PhaseNameContainer _phaseNameStore;
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp
index 9a95bd79374..b6636b1e246 100644
--- a/src/server/game/Handlers/QuestHandler.cpp
+++ b/src/server/game/Handlers/QuestHandler.cpp
@@ -826,3 +826,38 @@ void WorldSession::HandlePlayerChoiceResponse(WorldPackets::Quest::ChoiceRespons
_player->GetReputationMgr().ModifyReputation(sFactionStore.AssertEntry(faction.Id), faction.Quantity);
}
}
+
+void WorldSession::HandleUiMapQuestLinesRequest(WorldPackets::Quest::UiMapQuestLinesRequest& uiMapQuestLinesRequest)
+{
+ UiMapEntry const* uiMap = sUiMapStore.LookupEntry(uiMapQuestLinesRequest.UiMapID);
+ if (!uiMap)
+ return;
+
+ WorldPackets::Quest::UiMapQuestLinesResponse response;
+ response.UiMapID = uiMap->ID;
+
+ if (std::vector<uint32> const* questLines = sObjectMgr->GetUiMapQuestLinesList(uiMap->ID))
+ {
+ for (uint32 questLineId : *questLines)
+ {
+ std::vector<QuestLineXQuestEntry const*> const* questLineQuests = sDB2Manager.GetQuestsForQuestLine(questLineId);
+ if (!questLineQuests)
+ continue;
+
+ for (QuestLineXQuestEntry const* questLineQuest : *questLineQuests)
+ if (Quest const* quest = sObjectMgr->GetQuestTemplate(questLineQuest->QuestID))
+ if (_player->CanTakeQuest(quest, false))
+ response.QuestLineXQuestIDs.push_back(questLineQuest->ID);
+ }
+ }
+
+ if (std::vector<uint32> const* quests = sObjectMgr->GetUiMapQuestsList(uiMap->ID))
+ {
+ for (uint32 questId : *quests)
+ if (Quest const* quest = sObjectMgr->GetQuestTemplate(questId))
+ if (_player->CanTakeQuest(quest, false))
+ response.QuestIDs.push_back(questId);
+ }
+
+ SendPacket(response.Write());
+}
diff --git a/src/server/game/Server/Packets/QuestPackets.cpp b/src/server/game/Server/Packets/QuestPackets.cpp
index 3b63196b7d1..6c8b9517a78 100644
--- a/src/server/game/Server/Packets/QuestPackets.cpp
+++ b/src/server/game/Server/Packets/QuestPackets.cpp
@@ -858,4 +858,24 @@ void ChoiceResponse::Read()
_worldPacket >> ResponseIdentifier;
IsReroll = _worldPacket.ReadBit();
}
+
+WorldPacket const* UiMapQuestLinesResponse::Write()
+{
+ _worldPacket << int32(UiMapID);
+ _worldPacket << uint32(QuestLineXQuestIDs.size());
+ _worldPacket << uint32(QuestIDs.size());
+
+ for (uint32 const& questLineQuestID : QuestLineXQuestIDs)
+ _worldPacket << uint32(questLineQuestID);
+
+ for (uint32 const& questID : QuestIDs)
+ _worldPacket << uint32(questID);
+
+ return &_worldPacket;
+}
+
+void UiMapQuestLinesRequest::Read()
+{
+ _worldPacket >> UiMapID;
+}
}
diff --git a/src/server/game/Server/Packets/QuestPackets.h b/src/server/game/Server/Packets/QuestPackets.h
index 2e295a44b9b..2fb56be4c3f 100644
--- a/src/server/game/Server/Packets/QuestPackets.h
+++ b/src/server/game/Server/Packets/QuestPackets.h
@@ -788,6 +788,28 @@ namespace WorldPackets
int32 ResponseIdentifier = 0;
bool IsReroll = false;
};
+
+ class UiMapQuestLinesResponse final : public ServerPacket
+ {
+ public:
+ UiMapQuestLinesResponse() : ServerPacket(SMSG_UI_MAP_QUEST_LINES_RESPONSE, 4) { }
+
+ WorldPacket const* Write() override;
+
+ int32 UiMapID = 0;
+ std::vector<uint32> QuestLineXQuestIDs;
+ std::vector<uint32> QuestIDs;
+ };
+
+ class UiMapQuestLinesRequest final : public ClientPacket
+ {
+ public:
+ UiMapQuestLinesRequest(WorldPacket&& packet) : ClientPacket(CMSG_UI_MAP_QUEST_LINES_REQUEST, std::move(packet)) { }
+
+ void Read() override;
+
+ int32 UiMapID = 0;
+ };
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 82e261ff5bf..29bc0765015 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -981,7 +981,7 @@ void OpcodeTable::InitializeClientOpcodes()
DEFINE_HANDLER(CMSG_TRANSMOGRIFY_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTransmogrifyItems);
DEFINE_HANDLER(CMSG_TURN_IN_PETITION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTurnInPetition);
DEFINE_HANDLER(CMSG_TUTORIAL, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleTutorialFlag);
- DEFINE_HANDLER(CMSG_UI_MAP_QUEST_LINES_REQUEST, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
+ DEFINE_HANDLER(CMSG_UI_MAP_QUEST_LINES_REQUEST, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUiMapQuestLinesRequest);
DEFINE_HANDLER(CMSG_UNACCEPT_TRADE, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleUnacceptTradeOpcode);
DEFINE_HANDLER(CMSG_UNDELETE_CHARACTER, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleCharUndeleteOpcode);
DEFINE_HANDLER(CMSG_UNLEARN_SKILL, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleUnlearnSkillOpcode);
@@ -2161,7 +2161,7 @@ void OpcodeTable::InitializeServerOpcodes()
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TRIGGER_MOVIE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TURN_IN_PETITION_RESULT, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_TUTORIAL_FLAGS, STATUS_NEVER, CONNECTION_TYPE_REALM);
- DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_MAP_QUEST_LINES_RESPONSE, STATUS_UNHANDLED, CONNECTION_TYPE_REALM);
+ DEFINE_SERVER_OPCODE_HANDLER(SMSG_UI_MAP_QUEST_LINES_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_CHARACTER_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNDELETE_COOLDOWN_STATUS_RESPONSE, STATUS_NEVER, CONNECTION_TYPE_REALM);
DEFINE_SERVER_OPCODE_HANDLER(SMSG_UNLEARNED_SPELLS, STATUS_NEVER, CONNECTION_TYPE_INSTANCE);
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 1b61d60b027..1c3052a3f8a 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -674,6 +674,7 @@ namespace WorldPackets
class PushQuestToParty;
class RequestWorldQuestUpdate;
class ChoiceResponse;
+ class UiMapQuestLinesRequest;
}
namespace RaF
@@ -1566,6 +1567,7 @@ class TC_GAME_API WorldSession
void HandleQuestPushResult(WorldPackets::Quest::QuestPushResult& packet);
void HandleRequestWorldQuestUpdate(WorldPackets::Quest::RequestWorldQuestUpdate& packet);
void HandlePlayerChoiceResponse(WorldPackets::Quest::ChoiceResponse& choiceResponse);
+ void HandleUiMapQuestLinesRequest(WorldPackets::Quest::UiMapQuestLinesRequest& uiMapQuestLinesRequest);
void HandleChatMessageOpcode(WorldPackets::Chat::ChatMessage& chatMessage);
void HandleChatMessageWhisperOpcode(WorldPackets::Chat::ChatMessageWhisper& chatMessageWhisper);
diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp
index 5321f6c476b..2ec553204c7 100644
--- a/src/server/game/World/World.cpp
+++ b/src/server/game/World/World.cpp
@@ -2197,6 +2197,13 @@ bool World::SetInitialWorldSettings()
TC_LOG_INFO("server.loading", "Loading Player Choices Locales...");
sObjectMgr->LoadPlayerChoicesLocale();
}
+
+ TC_LOG_INFO("server.loading", "Loading UIMap questlines...");
+ sObjectMgr->LoadUiMapQuestLines();
+
+ TC_LOG_INFO("server.loading", "Loading UIMap quests...");
+ sObjectMgr->LoadUiMapQuests();
+
TC_LOG_INFO("server.loading", "Loading Jump Charge Params...");
sObjectMgr->LoadJumpChargeParams();