mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Core/Scripts: Enhance quest status hook by making it catch more status changes (#17865)
(cherry picked from commit c52566a888)
This commit is contained in:
@@ -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*/)
|
||||
|
||||
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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 */
|
||||
|
||||
@@ -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*/)
|
||||
|
||||
@@ -146,6 +146,8 @@ public:
|
||||
player->RemoveActiveQuest(entry, false);
|
||||
player->RemoveRewardedQuest(entry);
|
||||
|
||||
sScriptMgr->OnQuestStatusChange(player, entry);
|
||||
|
||||
handler->SendSysMessage(LANG_COMMAND_QUEST_REMOVED);
|
||||
return true;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user