diff options
author | MitchesD <majklprofik@seznam.cz> | 2015-11-06 12:35:21 +0100 |
---|---|---|
committer | MitchesD <majklprofik@seznam.cz> | 2015-11-06 12:35:21 +0100 |
commit | dd58e56f840bb5e0a3b9c4a9bef0d59edba123a3 (patch) | |
tree | 965845ebaa0ef88296f366d4feb58b10c2e55d43 | |
parent | 040b098aef5625645dc37d0f112cd24eb715fa43 (diff) |
Core/Player: Fix not being able to do seasonal quests(if already done in the past)
(cherry picked from commit 1ef1d42d145c18579a7e7ca15cebb38485bc0cff)
(cherry picked from commit 56b27711a4db7b56c5e6246426c89cd99e8c8cd4)
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a1acbb9d7aa..9567c9287c6 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -15310,6 +15310,16 @@ bool Player::GetQuestRewardStatus(uint32 quest_id) const Quest const* qInfo = sObjectMgr->GetQuestTemplate(quest_id); if (qInfo) { + if (qInfo->IsSeasonal() && !qInfo->IsRepeatable()) + { + uint16 eventId = sGameEventMgr->GetEventIdForQuest(qInfo); + if (m_seasonalquests.find(eventId) != m_seasonalquests.end()) + return m_seasonalquests.find(eventId)->second.find(quest_id) != m_seasonalquests.find(eventId)->second.end(); + + return false; + } + + // for repeatable quests: rewarded field is set after first reward only to prevent getting XP more than once if (!qInfo->IsRepeatable()) return m_RewardedQuests.find(quest_id) != m_RewardedQuests.end(); @@ -15328,8 +15338,17 @@ QuestStatus Player::GetQuestStatus(uint32 quest_id) const return itr->second.Status; if (Quest const* qInfo = sObjectMgr->GetQuestTemplate(quest_id)) + { + if (qInfo->IsSeasonal() && !qInfo->IsRepeatable()) + { + uint16 eventId = sGameEventMgr->GetEventIdForQuest(qInfo); + if (m_seasonalquests.find(eventId) == m_seasonalquests.end() || m_seasonalquests.find(eventId)->second.find(quest_id) == m_seasonalquests.find(eventId)->second.end()) + return QUEST_STATUS_NONE; + } + if (!qInfo->IsRepeatable() && m_RewardedQuests.find(quest_id) != m_RewardedQuests.end()) return QUEST_STATUS_REWARDED; + } } return QUEST_STATUS_NONE; } |