Index: src/game/BattleGroundHandler.cpp =================================================================== --- src/game/BattleGroundHandler.cpp (revision 6529) +++ src/game/BattleGroundHandler.cpp (working copy) @@ -87,12 +87,12 @@ if(_player->InBattleGround()) return; - Creature *unit = ObjectAccessor::GetCreature(*_player, guid); + /*Creature *unit = ObjectAccessor::GetCreature(*_player, guid); if(!unit) return; if(!unit->isBattleMaster()) // it's not battlemaster - return; + return;*/ // check Deserter debuff if( !_player->CanJoinToBattleground() ) Index: src/game/Chat.cpp =================================================================== --- src/game/Chat.cpp (revision 6529) +++ src/game/Chat.cpp (working copy) @@ -484,6 +484,7 @@ { "cometome", SEC_ADMINISTRATOR, &ChatHandler::HandleComeToMeCommand, "", NULL }, { "damage", SEC_ADMINISTRATOR, &ChatHandler::HandleDamageCommand, "", NULL }, { "combatstop", SEC_GAMEMASTER, &ChatHandler::HandleCombatStopCommand, "", NULL }, + { "enterbg", SEC_PLAYER, &ChatHandler::HandleEnterBGCommand, "", NULL }, { NULL, 0, NULL, "", NULL } }; Index: src/game/Chat.h =================================================================== --- src/game/Chat.h (revision 6529) +++ src/game/Chat.h (working copy) @@ -362,6 +362,7 @@ bool HandleCastTargetCommand(const char *args); bool HandleComeToMeCommand(const char *args); bool HandleCombatStopCommand(const char *args); + bool HandleEnterBGCommand(const char *args); //! Development Commands bool HandleSetValue(const char* args); Index: src/game/Level0.cpp =================================================================== --- src/game/Level0.cpp (revision 6529) +++ src/game/Level0.cpp (working copy) @@ -29,6 +29,7 @@ #include "Language.h" #include "AccountMgr.h" #include "SystemConfig.h" +#include "BattleGround.h" bool ChatHandler::HandleHelpCommand(const char* args) { @@ -230,3 +231,47 @@ SendSysMessage(LANG_USE_BOL); return true; } + +bool ChatHandler::HandleEnterBGCommand(const char *args) +{ + if (!*args) + return false; + + int bgID; + if(strcmp(args, "ws") == 0) + bgID = BATTLEGROUND_WS; + else if(strcmp(args, "ab") == 0) + bgID = BATTLEGROUND_AB; + else if(strcmp(args, "av") == 0) + bgID = BATTLEGROUND_AV; + else if(strcmp(args, "ey") == 0) + bgID = BATTLEGROUND_EY; + else + return false; + + Player* _player = m_session->GetPlayer(); + uint32 mapID = _player->GetMapId(); + if(mapID != 0 && mapID != 1 && mapID != 530) + { + m_session->SendNotification("You should leave the Instance first."); + SetSentErrorMessage(true); + return false; + } + + BattlemasterListEntry const* bl = sBattlemasterListStore.LookupEntry(bgID); + if(!bl) + return false; + + uint32 level =_player->getLevel(); + if(level < bl->minlvl || level > bl->maxlvl) + { + m_session->SendNotification("You don't meet Battleground level requirements."); + SetSentErrorMessage(true); + return false; + } + + WorldPacket data; + sBattleGroundMgr.BuildBattleGroundListPacket(&data, _player->GetGUID(), _player, bgID); + m_session->SendPacket( &data ); + return true; +}