aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/MiscHandler.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Handlers/MiscHandler.cpp')
-rw-r--r--src/server/game/Handlers/MiscHandler.cpp21
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))
{