93 { 190219, 3749, { 5371.457f, 3047.472f, 407.5710f, 3.14159300f }, { 0.f, 0.f, -1.000000000f, 0.00000000f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
94 { 190220, 3750, { 5331.264f, 3047.105f, 407.9228f, 0.05235888f }, { 0.f, 0.f, 0.026176450f, 0.99965730f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
95 { 191795, 3764, { 5385.841f, 2909.490f, 409.7127f, 0.00872424f }, { 0.f, 0.f, 0.004362106f, 0.99999050f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
96 { 191796, 3772, { 5384.452f, 2771.835f, 410.2704f, 3.14159300f }, { 0.f, 0.f, -1.000000000f, 0.00000000f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
97 { 191799, 3762, { 5371.436f, 2630.610f, 408.8163f, 3.13285800f }, { 0.f, 0.f, 0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
98 { 191800, 3766, { 5301.838f, 2909.089f, 409.8661f, 0.00872424f }, { 0.f, 0.f, 0.004362106f, 0.99999050f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
99 { 191801, 3770, { 5301.063f, 2771.411f, 409.9014f, 3.14159300f }, { 0.f, 0.f, -1.000000000f, 0.00000000f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
100 { 191802, 3751, { 5280.197f, 2995.583f, 408.8249f, 1.61442800f }, { 0.f, 0.f, 0.722363500f, 0.69151360f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
101 { 191803, 3752, { 5279.136f, 2956.023f, 408.6041f, 1.57079600f }, { 0.f, 0.f, 0.707106600f, 0.70710690f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
102 { 191804, 3767, { 5278.685f, 2882.513f, 409.5388f, 1.57079600f }, { 0.f, 0.f, 0.707106600f, 0.70710690f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
103 { 191806, 3769, { 5279.502f, 2798.945f, 409.9983f, 1.57079600f }, { 0.f, 0.f, 0.707106600f, 0.70710690f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
104 { 191807, 3759, { 5279.937f, 2724.766f, 409.9452f, 1.56207000f }, { 0.f, 0.f, 0.704014800f, 0.71018530f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
105 { 191808, 3760, { 5279.601f, 2683.786f, 409.8488f, 1.55334100f }, { 0.f, 0.f, 0.700908700f, 0.71325110f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
106 { 191809, 3761, { 5330.955f, 2630.777f, 409.2826f, 3.13285800f }, { 0.f, 0.f, 0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
107 { 190369, 3753, { 5256.085f, 2933.963f, 409.3571f, 3.13285800f }, { 0.f, 0.f, 0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
108 { 190370, 3758, { 5257.463f, 2747.327f, 409.7427f, -3.13285800f }, { 0.f, 0.f, -0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
109 { 190371, 3754, { 5214.960f, 2934.089f, 409.1905f, -0.00872424f }, { 0.f, 0.f, -0.004362106f, 0.99999050f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
110 { 190372, 3757, { 5215.821f, 2747.566f, 409.1884f, -3.13285800f }, { 0.f, 0.f, -0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
111 { 190374, 3755, { 5162.273f, 2883.043f, 410.2556f, 1.57952200f }, { 0.f, 0.f, 0.710185100f, 0.70401500f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
112 { 190376, 3756, { 5163.724f, 2799.838f, 409.2270f, 1.57952200f }, { 0.f, 0.f, 0.710185100f, 0.70401500f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
115 { 190221, 3711, { 5281.154f, 3044.588f, 407.8434f, 3.115388f }, { 0.f, 0.f, 0.9999142f, 0.013101960f },
BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER },
116 { 190373, 3713, { 5163.757f, 2932.228f, 409.1904f, 3.124123f }, { 0.f, 0.f, 0.9999619f, 0.008734641f },
BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER },
117 { 190377, 3714, { 5166.397f, 2748.368f, 409.1884f, -1.570796f }, { 0.f, 0.f, -0.7071066f, 0.707106900f },
BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER },
118 { 190378, 3712, { 5281.192f, 2632.479f, 409.0985f, -1.588246f }, { 0.f, 0.f, -0.7132492f, 0.700910500f },
BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER },
121 { 191797, 3765, { 5343.290f, 2908.860f, 409.5757f, 0.00872424f }, { 0.f, 0.f, 0.004362106f, 0.9999905f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
122 { 191798, 3771, { 5342.719f, 2771.386f, 409.6249f, 3.14159300f }, { 0.f, 0.f, -1.000000000f, 0.0000000f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
123 { 191805, 3768, { 5279.126f, 2840.797f, 409.7826f, 1.57952200f }, { 0.f, 0.f, 0.710185100f, 0.7040150f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
126 { 190356, 3704, { 4557.173f, 3623.943f, 395.8828f, 1.675516f }, { 0.f, 0.f, 0.7431450f, 0.669130400f },
BATTLEFIELD_WG_OBJECTTYPE_TOWER },
127 { 190357, 3705, { 4398.172f, 2822.497f, 405.6270f, -3.124123f }, { 0.f, 0.f, -0.9999619f, 0.008734641f },
BATTLEFIELD_WG_OBJECTTYPE_TOWER },
128 { 190358, 3706, { 4459.105f, 1944.326f, 434.9912f, -2.002762f }, { 0.f, 0.f, -0.8422165f, 0.539139500f },
BATTLEFIELD_WG_OBJECTTYPE_TOWER },
131 {
GO_WINTERGRASP_FORTRESS_GATE, 3763, { 5162.991f, 2841.232f, 410.1892f, -3.132858f }, { 0.f, 0.f, -0.9999905f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_DOOR },
134 {
GO_WINTERGRASP_VAULT_GATE, 3773, { 5397.108f, 2841.54f, 425.9014f, 3.141593f }, { 0.f, 0.f, -1.f, 0.f },
BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST },
161 { 5391.19f, 3060.8f, 419.616f, 1.69557f },
162 { 5266.75f, 2976.5f, 421.067f, 3.20354f },
163 { 5234.86f, 2948.8f, 420.88f, 1.61311f },
164 { 5323.05f, 2923.7f, 421.645f, 1.5817f },
165 { 5363.82f, 2923.87f, 421.709f, 1.60527f },
166 { 5264.04f, 2861.34f, 421.587f, 3.21142f },
167 { 5264.68f, 2819.78f, 421.656f, 3.15645f },
168 { 5322.16f, 2756.69f, 421.646f, 4.69978f },
169 { 5363.78f, 2756.77f, 421.629f, 4.78226f },
170 { 5236.2f, 2732.68f, 421.649f, 4.72336f },
171 { 5265.02f, 2704.63f, 421.7f, 3.12507f },
172 { 5350.87f, 2616.03f, 421.243f, 4.72729f },
173 { 5390.95f, 2615.5f, 421.126f, 4.6409f },
174 { 5148.8f, 2820.24f, 421.621f, 3.16043f },
175 { 5147.98f, 2861.93f, 421.63f, 3.18792f },
196 { { 5153.408f, 2901.349f, 409.1913f, -0.06981169f }, { 0.f, 0.f, -0.03489876f, 0.9993908f }, 190763, 191575 },
197 { { 5268.698f, 2666.421f, 409.0985f, -0.71558490f }, { 0.f, 0.f, -0.35020730f, 0.9366722f }, 190763, 191575 },
198 { { 5197.050f, 2944.814f, 409.1913f, 2.33874000f }, { 0.f, 0.f, 0.92050460f, 0.3907318f }, 190763, 191575 },
199 { { 5196.671f, 2737.345f, 409.1892f, -2.93213900f }, { 0.f, 0.f, -0.99452110f, 0.1045355f }, 190763, 191575 },
200 { { 5314.580f, 3055.852f, 408.8620f, 0.54105060f }, { 0.f, 0.f, 0.26723770f, 0.9636307f }, 190763, 191575 },
201 { { 5391.277f, 2828.094f, 418.6752f, -2.16420600f }, { 0.f, 0.f, -0.88294700f, 0.4694727f }, 190763, 191575 },
202 { { 5153.931f, 2781.671f, 409.2455f, 1.65806200f }, { 0.f, 0.f, 0.73727700f, 0.6755905f }, 190763, 191575 },
203 { { 5311.445f, 2618.931f, 409.0916f, -2.37364400f }, { 0.f, 0.f, -0.92718320f, 0.3746083f }, 190763, 191575 },
204 { { 5269.208f, 3013.838f, 408.8276f, -1.76278200f }, { 0.f, 0.f, -0.77162460f, 0.6360782f }, 190763, 191575 },
206 { { 5401.634f, 2853.667f, 418.6748f, 2.63544400f }, { 0.f, 0.f, 0.96814730f, 0.2503814f }, 192819, 192819 },
208 { { 5314.515f, 2703.687f, 408.5502f, -0.89011660f }, { 0.f, 0.f, -0.43051050f, 0.9025856f }, 192951, 192951 },
209 { { 5316.252f, 2977.042f, 408.5385f, -0.82030330f }, { 0.f, 0.f, -0.39874840f, 0.9170604f }, 192951, 192951 }
234 { { 4559.113f, 3606.216f, 419.9992f, 4.799657f }, { 0.f, 0.f, -0.67558960f, 0.73727790f }, 192488, 192501 },
235 { { 4539.420f, 3622.490f, 420.0342f, 3.211419f }, { 0.f, 0.f, -0.99939060f, 0.03490613f }, 192488, 192501 },
236 { { 4555.258f, 3641.648f, 419.9740f, 1.675514f }, { 0.f, 0.f, 0.74314400f, 0.66913150f }, 192488, 192501 },
237 { { 4574.872f, 3625.911f, 420.0792f, 0.087266f }, { 0.f, 0.f, 0.04361916f, 0.99904820f }, 192488, 192501 },
238 { { 4433.899f, 3534.142f, 360.2750f, 4.433136f }, { 0.f, 0.f, -0.79863550f, 0.60181500f }, 192269, 192278 },
239 { { 4572.933f, 3475.519f, 363.0090f, 1.422443f }, { 0.f, 0.f, 0.65275960f, 0.75756520f }, 192269, 192277 }
249 { { 4416.004f, 2822.666f, 429.8512f, 6.2657330f }, { 0.f, 0.f, -0.00872612f, 0.99996190f }, 192488, 192501 },
250 { { 4398.819f, 2804.698f, 429.7920f, 4.6949370f }, { 0.f, 0.f, -0.71325020f, 0.70090960f }, 192488, 192501 },
251 { { 4387.622f, 2719.566f, 389.9351f, 4.7385700f }, { 0.f, 0.f, -0.69779010f, 0.71630230f }, 192366, 192414 },
252 { { 4464.124f, 2855.453f, 406.1106f, 0.8290324f }, { 0.f, 0.f, 0.40274720f, 0.91531130f }, 192366, 192429 },
253 { { 4526.457f, 2810.181f, 391.1997f, 3.2899610f }, { 0.f, 0.f, -0.99724960f, 0.07411628f }, 192269, 192278 }
268 { { 4466.793f, 1960.418f, 459.1437f, 1.151916f }, { 0.f, 0.f, 0.5446386f, 0.8386708f }, 192488, 192501 },
269 { { 4475.351f, 1937.031f, 459.0702f, 5.846854f }, { 0.f, 0.f, -0.2164392f, 0.9762961f }, 192488, 192501 },
270 { { 4451.758f, 1928.104f, 459.0759f, 4.276057f }, { 0.f, 0.f, -0.8433914f, 0.5372996f }, 192488, 192501 },
271 { { 4442.987f, 1951.898f, 459.0930f, 2.740162f }, { 0.f, 0.f, 0.9799242f, 0.1993704f }, 192488, 192501 }
300 { 5255.88f, 3047.63f, 438.499f, 3.13677f },
301 { 5280.90f, 3071.32f, 438.499f, 1.62879f }
310 { 5138.59f, 2935.16f, 439.845f, 3.11723f },
311 { 5163.06f, 2959.52f, 439.846f, 1.47258f }
320 { 5163.84f, 2723.74f, 439.844f, 1.39940f },
321 { 5139.69f, 2747.40f, 439.844f, 3.17221f }
330 { 5278.21f, 2607.23f, 439.755f, 4.71944f },
331 { 5255.01f, 2631.98f, 439.755f, 3.15257f }
337 { 4537.380371f, 3599.531738f, 402.886993f, 3.998462f },
338 { 4581.497559f, 3604.087158f, 402.886963f, 5.651723f }
341 { 4469.448242f, 1966.623779f, 465.647217f, 1.153573f },
342 { 4581.895996f, 3626.438477f, 426.539062f, 0.117806f }
348 { 4421.640137f, 2799.935791f, 412.630920f, 5.459298f },
349 { 4420.263184f, 2845.340332f, 412.630951f, 0.742197f }
352 { 4423.430664f, 2822.762939f, 436.283142f, 6.223487f },
353 { 4397.825684f, 2847.629639f, 436.283325f, 1.579430f },
354 { 4398.814941f, 2797.266357f, 436.283051f, 4.703747f }
360 { 4448.138184f, 1974.998779f, 441.995911f, 1.967238f },
361 { 4448.713379f, 1955.148682f, 441.995178f, 0.380733f }
364 { 4469.448242f, 1966.623779f, 465.647217f, 1.153573f },
365 { 4481.996582f, 1933.658325f, 465.647186f, 5.873029f }
497 CanonList.push_back(creature->GetGUID());
550 TC_LOG_ERROR(
"bg.battlefield",
"WG: Failed to spawn titan relic.");
572 building->UpdateTurretAttack(
false);
582 workshop->UpdateGraveyardAndWorkshop();
592 player->GetPosition(x, y, z);
593 if (5500 > x && x > 5392 && y < 2880 && y > 2800 && z < 480)
594 player->TeleportTo(571, 5349.8686f, 2838.481f, 409.240f, 0.046328f);
619 else if (workshop->GetTeamControl() ==
TEAM_HORDE)
631 relic->RemoveFromWorld();
637 building->RebuildGate();
695 if (!endByTimer &&
GetTimer() <= 10000)
714 if (creature->IsVehicle())
715 creature->DespawnOrUnsummon();
748 if (!achievementEntry)
792 TC_LOG_ERROR(
"bg.battlefield",
"BattlefieldWG::GetSpiritGraveyardId: Unexpected Area Id {}", areaId);
907 uint8 workshopId = 0;
929 if (workshop->GetId() == workshopId)
951 if (killer == victim)
999 if (player->GetDistance2d(unitKilled) < 40.0f)
1011 if (auraRecruit->GetStackAmount() >= 5)
1016 sCreatureTextMgr->SendChat(stalker,
BATTLEFIELD_WG_TEXT_RANK_CORPORAL, killer,
CHAT_MSG_ADDON,
LANG_ADDON,
TEXT_RANGE_NORMAL, 0,
SoundKitPlayType::Normal,
TEAM_OTHER,
false, killer);
1023 if (auraCorporal->GetStackAmount() >= 5)
1028 sCreatureTextMgr->SendChat(stalker,
BATTLEFIELD_WG_TEXT_RANK_FIRST_LIEUTENANT, killer,
CHAT_MSG_ADDON,
LANG_ADDON,
TEXT_RANGE_NORMAL, 0,
SoundKitPlayType::Normal,
TEAM_OTHER,
false, killer);
1056 player->
TeleportTo(571, 5345, 2842, 410, 3.14f);
1060 player->
TeleportTo(571, 5025.857422f, 3674.628906f, 362.737122f, 4.135169f);
1062 player->
TeleportTo(571, 5101.284f, 2186.564f, 373.549f, 3.812f);
1086 vehicle->DespawnOrUnsummon();
1129 return graveyard->GetControlTeamId();
1218 if (go->
GetGUID() == building->GetGUID())
1222 if (buildingGo->GetGOInfo()->destructibleBuilding.DamagedEvent == eventId)
1223 building->Damaged();
1224 else if (buildingGo->GetGOInfo()->destructibleBuilding.DestroyedEvent == eventId)
1225 building->Destroyed();
1256 if (alliancePlayers && hordePlayers)
1258 if (alliancePlayers < hordePlayers)
1259 newStack =
int32((
float(hordePlayers / alliancePlayers) - 1) * 4);
1260 else if (alliancePlayers > hordePlayers)
1261 newStack =
int32((1 -
float(alliancePlayers / hordePlayers)) * 4);
1287 newStack = -newStack;
1307 if (buff_honor != 0)
1311 player->CastSpell(player, buff_honor,
true);
1315 creature->CastSpell(creature, buff_honor,
true);
1391 if (build->IsDestructibleBuilding())
1468 TC_LOG_ERROR(
"bg.battlefield.wg",
"Titan Relic not found.");
void AddSC_BF_wintergrasp()
WintergraspGameObjectData const WGPortalDefenderData[WG_MAX_TELEPORTER]
WintergraspTowerData const AttackTowers[WG_MAX_ATTACKTOWERS]
Position const WintergraspStalkerPos
Position const WintergraspRelicPos
WintergraspTowerCannonData const TowerCannon[WG_MAX_TOWER_CANNON]
QuaternionData const WintergraspRelicRot
uint8 const WG_MAX_TURRET
StaticWintergraspTowerInfo const TowerData[WG_MAX_TOWER]
uint32 const ClockWorldState[]
uint32 const WintergraspFaction[]
uint8 const WG_MAX_ATTACKTOWERS
uint8 const WG_MAX_TOWER_CANNON
uint8 const WG_MAX_TELEPORTER
BfWGCoordGY const WGGraveyard[BATTLEFIELD_WG_GRAVEYARD_MAX]
Position const WGTurret[WG_MAX_TURRET]
uint8 const WG_MAX_WORKSHOP
StaticWintergraspWorkshopInfo const WorkshopData[WG_MAX_WORKSHOP]
WintergraspBuildingSpawnData const WGGameObjectBuilding[WG_MAX_OBJ]
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_HORDE
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_SW
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_SE
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_NE
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_NW
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_ALLIANCE
@ BATTLEFIELD_WG_GOSSIPTEXT_GY_KEEP
WintergraspGameObjectBuildingType
@ BATTLEFIELD_WG_OBJECTTYPE_DOOR
@ BATTLEFIELD_WG_OBJECTTYPE_TOWER
@ BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER
@ BATTLEFIELD_WG_OBJECTTYPE_WALL
@ BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST
@ NPC_WINTERGRASP_SIEGE_ENGINE_HORDE
@ NPC_WINTERGRASP_CATAPULT
@ NPC_WINTERGRASP_DEMOLISHER
@ NPC_WINTERGRASP_TOWER_CANNON
@ BATTLEFIELD_WG_NPC_GUARD_H
@ NPC_DWARVEN_SPIRIT_GUIDE
@ NPC_TAUNKA_SPIRIT_GUIDE
@ BATTLEFIELD_WG_NPC_STALKER
@ BATTLEFIELD_WG_NPC_GUARD_A
@ NPC_WINTERGRASP_SIEGE_ENGINE_ALLIANCE
@ BATTLEFIELD_WG_TOWER_WINTER_S_EDGE
@ BATTLEFIELD_WG_TOWER_SHADOWSIGHT
@ BATTLEFIELD_WG_TOWER_FORTRESS_SE
@ BATTLEFIELD_WG_TOWER_FORTRESS_NW
@ BATTLEFIELD_WG_TOWER_FLAMEWATCH
@ BATTLEFIELD_WG_TOWER_FORTRESS_NE
@ BATTLEFIELD_WG_TOWER_FORTRESS_SW
@ SPELL_ESSENCE_OF_WINTERGRASP
@ SPELL_WINTERGRASP_RESTRICTED_FLIGHT_AREA
@ SPELL_ALLIANCE_CONTROLS_FACTORY_PHASE_SHIFT
@ SPELL_HORDE_CONTROLS_FACTORY_PHASE_SHIFT
@ SPELL_SPIRITUAL_IMMUNITY
@ QUEST_CREDIT_TOWERS_DESTROYED
@ QUEST_VICTORY_WINTERGRASP_A
@ QUEST_CREDIT_DEFEND_SIEGE
@ QUEST_VICTORY_WINTERGRASP_H
@ GO_WINTERGRASP_FACTORY_BANNER_SW
@ GO_WINTERGRASP_FORTRESS_TOWER_3
@ GO_WINTERGRASP_FORTRESS_TOWER_2
@ GO_WINTERGRASP_FLAMEWATCH_TOWER
@ GO_WINTERGRASP_FORTRESS_TOWER_4
@ GO_WINTERGRASP_SHADOWSIGHT_TOWER
@ GO_WINTERGRASP_FACTORY_BANNER_NW
@ GO_WINTERGRASP_FACTORY_BANNER_NE
@ GO_WINTERGRASP_TITAN_S_RELIC
@ GO_WINTERGRASP_FORTRESS_TOWER_1
@ GO_WINTERGRASP_FACTORY_BANNER_SE
@ GO_WINTERGRASP_FORTRESS_GATE
@ GO_WINTERGRASP_WINTER_S_EDGE_TOWER
@ GO_WINTERGRASP_VAULT_GATE
@ GO_WINTERGRASP_KEEP_COLLISION_WALL
@ BATTLEFIELD_WG_GY_WORKSHOP_NE
@ BATTLEFIELD_WG_GRAVEYARD_MAX
@ BATTLEFIELD_WG_GY_WORKSHOP_SW
@ BATTLEFIELD_WG_GY_WORKSHOP_SE
@ BATTLEFIELD_WG_GY_HORDE
@ BATTLEFIELD_WG_GY_WORKSHOP_NW
@ BATTLEFIELD_WG_GY_ALLIANCE
@ ACHIEVEMENTS_WIN_WG_TIMER_10
@ ACHIEVEMENTS_WIN_WG_100
@ ACHIEVEMENTS_WG_TOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_HORDE
@ BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_FORTRESS_DEFEND_HORDE
@ BATTLEFIELD_WG_TEXT_RANK_CORPORAL
@ BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_HORDE
@ BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_ALLIANCE
@ BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_ALLIANCE
@ BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_START_BATTLE
@ BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_HORDE
@ BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_RANK_FIRST_LIEUTENANT
@ BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_FORTRESS_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_START_GROUPING
@ BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_ALLIANCE
@ BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_ALLIANCE
@ BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_ALLIANCE
@ BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_FORTRESS_DEFEND_ALLIANCE
@ BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DESTROY
@ BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_FORTRESS_CAPTURE_HORDE
@ BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_HORDE
@ BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DAMAGE
@ BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DESTROY
@ BATTLEFIELD_WG_DATA_VEHICLE_A
@ BATTLEFIELD_WG_DATA_MAX_VEHICLE_A
@ BATTLEFIELD_WG_DATA_MAX
@ BATTLEFIELD_WG_DATA_DAMAGED_TOWER_DEF
@ BATTLEFIELD_WG_DATA_VEHICLE_H
@ BATTLEFIELD_WG_DATA_BROKEN_TOWER_ATT
@ BATTLEFIELD_WG_DATA_MAX_VEHICLE_H
@ BATTLEFIELD_WG_DATA_DAMAGED_TOWER_ATT
@ BATTLEFIELD_WG_DATA_BROKEN_TOWER_DEF
WintergraspGameObjectState
@ BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DAMAGE
@ BATTLEFIELD_WG_OBJECTSTATE_NONE
@ BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DESTROY
@ BATTLEFIELD_WG_OBJECTSTATE_HORDE_DESTROY
@ BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_DESTROY
@ BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_INTACT
@ BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_INTACT
@ BATTLEFIELD_WG_OBJECTSTATE_HORDE_INTACT
@ BATTLEFIELD_WG_OBJECTSTATE_NEUTRAL_DAMAGE
@ BATTLEFIELD_WG_OBJECTSTATE_HORDE_DAMAGE
@ BATTLEFIELD_WG_WORKSHOP_SE
@ BATTLEFIELD_WG_WORKSHOP_KEEP_WEST
@ BATTLEFIELD_WG_WORKSHOP_KEEP_EAST
@ BATTLEFIELD_WG_WORKSHOP_NW
@ BATTLEFIELD_WG_WORKSHOP_SW
@ BATTLEFIELD_WG_WORKSHOP_NE
@ BATTLEFIELD_BATTLEID_WG
@ SPELL_HORDE_CONTROL_PHASE_SHIFT
@ SPELL_ALLIANCE_CONTROL_PHASE_SHIFT
DB2Storage< AchievementEntry > sAchievementStore("Achievement.db2", &AchievementLoadInfo::Instance)
#define ASSERT_NOTNULL(pointer)
#define TC_LOG_ERROR(filterType__,...)
uint32 urand(uint32 min, uint32 max)
@ GO_DESTRUCTIBLE_DESTROYED
@ GO_DESTRUCTIBLE_REBUILDING
@ GO_DESTRUCTIBLE_DAMAGED
uint8 constexpr PVP_TEAMS_COUNT
@ FACTION_ALLIANCE_GENERIC_WG
@ FACTION_HORDE_GENERIC_WG
@ AREA_WINTERGRASP_FORTRESS
@ AREA_THE_BROKEN_TEMPLATE
@ AREA_THE_CHILLED_QUAGMIRE
@ WS_BATTLEFIELD_WG_WORKSHOP_NE
@ WS_BATTLEFIELD_WG_VEHICLE_H
@ WS_BATTLEFIELD_WG_MAX_VEHICLE_H
@ WS_BATTLEFIELD_WG_TIME_BATTLE_END
@ WS_BATTLEFIELD_WG_WORKSHOP_K_E
@ WS_BATTLEFIELD_WG_WORKSHOP_SW
@ WS_BATTLEFIELD_WG_DEFENDED_H
@ WS_BATTLEFIELD_WG_SHOW_TIME_NEXT_BATTLE
@ WS_BATTLEFIELD_WG_DEFENDER
@ WS_BATTLEFIELD_WG_SHOW_TIME_BATTLE_END
@ WS_BATTLEFIELD_WG_ATTACKER
@ WS_BATTLEFIELD_WG_VEHICLE_A
@ WS_BATTLEFIELD_WG_WORKSHOP_K_W
@ WS_BATTLEFIELD_WG_ATTACKED_A
@ WS_BATTLEFIELD_WG_TIME_NEXT_BATTLE
@ WS_BATTLEFIELD_WG_MAX_VEHICLE_A
@ WS_BATTLEFIELD_WG_WORKSHOP_SE
@ WS_BATTLEFIELD_WG_WORKSHOP_NW
@ WS_BATTLEFIELD_WG_ATTACKED_H
@ WS_BATTLEFIELD_WG_DEFENDED_A
ObjectGuid m_titansRelicGUID
void OnPlayerLeaveZone(Player *player) override
Called when player left the WG zone.
void OnUnitDeath(Unit *unit) override
GuidVector DefenderPortalList[PVP_TEAMS_COUNT]
void RemoveAurasFromPlayer(Player *player)
void UpdateCounterVehicle(bool init)
void OnBattleEnd(bool endByTimer) override
Called when battle end.
void OnStartGrouping() override
Called when grouping starts (15 minutes before battlestart)
GameObject * GetRelic()
Return pointer to relic object.
void ProcessEvent(WorldObject *obj, uint32 eventId, WorldObject *invoker) override
void PromotePlayer(Player *killer)
void OnPlayerLeaveWar(Player *player) override
Called when player left the battle.
void UpdateVehicleCountWG()
void SetRelicInteractible(bool allow)
Define if player can interact with the relic.
bool SetupBattlefield() override
Called when battlefield is setup, at server start.
void UpdatedDestroyedTowerCount(TeamId team)
Called when tower is broken.
void BrokenWallOrTower(TeamId team, BfWGGameObjectBuilding *building)
Called when a wall/tower is broken.
void OnBattleStart() override
Called when the battle start.
GuidUnorderedSet m_vehicles[PVP_TEAMS_COUNT]
void OnPlayerEnterZone(Player *player) override
Called when player enters in WG zone.
bool CanInteractWithRelic()
Check if players can interact with the relic (Only if the last door has been broken)
void UpdateDamagedTowerCount(TeamId team)
Called when a tower is damaged.
GameObjectBuildingVect BuildingsInZone
void OnCreatureRemove(Creature *creature) override
Called when a creature is removed.
void OnPlayerJoinWar(Player *player) override
Called when player accept invite to join battle.
void OnCreatureCreate(Creature *creature) override
Called when a creature is created.
bool FindAndRemoveVehicleFromList(Unit *vehicle)
uint8 GetSpiritGraveyardId(uint32 areaId) const
void HandleKill(Player *killer, Unit *victim) override
Called when a Unit is kill in battlefield zone.
void OnGameObjectCreate(GameObject *go) override
Called when a gameobject is created.
uint32 GetData(uint32 data) const override
void DoCompleteOrIncrementAchievement(uint32 achievement, Player *player, uint8 incrementNumber=1) override
void HandlePromotion(Player *killer, Unit *killed)
Battlefield_wintergrasp()
Battlefield * GetBattlefield(Map *map) const override
GameObject * SpawnGameObject(uint32 entry, Position const &pos, QuaternionData const &rot)
void ProcessEvent(WorldObject *target, uint32 eventId, WorldObject *invoker) override
GraveyardVect m_GraveyardList
GameObject * GetGameObject(ObjectGuid guid)
void ShowNpc(Creature *creature, bool aggressive)
Creature * GetCreature(ObjectGuid guid)
std::vector< uint32 > m_Data32
Creature * SpawnCreature(uint32 entry, Position const &pos)
void EndBattle(bool endByTimer)
virtual void SetData(uint32 dataId, uint32 value) override
bool IsWarTime() const
Return true if battle is start, false if battle is not started.
void InitStalker(uint32 entry, Position const &pos)
virtual void UpdateData(uint32 index, int32 pad)
uint32 m_StartGroupingTimer
void RegisterZone(uint32 zoneid)
void SendWarning(uint8 id, WorldObject const *target=nullptr)
uint32 m_TimeForAcceptInvite
BfGraveyard * GetGraveyardById(uint32 id) const
GuidUnorderedSet m_PlayersInWar[PVP_TEAMS_COUNT]
void HideNpc(Creature *creature)
uint32 m_RestartAfterCrash
TeamId GetAttackerTeam() const
TeamId GetDefenderTeam() const
virtual uint32 GetData(uint32 dataId) const override
ControlZoneHandlerMap ControlZoneHandlers
WorldLocation KickPosition
void SetGraveyardNumber(uint32 number)
bool IsEnabled() const
Return if battlefield is enable.
GuidUnorderedSet m_players[PVP_TEAMS_COUNT]
BfGraveyardWG(BattlefieldWG *Bf)
void SetTextId(uint32 textId)
void Initialize(TeamId startcontrol, uint32 gy)
virtual void HandleContestedEventAlliance(GameObject *controlZone)
virtual void HandleContestedEventHorde(GameObject *controlZone)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void RemoveFlag(GameObjectFlags flags)
void SetDestructibleState(GameObjectDestructibleState state, WorldObject *attackerOrHealer=nullptr, bool setHealth=false)
void HandleCustomTypeCommand(GameObjectTypeBase::CustomCommand const &command) const
static GameObject * ToGameObject(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, TeleportToOptions options=TELE_TO_NONE, Optional< uint32 > instanceId={})
void CompletedAchievement(AchievementEntry const *entry)
WorldSession * GetSession() const
ObjectGuid GetSummonerGUID() const
void RemoveAura(AuraApplicationMap::iterator &i, AuraRemoveMode mode=AURA_REMOVE_BY_DEFAULT)
Creature * GetVehicleCreatureBase() const
void SetAuraStack(uint32 spellId, Unit *target, uint32 stack)
Aura * AddAura(uint32 spellId, Unit *target)
TempSummon * ToTempSummon()
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint32 reqEffMask=0) const
void SetUnitFlag(UnitFlags flags)
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint32 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void HandleContestedEventAlliance(GameObject *controlZone) override
void HandleProgressEventHorde(GameObject *controlZone) override
WintergraspWorkshop * m_Workshop
void HandleProgressEventAlliance(GameObject *controlZone) override
void HandleContestedEventHorde(GameObject *controlZone) override
WintergraspCapturePoint(BattlefieldWG *battlefield, WintergraspWorkshop *workshop)
GameObject * FindNearestGameObject(uint32 entry, float range, bool spawnedOnly=true) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
bool PlayerLogout() const
@ CONFIG_WINTERGRASP_PLR_MIN_LVL
@ CONFIG_WINTERGRASP_BATTLETIME
@ CONFIG_WINTERGRASP_NOBATTLETIME
@ CONFIG_WINTERGRASP_RESTART_AFTER_CRASH
@ CONFIG_WINTERGRASP_PLR_MAX
@ CONFIG_WINTERGRASP_PLR_MIN
@ CONFIG_WINTERGRASP_ENABLE
ObjectData const creatureData[]
TC_GAME_API Player * FindPlayer(ObjectGuid const &)
GuidVector m_CreatureBottomList[PVP_TEAMS_COUNT]
StaticWintergraspTowerInfo const * _staticTowerInfo
void UpdateTurretAttack(bool disable)
BfWGGameObjectBuilding(BattlefieldWG *wg, WintergraspGameObjectBuildingType type, uint32 worldState)
void Init(GameObject *go)
WintergraspGameObjectState _state
GuidVector m_TurretTopList
ObjectGuid const & GetGUID() const
void UpdateCreatureAndGo()
WintergraspGameObjectBuildingType _type
GuidVector m_TowerCannonBottomList
GuidVector m_CreatureTopList[PVP_TEAMS_COUNT]
GuidVector m_GameObjectList[PVP_TEAMS_COUNT]
constexpr void GetPosition(float &x, float &y) const
constexpr void Relocate(float x, float y)
struct StaticWintergraspTowerInfo::@342 TextIds
struct StaticWintergraspWorkshopInfo::@343 TextIds
WintergraspGameObjectBuildingType type
std::vector< Position > TurretTop
std::vector< Position > TowerCannonBottom
std::vector< WintergraspGameObjectData > GameObject
std::vector< WintergraspObjectPositionData > CreatureBottom
WintergraspGameObjectState _state
void GiveControlTo(TeamId teamId, bool init=false)
StaticWintergraspWorkshopInfo const * _staticInfo
void UpdateGraveyardAndWorkshop()
WintergraspWorkshop(BattlefieldWG *wg, uint8 type)