*Cleanups in BattlegroundAV::Update.
--HG-- branch : trunk
This commit is contained in:
+72
-115
@@ -34,11 +34,10 @@ BattleGroundAV::BattleGroundAV()
|
||||
m_BgObjects.resize(BG_AV_OBJECT_MAX);
|
||||
m_BgCreatures.resize(AV_CPLACE_MAX+AV_STATICCPLACE_MAX);
|
||||
|
||||
//TODO FIX ME!
|
||||
m_StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_EY_START_TWO_MINUTES;
|
||||
m_StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_EY_START_ONE_MINUTE;
|
||||
m_StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_EY_START_HALF_MINUTE;
|
||||
m_StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_EY_HAS_BEGUN;
|
||||
m_StartMessageIds[BG_STARTING_EVENT_FIRST] = LANG_BG_AV_START_TWO_MINUTES;
|
||||
m_StartMessageIds[BG_STARTING_EVENT_SECOND] = LANG_BG_AV_START_ONE_MINUTE;
|
||||
m_StartMessageIds[BG_STARTING_EVENT_THIRD] = LANG_BG_AV_START_HALF_MINUTE;
|
||||
m_StartMessageIds[BG_STARTING_EVENT_FOURTH] = LANG_BG_AV_HAS_BEGUN;
|
||||
}
|
||||
|
||||
BattleGroundAV::~BattleGroundAV()
|
||||
@@ -300,117 +299,8 @@ Creature* BattleGroundAV::AddAVCreature(uint16 cinfoid, uint16 type )
|
||||
void BattleGroundAV::Update(uint32 diff)
|
||||
{
|
||||
BattleGround::Update(diff);
|
||||
if (GetStatus() == STATUS_WAIT_JOIN && GetPlayersSize())
|
||||
{
|
||||
ModifyStartDelayTime(diff);
|
||||
|
||||
if (!(m_Events & 0x01))
|
||||
{
|
||||
m_Events |= 0x01;
|
||||
|
||||
if(!SetupBattleGround())
|
||||
{
|
||||
EndNow();
|
||||
return;
|
||||
}
|
||||
|
||||
uint16 i;
|
||||
sLog.outDebug("Alterac Valley: entering state STATUS_WAIT_JOIN ...");
|
||||
// Initial Nodes
|
||||
for(i = 0; i < BG_AV_OBJECT_MAX; i++)
|
||||
SpawnBGObject(i, RESPAWN_ONE_DAY);
|
||||
for(i = BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE ; i++){
|
||||
SpawnBGObject(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION+3*i,RESPAWN_IMMEDIATELY);
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
|
||||
}
|
||||
for(i = BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER ; i++)
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
|
||||
for(i = BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE; i <= BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER ; i++){
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
|
||||
if(i<=BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT)
|
||||
SpawnBGObject(BG_AV_OBJECT_AURA_H_FIRSTAID_STATION+3*GetNodeThroughObject(i),RESPAWN_IMMEDIATELY);
|
||||
}
|
||||
for(i = BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH; i <= BG_AV_OBJECT_TFLAG_A_STONEHEART_BUNKER; i+=2)
|
||||
{
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY); //flag
|
||||
SpawnBGObject(i+16, RESPAWN_IMMEDIATELY); //aura
|
||||
}
|
||||
for(i = BG_AV_OBJECT_TFLAG_H_ICEBLOOD_TOWER; i <= BG_AV_OBJECT_TFLAG_H_FROSTWOLF_WTOWER; i+=2)
|
||||
{
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY); //flag
|
||||
SpawnBGObject(i+16, RESPAWN_IMMEDIATELY); //aura
|
||||
}
|
||||
//snowfall and the doors
|
||||
for(i = BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE; i <= BG_AV_OBJECT_DOOR_A; i++)
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
|
||||
SpawnBGObject(BG_AV_OBJECT_AURA_N_SNOWFALL_GRAVE,RESPAWN_IMMEDIATELY);
|
||||
|
||||
//creatures
|
||||
sLog.outDebug("BG_AV start poputlating nodes");
|
||||
for(BG_AV_Nodes i= BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i )
|
||||
{
|
||||
if(m_Nodes[i].Owner)
|
||||
PopulateNode(i);
|
||||
}
|
||||
//all creatures which don't get despawned through the script are static
|
||||
sLog.outDebug("BG_AV: start spawning static creatures");
|
||||
for(i=0; i < AV_STATICCPLACE_MAX; i++ )
|
||||
AddAVCreature(0,i+AV_CPLACE_MAX);
|
||||
//mainspiritguides:
|
||||
sLog.outDebug("BG_AV: start spawning spiritguides creatures");
|
||||
AddSpiritGuide(7, BG_AV_CreaturePos[7][0], BG_AV_CreaturePos[7][1], BG_AV_CreaturePos[7][2], BG_AV_CreaturePos[7][3], ALLIANCE);
|
||||
AddSpiritGuide(8, BG_AV_CreaturePos[8][0], BG_AV_CreaturePos[8][1], BG_AV_CreaturePos[8][2], BG_AV_CreaturePos[8][3], HORDE);
|
||||
//spawn the marshals (those who get deleted, if a tower gets destroyed)
|
||||
sLog.outDebug("BG_AV: start spawning marshal creatures");
|
||||
for(i=AV_NPC_A_MARSHAL_SOUTH; i<= AV_NPC_H_MARSHAL_WTOWER; i++)
|
||||
AddAVCreature(i,AV_CPLACE_A_MARSHAL_SOUTH+(i-AV_NPC_A_MARSHAL_SOUTH));
|
||||
|
||||
AddAVCreature(AV_NPC_HERALD,AV_CPLACE_HERALD);
|
||||
DoorClose(BG_AV_OBJECT_DOOR_A);
|
||||
DoorClose(BG_AV_OBJECT_DOOR_H);
|
||||
|
||||
SetStartDelayTime(BG_START_DELAY_2M);
|
||||
}
|
||||
// After 1 minute, warning is signalled
|
||||
else if (GetStartDelayTime() <= BG_START_DELAY_1M && !(m_Events & 0x04))
|
||||
{
|
||||
m_Events |= 0x04;
|
||||
SendMessageToAll(LANG_BG_AV_ONEMINTOSTART, CHAT_MSG_BG_SYSTEM_NEUTRAL);
|
||||
}
|
||||
// After 1,5 minute, warning is signalled
|
||||
else if (GetStartDelayTime() <= BG_START_DELAY_1M + BG_START_DELAY_30S && !(m_Events & 0x08))
|
||||
{
|
||||
m_Events |= 0x08;
|
||||
SendMessageToAll(LANG_BG_AV_HALFMINTOSTART, CHAT_MSG_BG_SYSTEM_NEUTRAL);
|
||||
}
|
||||
// After 2 minutes, gates OPEN ! x)
|
||||
else if (GetStartDelayTime() <= 0 && !(m_Events & 0x10))
|
||||
{
|
||||
UpdateWorldState(AV_SHOW_H_SCORE, 1);
|
||||
UpdateWorldState(AV_SHOW_A_SCORE, 1);
|
||||
m_Events |= 0x10;
|
||||
|
||||
SendMessageToAll(LANG_BG_AV_STARTED, CHAT_MSG_BG_SYSTEM_NEUTRAL);
|
||||
PlaySoundToAll(SOUND_BG_START);
|
||||
SetStatus(STATUS_IN_PROGRESS);
|
||||
|
||||
sLog.outDebug("BG_AV: start spawning mine stuff");
|
||||
for(uint16 i= BG_AV_OBJECT_MINE_SUPPLY_N_MIN; i<=BG_AV_OBJECT_MINE_SUPPLY_N_MAX;i++)
|
||||
SpawnBGObject(i,RESPAWN_IMMEDIATELY);
|
||||
for(uint16 i= BG_AV_OBJECT_MINE_SUPPLY_S_MIN; i<=BG_AV_OBJECT_MINE_SUPPLY_S_MAX;i++)
|
||||
SpawnBGObject(i,RESPAWN_IMMEDIATELY);
|
||||
for(uint8 mine = AV_NORTH_MINE; mine <= AV_SOUTH_MINE; mine++) //mine population
|
||||
ChangeMineOwner(mine, AV_NEUTRAL_TEAM,true);
|
||||
DoorOpen(BG_AV_OBJECT_DOOR_H);
|
||||
DoorOpen(BG_AV_OBJECT_DOOR_A);
|
||||
|
||||
|
||||
for(BattleGroundPlayerMap::const_iterator itr = GetPlayers().begin(); itr != GetPlayers().end(); ++itr)
|
||||
if(Player* plr = objmgr.GetPlayer(itr->first))
|
||||
plr->RemoveAurasDueToSpell(SPELL_PREPARATION);
|
||||
}
|
||||
}
|
||||
else if(GetStatus() == STATUS_IN_PROGRESS)
|
||||
if(GetStatus() == STATUS_IN_PROGRESS)
|
||||
{
|
||||
for(uint8 i=0; i<=1;i++)//0=alliance, 1=horde
|
||||
{
|
||||
@@ -470,10 +360,25 @@ void BattleGroundAV::Update(uint32 diff)
|
||||
|
||||
void BattleGroundAV::StartingEventCloseDoors()
|
||||
{
|
||||
DoorClose(BG_AV_OBJECT_DOOR_A);
|
||||
DoorClose(BG_AV_OBJECT_DOOR_H);
|
||||
}
|
||||
|
||||
void BattleGroundAV::StartingEventOpenDoors()
|
||||
{
|
||||
sLog.outDebug("BG_AV: start spawning mine stuff");
|
||||
for(uint16 i= BG_AV_OBJECT_MINE_SUPPLY_N_MIN; i<=BG_AV_OBJECT_MINE_SUPPLY_N_MAX;i++)
|
||||
SpawnBGObject(i,RESPAWN_IMMEDIATELY);
|
||||
for(uint16 i= BG_AV_OBJECT_MINE_SUPPLY_S_MIN; i<=BG_AV_OBJECT_MINE_SUPPLY_S_MAX;i++)
|
||||
SpawnBGObject(i,RESPAWN_IMMEDIATELY);
|
||||
for(uint8 mine = AV_NORTH_MINE; mine <= AV_SOUTH_MINE; mine++) //mine population
|
||||
ChangeMineOwner(mine, AV_NEUTRAL_TEAM,true);
|
||||
|
||||
UpdateWorldState(AV_SHOW_H_SCORE, 1);
|
||||
UpdateWorldState(AV_SHOW_A_SCORE, 1);
|
||||
|
||||
DoorOpen(BG_AV_OBJECT_DOOR_H);
|
||||
DoorOpen(BG_AV_OBJECT_DOOR_A);
|
||||
}
|
||||
|
||||
void BattleGroundAV::AddPlayer(Player *plr)
|
||||
@@ -1345,6 +1250,58 @@ bool BattleGroundAV::SetupBattleGround()
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
uint16 i;
|
||||
sLog.outDebug("Alterac Valley: entering state STATUS_WAIT_JOIN ...");
|
||||
// Initial Nodes
|
||||
for(i = 0; i < BG_AV_OBJECT_MAX; i++)
|
||||
SpawnBGObject(i, RESPAWN_ONE_DAY);
|
||||
for(i = BG_AV_OBJECT_FLAG_A_FIRSTAID_STATION; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_GRAVE ; i++){
|
||||
SpawnBGObject(BG_AV_OBJECT_AURA_A_FIRSTAID_STATION+3*i,RESPAWN_IMMEDIATELY);
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
|
||||
}
|
||||
for(i = BG_AV_OBJECT_FLAG_A_DUNBALDAR_SOUTH; i <= BG_AV_OBJECT_FLAG_A_STONEHEART_BUNKER ; i++)
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
|
||||
for(i = BG_AV_OBJECT_FLAG_H_ICEBLOOD_GRAVE; i <= BG_AV_OBJECT_FLAG_H_FROSTWOLF_WTOWER ; i++){
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
|
||||
if(i<=BG_AV_OBJECT_FLAG_H_FROSTWOLF_HUT)
|
||||
SpawnBGObject(BG_AV_OBJECT_AURA_H_FIRSTAID_STATION+3*GetNodeThroughObject(i),RESPAWN_IMMEDIATELY);
|
||||
}
|
||||
for(i = BG_AV_OBJECT_TFLAG_A_DUNBALDAR_SOUTH; i <= BG_AV_OBJECT_TFLAG_A_STONEHEART_BUNKER; i+=2)
|
||||
{
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY); //flag
|
||||
SpawnBGObject(i+16, RESPAWN_IMMEDIATELY); //aura
|
||||
}
|
||||
for(i = BG_AV_OBJECT_TFLAG_H_ICEBLOOD_TOWER; i <= BG_AV_OBJECT_TFLAG_H_FROSTWOLF_WTOWER; i+=2)
|
||||
{
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY); //flag
|
||||
SpawnBGObject(i+16, RESPAWN_IMMEDIATELY); //aura
|
||||
}
|
||||
//snowfall and the doors
|
||||
for(i = BG_AV_OBJECT_FLAG_N_SNOWFALL_GRAVE; i <= BG_AV_OBJECT_DOOR_A; i++)
|
||||
SpawnBGObject(i, RESPAWN_IMMEDIATELY);
|
||||
SpawnBGObject(BG_AV_OBJECT_AURA_N_SNOWFALL_GRAVE,RESPAWN_IMMEDIATELY);
|
||||
|
||||
//creatures
|
||||
sLog.outDebug("BG_AV start poputlating nodes");
|
||||
for(BG_AV_Nodes i= BG_AV_NODES_FIRSTAID_STATION; i < BG_AV_NODES_MAX; ++i )
|
||||
{
|
||||
if(m_Nodes[i].Owner)
|
||||
PopulateNode(i);
|
||||
}
|
||||
//all creatures which don't get despawned through the script are static
|
||||
sLog.outDebug("BG_AV: start spawning static creatures");
|
||||
for(i=0; i < AV_STATICCPLACE_MAX; i++ )
|
||||
AddAVCreature(0,i+AV_CPLACE_MAX);
|
||||
//mainspiritguides:
|
||||
sLog.outDebug("BG_AV: start spawning spiritguides creatures");
|
||||
AddSpiritGuide(7, BG_AV_CreaturePos[7][0], BG_AV_CreaturePos[7][1], BG_AV_CreaturePos[7][2], BG_AV_CreaturePos[7][3], ALLIANCE);
|
||||
AddSpiritGuide(8, BG_AV_CreaturePos[8][0], BG_AV_CreaturePos[8][1], BG_AV_CreaturePos[8][2], BG_AV_CreaturePos[8][3], HORDE);
|
||||
//spawn the marshals (those who get deleted, if a tower gets destroyed)
|
||||
sLog.outDebug("BG_AV: start spawning marshal creatures");
|
||||
for(i=AV_NPC_A_MARSHAL_SOUTH; i<= AV_NPC_H_MARSHAL_WTOWER; i++)
|
||||
AddAVCreature(i,AV_CPLACE_A_MARSHAL_SOUTH+(i-AV_NPC_A_MARSHAL_SOUTH));
|
||||
AddAVCreature(AV_NPC_HERALD,AV_CPLACE_HERALD);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
+5
-4
@@ -805,14 +805,15 @@ enum TrinityStrings
|
||||
LANG_BG_AV_NODE_TOWER_FROST_W = 1324,
|
||||
LANG_BG_AV_NODE_GRAVE_FROST_HUT = 1325,
|
||||
|
||||
LANG_BG_AV_ONEMINTOSTART = 1326,
|
||||
LANG_BG_AV_HALFMINTOSTART = 1327,
|
||||
LANG_BG_AV_STARTED = 1328,
|
||||
LANG_BG_AV_START_ONE_MINUTE = 1326,
|
||||
LANG_BG_AV_START_HALF_MINUTE = 1327,
|
||||
LANG_BG_AV_HAS_BEGUN = 1328,
|
||||
LANG_BG_AV_A_NEAR_LOSE = 1329,
|
||||
LANG_BG_AV_H_NEAR_LOSE = 1330,
|
||||
LANG_BG_AV_H_CAPTAIN_DEAD = 1331,
|
||||
LANG_BG_AV_A_CAPTAIN_DEAD = 1332,
|
||||
// FREE IDS 1333-1999
|
||||
LANG_BG_AV_START_TWO_MINUTES = 1333,
|
||||
// FREE IDS 1334-1999
|
||||
|
||||
// Ticket Strings 2000-2029
|
||||
LANG_COMMAND_TICKETNEW = 2000,
|
||||
|
||||
Reference in New Issue
Block a user