diff options
| author | Traesh <Traesh@users.noreply.github.com> | 2017-12-04 17:35:37 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2017-12-04 17:35:37 +0100 |
| commit | 422ad436c70e3f2f0c67794b3b902d3b398689c0 (patch) | |
| tree | 154f03ffce0eed410edc25b4349c3927b81ffc93 /src/server/game/Handlers/QuestHandler.cpp | |
| parent | a6bdb75d0b275989f159841032de8512a3cde374 (diff) | |
Core/Scripts: Added new QuestScript hooks (#20950)
* OnQuestStatusChange and OnQuestObjectiveChange
Diffstat (limited to 'src/server/game/Handlers/QuestHandler.cpp')
| -rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index 36b6831ac71..fedd4b4f072 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -436,7 +436,10 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemove if (!_player->TakeQuestSourceItem(questId, true)) return; // can't un-equip some items, reject quest cancel - if (Quest const* quest = sObjectMgr->GetQuestTemplate(questId)) + Quest const* quest = sObjectMgr->GetQuestTemplate(questId); + QuestStatus oldStatus = _player->GetQuestStatus(questId); + + if (quest) { if (quest->HasSpecialFlag(QUEST_SPECIAL_FLAGS_TIMED)) _player->RemoveTimedQuest(questId); @@ -446,6 +449,7 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemove _player->pvpInfo.IsHostile = _player->pvpInfo.IsInHostileArea || _player->HasPvPForcingQuest(); _player->UpdatePvPState(); } + } _player->TakeQuestSourceItem(questId, true); // remove quest src item from player @@ -467,6 +471,9 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemove } sScriptMgr->OnQuestStatusChange(_player, questId); + + if (quest) + sScriptMgr->OnQuestStatusChange(_player, quest, oldStatus, QUEST_STATUS_NONE); } _player->SetQuestSlot(packet.Entry, 0); |
