Core/World: implement database support for default map and realm wide world states

Co-Authored-By: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
Shauren
2022-06-25 22:48:27 +02:00
parent e708bd28d1
commit 737d94d7ef
10 changed files with 331 additions and 0 deletions

View File

@@ -133,6 +133,10 @@ template<>
struct is_script_database_bound<QuestScript>
: std::true_type { };
template<>
struct is_script_database_bound<WorldStateScript>
: std::true_type { };
enum Spells
{
SPELL_HOTSWAP_VISUAL_SPELL_EFFECT = 40162 // 59084
@@ -2322,6 +2326,7 @@ void ScriptMgr::OnSceneComplete(Player* player, uint32 sceneInstanceID, SceneTem
tmpscript->OnSceneComplete(player, sceneInstanceID, sceneTemplate);
}
// Quest
void ScriptMgr::OnQuestStatusChange(Player* player, Quest const* quest, QuestStatus oldStatus, QuestStatus newStatus)
{
ASSERT(player);
@@ -2349,6 +2354,15 @@ void ScriptMgr::OnQuestObjectiveChange(Player* player, Quest const* quest, Quest
tmpscript->OnQuestObjectiveChange(player, quest, objective, oldAmount, newAmount);
}
// WorldState
void ScriptMgr::OnWorldStateValueChange(WorldStateTemplate const* worldStateTemplate, int32 oldValue, int32 newValue, Map const* map)
{
ASSERT(worldStateTemplate);
GET_SCRIPT(WorldStateScript, worldStateTemplate->ScriptId, tmpscript);
tmpscript->OnValueChange(worldStateTemplate->Id, oldValue, newValue, map);
}
SpellScriptLoader::SpellScriptLoader(char const* name)
: ScriptObject(name)
{
@@ -2638,6 +2652,14 @@ QuestScript::QuestScript(char const* name)
QuestScript::~QuestScript() = default;
WorldStateScript::WorldStateScript(char const* name)
: ScriptObject(name)
{
ScriptRegistry<WorldStateScript>::Instance()->AddScript(this);
}
WorldStateScript::~WorldStateScript() = default;
// Specialize for each script type class like so:
template class TC_GAME_API ScriptRegistry<SpellScriptLoader>;
template class TC_GAME_API ScriptRegistry<ServerScript>;
@@ -2671,3 +2693,4 @@ template class TC_GAME_API ScriptRegistry<AreaTriggerEntityScript>;
template class TC_GAME_API ScriptRegistry<ConversationScript>;
template class TC_GAME_API ScriptRegistry<SceneScript>;
template class TC_GAME_API ScriptRegistry<QuestScript>;
template class TC_GAME_API ScriptRegistry<WorldStateScript>;