From 9421aeee98cd18dc2cd745c04593401195cb4137 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Wed, 13 Jul 2022 17:31:56 -0400 Subject: [PATCH] Core/WorldStates: Migrate OutdoorPvP worldstates to new system Port From (https://github.com/TrinityCore/TrinityCore/commit/36ff703df55704265a28e28f4ea9f9cdcb54e85c) --- Source/Game/Entities/Player/Player.cs | 169 ------------------ Source/Game/OutdoorPVP/OutdoorPvP.cs | 24 +-- .../OutdoorPVP/Zones/HellfirePeninsulaPvP.cs | 78 +++----- .../world/master/2022_07_11_00_world.sql | 107 +++++++++++ 4 files changed, 137 insertions(+), 241 deletions(-) create mode 100644 sql/updates/world/master/2022_07_11_00_world.sql diff --git a/Source/Game/Entities/Player/Player.cs b/Source/Game/Entities/Player/Player.cs index 49bc4dabc..fef3b49be 100644 --- a/Source/Game/Entities/Player/Player.cs +++ b/Source/Game/Entities/Player/Player.cs @@ -2905,7 +2905,6 @@ namespace Game.Entities { // data depends on zoneid/mapid... uint mapid = GetMapId(); - OutdoorPvP pvp = Global.OutdoorPvPMgr.GetOutdoorPvPToZoneId(zoneId); InitWorldStates packet = new(); packet.MapID = mapid; @@ -2932,174 +2931,6 @@ namespace Game.Entities previousArenaSeason = WorldConfig.GetUIntValue(WorldCfg.ArenaSeasonId) - 1;// 0 - End of season packet.AddState(3901, previousArenaSeason); - if (mapid == 530) // Outland - { - packet.AddState(2495, 0); // NA_UI_OUTLAND_01 "Progress: %2494w" - packet.AddState(2493, 15); // NA_UI_GUARDS_MAX - packet.AddState(2491, 15); // NA_UI_GUARDS_LEFT - } - - // insert - switch (zoneId) - { - case 1: // Dun Morogh - case 11: // Wetlands - case 12: // Elwynn Forest - case 38: // Loch Modan - case 40: // Westfall - case 51: // Searing Gorge - case 1519: // Stormwind City - case 1537: // Ironforge - case 2257: // Deeprun Tram - case 3703: // Shattrath City}); - break; - case 1377: // Silithus - if (pvp != null && pvp.GetTypeId() == OutdoorPvPTypes.Silithus) - pvp.FillInitialWorldStates(packet); - else - { - packet.AddState(2313, 0); // SI_GATHERED_A - packet.AddState(2314, 0); // SI_GATHERED_H - packet.AddState(2317, 0); // SI_SILITHYST_MAX - } - // unknown, aq opening? - packet.AddState(2322, 0); // AQ_SANDWORM_N - packet.AddState(2323, 0); // AQ_SANDWORM_S - packet.AddState(2324, 0); // AQ_SANDWORM_SW - packet.AddState(2325, 0); // AQ_SANDWORM_E - break; - // any of these needs change! the client remembers the prev setting! - // ON EVERY ZONE LEAVE, RESET THE OLD ZONE'S WORLD STATE, BUT AT LEAST THE UI STUFF! - case 3483: // Hellfire Peninsula - if (pvp != null && pvp.GetTypeId() == OutdoorPvPTypes.HellfirePeninsula) - pvp.FillInitialWorldStates(packet); - else - { - packet.AddState(2490, 1); // add ally tower main gui icon - packet.AddState(2489, 1); // add horde tower main gui icon - packet.AddState(2485, 0); // show neutral broken hill icon - packet.AddState(2484, 1); // show icon above broken hill - packet.AddState(2483, 0); // show ally broken hill icon - packet.AddState(2482, 0); // show neutral overlook icon - packet.AddState(2481, 1); // show the overlook arrow - packet.AddState(2480, 0); // show ally overlook icon - packet.AddState(2478, 0); // horde pvp objectives captured - packet.AddState(2476, 0); // ally pvp objectives captured - packet.AddState(2475, 100); // horde slider grey area - packet.AddState(2474, 50); // horde slider percentage, 100 for ally, 0 for horde - packet.AddState(2473, 0); // horde slider display - packet.AddState(2472, 0); // show the neutral stadium icon - packet.AddState(2471, 0); // show the ally stadium icon - packet.AddState(2470, 1); // show the horde stadium icon - } - break; - case 3518: // Nagrand - if (pvp != null && pvp.GetTypeId() == OutdoorPvPTypes.Nagrand) - pvp.FillInitialWorldStates(packet); - else - { - packet.AddState(2503, 0); // NA_UI_HORDE_GUARDS_SHOW - packet.AddState(2502, 0); // NA_UI_ALLIANCE_GUARDS_SHOW - packet.AddState(2493, 0); // NA_UI_GUARDS_MAX - packet.AddState(2491, 0); // NA_UI_GUARDS_LEFT - packet.AddState(2495, 0); // NA_UI_OUTLAND_01 - packet.AddState(2494, 0); // NA_UI_UNK_1 - packet.AddState(2497, 0); // NA_UI_UNK_2 - packet.AddState(2762, 0); // NA_MAP_WYVERN_NORTH_NEU_H - packet.AddState(2662, 0); // NA_MAP_WYVERN_NORTH_NEU_A - packet.AddState(2663, 0); // NA_MAP_WYVERN_NORTH_H - packet.AddState(2664, 0); // NA_MAP_WYVERN_NORTH_A - packet.AddState(2760, 0); // NA_MAP_WYVERN_SOUTH_NEU_H - packet.AddState(2670, 0); // NA_MAP_WYVERN_SOUTH_NEU_A - packet.AddState(2668, 0); // NA_MAP_WYVERN_SOUTH_H - packet.AddState(2669, 0); // NA_MAP_WYVERN_SOUTH_A - packet.AddState(2761, 0); // NA_MAP_WYVERN_WEST_NEU_H - packet.AddState(2667, 0); // NA_MAP_WYVERN_WEST_NEU_A - packet.AddState(2665, 0); // NA_MAP_WYVERN_WEST_H - packet.AddState(2666, 0); // NA_MAP_WYVERN_WEST_A - packet.AddState(2763, 0); // NA_MAP_WYVERN_EAST_NEU_H - packet.AddState(2659, 0); // NA_MAP_WYVERN_EAST_NEU_A - packet.AddState(2660, 0); // NA_MAP_WYVERN_EAST_H - packet.AddState(2661, 0); // NA_MAP_WYVERN_EAST_A - packet.AddState(2671, 0); // NA_MAP_HALAA_NEUTRAL - packet.AddState(2676, 0); // NA_MAP_HALAA_NEU_A - packet.AddState(2677, 0); // NA_MAP_HALAA_NEU_H - packet.AddState(2672, 0); // NA_MAP_HALAA_HORDE - packet.AddState(2673, 0); // NA_MAP_HALAA_ALLIANCE - } - break; - case 3519: // Terokkar Forest - if (pvp != null && pvp.GetTypeId() == OutdoorPvPTypes.TerokkarForest) - pvp.FillInitialWorldStates(packet); - else - { - packet.AddState(2625, 0); // TF_UI_CAPTURE_BAR_POS - packet.AddState(2624, 20); // TF_UI_CAPTURE_BAR_NEUTRAL - packet.AddState(2623, 0); // TF_UI_SHOW CAPTURE BAR - packet.AddState(2622, 0); // TF_UI_TOWER_COUNT_H - packet.AddState(2621, 5); // TF_UI_TOWER_COUNT_A - packet.AddState(2620, 0); // TF_UI_TOWERS_CONTROLLED_DISPLAY - packet.AddState(2696, 0); // TF_TOWER_NUM_15 - SE Neutral - packet.AddState(2695, 0); // TF_TOWER_NUM_14 - SE Horde - packet.AddState(2694, 0); // TF_TOWER_NUM_13 - SE Alliance - packet.AddState(2693, 0); // TF_TOWER_NUM_12 - S Neutral - packet.AddState(2692, 0); // TF_TOWER_NUM_11 - S Horde - packet.AddState(2691, 0); // TF_TOWER_NUM_10 - S Alliance - packet.AddState(2690, 0); // TF_TOWER_NUM_09 - NE Neutral - packet.AddState(2689, 0); // TF_TOWER_NUM_08 - NE Horde - packet.AddState(2688, 0); // TF_TOWER_NUM_07 - NE Alliance - packet.AddState(2687, 0); // TF_TOWER_NUM_16 - unk - packet.AddState(2686, 0); // TF_TOWER_NUM_06 - N Neutral - packet.AddState(2685, 0); // TF_TOWER_NUM_05 - N Horde - packet.AddState(2684, 0); // TF_TOWER_NUM_04 - N Alliance - packet.AddState(2683, 0); // TF_TOWER_NUM_03 - NW Alliance - packet.AddState(2682, 0); // TF_TOWER_NUM_02 - NW Horde - packet.AddState(2681, 0); // TF_TOWER_NUM_01 - NW Neutral - packet.AddState(2512, 5); // TF_UI_LOCKED_TIME_MINUTES_FIRST_DIGIT - packet.AddState(2510, 0); // TF_UI_LOCKED_TIME_MINUTES_SECOND_DIGIT - packet.AddState(2509, 0); // TF_UI_LOCKED_TIME_HOURS - packet.AddState(2508, 0); // TF_UI_LOCKED_DISPLAY_NEUTRAL - packet.AddState(2768, 0); // TF_UI_LOCKED_DISPLAY_HORDE - packet.AddState(2767, 1); // TF_UI_LOCKED_DISPLAY_ALLIANCE - } - break; - case 3521: // Zangarmarsh - if (pvp != null && pvp.GetTypeId() == OutdoorPvPTypes.Zangarmarsh) - pvp.FillInitialWorldStates(packet); - else - { - packet.AddState(2529, 0); // ZM_UNK_1 - packet.AddState(2528, 0); // ZM_UNK_2 - packet.AddState(2527, 0); // ZM_UNK_3 - packet.AddState(2653, 1); // ZM_WORLDSTATE_UNK_1 - packet.AddState(2652, 0); // ZM_MAP_TOWER_EAST_N - packet.AddState(2651, 1); // ZM_MAP_TOWER_EAST_H - packet.AddState(2650, 0); // ZM_MAP_TOWER_EAST_A - packet.AddState(2649, 1); // ZM_MAP_GRAVEYARD_H - Twin spire graveyard horde - packet.AddState(2648, 0); // ZM_MAP_GRAVEYARD_A - packet.AddState(2647, 0); // ZM_MAP_GRAVEYARD_N - packet.AddState(2646, 0); // ZM_MAP_TOWER_WEST_N - packet.AddState(2645, 1); // ZM_MAP_TOWER_WEST_H - packet.AddState(2644, 0); // ZM_MAP_TOWER_WEST_A - packet.AddState(2535, 0); // ZM_UNK_4 - packet.AddState(2534, 0); // ZM_UNK_5 - packet.AddState(2533, 0); // ZM_UNK_6 - packet.AddState(2560, 0); // ZM_UI_TOWER_EAST_N - packet.AddState(2559, 1); // ZM_UI_TOWER_EAST_H - packet.AddState(2558, 0); // ZM_UI_TOWER_EAST_A - packet.AddState(2557, 0); // ZM_UI_TOWER_WEST_N - packet.AddState(2556, 1); // ZM_UI_TOWER_WEST_H - packet.AddState(2555, 0); // ZM_UI_TOWER_WEST_A - packet.AddState(2658, 0); // ZM_MAP_HORDE_FLAG_READY - packet.AddState(2657, 1); // ZM_MAP_HORDE_FLAG_NOT_READY - packet.AddState(2656, 1); // ZM_MAP_ALLIANCE_FLAG_NOT_READY - packet.AddState(2655, 0); // ZM_MAP_ALLIANCE_FLAG_READY - } - break; - default: - break; - } - SendPacket(packet); SendBGWeekendWorldStates(); } diff --git a/Source/Game/OutdoorPVP/OutdoorPvP.cs b/Source/Game/OutdoorPVP/OutdoorPvP.cs index 845cfe695..344efff8f 100644 --- a/Source/Game/OutdoorPVP/OutdoorPvP.cs +++ b/Source/Game/OutdoorPVP/OutdoorPvP.cs @@ -73,20 +73,14 @@ namespace Game.PvP return objective_changed; } - public void SendUpdateWorldState(uint field, uint value) + public int GetWorldState(int worldStateId) { - if (m_sendUpdate) - { - for (int i = 0; i < 2; ++i) - { - foreach (var guid in m_players[i]) - { - Player player = Global.ObjAccessor.FindPlayer(guid); - if (player) - player.SendUpdateWorldState(field, value); - } - } - } + return Global.WorldStateMgr.GetValue(worldStateId, m_map); + } + + public void SetWorldState(int worldStateId, int value) + { + Global.WorldStateMgr.SetValue(worldStateId, value, false, m_map); } public virtual void HandleKill(Player killer, Unit killed) @@ -264,8 +258,6 @@ namespace Game.PvP } } - public virtual void FillInitialWorldStates(InitWorldStates data) { } - // setup stuff public virtual bool SetupOutdoorPvP() { return true; } @@ -672,8 +664,6 @@ namespace Game.PvP return -1; } - public virtual void FillInitialWorldStates(InitWorldStates data) { } - public virtual void ChangeState() { } public virtual void ChangeTeam(uint oldTeam) { } diff --git a/Source/Game/OutdoorPVP/Zones/HellfirePeninsulaPvP.cs b/Source/Game/OutdoorPVP/Zones/HellfirePeninsulaPvP.cs index c3a4468bb..5bdf8867d 100644 --- a/Source/Game/OutdoorPVP/Zones/HellfirePeninsulaPvP.cs +++ b/Source/Game/OutdoorPVP/Zones/HellfirePeninsulaPvP.cs @@ -92,36 +92,31 @@ namespace Game.PvP TeamCastSpell(TeamId.Alliance, -(int)OutdoorPvPHPSpells.AllianceBuff); TeamCastSpell(TeamId.Horde, -(int)OutdoorPvPHPSpells.HordeBuff); } - SendUpdateWorldState(OutdoorPvPHPWorldStates.Count_A, m_AllianceTowersControlled); - SendUpdateWorldState(OutdoorPvPHPWorldStates.Count_H, m_HordeTowersControlled); + SetWorldState(OutdoorPvPHPWorldStates.Count_A, (int)m_AllianceTowersControlled); + SetWorldState(OutdoorPvPHPWorldStates.Count_H, (int)m_HordeTowersControlled); } return changed; } public override void SendRemoveWorldStates(Player player) { - player.SendUpdateWorldState(OutdoorPvPHPWorldStates.Display_A, 0); - player.SendUpdateWorldState(OutdoorPvPHPWorldStates.Display_H, 0); - player.SendUpdateWorldState(OutdoorPvPHPWorldStates.Count_H, 0); - player.SendUpdateWorldState(OutdoorPvPHPWorldStates.Count_A, 0); + InitWorldStates initWorldStates = new(); + initWorldStates.MapID = player.GetMapId(); + initWorldStates.AreaID = player.GetZoneId(); + initWorldStates.SubareaID = player.GetAreaId(); + initWorldStates.AddState(OutdoorPvPHPWorldStates.Display_A, 0); + initWorldStates.AddState(OutdoorPvPHPWorldStates.Display_H, 0); + initWorldStates.AddState(OutdoorPvPHPWorldStates.Count_H, 0); + initWorldStates.AddState(OutdoorPvPHPWorldStates.Count_A, 0); for (int i = 0; i < (int)OutdoorPvPHPTowerType.Num; ++i) { - player.SendUpdateWorldState(HPConst.Map_N[i], 0); - player.SendUpdateWorldState(HPConst.Map_A[i], 0); - player.SendUpdateWorldState(HPConst.Map_H[i], 0); + initWorldStates.AddState(HPConst.Map_N[i], 0); + initWorldStates.AddState(HPConst.Map_A[i], 0); + initWorldStates.AddState(HPConst.Map_H[i], 0); } - } - public override void FillInitialWorldStates(InitWorldStates packet) - { - packet.AddState(OutdoorPvPHPWorldStates.Display_A, 1); - packet.AddState(OutdoorPvPHPWorldStates.Display_H, 1); - packet.AddState(OutdoorPvPHPWorldStates.Count_A, m_AllianceTowersControlled); - packet.AddState(OutdoorPvPHPWorldStates.Count_H, m_HordeTowersControlled); - - foreach (var capture in m_capturePoints.Values) - capture.FillInitialWorldStates(packet); + player.SendPacket(initWorldStates); } public override void HandleKillImpl(Player killer, Unit killed) @@ -207,7 +202,7 @@ namespace Game.PvP // send world state update if (field != 0) { - PvP.SendUpdateWorldState(field, 0); + PvP.SetWorldState((int)field, 0); field = 0; } uint artkit = 21; @@ -268,40 +263,13 @@ namespace Game.PvP // send world state update if (field != 0) - PvP.SendUpdateWorldState(field, 1); + PvP.SetWorldState((int)field, 1); // complete quest objective if (State == ObjectiveStates.Alliance || State == ObjectiveStates.Horde) SendObjectiveComplete(HPConst.CreditMarker[m_TowerType], ObjectGuid.Empty); } - public override void FillInitialWorldStates(InitWorldStates packet) - { - switch (State) - { - case ObjectiveStates.Alliance: - case ObjectiveStates.AllianceHordeChallenge: - packet.AddState(HPConst.Map_N[m_TowerType], 0); - packet.AddState(HPConst.Map_A[m_TowerType], 1); - packet.AddState(HPConst.Map_H[m_TowerType], 0); - break; - case ObjectiveStates.Horde: - case ObjectiveStates.HordeAllianceChallenge: - packet.AddState(HPConst.Map_N[m_TowerType], 0); - packet.AddState(HPConst.Map_A[m_TowerType], 0); - packet.AddState(HPConst.Map_H[m_TowerType], 1); - break; - case ObjectiveStates.Neutral: - case ObjectiveStates.NeutralAllianceChallenge: - case ObjectiveStates.NeutralHordeChallenge: - default: - packet.AddState(HPConst.Map_N[m_TowerType], 1); - packet.AddState(HPConst.Map_A[m_TowerType], 0); - packet.AddState(HPConst.Map_H[m_TowerType], 0); - break; - } - } - uint m_TowerType; } @@ -322,11 +290,11 @@ namespace Game.PvP public static uint[] LangCapture_H = { DefenseMessages.BrokenHillTakenHorde, DefenseMessages.OverlookTakenHorde, DefenseMessages.StadiumTakenHorde }; - public static uint[] Map_N = { 0x9b5, 0x9b2, 0x9a8 }; + public static uint[] Map_N = { 2485, 2482, 0x9a8 }; - public static uint[] Map_A = { 0x9b3, 0x9b0, 0x9a7 }; + public static uint[] Map_A = { 2483, 2480, 2471 }; - public static uint[] Map_H = { 0x9b4, 0x9b1, 0x9a6 }; + public static uint[] Map_H = { 2484, 2481, 2470 }; public static uint[] TowerArtKit_A = { 65, 62, 67 }; @@ -386,10 +354,10 @@ namespace Game.PvP struct OutdoorPvPHPWorldStates { - public const uint Display_A = 0x9ba; - public const uint Display_H = 0x9b9; + public const int Display_A = 0x9ba; + public const int Display_H = 0x9b9; - public const uint Count_H = 0x9ae; - public const uint Count_A = 0x9ac; + public const int Count_H = 0x9ae; + public const int Count_A = 0x9ac; } } diff --git a/sql/updates/world/master/2022_07_11_00_world.sql b/sql/updates/world/master/2022_07_11_00_world.sql new file mode 100644 index 000000000..f752c92ce --- /dev/null +++ b/sql/updates/world/master/2022_07_11_00_world.sql @@ -0,0 +1,107 @@ +DELETE FROM `world_state` WHERE `ID` IN (2313,2314,2317,2322,2323,2324,2325,2470,2471,2472,2473,2474,2475,2476,2478,2480,2481,2482,2483,2484,2485,2489,2490,2491,2493,2494,2495,2497,2502, +2503,2508,2509,2510,2512,2527,2528,2529,2533,2534,2535,2555,2556,2557,2558,2559,2560,2620,2621,2622,2623,2624,2625,2644,2645,2646,2647,2648,2649,2650,2651,2652,2655,2656,2657,2658,2659, +2660,2661,2662,2663,2664,2665,2666,2667,2668,2669,2670,2671,2672,2673,2676,2677,2681,2682,2683,2684,2685,2686,2688,2689,2690,2691,2692,2693,2694,2695,2696,2760,2761,2762,2763,2767,2768); +INSERT INTO `world_state` (`ID`,`DefaultValue`,`MapIDs`,`AreaIDs`,`ScriptName`,`Comment`) VALUES +(2313,0,'1','1377','','Silithus - Alliance Silithyst Collected'), +(2314,0,'1','1377','','Silithus - Horde Silithyst Collected'), +(2317,200,'1','1377','','Silithus - Max Silithyst'), +(2322,0,'1','1377','','Silithus - Sandworm N (unused)'), +(2323,0,'1','1377','','Silithus - Sandworm S (unused)'), +(2324,0,'1','1377','','Silithus - Sandworm SW (unused)'), +(2325,0,'1','1377','','Silithus - Sandworm E (unused)'), +(2470,0,'530','3483','','Hellfire Peninsula - The Stadium - Horde Controlled'), +(2471,0,'530','3483','','Hellfire Peninsula - The Stadium - Alliance Controlled'), +(2472,1,'530','3483','','Hellfire Peninsula - The Stadium - Neutral'), +(2473,0,'530','3483','','Hellfire Peninsula - Show Fort capture bar'), +(2474,50,'530','3483','','Hellfire Peninsula - Fort CaptureBar Value'), +(2475,20,'530','3483','','Hellfire Peninsula - Fort CaptureBar Neutral Zone Size'), +(2476,0,'530','3483','','Hellfire Peninsula - Alliance Forts Controlled'), +(2478,0,'530','3483','','Hellfire Peninsula - Horde Forts Controlled'), +(2480,0,'530','3483','','Hellfire Peninsula - The Overlook - Alliance Controlled'), +(2481,0,'530','3483','','Hellfire Peninsula - The Overlook - Horde Controlled'), +(2482,1,'530','3483','','Hellfire Peninsula - The Overlook - Neutral'), +(2483,0,'530','3483','','Hellfire Peninsula - Broken Hill - Alliance Controlled'), +(2484,0,'530','3483','','Hellfire Peninsula - Broken Hill - Horde Controlled'), +(2485,1,'530','3483','','Hellfire Peninsula - Broken Hill - Neutral'), +(2489,1,'530','3483','','Hellfire Peninsula - Show Horde Forts Controlled'), +(2490,1,'530','3483','','Hellfire Peninsula - Show Alliance Forts Controlled'), +(2491,0,'530','3518','','Nagrand - Halaa - Guards Remaining'), +(2493,15,'530','3518','','Nagrand - Halaa - Guards Max'), +(2494,50,'530','3518','','Nagrand - Halaa - CaptureBar Value'), +(2495,0,'530','3518','','Nagrand - Halaa - Show capture bar'), +(2497,0,'530','3518','','Nagrand - Halaa - CaptureBar Neutral Zone Size'), +(2502,0,'530','3518','','Nagrand - Halaa - Show Alliance Guards Remaining'), +(2503,0,'530','3518','','Nagrand - Halaa - Show Horde Guards Remaining'), +(2508,0,'530','3519','','Terokkar Forest - Show Locked time remaining (Neutral)'), +(2509,0,'530','3519','','Terokkar Forest - Locked time remaining hours'), +(2510,0,'530','3519','','Terokkar Forest - Locked time remaining minutes first digit'), +(2512,0,'530','3519','','Terokkar Forest - Locked time remaining minutes second digit'), +(2527,0,'530','3521','','Zangarmarsh - West Beacon Show CaptureBar'), +(2528,50,'530','3521','','Zangarmarsh - West Beacon CaptureBar Value'), +(2529,80,'530','3521','','Zangarmarsh - West Beacon CaptureBar Neutral Zone Size'), +(2533,0,'530','3521','','Zangarmarsh - East Beacon Show CaptureBar'), +(2534,50,'530','3521','','Zangarmarsh - East Beacon CaptureBar Value'), +(2535,80,'530','3521','','Zangarmarsh - East Beacon CaptureBar Neutral Zone Size'), +(2555,0,'530','3521','','Zangarmarsh - West Beacon - Alliance Controlled widget'), +(2556,0,'530','3521','','Zangarmarsh - West Beacon - Horde Controlled widget'), +(2557,1,'530','3521','','Zangarmarsh - West Beacon - Neutral widget'), +(2558,0,'530','3521','','Zangarmarsh - East Beacon - Alliance Controlled widget'), +(2559,0,'530','3521','','Zangarmarsh - East Beacon - Horde Controlled widget'), +(2560,1,'530','3521','','Zangarmarsh - East Beacon - Neutral widget'), +(2620,1,'530','3519','','Terokkar Forest - Show Towers Controlled'), +(2621,0,'530','3519','','Terokkar Forest - Alliance Towers Controlled'), +(2622,0,'530','3519','','Terokkar Forest - Horde Towers Controlled'), +(2623,0,'530','3519','','Terokkar Forest - Show Tower capture bar'), +(2624,80,'530','3519','','Terokkar Forest - Tower CaptureBar Neutral Zone Size'), +(2625,50,'530','3519','','Terokkar Forest - Tower CaptureBar Value'), +(2644,0,'530','3521','','Zangarmarsh - West Beacon - Alliance Controlled POI'), +(2645,0,'530','3521','','Zangarmarsh - West Beacon - Horde Controlled POI'), +(2646,1,'530','3521','','Zangarmarsh - West Beacon POI'), +(2647,1,'530','3521','','Zangarmarsh - Twinspire Graveyard'), +(2648,0,'530','3521','','Zangarmarsh - Twinspire Graveyard - Alliance Controlled'), +(2649,0,'530','3521','','Zangarmarsh - Twinspire Graveyard - Horde Controlled'), +(2650,0,'530','3521','','Zangarmarsh - East Beacon - Alliance Controlled POI'), +(2651,0,'530','3521','','Zangarmarsh - East Beacon - Horde Controlled POI'), +(2652,1,'530','3521','','Zangarmarsh - East Beacon POI'), +(2655,0,'530','3521','','Zangarmarsh - Alliance Field Scout (ready)'), +(2656,1,'530','3521','','Zangarmarsh - Alliance Field Scout (not ready)'), +(2657,1,'530','3521','','Zangarmarsh - Horde Field Scout (not ready)'), +(2658,0,'530','3521','','Zangarmarsh - Horde Field Scout (ready)'), +(2659,0,'530','3518','','Nagrand - Wyvern Camp (East) - Alliance Uncontrolled'), +(2660,0,'530','3518','','Nagrand - Wyvern Camp (East) - Horde Controlled'), +(2661,0,'530','3518','','Nagrand - Wyvern Camp (East) - Alliance Controlled'), +(2662,0,'530','3518','','Nagrand - Wyvern Camp (North) - Alliance Uncontrolled'), +(2663,0,'530','3518','','Nagrand - Wyvern Camp (North) - Horde Controlled'), +(2664,0,'530','3518','','Nagrand - Wyvern Camp (North) - Alliance Controlled'), +(2665,0,'530','3518','','Nagrand - Wyvern Camp (West) - Horde Controlled'), +(2666,0,'530','3518','','Nagrand - Wyvern Camp (West) - Alliance Controlled'), +(2667,0,'530','3518','','Nagrand - Wyvern Camp (West) - Alliance Uncontrolled'), +(2668,0,'530','3518','','Nagrand - Wyvern Camp (South) - Horde Controlled'), +(2669,0,'530','3518','','Nagrand - Wyvern Camp (South) - Alliance Controlled'), +(2670,0,'530','3518','','Nagrand - Wyvern Camp (South) - Alliance Uncontrolled'), +(2671,1,'530','3518','','Nagrand - Halaa - Uncontrolled'), +(2672,0,'530','3518','','Nagrand - Halaa - Horde Controlled'), +(2673,0,'530','3518','','Nagrand - Halaa - Alliance Controlled'), +(2676,0,'530','3518','','Nagrand - Halaa - Alliance Capturing'), +(2677,0,'530','3518','','Nagrand - Halaa - Horde Capturing'), +(2681,1,'530','3519','','Terokkar Forest - Spirit Tower (NW) - Neutral'), +(2682,0,'530','3519','','Terokkar Forest - Spirit Tower (NW) - Horde Controlled'), +(2683,0,'530','3519','','Terokkar Forest - Spirit Tower (NW) - Alliance Controlled'), +(2684,0,'530','3519','','Terokkar Forest - Spirit Tower (N) - Alliance Controlled'), +(2685,0,'530','3519','','Terokkar Forest - Spirit Tower (N) - Horde Controlled'), +(2686,1,'530','3519','','Terokkar Forest - Spirit Tower (N) - Neutral'), +(2688,0,'530','3519','','Terokkar Forest - Spirit Tower (NE) - Alliance Controlled'), +(2689,0,'530','3519','','Terokkar Forest - Spirit Tower (NE) - Horde Controlled'), +(2690,1,'530','3519','','Terokkar Forest - Spirit Tower (NE) - Neutral'), +(2691,0,'530','3519','','Terokkar Forest - Spirit Tower (S) - Alliance Controlled'), +(2692,0,'530','3519','','Terokkar Forest - Spirit Tower (S) - Horde Controlled'), +(2693,1,'530','3519','','Terokkar Forest - Spirit Tower (S) - Neutral'), +(2694,0,'530','3519','','Terokkar Forest - Spirit Tower (SE) - Alliance Controlled'), +(2695,0,'530','3519','','Terokkar Forest - Spirit Tower (SE) - Horde Controlled'), +(2696,1,'530','3519','','Terokkar Forest - Spirit Tower (SE) - Neutral'), +(2760,0,'530','3518','','Nagrand - Wyvern Camp (South) - Horde Uncontrolled'), +(2761,0,'530','3518','','Nagrand - Wyvern Camp (West) - Horde Uncontrolled'), +(2762,0,'530','3518','','Nagrand - Wyvern Camp (North) - Horde Uncontrolled'), +(2763,0,'530','3518','','Nagrand - Wyvern Camp (East) - Horde Uncontrolled'), +(2767,0,'530','3519','','Terokkar Forest - Show Locked time remaining (Alliance)'), +(2768,0,'530','3519','','Terokkar Forest - Show Locked time remaining (Horde)');