diff options
author | megamage <none@none> | 2009-02-10 01:16:16 -0600 |
---|---|---|
committer | megamage <none@none> | 2009-02-10 01:16:16 -0600 |
commit | 029554d4e30ea654ac1a4f5362c60d946a80d04f (patch) | |
tree | 970a32f5369752fe8fc4b6a287521b64432ac3d5 /src/game/MovementHandler.cpp | |
parent | 58374f87b4b3eb2f92dfa8f28969b187a544e6b2 (diff) |
[7255] Allows saving characters in Battle Grounds.
* Now player can join to BG after logout during 5 minutes, if BG in progress.
* All players after server crash or restart should appear at the battlemaster
Author: GriffonHeart
--HG--
branch : trunk
Diffstat (limited to 'src/game/MovementHandler.cpp')
-rw-r--r-- | src/game/MovementHandler.cpp | 36 |
1 files changed, 14 insertions, 22 deletions
diff --git a/src/game/MovementHandler.cpp b/src/game/MovementHandler.cpp index 7cc126e965f..4e4dff56a47 100644 --- a/src/game/MovementHandler.cpp +++ b/src/game/MovementHandler.cpp @@ -132,31 +132,23 @@ void WorldSession::HandleMoveWorldportAckOpcode() if(!mEntry->IsMountAllowed()) _player->RemoveSpellsCausingAura(SPELL_AURA_MOUNTED); - // battleground state prepare + // battleground state prepare (in case join to BG), at relogin/tele player not invited // only add to bg group and object, if the player was invited (else he entered through command) - if(_player->InBattleGround() && _player->IsInvitedForBattleGroundInstance(_player->GetBattleGroundId())) + if(_player->InBattleGround()) { - BattleGround *bg = _player->GetBattleGround(); - if(bg) + // cleanup seting if outdated + if(!mEntry->IsBattleGroundOrArena()) { - bg->AddPlayer(_player); - if(bg->GetMapId() == _player->GetMapId()) // we teleported to bg - { - // get the team this way, because arenas might 'override' the teams. - uint32 team = bg->GetPlayerTeam(_player->GetGUID()); - if(!team) - team = _player->GetTeam(); - if(!bg->GetBgRaid(team)) // first player joined - { - Group *group = new Group; - bg->SetBgRaid(team, group); - group->Create(_player->GetGUIDLow(), _player->GetName()); - } - else // raid already exist - { - bg->GetBgRaid(team)->AddMember(_player->GetGUID(), _player->GetName()); - } - } + // Do next only if found in battleground + _player->SetBattleGroundId(0); // We're not in BG. + // reset destination bg team + _player->SetBGTeam(0); + } + // join to bg case + else if(BattleGround *bg = _player->GetBattleGround()) + { + if(_player->IsInvitedForBattleGroundInstance(_player->GetBattleGroundId())) + bg->AddPlayer(_player); } } |