Core/Scripts: Enhance quest status hook by making it catch more status changes (#17865)
This commit is contained in:
1 parent
dc4657218e
commit
19ed813f6b
6 files changed
+15
-5
No files matched your search
@@ -14943,6 +14943,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)
|
||||
@@ -15193,6 +15195,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)
|
||||
@@ -15853,7 +15857,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*/)
|
||||
|
||||
@@ -451,6 +451,8 @@ void WorldSession::HandleQuestLogRemoveQuest(WorldPacket& recvData)
|
||||
// add to Quest Tracker
|
||||
CharacterDatabase.Execute(stmt);
|
||||
}
|
||||
|
||||
sScriptMgr->OnQuestStatusChange(_player, questId);
|
||||
}
|
||||
|
||||
_player->SetQuestSlot(slot, 0);
|
||||
|
||||
@@ -2116,9 +2116,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);
|
||||
}
|
||||
|
||||
// Account
|
||||
|
||||
@@ -739,7 +739,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*/) { }
|
||||
};
|
||||
|
||||
class TC_GAME_API AccountScript : public ScriptObject
|
||||
@@ -1069,7 +1069,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);
|
||||
|
||||
public: /* AccountScript */
|
||||
|
||||
|
||||
@@ -4536,6 +4536,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)
|
||||
|
||||
@@ -143,6 +143,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