diff options
author | Rochet2 <rochet2@post.com> | 2016-09-09 22:11:36 +0300 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-02-26 15:36:01 +0100 |
commit | 117b45d76883244c3452be175faa2d4dcd722390 (patch) | |
tree | 7d8dc71fd8eab74e65158f6c228558a4da961bf0 /src | |
parent | 9710c808d718f8e89a5487160c55b46e9a006998 (diff) |
Core/Scripts: Enhance quest status hook by making it catch more status changes (#17865)
(cherry picked from commit c52566a8881bdcd1cc33279e1a10621648cb664e)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 6 | ||||
-rw-r--r-- | src/server/game/Handlers/QuestHandler.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 4 | ||||
-rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 4 | ||||
-rw-r--r-- | src/server/game/Spells/SpellEffects.cpp | 2 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_quest.cpp | 2 |
6 files changed, 15 insertions, 5 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 2e8c08a0246..421c4f85168 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -14864,6 +14864,8 @@ void Player::AddQuest(Quest const* quest, Object* questGiver) // add to Quest Tracker CharacterDatabase.Execute(stmt); } + + sScriptMgr->OnQuestStatusChange(this, quest_id); } void Player::CompleteQuest(uint32 quest_id) @@ -15204,6 +15206,8 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver, //lets remove flag for delayed teleports SetCanDelayTeleport(false); + + sScriptMgr->OnQuestStatusChange(this, quest_id); } void Player::FailQuest(uint32 questId) @@ -15854,7 +15858,7 @@ void Player::SetQuestStatus(uint32 questId, QuestStatus status, bool update /*= if (update) SendQuestUpdate(questId); - sScriptMgr->OnQuestStatusChange(this, questId, status); + sScriptMgr->OnQuestStatusChange(this, questId); } void Player::RemoveActiveQuest(uint32 questId, bool update /*= true*/) diff --git a/src/server/game/Handlers/QuestHandler.cpp b/src/server/game/Handlers/QuestHandler.cpp index a67b08e35dd..72170f61d2b 100644 --- a/src/server/game/Handlers/QuestHandler.cpp +++ b/src/server/game/Handlers/QuestHandler.cpp @@ -462,6 +462,8 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPackets::Quest::QuestLogRemove // add to Quest Tracker CharacterDatabase.Execute(stmt); } + + sScriptMgr->OnQuestStatusChange(_player, questId); } _player->SetQuestSlot(packet.Entry, 0); diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 8ad749ef53a..bba0310d17b 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -2219,9 +2219,9 @@ void ScriptMgr::OnPlayerUpdateZone(Player* player, uint32 newZone, uint32 newAre FOREACH_SCRIPT(PlayerScript)->OnUpdateZone(player, newZone, newArea); } -void ScriptMgr::OnQuestStatusChange(Player* player, uint32 questId, QuestStatus status) +void ScriptMgr::OnQuestStatusChange(Player* player, uint32 questId) { - FOREACH_SCRIPT(PlayerScript)->OnQuestStatusChange(player, questId, status); + FOREACH_SCRIPT(PlayerScript)->OnQuestStatusChange(player, questId); } void ScriptMgr::OnMovieComplete(Player* player, uint32 movieId) diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 72b71651bd9..09292747668 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -744,7 +744,7 @@ class TC_GAME_API PlayerScript : public UnitScript virtual void OnMapChanged(Player* /*player*/) { } // Called after a player's quest status has been changed - virtual void OnQuestStatusChange(Player* /*player*/, uint32 /*questId*/, QuestStatus /*status*/) { } + virtual void OnQuestStatusChange(Player* /*player*/, uint32 /*questId*/) { } // Called when a player completes a movie virtual void OnMovieComplete(Player* /*player*/, uint32 /*movieId*/) { } @@ -1129,7 +1129,7 @@ class TC_GAME_API ScriptMgr void OnPlayerSave(Player* player); void OnPlayerBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent, uint8 extendState); void OnPlayerUpdateZone(Player* player, uint32 newZone, uint32 newArea); - void OnQuestStatusChange(Player* player, uint32 questId, QuestStatus status); + void OnQuestStatusChange(Player* player, uint32 questId); void OnMovieComplete(Player* player, uint32 movieId); public: /* AccountScript */ diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 8704c1218a9..8693cf10747 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -4472,6 +4472,8 @@ void Spell::EffectQuestClear(SpellEffIndex /*effIndex*/) player->RemoveActiveQuest(quest_id, false); player->RemoveRewardedQuest(quest_id); + + sScriptMgr->OnQuestStatusChange(player, quest_id); } void Spell::EffectSendTaxi(SpellEffIndex /*effIndex*/) diff --git a/src/server/scripts/Commands/cs_quest.cpp b/src/server/scripts/Commands/cs_quest.cpp index 05aee71b029..6f377270ae4 100644 --- a/src/server/scripts/Commands/cs_quest.cpp +++ b/src/server/scripts/Commands/cs_quest.cpp @@ -146,6 +146,8 @@ public: player->RemoveActiveQuest(entry, false); player->RemoveRewardedQuest(entry); + sScriptMgr->OnQuestStatusChange(player, entry); + handler->SendSysMessage(LANG_COMMAND_QUEST_REMOVED); return true; } |