aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorariel- <ariel-@users.noreply.github.com>2017-04-09 18:43:35 -0300
committerfunjoker <funjoker109@gmail.com>2020-04-27 12:25:52 +0200
commit9e945615bc9967cc1f49c801c708cf5881cd8de9 (patch)
tree47eabaaac3192db51363f0fef538605f33ea7b18 /src
parent041cdcf83349cbe045a1aba49408e85d5e221fab (diff)
Core/Quest: fix RewardNextQuest being used to condition previous quests in chain
(cherry picked from commit 214b8e53c5598695915c1392702e059d79cfc260)
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Entities/Player/Player.cpp36
-rw-r--r--src/server/game/Entities/Player/Player.h1
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp6
-rw-r--r--src/server/game/Quests/QuestDef.h1
4 files changed, 4 insertions, 40 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 958d636f70c..be4dfa08e24 100644
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -15209,7 +15209,7 @@ bool Player::CanSeeStartQuest(Quest const* quest)
if (!DisableMgr::IsDisabledFor(DISABLE_TYPE_QUEST, quest->GetQuestId(), this) && SatisfyQuestClass(quest, false) && SatisfyQuestRace(quest, false) &&
SatisfyQuestSkill(quest, false) && SatisfyQuestExclusiveGroup(quest, false) && SatisfyQuestReputation(quest, false) &&
SatisfyQuestDependentQuests(quest, false) && SatisfyQuestNextChain(quest, false) &&
- SatisfyQuestPrevChain(quest, false) && SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) &&
+ SatisfyQuestDay(quest, false) && SatisfyQuestWeek(quest, false) &&
SatisfyQuestMonth(quest, false) && SatisfyQuestSeasonal(quest, false))
{
return int32(getLevel() + sWorld->getIntConfig(CONFIG_QUEST_HIGH_LEVEL_HIDE_DIFF)) >= GetQuestMinLevel(quest);
@@ -15225,7 +15225,7 @@ bool Player::CanTakeQuest(Quest const* quest, bool msg)
&& SatisfyQuestClass(quest, msg) && SatisfyQuestRace(quest, msg) && SatisfyQuestLevel(quest, msg)
&& SatisfyQuestSkill(quest, msg) && SatisfyQuestReputation(quest, msg)
&& SatisfyQuestDependentQuests(quest, msg) && SatisfyQuestTimed(quest, msg)
- && SatisfyQuestNextChain(quest, msg) && SatisfyQuestPrevChain(quest, msg)
+ && SatisfyQuestNextChain(quest, msg)
&& SatisfyQuestDay(quest, msg) && SatisfyQuestWeek(quest, msg)
&& SatisfyQuestMonth(quest, msg) && SatisfyQuestSeasonal(quest, msg)
&& SatisfyQuestConditions(quest, msg);
@@ -16386,38 +16386,6 @@ bool Player::SatisfyQuestNextChain(Quest const* qInfo, bool msg) const
return true;
}
-bool Player::SatisfyQuestPrevChain(Quest const* qInfo, bool msg)
-{
- // No previous quest in chain
- if (qInfo->PrevChainQuests.empty())
- return true;
-
- for (uint32 prevQuestId : qInfo->PrevChainQuests)
- {
- auto itr = m_QuestStatus.find(prevQuestId);
-
- // If any of the previous quests in chain active, return false
- if (itr != m_QuestStatus.end() && itr->second.Status != QUEST_STATUS_NONE)
- {
- if (msg)
- {
- SendCanTakeQuestResponse(QUEST_ERR_NONE);
- TC_LOG_DEBUG("misc", "Player::SatisfyQuestNextChain: Sent QUEST_ERR_NONE (QuestID: %u) because player '%s' (%s) already did or started next quest in chain.",
- qInfo->GetQuestId(), GetName().c_str(), GetGUID().ToString().c_str());
- }
- return false;
- }
-
- // check for all quests further down the chain
- // only necessary if there are quest chains with more than one quest that can be skipped
- //if (!SatisfyQuestPrevChain(prevId, msg))
- // return false;
- }
-
- // No previous quest in chain active
- return true;
-}
-
bool Player::SatisfyQuestDay(Quest const* qInfo, bool /*msg*/) const
{
if (!qInfo->IsDaily() && !qInfo->IsDFQuest())
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index cd43d319960..9f56b7f91b5 100644
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1353,7 +1353,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
bool SatisfyQuestTimed(Quest const* qInfo, bool msg) const;
bool SatisfyQuestExclusiveGroup(Quest const* qInfo, bool msg) const;
bool SatisfyQuestNextChain(Quest const* qInfo, bool msg) const;
- bool SatisfyQuestPrevChain(Quest const* qInfo, bool msg);
bool SatisfyQuestDay(Quest const* qInfo, bool msg) const;
bool SatisfyQuestWeek(Quest const* qInfo, bool msg) const;
bool SatisfyQuestMonth(Quest const* qInfo, bool msg) const;
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 4ab04447914..57922dd84eb 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -4529,8 +4529,6 @@ void ObjectMgr::LoadQuests()
qinfo->GetQuestId(), qinfo->_nextQuestInChain, qinfo->_nextQuestInChain);
qinfo->_nextQuestInChain = 0;
}
- else
- qNextItr->second->PrevChainQuests.push_back(qinfo->GetQuestId());
}
for (uint8 j = 0; j < QUEST_REWARD_CURRENCY_COUNT; ++j)
@@ -4617,9 +4615,9 @@ void ObjectMgr::LoadQuests()
if (qinfo->_nextQuestID)
{
- auto qNextItr = _questTemplates.find(qinfo->GetNextQuestId());
+ auto qNextItr = _questTemplates.find(qinfo->_nextQuestID);
if (qNextItr == _questTemplates.end())
- TC_LOG_ERROR("sql.sql", "Quest %d has NextQuestId %u, but no such quest", qinfo->GetQuestId(), qinfo->GetNextQuestId());
+ TC_LOG_ERROR("sql.sql", "Quest %d has NextQuestId %u, but no such quest", qinfo->GetQuestId(), qinfo->_nextQuestID);
else
qNextItr->second->DependentPreviousQuests.push_back(qinfo->GetQuestId());
}
diff --git a/src/server/game/Quests/QuestDef.h b/src/server/game/Quests/QuestDef.h
index 2023a4de8e8..44347222711 100644
--- a/src/server/game/Quests/QuestDef.h
+++ b/src/server/game/Quests/QuestDef.h
@@ -497,7 +497,6 @@ class TC_GAME_API Quest
void BuildQuestRewards(WorldPackets::Quest::QuestRewards& rewards, Player* player) const;
std::vector<uint32> DependentPreviousQuests;
- std::vector<uint32> PrevChainQuests;
WorldPacket QueryData[TOTAL_LOCALES];
private: