From 9376ef4f5bcde29f7607712fae4310756007a5aa Mon Sep 17 00:00:00 2001 From: balrok Date: Tue, 27 Jan 2009 14:19:12 +0100 Subject: [PATCH] allow .goname and .namego in more battleground cases Signed-off-by: balrok --- src/game/Level1.cpp | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/game/Level1.cpp b/src/game/Level1.cpp index 042827f45..76c4b871d 100644 --- a/src/game/Level1.cpp +++ b/src/game/Level1.cpp @@ -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) -- 2.11.4.GIT