aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMachiavelli <machiavelli.trinity@gmail.com>2011-01-06 17:33:40 +0100
committerMachiavelli <machiavelli.trinity@gmail.com>2011-01-06 17:33:40 +0100
commit26c91be2d37b004b8ebba726e6cd712c8adecd16 (patch)
treec4631f4836f389457cc9a80ff6f94980ea0ac9b3 /src
parentc617f1f85c20e9c25913b079330a73a3b95e61c8 (diff)
Core/Quests: Better way to fix the problem affected in previous commit
closes #36
Diffstat (limited to 'src')
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp14
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);