aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/BattleGround.cpp7
-rw-r--r--src/game/Group.cpp19
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