aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Handlers/QuestHandler.cpp
diff options
context:
space:
mode:
authorTraesh <Traesh@users.noreply.github.com>2017-12-04 17:35:37 +0100
committerShauren <shauren.trinity@gmail.com>2017-12-04 17:35:37 +0100
commit422ad436c70e3f2f0c67794b3b902d3b398689c0 (patch)
tree154f03ffce0eed410edc25b4349c3927b81ffc93 /src/server/game/Handlers/QuestHandler.cpp
parenta6bdb75d0b275989f159841032de8512a3cde374 (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.cpp9
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);