Show
Ignore:
Timestamp:
11/19/08 13:22:41 (17 years ago)
Author:
yumileroy
Message:

[svn] -enabled instantiated battlegrounds
-enabled arena matches
-rewritten battleground queuing to support joining as group
-removed queue announcements

Original author: w12x
Date: 2008-10-05 08:48:32-05:00

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/game/BattleGroundNA.cpp

    r2 r9  
    4848        { 
    4949            m_Events |= 0x01; 
     50            // setup here, only when at least one player has ported to the map 
     51            if(!SetupBattleGround()) 
     52            { 
     53                EndNow(); 
     54                return; 
     55            } 
    5056            for(uint32 i = BG_NA_OBJECT_DOOR_1; i <= BG_NA_OBJECT_DOOR_4; i++) 
    5157                SpawnBGObject(i, RESPAWN_IMMEDIATELY); 
     
    7379            for(uint32 i = BG_NA_OBJECT_DOOR_1; i <= BG_NA_OBJECT_DOOR_2; i++) 
    7480                DoorOpen(i); 
     81 
     82            for(uint32 i = BG_NA_OBJECT_BUFF_1; i <= BG_NA_OBJECT_BUFF_2; i++) 
     83                SpawnBGObject(i, 60); 
    7584 
    7685            SendMessageToAll(LANG_ARENA_BEGUN); 
     
    8190                if(Player *plr = objmgr.GetPlayer(itr->first)) 
    8291                    plr->RemoveAurasDueToSpell(SPELL_ARENA_PREPARATION); 
     92 
     93            if(!GetPlayersCountByTeam(ALLIANCE) && GetPlayersCountByTeam(HORDE)) 
     94                EndBattleGround(HORDE); 
     95            else if(GetPlayersCountByTeam(ALLIANCE) && !GetPlayersCountByTeam(HORDE)) 
     96                EndBattleGround(ALLIANCE); 
    8397        } 
    8498    } 
     
    97111 
    98112    m_PlayerScores[plr->GetGUID()] = sc; 
     113 
     114    UpdateWorldState(0xa0f, GetAlivePlayersCountByTeam(ALLIANCE)); 
     115    UpdateWorldState(0xa10, GetAlivePlayersCountByTeam(HORDE)); 
    99116} 
    100117 
    101118void BattleGroundNA::RemovePlayer(Player* /*plr*/, uint64 /*guid*/) 
    102119{ 
    103  
     120    if(GetStatus() == STATUS_WAIT_LEAVE) 
     121        return; 
     122 
     123    UpdateWorldState(0xa0f, GetAlivePlayersCountByTeam(ALLIANCE)); 
     124    UpdateWorldState(0xa10, GetAlivePlayersCountByTeam(HORDE)); 
     125 
     126    if(!GetAlivePlayersCountByTeam(ALLIANCE) && GetPlayersCountByTeam(HORDE)) 
     127        EndBattleGround(HORDE); 
     128    else if(GetPlayersCountByTeam(ALLIANCE) && !GetAlivePlayersCountByTeam(HORDE)) 
     129        EndBattleGround(ALLIANCE); 
    104130} 
    105131 
     
    115141    } 
    116142 
    117     BattleGround::HandleKillPlayer(player, killer); 
    118  
    119     uint32 killer_team_index = GetTeamIndexByTeamId(killer->GetTeam()); 
    120  
    121     ++m_TeamKills[killer_team_index];                       // add kills to killer's team 
    122  
    123     if(m_TeamKills[killer_team_index] >= GetPlayersCountByTeam(player->GetTeam())) 
     143    BattleGround::HandleKillPlayer(player,killer); 
     144 
     145    UpdateWorldState(0xa0f, GetAlivePlayersCountByTeam(ALLIANCE)); 
     146    UpdateWorldState(0xa10, GetAlivePlayersCountByTeam(HORDE)); 
     147 
     148    if(!GetAlivePlayersCountByTeam(ALLIANCE)) 
    124149    { 
    125150        // all opponents killed 
    126         EndBattleGround(killer->GetTeam()); 
    127     } 
     151        EndBattleGround(HORDE); 
     152    } 
     153    else if(!GetAlivePlayersCountByTeam(HORDE)) 
     154    { 
     155        // all opponents killed 
     156        EndBattleGround(ALLIANCE); 
     157    } 
     158} 
     159 
     160bool BattleGroundNA::HandlePlayerUnderMap(Player *player) 
     161{ 
     162    player->TeleportTo(GetMapId(),4055.504395,2919.660645,13.611241,player->GetOrientation(),false); 
     163    return true; 
    128164} 
    129165 
     
    150186} 
    151187 
     188void BattleGroundNA::FillInitialWorldStates(WorldPacket &data) 
     189{ 
     190    data << uint32(0xa0f) << uint32(GetAlivePlayersCountByTeam(ALLIANCE));           // 7 
     191    data << uint32(0xa10) << uint32(GetAlivePlayersCountByTeam(HORDE));           // 8 
     192    data << uint32(0xa11) << uint32(1);           // 9 
     193} 
     194 
    152195void BattleGroundNA::ResetBGSubclass() 
    153196{ 
    154     m_TeamKills[BG_TEAM_ALLIANCE] = 0; 
    155     m_TeamKills[BG_TEAM_HORDE]    = 0; 
     197 
    156198} 
    157199 
     
    159201{ 
    160202    // gates 
    161     if(    !AddObject(BG_NA_OBJECT_DOOR_1, BG_NA_OBJECT_TYPE_DOOR_1, 4031.854f, 2966.833f, 12.6462f, -2.648788f, 0, 0, 0.9697962f, -0.2439165f, RESPAWN_IMMEDIATELY) 
    162         || !AddObject(BG_NA_OBJECT_DOOR_2, BG_NA_OBJECT_TYPE_DOOR_2, 4081.179f, 2874.97f, 12.39171f, 0.4928045f, 0, 0, 0.2439165f, 0.9697962f, RESPAWN_IMMEDIATELY) 
    163         || !AddObject(BG_NA_OBJECT_DOOR_3, BG_NA_OBJECT_TYPE_DOOR_3, 4023.709f, 2981.777f, 10.70117f, -2.648788f, 0, 0, 0.9697962f, -0.2439165f, RESPAWN_IMMEDIATELY) 
    164         || !AddObject(BG_NA_OBJECT_DOOR_4, BG_NA_OBJECT_TYPE_DOOR_4, 4090.064f, 2858.438f, 10.23631f, 0.4928045f, 0, 0, 0.2439165f, 0.9697962f, RESPAWN_IMMEDIATELY)) 
     203    if(    !AddObject(BG_NA_OBJECT_DOOR_1, BG_NA_OBJECT_TYPE_DOOR_1, 4031.854, 2966.833, 12.6462, -2.648788, 0, 0, 0.9697962, -0.2439165, RESPAWN_IMMEDIATELY) 
     204        || !AddObject(BG_NA_OBJECT_DOOR_2, BG_NA_OBJECT_TYPE_DOOR_2, 4081.179, 2874.97, 12.39171, 0.4928045, 0, 0, 0.2439165, 0.9697962, RESPAWN_IMMEDIATELY) 
     205        || !AddObject(BG_NA_OBJECT_DOOR_3, BG_NA_OBJECT_TYPE_DOOR_3, 4023.709, 2981.777, 10.70117, -2.648788, 0, 0, 0.9697962, -0.2439165, RESPAWN_IMMEDIATELY) 
     206        || !AddObject(BG_NA_OBJECT_DOOR_4, BG_NA_OBJECT_TYPE_DOOR_4, 4090.064, 2858.438, 10.23631, 0.4928045, 0, 0, 0.2439165, 0.9697962, RESPAWN_IMMEDIATELY) 
     207    // buffs 
     208        || !AddObject(BG_NA_OBJECT_BUFF_1, BG_NA_OBJECT_TYPE_BUFF_1, 4009.189941, 2895.250000, 13.052700, -1.448624, 0, 0, 0.6626201, -0.7489557, 120) 
     209        || !AddObject(BG_NA_OBJECT_BUFF_2, BG_NA_OBJECT_TYPE_BUFF_2, 4103.330078, 2946.350098, 13.051300, -0.06981307, 0, 0, 0.03489945, -0.9993908, 120)) 
    165210    { 
    166211        sLog.outErrorDb("BatteGroundNA: Failed to spawn some object!");