diff options
| -rw-r--r-- | src/game/BattleGround.cpp | 7 | ||||
| -rw-r--r-- | src/game/Group.cpp | 19 |
2 files changed, 14 insertions, 12 deletions
diff --git a/src/game/BattleGround.cpp b/src/game/BattleGround.cpp index 5a3d36fcb5b..1cc510a35f2 100644 --- a/src/game/BattleGround.cpp +++ b/src/game/BattleGround.cpp @@ -1170,7 +1170,12 @@ void BattleGround::AddOrSetPlayerToCorrectBgGroup(Player *plr, uint64 plr_guid, plr->SetBattleGroundRaid(group, subgroup); } else - GetBgRaid(team)->AddMember(plr_guid, plr->GetName()); + { + group->AddMember(plr_guid, plr->GetName()); + if( Group* originalGroup = plr->GetOriginalGroup() ) + if( originalGroup->IsLeader(plr_guid) ) + group->ChangeLeader(plr_guid); + } } } diff --git a/src/game/Group.cpp b/src/game/Group.cpp index dca1a5ad9b8..f4a977c3d7c 100644 --- a/src/game/Group.cpp +++ b/src/game/Group.cpp @@ -390,19 +390,16 @@ void Group::Disband(bool hideDestroy) continue; //we cannot call _removeMember because it would invalidate member iterator - if (player) + //if we are removing player from battleground raid + if( isBGGroup() ) + player->RemoveFromBattleGroundRaid(); + else { - //if we are removing player from battleground raid - if( isBGGroup() ) - player->RemoveFromBattleGroundRaid(); + //we can remove player who is in battleground from his original group + if( player->GetOriginalGroup() == this ) + player->SetOriginalGroup(NULL); else - { - //we can remove player who is in battleground from his original group - if( player->GetOriginalGroup() == this ) - player->SetOriginalGroup(NULL); - else - player->SetGroup(NULL); - } + player->SetGroup(NULL); } // quest related GO state dependent from raid membership |
