aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/game/BattleGroundAV.cpp187
-rw-r--r--src/game/Language.h9
2 files changed, 77 insertions, 119 deletions
diff --git a/src/game/BattleGroundAV.cpp b/src/game/BattleGroundAV.cpp
index c6e319c37b5..0a1bf72d595 100644
--- a/src/game/BattleGroundAV.cpp
+++ b/src/game/BattleGroundAV.cpp
@@ -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;
}
diff --git a/src/game/Language.h b/src/game/Language.h
index 20fae7a7166..bf0705a35cb 100644
--- a/src/game/Language.h
+++ b/src/game/Language.h
@@ -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,