diff options
| author | Shauren <shauren.trinity@gmail.com> | 2016-01-19 20:12:09 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2016-01-19 20:12:09 +0100 |
| commit | 3cd3184394068a2737556a03cdc0be8722397347 (patch) | |
| tree | 5a593ddc04adfb95a5681fdf1718a97ab2b686a8 /src/server/game/Handlers/MiscHandler.cpp | |
| parent | a50b1d09240fee0650b0a22b0456d41c4a45abe4 (diff) | |
Core/Quests: Implemented new quest objective types
Diffstat (limited to 'src/server/game/Handlers/MiscHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 23 |
1 files changed, 13 insertions, 10 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index e43a7e2af0c..a51b61050ee 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -485,22 +485,25 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPackets::Misc::AreaTrigger& pack if (player->IsAlive()) { - if (uint32 questId = sObjectMgr->GetQuestForAreaTrigger(packet.AreaTriggerID)) + if (std::unordered_set<uint32> const* quests = sObjectMgr->GetQuestsForAreaTrigger(packet.AreaTriggerID)) { - Quest const* qInfo = sObjectMgr->GetQuestTemplate(questId); - if (qInfo && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) + for (uint32 questId : *quests) { - for (uint8 j = 0; j < qInfo->Objectives.size(); ++j) + Quest const* qInfo = sObjectMgr->GetQuestTemplate(questId); + if (qInfo && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) { - if (qInfo->Objectives[j].Type == QUEST_OBJECTIVE_AREATRIGGER) + for (uint8 j = 0; j < qInfo->Objectives.size(); ++j) { - player->SetQuestObjectiveData(qInfo, j, int32(true)); - break; + if (qInfo->Objectives[j].Type == QUEST_OBJECTIVE_AREATRIGGER) + { + player->SetQuestObjectiveData(qInfo, j, int32(true)); + break; + } } - } - if (player->CanCompleteQuest(questId)) - player->CompleteQuest(questId); + if (player->CanCompleteQuest(questId)) + player->CompleteQuest(questId); + } } } } |
