allow .goname and .namego in more battleground cases

Signed-off-by: balrok <der-coole-carl@gmx.net>
This commit is contained in:
balrok 2009-01-27 14:19:12 +01:00 committed by VladimirMangos
parent 804166739d
commit 22cb305002

View file

@ -365,10 +365,23 @@ bool ChatHandler::HandleNamegoCommand(const char* args)
if(pMap->IsBattleGroundOrArena())
{
// cannot summon to bg
PSendSysMessage(LANG_CANNOT_SUMMON_TO_BG,nameLink.c_str());
SetSentErrorMessage(true);
return false;
// only allow if gm mode is on
if (!chr->isGameMaster())
{
PSendSysMessage(LANG_CANNOT_GO_TO_BG_GM,chr->GetName());
SetSentErrorMessage(true);
return false;
}
// if both players are in different bgs
else if (chr->GetBattleGroundId() && m_session->GetPlayer()->GetBattleGroundId() != chr->GetBattleGroundId())
{
PSendSysMessage(LANG_CANNOT_GO_TO_BG_FROM_BG,chr->GetName());
SetSentErrorMessage(true);
return false;
}
// all's well, set bg id
// when porting out from the bg, it will be reset to 0
chr->SetBattleGroundId(m_session->GetPlayer()->GetBattleGroundId());
}
else if(pMap->IsDungeon())
{
@ -475,8 +488,8 @@ bool ChatHandler::HandleGonameCommand(const char* args)
SetSentErrorMessage(true);
return false;
}
// if already in a bg, don't let port to other
else if (_player->GetBattleGroundId())
// if both players are in different bgs
else if (_player->GetBattleGroundId() && _player->GetBattleGroundId() != chr->GetBattleGroundId())
{
PSendSysMessage(LANG_CANNOT_GO_TO_BG_FROM_BG,chrNameLink.c_str());
SetSentErrorMessage(true);
@ -486,9 +499,7 @@ bool ChatHandler::HandleGonameCommand(const char* args)
// when porting out from the bg, it will be reset to 0
_player->SetBattleGroundId(chr->GetBattleGroundId());
}
else if(cMap->IsDungeon())
Map* cMap = chr->GetMap();
if(cMap->Instanceable())
else if(cMap->IsDungeon() && cMap->Instanceable())
{
// we have to go to instance, and can go to player only if:
// 1) we are in his group (either as leader or as member)