From 014714fb1789083abbfb6b686c351c1f3ce50380 Mon Sep 17 00:00:00 2001 From: Manuel Date: Sun, 9 Jan 2011 20:44:33 -0300 Subject: [PATCH] Core: Killing magic numbers. --- .../Battlegrounds/Zones/BattlegroundIC.cpp | 109 ++--- .../game/Battlegrounds/Zones/BattlegroundIC.h | 378 ++++++++++-------- src/server/game/Entities/Player/Player.cpp | 36 +- src/server/game/Spells/SpellMgr.cpp | 6 +- .../scripts/Northrend/isle_of_conquest.cpp | 11 +- .../scripts/World/achievement_scripts.cpp | 2 +- 6 files changed, 299 insertions(+), 243 deletions(-) diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp index 61d8231747..97e1a16d17 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp @@ -28,8 +28,8 @@ BattlegroundIC::BattlegroundIC() { - m_BgObjects.resize(GAMEOBJECT_MAX_SPAWNS + MAX_AIRSHIPS + MAX_HANGAR_TELEPORTERS + MAX_TELEPORTERS_SPAWNS); - m_BgCreatures.resize(NPCS_MAX_SPAWNS + MAX_WORKSHOP_SPAWNS + MAX_DOCKS_SPAWNS + MAX_SPIRIT_GUIDES); + m_BgObjects.resize(MAX_NORMAL_GAMEOBJECTS_SPAWNS + MAX_AIRSHIPS_SPAWNS + MAX_HANGAR_TELEPORTERS_SPAWNS + MAX_FORTRESS_TELEPORTERS_SPAWNS); + m_BgCreatures.resize(MAX_NORMAL_NPCS_SPAWNS + MAX_WORKSHOP_SPAWNS + MAX_DOCKS_SPAWNS + MAX_SPIRIT_GUIDES_SPAWNS); m_StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_IC_START_TWO_MINUTES; m_StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_IC_START_ONE_MINUTE; @@ -37,19 +37,19 @@ BattlegroundIC::BattlegroundIC() m_StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_IC_HAS_BEGUN; for (uint8 i = 0; i < 2; i++) - factionReinforcements[i] = 300; + factionReinforcements[i] = MAX_REINFORCEMENTS; for (uint8 i = 0; i < BG_IC_MAXDOOR; i++) GateStatus[i] = BG_IC_GATE_OK; - closeFortressDoors = 20000; // the doors are closed again... in a special way + closeFortressDoorsTimer = CLOSE_DOORS_TIME; // the doors are closed again... in a special way doorsClosed = false; resourceTimer = IC_RESOURCE_TIME; - for (uint8 i = 0; i < 7; i++) + for (uint8 i = NODE_TYPE_REFINERY; i < MAX_NODE_TYPES; i++) nodePoint[i] = nodePointInitial[i]; - siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIMER; + siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIME; gunshipHorde = NULL; gunshipAlliance = NULL; @@ -87,7 +87,7 @@ void BattlegroundIC::SendTransportInit(Player* player) void BattlegroundIC::DoAction(uint32 action, uint64 var) { - if (action != 1) + if (action != ACTION_TELEPORT_PLAYER_TO_TRANSPORT) return; Player* plr = sObjectMgr->GetPlayer(var); @@ -95,15 +95,17 @@ void BattlegroundIC::DoAction(uint32 action, uint64 var) if (!plr || !gunshipAlliance || !gunshipHorde) return; - plr->CastSpell(plr,SPELL_PARACHUTE,true); + plr->CastSpell(plr,SPELL_PARACHUTE,true); // this must be changed, there is a trigger in each transport that casts the spell. plr->CastSpell(plr,SPELL_SLOW_FALL,true); plr->SetTransport(plr->GetTeamId() == TEAM_ALLIANCE ? gunshipAlliance : gunshipHorde); - plr->m_movementInfo.t_pos.m_positionX = 7.305609f; - plr->m_movementInfo.t_pos.m_positionY = -0.095246f; - plr->m_movementInfo.t_pos.m_positionZ = 34.51022f; + + plr->m_movementInfo.t_pos.m_positionX = TransportMovementInfo.GetPositionX(); + plr->m_movementInfo.t_pos.m_positionY = TransportMovementInfo.GetPositionY(); + plr->m_movementInfo.t_pos.m_positionZ = TransportMovementInfo.GetPositionZ(); plr->m_movementInfo.t_guid = (plr->GetTeamId() == TEAM_ALLIANCE ? gunshipAlliance : gunshipHorde)->GetGUID(); - plr->TeleportTo(GetMapId(),661,-1244,288,0,TELE_TO_NOT_LEAVE_TRANSPORT); + + plr->TeleportTo(GetMapId(),TeleportToTransportPosition.GetPositionX(),TeleportToTransportPosition.GetPositionY(),TeleportToTransportPosition.GetPositionZ(),TeleportToTransportPosition.GetOrientation(),TELE_TO_NOT_LEAVE_TRANSPORT); } void BattlegroundIC::Update(uint32 diff) @@ -115,7 +117,7 @@ void BattlegroundIC::Update(uint32 diff) if (!doorsClosed) { - if (closeFortressDoors <= diff) + if (closeFortressDoorsTimer <= diff) { GetBGObject(BG_IC_GO_DOODAD_ND_HUMAN_GATE_CLOSEDFX_DOOR01)->RemoveFromWorld(); GetBGObject(BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01)->RemoveFromWorld(); @@ -124,10 +126,10 @@ void BattlegroundIC::Update(uint32 diff) GetBGObject(BG_IC_GO_HORDE_GATE_1)->SetFlag(GAMEOBJECT_FLAGS, GO_FLAG_DAMAGED); // Horde door doorsClosed = true; - } else closeFortressDoors -= diff; + } else closeFortressDoorsTimer -= diff; } - for (uint8 i = 0; i < MAX_NODE_TYPES; i++) + for (uint8 i = NODE_TYPE_REFINERY; i < MAX_NODE_TYPES; i++) { if (nodePoint[i].nodeType == NODE_TYPE_DOCKS) { @@ -156,7 +158,7 @@ void BattlegroundIC::Update(uint32 diff) } } - docksTimer = DOCKS_UPDATE_TIMER; + docksTimer = DOCKS_UPDATE_TIME; } else nodePoint[i].timer -= diff; } } @@ -193,7 +195,7 @@ void BattlegroundIC::Update(uint32 diff) demolisher->Respawn(true); } } - siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIMER; + siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIME; } else siegeEngineWorkshopTimer -= diff; } } @@ -227,7 +229,7 @@ void BattlegroundIC::Update(uint32 diff) SendMessage2ToAll(LANG_BG_IC_TEAM_HAS_TAKEN_NODE,CHAT_MSG_BG_SYSTEM_NEUTRAL,NULL,(nodePoint[i].faction == TEAM_ALLIANCE ? LANG_BG_IC_ALLIANCE : LANG_BG_IC_HORDE),nodePoint[i].string); nodePoint[i].needChange = false; - nodePoint[i].timer = 60000; + nodePoint[i].timer = BANNER_STATE_CHANGE_TIME; } else nodePoint[i].timer -= diff; } } @@ -240,7 +242,7 @@ void BattlegroundIC::Update(uint32 diff) nodePoint[i].nodeState == NODE_STATE_CONTROLLED_H) { factionReinforcements[nodePoint[i].faction] += 1; - RewardHonorToTeam(12,nodePoint[i].faction == TEAM_ALLIANCE ? ALLIANCE : HORDE); + RewardHonorToTeam(RESOURCE_HONOR_AMOUNT,nodePoint[i].faction == TEAM_ALLIANCE ? ALLIANCE : HORDE); UpdateWorldState((nodePoint[i].faction == TEAM_ALLIANCE ? BG_IC_ALLIANCE_RENFORT : BG_IC_HORDE_RENFORT), factionReinforcements[nodePoint[i].faction]); } } @@ -268,7 +270,7 @@ void BattlegroundIC::StartingEventOpenDoors() DoorOpen(BG_IC_GO_DOODAD_VR_PORTCULLIS01_1); DoorOpen(BG_IC_GO_DOODAD_VR_PORTCULLIS01_2); - for (uint8 i = 0; i < MAX_TELEPORTERS_SPAWNS; i++) + for (uint8 i = 0; i < MAX_FORTRESS_TELEPORTERS_SPAWNS; i++) { if (!AddObject(BG_IC_Teleporters[i].type,BG_IC_Teleporters[i].entry, BG_IC_Teleporters[i].x,BG_IC_Teleporters[i].y, @@ -349,7 +351,7 @@ void BattlegroundIC::FillInitialWorldStates(WorldPacket& data) data << uint32(BG_IC_ALLIANCE_RENFORT) << uint32(factionReinforcements[TEAM_ALLIANCE]); data << uint32(BG_IC_HORDE_RENFORT) << uint32(factionReinforcements[TEAM_HORDE]); - for (uint8 i = 0; i < 6; i++) + for (uint8 i = 0; i < MAX_FORTRESS_GATES_SPAWNS; i++) { uint32 uws = GetWorldStateFromGateEntry(BG_IC_ObjSpawnlocs[i].entry,(GateStatus[GetGateIDFromEntry(BG_IC_ObjSpawnlocs[i].entry)] == BG_IC_GATE_DESTROYED ? true : false)); data << uint32(uws) << uint32(1); @@ -361,7 +363,7 @@ void BattlegroundIC::FillInitialWorldStates(WorldPacket& data) bool BattlegroundIC::SetupBattleground() { - for (uint8 i = 0; i < GAMEOBJECT_MAX_SPAWNS; i++) + for (uint8 i = 0; i < MAX_NORMAL_GAMEOBJECTS_SPAWNS; i++) { if (!AddObject(BG_IC_ObjSpawnlocs[i].type,BG_IC_ObjSpawnlocs[i].entry, BG_IC_ObjSpawnlocs[i].x,BG_IC_ObjSpawnlocs[i].y, @@ -373,7 +375,7 @@ bool BattlegroundIC::SetupBattleground() } } - for (uint8 i = 0; i < NPCS_MAX_SPAWNS; i++) + for (uint8 i = 0; i < MAX_NORMAL_NPCS_SPAWNS; i++) { if (!AddCreature(BG_IC_NpcSpawnlocs[i].entry,BG_IC_NpcSpawnlocs[i].type,BG_IC_NpcSpawnlocs[i].team, BG_IC_NpcSpawnlocs[i].x,BG_IC_NpcSpawnlocs[i].y, @@ -394,8 +396,8 @@ bool BattlegroundIC::SetupBattleground() return false; } - gunshipHorde = CreateTransport(GO_HORDE_GUNSHIP,120000); - gunshipAlliance = CreateTransport(GO_ALLIANCE_GUNSHIP,120000); + gunshipHorde = CreateTransport(GO_HORDE_GUNSHIP,TRANSPORT_PERIOD_TIME); + gunshipAlliance = CreateTransport(GO_ALLIANCE_GUNSHIP,TRANSPORT_PERIOD_TIME); if (!gunshipAlliance || !gunshipHorde) { @@ -431,19 +433,19 @@ void BattlegroundIC::HandleKillUnit(Creature *unit, Player* killer) uint32 entry = unit->GetEntry(); if (entry == NPC_HIGH_COMMANDER_HALFORD_WYRMBANE) { - RewardHonorToTeam(500,HORDE); + RewardHonorToTeam(WINNER_HONOR_AMOUNT,HORDE); EndBattleground(HORDE); } else if (entry == NPC_OVERLORD_AGMAR) { - RewardHonorToTeam(500,ALLIANCE); + RewardHonorToTeam(WINNER_HONOR_AMOUNT,ALLIANCE); EndBattleground(ALLIANCE); } //Achievement Mowed Down // TO-DO: This should be done on the script of each vehicle of the BG. if (unit->IsVehicle()) - killer->CastSpell(killer,68357,true); + killer->CastSpell(killer,SPELL_DESTROYED_VEHICLE_ACHIEVEMENT,true); } void BattlegroundIC::HandleKillPlayer(Player* player, Player* killer) @@ -513,9 +515,10 @@ void BattlegroundIC::EventPlayerClickedOnFlag(Player* player, GameObject* target nodePoint[i].gameobject_entry = nextBanner; // this is just needed if the next banner is grey - if (nodePoint[i].banners[1] == nextBanner || nodePoint[i].banners[3] == nextBanner) + if (nodePoint[i].banners[BANNER_A_CONTESTED] == nextBanner || + nodePoint[i].banners[BANNER_H_CONTESTED] == nextBanner) { - nodePoint[i].timer = 60000; // 1 minute for last change (real faction banner) + nodePoint[i].timer = BANNER_STATE_CHANGE_TIME; // 1 minute for last change (real faction banner) nodePoint[i].needChange = true; RealocatePlayers(nodePoint[i].nodeType); @@ -531,9 +534,11 @@ void BattlegroundIC::EventPlayerClickedOnFlag(Player* player, GameObject* target SendMessage2ToAll(LANG_BG_IC_TEAM_ASSAULTED_NODE_1,CHAT_MSG_BG_SYSTEM_NEUTRAL,player,nodePoint[i].string); SendMessage2ToAll(LANG_BG_IC_TEAM_ASSAULTED_NODE_2,CHAT_MSG_BG_SYSTEM_NEUTRAL,player,nodePoint[i].string, (player->GetTeamId() == TEAM_ALLIANCE ? LANG_BG_IC_ALLIANCE : LANG_BG_IC_HORDE)); HandleContestedNodes(&nodePoint[i]); - } else if (nextBanner == nodePoint[i].banners[0] || nextBanner == nodePoint[i].banners[2]) // if we are going to spawn the definitve faction banner, we dont need the timer anymore + } else if (nextBanner == nodePoint[i].banners[BANNER_A_CONTROLLED] || + nextBanner == nodePoint[i].banners[BANNER_H_CONTROLLED]) + // if we are going to spawn the definitve faction banner, we dont need the timer anymore { - nodePoint[i].timer = 60000; + nodePoint[i].timer = BANNER_STATE_CHANGE_TIME; nodePoint[i].needChange = false; SendMessage2ToAll(LANG_BG_IC_TEAM_DEFENDED_NODE,CHAT_MSG_BG_SYSTEM_NEUTRAL,player,nodePoint[i].string); HandleCapturedNodes(&nodePoint[i],true); @@ -569,13 +574,13 @@ void BattlegroundIC::EventPlayerClickedOnFlag(Player* player, GameObject* target void BattlegroundIC::UpdateNodeWorldState(ICNodePoint* nodePoint) { //updating worldstate - if (nodePoint->gameobject_entry == nodePoint->banners[0]) + if (nodePoint->gameobject_entry == nodePoint->banners[BANNER_A_CONTROLLED]) nodePoint->nodeState = NODE_STATE_CONTROLLED_A; - else if (nodePoint->gameobject_entry == nodePoint->banners[1]) + else if (nodePoint->gameobject_entry == nodePoint->banners[BANNER_A_CONTESTED]) nodePoint->nodeState = NODE_STATE_CONFLICT_A; - else if (nodePoint->gameobject_entry == nodePoint->banners[2]) + else if (nodePoint->gameobject_entry == nodePoint->banners[BANNER_H_CONTROLLED]) nodePoint->nodeState = NODE_STATE_CONTROLLED_H; - else if (nodePoint->gameobject_entry == nodePoint->banners[3]) + else if (nodePoint->gameobject_entry == nodePoint->banners[BANNER_H_CONTESTED]) nodePoint->nodeState = NODE_STATE_CONFLICT_H; uint32 worldstate = nodePoint->worldStates[nodePoint->nodeState]; @@ -592,19 +597,19 @@ uint32 BattlegroundIC::GetNextBanner(ICNodePoint* nodePoint, uint32 team, bool r // this is only used in the update map function if (returnDefinitve) // here is a special case, here we must return the definitve faction banner after the grey banner was spawned 1 minute - return nodePoint->banners[(team == TEAM_ALLIANCE ? 0 : 2)]; + return nodePoint->banners[(team == TEAM_ALLIANCE ? BANNER_A_CONTROLLED : BANNER_H_CONTROLLED)]; // there were no changes, this point has never been captured by any faction or at least clicked if (nodePoint->last_entry == 0) // 1 returns the CONTESTED ALLIANCE BANNER, 3 returns the HORDE one - return nodePoint->banners[(team == TEAM_ALLIANCE ? 1 : 3)]; + return nodePoint->banners[(team == TEAM_ALLIANCE ? BANNER_A_CONTESTED : BANNER_H_CONTESTED)]; // If the actual banner is the definitive faction banner, we must return the grey banner of the player's faction - if (nodePoint->gameobject_entry == nodePoint->banners[0] || nodePoint->gameobject_entry == nodePoint->banners[2]) - return nodePoint->banners[(team == TEAM_ALLIANCE ? 1 : 3)]; + if (nodePoint->gameobject_entry == nodePoint->banners[BANNER_A_CONTROLLED] || nodePoint->gameobject_entry == nodePoint->banners[BANNER_H_CONTROLLED]) + return nodePoint->banners[(team == TEAM_ALLIANCE ? BANNER_A_CONTESTED : BANNER_H_CONTESTED)]; // If the actual banner is the grey faction banner, we must return the previous banner - if (nodePoint->gameobject_entry == nodePoint->banners[1] || nodePoint->banners[3]) + if (nodePoint->gameobject_entry == nodePoint->banners[BANNER_A_CONTESTED] || nodePoint->banners[BANNER_H_CONTESTED]) return nodePoint->last_entry; // we should never be here... @@ -642,7 +647,7 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* nodePoint, bool recapture) if (!gunshipAlliance || !gunshipHorde) break; - for (uint8 u = 0; u < 3; u++) + for (uint8 u = 0; u < MAX_HANGAR_TELEPORTERS_SPAWNS; u++) { uint8 type = BG_IC_GO_HANGAR_TELEPORTER_1+u; AddObject(type, (nodePoint->faction == TEAM_ALLIANCE ? GO_ALLIANCE_GUNSHIP_PORTAL : GO_HORDE_GUNSHIP_PORTAL), @@ -670,8 +675,8 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* nodePoint, bool recapture) if (recapture) break; - if (docksTimer < DOCKS_UPDATE_TIMER) - docksTimer = DOCKS_UPDATE_TIMER; + if (docksTimer < DOCKS_UPDATE_TIME) + docksTimer = DOCKS_UPDATE_TIME; // we must del opposing faction vehicles when the node is captured (unused ones) for (uint8 i = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_GLAIVE_THROWER_1_H : BG_IC_NPC_GLAIVE_THROWER_1_A); i < (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_GLAIVE_THROWER_2_H : BG_IC_NPC_GLAIVE_THROWER_2_A); i++) @@ -699,14 +704,14 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* nodePoint, bool recapture) } // spawning glaive throwers - for (uint8 i = 0; i < 2; i++) + for (uint8 i = 0; i < MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION; i++) { uint8 type = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_GLAIVE_THROWER_1_A : BG_IC_NPC_GLAIVE_THROWER_1_H)+i; if (GetBGCreature(type) && GetBGCreature(type)->isAlive()) continue; - if (AddCreature(NPC_GLAIVE_THROWER,type,nodePoint->faction, + if (AddCreature(nodePoint->faction == TEAM_ALLIANCE ? NPC_GLAIVE_THROWER_A : NPC_GLAIVE_THROWER_H,type,nodePoint->faction, BG_IC_DocksVehiclesGlaives[i].GetPositionX(),BG_IC_DocksVehiclesGlaives[i].GetPositionY(), BG_IC_DocksVehiclesGlaives[i].GetPositionZ(),BG_IC_DocksVehiclesGlaives[i].GetOrientation(), RESPAWN_ONE_DAY)) @@ -714,7 +719,7 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* nodePoint, bool recapture) } // spawning catapults - for (uint8 i = 0; i < 4; i++) + for (uint8 i = 0; i < MAX_CATAPULTS_SPAWNS_PER_FACTION; i++) { uint8 type = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_CATAPULT_1_A : BG_IC_NPC_CATAPULT_1_H)+i; @@ -730,15 +735,14 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* nodePoint, bool recapture) break; case BG_IC_GO_WORKSHOP_BANNER: { - if (siegeEngineWorkshopTimer < WORKSHOP_UPDATE_TIMER) - siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIMER; + if (siegeEngineWorkshopTimer < WORKSHOP_UPDATE_TIME) + siegeEngineWorkshopTimer = WORKSHOP_UPDATE_TIME; if (!recapture) { // we must del opposing faction vehicles when the node is captured (unused ones) for (uint8 i = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_H : BG_IC_NPC_DEMOLISHER_1_A); i < (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_4_H : BG_IC_NPC_DEMOLISHER_4_A); i++) { - //uint8 type = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_H : BG_IC_NPC_DEMOLISHER_1_A)+i; if (Creature* demolisher = GetBGCreature(i)) { if (Vehicle* vehicleDemolisher = demolisher->GetVehicleKit()) @@ -750,7 +754,7 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* nodePoint, bool recapture) } } - for (uint8 i = 0; i < 4; i++) + for (uint8 i = 0; i < MAX_DEMOLISHERS_SPAWNS_PER_FACTION; i++) { uint8 type = (nodePoint->faction == TEAM_ALLIANCE ? BG_IC_NPC_DEMOLISHER_1_A : BG_IC_NPC_DEMOLISHER_1_H)+i; @@ -792,7 +796,8 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* nodePoint, bool recapture) } } } - for (uint8 i = 0; i < 2; i++) + + for (uint8 i = 0; i < MAX_WORKSHOP_BOMBS_SPAWNS_PER_FACTION; i++) { AddObject(BG_IC_GO_SEAFORIUM_BOMBS_1+i,GO_SEAFORIUM_BOMBS, workshopBombs[i].GetPositionX(),workshopBombs[i].GetPositionY(), diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h index f57b85d92c..028e593b2d 100755 --- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.h +++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.h @@ -37,7 +37,8 @@ enum creaturesIC NPC_DEMOLISHER = 34775, NPC_SIEGE_ENGINE_H = 35069, NPC_SIEGE_ENGINE_A = 34776, - NPC_GLAIVE_THROWER = 34802, + NPC_GLAIVE_THROWER_A = 34802, + NPC_GLAIVE_THROWER_H = 35273, NPC_CATAPULT = 34793, NPC_HORDE_GUNSHIP_CANNON = 34935, NPC_ALLIANCE_GUNSHIP_CANNON = 34929 @@ -181,16 +182,22 @@ enum gameobjectsIC GO_ALLIANCE_GUNSHIP = 195121, }; -#define NPCS_MAX_SPAWNS BG_IC_NPC_KEEP_CANNON_25+1 -#define MAX_WORKSHOP_SPAWNS 10 -#define MAX_DOCKS_SPAWNS 12 -#define MAX_SPIRIT_GUIDES 7 -#define MAX_HANGAR_TELEPORTERS 3 -#define MAX_AIRSHIPS 2 +#define MAX_REINFORCEMENTS 300 -#define WORKSHOP_UPDATE_TIMER 180000 // 3 minutes -#define DOCKS_UPDATE_TIMER 180000 // not sure if it is 3 minutes -#define IC_RESOURCE_TIME 45000 // not sure, need more research +enum Times +{ + WORKSHOP_UPDATE_TIME = 180000, // 3 minutes + DOCKS_UPDATE_TIME = 180000, // not sure if it is 3 minutes + IC_RESOURCE_TIME = 45000, // not sure, need more research + CLOSE_DOORS_TIME = 20000, + BANNER_STATE_CHANGE_TIME = 60000, + TRANSPORT_PERIOD_TIME = 120000 +}; + +enum Actions +{ + ACTION_TELEPORT_PLAYER_TO_TRANSPORT = 1 +}; struct ICNpc { @@ -203,154 +210,6 @@ struct ICNpc float o; }; -enum BG_IC_NPCs -{ - BG_IC_NPC_OVERLORD_AGMAR = 0, - BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE, - BG_IC_NPC_KOR_KRON_GUARD_1, - BG_IC_NPC_KOR_KRON_GUARD_2, - BG_IC_NPC_KOR_KRON_GUARD_3, - BG_IC_NPC_KOR_KRON_GUARD_4, - BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_1, - BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_2, - BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_3, - BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_4, - BG_IC_NPC_KEEP_CANNON_1, - BG_IC_NPC_KEEP_CANNON_2, - BG_IC_NPC_KEEP_CANNON_3, - BG_IC_NPC_KEEP_CANNON_4, - BG_IC_NPC_KEEP_CANNON_5, - BG_IC_NPC_KEEP_CANNON_6, - BG_IC_NPC_KEEP_CANNON_7, - BG_IC_NPC_KEEP_CANNON_8, - BG_IC_NPC_KEEP_CANNON_9, - BG_IC_NPC_KEEP_CANNON_10, - BG_IC_NPC_KEEP_CANNON_11, - BG_IC_NPC_KEEP_CANNON_12, - BG_IC_NPC_KEEP_CANNON_13, - BG_IC_NPC_KEEP_CANNON_14, - BG_IC_NPC_KEEP_CANNON_15, - BG_IC_NPC_KEEP_CANNON_16, - BG_IC_NPC_KEEP_CANNON_17, - BG_IC_NPC_KEEP_CANNON_18, - BG_IC_NPC_KEEP_CANNON_19, - BG_IC_NPC_KEEP_CANNON_20, - BG_IC_NPC_KEEP_CANNON_21, - BG_IC_NPC_KEEP_CANNON_22, - BG_IC_NPC_KEEP_CANNON_23, - BG_IC_NPC_KEEP_CANNON_24, - BG_IC_NPC_KEEP_CANNON_25, - - BG_IC_NPC_SIEGE_ENGINE_A, - BG_IC_NPC_SIEGE_ENGINE_H, - - BG_IC_NPC_DEMOLISHER_1_A, - BG_IC_NPC_DEMOLISHER_2_A, - BG_IC_NPC_DEMOLISHER_3_A, - BG_IC_NPC_DEMOLISHER_4_A, - - BG_IC_NPC_DEMOLISHER_1_H, - BG_IC_NPC_DEMOLISHER_2_H, - BG_IC_NPC_DEMOLISHER_3_H, - BG_IC_NPC_DEMOLISHER_4_H, - - BG_IC_NPC_GLAIVE_THROWER_1_A, - BG_IC_NPC_GLAIVE_THROWER_2_A, - BG_IC_NPC_GLAIVE_THROWER_1_H, - BG_IC_NPC_GLAIVE_THROWER_2_H, - - BG_IC_NPC_CATAPULT_1_A, - BG_IC_NPC_CATAPULT_2_A, - BG_IC_NPC_CATAPULT_3_A, - BG_IC_NPC_CATAPULT_4_A, - - BG_IC_NPC_CATAPULT_1_H, - BG_IC_NPC_CATAPULT_2_H, - BG_IC_NPC_CATAPULT_3_H, - BG_IC_NPC_CATAPULT_4_H, - - BG_IC_NPC_SPIRIT_GUIDE_1, - BG_IC_NPC_SPIRIT_GUIDE_2, - BG_IC_NPC_SPIRIT_GUIDE_3, - BG_IC_NPC_SPIRIT_GUIDE_4, - BG_IC_NPC_SPIRIT_GUIDE_5, - BG_IC_NPC_SPIRIT_GUIDE_6, - BG_IC_NPC_SPIRIT_GUIDE_7, -}; -const ICNpc BG_IC_NpcSpawnlocs[NPCS_MAX_SPAWNS]= -{ - {BG_IC_NPC_OVERLORD_AGMAR,NPC_OVERLORD_AGMAR,TEAM_HORDE,1295.44f,-765.733f,70.0541f,0.0f},//Overlord Agmar 1 - {BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE,NPC_HIGH_COMMANDER_HALFORD_WYRMBANE,TEAM_ALLIANCE,224.983f,-831.573f,60.9034f,0.0f},//High Commander Halford Wyrmbane 2 - {BG_IC_NPC_KOR_KRON_GUARD_1,NPC_KOR_KRON_GUARD,TEAM_HORDE,1296.01f,-773.256f,69.958f,0.292168f}, // 3 - {BG_IC_NPC_KOR_KRON_GUARD_2,NPC_KOR_KRON_GUARD,TEAM_HORDE,1295.94f,-757.756f,69.9587f,6.02165f}, // 4 - {BG_IC_NPC_KOR_KRON_GUARD_3,NPC_KOR_KRON_GUARD,TEAM_HORDE,1295.09f,-760.927f,69.9587f,5.94311f}, // 5 - {BG_IC_NPC_KOR_KRON_GUARD_4,NPC_KOR_KRON_GUARD,TEAM_HORDE,1295.13f,-769.7f,69.95f,0.34f}, // 6 - - {BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_1,NPC_SEVEN_TH_LEGION_INFANTRY,TEAM_ALLIANCE,223.969f,-822.958f,60.8151f,0.46337f}, // 7 - {BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_2,NPC_SEVEN_TH_LEGION_INFANTRY,TEAM_ALLIANCE,224.211f,-826.952f,60.8188f,6.25961f}, // 8 - {BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_3,NPC_SEVEN_TH_LEGION_INFANTRY,TEAM_ALLIANCE,223.119f,-838.386f,60.8145f,5.64857f}, // 9 - {BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_4,NPC_SEVEN_TH_LEGION_INFANTRY,TEAM_ALLIANCE,223.889f,-835.102f,60.8201f,6.21642f},// 10 - - {BG_IC_NPC_KEEP_CANNON_1,NPC_KEEP_CANNON,TEAM_ALLIANCE,415.825f,-754.634f,87.799f,1.78024f},// 11 - {BG_IC_NPC_KEEP_CANNON_2,NPC_KEEP_CANNON,TEAM_ALLIANCE,410.142f,-755.332f,87.7991f,1.78024f},// 12 - {BG_IC_NPC_KEEP_CANNON_3,NPC_KEEP_CANNON,TEAM_ALLIANCE,424.33f,-879.352f,88.0446f,0.436332f},// 13 - {BG_IC_NPC_KEEP_CANNON_4,NPC_KEEP_CANNON,TEAM_ALLIANCE,425.602f,-786.646f,87.7991f,5.74213f},// 14 - {BG_IC_NPC_KEEP_CANNON_5,NPC_KEEP_CANNON,TEAM_ALLIANCE,426.743f,-884.939f,87.9613f,0.436332f},// 15 - {BG_IC_NPC_KEEP_CANNON_6,NPC_KEEP_CANNON,TEAM_ALLIANCE,404.736f,-755.495f,87.7989f,1.78024f},// 16 - {BG_IC_NPC_KEEP_CANNON_7,NPC_KEEP_CANNON,TEAM_ALLIANCE,428.375f,-780.797f,87.7991f,5.79449f},// 17 - {BG_IC_NPC_KEEP_CANNON_8,NPC_KEEP_CANNON,TEAM_ALLIANCE,429.175f,-890.436f,88.0446f,0.436332f},// 18 - {BG_IC_NPC_KEEP_CANNON_9,NPC_KEEP_CANNON,TEAM_ALLIANCE,430.872f,-775.278f,87.7991f,5.88176f},// 19 - {BG_IC_NPC_KEEP_CANNON_10,NPC_KEEP_CANNON,TEAM_ALLIANCE,408.056f,-911.283f,88.0445f,4.64258f},// 20 - {BG_IC_NPC_KEEP_CANNON_11,NPC_KEEP_CANNON,TEAM_ALLIANCE,413.609f,-911.566f,88.0447f,4.66003f},// 21 - {BG_IC_NPC_KEEP_CANNON_12,NPC_KEEP_CANNON,TEAM_ALLIANCE,402.554f,-910.557f,88.0446f,4.57276f},// 22 - - {BG_IC_NPC_KEEP_CANNON_13,NPC_KEEP_CANNON,TEAM_HORDE,1158.91f,-660.144f,87.9332f,0.750492f},// 23 - {BG_IC_NPC_KEEP_CANNON_14,NPC_KEEP_CANNON,TEAM_HORDE,1156.22f,-866.809f,87.8754f,5.27089f},// 24 - {BG_IC_NPC_KEEP_CANNON_15,NPC_KEEP_CANNON,TEAM_HORDE,1163.74f,-663.67f,88.3571f,0.558505f},// 25 - {BG_IC_NPC_KEEP_CANNON_16,NPC_KEEP_CANNON,TEAM_HORDE,1135.18f,-683.896f,88.0409f,3.9619f},// 26 - {BG_IC_NPC_KEEP_CANNON_17,NPC_KEEP_CANNON,TEAM_HORDE,1138.91f,-836.359f,88.3728f,2.18166f},// 27 - {BG_IC_NPC_KEEP_CANNON_18,NPC_KEEP_CANNON,TEAM_HORDE,1162.08f,-863.717f,88.358f,5.48033f},// 28 - {BG_IC_NPC_KEEP_CANNON_19,NPC_KEEP_CANNON,TEAM_HORDE,1167.13f,-669.212f,87.9682f,0.383972f},// 29 - {BG_IC_NPC_KEEP_CANNON_20,NPC_KEEP_CANNON,TEAM_HORDE,1137.72f,-688.517f,88.4023f,3.9619f},// 30 - {BG_IC_NPC_KEEP_CANNON_21,NPC_KEEP_CANNON,TEAM_HORDE,1135.29f,-840.878f,88.0252f,2.30383f},// 31 - {BG_IC_NPC_KEEP_CANNON_22,NPC_KEEP_CANNON,TEAM_HORDE,1144.33f,-833.309f,87.9268f,2.14675f},// 32 - {BG_IC_NPC_KEEP_CANNON_23,NPC_KEEP_CANNON,TEAM_HORDE,1135.29f,-840.878f,88.0252f,2.30383f},// 33 - {BG_IC_NPC_KEEP_CANNON_24,NPC_KEEP_CANNON,TEAM_HORDE,1142.59f,-691.946f,87.9756f,3.9619f},// 34 - {BG_IC_NPC_KEEP_CANNON_25,NPC_KEEP_CANNON,TEAM_HORDE,1166.13f,-858.391f,87.9653f,5.63741f},// 35 -}; - -const Position BG_IC_WorkshopVehicles[5] = -{ - {751.8281f, -852.732666f, 12.5250978f, 1.46607661f}, // Demolisher - {761.809f, -854.2274f, 12.5263243f, 1.46607661f}, // Demolisher - {783.4722f, -853.9601f, 12.54775f, 1.71042264f}, // Demolisher - {793.055542f, -852.71875f, 12.5671329f, 1.71042264f}, // Demolisher - {773.680542f, -884.092041f, 16.8090363f, 1.58824956f} // Siege Engine -}; - -const Position BG_IC_DocksVehiclesGlaives[2] = -{ - { 779.3125f, -342.972229f, 12.2104874f, 4.712389f }, // Glaive Throwers - { 790.029541f, -342.899323f, 12.2128582f, 4.71238f }, // Glaive Throwers -}; - -const Position BG_IC_DocksVehiclesCatapults[4] = -{ - {757.283f, -341.7795f, 12.2113762f, 4.729842f}, // Catapults - {766.947937f, -342.053833f, 12.2009945f, 4.694f}, // Catapults - {800.3785f, -342.607635f, 12.1669979f, 4.6774f}, // Catapults - {810.7257f, -342.083344f, 12.1675768f, 4.6600f}, // Catapults -}; - -const Position BG_IC_HangarTeleporters[3] = -{ - {827.958f,-994.467f,134.071f,0.0f}, // Gunship Portal - {738.613f,-1106.58f,134.745f,2.54818f}, // Gunship Portal - {672.283f,-1156.99f,133.706f,1.37881f}, // Gunship Portal -}; - -#define GAMEOBJECT_MAX_SPAWNS BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01+1 - enum BG_IC_GOs { BG_IC_GO_ALLIANCE_BANNER = 0, @@ -480,6 +339,182 @@ enum BG_IC_GOs BG_IC_GO_TELEPORTER_EFFECTS_H_6, }; +enum BG_IC_NPCs +{ + BG_IC_NPC_OVERLORD_AGMAR = 0, + BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE, + BG_IC_NPC_KOR_KRON_GUARD_1, + BG_IC_NPC_KOR_KRON_GUARD_2, + BG_IC_NPC_KOR_KRON_GUARD_3, + BG_IC_NPC_KOR_KRON_GUARD_4, + BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_1, + BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_2, + BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_3, + BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_4, + BG_IC_NPC_KEEP_CANNON_1, + BG_IC_NPC_KEEP_CANNON_2, + BG_IC_NPC_KEEP_CANNON_3, + BG_IC_NPC_KEEP_CANNON_4, + BG_IC_NPC_KEEP_CANNON_5, + BG_IC_NPC_KEEP_CANNON_6, + BG_IC_NPC_KEEP_CANNON_7, + BG_IC_NPC_KEEP_CANNON_8, + BG_IC_NPC_KEEP_CANNON_9, + BG_IC_NPC_KEEP_CANNON_10, + BG_IC_NPC_KEEP_CANNON_11, + BG_IC_NPC_KEEP_CANNON_12, + BG_IC_NPC_KEEP_CANNON_13, + BG_IC_NPC_KEEP_CANNON_14, + BG_IC_NPC_KEEP_CANNON_15, + BG_IC_NPC_KEEP_CANNON_16, + BG_IC_NPC_KEEP_CANNON_17, + BG_IC_NPC_KEEP_CANNON_18, + BG_IC_NPC_KEEP_CANNON_19, + BG_IC_NPC_KEEP_CANNON_20, + BG_IC_NPC_KEEP_CANNON_21, + BG_IC_NPC_KEEP_CANNON_22, + BG_IC_NPC_KEEP_CANNON_23, + BG_IC_NPC_KEEP_CANNON_24, + BG_IC_NPC_KEEP_CANNON_25, + + BG_IC_NPC_SIEGE_ENGINE_A, + BG_IC_NPC_SIEGE_ENGINE_H, + + BG_IC_NPC_DEMOLISHER_1_A, + BG_IC_NPC_DEMOLISHER_2_A, + BG_IC_NPC_DEMOLISHER_3_A, + BG_IC_NPC_DEMOLISHER_4_A, + + BG_IC_NPC_DEMOLISHER_1_H, + BG_IC_NPC_DEMOLISHER_2_H, + BG_IC_NPC_DEMOLISHER_3_H, + BG_IC_NPC_DEMOLISHER_4_H, + + BG_IC_NPC_GLAIVE_THROWER_1_A, + BG_IC_NPC_GLAIVE_THROWER_2_A, + BG_IC_NPC_GLAIVE_THROWER_1_H, + BG_IC_NPC_GLAIVE_THROWER_2_H, + + BG_IC_NPC_CATAPULT_1_A, + BG_IC_NPC_CATAPULT_2_A, + BG_IC_NPC_CATAPULT_3_A, + BG_IC_NPC_CATAPULT_4_A, + + BG_IC_NPC_CATAPULT_1_H, + BG_IC_NPC_CATAPULT_2_H, + BG_IC_NPC_CATAPULT_3_H, + BG_IC_NPC_CATAPULT_4_H, + + BG_IC_NPC_SPIRIT_GUIDE_1, + BG_IC_NPC_SPIRIT_GUIDE_2, + BG_IC_NPC_SPIRIT_GUIDE_3, + BG_IC_NPC_SPIRIT_GUIDE_4, + BG_IC_NPC_SPIRIT_GUIDE_5, + BG_IC_NPC_SPIRIT_GUIDE_6, + BG_IC_NPC_SPIRIT_GUIDE_7, +}; + +enum BannersTypes +{ + BANNER_A_CONTROLLED, + BANNER_A_CONTESTED, + BANNER_H_CONTROLLED, + BANNER_H_CONTESTED +}; + +enum BG_IC_MaxSpawns +{ + MAX_NORMAL_GAMEOBJECTS_SPAWNS = BG_IC_GO_DOODAD_ND_WINTERORC_WALL_GATEFX_DOOR01+1, + MAX_NORMAL_NPCS_SPAWNS = BG_IC_NPC_KEEP_CANNON_25+1, + MAX_WORKSHOP_SPAWNS = 10, + MAX_DOCKS_SPAWNS = 12, + MAX_SPIRIT_GUIDES_SPAWNS = 7, + MAX_HANGAR_TELEPORTERS_SPAWNS = 3, + MAX_AIRSHIPS_SPAWNS = 2, + MAX_FORTRESS_GATES_SPAWNS = 6, + MAX_FORTRESS_TELEPORTERS_SPAWNS = 24, + + // docks + MAX_GLAIVE_THROWERS_SPAWNS_PER_FACTION = 2, + MAX_CATAPULTS_SPAWNS_PER_FACTION = 4, + + // workshop + MAX_DEMOLISHERS_SPAWNS_PER_FACTION = 4, + MAX_WORKSHOP_BOMBS_SPAWNS_PER_FACTION = 2 +}; + +const ICNpc BG_IC_NpcSpawnlocs[MAX_NORMAL_NPCS_SPAWNS]= +{ + {BG_IC_NPC_OVERLORD_AGMAR,NPC_OVERLORD_AGMAR,TEAM_HORDE,1295.44f,-765.733f,70.0541f,0.0f},//Overlord Agmar 1 + {BG_IC_NPC_HIGH_COMMANDER_HALFORD_WYRMBANE,NPC_HIGH_COMMANDER_HALFORD_WYRMBANE,TEAM_ALLIANCE,224.983f,-831.573f,60.9034f,0.0f},//High Commander Halford Wyrmbane 2 + {BG_IC_NPC_KOR_KRON_GUARD_1,NPC_KOR_KRON_GUARD,TEAM_HORDE,1296.01f,-773.256f,69.958f,0.292168f}, // 3 + {BG_IC_NPC_KOR_KRON_GUARD_2,NPC_KOR_KRON_GUARD,TEAM_HORDE,1295.94f,-757.756f,69.9587f,6.02165f}, // 4 + {BG_IC_NPC_KOR_KRON_GUARD_3,NPC_KOR_KRON_GUARD,TEAM_HORDE,1295.09f,-760.927f,69.9587f,5.94311f}, // 5 + {BG_IC_NPC_KOR_KRON_GUARD_4,NPC_KOR_KRON_GUARD,TEAM_HORDE,1295.13f,-769.7f,69.95f,0.34f}, // 6 + + {BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_1,NPC_SEVEN_TH_LEGION_INFANTRY,TEAM_ALLIANCE,223.969f,-822.958f,60.8151f,0.46337f}, // 7 + {BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_2,NPC_SEVEN_TH_LEGION_INFANTRY,TEAM_ALLIANCE,224.211f,-826.952f,60.8188f,6.25961f}, // 8 + {BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_3,NPC_SEVEN_TH_LEGION_INFANTRY,TEAM_ALLIANCE,223.119f,-838.386f,60.8145f,5.64857f}, // 9 + {BG_IC_NPC_SEVEN_TH_LEGION_INFANTRY_4,NPC_SEVEN_TH_LEGION_INFANTRY,TEAM_ALLIANCE,223.889f,-835.102f,60.8201f,6.21642f},// 10 + + {BG_IC_NPC_KEEP_CANNON_1,NPC_KEEP_CANNON,TEAM_ALLIANCE,415.825f,-754.634f,87.799f,1.78024f},// 11 + {BG_IC_NPC_KEEP_CANNON_2,NPC_KEEP_CANNON,TEAM_ALLIANCE,410.142f,-755.332f,87.7991f,1.78024f},// 12 + {BG_IC_NPC_KEEP_CANNON_3,NPC_KEEP_CANNON,TEAM_ALLIANCE,424.33f,-879.352f,88.0446f,0.436332f},// 13 + {BG_IC_NPC_KEEP_CANNON_4,NPC_KEEP_CANNON,TEAM_ALLIANCE,425.602f,-786.646f,87.7991f,5.74213f},// 14 + {BG_IC_NPC_KEEP_CANNON_5,NPC_KEEP_CANNON,TEAM_ALLIANCE,426.743f,-884.939f,87.9613f,0.436332f},// 15 + {BG_IC_NPC_KEEP_CANNON_6,NPC_KEEP_CANNON,TEAM_ALLIANCE,404.736f,-755.495f,87.7989f,1.78024f},// 16 + {BG_IC_NPC_KEEP_CANNON_7,NPC_KEEP_CANNON,TEAM_ALLIANCE,428.375f,-780.797f,87.7991f,5.79449f},// 17 + {BG_IC_NPC_KEEP_CANNON_8,NPC_KEEP_CANNON,TEAM_ALLIANCE,429.175f,-890.436f,88.0446f,0.436332f},// 18 + {BG_IC_NPC_KEEP_CANNON_9,NPC_KEEP_CANNON,TEAM_ALLIANCE,430.872f,-775.278f,87.7991f,5.88176f},// 19 + {BG_IC_NPC_KEEP_CANNON_10,NPC_KEEP_CANNON,TEAM_ALLIANCE,408.056f,-911.283f,88.0445f,4.64258f},// 20 + {BG_IC_NPC_KEEP_CANNON_11,NPC_KEEP_CANNON,TEAM_ALLIANCE,413.609f,-911.566f,88.0447f,4.66003f},// 21 + {BG_IC_NPC_KEEP_CANNON_12,NPC_KEEP_CANNON,TEAM_ALLIANCE,402.554f,-910.557f,88.0446f,4.57276f},// 22 + + {BG_IC_NPC_KEEP_CANNON_13,NPC_KEEP_CANNON,TEAM_HORDE,1158.91f,-660.144f,87.9332f,0.750492f},// 23 + {BG_IC_NPC_KEEP_CANNON_14,NPC_KEEP_CANNON,TEAM_HORDE,1156.22f,-866.809f,87.8754f,5.27089f},// 24 + {BG_IC_NPC_KEEP_CANNON_15,NPC_KEEP_CANNON,TEAM_HORDE,1163.74f,-663.67f,88.3571f,0.558505f},// 25 + {BG_IC_NPC_KEEP_CANNON_16,NPC_KEEP_CANNON,TEAM_HORDE,1135.18f,-683.896f,88.0409f,3.9619f},// 26 + {BG_IC_NPC_KEEP_CANNON_17,NPC_KEEP_CANNON,TEAM_HORDE,1138.91f,-836.359f,88.3728f,2.18166f},// 27 + {BG_IC_NPC_KEEP_CANNON_18,NPC_KEEP_CANNON,TEAM_HORDE,1162.08f,-863.717f,88.358f,5.48033f},// 28 + {BG_IC_NPC_KEEP_CANNON_19,NPC_KEEP_CANNON,TEAM_HORDE,1167.13f,-669.212f,87.9682f,0.383972f},// 29 + {BG_IC_NPC_KEEP_CANNON_20,NPC_KEEP_CANNON,TEAM_HORDE,1137.72f,-688.517f,88.4023f,3.9619f},// 30 + {BG_IC_NPC_KEEP_CANNON_21,NPC_KEEP_CANNON,TEAM_HORDE,1135.29f,-840.878f,88.0252f,2.30383f},// 31 + {BG_IC_NPC_KEEP_CANNON_22,NPC_KEEP_CANNON,TEAM_HORDE,1144.33f,-833.309f,87.9268f,2.14675f},// 32 + {BG_IC_NPC_KEEP_CANNON_23,NPC_KEEP_CANNON,TEAM_HORDE,1135.29f,-840.878f,88.0252f,2.30383f},// 33 + {BG_IC_NPC_KEEP_CANNON_24,NPC_KEEP_CANNON,TEAM_HORDE,1142.59f,-691.946f,87.9756f,3.9619f},// 34 + {BG_IC_NPC_KEEP_CANNON_25,NPC_KEEP_CANNON,TEAM_HORDE,1166.13f,-858.391f,87.9653f,5.63741f},// 35 +}; + +const Position BG_IC_WorkshopVehicles[5] = +{ + {751.8281f, -852.732666f, 12.5250978f, 1.46607661f}, // Demolisher + {761.809f, -854.2274f, 12.5263243f, 1.46607661f}, // Demolisher + {783.4722f, -853.9601f, 12.54775f, 1.71042264f}, // Demolisher + {793.055542f, -852.71875f, 12.5671329f, 1.71042264f}, // Demolisher + {773.680542f, -884.092041f, 16.8090363f, 1.58824956f} // Siege Engine +}; + +const Position BG_IC_DocksVehiclesGlaives[2] = +{ + { 779.3125f, -342.972229f, 12.2104874f, 4.712389f }, // Glaive Throwers + { 790.029541f, -342.899323f, 12.2128582f, 4.71238f }, // Glaive Throwers +}; + +const Position BG_IC_DocksVehiclesCatapults[4] = +{ + {757.283f, -341.7795f, 12.2113762f, 4.729842f}, // Catapults + {766.947937f, -342.053833f, 12.2009945f, 4.694f}, // Catapults + {800.3785f, -342.607635f, 12.1669979f, 4.6774f}, // Catapults + {810.7257f, -342.083344f, 12.1675768f, 4.6600f}, // Catapults +}; + +const Position BG_IC_HangarTeleporters[3] = +{ + {827.958f,-994.467f,134.071f,0.0f}, // Gunship Portal + {738.613f,-1106.58f,134.745f,2.54818f}, // Gunship Portal + {672.283f,-1156.99f,133.706f,1.37881f}, // Gunship Portal +}; + struct ICGo { uint32 type; @@ -490,8 +525,7 @@ struct ICGo float o; }; -#define MAX_TELEPORTERS_SPAWNS 24 -const ICGo BG_IC_Teleporters[MAX_TELEPORTERS_SPAWNS] = +const ICGo BG_IC_Teleporters[MAX_FORTRESS_TELEPORTERS_SPAWNS] = { {BG_IC_GO_TELEPORTER_1_1,GO_TELEPORTER_1,1143.25f,-779.599f,48.629f,1.64061f}, // Teleporter {BG_IC_GO_TELEPORTER_1_2,GO_TELEPORTER_1,1236.53f,-669.415f,48.2729f,0.104719f}, // Teleporter @@ -521,7 +555,7 @@ const ICGo BG_IC_Teleporters[MAX_TELEPORTERS_SPAWNS] = {BG_IC_GO_TELEPORTER_EFFECTS_H_6,GO_TELEPORTER_EFFECTS_H,1235.6f,-683.806f,49.3028f,-3.07177f}, // Teleporter Effects (Horde) }; -const ICGo BG_IC_ObjSpawnlocs[GAMEOBJECT_MAX_SPAWNS] = +const ICGo BG_IC_ObjSpawnlocs[MAX_NORMAL_GAMEOBJECTS_SPAWNS] = { {BG_IC_GO_ALLIANCE_GATE_1,GO_ALLIANCE_GATE_1,351.615f,-762.75f,48.9162f,-1.5708f}, // Alliance Gate || Left {BG_IC_GO_ALLIANCE_GATE_2,GO_ALLIANCE_GATE_2,351.024f,-903.326f,48.9247f,1.5708f}, // Alliance Gate || Right @@ -617,13 +651,20 @@ const Position workshopBombs[2] = {785.509f,-864.715f,13.3993f,2.47837f} }; -enum Buffs +enum Spells { SPELL_OIL_REFINERY = 68719, SPELL_QUARRY = 68720, SPELL_PARACHUTE = 66656, - SPELL_SLOW_FALL = 12438 + SPELL_SLOW_FALL = 12438, + + SPELL_DESTROYED_VEHICLE_ACHIEVEMENT = 68357, + + SPELL_DRIVING_CREDIT_DEMOLISHER = 68365, + SPELL_DRIVING_CREDIT_GLAIVE = 68363, + SPELL_DRIVING_CREDIT_SIEGE = 68364, + SPELL_DRIVING_CREDIT_CATAPULT = 68362 }; enum BG_IC_Objectives @@ -738,6 +779,9 @@ enum ICNodeState const uint32 BG_IC_GraveyardIds[MAX_NODE_TYPES+2] = {0, 0, 1480, 1481, 1482, 1485, 1486, 1483, 1484}; +const Position TransportMovementInfo = {7.305609f,-0.095246f,34.51022f}; +const Position TeleportToTransportPosition = {661.0f,-1244.0f,288.0f,0.0f}; + const float BG_IC_SpiritGuidePos[MAX_NODE_TYPES+2][4] = { {0.0f, 0.0f, 0.0f, 0.0f}, // no grave @@ -796,6 +840,12 @@ const ICNodePoint nodePointInitial[7] = {BG_IC_GO_HORDE_BANNER,GO_HORDE_BANNER,TEAM_HORDE,NODE_TYPE_GRAVEYARD_H, {GO_ALLIANCE_BANNER_GRAVEYARD_H,GO_ALLIANCE_BANNER_GRAVEYARD_H_CONT,GO_HORDE_BANNER_GRAVEYARD_H,GO_HORDE_BANNER_GRAVEYARD_H_CONT},false,0,0,{BG_IC_HORDE_KEEP_UNCONTROLLED,BG_IC_HORDE_KEEP_CONFLICT_A,BG_IC_HORDE_KEEP_CONFLICT_H,BG_IC_HORDE_KEEP_CONTROLLED_A,BG_IC_HORDE_KEEP_CONTROLLED_H},NODE_STATE_CONTROLLED_H,LANG_BG_IC_HORDE_KEEP}, }; +enum HonorRewards +{ + RESOURCE_HONOR_AMOUNT = 12, + WINNER_HONOR_AMOUNT = 500 +}; + class BattlegroundICScore : public BattlegroundScore { public: @@ -846,7 +896,7 @@ class BattlegroundIC : public Battleground virtual bool IsAllNodesConrolledByTeam(uint32 team) const; // overwrited private: - uint32 closeFortressDoors; + uint32 closeFortressDoorsTimer; bool doorsClosed; uint32 docksTimer; uint32 resourceTimer; diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 8d330143ae..4a4a4f1522 100755 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -9260,25 +9260,25 @@ void Player::SendInitWorldStates(uint32 zoneid, uint32 areaid) bg->FillInitialWorldStates(data); else { - data << uint32(4221) << uint32(1); // 7 - data << uint32(4222) << uint32(1); // 8 - data << uint32(4226) << uint32(300); // 9 - data << uint32(4227) << uint32(300); // 10 - data << uint32(4322) << uint32(1); // 11 - data << uint32(4321) << uint32(1); // 12 - data << uint32(4320) << uint32(1); // 13 - data << uint32(4323) << uint32(1); // 14 - data << uint32(4324) << uint32(1); // 15 - data << uint32(4325) << uint32(1); // 16 - data << uint32(4317) << uint32(1); // 17 + data << uint32(4221) << uint32(1); // 7 BG_IC_ALLIANCE_RENFORT_SET + data << uint32(4222) << uint32(1); // 8 BG_IC_HORDE_RENFORT_SET + data << uint32(4226) << uint32(300); // 9 BG_IC_ALLIANCE_RENFORT + data << uint32(4227) << uint32(300); // 10 BG_IC_HORDE_RENFORT + data << uint32(4322) << uint32(1); // 11 BG_IC_GATE_FRONT_H_WS_OPEN + data << uint32(4321) << uint32(1); // 12 BG_IC_GATE_WEST_H_WS_OPEN + data << uint32(4320) << uint32(1); // 13 BG_IC_GATE_EAST_H_WS_OPEN + data << uint32(4323) << uint32(1); // 14 BG_IC_GATE_FRONT_A_WS_OPEN + data << uint32(4324) << uint32(1); // 15 BG_IC_GATE_WEST_A_WS_OPEN + data << uint32(4325) << uint32(1); // 16 BG_IC_GATE_EAST_A_WS_OPEN + data << uint32(4317) << uint32(1); // 17 unknown - data << uint32(4301) << uint32(1); // 18 - data << uint32(4296) << uint32(1); // 19 - data << uint32(4306) << uint32(1); // 20 - data << uint32(4311) << uint32(1); // 21 - data << uint32(4294) << uint32(1); // 22 - data << uint32(4243) << uint32(1); // 23 - data << uint32(4345) << uint32(1); // 24 + data << uint32(4301) << uint32(1); // 18 BG_IC_DOCKS_UNCONTROLLED + data << uint32(4296) << uint32(1); // 19 BG_IC_HANGAR_UNCONTROLLED + data << uint32(4306) << uint32(1); // 20 BG_IC_QUARRY_UNCONTROLLED + data << uint32(4311) << uint32(1); // 21 BG_IC_REFINERY_UNCONTROLLED + data << uint32(4294) << uint32(1); // 22 BG_IC_WORKSHOP_UNCONTROLLED + data << uint32(4243) << uint32(1); // 23 unknown + data << uint32(4345) << uint32(1); // 24 unknown } break; default: diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index 08f8541f80..c736e3e844 100755 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3096,13 +3096,13 @@ bool SpellArea::IsFitToRequirements(Player const* player, uint32 newZone, uint32 return false; break; } - case 68719: // Oil Refinery - Isle of Conquest. - case 68720: // Quarry - Isle of Conquest. + case SPELL_OIL_REFINERY: // Oil Refinery - Isle of Conquest. + case SPELL_QUARRY: // Quarry - Isle of Conquest. { if (player->GetBattlegroundTypeId() != BATTLEGROUND_IC || !player->GetBattleground()) return false; - uint8 nodeType = spellId == 68719 ? NODE_TYPE_REFINERY : NODE_TYPE_QUARRY; + uint8 nodeType = spellId == SPELL_OIL_REFINERY ? NODE_TYPE_REFINERY : NODE_TYPE_QUARRY; uint8 nodeState = player->GetTeamId() == TEAM_ALLIANCE ? NODE_STATE_CONTROLLED_A : NODE_STATE_CONTROLLED_H; BattlegroundIC* pIC = static_cast(player->GetBattleground()); diff --git a/src/server/scripts/Northrend/isle_of_conquest.cpp b/src/server/scripts/Northrend/isle_of_conquest.cpp index b70f8de4b4..2a351e3441 100644 --- a/src/server/scripts/Northrend/isle_of_conquest.cpp +++ b/src/server/scripts/Northrend/isle_of_conquest.cpp @@ -39,17 +39,18 @@ class npc_four_car_garage : public CreatureScript switch(me->GetEntry()) { case NPC_DEMOLISHER: - spellId = 68365; + spellId = SPELL_DRIVING_CREDIT_DEMOLISHER; break; - case NPC_GLAIVE_THROWER: - spellId = 68363; + case NPC_GLAIVE_THROWER_A: + case NPC_GLAIVE_THROWER_H: + spellId = SPELL_DRIVING_CREDIT_GLAIVE; break; case NPC_SIEGE_ENGINE_H: case NPC_SIEGE_ENGINE_A: - spellId = 68364; + spellId = SPELL_DRIVING_CREDIT_SIEGE; break; case NPC_CATAPULT: - spellId = 68362; + spellId = SPELL_DRIVING_CREDIT_CATAPULT; break; default: return; diff --git a/src/server/scripts/World/achievement_scripts.cpp b/src/server/scripts/World/achievement_scripts.cpp index 385e973ee7..fe3b29ee81 100755 --- a/src/server/scripts/World/achievement_scripts.cpp +++ b/src/server/scripts/World/achievement_scripts.cpp @@ -140,7 +140,7 @@ class achievement_bg_ic_glaive_grave : public AchievementCriteriaScript { if (Creature* vehicle = source->GetVehicleCreatureBase()) { - if (vehicle->GetEntry() == 35273 || vehicle->GetEntry() == 34802) + if (vehicle->GetEntry() == NPC_GLAIVE_THROWER_H || vehicle->GetEntry() == NPC_GLAIVE_THROWER_A) return true; }