From cfca26c2641f684533e07d9933ba1f31e5ef8204 Mon Sep 17 00:00:00 2001 From: Shauren Date: Thu, 30 Jun 2022 00:16:41 +0200 Subject: Core/WorldStates: Migrate instance script worldstates to new system --- src/server/game/Entities/Player/Player.cpp | 81 ---------------------------- src/server/game/Instances/InstanceScript.cpp | 8 ++- src/server/game/Instances/InstanceScript.h | 11 +--- 3 files changed, 4 insertions(+), 96 deletions(-) (limited to 'src/server/game') diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index e4dc5573c5c..ad76fa5779e 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -9205,7 +9205,6 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) uint32 mapId = GetMapId(); Battleground* battleground = GetBattleground(); OutdoorPvP* outdoorPvP = sOutdoorPvPMgr->GetOutdoorPvPToZoneId(zoneId); - InstanceScript* instance = GetInstanceScript(); TC_LOG_DEBUG("network", "Player::SendInitWorldStates: Sending SMSG_INIT_WORLD_STATES for Map: %u, Zone: %u", mapId, zoneId); @@ -9687,86 +9686,6 @@ void Player::SendInitWorldStates(uint32 zoneId, uint32 areaId) packet.Worldstates.emplace_back(4345, 1); // unk } break; - case 4987: // The Ruby Sanctum - if (instance) - instance->FillInitialWorldStates(packet); - else - { - packet.Worldstates.emplace_back(5049, 50); // WORLDSTATE_CORPOREALITY_MATERIAL - packet.Worldstates.emplace_back(5050, 50); // WORLDSTATE_CORPOREALITY_TWILIGHT - packet.Worldstates.emplace_back(5051, 0); // WORLDSTATE_CORPOREALITY_TOGGLE - } - break; - case 4812: // Icecrown Citadel - if (instance) - instance->FillInitialWorldStates(packet); - else - { - packet.Worldstates.emplace_back(4903, 0); // WORLDSTATE_SHOW_TIMER (Blood Quickening weekly) - packet.Worldstates.emplace_back(4904, 30); // WORLDSTATE_EXECUTION_TIME - packet.Worldstates.emplace_back(4940, 0); // WORLDSTATE_SHOW_ATTEMPTS - packet.Worldstates.emplace_back(4941, 50); // WORLDSTATE_ATTEMPTS_REMAINING - packet.Worldstates.emplace_back(4942, 50); // WORLDSTATE_ATTEMPTS_MAX - } - break; - case 4100: // The Culling of Stratholme - if (instance) - instance->FillInitialWorldStates(packet); - else - { - packet.Worldstates.emplace_back(3479, 0); // WORLDSTATE_SHOW_CRATES - packet.Worldstates.emplace_back(3480, 0); // WORLDSTATE_CRATES_REVEALED - packet.Worldstates.emplace_back(3504, 0); // WORLDSTATE_WAVE_COUNT - packet.Worldstates.emplace_back(3931, 25); // WORLDSTATE_TIME_GUARDIAN - packet.Worldstates.emplace_back(3932, 0); // WORLDSTATE_TIME_GUARDIAN_SHOW - } - break; - case 4228: // The Oculus - if (instance) - instance->FillInitialWorldStates(packet); - else - { - packet.Worldstates.emplace_back(3524, 0); // WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW - packet.Worldstates.emplace_back(3486, 0); // WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT - } - break; - case 4273: // Ulduar - if (instance) - instance->FillInitialWorldStates(packet); - else - { - packet.Worldstates.emplace_back(4132, 0); // WORLDSTATE_ALGALON_TIMER_ENABLED - packet.Worldstates.emplace_back(4131, 0); // WORLDSTATE_ALGALON_DESPAWN_TIMER - } - break; - case 4415: // Violet Hold - if (instance) - instance->FillInitialWorldStates(packet); - else - { - packet.Worldstates.emplace_back(3816, 0); // WORLD_STATE_VH_SHOW - packet.Worldstates.emplace_back(3815, 100); // WORLD_STATE_VH_PRISON_STATE - packet.Worldstates.emplace_back(3810, 0); // WORLD_STATE_VH_WAVE_COUNT - } - break; - case 4820: // Halls of Refection - if (instance) - instance->FillInitialWorldStates(packet); - else - { - packet.Worldstates.emplace_back(4884, 0); // WORLD_STATE_HOR_WAVES_ENABLED - packet.Worldstates.emplace_back(4882, 0); // WORLD_STATE_HOR_WAVE_COUNT - } - break; - case 3805: // Zul Aman - if (instance) - instance->FillInitialWorldStates(packet); - else - { - packet.Worldstates.emplace_back(3104, 0); // WORLD_STATE_ZULAMAN_TIMER_ENABLED - packet.Worldstates.emplace_back(3106, 0); // WORLD_STATE_ZULAMAN_TIMER - } - break; case 5031: // Twin Peaks if (battleground && battleground->GetTypeID(true) == BATTLEGROUND_TP) battleground->FillInitialWorldStates(packet); diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 215411c528a..67b73ffc33a 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -37,6 +37,7 @@ #include "SpellMgr.h" #include "World.h" #include "WorldSession.h" +#include "WorldStateMgr.h" #include #include @@ -608,12 +609,9 @@ void InstanceScript::DoRespawnGameObject(ObjectGuid guid, Seconds timeToDespawn TC_LOG_DEBUG("scripts", "InstanceScript: DoRespawnGameObject failed"); } -void InstanceScript::DoUpdateWorldState(uint32 uiStateId, uint32 uiStateData) +void InstanceScript::DoUpdateWorldState(int32 worldStateId, int32 value) { - instance->DoOnPlayers([uiStateId, uiStateData](Player const* player) - { - player->SendUpdateWorldState(uiStateId, uiStateData); - }); + sWorldStateMgr->SetValue(worldStateId, value, instance); } // Send Notify to all players in instance diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 353f363174c..e3076222d21 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -42,13 +42,6 @@ struct InstanceSpawnGroupInfo; enum class CriteriaType : uint8; enum class CriteriaStartEvent : uint8; enum EncounterCreditType : uint8; -namespace WorldPackets -{ - namespace WorldState - { - class InitWorldStates; - } -} enum EncounterFrameType { @@ -216,7 +209,7 @@ class TC_GAME_API InstanceScript : public ZoneScript void DoRespawnGameObject(ObjectGuid guid, Seconds timeToDespawn = 1min); // Sends world state update to all players in instance - void DoUpdateWorldState(uint32 worldstateId, uint32 worldstateValue); + void DoUpdateWorldState(int32 worldStateId, int32 value); // Send Notify to all players in instance void DoSendNotifyToInstance(char const* format, ...); @@ -257,8 +250,6 @@ class TC_GAME_API InstanceScript : public ZoneScript // Returns completed encounters mask for packets uint32 GetCompletedEncounterMask() const { return completedEncounters; } - virtual void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates& /*packet*/) { } - uint32 GetEncounterCount() const { return uint32(bosses.size()); } // Sets the entrance location (WorldSafeLoc) id -- cgit v1.2.3