aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/MiscHandler.cpp
diff options
context:
space:
mode:
authorIntel <chemicstry@gmail.com>2014-12-28 22:55:53 +0200
committerIntel <chemicstry@gmail.com>2014-12-28 22:55:53 +0200
commita782515246d5583a4c0e5cc8834133d425920b56 (patch)
treef181c34ad982c8f63b3772f2ddf0b90a4986740f /src/server/game/Handlers/MiscHandler.cpp
parent0dec23b43ad8692189b511bb114ef3b772678fe3 (diff)
Core/Quests: Updated Quest System to new Format
All quest requirements are now in quest_objectives table quest_template table contains _ONLY_ WDB data and must not be modified Currently supported objectives are MONSTER, GAMEOBJECT, ITEM, TALKTO, CURRENCY, REPUTATION, MONEY, PLAYERKILLS, AREATRIGGER
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))
{