diff options
Diffstat (limited to 'src/server/game/Handlers/MiscHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/MiscHandler.cpp | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/server/game/Handlers/MiscHandler.cpp b/src/server/game/Handlers/MiscHandler.cpp index e97b7f1c247..c27def4a82c 100644 --- a/src/server/game/Handlers/MiscHandler.cpp +++ b/src/server/game/Handlers/MiscHandler.cpp @@ -922,9 +922,26 @@ void WorldSession::HandleAreaTriggerOpcode(WorldPacket& recvData) return; if (player->IsAlive()) + { if (uint32 questId = sObjectMgr->GetQuestForAreaTrigger(triggerId)) - if (player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) - player->AreaExploredOrEventHappens(questId); + { + Quest const* qInfo = sObjectMgr->GetQuestTemplate(questId); + if (qInfo && player->GetQuestStatus(questId) == QUEST_STATUS_INCOMPLETE) + { + for (uint8 j = 0; j < qInfo->Objectives.size(); ++j) + { + if (qInfo->Objectives[j].Type == QUEST_OBJECTIVE_AREATRIGGER) + { + player->SetQuestObjectiveData(qInfo, j, int32(true)); + break; + } + } + + if (player->CanCompleteQuest(questId)) + player->CompleteQuest(questId); + } + } + } if (sObjectMgr->IsTavernAreaTrigger(triggerId)) { |
