[7455] Implemented condition that player can be in 2 groups in 1 time - BG raid and normal group / raid. Author: Triply
Patch is tested, but can cause problems / unexpected behaviour.
TODO: set raid leader of battleground raid to raid leader who entered BG
TODO: when player leaves group, he is removed from GroupQueueInfo, and for him is created new GroupQueueInfo in normal queue.
Signed-off-by: Triply <[email protected]>
--HG--
branch : trunk
This commit is contained in:
+38
-2
@@ -12590,7 +12590,7 @@ void Player::SendNewItem(Item *item, uint32 count, bool received, bool created,
|
||||
data << GetItemCount(item->GetEntry()); // count of items in inventory
|
||||
|
||||
if (broadcast && GetGroup())
|
||||
GetGroup()->BroadcastPacket(&data);
|
||||
GetGroup()->BroadcastPacket(&data, true);
|
||||
else
|
||||
GetSession()->SendPacket(&data);
|
||||
}
|
||||
@@ -18943,7 +18943,8 @@ void Player::ClearComboPoints()
|
||||
|
||||
void Player::SetGroup(Group *group, int8 subgroup)
|
||||
{
|
||||
if(group == NULL) m_group.unlink();
|
||||
if(group == NULL)
|
||||
m_group.unlink();
|
||||
else
|
||||
{
|
||||
// never use SetGroup without a subgroup unless you specify NULL for group
|
||||
@@ -20059,6 +20060,41 @@ PartyResult Player::CanUninviteFromGroup() const
|
||||
return PARTY_RESULT_OK;
|
||||
}
|
||||
|
||||
void Player::SetBattleGroundRaid(Group* group, int8 subgroup)
|
||||
{
|
||||
//we must move references from m_group to m_originalGroup
|
||||
SetOriginalGroup(GetGroup(), GetSubGroup());
|
||||
|
||||
m_group.unlink();
|
||||
m_group.link(group, this);
|
||||
m_group.setSubGroup((uint8)subgroup);
|
||||
}
|
||||
|
||||
void Player::RemoveFromBattleGroundRaid()
|
||||
{
|
||||
//remove existing reference
|
||||
m_group.unlink();
|
||||
if( Group* group = GetOriginalGroup() )
|
||||
{
|
||||
m_group.link(group, this);
|
||||
m_group.setSubGroup(GetOriginalSubGroup());
|
||||
}
|
||||
SetOriginalGroup(NULL);
|
||||
}
|
||||
|
||||
void Player::SetOriginalGroup(Group *group, int8 subgroup)
|
||||
{
|
||||
if( group == NULL )
|
||||
m_originalGroup.unlink();
|
||||
else
|
||||
{
|
||||
// never use SetOriginalGroup without a subgroup unless you specify NULL for group
|
||||
assert(subgroup >= 0);
|
||||
m_originalGroup.link(group, this);
|
||||
m_originalGroup.setSubGroup((uint8)subgroup);
|
||||
}
|
||||
}
|
||||
|
||||
void Player::UpdateUnderwaterState( Map* m, float x, float y, float z )
|
||||
{
|
||||
LiquidData liquid_status;
|
||||
|
||||
Reference in New Issue
Block a user