Battlefields: Move BF scripts out of game

Port From (https://github.com/TrinityCore/TrinityCore/commit/49523a74a4c28e5ae17f9a8352aa8224b765b7d8)
This commit is contained in:
hondacrx
2022-02-24 10:51:24 -05:00
parent 628a24923c
commit 569232c3fe
18 changed files with 763 additions and 548 deletions
+2 -2
View File
@@ -77,8 +77,8 @@ namespace Game.Arenas
public override void FillInitialWorldStates(InitWorldStates packet)
{
packet.AddState(ArenaWorldStates.AlivePlayersGreen, (int)GetAlivePlayersCountByTeam(Team.Horde));
packet.AddState(ArenaWorldStates.AlivePlayersGold, (int)GetAlivePlayersCountByTeam(Team.Alliance));
packet.AddState(ArenaWorldStates.AlivePlayersGreen, GetAlivePlayersCountByTeam(Team.Horde));
packet.AddState(ArenaWorldStates.AlivePlayersGold, GetAlivePlayersCountByTeam(Team.Alliance));
}
void UpdateArenaWorldState()
+3 -2
View File
@@ -29,8 +29,9 @@ namespace Game.BattleFields
{
public enum BattleFieldTypes
{
WinterGrasp,
TolBarad
WinterGrasp = 1,
TolBarad = 2,
Max
}
public class BattleField : ZoneScript
+30 -24
View File
@@ -15,6 +15,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using Framework.Database;
using Game.Entities;
using Game.Maps;
using System.Collections.Generic;
@@ -27,33 +28,38 @@ namespace Game.BattleFields
public void InitBattlefield()
{
BattleField wg = new BattlefieldWG();
// respawn, init variables
if (!wg.SetupBattlefield())
uint oldMSTime = Time.GetMSTime();
uint count = 0;
var result = DB.World.Query("SELECT TypeId, ScriptName FROM battlefield_template");
if (!result.IsEmpty())
{
Log.outError(LogFilter.Battlefield, "Battlefield: Wintergrasp init failed.");
}
else
{
_battlefieldSet.Add(wg);
Log.outInfo(LogFilter.Battlefield, "Battlefield: Wintergrasp successfully initiated.");
do
{
BattleFieldTypes typeId = (BattleFieldTypes)result.Read<byte>(0);
if (typeId >= BattleFieldTypes.Max)
{
Log.outError(LogFilter.Sql, $"BattlefieldMgr::InitBattlefield: Invalid TypeId value {typeId} in battlefield_template, skipped.");
continue;
}
uint scriptId = Global.ObjectMgr.GetScriptId(result.Read<string>(1));
var bf = Global.ScriptMgr.CreateBattlefield(scriptId);
if (!bf.SetupBattlefield())
{
Log.outInfo(LogFilter.Battlefield, $"Setting up battlefield with TypeId {typeId} failed.");
continue;
}
_battlefieldSet.Add(bf);
Log.outInfo(LogFilter.Battlefield, $"Setting up battlefield with TypeId {typeId} succeeded.");
++count;
} while (result.NextRow());
}
/*
For Cataclysm: Tol Barad
Battlefield* tb = new BattlefieldTB;
// respawn, init variables
if (!tb.SetupBattlefield())
{
TC_LOG_DEBUG("bg.battlefield", "Battlefield: Tol Barad init failed.");
delete tb;
}
else
{
_battlefieldSet.push_back(tb);
TC_LOG_DEBUG("bg.battlefield", "Battlefield: Tol Barad successfully initiated.");
}
*/
Log.outInfo(LogFilter.ServerLoading, $"Loaded {count} battlefields in {Time.GetMSTimeDiffToNow(oldMSTime)} ms");
}
public void AddZone(uint zoneId, BattleField bf)
File diff suppressed because it is too large Load Diff
@@ -1,715 +0,0 @@
/*
* Copyright (C) 2012-2020 CypherCore <http://github.com/CypherCore>
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
using Framework.Constants;
using Game.Entities;
using System.Numerics;
namespace Game.BattleFields
{
static class WGConst
{
public const uint MapId = 571; // Northrend
public const byte MaxOutsideNpcs = 14;
public const byte OutsideAllianceNpc = 7;
public const byte MaxWorkshops = 6;
#region Data
public static BfWGCoordGY[] WGGraveYard =
{
new BfWGCoordGY(5104.750f, 2300.940f, 368.579f, 0.733038f, 1329, WGGossipText.GYNE, TeamId.Neutral),
new BfWGCoordGY(5099.120f, 3466.036f, 368.484f, 5.317802f, 1330, WGGossipText.GYNW, TeamId.Neutral),
new BfWGCoordGY(4314.648f, 2408.522f, 392.642f, 6.268125f, 1333, WGGossipText.GYSE, TeamId.Neutral),
new BfWGCoordGY(4331.716f, 3235.695f, 390.251f, 0.008500f, 1334, WGGossipText.GYSW, TeamId.Neutral),
new BfWGCoordGY(5537.986f, 2897.493f, 517.057f, 4.819249f, 1285, WGGossipText.GYKeep, TeamId.Neutral),
new BfWGCoordGY(5032.454f, 3711.382f, 372.468f, 3.971623f, 1331, WGGossipText.GYHorde, TeamId.Horde),
new BfWGCoordGY(5140.790f, 2179.120f, 390.950f, 1.972220f, 1332, WGGossipText.GYAlliance, TeamId.Alliance),
};
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);
public static Position RelicPos = new(5440.379f, 2840.493f, 430.2816f, -1.832595f);
public static Quaternion RelicRot = new(0.0f, 0.0f, -0.7933531f, 0.6087617f);
//Destructible (Wall, Tower..)
public static WintergraspBuildingSpawnData[] WGGameObjectBuilding =
{
// Wall (Not spawned in db)
// Entry WS X Y Z O rX rY rZ rW Type
new WintergraspBuildingSpawnData(190219, 3749, 5371.457f, 3047.472f, 407.5710f, 3.14159300f, 0.0f, 0.0f, -1.000000000f, 0.00000000f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(190220, 3750, 5331.264f, 3047.105f, 407.9228f, 0.05235888f, 0.0f, 0.0f, 0.026176450f, 0.99965730f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191795, 3764, 5385.841f, 2909.490f, 409.7127f, 0.00872424f, 0.0f, 0.0f, 0.004362106f, 0.99999050f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191796, 3772, 5384.452f, 2771.835f, 410.2704f, 3.14159300f, 0.0f, 0.0f, -1.000000000f, 0.00000000f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191799, 3762, 5371.436f, 2630.610f, 408.8163f, 3.13285800f, 0.0f, 0.0f, 0.999990500f, 0.00436732f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191800, 3766, 5301.838f, 2909.089f, 409.8661f, 0.00872424f, 0.0f, 0.0f, 0.004362106f, 0.99999050f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191801, 3770, 5301.063f, 2771.411f, 409.9014f, 3.14159300f, 0.0f, 0.0f, -1.000000000f, 0.00000000f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191802, 3751, 5280.197f, 2995.583f, 408.8249f, 1.61442800f, 0.0f, 0.0f, 0.722363500f, 0.69151360f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191803, 3752, 5279.136f, 2956.023f, 408.6041f, 1.57079600f, 0.0f, 0.0f, 0.707106600f, 0.70710690f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191804, 3767, 5278.685f, 2882.513f, 409.5388f, 1.57079600f, 0.0f, 0.0f, 0.707106600f, 0.70710690f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191806, 3769, 5279.502f, 2798.945f, 409.9983f, 1.57079600f, 0.0f, 0.0f, 0.707106600f, 0.70710690f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191807, 3759, 5279.937f, 2724.766f, 409.9452f, 1.56207000f, 0.0f, 0.0f, 0.704014800f, 0.71018530f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191808, 3760, 5279.601f, 2683.786f, 409.8488f, 1.55334100f, 0.0f, 0.0f, 0.700908700f, 0.71325110f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191809, 3761, 5330.955f, 2630.777f, 409.2826f, 3.13285800f, 0.0f, 0.0f, 0.999990500f, 0.00436732f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(190369, 3753, 5256.085f, 2933.963f, 409.3571f, 3.13285800f, 0.0f, 0.0f, 0.999990500f, 0.00436732f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(190370, 3758, 5257.463f, 2747.327f, 409.7427f, -3.13285800f, 0.0f, 0.0f, -0.999990500f, 0.00436732f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(190371, 3754, 5214.960f, 2934.089f, 409.1905f, -0.00872424f, 0.0f, 0.0f, -0.004362106f, 0.99999050f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(190372, 3757, 5215.821f, 2747.566f, 409.1884f, -3.13285800f, 0.0f, 0.0f, -0.999990500f, 0.00436732f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(190374, 3755, 5162.273f, 2883.043f, 410.2556f, 1.57952200f, 0.0f, 0.0f, 0.710185100f, 0.70401500f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(190376, 3756, 5163.724f, 2799.838f, 409.2270f, 1.57952200f, 0.0f, 0.0f, 0.710185100f, 0.70401500f, WGGameObjectBuildingType.Wall),
// Tower of keep (Not spawned in db)
new WintergraspBuildingSpawnData(190221, 3711, 5281.154f, 3044.588f, 407.8434f, 3.115388f, 0.0f, 0.0f, 0.9999142f, 0.013101960f, WGGameObjectBuildingType.KeepTower), // NW
new WintergraspBuildingSpawnData(190373, 3713, 5163.757f, 2932.228f, 409.1904f, 3.124123f, 0.0f, 0.0f, 0.9999619f, 0.008734641f, WGGameObjectBuildingType.KeepTower), // SW
new WintergraspBuildingSpawnData(190377, 3714, 5166.397f, 2748.368f, 409.1884f, -1.570796f, 0.0f, 0.0f, -0.7071066f, 0.707106900f, WGGameObjectBuildingType.KeepTower), // SE
new WintergraspBuildingSpawnData(190378, 3712, 5281.192f, 2632.479f, 409.0985f, -1.588246f, 0.0f, 0.0f, -0.7132492f, 0.700910500f, WGGameObjectBuildingType.KeepTower), // NE
// Wall (with passage) (Not spawned in db)
new WintergraspBuildingSpawnData(191797, 3765, 5343.290f, 2908.860f, 409.5757f, 0.00872424f, 0.0f, 0.0f, 0.004362106f, 0.9999905f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191798, 3771, 5342.719f, 2771.386f, 409.6249f, 3.14159300f, 0.0f, 0.0f, -1.000000000f, 0.0000000f, WGGameObjectBuildingType.Wall),
new WintergraspBuildingSpawnData(191805, 3768, 5279.126f, 2840.797f, 409.7826f, 1.57952200f, 0.0f, 0.0f, 0.710185100f, 0.7040150f, WGGameObjectBuildingType.Wall),
// South tower (Not spawned in db)
new WintergraspBuildingSpawnData(190356, 3704, 4557.173f, 3623.943f, 395.8828f, 1.675516f, 0.0f, 0.0f, 0.7431450f, 0.669130400f, WGGameObjectBuildingType.Tower), // W
new WintergraspBuildingSpawnData(190357, 3705, 4398.172f, 2822.497f, 405.6270f, -3.124123f, 0.0f, 0.0f, -0.9999619f, 0.008734641f, WGGameObjectBuildingType.Tower), // S
new WintergraspBuildingSpawnData(190358, 3706, 4459.105f, 1944.326f, 434.9912f, -2.002762f, 0.0f, 0.0f, -0.8422165f, 0.539139500f, WGGameObjectBuildingType.Tower), // E
// Door of forteress (Not spawned in db)
new WintergraspBuildingSpawnData(WGGameObjects.FortressGate, 3763, 5162.991f, 2841.232f, 410.1892f, -3.132858f, 0.0f, 0.0f, -0.9999905f, 0.00436732f, WGGameObjectBuildingType.Door),
// Last door (Not spawned in db)
new WintergraspBuildingSpawnData(WGGameObjects.VaultGate, 3773, 5397.108f, 2841.54f, 425.9014f, 3.141593f, 0.0f, 0.0f, -1.0f, 0.0f, WGGameObjectBuildingType.DoorLast),
};
public static StaticWintergraspTowerInfo[] TowerData =
{
new StaticWintergraspTowerInfo(WintergraspTowerIds.FortressNW, WintergraspText.NwKeeptowerDamage, WintergraspText.NwKeeptowerDestroy),
new StaticWintergraspTowerInfo(WintergraspTowerIds.FortressSW,WintergraspText.SwKeeptowerDamage,WintergraspText.SwKeeptowerDestroy),
new StaticWintergraspTowerInfo(WintergraspTowerIds.FortressSE,WintergraspText.SeKeeptowerDamage,WintergraspText.SeKeeptowerDestroy),
new StaticWintergraspTowerInfo(WintergraspTowerIds.FortressNE,WintergraspText.NeKeeptowerDamage,WintergraspText.NeKeeptowerDestroy),
new StaticWintergraspTowerInfo(WintergraspTowerIds.Shadowsight,WintergraspText.WesternTowerDamage,WintergraspText.WesternTowerDestroy),
new StaticWintergraspTowerInfo(WintergraspTowerIds.WintersEdge,WintergraspText.SouthernTowerDamage,WintergraspText.SouthernTowerDestroy),
new StaticWintergraspTowerInfo(WintergraspTowerIds.Flamewatch,WintergraspText.EasternTowerDamage,WintergraspText.EasternTowerDestroy)
};
public static Position[] WGTurret =
{
new Position(5391.19f, 3060.8f, 419.616f, 1.69557f),
new Position(5266.75f, 2976.5f, 421.067f, 3.20354f),
new Position(5234.86f, 2948.8f, 420.88f, 1.61311f),
new Position(5323.05f, 2923.7f, 421.645f, 1.5817f),
new Position(5363.82f, 2923.87f, 421.709f, 1.60527f),
new Position(5264.04f, 2861.34f, 421.587f, 3.21142f),
new Position(5264.68f, 2819.78f, 421.656f, 3.15645f),
new Position(5322.16f, 2756.69f, 421.646f, 4.69978f),
new Position(5363.78f, 2756.77f, 421.629f, 4.78226f),
new Position(5236.2f, 2732.68f, 421.649f, 4.72336f),
new Position(5265.02f, 2704.63f, 421.7f, 3.12507f),
new Position(5350.87f, 2616.03f, 421.243f, 4.72729f),
new Position(5390.95f, 2615.5f, 421.126f, 4.6409f),
new Position(5148.8f, 2820.24f, 421.621f, 3.16043f),
new Position(5147.98f, 2861.93f, 421.63f, 3.18792f),
};
public static WintergraspGameObjectData[] WGPortalDefenderData =
{
// Player teleporter
new WintergraspGameObjectData(5153.408f, 2901.349f, 409.1913f, -0.06981169f, 0.0f, 0.0f, -0.03489876f, 0.9993908f, 190763, 191575),
new WintergraspGameObjectData(5268.698f, 2666.421f, 409.0985f, -0.71558490f, 0.0f, 0.0f, -0.35020730f, 0.9366722f, 190763, 191575),
new WintergraspGameObjectData(5197.050f, 2944.814f, 409.1913f, 2.33874000f, 0.0f, 0.0f, 0.92050460f, 0.3907318f, 190763, 191575),
new WintergraspGameObjectData(5196.671f, 2737.345f, 409.1892f, -2.93213900f, 0.0f, 0.0f, -0.99452110f, 0.1045355f, 190763, 191575),
new WintergraspGameObjectData(5314.580f, 3055.852f, 408.8620f, 0.54105060f, 0.0f, 0.0f, 0.26723770f, 0.9636307f, 190763, 191575),
new WintergraspGameObjectData(5391.277f, 2828.094f, 418.6752f, -2.16420600f, 0.0f, 0.0f, -0.88294700f, 0.4694727f, 190763, 191575),
new WintergraspGameObjectData(5153.931f, 2781.671f, 409.2455f, 1.65806200f, 0.0f, 0.0f, 0.73727700f, 0.6755905f, 190763, 191575),
new WintergraspGameObjectData(5311.445f, 2618.931f, 409.0916f, -2.37364400f, 0.0f, 0.0f, -0.92718320f, 0.3746083f, 190763, 191575),
new WintergraspGameObjectData(5269.208f, 3013.838f, 408.8276f, -1.76278200f, 0.0f, 0.0f, -0.77162460f, 0.6360782f, 190763, 191575),
new WintergraspGameObjectData(5401.634f, 2853.667f, 418.6748f, 2.63544400f, 0.0f, 0.0f, 0.96814730f, 0.2503814f, 192819, 192819), // return portal inside fortress, neutral
// Vehicle teleporter
new WintergraspGameObjectData(5314.515f, 2703.687f, 408.5502f, -0.89011660f, 0.0f, 0.0f, -0.43051050f, 0.9025856f, 192951, 192951),
new WintergraspGameObjectData(5316.252f, 2977.042f, 408.5385f, -0.82030330f, 0.0f, 0.0f, -0.39874840f, 0.9170604f, 192951, 192951)
};
public static WintergraspTowerData[] AttackTowers =
{
//West Tower
new WintergraspTowerData()
{
towerEntry = 190356,
GameObject = new WintergraspGameObjectData[]
{
new WintergraspGameObjectData(4559.113f, 3606.216f, 419.9992f, 4.799657f, 0.0f, 0.0f, -0.67558960f, 0.73727790f, 192488, 192501), // Flag on tower
new WintergraspGameObjectData(4539.420f, 3622.490f, 420.0342f, 3.211419f, 0.0f, 0.0f, -0.99939060f, 0.03490613f, 192488, 192501), // Flag on tower
new WintergraspGameObjectData(4555.258f, 3641.648f, 419.9740f, 1.675514f, 0.0f, 0.0f, 0.74314400f, 0.66913150f, 192488, 192501), // Flag on tower
new WintergraspGameObjectData(4574.872f, 3625.911f, 420.0792f, 0.087266f, 0.0f, 0.0f, 0.04361916f, 0.99904820f, 192488, 192501), // Flag on tower
new WintergraspGameObjectData(4433.899f, 3534.142f, 360.2750f, 4.433136f, 0.0f, 0.0f, -0.79863550f, 0.60181500f, 192269, 192278), // Flag near workshop
new WintergraspGameObjectData(4572.933f, 3475.519f, 363.0090f, 1.422443f, 0.0f, 0.0f, 0.65275960f, 0.75756520f, 192269, 192277) // Flag near bridge
},
CreatureBottom = new WintergraspObjectPositionData[]
{
new WintergraspObjectPositionData(4418.688477f, 3506.251709f, 358.975494f, 4.293305f, WGNpcs.GuardH, WGNpcs.GuardA), // Roaming Guard
}
},
//South Tower
new WintergraspTowerData()
{
towerEntry = 190357,
GameObject = new WintergraspGameObjectData[]
{
new WintergraspGameObjectData(4416.004f, 2822.666f, 429.8512f, 6.2657330f, 0.0f, 0.0f, -0.00872612f, 0.99996190f, 192488, 192501), // Flag on tower
new WintergraspGameObjectData(4398.819f, 2804.698f, 429.7920f, 4.6949370f, 0.0f, 0.0f, -0.71325020f, 0.70090960f, 192488, 192501), // Flag on tower
new WintergraspGameObjectData(4387.622f, 2719.566f, 389.9351f, 4.7385700f, 0.0f, 0.0f, -0.69779010f, 0.71630230f, 192366, 192414), // Flag near tower
new WintergraspGameObjectData(4464.124f, 2855.453f, 406.1106f, 0.8290324f, 0.0f, 0.0f, 0.40274720f, 0.91531130f, 192366, 192429), // Flag near tower
new WintergraspGameObjectData(4526.457f, 2810.181f, 391.1997f, 3.2899610f, 0.0f, 0.0f, -0.99724960f, 0.07411628f, 192269, 192278) // Flag near bridge
},
CreatureBottom = new WintergraspObjectPositionData[]
{
new WintergraspObjectPositionData(4452.859863f, 2808.870117f, 402.604004f, 6.056290f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
new WintergraspObjectPositionData(4455.899902f, 2835.958008f, 401.122559f, 0.034907f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
new WintergraspObjectPositionData(4412.649414f, 2953.792236f, 374.799957f, 0.980838f, WGNpcs.GuardH, WGNpcs.GuardA), // Roaming Guard
new WintergraspObjectPositionData(4362.089844f, 2811.510010f, 407.337006f, 3.193950f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
new WintergraspObjectPositionData(4412.290039f, 2753.790039f, 401.015015f, 5.829400f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
new WintergraspObjectPositionData(4421.939941f, 2773.189941f, 400.894989f, 5.707230f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
}
},
//East Tower
new WintergraspTowerData()
{
towerEntry = 190358,
GameObject = new WintergraspGameObjectData[]
{
new WintergraspGameObjectData(4466.793f, 1960.418f, 459.1437f, 1.151916f, 0.0f, 0.0f, 0.5446386f, 0.8386708f, 192488, 192501), // Flag on tower
new WintergraspGameObjectData(4475.351f, 1937.031f, 459.0702f, 5.846854f, 0.0f, 0.0f, -0.2164392f, 0.9762961f, 192488, 192501), // Flag on tower
new WintergraspGameObjectData(4451.758f, 1928.104f, 459.0759f, 4.276057f, 0.0f, 0.0f, -0.8433914f, 0.5372996f, 192488, 192501), // Flag on tower
new WintergraspGameObjectData(4442.987f, 1951.898f, 459.0930f, 2.740162f, 0.0f, 0.0f, 0.9799242f, 0.1993704f, 192488, 192501) // Flag on tower
},
CreatureBottom = new WintergraspObjectPositionData[]
{
new WintergraspObjectPositionData(4501.060059f, 1990.280029f, 431.157013f, 1.029740f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
new WintergraspObjectPositionData(4463.830078f, 2015.180054f, 430.299988f, 1.431170f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
new WintergraspObjectPositionData(4494.580078f, 1943.760010f, 435.627014f, 6.195920f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
new WintergraspObjectPositionData(4450.149902f, 1897.579956f, 435.045013f, 4.398230f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
new WintergraspObjectPositionData(4428.870117f, 1906.869995f, 432.648010f, 3.996800f, WGNpcs.GuardH, WGNpcs.GuardA), // Standing Guard
}
}
};
public static WintergraspTowerCannonData[] TowerCannon =
{
new WintergraspTowerCannonData()
{
towerEntry = 190221,
TurretTop = new Position[]
{
new Position(5255.88f, 3047.63f, 438.499f, 3.13677f),
new Position(5280.9f, 3071.32f, 438.499f, 1.62879f),
},
},
new WintergraspTowerCannonData()
{
towerEntry = 190373,
TurretTop = new Position[]
{
new Position(5138.59f, 2935.16f, 439.845f, 3.11723f),
new Position(5163.06f, 2959.52f, 439.846f, 1.47258f),
},
},
new WintergraspTowerCannonData()
{
towerEntry = 190377,
TurretTop = new Position[]
{
new Position(5163.84f, 2723.74f, 439.844f, 1.3994f),
new Position(5139.69f, 2747.4f, 439.844f, 3.17221f),
},
},
new WintergraspTowerCannonData()
{
towerEntry = 190378,
TurretTop = new Position[]
{
new Position(5278.21f, 2607.23f, 439.755f, 4.71944f),
new Position(5255.01f, 2631.98f, 439.755f, 3.15257f),
},
},
new WintergraspTowerCannonData()
{
towerEntry = 190356,
TowerCannonBottom = new Position[]
{
new Position(4537.380371f, 3599.531738f, 402.886993f, 3.998462f),
new Position(4581.497559f, 3604.087158f, 402.886963f, 5.651723f),
},
TurretTop = new Position[]
{
new Position(4469.448242f, 1966.623779f, 465.647217f, 1.153573f),
new Position(4581.895996f, 3626.438477f, 426.539062f, 0.117806f),
},
},
new WintergraspTowerCannonData()
{
towerEntry = 190357,
TowerCannonBottom = new Position[]
{
new Position(4421.640137f, 2799.935791f, 412.630920f, 5.459298f),
new Position(4420.263184f, 2845.340332f, 412.630951f, 0.742197f),
},
TurretTop = new Position[]
{
new Position(4423.430664f, 2822.762939f, 436.283142f, 6.223487f),
new Position(4397.825684f, 2847.629639f, 436.283325f, 1.579430f),
new Position(4398.814941f, 2797.266357f, 436.283051f, 4.703747f),
},
},
new WintergraspTowerCannonData()
{
towerEntry = 190358,
TowerCannonBottom = new Position[]
{
new Position(4448.138184f, 1974.998779f, 441.995911f, 1.967238f),
new Position(4448.713379f, 1955.148682f, 441.995178f, 0.380733f),
},
TurretTop = new Position[]
{
new Position(4469.448242f, 1966.623779f, 465.647217f, 1.153573f),
new Position(4481.996582f, 1933.658325f, 465.647186f, 5.873029f),
},
}
};
public static StaticWintergraspWorkshopInfo[] WorkshopData =
{
new StaticWintergraspWorkshopInfo()
{
WorkshopId = WGWorkshopIds.Ne,
WorldStateId = WorldStates.BattlefieldWgWorkshopNe,
AllianceCaptureTextId = WintergraspText.SunkenRingCaptureAlliance,
AllianceAttackTextId = WintergraspText.SunkenRingAttackAlliance,
HordeCaptureTextId = WintergraspText.SunkenRingCaptureHorde,
HordeAttackTextId = WintergraspText.SunkenRingAttackHorde
},
new StaticWintergraspWorkshopInfo()
{
WorkshopId = WGWorkshopIds.Nw,
WorldStateId = WorldStates.BattlefieldWgWorkshopNw,
AllianceCaptureTextId = WintergraspText.BrokenTempleCaptureAlliance,
AllianceAttackTextId = WintergraspText.BrokenTempleAttackAlliance,
HordeCaptureTextId = WintergraspText.BrokenTempleCaptureHorde,
HordeAttackTextId = WintergraspText.BrokenTempleAttackHorde
},
new StaticWintergraspWorkshopInfo()
{
WorkshopId = WGWorkshopIds.Se,
WorldStateId = WorldStates.BattlefieldWgWorkshopSe,
AllianceCaptureTextId = WintergraspText.EastsparkCaptureAlliance,
AllianceAttackTextId = WintergraspText.EastsparkAttackAlliance,
HordeCaptureTextId = WintergraspText.EastsparkCaptureHorde,
HordeAttackTextId = WintergraspText.EastsparkAttackHorde
},
new StaticWintergraspWorkshopInfo()
{
WorkshopId = WGWorkshopIds.Sw,
WorldStateId = WorldStates.BattlefieldWgWorkshopSw,
AllianceCaptureTextId = WintergraspText.WestsparkCaptureAlliance,
AllianceAttackTextId = WintergraspText.WestsparkAttackAlliance,
HordeCaptureTextId = WintergraspText.WestsparkCaptureHorde,
HordeAttackTextId = WintergraspText.WestsparkAttackHorde
},
// KEEP WORKSHOPS - It can't be taken, so it doesn't have a textids
new StaticWintergraspWorkshopInfo()
{
WorkshopId = WGWorkshopIds.KeepWest,
WorldStateId = WorldStates.BattlefieldWgWorkshopKW
},
new StaticWintergraspWorkshopInfo()
{
WorkshopId = WGWorkshopIds.KeepEast,
WorldStateId = WorldStates.BattlefieldWgWorkshopKE
}
};
#endregion
}
struct WGData
{
public const int DamagedTowerDef = 0;
public const int BrokenTowerDef = 1;
public const int DamagedTowerAtt = 2;
public const int BrokenTowerAtt = 3;
public const int MaxVehicleA = 4;
public const int MaxVehicleH = 5;
public const int VehicleA = 6;
public const int VehicleH = 7;
public const int WonA = 8;
public const int DefA = 9;
public const int WonH = 10;
public const int DefH = 11;
public const int Max = 12;
}
struct WGAchievements
{
public const uint WinWg = 1717;
public const uint WinWg100 = 1718; // @Todo: Has To Be Implemented
public const uint WgGnomeslaughter = 1723; // @Todo: Has To Be Implemented
public const uint WgTowerDestroy = 1727;
public const uint DestructionDerbyA = 1737; // @Todo: Has To Be Implemented
public const uint WgTowerCannonKill = 1751; // @Todo: Has To Be Implemented
public const uint WgMasterA = 1752; // @Todo: Has To Be Implemented
public const uint WinWgTimer10 = 1755;
public const uint StoneKeeper50 = 2085; // @Todo: Has To Be Implemented
public const uint StoneKeeper100 = 2086; // @Todo: Has To Be Implemented
public const uint StoneKeeper250 = 2087; // @Todo: Has To Be Implemented
public const uint StoneKeeper500 = 2088; // @Todo: Has To Be Implemented
public const uint StoneKeeper1000 = 2089; // @Todo: Has To Be Implemented
public const uint WgRanger = 2199; // @Todo: Has To Be Implemented
public const uint DestructionDerbyH = 2476; // @Todo: Has To Be Implemented
public const uint WgMasterH = 2776; // @Todo: Has To Be Implemented
}
struct WGSpells
{
// Wartime Auras
public const uint Recruit = 37795;
public const uint Corporal = 33280;
public const uint Lieutenant = 55629;
public const uint Tenacity = 58549;
public const uint TenacityVehicle = 59911;
public const uint TowerControl = 62064;
public const uint SpiritualImmunity = 58729;
public const uint GreatHonor = 58555;
public const uint GreaterHonor = 58556;
public const uint GreatestHonor = 58557;
public const uint AllianceFlag = 14268;
public const uint HordeFlag = 14267;
public const uint GrabPassenger = 61178;
// Reward Spells
public const uint VictoryReward = 56902;
public const uint DefeatReward = 58494;
public const uint DamagedTower = 59135;
public const uint DestroyedTower = 59136;
public const uint DamagedBuilding = 59201;
public const uint IntactBuilding = 59203;
public const uint TeleportBridge = 59096;
public const uint TeleportFortress = 60035;
public const uint TeleportDalaran = 53360;
public const uint VictoryAura = 60044;
// Other Spells
public const uint WintergraspWater = 36444;
public const uint EssenceOfWintergrasp = 58045;
public const uint WintergraspRestrictedFlightArea = 91604;
// Phasing Spells
public const uint HordeControlsFactoryPhaseShift = 56618; // Adds Phase 16
public const uint AllianceControlsFactoryPhaseShift = 56617; // Adds Phase 32
public const uint HordeControlPhaseShift = 55773; // Adds Phase 64
public const uint AllianceControlPhaseShift = 55774; // Adds Phase 128
}
struct WGNpcs
{
public const uint GuardH = 30739;
public const uint GuardA = 30740;
public const uint Stalker = 15214;
public const uint TaunkaSpiritGuide = 31841; // Horde Spirit Guide For Wintergrasp
public const uint DwarvenSpiritGuide = 31842; // Alliance Spirit Guide For Wintergrasp
public const uint SiegeEngineAlliance = 28312;
public const uint SiegeEngineHorde = 32627;
public const uint Catapult = 27881;
public const uint Demolisher = 28094;
public const uint TowerCannon = 28366;
}
struct WGGameObjects
{
public const uint FactoryBannerNe = 190475;
public const uint FactoryBannerNw = 190487;
public const uint FactoryBannerSe = 194959;
public const uint FactoryBannerSw = 194962;
public const uint TitanSRelic = 192829;
public const uint FortressTower1 = 190221;
public const uint FortressTower2 = 190373;
public const uint FortressTower3 = 190377;
public const uint FortressTower4 = 190378;
public const uint ShadowsightTower = 190356;
public const uint WinterSEdgeTower = 190357;
public const uint FlamewatchTower = 190358;
public const uint FortressGate = 190375;
public const uint VaultGate = 191810;
public const uint KeepCollisionWall = 194323;
}
struct WintergraspTowerIds
{
public const byte FortressNW = 0;
public const byte FortressSW = 1;
public const byte FortressSE = 2;
public const byte FortressNE = 3;
public const byte Shadowsight = 4;
public const byte WintersEdge = 5;
public const byte Flamewatch = 6;
}
struct WGWorkshopIds
{
public const byte Se = 0;
public const byte Sw = 1;
public const byte Ne = 2;
public const byte Nw = 3;
public const byte KeepWest = 4;
public const byte KeepEast = 5;
}
struct WGGossipText
{
public const int GYNE = 20071;
public const int GYNW = 20072;
public const int GYSE = 20074;
public const int GYSW = 20073;
public const int GYKeep = 20070;
public const int GYHorde = 20075;
public const int GYAlliance = 20076;
}
struct WGGraveyardId
{
public const uint WorkshopNE = 0;
public const uint WorkshopNW = 1;
public const uint WorkshopSE = 2;
public const uint WorkshopSW = 3;
public const uint Keep = 4;
public const uint Horde = 5;
public const uint Alliance = 6;
public const uint Max = 7;
}
struct WintergraspQuests
{
public const uint VictoryAlliance = 13181;
public const uint VictoryHorde = 13183;
public const uint CreditTowersDestroyed = 35074;
public const uint CreditDefendSiege = 31284;
}
struct WintergraspText
{
// Invisible Stalker
public const byte SouthernTowerDamage = 1;
public const byte SouthernTowerDestroy = 2;
public const byte EasternTowerDamage = 3;
public const byte EasternTowerDestroy = 4;
public const byte WesternTowerDamage = 5;
public const byte WesternTowerDestroy = 6;
public const byte NwKeeptowerDamage = 7;
public const byte NwKeeptowerDestroy = 8;
public const byte SeKeeptowerDamage = 9;
public const byte SeKeeptowerDestroy = 10;
public const byte BrokenTempleAttackAlliance = 11;
public const byte BrokenTempleCaptureAlliance = 12;
public const byte BrokenTempleAttackHorde = 13;
public const byte BrokenTempleCaptureHorde = 14;
public const byte EastsparkAttackAlliance = 15;
public const byte EastsparkCaptureAlliance = 16;
public const byte EastsparkAttackHorde = 17;
public const byte EastsparkCaptureHorde = 18;
public const byte SunkenRingAttackAlliance = 19;
public const byte SunkenRingCaptureAlliance = 20;
public const byte SunkenRingAttackHorde = 21;
public const byte SunkenRingCaptureHorde = 22;
public const byte WestsparkAttackAlliance = 23;
public const byte WestsparkCaptureAlliance = 24;
public const byte WestsparkAttackHorde = 25;
public const byte WestsparkCaptureHorde = 26;
public const byte StartGrouping = 27;
public const byte StartBattle = 28;
public const byte FortressDefendAlliance = 29;
public const byte FortressCaptureAlliance = 30;
public const byte FortressDefendHorde = 31;
public const byte FortressCaptureHorde = 32;
public const byte NeKeeptowerDamage = 33;
public const byte NeKeeptowerDestroy = 34;
public const byte SwKeeptowerDamage = 35;
public const byte SwKeeptowerDestroy = 36;
public const byte RankCorporal = 37;
public const byte RankFirstLieutenant = 38;
}
enum WGGameObjectState
{
None,
NeutralIntact,
NeutralDamage,
NeutralDestroy,
HordeIntact,
HordeDamage,
HordeDestroy,
AllianceIntact,
AllianceDamage,
AllianceDestroy
}
enum WGGameObjectBuildingType
{
Door,
Titanrelic,
Wall,
DoorLast,
KeepTower,
Tower
}
//Data Structs
struct BfWGCoordGY
{
public BfWGCoordGY(float x, float y, float z, float o, uint graveyardId, int textId, uint startControl)
{
pos = new Position(x, y, z, o);
GraveyardID = graveyardId;
TextId = textId;
StartControl = startControl;
}
public Position pos;
public uint GraveyardID;
public int TextId;// for gossip menu
public uint StartControl;
}
struct WintergraspBuildingSpawnData
{
public WintergraspBuildingSpawnData(uint entry, uint worldstate, float x, float y, float z, float o, float rX, float rY, float rZ, float rW, WGGameObjectBuildingType type)
{
Entry = entry;
WorldState = worldstate;
Pos = new Position(x, y, z, o);
Rot = new Quaternion(rX, rY, rZ, rW);
BuildingType = type;
}
public uint Entry;
public uint WorldState;
public Position Pos;
public Quaternion Rot;
public WGGameObjectBuildingType BuildingType;
}
struct WintergraspGameObjectData
{
public WintergraspGameObjectData(float x, float y, float z, float o, float rX, float rY, float rZ, float rW, uint hordeEntry, uint allianceEntry)
{
Pos = new Position(x, y, z, o);
Rot = new Quaternion(rX, rY, rZ, rW);
HordeEntry = hordeEntry;
AllianceEntry = allianceEntry;
}
public Position Pos;
public Quaternion Rot;
public uint HordeEntry;
public uint AllianceEntry;
}
class WintergraspTowerData
{
public uint towerEntry; // Gameobject id of tower
public WintergraspGameObjectData[] GameObject = new WintergraspGameObjectData[6]; // Gameobject position and entry (Horde/Alliance)
// Creature: Turrets and Guard // @todo: Killed on Tower destruction ? Tower damage ? Requires confirming
public WintergraspObjectPositionData[] CreatureBottom = new WintergraspObjectPositionData[9];
}
struct WintergraspObjectPositionData
{
public WintergraspObjectPositionData(float x, float y, float z, float o, uint hordeEntry, uint allianceEntry)
{
Pos = new Position(x, y, z, o);
HordeEntry = hordeEntry;
AllianceEntry = allianceEntry;
}
public Position Pos;
public uint HordeEntry;
public uint AllianceEntry;
}
class WintergraspTowerCannonData
{
public WintergraspTowerCannonData()
{
TowerCannonBottom = System.Array.Empty<Position>();
TurretTop = System.Array.Empty<Position>();
}
public uint towerEntry;
public Position[] TowerCannonBottom;
public Position[] TurretTop;
}
class StaticWintergraspWorkshopInfo
{
public byte WorkshopId;
public WorldStates WorldStateId;
public byte AllianceCaptureTextId;
public byte AllianceAttackTextId;
public byte HordeCaptureTextId;
public byte HordeAttackTextId;
}
class StaticWintergraspTowerInfo
{
public StaticWintergraspTowerInfo(byte towerId, byte damagedTextId, byte destroyedTextId)
{
TowerId = towerId;
DamagedTextId = damagedTextId;
DestroyedTextId = destroyedTextId;
}
public byte TowerId;
public byte DamagedTextId;
public byte DestroyedTextId;
}
}
@@ -321,8 +321,8 @@ namespace Game.BattleGrounds.Zones
// Team scores
packet.AddState(ABWorldStates.ResourcesMax, MaxTeamScore);
packet.AddState(ABWorldStates.ResourcesWarning, WarningNearVictoryScore);
packet.AddState(ABWorldStates.ResourcesAlly, (int)m_TeamScores[TeamId.Alliance]);
packet.AddState(ABWorldStates.ResourcesHorde, (int)m_TeamScores[TeamId.Horde]);
packet.AddState(ABWorldStates.ResourcesAlly, m_TeamScores[TeamId.Alliance]);
packet.AddState(ABWorldStates.ResourcesHorde, m_TeamScores[TeamId.Horde]);
// other unknown
packet.AddState(0x745, 0x2);
@@ -848,8 +848,8 @@ namespace Game.BattleGrounds.Zones
public override void FillInitialWorldStates(InitWorldStates packet)
{
packet.AddState(EotSWorldStateIds.HordeBase, (int)m_TeamPointsCount[TeamId.Horde]);
packet.AddState(EotSWorldStateIds.AllianceBase, (int)m_TeamPointsCount[TeamId.Alliance]);
packet.AddState(EotSWorldStateIds.HordeBase, m_TeamPointsCount[TeamId.Horde]);
packet.AddState(EotSWorldStateIds.AllianceBase, m_TeamPointsCount[TeamId.Alliance]);
packet.AddState(0xAB6, 0x0);
packet.AddState(0xAB5, 0x0);
packet.AddState(0xAB4, 0x0);
@@ -876,9 +876,9 @@ namespace Game.BattleGrounds.Zones
packet.AddState(0xAD2, 0x1);
packet.AddState(0xAD1, 0x1);
packet.AddState(EotSWorldStateIds.HordeResources, (int)GetTeamScore(TeamId.Horde));
packet.AddState(EotSWorldStateIds.AllianceResources, (int)GetTeamScore(TeamId.Alliance));
packet.AddState(EotSWorldStateIds.MaxResources, (int)EotSScoreIds.MaxTeamScore);
packet.AddState(EotSWorldStateIds.HordeResources, GetTeamScore(TeamId.Horde));
packet.AddState(EotSWorldStateIds.AllianceResources, GetTeamScore(TeamId.Alliance));
packet.AddState(EotSWorldStateIds.MaxResources, EotSScoreIds.MaxTeamScore);
packet.AddState(0xA05, 0x8E);
packet.AddState(0xAA0, 0x0);
@@ -889,8 +889,8 @@ namespace Game.BattleGrounds.Zones
for (byte point = 0; point < EotSPoints.PointsMax; ++point)
{
BattlegroundPointCaptureStatus captureStatus = GetPointCaptureStatus(point);
packet.AddState(EotSMisc.m_PointsIconStruct[point].WorldStateAllianceStatusBarIcon, captureStatus == BattlegroundPointCaptureStatus.AllianceControlled ? 2 : (captureStatus == BattlegroundPointCaptureStatus.AllianceCapturing ? 1 : 0));
packet.AddState(EotSMisc.m_PointsIconStruct[point].WorldStateHordeStatusBarIcon, captureStatus == BattlegroundPointCaptureStatus.HordeControlled ? 2 : (captureStatus == BattlegroundPointCaptureStatus.HordeCapturing ? 1 : 0));
packet.AddState(EotSMisc.m_PointsIconStruct[point].WorldStateAllianceStatusBarIcon, captureStatus == BattlegroundPointCaptureStatus.AllianceControlled ? 2 : (captureStatus == BattlegroundPointCaptureStatus.AllianceCapturing ? 1 : 0u));
packet.AddState(EotSMisc.m_PointsIconStruct[point].WorldStateHordeStatusBarIcon, captureStatus == BattlegroundPointCaptureStatus.HordeControlled ? 2 : (captureStatus == BattlegroundPointCaptureStatus.HordeCapturing ? 1 : 0u));
}
}
@@ -444,12 +444,12 @@ namespace Game.BattleGrounds.Zones
bool allyAttacks = Attackers == TeamId.Alliance;
bool hordeAttacks = Attackers == TeamId.Horde;
packet.AddState(SAWorldStateIds.AncientGate, (int)GateStatus[SAObjectTypes.AncientGate]);
packet.AddState(SAWorldStateIds.YellowGate, (int)GateStatus[SAObjectTypes.YellowGate]);
packet.AddState(SAWorldStateIds.GreenGate, (int)GateStatus[SAObjectTypes.GreenGate]);
packet.AddState(SAWorldStateIds.BlueGate, (int)GateStatus[SAObjectTypes.BlueGate]);
packet.AddState(SAWorldStateIds.RedGate, (int)GateStatus[SAObjectTypes.RedGate]);
packet.AddState(SAWorldStateIds.PurpleGate, (int)GateStatus[SAObjectTypes.PurpleGate]);
packet.AddState(SAWorldStateIds.AncientGate, (uint)GateStatus[SAObjectTypes.AncientGate]);
packet.AddState(SAWorldStateIds.YellowGate, (uint)GateStatus[SAObjectTypes.YellowGate]);
packet.AddState(SAWorldStateIds.GreenGate, (uint)GateStatus[SAObjectTypes.GreenGate]);
packet.AddState(SAWorldStateIds.BlueGate, (uint)GateStatus[SAObjectTypes.BlueGate]);
packet.AddState(SAWorldStateIds.RedGate, (uint)GateStatus[SAObjectTypes.RedGate]);
packet.AddState(SAWorldStateIds.PurpleGate, (uint)GateStatus[SAObjectTypes.PurpleGate]);
packet.AddState(SAWorldStateIds.BonusTimer, 0);
@@ -801,18 +801,18 @@ namespace Game.BattleGrounds.Zones
public override void FillInitialWorldStates(InitWorldStates packet)
{
packet.AddState(WSGWorldStates.FlagCapturesAlliance, (int)GetTeamScore(TeamId.Alliance));
packet.AddState(WSGWorldStates.FlagCapturesHorde, (int)GetTeamScore(TeamId.Horde));
packet.AddState(WSGWorldStates.FlagCapturesAlliance, GetTeamScore(TeamId.Alliance));
packet.AddState(WSGWorldStates.FlagCapturesHorde, GetTeamScore(TeamId.Horde));
if (_flagState[TeamId.Alliance] == WSGFlagState.OnGround)
packet.AddState(WSGWorldStates.FlagUnkAlliance, -1);
packet.AddState(WSGWorldStates.FlagUnkAlliance, 0xFFFFFFFF);
else if (_flagState[TeamId.Alliance] == WSGFlagState.OnPlayer)
packet.AddState(WSGWorldStates.FlagUnkAlliance, 1);
else
packet.AddState(WSGWorldStates.FlagUnkAlliance, 0);
if (_flagState[TeamId.Horde] == WSGFlagState.OnGround)
packet.AddState(WSGWorldStates.FlagUnkHorde, -1);
packet.AddState(WSGWorldStates.FlagUnkHorde, 0xFFFFFFFF);
else if (_flagState[TeamId.Horde] == WSGFlagState.OnPlayer)
packet.AddState(WSGWorldStates.FlagUnkHorde, 1);
else
@@ -823,7 +823,7 @@ namespace Game.BattleGrounds.Zones
if (GetStatus() == BattlegroundStatus.InProgress)
{
packet.AddState(WSGWorldStates.StateTimerActive, 1);
packet.AddState(WSGWorldStates.StateTimer, 25 - _minutesElapsed);
packet.AddState(WSGWorldStates.StateTimer, 25u - _minutesElapsed);
}
else
packet.AddState(WSGWorldStates.StateTimerActive, 0);
+13 -1
View File
@@ -726,7 +726,7 @@ namespace Game.Entities
// Send misc stuff that needs to be sent on every login, like the battle timers.
if (WorldConfig.GetBoolValue(WorldCfg.WintergraspEnable))
{
BattleField wg = Global.BattleFieldMgr.GetBattlefieldByBattleId(1);//Wintergrasp battle
BattleField wg = Global.BattleFieldMgr.GetBattlefieldByBattleId(BattlefieldIds.WG);
if (wg != null)
{
SendUpdateWorldState(WorldStates.BattlefieldWgActive, (uint)(wg.IsWarTime() ? 0 : 1));
@@ -734,6 +734,18 @@ namespace Game.Entities
SendUpdateWorldState(WorldStates.BattlefieldWgTimeNextBattle, (uint)(GameTime.GetGameTime() + timer));
}
}
if (WorldConfig.GetBoolValue(WorldCfg.TolbaradEnable))
{
BattleField tb = Global.BattleFieldMgr.GetBattlefieldByBattleId(BattlefieldIds.TB);
if (tb != null)
{
SendUpdateWorldState(WorldStates.BattlefieldTbFactionControlling, (uint)(tb.GetDefenderTeam() + 1));
uint timer = tb.GetTimer() / 1000;
SendUpdateWorldState(WorldStates.BattlefieldTbTimeBattleEnd, (uint)(tb.IsWarTime() ? (uint)(GameTime.GetGameTime() + timer) : 0));
SendUpdateWorldState(WorldStates.BattlefieldTbTimeNextBattle, (uint)(!tb.IsWarTime() ? (uint)(GameTime.GetGameTime() + timer) : 0));
}
}
}
//Arenas
+395 -376
View File
@@ -2858,35 +2858,43 @@ namespace Game.Entities
uint mapid = GetMapId();
OutdoorPvP pvp = Global.OutdoorPvPMgr.GetOutdoorPvPToZoneId(zoneid);
InstanceScript instance = GetInstanceScript();
BattleField bf = Global.BattleFieldMgr.GetBattlefieldToZoneId(zoneid);
BattleField battlefield = Global.BattleFieldMgr.GetBattlefieldToZoneId(zoneid);
InitWorldStates packet = new();
packet.MapID = mapid;
packet.AreaID = zoneid;
packet.SubareaID = areaid;
packet.AddState(2264, 0); // 1
packet.AddState(2263, 0); // 2
packet.AddState(2262, 0); // 3
packet.AddState(2261, 0); // 4
packet.AddState(2260, 0); // 5
packet.AddState(2259, 0); // 6
packet.AddState(3191, WorldConfig.GetBoolValue(WorldCfg.ArenaSeasonInProgress) ? WorldConfig.GetIntValue(WorldCfg.ArenaSeasonId) : 0); // 7 Current Season - Arena season in progress
// 0 - End of season
packet.AddState(3901, WorldConfig.GetIntValue(WorldCfg.ArenaSeasonId) - (WorldConfig.GetBoolValue(WorldCfg.ArenaSeasonInProgress) ? 1 : 0)); // 8 PreviousSeason
packet.AddState(2264, 0); // SCOURGE_EVENT_WORLDSTATE_EASTERN_PLAGUELANDS
packet.AddState(2263, 0); // SCOURGE_EVENT_WORLDSTATE_TANARIS
packet.AddState(2262, 0); // SCOURGE_EVENT_WORLDSTATE_BURNING_STEPPES
packet.AddState(2261, 0); // SCOURGE_EVENT_WORLDSTATE_BLASTED_LANDS
packet.AddState(2260, 0); // SCOURGE_EVENT_WORLDSTATE_AZSHARA
packet.AddState(2259, 0); // SCOURGE_EVENT_WORLDSTATE_WINTERSPRING
if (mapid == 530) // Outland
// ARENA_SEASON_IN_PROGRESS
// 7 - arena season in progress
// 0 - end of season
packet.AddState(3191, WorldConfig.GetBoolValue(WorldCfg.ArenaSeasonInProgress) ? WorldConfig.GetUIntValue(WorldCfg.ArenaSeasonId) : 0); // 7 Current Season - Arena season in progress
// Previous arena season id
uint previousArenaSeason = 0;
if (WorldConfig.GetBoolValue(WorldCfg.ArenaSeasonInProgress) && WorldConfig.GetIntValue(WorldCfg.ArenaSeasonId) > 0)
previousArenaSeason = WorldConfig.GetUIntValue(WorldCfg.ArenaSeasonId) - 1;// 0 - End of season
packet.AddState(3901, previousArenaSeason);
if (mapid == 530) // Outland
{
packet.AddState(2495, 0); // 7
packet.AddState(2493, 0xF); // 8
packet.AddState(2491, 0xF); // 9
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
}
// Horde War Mode bonus
packet.AddState(17042, 10 + (Global.WorldMgr.GetWarModeDominantFaction() == TeamId.Alliance ? Global.WorldMgr.GetWarModeOutnumberedFactionReward() : 0));
packet.AddState(17042, (uint)(10 + (Global.WorldMgr.GetWarModeDominantFaction() == TeamId.Alliance ? Global.WorldMgr.GetWarModeOutnumberedFactionReward() : 0)));
// Alliance War Mode bonus
packet.AddState(17043, 10 + (Global.WorldMgr.GetWarModeDominantFaction() == TeamId.Horde ? Global.WorldMgr.GetWarModeOutnumberedFactionReward() : 0));
packet.AddState(17043, (uint)(10 + (Global.WorldMgr.GetWarModeDominantFaction() == TeamId.Horde ? Global.WorldMgr.GetWarModeOutnumberedFactionReward() : 0)));
// insert <field> <value>
switch (zoneid)
@@ -2907,97 +2915,96 @@ namespace Game.Entities
pvp.FillInitialWorldStates(packet);
else
{
// states are always shown
packet.AddState(2313, 0x0); // 7 ally silityst gathered
packet.AddState(2314, 0x0); // 8 horde silityst gathered
packet.AddState(2317, 0x0); // 9 max silithyst
packet.AddState(2313, 0); // SI_GATHERED_A
packet.AddState(2314, 0); // SI_GATHERED_H
packet.AddState(2317, 0); // SI_SILITHYST_MAX
}
// dunno about these... aq opening event maybe?
packet.AddState(2322, 0x0); // 10 sandworm N
packet.AddState(2323, 0x0); // 11 sandworm S
packet.AddState(2324, 0x0); // 12 sandworm SW
packet.AddState(2325, 0x0); // 13 sandworm E
// 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;
case 2597: // Alterac Valley
if (bg && bg.GetTypeID(true) == BattlegroundTypeId.AV)
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(0x7ae, 0x1); // 7 snowfall n
packet.AddState(0x532, 0x1); // 8 frostwolfhut hc
packet.AddState(0x531, 0x0); // 9 frostwolfhut ac
packet.AddState(0x52e, 0x0); // 10 stormpike firstaid a_a
packet.AddState(0x571, 0x0); // 11 east frostwolf tower horde assaulted -unused
packet.AddState(0x570, 0x0); // 12 west frostwolf tower horde assaulted - unused
packet.AddState(0x567, 0x1); // 13 frostwolfe c
packet.AddState(0x566, 0x1); // 14 frostwolfw c
packet.AddState(0x550, 0x1); // 15 irondeep (N) ally
packet.AddState(0x544, 0x0); // 16 ice grave a_a
packet.AddState(0x536, 0x0); // 17 stormpike grave h_c
packet.AddState(0x535, 0x1); // 18 stormpike grave a_c
packet.AddState(0x518, 0x0); // 19 stoneheart grave a_a
packet.AddState(0x517, 0x0); // 20 stoneheart grave h_a
packet.AddState(0x574, 0x0); // 21 1396 unk
packet.AddState(0x573, 0x0); // 22 iceblood tower horde assaulted -unused
packet.AddState(0x572, 0x0); // 23 towerpoint horde assaulted - unused
packet.AddState(0x56f, 0x0); // 24 1391 unk
packet.AddState(0x56e, 0x0); // 25 iceblood a
packet.AddState(0x56d, 0x0); // 26 towerp a
packet.AddState(0x56c, 0x0); // 27 frostwolfe a
packet.AddState(0x56b, 0x0); // 28 froswolfw a
packet.AddState(0x56a, 0x1); // 29 1386 unk
packet.AddState(0x569, 0x1); // 30 iceblood c
packet.AddState(0x568, 0x1); // 31 towerp c
packet.AddState(0x565, 0x0); // 32 stoneh tower a
packet.AddState(0x564, 0x0); // 33 icewing tower a
packet.AddState(0x563, 0x0); // 34 dunn a
packet.AddState(0x562, 0x0); // 35 duns a
packet.AddState(0x561, 0x0); // 36 stoneheart bunker alliance assaulted - unused
packet.AddState(0x560, 0x0); // 37 icewing bunker alliance assaulted - unused
packet.AddState(0x55f, 0x0); // 38 dunbaldar south alliance assaulted - unused
packet.AddState(0x55e, 0x0); // 39 dunbaldar north alliance assaulted - unused
packet.AddState(0x55d, 0x0); // 40 stone tower d
packet.AddState(0x3c6, 0x0); // 41 966 unk
packet.AddState(0x3c4, 0x0); // 42 964 unk
packet.AddState(0x3c2, 0x0); // 43 962 unk
packet.AddState(0x516, 0x1); // 44 stoneheart grave a_c
packet.AddState(0x515, 0x0); // 45 stonheart grave h_c
packet.AddState(0x3b6, 0x0); // 46 950 unk
packet.AddState(0x55c, 0x0); // 47 icewing tower d
packet.AddState(0x55b, 0x0); // 48 dunn d
packet.AddState(0x55a, 0x0); // 49 duns d
packet.AddState(0x559, 0x0); // 50 1369 unk
packet.AddState(0x558, 0x0); // 51 iceblood d
packet.AddState(0x557, 0x0); // 52 towerp d
packet.AddState(0x556, 0x0); // 53 frostwolfe d
packet.AddState(0x555, 0x0); // 54 frostwolfw d
packet.AddState(0x554, 0x1); // 55 stoneh tower c
packet.AddState(0x553, 0x1); // 56 icewing tower c
packet.AddState(0x552, 0x1); // 57 dunn c
packet.AddState(0x551, 0x1); // 58 duns c
packet.AddState(0x54f, 0x0); // 59 irondeep (N) horde
packet.AddState(0x54e, 0x0); // 60 irondeep (N) ally
packet.AddState(0x54d, 0x1); // 61 mine (S) neutral
packet.AddState(0x54c, 0x0); // 62 mine (S) horde
packet.AddState(0x54b, 0x0); // 63 mine (S) ally
packet.AddState(0x545, 0x0); // 64 iceblood h_a
packet.AddState(0x543, 0x1); // 65 iceblod h_c
packet.AddState(0x542, 0x0); // 66 iceblood a_c
packet.AddState(0x540, 0x0); // 67 snowfall h_a
packet.AddState(0x53f, 0x0); // 68 snowfall a_a
packet.AddState(0x53e, 0x0); // 69 snowfall h_c
packet.AddState(0x53d, 0x0); // 70 snowfall a_c
packet.AddState(0x53c, 0x0); // 71 frostwolf g h_a
packet.AddState(0x53b, 0x0); // 72 frostwolf g a_a
packet.AddState(0x53a, 0x1); // 73 frostwolf g h_c
packet.AddState(0x539, 0x0); // 74 frostwolf g a_c
packet.AddState(0x538, 0x0); // 75 stormpike grave h_a
packet.AddState(0x537, 0x0); // 76 stormpike grave a_a
packet.AddState(0x534, 0x0); // 77 frostwolf hut h_a
packet.AddState(0x533, 0x0); // 78 frostwolf hut a_a
packet.AddState(0x530, 0x0); // 79 stormpike first aid h_a
packet.AddState(0x52f, 0x0); // 80 stormpike first aid h_c
packet.AddState(0x52d, 0x1); // 81 stormpike first aid a_c
packet.AddState(1966, 1); // AV_SNOWFALL_N
packet.AddState(1330, 1); // AV_FROSTWOLFHUT_H_C
packet.AddState(1329, 0); // AV_FROSTWOLFHUT_A_C
packet.AddState(1326, 0); // AV_AID_A_A
packet.AddState(1393, 0); // East Frostwolf Tower Horde Assaulted - UNUSED
packet.AddState(1392, 0); // West Frostwolf Tower Horde Assaulted - UNUSED
packet.AddState(1383, 1); // AV_FROSTWOLFE_CONTROLLED
packet.AddState(1382, 1); // AV_FROSTWOLFW_CONTROLLED
packet.AddState(1360, 1); // AV_N_MINE_N
packet.AddState(1348, 0); // AV_ICEBLOOD_A_A
packet.AddState(1334, 0); // AV_PIKEGRAVE_H_C
packet.AddState(1333, 1); // AV_PIKEGRAVE_A_C
packet.AddState(1304, 0); // AV_STONEHEART_A_A
packet.AddState(1303, 0); // AV_STONEHEART_H_A
packet.AddState(1396, 0); // unk
packet.AddState(1395, 0); // Iceblood Tower Horde Assaulted - UNUSED
packet.AddState(1394, 0); // Towerpoint Horde Assaulted - UNUSED
packet.AddState(1391, 0); // unk
packet.AddState(1390, 0); // AV_ICEBLOOD_ASSAULTED
packet.AddState(1389, 0); // AV_TOWERPOINT_ASSAULTED
packet.AddState(1388, 0); // AV_FROSTWOLFE_ASSAULTED
packet.AddState(1387, 0); // AV_FROSTWOLFW_ASSAULTED
packet.AddState(1386, 1); // unk
packet.AddState(1385, 1); // AV_ICEBLOOD_CONTROLLED
packet.AddState(1384, 1); // AV_TOWERPOINT_CONTROLLED
packet.AddState(1381, 0); // AV_STONEH_ASSAULTED
packet.AddState(1380, 0); // AV_ICEWING_ASSAULTED
packet.AddState(1379, 0); // AV_DUNN_ASSAULTED
packet.AddState(1378, 0); // AV_DUNS_ASSAULTED
packet.AddState(1377, 0); // Stoneheart Bunker Alliance Assaulted - UNUSED
packet.AddState(1376, 0); // Icewing Bunker Alliance Assaulted - UNUSED
packet.AddState(1375, 0); // Dunbaldar South Alliance Assaulted - UNUSED
packet.AddState(1374, 0); // Dunbaldar North Alliance Assaulted - UNUSED
packet.AddState(1373, 0); // AV_STONEH_DESTROYED
packet.AddState(966, 0); // AV_UNK_02
packet.AddState(964, 0); // AV_UNK_01
packet.AddState(962, 0); // AV_STORMPIKE_COMMANDERS
packet.AddState(1302, 1); // AV_STONEHEART_A_C
packet.AddState(1301, 0); // AV_STONEHEART_H_C
packet.AddState(950, 0); // AV_STORMPIKE_LIEUTENANTS
packet.AddState(1372, 0); // AV_ICEWING_DESTROYED
packet.AddState(1371, 0); // AV_DUNN_DESTROYED
packet.AddState(1370, 0); // AV_DUNS_DESTROYED
packet.AddState(1369, 0); // unk
packet.AddState(1368, 0); // AV_ICEBLOOD_DESTROYED
packet.AddState(1367, 0); // AV_TOWERPOINT_DESTROYED
packet.AddState(1366, 0); // AV_FROSTWOLFE_DESTROYED
packet.AddState(1365, 0); // AV_FROSTWOLFW_DESTROYED
packet.AddState(1364, 1); // AV_STONEH_CONTROLLED
packet.AddState(1363, 1); // AV_ICEWING_CONTROLLED
packet.AddState(1362, 1); // AV_DUNN_CONTROLLED
packet.AddState(1361, 1); // AV_DUNS_CONTROLLED
packet.AddState(1359, 0); // AV_N_MINE_H
packet.AddState(1358, 0); // AV_N_MINE_A
packet.AddState(1357, 1); // AV_S_MINE_N
packet.AddState(1356, 0); // AV_S_MINE_H
packet.AddState(1355, 0); // AV_S_MINE_A
packet.AddState(1349, 0); // AV_ICEBLOOD_H_A
packet.AddState(1347, 1); // AV_ICEBLOOD_H_C
packet.AddState(1346, 0); // AV_ICEBLOOD_A_C
packet.AddState(1344, 0); // AV_SNOWFALL_H_A
packet.AddState(1343, 0); // AV_SNOWFALL_A_A
packet.AddState(1342, 0); // AV_SNOWFALL_H_C
packet.AddState(1341, 0); // AV_SNOWFALL_A_C
packet.AddState(1340, 0); // AV_FROSTWOLF_H_A
packet.AddState(1339, 0); // AV_FROSTWOLF_A_A
packet.AddState(1338, 1); // AV_FROSTWOLF_H_C
packet.AddState(1337, 0); // AV_FROSTWOLF_A_C
packet.AddState(1336, 0); // AV_PIKEGRAVE_H_A
packet.AddState(1335, 0); // AV_PIKEGRAVE_A_A
packet.AddState(1332, 0); // AV_FROSTWOLFHUT_H_A
packet.AddState(1331, 0); // AV_FROSTWOLFHUT_A_A
packet.AddState(1328, 0); // AV_AID_H_A
packet.AddState(1327, 0); // AV_AID_H_C
packet.AddState(1325, 1); // AV_AID_A_C
}
break;
case 3277: // Warsong Gulch
@@ -3005,14 +3012,14 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(0x62d, 0x0); // 7 1581 alliance flag captures
packet.AddState(0x62e, 0x0); // 8 1582 horde flag captures
packet.AddState(0x609, 0x0); // 9 1545 unk, set to 1 on alliance flag pickup...
packet.AddState(0x60a, 0x0); // 10 1546 unk, set to 1 on horde flag pickup, after drop it's -1
packet.AddState(0x60b, 0x2); // 11 1547 unk
packet.AddState(0x641, 0x3); // 12 1601 unk (max flag captures?)
packet.AddState(0x922, 0x1); // 13 2338 horde (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
packet.AddState(0x923, 0x1); // 14 2339 alliance (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
packet.AddState(1581, 0); // alliance flag captures
packet.AddState(1582, 0); // horde flag captures
packet.AddState(1545, 0); // unk, set to 1 on alliance flag pickup...
packet.AddState(1546, 0); // unk, set to 1 on horde flag pickup, after drop it's -1
packet.AddState(1547, 2); // unk
packet.AddState(1601, 3); // unk (max flag captures?)
packet.AddState(2338, 1); // horde (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
packet.AddState(2339, 1); // alliance (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
}
break;
case 3358: // Arathi Basin
@@ -3020,38 +3027,38 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(0x6e7, 0x0); // 7 1767 stables alliance
packet.AddState(0x6e8, 0x0); // 8 1768 stables horde
packet.AddState(0x6e9, 0x0); // 9 1769 unk, ST?
packet.AddState(0x6ea, 0x0); // 10 1770 stables (show/hide)
packet.AddState(0x6ec, 0x0); // 11 1772 farm (0 - horde controlled, 1 - alliance controlled)
packet.AddState(0x6ed, 0x0); // 12 1773 farm (show/hide)
packet.AddState(0x6ee, 0x0); // 13 1774 farm color
packet.AddState(0x6ef, 0x0); // 14 1775 gold mine color, may be FM?
packet.AddState(0x6f0, 0x0); // 15 1776 alliance resources
packet.AddState(0x6f1, 0x0); // 16 1777 horde resources
packet.AddState(0x6f2, 0x0); // 17 1778 horde bases
packet.AddState(0x6f3, 0x0); // 18 1779 alliance bases
packet.AddState(0x6f4, 0x7d0); // 19 1780 max resources (2000)
packet.AddState(0x6f6, 0x0); // 20 1782 blacksmith color
packet.AddState(0x6f7, 0x0); // 21 1783 blacksmith (show/hide)
packet.AddState(0x6f8, 0x0); // 22 1784 unk, bs?
packet.AddState(0x6f9, 0x0); // 23 1785 unk, bs?
packet.AddState(0x6fb, 0x0); // 24 1787 gold mine (0 - horde contr, 1 - alliance contr)
packet.AddState(0x6fc, 0x0); // 25 1788 gold mine (0 - conflict, 1 - horde)
packet.AddState(0x6fd, 0x0); // 26 1789 gold mine (1 - show/0 - hide)
packet.AddState(0x6fe, 0x0); // 27 1790 gold mine color
packet.AddState(0x700, 0x0); // 28 1792 gold mine color, wtf?, may be LM?
packet.AddState(0x701, 0x0); // 29 1793 lumber mill color (0 - conflict, 1 - horde contr)
packet.AddState(0x702, 0x0); // 30 1794 lumber mill (show/hide)
packet.AddState(0x703, 0x0); // 31 1795 lumber mill color color
packet.AddState(0x732, 0x1); // 32 1842 stables (1 - uncontrolled)
packet.AddState(0x733, 0x1); // 33 1843 gold mine (1 - uncontrolled)
packet.AddState(0x734, 0x1); // 34 1844 lumber mill (1 - uncontrolled)
packet.AddState(0x735, 0x1); // 35 1845 farm (1 - uncontrolled)
packet.AddState(0x736, 0x1); // 36 1846 blacksmith (1 - uncontrolled)
packet.AddState(0x745, 0x2); // 37 1861 unk
packet.AddState(0x7a3, 0x708); // 38 1955 warning limit (1800)
packet.AddState(1767, 0); // stables alliance
packet.AddState(1768, 0); // stables horde
packet.AddState(1769, 0); // stables alliance controlled
packet.AddState(1770, 0); // stables horde controlled
packet.AddState(1772, 0); // farm alliance
packet.AddState(1773, 0); // farm horde
packet.AddState(1774, 0); // farm alliance controlled
packet.AddState(1775, 0); // farm horde controlled
packet.AddState(1776, 0); // alliance resources
packet.AddState(1777, 0); // horde resources
packet.AddState(1778, 0); // horde bases
packet.AddState(1779, 0); // alliance bases
packet.AddState(1780, 2000); // max resources (2000)
packet.AddState(1782, 0); // blacksmith alliance
packet.AddState(1783, 0); // blacksmith horde
packet.AddState(1784, 0); // blacksmith alliance controlled
packet.AddState(1785, 0); // blacksmith horde controlled
packet.AddState(1787, 0); // gold mine alliance
packet.AddState(1788, 0); // gold mine horde
packet.AddState(1789, 0); // gold mine alliance controlled
packet.AddState(1790, 0); // gold mine horde controlled
packet.AddState(1792, 0); // lumber mill alliance
packet.AddState(1793, 0); // lumber mill horde
packet.AddState(1794, 0); // lumber mill alliance controlled
packet.AddState(1795, 0); // lumber mill horde controlled
packet.AddState(1842, 1); // stables (1 - uncontrolled)
packet.AddState(1843, 1); // gold mine (1 - uncontrolled)
packet.AddState(1844, 1); // lumber mill (1 - uncontrolled)
packet.AddState(1845, 1); // farm (1 - uncontrolled)
packet.AddState(1846, 1); // blacksmith (1 - uncontrolled)
packet.AddState(1861, 2); // unk
packet.AddState(1955, 1800); // warning limit (1800)
}
break;
case 3820: // Eye of the Storm
@@ -3059,39 +3066,39 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(0xac1, 0x0); // 7 2753 Horde Bases
packet.AddState(0xac0, 0x0); // 8 2752 Alliance Bases
packet.AddState(0xab6, 0x0); // 9 2742 Mage Tower - Horde conflict
packet.AddState(0xab5, 0x0); // 10 2741 Mage Tower - Alliance conflict
packet.AddState(0xab4, 0x0); // 11 2740 Fel Reaver - Horde conflict
packet.AddState(0xab3, 0x0); // 12 2739 Fel Reaver - Alliance conflict
packet.AddState(0xab2, 0x0); // 13 2738 Draenei - Alliance conflict
packet.AddState(0xab1, 0x0); // 14 2737 Draenei - Horde conflict
packet.AddState(0xab0, 0x0); // 15 2736 unk // 0 at start
packet.AddState(0xaaf, 0x0); // 16 2735 unk // 0 at start
packet.AddState(0xaad, 0x0); // 17 2733 Draenei - Horde control
packet.AddState(0xaac, 0x0); // 18 2732 Draenei - Alliance control
packet.AddState(0xaab, 0x1); // 19 2731 Draenei uncontrolled (1 - yes, 0 - no)
packet.AddState(0xaaa, 0x0); // 20 2730 Mage Tower - Alliance control
packet.AddState(0xaa9, 0x0); // 21 2729 Mage Tower - Horde control
packet.AddState(0xaa8, 0x1); // 22 2728 Mage Tower uncontrolled (1 - yes, 0 - no)
packet.AddState(0xaa7, 0x0); // 23 2727 Fel Reaver - Horde control
packet.AddState(0xaa6, 0x0); // 24 2726 Fel Reaver - Alliance control
packet.AddState(0xaa5, 0x1); // 25 2725 Fel Reaver uncontrolled (1 - yes, 0 - no)
packet.AddState(0xaa4, 0x0); // 26 2724 Boold Elf - Horde control
packet.AddState(0xaa3, 0x0); // 27 2723 Boold Elf - Alliance control
packet.AddState(0xaa2, 0x1); // 28 2722 Boold Elf uncontrolled (1 - yes, 0 - no)
packet.AddState(0xac5, 0x1); // 29 2757 Flag (1 - show, 0 - hide) - doesn't work exactly this way!
packet.AddState(0xad2, 0x1); // 30 2770 Horde top-stats (1 - show, 0 - hide) // 02 . horde picked up the flag
packet.AddState(0xad1, 0x1); // 31 2769 Alliance top-stats (1 - show, 0 - hide) // 02 . alliance picked up the flag
packet.AddState(0xabe, 0x0); // 32 2750 Horde resources
packet.AddState(0xabd, 0x0); // 33 2749 Alliance resources
packet.AddState(0xa05, 0x8e); // 34 2565 unk, constant?
packet.AddState(0xaa0, 0x0); // 35 2720 Capturing progress-bar (100 . empty (only grey), 0 . blue|red (no grey), default 0)
packet.AddState(0xa9f, 0x0); // 36 2719 Capturing progress-bar (0 - left, 100 - right)
packet.AddState(0xa9e, 0x0); // 37 2718 Capturing progress-bar (1 - show, 0 - hide)
packet.AddState(0xc0d, 0x17b); // 38 3085 unk
// and some more ... unknown
packet.AddState(2753, 0); // Horde Bases
packet.AddState(2752, 0); // Alliance Bases
packet.AddState(2742, 0); // Mage Tower - Horde conflict
packet.AddState(2741, 0); // Mage Tower - Alliance conflict
packet.AddState(2740, 0); // Fel Reaver - Horde conflict
packet.AddState(2739, 0); // Fel Reaver - Alliance conflict
packet.AddState(2738, 0); // Draenei - Alliance conflict
packet.AddState(2737, 0); // Draenei - Horde conflict
packet.AddState(2736, 0); // unk (0 at start)
packet.AddState(2735, 0); // unk (0 at start)
packet.AddState(2733, 0); // Draenei - Horde control
packet.AddState(2732, 0); // Draenei - Alliance control
packet.AddState(2731, 1); // Draenei uncontrolled (1 - yes, 0 - no)
packet.AddState(2730, 0); // Mage Tower - Alliance control
packet.AddState(2729, 0); // Mage Tower - Horde control
packet.AddState(2728, 1); // Mage Tower uncontrolled (1 - yes, 0 - no)
packet.AddState(2727, 0); // Fel Reaver - Horde control
packet.AddState(2726, 0); // Fel Reaver - Alliance control
packet.AddState(2725, 1); // Fel Reaver uncontrolled (1 - yes, 0 - no)
packet.AddState(2724, 0); // Boold Elf - Horde control
packet.AddState(2723, 0); // Boold Elf - Alliance control
packet.AddState(2722, 1); // Boold Elf uncontrolled (1 - yes, 0 - no)
packet.AddState(2757, 1); // Flag (1 - show, 0 - hide) - doesn't work exactly this way!
packet.AddState(2770, 1); // Horde top-stats (1 - show, 0 - hide) // 02 -> horde picked up the flag
packet.AddState(2769, 1); // Alliance top-stats (1 - show, 0 - hide) // 02 -> alliance picked up the flag
packet.AddState(2750, 0); // Horde resources
packet.AddState(2749, 0); // Alliance resources
packet.AddState(2565, 142); // unk, constant?
packet.AddState(2720, 0); // Capturing progress-bar (100 -> empty (only grey), 0 -> blue|red (no grey), default 0)
packet.AddState(2719, 0); // Capturing progress-bar (0 - left, 100 - right)
packet.AddState(2718, 0); // Capturing progress-bar (1 - show, 0 - hide)
packet.AddState(3085, 379); // unk, constant?
// missing unknowns
}
break;
// any of these needs change! the client remembers the prev setting!
@@ -3101,22 +3108,22 @@ namespace Game.Entities
pvp.FillInitialWorldStates(packet);
else
{
packet.AddState(0x9ba, 0x1); // 10 // add ally tower main gui icon // maybe should be sent only on login?
packet.AddState(0x9b9, 0x1); // 11 // add horde tower main gui icon // maybe should be sent only on login?
packet.AddState(0x9b5, 0x0); // 12 // show neutral broken hill icon // 2485
packet.AddState(0x9b4, 0x1); // 13 // show icon above broken hill // 2484
packet.AddState(0x9b3, 0x0); // 14 // show ally broken hill icon // 2483
packet.AddState(0x9b2, 0x0); // 15 // show neutral overlook icon // 2482
packet.AddState(0x9b1, 0x1); // 16 // show the overlook arrow // 2481
packet.AddState(0x9b0, 0x0); // 17 // show ally overlook icon // 2480
packet.AddState(0x9ae, 0x0); // 18 // horde pvp objectives captured // 2478
packet.AddState(0x9ac, 0x0); // 19 // ally pvp objectives captured // 2476
packet.AddState(2475, 100); //: ally / horde slider grey area // show only in direct vicinity!
packet.AddState(2474, 50); //: ally / horde slider percentage, 100 for ally, 0 for horde // show only in direct vicinity!
packet.AddState(2473, 0); //: ally / horde slider display // show only in direct vicinity!
packet.AddState(0x9a8, 0x0); // 20 // show the neutral stadium icon // 2472
packet.AddState(0x9a7, 0x0); // 21 // show the ally stadium icon // 2471
packet.AddState(0x9a6, 0x1); // 22 // show the horde stadium icon // 2470
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
@@ -3124,40 +3131,34 @@ namespace Game.Entities
pvp.FillInitialWorldStates(packet);
else
{
packet.AddState(2503, 0x0); // 10
packet.AddState(2502, 0x0); // 11
packet.AddState(2493, 0x0); // 12
packet.AddState(2491, 0x0); // 13
packet.AddState(2495, 0x0); // 14
packet.AddState(2494, 0x0); // 15
packet.AddState(2497, 0x0); // 16
packet.AddState(2762, 0x0); // 17
packet.AddState(2662, 0x0); // 18
packet.AddState(2663, 0x0); // 19
packet.AddState(2664, 0x0); // 20
packet.AddState(2760, 0x0); // 21
packet.AddState(2670, 0x0); // 22
packet.AddState(2668, 0x0); // 23
packet.AddState(2669, 0x0); // 24
packet.AddState(2761, 0x0); // 25
packet.AddState(2667, 0x0); // 26
packet.AddState(2665, 0x0); // 27
packet.AddState(2666, 0x0); // 28
packet.AddState(2763, 0x0); // 29
packet.AddState(2659, 0x0); // 30
packet.AddState(2660, 0x0); // 31
packet.AddState(2661, 0x0); // 32
packet.AddState(2671, 0x0); // 33
packet.AddState(2676, 0x0); // 34
packet.AddState(2677, 0x0); // 35
packet.AddState(2672, 0x0); // 36
packet.AddState(2673, 0x0); // 37
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
@@ -3165,33 +3166,34 @@ namespace Game.Entities
pvp.FillInitialWorldStates(packet);
else
{
packet.AddState(0xa41, 0x0); // 10 // 2625 capture bar pos
packet.AddState(0xa40, 0x14); // 11 // 2624 capture bar neutral
packet.AddState(0xa3f, 0x0); // 12 // 2623 show capture bar
packet.AddState(0xa3e, 0x0); // 13 // 2622 horde towers controlled
packet.AddState(0xa3d, 0x5); // 14 // 2621 ally towers controlled
packet.AddState(0xa3c, 0x0); // 15 // 2620 show towers controlled
packet.AddState(0xa88, 0x0); // 16 // 2696 SE Neu
packet.AddState(0xa87, 0x0); // 17 // SE Horde
packet.AddState(0xa86, 0x0); // 18 // SE Ally
packet.AddState(0xa85, 0x0); // 19 //S Neu
packet.AddState(0xa84, 0x0); // 20 S Horde
packet.AddState(0xa83, 0x0); // 21 S Ally
packet.AddState(0xa82, 0x0); // 22 NE Neu
packet.AddState(0xa81, 0x0); // 23 NE Horde
packet.AddState(0xa80, 0x0); // 24 NE Ally
packet.AddState(0xa7e, 0x0); // 25 // 2686 N Neu
packet.AddState(0xa7d, 0x0); // 26 N Horde
packet.AddState(0xa7c, 0x0); // 27 N Ally
packet.AddState(0xa7b, 0x0); // 28 NW Ally
packet.AddState(0xa7a, 0x0); // 29 NW Horde
packet.AddState(0xa79, 0x0); // 30 NW Neutral
packet.AddState(0x9d0, 0x5); // 31 // 2512 locked time remaining seconds first digit
packet.AddState(0x9ce, 0x0); // 32 // 2510 locked time remaining seconds second digit
packet.AddState(0x9cd, 0x0); // 33 // 2509 locked time remaining minutes
packet.AddState(0x9cc, 0x0); // 34 // 2508 neutral locked time show
packet.AddState(0xad0, 0x0); // 35 // 2768 horde locked time show
packet.AddState(0xacf, 0x1); // 36 // 2767 ally locked time show
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
@@ -3199,32 +3201,32 @@ namespace Game.Entities
pvp.FillInitialWorldStates(packet);
else
{
packet.AddState(0x9e1, 0x0); // 10 //2529
packet.AddState(0x9e0, 0x0); // 11
packet.AddState(0x9df, 0x0); // 12
packet.AddState(0xa5d, 0x1); // 13 //2653
packet.AddState(0xa5c, 0x0); // 14 //2652 east beacon neutral
packet.AddState(0xa5b, 0x1); // 15 horde
packet.AddState(0xa5a, 0x0); // 16 ally
packet.AddState(0xa59, 0x1); // 17 // 2649 Twin spire graveyard horde 12???
packet.AddState(0xa58, 0x0); // 18 ally 14 ???
packet.AddState(0xa57, 0x0); // 19 neutral 7???
packet.AddState(0xa56, 0x0); // 20 // 2646 west beacon neutral
packet.AddState(0xa55, 0x1); // 21 horde
packet.AddState(0xa54, 0x0); // 22 ally
packet.AddState(0x9e7, 0x0); // 23 // 2535
packet.AddState(0x9e6, 0x0); // 24
packet.AddState(0x9e5, 0x0); // 25
packet.AddState(0xa00, 0x0); // 26 // 2560
packet.AddState(0x9ff, 0x1); // 27
packet.AddState(0x9fe, 0x0); // 28
packet.AddState(0x9fd, 0x0); // 29
packet.AddState(0x9fc, 0x1); // 30
packet.AddState(0x9fb, 0x0); // 31
packet.AddState(0xa62, 0x0); // 32 // 2658
packet.AddState(0xa61, 0x1); // 33
packet.AddState(0xa60, 0x1); // 34
packet.AddState(0xa5f, 0x0); // 35
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;
case 3698: // Nagrand Arena
@@ -3232,9 +3234,9 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(0xa0f, 0x0); // 7
packet.AddState(0xa10, 0x0); // 8
packet.AddState(0xa11, 0x0); // 9 show
packet.AddState(2575, 0); // BATTLEGROUND_NAGRAND_ARENA_GOLD
packet.AddState(2576, 0); // BATTLEGROUND_NAGRAND_ARENA_GREEN
packet.AddState(2577, 0); // BATTLEGROUND_NAGRAND_ARENA_SHOW
}
break;
case 3702: // Blade's Edge Arena
@@ -3242,9 +3244,9 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(0x9f0, 0x0); // 7 gold
packet.AddState(0x9f1, 0x0); // 8 green
packet.AddState(0x9f3, 0x0); // 9 show
packet.AddState(2544, 0); // BATTLEGROUND_BLADES_EDGE_ARENA_GOLD
packet.AddState(2545, 0); // BATTLEGROUND_BLADES_EDGE_ARENA_GREEN
packet.AddState(2547, 0); // BATTLEGROUND_BLADES_EDGE_ARENA_SHOW
}
break;
case 3968: // Ruins of Lordaeron
@@ -3252,9 +3254,9 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(0xbb8, 0x0); // 7 gold
packet.AddState(0xbb9, 0x0); // 8 green
packet.AddState(0xbba, 0x0); // 9 show
packet.AddState(3000, 0); // BATTELGROUND_RUINS_OF_LORDAERNON_GOLD
packet.AddState(3001, 0); // BATTELGROUND_RUINS_OF_LORDAERNON_GREEN
packet.AddState(3002, 0); // BATTELGROUND_RUINS_OF_LORDAERNON_SHOW
}
break;
case 4378: // Dalaran Sewers
@@ -3262,9 +3264,9 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(3601, 0x0); // 7 gold
packet.AddState(3600, 0x0); // 8 green
packet.AddState(3610, 0x0); // 9 show
packet.AddState(3601, 0); // ARENA_WORLD_STATE_ALIVE_PLAYERS_GOLD
packet.AddState(3600, 0); // ARENA_WORLD_STATE_ALIVE_PLAYERS_GREEN
packet.AddState(3610, 0); // ARENA_WORLD_STATE_ALIVE_PLAYERS_SHOW
}
break;
case 4384: // Strand of the Ancients
@@ -3272,34 +3274,34 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
// 1-3 A defend, 4-6 H defend, 7-9 unk defend, 1 - ok, 2 - half destroyed, 3 - destroyed
packet.AddState(0xf09, 0x0); // 7 3849 Gate of Temple
packet.AddState(0xe36, 0x0); // 8 3638 Gate of Yellow Moon
packet.AddState(0xe27, 0x0); // 9 3623 Gate of Green Emerald
packet.AddState(0xe24, 0x0); // 10 3620 Gate of Blue Sapphire
packet.AddState(0xe21, 0x0); // 11 3617 Gate of Red Sun
packet.AddState(0xe1e, 0x0); // 12 3614 Gate of Purple Ametyst
packet.AddState(3849, 0); // Gate of Temple
packet.AddState(3638, 0); // Gate of Yellow Moon
packet.AddState(3623, 0); // Gate of Green Emerald
packet.AddState(3620, 0); // Gate of Blue Sapphire
packet.AddState(3617, 0); // Gate of Red Sun
packet.AddState(3614, 0); // Gate of Purple Ametyst
packet.AddState(3571, 0); // bonus timer (1 - on, 0 - off)
packet.AddState(3565, 0); // Horde Attacker
packet.AddState(3564, 0); // Alliance Attacker
packet.AddState(0xdf3, 0x0); // 13 3571 bonus timer (1 - on, 0 - off)
packet.AddState(0xded, 0x0); // 14 3565 Horde Attacker
packet.AddState(0xdec, 0x0); // 15 3564 Alliance Attacker
// End Round (timer), better explain this by example, eg. ends in 19:59 . A:BC
packet.AddState(0xde9, 0x0); // 16 3561 C
packet.AddState(0xde8, 0x0); // 17 3560 B
packet.AddState(0xde7, 0x0); // 18 3559 A
packet.AddState(0xe35, 0x0); // 19 3637 East g - Horde control
packet.AddState(0xe34, 0x0); // 20 3636 West g - Horde control
packet.AddState(0xe33, 0x0); // 21 3635 South g - Horde control
packet.AddState(0xe32, 0x0); // 22 3634 East g - Alliance control
packet.AddState(0xe31, 0x0); // 23 3633 West g - Alliance control
packet.AddState(0xe30, 0x0); // 24 3632 South g - Alliance control
packet.AddState(0xe2f, 0x0); // 25 3631 Chamber of Ancients - Horde control
packet.AddState(0xe2e, 0x0); // 26 3630 Chamber of Ancients - Alliance control
packet.AddState(0xe2d, 0x0); // 27 3629 Beach1 - Horde control
packet.AddState(0xe2c, 0x0); // 28 3628 Beach2 - Horde control
packet.AddState(0xe2b, 0x0); // 29 3627 Beach1 - Alliance control
packet.AddState(0xe2a, 0x0); // 30 3626 Beach2 - Alliance control
// and many unks...
// End Round timer, example: 19:59 -> A:BC
packet.AddState(3561, 0); // C
packet.AddState(3560, 0); // B
packet.AddState(3559, 0); // A
packet.AddState(3637, 0); // BG_SA_CENTER_GY_ALLIANCE
packet.AddState(3636, 0); // BG_SA_RIGHT_GY_ALLIANCE
packet.AddState(3635, 0); // BG_SA_LEFT_GY_ALLIANCE
packet.AddState(3634, 0); // BG_SA_CENTER_GY_HORDE
packet.AddState(3633, 0); // BG_SA_LEFT_GY_HORDE
packet.AddState(3632, 0); // BG_SA_RIGHT_GY_HORDE
packet.AddState(3631, 0); // BG_SA_HORDE_DEFENCE_TOKEN
packet.AddState(3630, 0); // BG_SA_ALLIANCE_DEFENCE_TOKEN
packet.AddState(3629, 0); // BG_SA_LEFT_ATT_TOKEN_HRD
packet.AddState(3628, 0); // BG_SA_RIGHT_ATT_TOKEN_HRD
packet.AddState(3627, 0); // BG_SA_RIGHT_ATT_TOKEN_ALL
packet.AddState(3626, 0); // BG_SA_LEFT_ATT_TOKEN_ALL
// missing unknowns
}
break;
case 4406: // Ring of Valor
@@ -3307,9 +3309,9 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(0xe10, 0x0); // 7 gold
packet.AddState(0xe11, 0x0); // 8 green
packet.AddState(0xe1a, 0x0); // 9 show
packet.AddState(3600, 0); // ARENA_WORLD_STATE_ALIVE_PLAYERS_GREEN
packet.AddState(3601, 0); // ARENA_WORLD_STATE_ALIVE_PLAYERS_GOLD
packet.AddState(3610, 0); // ARENA_WORLD_STATE_ALIVE_PLAYERS_SHOW
}
break;
case 4710:
@@ -3317,25 +3319,24 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(4221, 1); // 7 BG_IC_ALLIANCE_RENFORT_SET
packet.AddState(4222, 1); // 8 BG_IC_HORDE_RENFORT_SET
packet.AddState(4226, 300); // 9 BG_IC_ALLIANCE_RENFORT
packet.AddState(4227, 300); // 10 BG_IC_HORDE_RENFORT
packet.AddState(4322, 1); // 11 BG_IC_GATE_FRONT_H_WS_OPEN
packet.AddState(4321, 1); // 12 BG_IC_GATE_WEST_H_WS_OPEN
packet.AddState(4320, 1); // 13 BG_IC_GATE_EAST_H_WS_OPEN
packet.AddState(4323, 1); // 14 BG_IC_GATE_FRONT_A_WS_OPEN
packet.AddState(4324, 1); // 15 BG_IC_GATE_WEST_A_WS_OPEN
packet.AddState(4325, 1); // 16 BG_IC_GATE_EAST_A_WS_OPEN
packet.AddState(4317, 1); // 17 unknown
packet.AddState(4301, 1); // 18 BG_IC_DOCKS_UNCONTROLLED
packet.AddState(4296, 1); // 19 BG_IC_HANGAR_UNCONTROLLED
packet.AddState(4306, 1); // 20 BG_IC_QUARRY_UNCONTROLLED
packet.AddState(4311, 1); // 21 BG_IC_REFINERY_UNCONTROLLED
packet.AddState(4294, 1); // 22 BG_IC_WORKSHOP_UNCONTROLLED
packet.AddState(4243, 1); // 23 unknown
packet.AddState(4345, 1); // 24 unknown
packet.AddState(4221, 1); // BG_IC_ALLIANCE_RENFORT_SET
packet.AddState(4222, 1); // BG_IC_HORDE_RENFORT_SET
packet.AddState(4226, 300); // BG_IC_ALLIANCE_RENFORT
packet.AddState(4227, 300); // BG_IC_HORDE_RENFORT
packet.AddState(4322, 1); // BG_IC_GATE_FRONT_H_WS_OPEN
packet.AddState(4321, 1); // BG_IC_GATE_WEST_H_WS_OPEN
packet.AddState(4320, 1); // BG_IC_GATE_EAST_H_WS_OPEN
packet.AddState(4323, 1); // BG_IC_GATE_FRONT_A_WS_OPEN
packet.AddState(4324, 1); // BG_IC_GATE_WEST_A_WS_OPEN
packet.AddState(4325, 1); // BG_IC_GATE_EAST_A_WS_OPEN
packet.AddState(4317, 1); // unk
packet.AddState(4301, 1); // BG_IC_DOCKS_UNCONTROLLED
packet.AddState(4296, 1); // BG_IC_HANGAR_UNCONTROLLED
packet.AddState(4306, 1); // BG_IC_QUARRY_UNCONTROLLED
packet.AddState(4311, 1); // BG_IC_REFINERY_UNCONTROLLED
packet.AddState(4294, 1); // BG_IC_WORKSHOP_UNCONTROLLED
packet.AddState(4243, 1); // unk
packet.AddState(4345, 1); // unk
}
break;
// The Ruby Sanctum
@@ -3344,9 +3345,9 @@ namespace Game.Entities
instance.FillInitialWorldStates(packet);
else
{
packet.AddState(5049, 50); // 9 WORLDSTATE_CORPOREALITY_MATERIAL
packet.AddState(5050, 50); // 10 WORLDSTATE_CORPOREALITY_TWILIGHT
packet.AddState(5051, 0); // 11 WORLDSTATE_CORPOREALITY_TOGGLE
packet.AddState(5049, 50); // WORLDSTATE_CORPOREALITY_MATERIAL
packet.AddState(5050, 50); // WORLDSTATE_CORPOREALITY_TWILIGHT
packet.AddState(5051, 0); // WORLDSTATE_CORPOREALITY_TOGGLE
}
break;
// Icecrown Citadel
@@ -3355,11 +3356,11 @@ namespace Game.Entities
instance.FillInitialWorldStates(packet);
else
{
packet.AddState(4903, 0); // 9 WORLDSTATE_SHOW_TIMER (Blood Quickening weekly)
packet.AddState(4904, 30); // 10 WORLDSTATE_EXECUTION_TIME
packet.AddState(4940, 0); // 11 WORLDSTATE_SHOW_ATTEMPTS
packet.AddState(4941, 50); // 12 WORLDSTATE_ATTEMPTS_REMAINING
packet.AddState(4942, 50); // 13 WORLDSTATE_ATTEMPTS_MAX
packet.AddState(4903, 0); // WORLDSTATE_SHOW_TIMER (Blood Quickening weekly)
packet.AddState(4904, 30); // WORLDSTATE_EXECUTION_TIME
packet.AddState(4940, 0); // WORLDSTATE_SHOW_ATTEMPTS
packet.AddState(4941, 50); // WORLDSTATE_ATTEMPTS_REMAINING
packet.AddState(4942, 50); // WORLDSTATE_ATTEMPTS_MAX
}
break;
// The Culling of Stratholme
@@ -3368,11 +3369,11 @@ namespace Game.Entities
instance.FillInitialWorldStates(packet);
else
{
packet.AddState(3479, 0); // 9 WORLDSTATE_SHOW_CRATES
packet.AddState(3480, 0); // 10 WORLDSTATE_CRATES_REVEALED
packet.AddState(3504, 0); // 11 WORLDSTATE_WAVE_COUNT
packet.AddState(3931, 25); // 12 WORLDSTATE_TIME_GUARDIAN
packet.AddState(3932, 0); // 13 WORLDSTATE_TIME_GUARDIAN_SHOW
packet.AddState(3479, 0); // WORLDSTATE_SHOW_CRATES
packet.AddState(3480, 0); // WORLDSTATE_CRATES_REVEALED
packet.AddState(3504, 0); // WORLDSTATE_WAVE_COUNT
packet.AddState(3931, 25); // WORLDSTATE_TIME_GUARDIAN
packet.AddState(3932, 0); // WORLDSTATE_TIME_GUARDIAN_SHOW
}
break;
// The Oculus
@@ -3381,8 +3382,8 @@ namespace Game.Entities
instance.FillInitialWorldStates(packet);
else
{
packet.AddState(3524, 0); // 9 WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW
packet.AddState(3486, 0); // 10 WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT
packet.AddState(3524, 0); // WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW
packet.AddState(3486, 0); // WORLD_STATE_CENTRIFUGE_CONSTRUCT_AMOUNT
}
break;
// Ulduar
@@ -3391,8 +3392,18 @@ namespace Game.Entities
instance.FillInitialWorldStates(packet);
else
{
packet.AddState(4132, 0); // 9 WORLDSTATE_ALGALON_TIMER_ENABLED
packet.AddState(4131, 0); // 10 WORLDSTATE_ALGALON_DESPAWN_TIMER
packet.AddState(4132, 0); // WORLDSTATE_ALGALON_TIMER_ENABLED
packet.AddState(4131, 0); // WORLDSTATE_ALGALON_DESPAWN_TIMER
}
break;
case 4415: // Violet Hold
if (instance != null)
instance.FillInitialWorldStates(packet);
else
{
packet.AddState(3816, 0); // WORLD_STATE_VH_SHOW
packet.AddState(3815, 100); // WORLD_STATE_VH_PRISON_STATE
packet.AddState(3810, 0); // WORLD_STATE_VH_WAVE_COUNT
}
break;
// Halls of Refection
@@ -3401,18 +3412,22 @@ namespace Game.Entities
instance.FillInitialWorldStates(packet);
else
{
packet.AddState(4884, 0); // 9 WORLD_STATE_HOR_WAVES_ENABLED
packet.AddState(4882, 0); // 10 WORLD_STATE_HOR_WAVE_COUNT
packet.AddState(4884, 0); // WORLD_STATE_HOR_WAVES_ENABLED
packet.AddState(4882, 0); // WORLD_STATE_HOR_WAVE_COUNT
}
break;
case (uint)AreaId.Wintergrasp: // Wintergrasp
if (battlefield != null && battlefield.GetTypeId() == (uint)BattleFieldTypes.WinterGrasp)
battlefield.FillInitialWorldStates(packet);
break;
// Zul Aman
case 3805:
if (instance != null && mapid == 568)
instance.FillInitialWorldStates(packet);
else
{
packet.AddState(3104, 0); // 9 WORLD_STATE_ZULAMAN_TIMER_ENABLED
packet.AddState(3106, 0); // 10 WORLD_STATE_ZULAMAN_TIMER
packet.AddState(3104, 0); // WORLD_STATE_ZULAMAN_TIMER_ENABLED
packet.AddState(3106, 0); // WORLD_STATE_ZULAMAN_TIMER
}
break;
// Twin Peaks
@@ -3421,14 +3436,14 @@ namespace Game.Entities
bg.FillInitialWorldStates(packet);
else
{
packet.AddState(0x62d, 0x0); // 7 1581 alliance flag captures
packet.AddState(0x62e, 0x0); // 8 1582 horde flag captures
packet.AddState(0x609, 0x0); // 9 1545 unk
packet.AddState(0x60a, 0x0); // 10 1546 unk
packet.AddState(0x60b, 0x2); // 11 1547 unk
packet.AddState(0x641, 0x3); // 12 1601 unk
packet.AddState(0x922, 0x1); // 13 2338 horde (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
packet.AddState(0x923, 0x1); // 14 2339 alliance (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
packet.AddState(1581, 0x0); // alliance flag captures
packet.AddState(1582, 0x0); // horde flag captures
packet.AddState(1545, 0x0); // unk
packet.AddState(1546, 0x0); // unk
packet.AddState(1547, 0x2); // unk
packet.AddState(1601, 0x3); // unk
packet.AddState(2338, 0x1); // horde (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
packet.AddState(2339, 0x1); // alliance (0 - hide, 1 - flag ok, 2 - flag picked up (flashing), 3 - flag picked up (not flashing)
}
break;
// Battle for Gilneas
@@ -3436,17 +3451,21 @@ namespace Game.Entities
if (bg && bg.GetTypeID(true) == BattlegroundTypeId.BFG)
bg.FillInitialWorldStates(packet);
break;
// Wintergrasp
case (uint)AreaId.Wintergrasp:
if (bf != null && bf.GetTypeId() == (uint)BattleFieldTypes.WinterGrasp)
bf.FillInitialWorldStates(packet);
goto default;
// No break here, intended.
case 5389: // Tol Barad Peninsula
if (WorldConfig.GetBoolValue(WorldCfg.TolbaradEnable))
{
packet.AddState(WorldStates.BattlefieldTbAllianceControlsShow, Global.WorldMgr.GetWorldState(WorldStates.BattlefieldTbAllianceControlsShow));
packet.AddState(WorldStates.BattlefieldTbHordeControlsShow, Global.WorldMgr.GetWorldState(WorldStates.BattlefieldTbHordeControlsShow));
packet.AddState(WorldStates.BattlefieldTbTimeNextBattleShow, Global.WorldMgr.GetWorldState(WorldStates.BattlefieldTbTimeNextBattleShow));
packet.AddState(WorldStates.BattlefieldTbAllianceAttackingShow, Global.WorldMgr.GetWorldState(WorldStates.BattlefieldTbAllianceAttackingShow));
packet.AddState(WorldStates.BattlefieldTbHordeAttackingShow, Global.WorldMgr.GetWorldState(WorldStates.BattlefieldTbHordeAttackingShow));
}
break;
case 5095: // Tol Barad
if (battlefield != null && battlefield.GetTypeId() == (uint)BattleFieldTypes.TolBarad)
battlefield.FillInitialWorldStates(packet);
break;
default:
packet.AddState(0x914, 0x0); // 7
packet.AddState(0x913, 0x0); // 8
packet.AddState(0x912, 0x0); // 9
packet.AddState(0x915, 0x0); // 10
break;
}
@@ -38,14 +38,14 @@ namespace Game.Networking.Packets
}
}
public void AddState(WorldStates variableID, int value)
public void AddState(WorldStates variableID, uint value)
{
AddState((uint)variableID, value);
}
public void AddState(uint variableID, int value)
public void AddState(uint variableID, uint value)
{
Worldstates.Add(new WorldStateInfo(variableID, value));
Worldstates.Add(new WorldStateInfo(variableID, (int)value));
}
public void AddState(WorldStates variableID, bool value)
@@ -117,8 +117,8 @@ namespace Game.PvP
{
packet.AddState(OutdoorPvPHPWorldStates.Display_A, 1);
packet.AddState(OutdoorPvPHPWorldStates.Display_H, 1);
packet.AddState(OutdoorPvPHPWorldStates.Count_A, (int)m_AllianceTowersControlled);
packet.AddState(OutdoorPvPHPWorldStates.Count_H, (int)m_HordeTowersControlled);
packet.AddState(OutdoorPvPHPWorldStates.Count_A, m_AllianceTowersControlled);
packet.AddState(OutdoorPvPHPWorldStates.Count_H, m_HordeTowersControlled);
foreach (var capture in m_capturePoints.Values)
capture.FillInitialWorldStates(packet);
+14 -1
View File
@@ -17,6 +17,7 @@
using Framework.Constants;
using Game.AI;
using Game.BattleFields;
using Game.BattleGrounds;
using Game.Chat;
using Game.Conditions;
@@ -439,6 +440,18 @@ namespace Game.Scripting
public virtual bool _OnTrigger(Player player, AreaTriggerRecord trigger) { return false; }
}
public class BattlefieldScript : ScriptObject
{
public BattlefieldScript(string name) : base(name)
{
Global.ScriptMgr.AddScript(this);
}
public override bool IsDatabaseBound() { return true; }
public virtual BattleField GetBattlefield() { return null; }
}
public class BattlegroundScript : ScriptObject
{
@@ -450,7 +463,7 @@ namespace Game.Scripting
public override bool IsDatabaseBound() { return true; }
// Should return a fully valid Battlegroundobject for the type ID.
public virtual Battleground BattlegroundGetBattleground() { return null; }
public virtual Battleground GetBattleground() { return null; }
}
public class OutdoorPvPScript : ScriptObject
+7
View File
@@ -18,6 +18,7 @@
using Framework.Constants;
using Framework.Database;
using Game.AI;
using Game.BattleFields;
using Game.BattleGrounds;
using Game.Chat;
using Game.Conditions;
@@ -711,6 +712,12 @@ namespace Game.Scripting
return RunScriptRet<AreaTriggerScript>(p => entered ? p.OnTrigger(player, trigger) : p.OnExit(player, trigger), Global.ObjectMgr.GetAreaTriggerScriptId(trigger.Id));
}
//BattlefieldScript
public BattleField CreateBattlefield(uint scriptId)
{
return RunScriptRet<BattlefieldScript, BattleField>(p => p.GetBattlefield(), scriptId, null);
}
//BattlegroundScript
public Battleground CreateBattleground(BattlegroundTypeId typeId)
{
+10
View File
@@ -947,6 +947,16 @@ namespace Game
Values[WorldCfg.WintergraspNobattletime] = GetDefaultValue("Wintergrasp.NoBattleTimer", 150);
Values[WorldCfg.WintergraspRestartAfterCrash] = GetDefaultValue("Wintergrasp.CrashRestartTimer", 10);
// Tol Barad battlefield
Values[WorldCfg.TolbaradEnable] = GetDefaultValue("TolBarad.Enable", true);
Values[WorldCfg.TolbaradPlrMax] = GetDefaultValue("TolBarad.PlayerMax", 100);
Values[WorldCfg.TolbaradPlrMin] = GetDefaultValue("TolBarad.PlayerMin", 0);
Values[WorldCfg.TolbaradPlrMinLvl] = GetDefaultValue("TolBarad.PlayerMinLvl", 85);
Values[WorldCfg.TolbaradBattleTime] = GetDefaultValue("TolBarad.BattleTimer", 15);
Values[WorldCfg.TolbaradBonusTime] = GetDefaultValue("TolBarad.BonusTime", 5);
Values[WorldCfg.TolbaradNoBattleTime] = GetDefaultValue("TolBarad.NoBattleTimer", 150);
Values[WorldCfg.TolbaradRestartAfterCrash] = GetDefaultValue("TolBarad.CrashRestartTimer", 10);
// Stats limits
Values[WorldCfg.StatsLimitsEnable] = GetDefaultValue("Stats.Limits.Enable", false);
Values[WorldCfg.StatsLimitsDodge] = GetDefaultValue("Stats.Limits.Dodge", 95.0f);