Core: Killing magic numbers.

This commit is contained in:
Manuel
2011-01-09 20:44:33 -03:00
parent 8c939165b0
commit 014714fb17
6 changed files with 299 additions and 243 deletions
@@ -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(),
@@ -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;