diff --git a/src/server/game/Battlefield/Zones/BattlefieldTB.cpp b/src/server/game/Battlefield/Zones/BattlefieldTB.cpp index 4a43fea9570..245f8ebf5dc 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldTB.cpp +++ b/src/server/game/Battlefield/Zones/BattlefieldTB.cpp @@ -35,6 +35,233 @@ #include "TemporarySummon.h" #include "WorldSession.h" +const uint32 TBFactions[BG_TEAMS_COUNT] = { 1610, 1732 }; + +// Stalker +Position const TolBaradDebugAnnouncerPos = { -1234.25f, 961.903f, 159.4913f, 0.0f }; + +uint32 const TB_QUEST_INFANTRY[BG_TEAMS_COUNT][4] = +{ + { NPC_HORDE_DRUID_INFANTRY, NPC_HORDE_MAGE_INFANTRY, NPC_HORDE_ROGUE_INFANTRY, NPC_HORDE_SHAMAN_INFANTRY }, + { NPC_ALLIANCE_WARRIOR_INFANTRY, NPC_ALLIANCE_PALADIN_INFANTRY, NPC_ALLIANCE_HUNTER_INFANTRY, NPC_ALLIANCE_MAGE_INFANTRY }, +}; + +uint8 const TB_QUEST_INFANTRY_MAX = 37; +Position const TBQuestInfantrySpawnData[TB_QUEST_INFANTRY_MAX] = +{ + { -930.4685f, 1020.178f, 121.5658f, 0.1537642f }, + { -831.5157f, 975.816f, 121.5255f, 5.022717f }, + { -837.0773f, 943.9008f, 121.5055f, 5.461119f }, + { -839.1646f, 1024.046f, 121.5505f, 4.782219f }, + { -881.283f, 1033.25f, 121.5243f, 0.0f }, + { -883.038f, 924.955f, 121.5243f, 0.0f }, + { -883.913f, 978.059f, 121.5243f, 3.388291f }, + { -883.6224f, 950.8459f, 121.5122f, 0.8307042f }, + { -895.181f, 1015.2f, 121.5505f, 2.652318f }, + { -943.4023f, 961.7462f, 121.5658f, 5.258394f }, + { -958.649f, 926.877f, 121.5243f, 0.0f }, + { -959.743f, 1029.09f, 121.5243f, 0.0f }, + { -964.6652f, 978.5373f, 121.5257f, 0.02025719f }, + { -1407.14f, 721.42f, 123.5033f, 0.0f }, + { -1414.46f, 671.66f, 123.5043f, 0.0f }, + { -1431.7f, 623.073f, 123.5043f, 0.0f }, + { -1434.162f, 655.8566f, 123.5051f, 4.84886f }, + { -1445.19f, 739.729f, 123.5457f, 5.767949f }, + { -1460.954f, 718.418f, 123.6453f, 5.178094f }, + { -1462.48f, 694.378f, 123.5463f, 0.3441857f }, + { -1372.23f, 683.707f, 123.5043f, 0.0f }, + { -1479.46f, 635.799f, 123.5043f, 0.0f }, + { -1491.259f, 734.5692f, 123.4525f, 1.529741f }, + { -1509.024f, 688.8625f, 123.5463f, 6.243045f }, + { -1419.311f, 1310.25f, 133.8389f, 0.0f }, + { -1444.24f, 1266.439f, 133.8229f, 0.0f }, + { -1450.569f, 1337.351f, 133.914f, 0.0f }, + { -1479.819f, 1331.34f, 153.2f, 0.0f }, + { -1497.62f, 1276.429f, 133.6676f, 3.147845f }, + { -1498.37f, 1379.689f, 133.827f, 0.0f }, + { -1499.97f, 1232.87f, 133.8239f, 0.0f }, + { -1505.7f, 1261.99f, 133.7089f, 0.6167698f }, + { -1531.84f, 1316.569f, 153.2f, 0.0f }, + { -1533.141f, 1267.66f, 133.836f, 0.0f }, + { -1547.59f, 1300.21f, 133.7094f, 1.908187f }, + { -1563.3f, 1325.79f, 133.6673f, 0.0f }, +}; + +uint8 const TB_GUARDS_MAX = 8; +Position const GuardNPCSpawns[TB_GUARDS_MAX] = +{ +// { -837.3768f, 1196.082f, 114.2994f, 3.036873f }, +// { -762.118f, 1195.259f, 107.2007f, 3.036873f }, +// { -837.809f, 1179.842f, 114.1356f, 3.159046f }, +// { -762.5504f, 1179.019f, 107.2137f, 3.159046f }, + { -1272.951f, 964.8854f, 119.5782f, 3.193953f }, + { -1274.394f, 997.6511f, 119.5743f, 3.193953f }, + { -1248.226f, 1018.476f, 119.8113f, 1.605703f }, + { -1218.948f, 943.5695f, 119.5994f, 4.625123f }, + { -1195.417f, 965.5364f, 119.8113f, 0.0f }, + { -1220.832f, 1018.497f, 119.8113f, 1.605703f }, + { -1196.151f, 999.5121f, 119.5966f, 0.0f }, + { -1249.304f, 942.9063f, 119.5782f, 4.625123f }, +}; + +struct TBFactionNPCInfo +{ + Position pos; + uint32 entryAlliance; + uint32 entryHorde; +}; + +uint8 const TB_FACTION_NPC_MAX = 4; +TBFactionNPCInfo const FactionNPCSpawns[TB_FACTION_NPC_MAX] = +{ + { { -1259.356f, 1057.108f, 107.0786f, 4.956735f }, NPC_BARADIN_GUARD_1, NPC_BARADIN_GRUNT_1 }, + { { -1254.174f, 1061.094f, 107.0772f, 5.445427f }, NPC_BARADIN_GUARD_2, NPC_BARADIN_GRUNT_2 }, + { { -1256.365f, 1058.47f, 107.0776f, 2.216568f }, NPC_MAVEN_ZARA, NPC_RHAGHA }, + { { -1231.38f, 985.681f, 121.2403f, 0.6108652f }, NPC_SERGEANT_PARKER, NPC_COMMANDER_ZANOTH }, +}; + +Position const RandomQuestgiverPos = { -1228.93f, 975.038f, 121.7153f, 5.969026f }; + +struct TBQuestAreaInfo +{ + uint32 entry; + uint32 teleportSpell; +}; + +TBQuestAreaInfo const TBQuestAreas[CELLBLOCK_MAX] = +{ + { AREA_THE_HOLE, SPELL_TB_THE_HOLE_TELEPORT }, + { AREA_D_BLOCK, SPELL_TB_D_BLOCK_TELEPORT }, + { AREA_CURSED_DEPTHS, SPELL_TB_CURSED_DEPTHS_TELEPORT }, +}; + +uint32 const RandomQuestgivers[BG_TEAMS_COUNT][CELLBLOCK_MAX] = +{ + { NPC_MARSHAL_FALLOWS, NPC_2ND_LIEUTENANT_WANSWORTH, NPC_COMMANDER_STEVENS }, + { NPC_DRILLMASTER_RAZGOTH, NPC_STAFF_SERGEANT_LAZGAR, NPC_PRIVATE_GARNOTH }, +}; + +struct TBCapturePointSpawnData +{ + Position pos; + G3D::Quat rot; + TBCapturePointId id; + uint32 entryFlagPole[2]; + uint32 wsControlled[2]; + uint32 wsCapturing[2]; + uint32 wsNeutral; + uint32 textGained[2]; + uint32 textLost[2]; +}; + +TBCapturePointSpawnData const TBCapturePoints[TB_BASE_COUNT] = +{ + { { -896.96f, 979.497f, 121.441f, 3.124123f }, { 0.f, 0.f, 0.99996185f, 0.00873472f }, TB_BASE_IRONCLAD_GARRISON, { GO_CAPTURE_POINT_NORTH_A_DEFENDING, GO_CAPTURE_POINT_NORTH_H_DEFENDING }, { TB_WS_GARRISON_ALLIANCE_CONTROLLED, TB_WS_GARRISON_HORDE_CONTROLLED }, { TB_WS_GARRISON_ALLIANCE_CAPTURING, TB_WS_GARRISON_HORDE_CAPTURING }, TB_WS_GARRISON_NEUTRAL, { TB_TEXT_GARRISON_ALLIANCE_GAINED, TB_TEXT_GARRISON_HORDE_GAINED }, { TB_TEXT_GARRISON_ALLIANCE_LOST, TB_TEXT_GARRISON_HORDE_LOST } }, + { { -1492.34f, 1309.87f, 152.961f, 5.462882f }, { 0.f, 0.f, 0.39874841f, -0.91706036f }, TB_BASE_WARDENS_VIGIL, { GO_CAPTURE_POINT_WEST_A_DEFENDING, GO_CAPTURE_POINT_WEST_H_DEFENDING }, { TB_WS_VIGIL_ALLIANCE_CONTROLLED, TB_WS_VIGIL_HORDE_CONTROLLED }, { TB_WS_VIGIL_ALLIANCE_CAPTURING, TB_WS_VIGIL_HORDE_CAPTURING }, TB_WS_VIGIL_NEUTRAL, { TB_TEXT_VIGIL_ALLIANCE_GAINED, TB_TEXT_VIGIL_HORDE_GAINED }, { TB_TEXT_VIGIL_ALLIANCE_LOST, TB_TEXT_VIGIL_HORDE_LOST } }, + { { -1437.f, 685.556f, 123.421f, 0.802851f }, { 0.f, 0.f, 0.39073092f, 0.92050494f }, TB_BASE_SLAGWORKS, { GO_CAPTURE_POINT_EAST_A_DEFENDING, GO_CAPTURE_POINT_EAST_H_DEFENDING }, { TB_WS_SLAGWORKS_ALLIANCE_CONTROLLED, TB_WS_SLAGWORKS_HORDE_CONTROLLED }, { TB_WS_SLAGWORKS_ALLIANCE_CAPTURING, TB_WS_SLAGWORKS_HORDE_CAPTURING }, TB_WS_SLAGWORKS_NEUTRAL, { TB_TEXT_SLAGWORKS_ALLIANCE_GAINED, TB_TEXT_SLAGWORKS_HORDE_GAINED }, { TB_TEXT_SLAGWORKS_ALLIANCE_LOST, TB_TEXT_SLAGWORKS_HORDE_LOST } }, +}; + +struct TBTowerInfo +{ + Position pos; + G3D::Quat rot; + uint32 entry; + uint32 textDamaged; + uint32 textDestroyed; + uint32 wsIntact[BG_TEAMS_COUNT]; + uint32 wsDamaged[BG_TEAMS_COUNT]; + uint32 wsDestroyed; +}; + +TBTowerInfo const TBTowers[TB_TOWERS_COUNT] = +{ + { { -1013.279f, 529.5382f, 146.427f, 1.97222f }, { 0.f, 0.f, 0.83388526f, 0.55193784f }, GO_EAST_SPIRE, TB_TEXT_EAST_SPIRE_DAMAGED, TB_TEXT_EAST_SPIRE_DESTROYED, { TB_WS_EAST_INTACT_ALLIANCE, TB_WS_EAST_INTACT_HORDE }, { TB_WS_EAST_DAMAGED_ALLIANCE, TB_WS_EAST_DAMAGED_HORDE }, TB_WS_EAST_DESTROYED_NEUTRAL }, + { { -1618.91f, 954.5417f, 168.601f, 0.06981169f }, { 0.f, 0.f, 0.03489876f, 0.99939085f }, GO_SOUTH_SPIRE, TB_TEXT_SOUTH_SPIRE_DAMAGED, TB_TEXT_SOUTH_SPIRE_DESTROYED, { TB_WS_SOUTH_INTACT_ALLIANCE, TB_WS_SOUTH_INTACT_HORDE }, { TB_WS_SOUTH_DAMAGED_ALLIANCE, TB_WS_SOUTH_DAMAGED_HORDE }, TB_WS_SOUTH_DESTROYED_NEUTRAL }, + { { -950.4097f, 1469.101f, 176.596f, 4.180066f }, { 0.f, 0.f, 0.86819821f, -0.49621756f }, GO_WEST_SPIRE, TB_TEXT_WEST_SPIRE_DAMAGED, TB_TEXT_WEST_SPIRE_DESTROYED, { TB_WS_WEST_INTACT_ALLIANCE, TB_WS_WEST_INTACT_HORDE }, { TB_WS_WEST_DAMAGED_ALLIANCE, TB_WS_WEST_DAMAGED_HORDE }, TB_WS_WEST_DESTROYED_NEUTRAL }, +}; + +int8 const TB_ABANDONED_SIEGE_ENGINE_COUNT = 6; +Position const TBAbandonedSiegeEngineSpawnData[TB_ABANDONED_SIEGE_ENGINE_COUNT] = +{ + { -1106.57f, 1196.34f, 121.8023f, 0.4014257f }, + { -1108.52f, 1111.33f, 121.2783f, 1.37881f }, + { -1213.01f, 782.236f, 121.4473f, 1.675516f }, + { -1258.26f, 780.497f, 122.4413f, 1.48353f }, + { -1438.3f, 1095.24f, 121.1363f, 5.288348f }, + { -1442.3f, 1141.07f, 123.6323f, 4.24115f }, +}; + +uint32 const TBBannerEntry[BG_TEAMS_COUNT] = { GO_BARADINS_WARDEN_BANNER, GO_HELLSCREAM_REACH_BANNER }; + +struct TBBannerData +{ + Position pos; + G3D::Quat rot; +}; + +uint8 const TB_BANNER_MAX = 23; +TBBannerData const TBBanners[TB_BANNER_MAX] = +{ + { { -987.6129f, 963.9861f, 121.4506f, 2.617989f }, { 0.f, 0.f, 0.96592520f, 0.25882140f } }, + { { -988.118f, 993.0087f, 121.6746f, 3.612838f }, { 0.f, 0.f, 0.97236917f, -0.23344850f } }, + { { -1195.941f, 964.342f, 119.728f, 0.8901166f }, { 0.f, 0.f, 0.43051050f, 0.90258557f } }, + { { -1196.892f, 1000.957f, 119.8211f, 5.445428f }, { 0.f, 0.f, 0.40673631f, -0.91354561f } }, + { { -1198.236f, 1081.898f, 120.2007f, 1.06465f }, { 0.f, 0.f, 0.50753800f, 0.86162937f } }, + { { -1089.337f, 1157.161f, 120.2749f, 3.036838f }, { 0.f, 0.f, 0.99862862f, 0.05235338f } }, + { { -1090.033f, 1143.476f, 120.2656f, 3.036838f }, { 0.f, 0.f, 0.99862862f, 0.05235338f } }, + { { -1217.495f, 944.0261f, 119.4949f, 1.989672f }, { 0.f, 0.f, 0.83866966f, 0.54464044f } }, + { { -1219.226f, 1018.168f, 119.728f, 2.251473f }, { 0.f, 0.f, 0.90258491f, 0.43051188f } }, + { { -1210.319f, 1081.885f, 120.2396f, 2.007128f }, { 0.f, 0.f, 0.84339127f, 0.53729988f } }, + { { -1226.903f, 786.7656f, 119.4592f, 1.553341f }, { 0.f, 0.f, 0.70090854f, 0.71325116f } }, + { { -1228.464f, 979.7379f, 119.3814f, 0.03490625f }, { 0.f, 0.f, 0.01745224f, 0.99984770f } }, + { { -1239.668f, 786.7899f, 119.4271f, 1.553341f }, { 0.f, 0.f, 0.70090854f, 0.71325116f } }, + { { -1250.262f, 1017.887f, 119.728f, 0.8377575f }, { 0.f, 0.f, 0.40673640f, 0.91354557f } }, + { { -1250.693f, 943.4496f, 119.4949f, 5.305802f }, { 0.f, 0.f, 0.46947109f, -0.88294784f } }, + { { -1272.29f, 963.5208f, 119.4949f, 2.617989f }, { 0.f, 0.f, 0.96592520f, 0.25882140f } }, + { { -1273.997f, 998.7934f, 119.4884f, 3.665196f }, { 0.f, 0.f, 0.96592523f, -0.25882125f } }, + { { -1378.363f, 725.0087f, 124.2978f, 1.326448f }, { 0.f, 0.f, 0.61566060f, 0.78801144f } }, + { { -1401.97f, 747.0972f, 123.2302f, 0.2443456f }, { 0.f, 0.f, 0.12186910f, 0.99254618f } }, + { { -1421.953f, 1263.559f, 133.6141f, 5.009095f }, { 0.f, 0.f, 0.59482277f, -0.80385687f } }, + { { -1446.497f, 1238.964f, 133.7601f, 5.969027f }, { 0.f, 0.f, 0.15643399f, -0.98768842f } }, + { { -1488.908f, 1118.747f, 124.9255f, 6.248279f }, { 0.f, 0.f, 0.01745227f, -0.99984770f } }, + { { -1488.533f, 1131.608f, 124.6363f, 6.248279f }, { 0.f, 0.f, 0.01745227f, -0.99984770f } }, +}; + +uint32 const TBPortalEntry[BG_TEAMS_COUNT] = { TB_PORTAL_ALLIANCE, TB_PORTAL_HORDE }; + +struct TBPortalData +{ + Position pos; + G3D::Quat rot; +}; + +uint8 const TB_PORTAL_MAX = 2; +TBPortalData const TBPortals[TB_PORTAL_MAX] = +{ + { { -598.7656f, 1377.974f, 21.91898f, 0.0f }, { 0.f, 0.f, 0.00000000f, 1.00000000f } }, + { { -1257.729f, 1060.365f, 106.9938f, 5.462882f }, { 0.f, 0.f, 0.39874841f, -0.91706036f } }, +}; + +struct TBGraveyardInfo +{ + Position pos; + uint32 phaseId; + uint32 gyid; + uint32 spiritEntry[BG_TEAMS_COUNT]; + bool defenderControls; +}; + +TBGraveyardInfo const TBGraveyards[BATTLEFIELD_TB_GRAVEYARD_MAX] = +{ + { { -1247.42f, 981.25f, 155.35f, 6.28f }, 128, TB_GY_BARADIN_HOLD, { NPC_TB_GY_SPIRIT_BARADIN_HOLD_A, NPC_TB_GY_SPIRIT_BARADIN_HOLD_H }, true }, + { { -974.28f, 1089.47f, 132.99f, 5.90f }, 64, TB_GY_IRONCLAD_GARRISON, { NPC_TB_GY_SPIRIT_IRONCLAD_GARRISON_A, NPC_TB_GY_SPIRIT_IRONCLAD_GARRISON_H }, false }, + { { -1570.44f, 1167.57f, 159.50f, 2.20f }, 64, TB_GY_WARDENS_VIGIL, { NPC_TB_GY_SPIRIT_WARDENS_VIGIL_A, NPC_TB_GY_SPIRIT_WARDENS_VIGIL_H }, false }, + { { -1343.32f, 565.24f, 139.04f, 1.66f }, 64, TB_GY_SLAGWORKS, { NPC_TB_GY_SPIRIT_SLAGWORKS_A, NPC_TB_GY_SPIRIT_SLAGWORKS_H }, false }, + { { -1052.02f, 1494.05f, 191.41f, 4.13f }, 64, TB_GY_WEST_SPIRE, { NPC_TB_GY_SPIRIT_WEST_SPIRE_A, NPC_TB_GY_SPIRIT_WEST_SPIRE_H }, false }, + { { -1603.34f, 874.29f, 193.69f, 5.27f }, 64, TB_GY_SOUTH_SPIRE, { NPC_TB_GY_SPIRIT_SOUTH_SPIRE_A, NPC_TB_GY_SPIRIT_SOUTH_SPIRE_H }, false }, + { { -943.66f, 572.36f, 157.54f, 1.74f }, 64, TB_GY_EAST_SPIRE, { NPC_TB_GY_SPIRIT_EAST_SPIRE_A, NPC_TB_GY_SPIRIT_EAST_SPIRE_H }, false }, +}; + BattlefieldTB::~BattlefieldTB() { } bool BattlefieldTB::SetupBattlefield() @@ -79,14 +306,14 @@ bool BattlefieldTB::SetupBattlefield() // Set timer m_Timer = sWorld->getWorldState(TB_WS_TIME_NEXT_BATTLE); - + // Defending team isn't set yet? Choose randomly. if (sWorld->getWorldState(TB_WS_FACTION_CONTROLLING) == 0) sWorld->setWorldState(TB_WS_FACTION_CONTROLLING, uint64(urand(1, 2))); // Set defender team SetDefenderTeam(TeamId(sWorld->getWorldState(TB_WS_FACTION_CONTROLLING) - 1)); - + // Just to save world states SendInitWorldStatesToAll(); @@ -96,17 +323,17 @@ bool BattlefieldTB::SetupBattlefield() TolBaradCapturePoint* capturePoint = new TolBaradCapturePoint(this, GetDefenderTeam()); //Spawn flag pole - if (GameObject* go = SpawnGameObject(TBCapturePoints[i].entryFlagPole[GetDefenderTeam()], TBCapturePoints[i].x, TBCapturePoints[i].y, TBCapturePoints[i].z, TBCapturePoints[i].o)) + if (GameObject* go = SpawnGameObject(TBCapturePoints[i].entryFlagPole[GetDefenderTeam()], TBCapturePoints[i].pos, TBCapturePoints[i].rot)) { go->SetGoArtKit(GetDefenderTeam() == TEAM_ALLIANCE ? TB_GO_ARTKIT_FLAG_ALLIANCE : TB_GO_ARTKIT_FLAG_HORDE); capturePoint->SetCapturePointData(go); } AddCapturePoint(capturePoint); } - + // Spawn towers for (uint8 i = 0; i < TB_TOWERS_COUNT; i++) - if (GameObject* go = SpawnGameObject(TBTowers[i].entry, TBTowers[i].x, TBTowers[i].y, TBTowers[i].z, TBTowers[i].o)) + if (GameObject* go = SpawnGameObject(TBTowers[i].entry, TBTowers[i].pos, TBTowers[i].rot)) Towers.insert(go->GetGUID()); // Init Graveyards @@ -122,7 +349,7 @@ bool BattlefieldTB::SetupBattlefield() // Spawn spirits for (uint8 team = 0; team < 2; team++) - if (Creature* creature = SpawnCreature(TBGraveyards[i].spiritEntry[team], TBGraveyards[i].x, TBGraveyards[i].y, TBGraveyards[i].z, TBGraveyards[i].o, TeamId(team))) + if (Creature* creature = SpawnCreature(TBGraveyards[i].spiritEntry[team], TBGraveyards[i].pos)) graveyard->SetSpirit(creature, TeamId(team)); m_GraveyardList[i] = graveyard; @@ -132,7 +359,7 @@ bool BattlefieldTB::SetupBattlefield() warnedFiveMinutes = false; warnedTwoMinutes = false; warnedOneMinute = false; - + UpdateNPCsAndGameObjects(); return true; @@ -163,7 +390,7 @@ bool BattlefieldTB::Update(uint32 diff) SendWarning(TB_TEXT_PREPARATIONS_IN_1_MIN); } } - + if (!updatedNPCAndObjects) { if (m_updateObjectsTimer <= diff) @@ -473,7 +700,7 @@ void BattlefieldTB::UpdateNPCsAndGameObjects() if (GameObject* gameobject = GetGameObject(guid)) gameobject->Delete(); TemporaryGOs.clear(); - + // Tol Barad gates - closed during warmup if (GameObject* gates = GetGameObject(TBGatesGUID)) gates->SetGoState(GetState() == BATTLEFIELD_WARMUP ? GO_STATE_READY : GO_STATE_ACTIVE); @@ -510,7 +737,7 @@ void BattlefieldTB::UpdateNPCsAndGameObjects() TolBaradCapturePoint* capturePoint = new TolBaradCapturePoint(this, GetDefenderTeam()); //Spawn flag pole - if (GameObject* go = SpawnGameObject(TBCapturePoints[i].entryFlagPole[GetDefenderTeam()], TBCapturePoints[i].x, TBCapturePoints[i].y, TBCapturePoints[i].z, TBCapturePoints[i].o)) + if (GameObject* go = SpawnGameObject(TBCapturePoints[i].entryFlagPole[GetDefenderTeam()], TBCapturePoints[i].pos, TBCapturePoints[i].rot)) { go->SetGoArtKit(GetDefenderTeam() == TEAM_ALLIANCE ? TB_GO_ARTKIT_FLAG_ALLIANCE : TB_GO_ARTKIT_FLAG_HORDE); capturePoint->SetCapturePointData(go); @@ -530,24 +757,24 @@ void BattlefieldTB::UpdateNPCsAndGameObjects() for (uint8 i = 0; i < TB_QUEST_INFANTRY_MAX; i++) { uint32 entry = TB_QUEST_INFANTRY[GetDefenderTeam()][urand(0,3)]; - if (Creature* creature = SpawnCreature(entry, TBQuestInfantrySpawnData[i], GetDefenderTeam())) + if (Creature* creature = SpawnCreature(entry, TBQuestInfantrySpawnData[i])) TemporaryNPCs.insert(creature->GetGUID()); } - + for (uint8 i = 0; i < TB_GUARDS_MAX; i++) - if (Creature* creature = SpawnCreature(GetDefenderTeam() == TEAM_ALLIANCE ? NPC_BARADIN_GUARD : NPC_HELLSCREAMS_SENTRY, GuardNPCSpawns[i], GetDefenderTeam())) + if (Creature* creature = SpawnCreature(GetDefenderTeam() == TEAM_ALLIANCE ? NPC_BARADIN_GUARD : NPC_HELLSCREAMS_SENTRY, GuardNPCSpawns[i])) TemporaryNPCs.insert(creature->GetGUID()); for (uint8 i = 0; i < TB_FACTION_NPC_MAX; i++) - if (Creature* creature = SpawnCreature(GetDefenderTeam() == TEAM_ALLIANCE ? FactionNPCSpawns[i].entryAlliance : FactionNPCSpawns[i].entryHorde, FactionNPCSpawns[i].x, FactionNPCSpawns[i].y, FactionNPCSpawns[i].z, FactionNPCSpawns[i].o, GetDefenderTeam())) + if (Creature* creature = SpawnCreature(GetDefenderTeam() == TEAM_ALLIANCE ? FactionNPCSpawns[i].entryAlliance : FactionNPCSpawns[i].entryHorde, FactionNPCSpawns[i].pos)) TemporaryNPCs.insert(creature->GetGUID()); - if (Creature* creature = SpawnCreature(RandomQuestgivers[GetDefenderTeam()][m_iCellblockRandom], RandomQuestgiverPos, GetDefenderTeam())) + if (Creature* creature = SpawnCreature(RandomQuestgivers[GetDefenderTeam()][m_iCellblockRandom], RandomQuestgiverPos)) TemporaryNPCs.insert(creature->GetGUID()); // Spawn portals for (uint8 i = 0; i < TB_PORTAL_MAX; i++) - if (GameObject* go = SpawnGameObject(TBPortalEntry[GetDefenderTeam()], TBPortals[i].GetPositionX(), TBPortals[i].GetPositionY(), TBPortals[i].GetPositionZ(), TBPortals[i].GetOrientation())) + if (GameObject* go = SpawnGameObject(TBPortalEntry[GetDefenderTeam()], TBPortals[i].pos, TBPortals[i].rot)) TemporaryGOs.insert(go->GetGUID()); // Update towers @@ -558,7 +785,7 @@ void BattlefieldTB::UpdateNPCsAndGameObjects() else if (GetState() == BATTLEFIELD_IN_PROGRESS) { for (uint8 i = 0; i < TB_ABANDONED_SIEGE_ENGINE_COUNT; i++) - if (Creature* creature = SpawnCreature(NPC_ABANDONED_SIEGE_ENGINE, TBAbandonedSiegeEngineSpawnData[i], GetDefenderTeam())) + if (Creature* creature = SpawnCreature(NPC_ABANDONED_SIEGE_ENGINE, TBAbandonedSiegeEngineSpawnData[i])) TemporaryNPCs.insert(creature->GetGUID()); for (ObjectGuid guid : Towers) @@ -573,7 +800,7 @@ void BattlefieldTB::UpdateNPCsAndGameObjects() // Spawn banners for (uint8 i = 0; i < TB_BANNER_MAX; i++) - if (GameObject* go = SpawnGameObject(TBBannerEntry[GetDefenderTeam()], TBBanners[i].GetPositionX(), TBBanners[i].GetPositionY(), TBBanners[i].GetPositionZ(), TBBanners[i].GetOrientation())) + if (GameObject* go = SpawnGameObject(TBBannerEntry[GetDefenderTeam()], TBBanners[i].pos, TBBanners[i].rot)) TemporaryGOs.insert(go->GetGUID()); // Set graveyard controls diff --git a/src/server/game/Battlefield/Zones/BattlefieldTB.h b/src/server/game/Battlefield/Zones/BattlefieldTB.h index 681f9f85c9b..2446f6176ef 100644 --- a/src/server/game/Battlefield/Zones/BattlefieldTB.h +++ b/src/server/game/Battlefield/Zones/BattlefieldTB.h @@ -279,11 +279,6 @@ enum TolBaradEvent EVENT_COUNT_CAPTURED_BASE = 1, }; -const uint32 TBFactions[BG_TEAMS_COUNT] = { 1610, 1732 }; - -// Stalker -Position const TolBaradDebugAnnouncerPos = { -1234.25f, 961.903f, 159.4913f, 0.0f }; - // Quest Infantry NPCs enum TBQuestInfantryEntry { @@ -298,53 +293,6 @@ enum TBQuestInfantryEntry NPC_HORDE_SHAMAN_INFANTRY = 47610, }; -uint32 const TB_QUEST_INFANTRY[BG_TEAMS_COUNT][4] = -{ - { NPC_HORDE_DRUID_INFANTRY, NPC_HORDE_MAGE_INFANTRY, NPC_HORDE_ROGUE_INFANTRY, NPC_HORDE_SHAMAN_INFANTRY }, - { NPC_ALLIANCE_WARRIOR_INFANTRY, NPC_ALLIANCE_PALADIN_INFANTRY, NPC_ALLIANCE_HUNTER_INFANTRY, NPC_ALLIANCE_MAGE_INFANTRY }, -}; - -uint8 const TB_QUEST_INFANTRY_MAX = 37; -Position const TBQuestInfantrySpawnData[TB_QUEST_INFANTRY_MAX] = -{ - { -930.4685f, 1020.178f, 121.5658f, 0.1537642f }, - { -831.5157f, 975.816f, 121.5255f, 5.022717f }, - { -837.0773f, 943.9008f, 121.5055f, 5.461119f }, - { -839.1646f, 1024.046f, 121.5505f, 4.782219f }, - { -881.283f, 1033.25f, 121.5243f, 0.0f }, - { -883.038f, 924.955f, 121.5243f, 0.0f }, - { -883.913f, 978.059f, 121.5243f, 3.388291f }, - { -883.6224f, 950.8459f, 121.5122f, 0.8307042f }, - { -895.181f, 1015.2f, 121.5505f, 2.652318f }, - { -943.4023f, 961.7462f, 121.5658f, 5.258394f }, - { -958.649f, 926.877f, 121.5243f, 0.0f }, - { -959.743f, 1029.09f, 121.5243f, 0.0f }, - { -964.6652f, 978.5373f, 121.5257f, 0.02025719f }, - { -1407.14f, 721.42f, 123.5033f, 0.0f }, - { -1414.46f, 671.66f, 123.5043f, 0.0f }, - { -1431.7f, 623.073f, 123.5043f, 0.0f }, - { -1434.162f, 655.8566f, 123.5051f, 4.84886f }, - { -1445.19f, 739.729f, 123.5457f, 5.767949f }, - { -1460.954f, 718.418f, 123.6453f, 5.178094f }, - { -1462.48f, 694.378f, 123.5463f, 0.3441857f }, - { -1372.23f, 683.707f, 123.5043f, 0.0f }, - { -1479.46f, 635.799f, 123.5043f, 0.0f }, - { -1491.259f, 734.5692f, 123.4525f, 1.529741f }, - { -1509.024f, 688.8625f, 123.5463f, 6.243045f }, - { -1419.311f, 1310.25f, 133.8389f, 0.0f }, - { -1444.24f, 1266.439f, 133.8229f, 0.0f }, - { -1450.569f, 1337.351f, 133.914f, 0.0f }, - { -1479.819f, 1331.34f, 153.2f, 0.0f }, - { -1497.62f, 1276.429f, 133.6676f, 3.147845f }, - { -1498.37f, 1379.689f, 133.827f, 0.0f }, - { -1499.97f, 1232.87f, 133.8239f, 0.0f }, - { -1505.7f, 1261.99f, 133.7089f, 0.6167698f }, - { -1531.84f, 1316.569f, 153.2f, 0.0f }, - { -1533.141f, 1267.66f, 133.836f, 0.0f }, - { -1547.59f, 1300.21f, 133.7094f, 1.908187f }, - { -1563.3f, 1325.79f, 133.6673f, 0.0f }, -}; - // Guard NPCs enum TBGuardEntry { @@ -352,23 +300,6 @@ enum TBGuardEntry NPC_HELLSCREAMS_SENTRY = 51166, }; -uint8 const TB_GUARDS_MAX = 8; -Position const GuardNPCSpawns[TB_GUARDS_MAX] = -{ -// { -837.3768f, 1196.082f, 114.2994f, 3.036873f }, -// { -762.118f, 1195.259f, 107.2007f, 3.036873f }, -// { -837.809f, 1179.842f, 114.1356f, 3.159046f }, -// { -762.5504f, 1179.019f, 107.2137f, 3.159046f }, - { -1272.951f, 964.8854f, 119.5782f, 3.193953f }, - { -1274.394f, 997.6511f, 119.5743f, 3.193953f }, - { -1248.226f, 1018.476f, 119.8113f, 1.605703f }, - { -1218.948f, 943.5695f, 119.5994f, 4.625123f }, - { -1195.417f, 965.5364f, 119.8113f, 0.0f }, - { -1220.832f, 1018.497f, 119.8113f, 1.605703f }, - { -1196.151f, 999.5121f, 119.5966f, 0.0f }, - { -1249.304f, 942.9063f, 119.5782f, 4.625123f }, -}; - enum TBFactionNPCEntry { // Guards @@ -393,25 +324,6 @@ enum TBFactionNPCEntry NPC_RHAGHA = 50167, }; -struct TBFactionNPCInfo -{ - float x; - float y; - float z; - float o; - uint32 entryAlliance; - uint32 entryHorde; -}; - -uint8 const TB_FACTION_NPC_MAX = 4; -TBFactionNPCInfo const FactionNPCSpawns[TB_FACTION_NPC_MAX] = -{ - { -1259.356f, 1057.108f, 107.0786f, 4.956735f, NPC_BARADIN_GUARD_1, NPC_BARADIN_GRUNT_1 }, - { -1254.174f, 1061.094f, 107.0772f, 5.445427f, NPC_BARADIN_GUARD_2, NPC_BARADIN_GRUNT_2 }, - { -1256.365f, 1058.47f, 107.0776f, 2.216568f, NPC_MAVEN_ZARA, NPC_RHAGHA }, - { -1231.38f, 985.681f, 121.2403f, 0.6108652f, NPC_SERGEANT_PARKER, NPC_COMMANDER_ZANOTH }, -}; - // Questing enum TBQuesting { @@ -434,25 +346,6 @@ enum TBQuesting GO_DUSTY_PRISON_JOURNAL = 206890, }; -Position const RandomQuestgiverPos = { -1228.93f, 975.038f, 121.7153f, 5.969026f }; - -struct TBQuestAreaInfo -{ - uint32 entry; - uint32 teleportSpell; -}; -TBQuestAreaInfo const TBQuestAreas[CELLBLOCK_MAX] = -{ - { AREA_THE_HOLE, SPELL_TB_THE_HOLE_TELEPORT }, - { AREA_D_BLOCK, SPELL_TB_D_BLOCK_TELEPORT }, - { AREA_CURSED_DEPTHS, SPELL_TB_CURSED_DEPTHS_TELEPORT }, -}; -uint32 const RandomQuestgivers[BG_TEAMS_COUNT][CELLBLOCK_MAX] = -{ - { NPC_MARSHAL_FALLOWS, NPC_2ND_LIEUTENANT_WANSWORTH, NPC_COMMANDER_STEVENS }, - { NPC_DRILLMASTER_RAZGOTH, NPC_STAFF_SERGEANT_LAZGAR, NPC_PRIVATE_GARNOTH }, -}; - // Capture Points enum TBCapturePointId { @@ -462,28 +355,6 @@ enum TBCapturePointId TB_BASE_COUNT = 3, }; -struct TBCapturePointSpawnData -{ - float x; - float y; - float z; - float o; - TBCapturePointId id; - uint32 entryFlagPole[2]; - uint32 wsControlled[2]; - uint32 wsCapturing[2]; - uint32 wsNeutral; - uint32 textGained[2]; - uint32 textLost[2]; -}; - -TBCapturePointSpawnData const TBCapturePoints[TB_BASE_COUNT] = -{ - { -896.96f, 979.497f, 121.441f, 3.124123f, TB_BASE_IRONCLAD_GARRISON, { GO_CAPTURE_POINT_NORTH_A_DEFENDING, GO_CAPTURE_POINT_NORTH_H_DEFENDING }, { TB_WS_GARRISON_ALLIANCE_CONTROLLED, TB_WS_GARRISON_HORDE_CONTROLLED }, { TB_WS_GARRISON_ALLIANCE_CAPTURING, TB_WS_GARRISON_HORDE_CAPTURING }, TB_WS_GARRISON_NEUTRAL, { TB_TEXT_GARRISON_ALLIANCE_GAINED, TB_TEXT_GARRISON_HORDE_GAINED }, { TB_TEXT_GARRISON_ALLIANCE_LOST, TB_TEXT_GARRISON_HORDE_LOST } }, - { -1492.34f, 1309.87f, 152.961f, 5.462882f, TB_BASE_WARDENS_VIGIL, { GO_CAPTURE_POINT_WEST_A_DEFENDING, GO_CAPTURE_POINT_WEST_H_DEFENDING }, { TB_WS_VIGIL_ALLIANCE_CONTROLLED, TB_WS_VIGIL_HORDE_CONTROLLED }, { TB_WS_VIGIL_ALLIANCE_CAPTURING, TB_WS_VIGIL_HORDE_CAPTURING }, TB_WS_VIGIL_NEUTRAL, { TB_TEXT_VIGIL_ALLIANCE_GAINED, TB_TEXT_VIGIL_HORDE_GAINED }, { TB_TEXT_VIGIL_ALLIANCE_LOST, TB_TEXT_VIGIL_HORDE_LOST } }, - { -1437.f, 685.556f, 123.421f, 0.802851f, TB_BASE_SLAGWORKS, { GO_CAPTURE_POINT_EAST_A_DEFENDING, GO_CAPTURE_POINT_EAST_H_DEFENDING }, { TB_WS_SLAGWORKS_ALLIANCE_CONTROLLED, TB_WS_SLAGWORKS_HORDE_CONTROLLED }, { TB_WS_SLAGWORKS_ALLIANCE_CAPTURING, TB_WS_SLAGWORKS_HORDE_CAPTURING }, TB_WS_SLAGWORKS_NEUTRAL, { TB_TEXT_SLAGWORKS_ALLIANCE_GAINED, TB_TEXT_SLAGWORKS_HORDE_GAINED }, { TB_TEXT_SLAGWORKS_ALLIANCE_LOST, TB_TEXT_SLAGWORKS_HORDE_LOST } }, -}; - // Towers enum TBTowerId { @@ -493,44 +364,12 @@ enum TBTowerId TB_TOWERS_COUNT = 3, }; -struct TBTowerInfo -{ - float x; - float y; - float z; - float o; - uint32 entry; - uint32 textDamaged; - uint32 textDestroyed; - uint32 wsIntact[BG_TEAMS_COUNT]; - uint32 wsDamaged[BG_TEAMS_COUNT]; - uint32 wsDestroyed; -}; - -TBTowerInfo const TBTowers[TB_TOWERS_COUNT] = -{ - { -1013.279f, 529.5382f, 146.427f, 1.97222f, GO_EAST_SPIRE, TB_TEXT_EAST_SPIRE_DAMAGED, TB_TEXT_EAST_SPIRE_DESTROYED, { TB_WS_EAST_INTACT_ALLIANCE, TB_WS_EAST_INTACT_HORDE }, { TB_WS_EAST_DAMAGED_ALLIANCE, TB_WS_EAST_DAMAGED_HORDE }, TB_WS_EAST_DESTROYED_NEUTRAL }, - { -1618.91f, 954.5417f, 168.601f, 0.06981169f, GO_SOUTH_SPIRE, TB_TEXT_SOUTH_SPIRE_DAMAGED, TB_TEXT_SOUTH_SPIRE_DESTROYED, { TB_WS_SOUTH_INTACT_ALLIANCE, TB_WS_SOUTH_INTACT_HORDE }, { TB_WS_SOUTH_DAMAGED_ALLIANCE, TB_WS_SOUTH_DAMAGED_HORDE }, TB_WS_SOUTH_DESTROYED_NEUTRAL }, - { -950.4097f, 1469.101f, 176.596f, 4.180066f, GO_WEST_SPIRE, TB_TEXT_WEST_SPIRE_DAMAGED, TB_TEXT_WEST_SPIRE_DESTROYED, { TB_WS_WEST_INTACT_ALLIANCE, TB_WS_WEST_INTACT_HORDE }, { TB_WS_WEST_DAMAGED_ALLIANCE, TB_WS_WEST_DAMAGED_HORDE }, TB_WS_WEST_DESTROYED_NEUTRAL }, -}; - // Vehicles enum TBVehicles { NPC_ABANDONED_SIEGE_ENGINE = 45344, }; -int8 const TB_ABANDONED_SIEGE_ENGINE_COUNT = 6; -Position const TBAbandonedSiegeEngineSpawnData[TB_ABANDONED_SIEGE_ENGINE_COUNT] = -{ - { -1106.57f, 1196.34f, 121.8023f, 0.4014257f }, - { -1108.52f, 1111.33f, 121.2783f, 1.37881f }, - { -1213.01f, 782.236f, 121.4473f, 1.675516f }, - { -1258.26f, 780.497f, 122.4413f, 1.48353f }, - { -1438.3f, 1095.24f, 121.1363f, 5.288348f }, - { -1442.3f, 1141.07f, 123.6323f, 4.24115f }, -}; - // Banners enum TBFactionBannerEntry { @@ -538,36 +377,6 @@ enum TBFactionBannerEntry GO_HELLSCREAM_REACH_BANNER = 207400, // Horde banner }; -uint32 const TBBannerEntry[BG_TEAMS_COUNT] = { GO_BARADINS_WARDEN_BANNER, GO_HELLSCREAM_REACH_BANNER }; - -uint8 const TB_BANNER_MAX = 23; -Position const TBBanners[TB_BANNER_MAX] = -{ - { -987.6129f, 963.9861f, 121.4506f, 2.617989f }, - { -988.118f, 993.0087f, 121.6746f, 3.612838f }, - { -1195.941f, 964.342f, 119.728f, 0.8901166f }, - { -1196.892f, 1000.957f, 119.8211f, 5.445428f }, - { -1198.236f, 1081.898f, 120.2007f, 1.06465f }, - { -1089.337f, 1157.161f, 120.2749f, 3.036838f }, - { -1090.033f, 1143.476f, 120.2656f, 3.036838f }, - { -1217.495f, 944.0261f, 119.4949f, 1.989672f }, - { -1219.226f, 1018.168f, 119.728f, 2.251473f }, - { -1210.319f, 1081.885f, 120.2396f, 2.007128f }, - { -1226.903f, 786.7656f, 119.4592f, 1.553341f }, - { -1228.464f, 979.7379f, 119.3814f, 0.03490625f }, - { -1239.668f, 786.7899f, 119.4271f, 1.553341f }, - { -1250.262f, 1017.887f, 119.728f, 0.8377575f }, - { -1250.693f, 943.4496f, 119.4949f, 5.305802f }, - { -1272.29f, 963.5208f, 119.4949f, 2.617989f }, - { -1273.997f, 998.7934f, 119.4884f, 3.665196f }, - { -1378.363f, 725.0087f, 124.2978f, 1.326448f }, - { -1401.97f, 747.0972f, 123.2302f, 0.2443456f }, - { -1421.953f, 1263.559f, 133.6141f, 5.009095f }, - { -1446.497f, 1238.964f, 133.7601f, 5.969027f }, - { -1488.908f, 1118.747f, 124.9255f, 6.248279f }, - { -1488.533f, 1131.608f, 124.6363f, 6.248279f }, -}; - // Portals enum TBPortalEntry { @@ -575,15 +384,6 @@ enum TBPortalEntry TB_PORTAL_HORDE = 208226, // Portal to Orgrimmar }; -uint32 const TBPortalEntry[BG_TEAMS_COUNT] = { TB_PORTAL_ALLIANCE, TB_PORTAL_HORDE }; - -uint8 const TB_PORTAL_MAX = 2; -Position const TBPortals[TB_PORTAL_MAX] = -{ - { -598.7656f, 1377.974f, 21.91898f, 0.0f }, - { -1257.729f, 1060.365f, 106.9938f, 5.462882f }, -}; - /* ################### * * Tol Barad graveyard * * ################### */ @@ -605,29 +405,6 @@ enum TBGraveyardAreaId TBP_GY_HORDE_DAILY = 1807, }; -struct TBGraveyardInfo -{ - float x; - float y; - float z; - float o; - uint32 phaseId; - uint32 gyid; - uint32 spiritEntry[BG_TEAMS_COUNT]; - bool defenderControls; -}; - -TBGraveyardInfo const TBGraveyards[BATTLEFIELD_TB_GRAVEYARD_MAX] = -{ - { -1247.42f, 981.25f, 155.35f, 6.28f, 128, TB_GY_BARADIN_HOLD, { NPC_TB_GY_SPIRIT_BARADIN_HOLD_A, NPC_TB_GY_SPIRIT_BARADIN_HOLD_H }, true }, - { -974.28f, 1089.47f, 132.99f, 5.90f, 64, TB_GY_IRONCLAD_GARRISON, { NPC_TB_GY_SPIRIT_IRONCLAD_GARRISON_A, NPC_TB_GY_SPIRIT_IRONCLAD_GARRISON_H }, false }, - { -1570.44f, 1167.57f, 159.50f, 2.20f, 64, TB_GY_WARDENS_VIGIL, { NPC_TB_GY_SPIRIT_WARDENS_VIGIL_A, NPC_TB_GY_SPIRIT_WARDENS_VIGIL_H }, false }, - { -1343.32f, 565.24f, 139.04f, 1.66f, 64, TB_GY_SLAGWORKS, { NPC_TB_GY_SPIRIT_SLAGWORKS_A, NPC_TB_GY_SPIRIT_SLAGWORKS_H }, false }, - { -1052.02f, 1494.05f, 191.41f, 4.13f, 64, TB_GY_WEST_SPIRE, { NPC_TB_GY_SPIRIT_WEST_SPIRE_A, NPC_TB_GY_SPIRIT_WEST_SPIRE_H }, false }, - { -1603.34f, 874.29f, 193.69f, 5.27f, 64, TB_GY_SOUTH_SPIRE, { NPC_TB_GY_SPIRIT_SOUTH_SPIRE_A, NPC_TB_GY_SPIRIT_SOUTH_SPIRE_H }, false }, - { -943.66f, 572.36f, 157.54f, 1.74f, 64, TB_GY_EAST_SPIRE, { NPC_TB_GY_SPIRIT_EAST_SPIRE_A, NPC_TB_GY_SPIRIT_EAST_SPIRE_H }, false }, -}; - /* ####################### * * Tol Barad capture point * * ####################### */