From 1905c36353e43d0cd5f5cfabbd33c657c6f1899a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Francesco=20Borz=C3=AC?= Date: Mon, 28 Jan 2019 20:23:59 +0100 Subject: [PATCH] fix(quest): fix some quest chains + align NextQuestID with TC (#1351) --- .../pending_db_world/rev_1548367133880932410.sql | 13 +++++++++++++ src/server/game/Globals/ObjectMgr.cpp | 9 +++------ src/server/game/Quests/QuestDef.cpp | 2 +- src/server/game/Quests/QuestDef.h | 4 ++-- 4 files changed, 19 insertions(+), 9 deletions(-) create mode 100644 data/sql/updates/pending_db_world/rev_1548367133880932410.sql diff --git a/data/sql/updates/pending_db_world/rev_1548367133880932410.sql b/data/sql/updates/pending_db_world/rev_1548367133880932410.sql new file mode 100644 index 000000000..b2138d496 --- /dev/null +++ b/data/sql/updates/pending_db_world/rev_1548367133880932410.sql @@ -0,0 +1,13 @@ +INSERT INTO `version_db_world` (`sql_rev`) VALUES ('1548367133880932410'); + +-- original fix by Killyana +UPDATE `quest_template_addon` SET `NextQuestID`=0 WHERE `id` IN (415, 618, 8554); +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`= 19 AND `SourceEntry`= 619; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(19, 0, 619, 0, 0, 9, 0, 618, 0, 0, 0, 0, 0, '', "Enticing Negolash"), +(19, 0, 619, 0, 1, 9, 0, 8554, 0, 0, 0, 0, 0, '', "Enticing Negolash"); +UPDATE `quest_template_addon` SET `PrevQuestID`=12294, `NextQuestID`=12225, `ExclusiveGroup`=-12222 WHERE `id` IN (12222); +UPDATE `quest_template_addon` SET `PrevQuestID`=12294, `NextQuestID`=12225, `ExclusiveGroup`=-12222 WHERE `id` IN (12223); + +-- original fix by ariel- +ALTER TABLE `quest_template_addon` CHANGE `NextQuestID` `NextQuestID` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT 0; diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index ab39dc7e1..1755e456f 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -4528,16 +4528,13 @@ void ObjectMgr::LoadQuests() if (qinfo->NextQuestId) { - QuestMap::iterator qNextItr = _questTemplates.find(abs(qinfo->GetNextQuestId())); + QuestMap::iterator qNextItr = _questTemplates.find(qinfo->GetNextQuestId()); if (qNextItr == _questTemplates.end()) { - sLog->outErrorDb("Quest %d has NextQuestId %i, but no such quest", qinfo->GetQuestId(), qinfo->GetNextQuestId()); + sLog->outErrorDb("Quest %d has NextQuestId %u, but no such quest", qinfo->GetQuestId(), qinfo->GetNextQuestId()); } else - { - int32 signedQuestId = qinfo->NextQuestId < 0 ? -int32(qinfo->GetQuestId()) : int32(qinfo->GetQuestId()); - qNextItr->second->prevQuests.push_back(signedQuestId); - } + qNextItr->second->prevQuests.push_back(static_cast(qinfo->GetQuestId())); } if (qinfo->ExclusiveGroup) diff --git a/src/server/game/Quests/QuestDef.cpp b/src/server/game/Quests/QuestDef.cpp index 8093961ee..1f2a9d75d 100644 --- a/src/server/game/Quests/QuestDef.cpp +++ b/src/server/game/Quests/QuestDef.cpp @@ -154,7 +154,7 @@ void Quest::LoadQuestTemplateAddon(Field* fields) RequiredClasses = fields[2].GetUInt32(); SourceSpellid = fields[3].GetUInt32(); PrevQuestId = fields[4].GetInt32(); - NextQuestId = fields[5].GetInt32(); + NextQuestId = fields[5].GetUInt32(); ExclusiveGroup = fields[6].GetInt32(); RewardMailTemplateId = fields[7].GetUInt32(); RewardMailDelay = fields[8].GetUInt32(); diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h index 8c86dbc32..039141b27 100644 --- a/src/server/game/Quests/QuestDef.h +++ b/src/server/game/Quests/QuestDef.h @@ -230,7 +230,7 @@ class Quest uint32 GetSuggestedPlayers() const { return SuggestedPlayers; } uint32 GetTimeAllowed() const { return TimeAllowed; } int32 GetPrevQuestId() const { return PrevQuestId; } - int32 GetNextQuestId() const { return NextQuestId; } + uint32 GetNextQuestId() const { return NextQuestId; } int32 GetExclusiveGroup() const { return ExclusiveGroup; } uint32 GetNextQuestInChain() const { return RewardNextQuest; } uint32 GetCharTitleId() const { return RewardTitleId; } @@ -371,7 +371,7 @@ class Quest uint32 RequiredClasses = 0; uint32 SourceSpellid = 0; int32 PrevQuestId = 0; - int32 NextQuestId = 0; + uint32 NextQuestId = 0; int32 ExclusiveGroup = 0; uint32 RewardMailTemplateId = 0; uint32 RewardMailDelay = 0;