diff options
| author | Wyrserth <43747507+Wyrserth@users.noreply.github.com> | 2019-05-17 20:38:15 +0200 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2019-05-17 20:38:15 +0200 |
| commit | 404c4f8091693a1b9b7c914e7e9373c40c53141a (patch) | |
| tree | 3f08434a984526b991154df7b37f12618254b4df /src | |
| parent | 908fbf48d2f6a51c6976c5ed21eee7f165b2f507 (diff) | |
Core/Scripts: implement a PlayerScript hook called when a quest's objective receives progress (#23286)
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 5 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 4 |
3 files changed, 11 insertions, 0 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e4ad7d43d55..3268988ac83 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -16766,6 +16766,8 @@ void Player::SendQuestUpdateAddCreatureOrGo(Quest const* quest, ObjectGuid guid, uint16 log_slot = FindQuestSlot(quest->GetQuestId()); if (log_slot < MAX_QUEST_LOG_SIZE) SetQuestSlotCounter(log_slot, creatureOrGO_idx, GetQuestSlotCounter(log_slot, creatureOrGO_idx) + add_count); + + sScriptMgr->OnQuestObjectiveProgress(this, quest, creatureOrGO_idx, old_count + add_count); } void Player::SendQuestUpdateAddPlayer(Quest const* quest, uint16 old_count, uint16 add_count) diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 1c8e99833ec..051592c7fd9 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -1961,6 +1961,11 @@ void ScriptMgr::OnPlayerRepop(Player* player) FOREACH_SCRIPT(PlayerScript)->OnPlayerRepop(player); } +void ScriptMgr::OnQuestObjectiveProgress(Player* player, Quest const* quest, uint32 objectiveIndex, uint16 progress) +{ + FOREACH_SCRIPT(PlayerScript)->OnQuestObjectiveProgress(player, quest, objectiveIndex, progress); +} + // Account void ScriptMgr::OnAccountLogin(uint32 accountId) { diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index 910ccb8612c..077bbddaf8f 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -699,6 +699,9 @@ class TC_GAME_API PlayerScript : public ScriptObject // Called when a player changes to a new map (after moving to new map) virtual void OnMapChanged(Player* /*player*/) { } + // Called when a player obtains progress on a quest's objective + virtual void OnQuestObjectiveProgress(Player* /*player*/, Quest const* /*quest*/, uint32 /*objectiveIndex*/, uint16 /*progress*/) { } + // Called after a player's quest status has been changed virtual void OnQuestStatusChange(Player* /*player*/, uint32 /*questId*/) { } @@ -1011,6 +1014,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 OnQuestObjectiveProgress(Player* player, Quest const* quest, uint32 objectiveIndex, uint16 progress); void OnQuestStatusChange(Player* player, uint32 questId); void OnPlayerRepop(Player* player); |
