diff options
| author | Intel <chemicstry@gmail.com> | 2014-12-28 22:55:53 +0200 |
|---|---|---|
| committer | Intel <chemicstry@gmail.com> | 2014-12-28 22:55:53 +0200 |
| commit | a782515246d5583a4c0e5cc8834133d425920b56 (patch) | |
| tree | f181c34ad982c8f63b3772f2ddf0b90a4986740f /src/server/game/Handlers/MiscHandler.cpp | |
| parent | 0dec23b43ad8692189b511bb114ef3b772678fe3 (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.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)) { |
