aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWyrserth <wyrserth@protonmail.com>2019-07-10 02:58:30 +0200
committerWyrserth <wyrserth@protonmail.com>2019-07-10 02:58:30 +0200
commit7f63c504d5cf5a9ad2f3d77ff2c67ca9d7586dd5 (patch)
tree555799f53e252378b72fde8ff3af5879b8eb6a09
parent4dbdc22b3b5770ff8252ea057bf7a7a92dcb31cb (diff)
DB/Quest: restore ExclusiveGroup data for breadcrumb quests, as they're mutually exclusive.
Also restore PrevQuestId/NextQuestId error logs involving breadcrumb quests. Special cases must be handled via conditions.
-rw-r--r--sql/updates/world/3.3.5/2019_07_10_00_world.sql39
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp4
2 files changed, 43 insertions, 0 deletions
diff --git a/sql/updates/world/3.3.5/2019_07_10_00_world.sql b/sql/updates/world/3.3.5/2019_07_10_00_world.sql
new file mode 100644
index 00000000000..b4d4536fcbc
--- /dev/null
+++ b/sql/updates/world/3.3.5/2019_07_10_00_world.sql
@@ -0,0 +1,39 @@
+--
+UPDATE `quest_template_addon` SET `BreadcrumbForQuestId`=0 WHERE `ID`=12181;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=19 AND `SourceEntry`=12181;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(19, 0, 12181, 0, 0, 47, 0, 12189, 1, 0, 0, 0, 0, "", "Quest 'Give it a Name' can only be taken if quest 'Imbeciles Abound!' is not taken/complete/rewarded AND"),
+(19, 0, 12181, 0, 0, 47, 0, 12188, 1, 0, 0, 0, 0, "", "Quest 'Give it a Name' can only be taken if quest 'The Forsaken Blight and You: How Not to Die' is not taken/complete/rewarded");
+
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=10068 WHERE `ID` IN (10068, 10069, 10070, 10071, 10072, 10073);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=1522 WHERE `ID` IN (1522, 1523, 2983, 2984);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=1528 WHERE `ID` IN (1528, 1529, 2985, 2986);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=4736 WHERE `ID` IN (4736, 4737, 4738, 4739);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=4965 WHERE `ID` IN (4965, 4967, 4968, 4969);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=5066 WHERE `ID` IN (5066, 5090, 5091, 10373);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=5093 WHERE `ID` IN (5093, 5094, 5095, 10374);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=3763 WHERE `ID` IN (3763, 3789, 3790, 10520);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=235 WHERE `ID` IN (235, 742, 6382);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=9500 WHERE `ID` IN (9500, 9502, 10490);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=9547 WHERE `ID` IN (9547, 9551, 10491);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=2260 WHERE `ID` IN (2260, 2298, 2300);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=936 WHERE `ID` IN (936, 3762, 3784);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=1698 WHERE `ID` IN (1698, 10371);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=5249 WHERE `ID` IN (5249, 5250);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=6611 WHERE `ID` IN (6611, 6612);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=10891 WHERE `ID` IN (10891, 10892);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=11177 WHERE `ID` IN (11177, 11225);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=11302 WHERE `ID` IN (11302, 11312);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=787 WHERE `ID` IN (787, 4641);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=2996 WHERE `ID` IN (2996, 3001);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=3787 WHERE `ID` IN (3787, 3788);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=8275 WHERE `ID` IN (8275, 8276);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=11995 WHERE `ID` IN (11995, 12440);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=12161 WHERE `ID` IN (12161, 12425);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=12182 WHERE `ID` IN (12182, 12189);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=13226 WHERE `ID` IN (13226, 13227);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=1478 WHERE `ID` IN (1478, 10789);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=12208 WHERE `ID` IN (12208, 12210);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=11481 WHERE `ID` IN (11481, 11482);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=1506 WHERE `ID` IN (1506, 10790);
+UPDATE `quest_template_addon` SET `ExclusiveGroup`=1685 WHERE `ID` IN (1685, 1715);
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 33407fcc97c..950dacbcac2 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -5052,6 +5052,8 @@ void ObjectMgr::LoadQuests()
auto prevQuestItr = _questTemplates.find(prevQuestId);
if (prevQuestItr == _questTemplates.end())
TC_LOG_ERROR("sql.sql", "Quest %u has PrevQuestId %i, but no such quest", qinfo->GetQuestId(), qinfo->_prevQuestId);
+ else if (prevQuestItr->second._breadcrumbForQuestId)
+ TC_LOG_ERROR("sql.sql", "Quest %u should not be unlocked by breadcrumb quest %u", qinfo->_id, prevQuestId);
}
if (uint32 nextQuestId = qinfo->_nextQuestId)
@@ -5070,6 +5072,8 @@ void ObjectMgr::LoadQuests()
TC_LOG_ERROR("sql.sql", "Quest %u is a breadcrumb for quest %u, but no such quest exists", qinfo->_id, breadcrumbForQuestId);
qinfo->_breadcrumbForQuestId = 0;
}
+ if (qinfo->_nextQuestId)
+ TC_LOG_ERROR("sql.sql", "Quest %u is a breadcrumb, should not unlock quest %u", qinfo->_id, qinfo->_nextQuestId);
}
if (qinfo->_exclusiveGroup)