Core/Scripts: Enhance quest status hook by making it catch more status changes (#17865)

This commit is contained in:
Rochet2 authored and Aokromes committed 2016-09-10 14:25:57 +02:00
1 parent dc4657218e
commit 19ed813f6b
6 files changed
+15 -5

No files matched your search

+5 -1
View File
@@ -14943,6 +14943,8 @@ void Player::AddQuest(Quest const* quest, Object* questGiver)
// add to Quest Tracker // add to Quest Tracker
CharacterDatabase.Execute(stmt); CharacterDatabase.Execute(stmt);
} }
sScriptMgr->OnQuestStatusChange(this, quest_id);
} }
void Player::CompleteQuest(uint32 quest_id) void Player::CompleteQuest(uint32 quest_id)
@@ -15193,6 +15195,8 @@ void Player::RewardQuest(Quest const* quest, uint32 reward, Object* questGiver,
//lets remove flag for delayed teleports //lets remove flag for delayed teleports
SetCanDelayTeleport(false); SetCanDelayTeleport(false);
sScriptMgr->OnQuestStatusChange(this, quest_id);
} }
void Player::FailQuest(uint32 questId) void Player::FailQuest(uint32 questId)
@@ -15853,7 +15857,7 @@ void Player::SetQuestStatus(uint32 questId, QuestStatus status, bool update /*=
if (update) if (update)
SendQuestUpdate(questId); SendQuestUpdate(questId);
sScriptMgr->OnQuestStatusChange(this, questId, status); sScriptMgr->OnQuestStatusChange(this, questId);
} }
void Player::RemoveActiveQuest(uint32 questId, bool update /*= true*/) void Player::RemoveActiveQuest(uint32 questId, bool update /*= true*/)
@@ -451,6 +451,8 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recvData)
// add to Quest Tracker // add to Quest Tracker
CharacterDatabase.Execute(stmt); CharacterDatabase.Execute(stmt);
} }
sScriptMgr->OnQuestStatusChange(_player, questId);
} }
_player->SetQuestSlot(slot, 0); _player->SetQuestSlot(slot, 0);
+2 -2
View File
@@ -2116,9 +2116,9 @@ void ScriptMgr::OnPlayerUpdateZone(Player* player, uint32 newZone, uint32 newAre
FOREACH_SCRIPT(PlayerScript)->OnUpdateZone(player, newZone, newArea); 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);
} }
// Account // Account
+2 -2
View File
@@ -739,7 +739,7 @@ class TC_GAME_API PlayerScript : public UnitScript
virtual void OnMapChanged(Player* /*player*/) { } virtual void OnMapChanged(Player* /*player*/) { }
// Called after a player's quest status has been changed // 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*/) { }
}; };
class TC_GAME_API AccountScript : public ScriptObject class TC_GAME_API AccountScript : public ScriptObject
@@ -1069,7 +1069,7 @@ class TC_GAME_API ScriptMgr
void OnPlayerSave(Player* player); void OnPlayerSave(Player* player);
void OnPlayerBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent, uint8 extendState); void OnPlayerBindToInstance(Player* player, Difficulty difficulty, uint32 mapid, bool permanent, uint8 extendState);
void OnPlayerUpdateZone(Player* player, uint32 newZone, uint32 newArea); void OnPlayerUpdateZone(Player* player, uint32 newZone, uint32 newArea);
void OnQuestStatusChange(Player* player, uint32 questId, QuestStatus status); void OnQuestStatusChange(Player* player, uint32 questId);
public: /* AccountScript */ public: /* AccountScript */
+2
View File
@@ -4536,6 +4536,8 @@ void Spell::EffectQuestClear(SpellEffIndex effIndex)
player->RemoveActiveQuest(quest_id, false); player->RemoveActiveQuest(quest_id, false);
player->RemoveRewardedQuest(quest_id); player->RemoveRewardedQuest(quest_id);
sScriptMgr->OnQuestStatusChange(player, quest_id);
} }
void Spell::EffectSendTaxi(SpellEffIndex effIndex) void Spell::EffectSendTaxi(SpellEffIndex effIndex)
+2
View File
@@ -143,6 +143,8 @@ public:
player->RemoveActiveQuest(entry, false); player->RemoveActiveQuest(entry, false);
player->RemoveRewardedQuest(entry); player->RemoveRewardedQuest(entry);
sScriptMgr->OnQuestStatusChange(player, entry);
handler->SendSysMessage(LANG_COMMAND_QUEST_REMOVED); handler->SendSysMessage(LANG_COMMAND_QUEST_REMOVED);
return true; return true;
} }