aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRochet2 <rochet2@post.com>2016-09-09 22:11:36 +0300
committerjoschiwald <joschiwald.trinity@gmail.com>2017-02-26 15:36:01 +0100
commit117b45d76883244c3452be175faa2d4dcd722390 (patch)
tree7d8dc71fd8eab74e65158f6c228558a4da961bf0 /src
parent9710c808d718f8e89a5487160c55b46e9a006998 (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.cpp6
-rw-r--r--src/server/game/Handlers/QuestHandler.cpp2
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp4
-rw-r--r--src/server/game/Scripting/ScriptMgr.h4
-rw-r--r--src/server/game/Spells/SpellEffects.cpp2
-rw-r--r--src/server/scripts/Commands/cs_quest.cpp2
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;
}