96 { 190219, 3749, { 5371.457f, 3047.472f, 407.5710f, 3.14159300f }, { 0.f, 0.f, -1.000000000f, 0.00000000f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
97 { 190220, 3750, { 5331.264f, 3047.105f, 407.9228f, 0.05235888f }, { 0.f, 0.f, 0.026176450f, 0.99965730f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
98 { 191795, 3764, { 5385.841f, 2909.490f, 409.7127f, 0.00872424f }, { 0.f, 0.f, 0.004362106f, 0.99999050f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
99 { 191796, 3772, { 5384.452f, 2771.835f, 410.2704f, 3.14159300f }, { 0.f, 0.f, -1.000000000f, 0.00000000f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
100 { 191799, 3762, { 5371.436f, 2630.610f, 408.8163f, 3.13285800f }, { 0.f, 0.f, 0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
101 { 191800, 3766, { 5301.838f, 2909.089f, 409.8661f, 0.00872424f }, { 0.f, 0.f, 0.004362106f, 0.99999050f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
102 { 191801, 3770, { 5301.063f, 2771.411f, 409.9014f, 3.14159300f }, { 0.f, 0.f, -1.000000000f, 0.00000000f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
103 { 191802, 3751, { 5280.197f, 2995.583f, 408.8249f, 1.61442800f }, { 0.f, 0.f, 0.722363500f, 0.69151360f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
104 { 191803, 3752, { 5279.136f, 2956.023f, 408.6041f, 1.57079600f }, { 0.f, 0.f, 0.707106600f, 0.70710690f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
105 { 191804, 3767, { 5278.685f, 2882.513f, 409.5388f, 1.57079600f }, { 0.f, 0.f, 0.707106600f, 0.70710690f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
106 { 191806, 3769, { 5279.502f, 2798.945f, 409.9983f, 1.57079600f }, { 0.f, 0.f, 0.707106600f, 0.70710690f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
107 { 191807, 3759, { 5279.937f, 2724.766f, 409.9452f, 1.56207000f }, { 0.f, 0.f, 0.704014800f, 0.71018530f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
108 { 191808, 3760, { 5279.601f, 2683.786f, 409.8488f, 1.55334100f }, { 0.f, 0.f, 0.700908700f, 0.71325110f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
109 { 191809, 3761, { 5330.955f, 2630.777f, 409.2826f, 3.13285800f }, { 0.f, 0.f, 0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
110 { 190369, 3753, { 5256.085f, 2933.963f, 409.3571f, 3.13285800f }, { 0.f, 0.f, 0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
111 { 190370, 3758, { 5257.463f, 2747.327f, 409.7427f, -3.13285800f }, { 0.f, 0.f, -0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
112 { 190371, 3754, { 5214.960f, 2934.089f, 409.1905f, -0.00872424f }, { 0.f, 0.f, -0.004362106f, 0.99999050f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
113 { 190372, 3757, { 5215.821f, 2747.566f, 409.1884f, -3.13285800f }, { 0.f, 0.f, -0.999990500f, 0.00436732f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
114 { 190374, 3755, { 5162.273f, 2883.043f, 410.2556f, 1.57952200f }, { 0.f, 0.f, 0.710185100f, 0.70401500f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
115 { 190376, 3756, { 5163.724f, 2799.838f, 409.2270f, 1.57952200f }, { 0.f, 0.f, 0.710185100f, 0.70401500f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
118 { 190221, 3711, { 5281.154f, 3044.588f, 407.8434f, 3.115388f }, { 0.f, 0.f, 0.9999142f, 0.013101960f },
BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER },
119 { 190373, 3713, { 5163.757f, 2932.228f, 409.1904f, 3.124123f }, { 0.f, 0.f, 0.9999619f, 0.008734641f },
BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER },
120 { 190377, 3714, { 5166.397f, 2748.368f, 409.1884f, -1.570796f }, { 0.f, 0.f, -0.7071066f, 0.707106900f },
BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER },
121 { 190378, 3712, { 5281.192f, 2632.479f, 409.0985f, -1.588246f }, { 0.f, 0.f, -0.7132492f, 0.700910500f },
BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER },
124 { 191797, 3765, { 5343.290f, 2908.860f, 409.5757f, 0.00872424f }, { 0.f, 0.f, 0.004362106f, 0.9999905f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
125 { 191798, 3771, { 5342.719f, 2771.386f, 409.6249f, 3.14159300f }, { 0.f, 0.f, -1.000000000f, 0.0000000f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
126 { 191805, 3768, { 5279.126f, 2840.797f, 409.7826f, 1.57952200f }, { 0.f, 0.f, 0.710185100f, 0.7040150f },
BATTLEFIELD_WG_OBJECTTYPE_WALL },
129 { 190356, 3704, { 4557.173f, 3623.943f, 395.8828f, 1.675516f }, { 0.f, 0.f, 0.7431450f, 0.669130400f },
BATTLEFIELD_WG_OBJECTTYPE_TOWER },
130 { 190357, 3705, { 4398.172f, 2822.497f, 405.6270f, -3.124123f }, { 0.f, 0.f, -0.9999619f, 0.008734641f },
BATTLEFIELD_WG_OBJECTTYPE_TOWER },
131 { 190358, 3706, { 4459.105f, 1944.326f, 434.9912f, -2.002762f }, { 0.f, 0.f, -0.8422165f, 0.539139500f },
BATTLEFIELD_WG_OBJECTTYPE_TOWER },
134 {
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 },
137 {
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 },
164 { 5391.19f, 3060.8f, 419.616f, 1.69557f },
165 { 5266.75f, 2976.5f, 421.067f, 3.20354f },
166 { 5234.86f, 2948.8f, 420.88f, 1.61311f },
167 { 5323.05f, 2923.7f, 421.645f, 1.5817f },
168 { 5363.82f, 2923.87f, 421.709f, 1.60527f },
169 { 5264.04f, 2861.34f, 421.587f, 3.21142f },
170 { 5264.68f, 2819.78f, 421.656f, 3.15645f },
171 { 5322.16f, 2756.69f, 421.646f, 4.69978f },
172 { 5363.78f, 2756.77f, 421.629f, 4.78226f },
173 { 5236.2f, 2732.68f, 421.649f, 4.72336f },
174 { 5265.02f, 2704.63f, 421.7f, 3.12507f },
175 { 5350.87f, 2616.03f, 421.243f, 4.72729f },
176 { 5390.95f, 2615.5f, 421.126f, 4.6409f },
177 { 5148.8f, 2820.24f, 421.621f, 3.16043f },
178 { 5147.98f, 2861.93f, 421.63f, 3.18792f },
199 { { 5153.408f, 2901.349f, 409.1913f, -0.06981169f }, { 0.f, 0.f, -0.03489876f, 0.9993908f }, 190763, 191575 },
200 { { 5268.698f, 2666.421f, 409.0985f, -0.71558490f }, { 0.f, 0.f, -0.35020730f, 0.9366722f }, 190763, 191575 },
201 { { 5197.050f, 2944.814f, 409.1913f, 2.33874000f }, { 0.f, 0.f, 0.92050460f, 0.3907318f }, 190763, 191575 },
202 { { 5196.671f, 2737.345f, 409.1892f, -2.93213900f }, { 0.f, 0.f, -0.99452110f, 0.1045355f }, 190763, 191575 },
203 { { 5314.580f, 3055.852f, 408.8620f, 0.54105060f }, { 0.f, 0.f, 0.26723770f, 0.9636307f }, 190763, 191575 },
204 { { 5391.277f, 2828.094f, 418.6752f, -2.16420600f }, { 0.f, 0.f, -0.88294700f, 0.4694727f }, 190763, 191575 },
205 { { 5153.931f, 2781.671f, 409.2455f, 1.65806200f }, { 0.f, 0.f, 0.73727700f, 0.6755905f }, 190763, 191575 },
206 { { 5311.445f, 2618.931f, 409.0916f, -2.37364400f }, { 0.f, 0.f, -0.92718320f, 0.3746083f }, 190763, 191575 },
207 { { 5269.208f, 3013.838f, 408.8276f, -1.76278200f }, { 0.f, 0.f, -0.77162460f, 0.6360782f }, 190763, 191575 },
209 { { 5401.634f, 2853.667f, 418.6748f, 2.63544400f }, { 0.f, 0.f, 0.96814730f, 0.2503814f }, 192819, 192819 },
211 { { 5314.515f, 2703.687f, 408.5502f, -0.89011660f }, { 0.f, 0.f, -0.43051050f, 0.9025856f }, 192951, 192951 },
212 { { 5316.252f, 2977.042f, 408.5385f, -0.82030330f }, { 0.f, 0.f, -0.39874840f, 0.9170604f }, 192951, 192951 }
237 { { 4559.113f, 3606.216f, 419.9992f, 4.799657f }, { 0.f, 0.f, -0.67558960f, 0.73727790f }, 192488, 192501 },
238 { { 4539.420f, 3622.490f, 420.0342f, 3.211419f }, { 0.f, 0.f, -0.99939060f, 0.03490613f }, 192488, 192501 },
239 { { 4555.258f, 3641.648f, 419.9740f, 1.675514f }, { 0.f, 0.f, 0.74314400f, 0.66913150f }, 192488, 192501 },
240 { { 4574.872f, 3625.911f, 420.0792f, 0.087266f }, { 0.f, 0.f, 0.04361916f, 0.99904820f }, 192488, 192501 },
241 { { 4433.899f, 3534.142f, 360.2750f, 4.433136f }, { 0.f, 0.f, -0.79863550f, 0.60181500f }, 192269, 192278 },
242 { { 4572.933f, 3475.519f, 363.0090f, 1.422443f }, { 0.f, 0.f, 0.65275960f, 0.75756520f }, 192269, 192277 }
252 { { 4416.004f, 2822.666f, 429.8512f, 6.2657330f }, { 0.f, 0.f, -0.00872612f, 0.99996190f }, 192488, 192501 },
253 { { 4398.819f, 2804.698f, 429.7920f, 4.6949370f }, { 0.f, 0.f, -0.71325020f, 0.70090960f }, 192488, 192501 },
254 { { 4387.622f, 2719.566f, 389.9351f, 4.7385700f }, { 0.f, 0.f, -0.69779010f, 0.71630230f }, 192366, 192414 },
255 { { 4464.124f, 2855.453f, 406.1106f, 0.8290324f }, { 0.f, 0.f, 0.40274720f, 0.91531130f }, 192366, 192429 },
256 { { 4526.457f, 2810.181f, 391.1997f, 3.2899610f }, { 0.f, 0.f, -0.99724960f, 0.07411628f }, 192269, 192278 }
271 { { 4466.793f, 1960.418f, 459.1437f, 1.151916f }, { 0.f, 0.f, 0.5446386f, 0.8386708f }, 192488, 192501 },
272 { { 4475.351f, 1937.031f, 459.0702f, 5.846854f }, { 0.f, 0.f, -0.2164392f, 0.9762961f }, 192488, 192501 },
273 { { 4451.758f, 1928.104f, 459.0759f, 4.276057f }, { 0.f, 0.f, -0.8433914f, 0.5372996f }, 192488, 192501 },
274 { { 4442.987f, 1951.898f, 459.0930f, 2.740162f }, { 0.f, 0.f, 0.9799242f, 0.1993704f }, 192488, 192501 }
303 { 5255.88f, 3047.63f, 438.499f, 3.13677f },
304 { 5280.90f, 3071.32f, 438.499f, 1.62879f }
313 { 5138.59f, 2935.16f, 439.845f, 3.11723f },
314 { 5163.06f, 2959.52f, 439.846f, 1.47258f }
323 { 5163.84f, 2723.74f, 439.844f, 1.39940f },
324 { 5139.69f, 2747.40f, 439.844f, 3.17221f }
333 { 5278.21f, 2607.23f, 439.755f, 4.71944f },
334 { 5255.01f, 2631.98f, 439.755f, 3.15257f }
340 { 4537.380371f, 3599.531738f, 402.886993f, 3.998462f },
341 { 4581.497559f, 3604.087158f, 402.886963f, 5.651723f }
344 { 4469.448242f, 1966.623779f, 465.647217f, 1.153573f },
345 { 4581.895996f, 3626.438477f, 426.539062f, 0.117806f }
351 { 4421.640137f, 2799.935791f, 412.630920f, 5.459298f },
352 { 4420.263184f, 2845.340332f, 412.630951f, 0.742197f }
355 { 4423.430664f, 2822.762939f, 436.283142f, 6.223487f },
356 { 4397.825684f, 2847.629639f, 436.283325f, 1.579430f },
357 { 4398.814941f, 2797.266357f, 436.283051f, 4.703747f }
363 { 4448.138184f, 1974.998779f, 441.995911f, 1.967238f },
364 { 4448.713379f, 1955.148682f, 441.995178f, 0.380733f }
367 { 4469.448242f, 1966.623779f, 465.647217f, 1.153573f },
368 { 4481.996582f, 1933.658325f, 465.647186f, 5.873029f }
506 CanonList.push_back(creature->GetGUID());
579 TC_LOG_ERROR(
"bg.battlefield",
"WG: Failed to spawn titan relic.");
595 building->UpdateTurretAttack(
false);
605 workshop->UpdateGraveyardAndWorkshop();
615 player->GetPosition(x, y, z);
616 if (5500 > x && x > 5392 && y < 2880 && y > 2800 && z < 480)
617 player->TeleportTo(571, 5349.8686f, 2838.481f, 409.240f, 0.046328f);
643 else if (workshop->GetTeamControl() ==
TEAM_HORDE)
655 relic->RemoveFromWorld();
661 building->RebuildGate();
715 if (!endByTimer &&
GetTimer() <= 10000)
734 if (creature->IsVehicle())
735 creature->DespawnOrUnsummon();
768 if (!achievementEntry)
812 TC_LOG_ERROR(
"bg.battlefield",
"BattlefieldWG::GetSpiritGraveyardId: Unexpected Area Id {}", areaId);
927 uint8 workshopId = 0;
949 if (workshop->GetId() == workshopId)
964 if (killer == victim)
1012 if (player->GetDistance2d(unitKilled) < 40.0f)
1024 if (auraRecruit->GetStackAmount() >= 5)
1036 if (auraCorporal->GetStackAmount() >= 5)
1069 player->
TeleportTo(571, 5345, 2842, 410, 3.14f);
1073 player->
TeleportTo(571, 5025.857422f, 3674.628906f, 362.737122f, 4.135169f);
1075 player->
TeleportTo(571, 5101.284f, 2186.564f, 373.549f, 3.812f);
1100 vehicle->DespawnOrUnsummon();
1145 return graveyard->GetControlTeamId();
1167 for (
uint32 itr = 0; itr < 2; ++itr)
1176 building->FillInitialWorldStates(packet);
1179 workshop->FillInitialWorldStates(packet);
1268 if (go->
GetGUID() == building->GetGUID())
1272 if (buildingGo->GetGOInfo()->building.damagedEvent == eventId)
1273 building->Damaged();
1274 else if (buildingGo->GetGOInfo()->building.destroyedEvent == eventId)
1275 building->Destroyed();
1306 if (alliancePlayers && hordePlayers)
1308 if (alliancePlayers < hordePlayers)
1309 newStack =
int32((
float(hordePlayers / alliancePlayers) - 1) * 4);
1310 else if (alliancePlayers > hordePlayers)
1311 newStack =
int32((1 -
float(alliancePlayers / hordePlayers)) * 4);
1337 newStack = -newStack;
1357 if (buff_honor != 0)
1361 player->CastSpell(player, buff_honor,
true);
1365 creature->CastSpell(creature, buff_honor,
true);
1424 if (build->IsDestructibleBuilding())
1501 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_HORDE_CONTROL_PHASE_SHIFT
@ SPELL_ALLIANCE_CONTROL_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_WON_H
@ BATTLEFIELD_WG_DATA_VEHICLE_A
@ BATTLEFIELD_WG_DATA_MAX_VEHICLE_A
@ BATTLEFIELD_WG_DATA_MAX
@ BATTLEFIELD_WG_DATA_DAMAGED_TOWER_DEF
@ BATTLEFIELD_WG_DATA_DEF_A
@ BATTLEFIELD_WG_DATA_VEHICLE_H
@ BATTLEFIELD_WG_DATA_DEF_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
@ BATTLEFIELD_WG_DATA_WON_A
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
DBCStorage< AchievementEntry > sAchievementStore(Achievementfmt)
#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_SHOW_WORLDSTATE
@ WS_BATTLEFIELD_WG_WORKSHOP_K_E
@ WS_BATTLEFIELD_WG_WORKSHOP_SW
@ WS_BATTLEFIELD_WG_DEFENDED_H
@ WS_BATTLEFIELD_WG_DEFENDER
@ WS_BATTLEFIELD_WG_ATTACKER
@ WS_BATTLEFIELD_WG_ACTIVE
@ WS_BATTLEFIELD_WG_VEHICLE_A
@ WS_BATTLEFIELD_WG_WORKSHOP_K_W
@ WS_BATTLEFIELD_WG_ATTACKED_A
@ 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 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.
void SendInitWorldStatesToAll() override
Send all worldstate data to all player in 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
bool Update(uint32 diff) override
Called for update battlefield data.
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 ProcessEvent(WorldObject *obj, uint32 eventId) override
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet) override
void HandlePromotion(Player *killer, Unit *killed)
Battlefield_wintergrasp()
Battlefield * GetBattlefield() const override
GameObject * SpawnGameObject(uint32 entry, Position const &pos, QuaternionData const &rot)
GraveyardVect m_GraveyardList
GameObject * GetGameObject(ObjectGuid guid)
void ShowNpc(Creature *creature, bool aggressive)
Creature * GetCreature(ObjectGuid guid)
void AddCapturePoint(BfCapturePoint *cp)
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)
uint32 m_StartGroupingTimer
virtual bool Update(uint32 diff)
Called every time for update bf data and time.
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
void SendUpdateWorldState(uint32 variable, uint32 value)
Update data of a worldstate to all players present in zone.
TeamId GetAttackerTeam() const
void SendInitWorldStatesTo(Player *player)
TeamId GetDefenderTeam() const
virtual uint32 GetData(uint32 dataId) const override
WorldLocation KickPosition
void SetGraveyardNumber(uint32 number)
bool IsEnabled() const
Return if battlefield is enable.
GuidUnorderedSet m_players[PVP_TEAMS_COUNT]
bool SetCapturePointData(GameObject *capturePoint)
BfGraveyardWG(BattlefieldWG *Bf)
void SetTextId(uint32 textId)
void Initialize(TeamId startcontrol, uint32 gy)
void DespawnOrUnsummon(Milliseconds timeToDespawn=0s, Seconds forceRespawnTime=0s)
void RemoveFlag(GameObjectFlags flags)
void SetDestructibleState(GameObjectDestructibleState state, WorldObject *attackerOrHealer=nullptr, bool setHealth=false)
static GameObject * ToGameObject(Object *o)
static ObjectGuid GetGUID(Object const *o)
static Player * ToPlayer(Object *o)
void CompletedAchievement(AchievementEntry const *entry)
WorldSession * GetSession() const
bool TeleportTo(uint32 mapid, float x, float y, float z, float orientation, uint32 options=0)
ObjectGuid GetSummonerGUID() const
Aura * GetAura(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, ObjectGuid itemCasterGUID=ObjectGuid::Empty, uint8 reqEffMask=0) 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()
void RemoveAurasDueToSpell(uint32 spellId, ObjectGuid casterGUID=ObjectGuid::Empty, uint8 reqEffMask=0, AuraRemoveMode removeMode=AURA_REMOVE_BY_DEFAULT)
void SetUnitFlag(UnitFlags flags)
WintergraspCapturePoint(BattlefieldWG *battlefield, TeamId teamInControl)
void ChangeTeam(TeamId oldteam) override
WintergraspWorkshop * m_Workshop
void LinkToWorkshop(WintergraspWorkshop *workshop)
GameObject * FindNearestGameObject(uint32 entry, float range, bool spawnedOnly=true) const
SpellCastResult CastSpell(CastSpellTargetArg const &targets, uint32 spellId, CastSpellExtraArgs const &args={ })
std::vector< WorldStateInfo > Worldstates
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]
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet)
GuidVector m_GameObjectList[PVP_TEAMS_COUNT]
void GetPosition(float &x, float &y) const
void Relocate(float x, float y)
struct StaticWintergraspTowerInfo::@271 TextIds
struct StaticWintergraspWorkshopInfo::@272 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)
void FillInitialWorldStates(WorldPackets::WorldState::InitWorldStates &packet)