From 26c91be2d37b004b8ebba726e6cd712c8adecd16 Mon Sep 17 00:00:00 2001 From: Machiavelli Date: Thu, 6 Jan 2011 17:33:40 +0100 Subject: Core/Quests: Better way to fix the problem affected in previous commit closes #36 --- src/server/game/Entities/Player/Player.cpp | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) (limited to 'src') 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); -- cgit v1.2.3