diff options
author | Machiavelli <machiavelli.trinity@gmail.com> | 2011-01-06 17:33:40 +0100 |
---|---|---|
committer | Machiavelli <machiavelli.trinity@gmail.com> | 2011-01-06 17:33:40 +0100 |
commit | 26c91be2d37b004b8ebba726e6cd712c8adecd16 (patch) | |
tree | c4631f4836f389457cc9a80ff6f94980ea0ac9b3 /src | |
parent | c617f1f85c20e9c25913b079330a73a3b95e61c8 (diff) |
Core/Quests: Better way to fix the problem affected in previous commit
closes #36
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Entities/Player/Player.cpp | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 9df71dff847..5618bf57d3b 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14661,13 +14661,9 @@ void Player::RewardQuest(Quest const *pQuest, uint32 reward, Object* questGiver, } else if (pQuest->IsWeekly()) SetWeeklyQuestStatus(quest_id); - if (!pQuest->IsRepeatable()) - { - m_RewardedQuests.insert(quest_id); - m_RewardedQuestsSave[quest_id] = true; - } - else - RemoveActiveQuest(quest_id); + RemoveActiveQuest(quest_id); + m_RewardedQuests.insert(quest_id); + m_RewardedQuestsSave[quest_id] = true; if (announce) SendQuestReward(pQuest, XP, questGiver); @@ -15039,8 +15035,10 @@ bool Player::SatisfyQuestNextChain(Quest const* qInfo, bool msg) if (!nextQuest) return true; + Quest const* Nquest = sObjectMgr->GetQuestTemplate(nextQuest); + // next quest in chain already started or completed - if (m_QuestStatus.find(nextQuest) != m_QuestStatus.end() || m_RewardedQuests.find(nextQuest) != m_RewardedQuests.end()) + if (m_QuestStatus.find(nextQuest) != m_QuestStatus.end() || (!(qInfo->IsRepeatable() && Nquest->IsRepeatable()) && m_RewardedQuests.find(nextQuest) != m_RewardedQuests.end())) { if (msg) SendCanTakeQuestResponse(INVALIDREASON_DONT_HAVE_REQ); |