diff --git a/Source/Framework/Constants/SharedConst.cs b/Source/Framework/Constants/SharedConst.cs index 9b9be49dc..b8a35d0a8 100644 --- a/Source/Framework/Constants/SharedConst.cs +++ b/Source/Framework/Constants/SharedConst.cs @@ -874,20 +874,6 @@ namespace Framework.Constants Garrison = 0x4000000 } - public enum WorldStates - { - CurrencyResetTime = 20001, // Next currency reset time - WeeklyQuestResetTime = 20002, // Next weekly quest reset time - BGDailyResetTime = 20003, // Next daily BG reset time - CleaningFlags = 20004, // Cleaning Flags - GuildDailyResetTime = 20006, // Next guild cap reset time - MonthlyQuestResetTime = 20007, // Next monthly quest reset time - DailyQuestResetTime = 20008, // Next daily quest reset time - DailyCalendarDeletionOldEventsTime = 20009, // Next daily calendar deletions of old events time - // Cata specific custom worldstates - GuildWeeklyResetTime = 20050, // Next guild week reset time - } - // values based at Holidays.dbc public enum HolidayIds { @@ -2950,4 +2936,38 @@ namespace Framework.Constants WestparkWorkshop = 4611, EastparkWorkshop = 4612, } + + public enum WorldStates + { + BattlefieldWgVehicleH = 3490, + BattlefieldWgMaxVehicleH = 3491, + BattlefieldWgVehicleA = 3680, + BattlefieldWgMaxVehicleA = 3681, + BattlefieldWgWorkshopKW = 3698, + BattlefieldWgWorkshopKE = 3699, + BattlefieldWgWorkshopNw = 3700, + BattlefieldWgWorkshopNe = 3701, + BattlefieldWgWorkshopSw = 3702, + BattlefieldWgWorkshopSe = 3703, + BattlefieldWgShowWorldstate = 3710, + BattlefieldWgTimeBattleEnd = 3781, + BattlefieldWgActive = 3801, + BattlefieldWgDefender = 3802, + BattlefieldWgAttacker = 3803, + BattlefieldWgAttackedH = 4022, + BattlefieldWgAttackedA = 4023, + BattlefieldWgDefendedH = 4024, + BattlefieldWgDefendedA = 4025, + BattlefieldWgTimeNextBattle = 4354, + + CurrencyResetTime = 20001, // Next Arena Distribution Time + WeeklyQuestResetTime = 20002, // Next Weekly Quest Reset Time + BgDailyResetTime = 20003, // Next Daily Bg Reset Time + CleaningFlags = 20004, // Cleaning Flags + GuildDailyResetTime = 20006, // Next Guild Cap Reset Time + MonthlyQuestResetTime = 20007, // Next Monthly Quest Reset Time + DailyQuestResetTime = 20008, // Next Daily Quest Reset Time + DailyCalendarDeletionOldEventsTime = 20009, // Next Daily Calendar Deletions Of Old Events Time + GuildWeeklyResetTime = 20050, // Next Guild Week Reset Time + } } diff --git a/Source/Game/BattleFields/BattleField.cs b/Source/Game/BattleFields/BattleField.cs index eb4e8aaa2..75181926d 100644 --- a/Source/Game/BattleFields/BattleField.cs +++ b/Source/Game/BattleFields/BattleField.cs @@ -468,6 +468,11 @@ namespace Game.BattleFields Global.CreatureTextMgr.SendChat(stalker, (byte)id, target); } + public void SendUpdateWorldState(WorldStates variable, uint value, bool hidden = false) + { + SendUpdateWorldState((uint)variable, value, hidden); + } + public void SendUpdateWorldState(uint variable, uint value, bool hidden = false) { UpdateWorldState worldstate = new(); diff --git a/Source/Game/BattleFields/Zones/WinterGrasp.cs b/Source/Game/BattleFields/Zones/WinterGrasp.cs index c11c836f1..bc6c0dcef 100644 --- a/Source/Game/BattleFields/Zones/WinterGrasp.cs +++ b/Source/Game/BattleFields/Zones/WinterGrasp.cs @@ -61,15 +61,15 @@ namespace Game.BattleFields m_saveTimer = 60000; // Load from db - if ((Global.WorldMgr.GetWorldState(WGWorldStates.Active) == 0) && (Global.WorldMgr.GetWorldState(WGWorldStates.Defender) == 0) && (Global.WorldMgr.GetWorldState(WGConst.ClockWorldState[0]) == 0)) + if ((Global.WorldMgr.GetWorldState(WorldStates.BattlefieldWgActive) == 0) && (Global.WorldMgr.GetWorldState(WorldStates.BattlefieldWgDefender) == 0) && (Global.WorldMgr.GetWorldState(WGConst.ClockWorldState[0]) == 0)) { - Global.WorldMgr.SetWorldState(WGWorldStates.Active, 0); - Global.WorldMgr.SetWorldState(WGWorldStates.Defender, RandomHelper.URand(0, 1)); + Global.WorldMgr.SetWorldState(WorldStates.BattlefieldWgActive, 0); + Global.WorldMgr.SetWorldState(WorldStates.BattlefieldWgDefender, RandomHelper.URand(0, 1)); Global.WorldMgr.SetWorldState(WGConst.ClockWorldState[0], m_NoWarBattleTime); } - m_isActive = Global.WorldMgr.GetWorldState(WGWorldStates.Active) != 0; - m_DefenderTeam = Global.WorldMgr.GetWorldState(WGWorldStates.Defender); + m_isActive = Global.WorldMgr.GetWorldState(WorldStates.BattlefieldWgActive) != 0; + m_DefenderTeam = Global.WorldMgr.GetWorldState(WorldStates.BattlefieldWgDefender); m_Timer = Global.WorldMgr.GetWorldState(WGConst.ClockWorldState[0]); if (m_isActive) @@ -78,10 +78,10 @@ namespace Game.BattleFields m_Timer = m_RestartAfterCrash; } - SetData(WGData.WonA, Global.WorldMgr.GetWorldState(WGWorldStates.AttackedA)); - SetData(WGData.DefA, Global.WorldMgr.GetWorldState(WGWorldStates.DefendedA)); - SetData(WGData.WonH, Global.WorldMgr.GetWorldState(WGWorldStates.AttackedH)); - SetData(WGData.DefH, Global.WorldMgr.GetWorldState(WGWorldStates.DefendedH)); + SetData(WGData.WonA, Global.WorldMgr.GetWorldState(WorldStates.BattlefieldWgAttackedA)); + SetData(WGData.DefA, Global.WorldMgr.GetWorldState(WorldStates.BattlefieldWgDefendedA)); + SetData(WGData.WonH, Global.WorldMgr.GetWorldState(WorldStates.BattlefieldWgAttackedH)); + SetData(WGData.DefH, Global.WorldMgr.GetWorldState(WorldStates.BattlefieldWgDefendedH)); foreach (var gy in WGConst.WGGraveYard) { @@ -163,13 +163,13 @@ namespace Game.BattleFields bool m_return = base.Update(diff); if (m_saveTimer <= diff) { - Global.WorldMgr.SetWorldState(WGWorldStates.Active, m_isActive); - Global.WorldMgr.SetWorldState(WGWorldStates.Defender, m_DefenderTeam); + Global.WorldMgr.SetWorldState(WorldStates.BattlefieldWgActive, m_isActive); + Global.WorldMgr.SetWorldState(WorldStates.BattlefieldWgDefender, m_DefenderTeam); Global.WorldMgr.SetWorldState(WGConst.ClockWorldState[0], m_Timer); - Global.WorldMgr.SetWorldState(WGWorldStates.AttackedA, GetData(WGData.WonA)); - Global.WorldMgr.SetWorldState(WGWorldStates.DefendedA, GetData(WGData.DefA)); - Global.WorldMgr.SetWorldState(WGWorldStates.AttackedH, GetData(WGData.WonH)); - Global.WorldMgr.SetWorldState(WGWorldStates.DefendedH, GetData(WGData.DefH)); + Global.WorldMgr.SetWorldState(WorldStates.BattlefieldWgAttackedA, GetData(WGData.WonA)); + Global.WorldMgr.SetWorldState(WorldStates.BattlefieldWgDefendedA, GetData(WGData.DefA)); + Global.WorldMgr.SetWorldState(WorldStates.BattlefieldWgAttackedH, GetData(WGData.WonH)); + Global.WorldMgr.SetWorldState(WorldStates.BattlefieldWgDefendedH, GetData(WGData.DefH)); m_saveTimer = 60 * Time.InMilliseconds; } else @@ -763,19 +763,19 @@ namespace Game.BattleFields public override void FillInitialWorldStates(InitWorldStates packet) { - packet.AddState(WGWorldStates.Attacker, (int)GetAttackerTeam()); - packet.AddState(WGWorldStates.Defender, (int)GetDefenderTeam()); + packet.AddState(WorldStates.BattlefieldWgAttacker, (int)GetAttackerTeam()); + packet.AddState(WorldStates.BattlefieldWgDefender, (int)GetDefenderTeam()); // Note: cleanup these two, their names look awkward - packet.AddState(WGWorldStates.Active, IsWarTime()); - packet.AddState(WGWorldStates.ShowWorldstate, IsWarTime()); + packet.AddState(WorldStates.BattlefieldWgActive, IsWarTime()); + packet.AddState(WorldStates.BattlefieldWgShowWorldstate, IsWarTime()); for (uint i = 0; i < 2; ++i) packet.AddState(WGConst.ClockWorldState[i], (int)(GameTime.GetGameTime() + (m_Timer / 1000))); - packet.AddState(WGWorldStates.VehicleH, (int)GetData(WGData.VehicleH)); - packet.AddState(WGWorldStates.MaxVehicleH, (int)GetData(WGData.MaxVehicleH)); - packet.AddState(WGWorldStates.VehicleA, (int)GetData(WGData.VehicleA)); - packet.AddState(WGWorldStates.MaxVehicleA, (int)GetData(WGData.MaxVehicleA)); + packet.AddState(WorldStates.BattlefieldWgVehicleH, (int)GetData(WGData.VehicleH)); + packet.AddState(WorldStates.BattlefieldWgMaxVehicleH, (int)GetData(WGData.MaxVehicleH)); + packet.AddState(WorldStates.BattlefieldWgVehicleA, (int)GetData(WGData.VehicleA)); + packet.AddState(WorldStates.BattlefieldWgMaxVehicleA, (int)GetData(WGData.MaxVehicleA)); foreach (BfWGGameObjectBuilding building in BuildingsInZone) building.FillInitialWorldStates(packet); @@ -922,10 +922,10 @@ namespace Game.BattleFields // Update vehicle count WorldState to player void UpdateVehicleCountWG() { - SendUpdateWorldState(WGWorldStates.VehicleH, GetData(WGData.VehicleH)); - SendUpdateWorldState(WGWorldStates.MaxVehicleH, GetData(WGData.MaxVehicleH)); - SendUpdateWorldState(WGWorldStates.VehicleA, GetData(WGData.VehicleA)); - SendUpdateWorldState(WGWorldStates.MaxVehicleA, GetData(WGData.MaxVehicleA)); + SendUpdateWorldState(WorldStates.BattlefieldWgVehicleH, GetData(WGData.VehicleH)); + SendUpdateWorldState(WorldStates.BattlefieldWgMaxVehicleH, GetData(WGData.MaxVehicleH)); + SendUpdateWorldState(WorldStates.BattlefieldWgVehicleA, GetData(WGData.VehicleA)); + SendUpdateWorldState(WorldStates.BattlefieldWgMaxVehicleA, GetData(WGData.MaxVehicleA)); } void UpdateTenacity() diff --git a/Source/Game/BattleFields/Zones/WinterGraspConst.cs b/Source/Game/BattleFields/Zones/WinterGraspConst.cs index 58882855c..9e051824c 100644 --- a/Source/Game/BattleFields/Zones/WinterGraspConst.cs +++ b/Source/Game/BattleFields/Zones/WinterGraspConst.cs @@ -41,7 +41,7 @@ namespace Game.BattleFields new BfWGCoordGY(5140.790f, 2179.120f, 390.950f, 1.972220f, 1332, WGGossipText.GYAlliance, TeamId.Alliance), }; - public static uint[] ClockWorldState = { 3781, 4354 }; + public static WorldStates[] ClockWorldState = { WorldStates.BattlefieldWgTimeBattleEnd, WorldStates.BattlefieldWgTimeNextBattle }; public static uint[] WintergraspFaction = { 1732, 1735, 35 }; public static Position WintergraspStalkerPos = new(4948.985f, 2937.789f, 550.5172f, 1.815142f); @@ -308,7 +308,7 @@ namespace Game.BattleFields new StaticWintergraspWorkshopInfo() { WorkshopId = WGWorkshopIds.Ne, - WorldStateId = WGWorldStates.NE, + WorldStateId = WorldStates.BattlefieldWgWorkshopNe, AllianceCaptureTextId = WintergraspText.SunkenRingCaptureAlliance, AllianceAttackTextId = WintergraspText.SunkenRingAttackAlliance, HordeCaptureTextId = WintergraspText.SunkenRingCaptureHorde, @@ -317,7 +317,7 @@ namespace Game.BattleFields new StaticWintergraspWorkshopInfo() { WorkshopId = WGWorkshopIds.Nw, - WorldStateId = WGWorldStates.NW, + WorldStateId = WorldStates.BattlefieldWgWorkshopNw, AllianceCaptureTextId = WintergraspText.BrokenTempleCaptureAlliance, AllianceAttackTextId = WintergraspText.BrokenTempleAttackAlliance, HordeCaptureTextId = WintergraspText.BrokenTempleCaptureHorde, @@ -326,7 +326,7 @@ namespace Game.BattleFields new StaticWintergraspWorkshopInfo() { WorkshopId = WGWorkshopIds.Se, - WorldStateId = WGWorldStates.SE, + WorldStateId = WorldStates.BattlefieldWgWorkshopSe, AllianceCaptureTextId = WintergraspText.EastsparkCaptureAlliance, AllianceAttackTextId = WintergraspText.EastsparkAttackAlliance, HordeCaptureTextId = WintergraspText.EastsparkCaptureHorde, @@ -336,7 +336,7 @@ namespace Game.BattleFields new StaticWintergraspWorkshopInfo() { WorkshopId = WGWorkshopIds.Sw, - WorldStateId = WGWorldStates.SW, + WorldStateId = WorldStates.BattlefieldWgWorkshopSw, AllianceCaptureTextId = WintergraspText.WestsparkCaptureAlliance, AllianceAttackTextId = WintergraspText.WestsparkAttackAlliance, HordeCaptureTextId = WintergraspText.WestsparkCaptureHorde, @@ -347,13 +347,13 @@ namespace Game.BattleFields new StaticWintergraspWorkshopInfo() { WorkshopId = WGWorkshopIds.KeepWest, - WorldStateId = WGWorldStates.KeepW + WorldStateId = WorldStates.BattlefieldWgWorkshopKW }, new StaticWintergraspWorkshopInfo() { WorkshopId = WGWorkshopIds.KeepEast, - WorldStateId = WGWorldStates.KeepE + WorldStateId = WorldStates.BattlefieldWgWorkshopKE } }; #endregion @@ -501,29 +501,6 @@ namespace Game.BattleFields public const byte KeepEast = 5; } - struct WGWorldStates - { - public const uint NE = 3701; - public const uint NW = 3700; - public const uint SE = 3703; - public const uint SW = 3702; - public const uint KeepW = 3698; - public const uint KeepE = 3699; - - public const uint VehicleH = 3490; - public const uint MaxVehicleH = 3491; - public const uint VehicleA = 3680; - public const uint MaxVehicleA = 3681; - public const uint Active = 3801; - public const uint Defender = 3802; - public const uint Attacker = 3803; - public const uint ShowWorldstate = 3710; - public const uint AttackedH = 4022; - public const uint AttackedA = 4023; - public const uint DefendedH = 4024; - public const uint DefendedA = 4025; - } - struct WGGossipText { public const int GYNE = 20071; @@ -715,7 +692,7 @@ namespace Game.BattleFields class StaticWintergraspWorkshopInfo { public byte WorkshopId; - public uint WorldStateId; + public WorldStates WorldStateId; public byte AllianceCaptureTextId; public byte AllianceAttackTextId; public byte HordeCaptureTextId; diff --git a/Source/Game/Entities/Player/Player.PvP.cs b/Source/Game/Entities/Player/Player.PvP.cs index 89dedd098..98dc6b60f 100644 --- a/Source/Game/Entities/Player/Player.PvP.cs +++ b/Source/Game/Entities/Player/Player.PvP.cs @@ -729,9 +729,9 @@ namespace Game.Entities BattleField wg = Global.BattleFieldMgr.GetBattlefieldByBattleId(1);//Wintergrasp battle if (wg != null) { - SendUpdateWorldState(3801, (uint)(wg.IsWarTime() ? 0 : 1)); + SendUpdateWorldState(WorldStates.BattlefieldWgActive, (uint)(wg.IsWarTime() ? 0 : 1)); uint timer = wg.IsWarTime() ? 0 : (wg.GetTimer() / 1000); // 0 - Time to next battle - SendUpdateWorldState(4354, (uint)(GameTime.GetGameTime() + timer)); + SendUpdateWorldState(WorldStates.BattlefieldWgTimeNextBattle, (uint)(GameTime.GetGameTime() + timer)); } } } diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 559439ff5..25a0029a7 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -2837,6 +2837,11 @@ namespace Game.Entities public CinematicManager GetCinematicMgr() { return _cinematicMgr; } + public void SendUpdateWorldState(WorldStates variable, uint value, bool hidden = false) + { + SendUpdateWorldState((uint)variable, value, hidden); + } + public void SendUpdateWorldState(uint variable, uint value, bool hidden = false) { UpdateWorldState worldstate = new(); diff --git a/Source/Game/Networking/Packets/WorldStatePackets.cs b/Source/Game/Networking/Packets/WorldStatePackets.cs index ed71dfd39..d082fc41f 100644 --- a/Source/Game/Networking/Packets/WorldStatePackets.cs +++ b/Source/Game/Networking/Packets/WorldStatePackets.cs @@ -38,11 +38,21 @@ namespace Game.Networking.Packets } } + public void AddState(WorldStates variableID, int value) + { + AddState((uint)variableID, value); + } + public void AddState(uint variableID, int value) { Worldstates.Add(new WorldStateInfo(variableID, value)); } + public void AddState(WorldStates variableID, bool value) + { + AddState((uint)variableID, value); + } + public void AddState(uint variableID, bool value) { Worldstates.Add(new WorldStateInfo(variableID, value ? 1 : 0)); diff --git a/Source/Game/Server/WorldManager.cs b/Source/Game/Server/WorldManager.cs index 9c080e1e8..aed764836 100644 --- a/Source/Game/Server/WorldManager.cs +++ b/Source/Game/Server/WorldManager.cs @@ -2116,7 +2116,7 @@ namespace Game void InitRandomBGResetTime() { - long bgtime = GetWorldState(WorldStates.BGDailyResetTime); + long bgtime = GetWorldState(WorldStates.BgDailyResetTime); if (bgtime == 0) m_NextRandomBGReset = GameTime.GetGameTime(); // game time not yet init @@ -2134,7 +2134,7 @@ namespace Game m_NextRandomBGReset = bgtime < curTime ? nextDayResetTime - Time.Day : nextDayResetTime; if (bgtime == 0) - SetWorldState(WorldStates.BGDailyResetTime, (ulong)m_NextRandomBGReset); + SetWorldState(WorldStates.BgDailyResetTime, (ulong)m_NextRandomBGReset); } void InitCalendarOldEventsDeletionTime() @@ -2230,7 +2230,7 @@ namespace Game session.GetPlayer().SetRandomWinner(false); m_NextRandomBGReset += Time.Day; - SetWorldState(WorldStates.BGDailyResetTime, (ulong)m_NextRandomBGReset); + SetWorldState(WorldStates.BgDailyResetTime, (ulong)m_NextRandomBGReset); } void CalendarDeleteOldEvents() @@ -2319,7 +2319,7 @@ namespace Game Log.outInfo(LogFilter.ServerLoading, "Loaded {0} world states in {1} ms", count, Time.GetMSTimeDiffToNow(oldMSTime)); } - public void SetWorldState(WorldStates index, ulong value) + public void SetWorldState(WorldStates index, object value) { SetWorldState((uint)index, value); }