mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
Core/PacketIO: Fixed leaving group not fully removing it clientside
Closes #18744
This commit is contained in:
@@ -58,7 +58,7 @@ Loot* Roll::getLoot()
|
||||
Group::Group() : m_leaderGuid(), m_leaderName(""), m_groupFlags(GROUP_FLAG_NONE),
|
||||
m_dungeonDifficulty(DIFFICULTY_NORMAL), m_raidDifficulty(DIFFICULTY_NORMAL_RAID), m_legacyRaidDifficulty(DIFFICULTY_10_N),
|
||||
m_bgGroup(nullptr), m_bfGroup(nullptr), m_lootMethod(FREE_FOR_ALL), m_lootThreshold(ITEM_QUALITY_UNCOMMON), m_looterGuid(),
|
||||
m_masterLooterGuid(), m_subGroupsCounts(nullptr), m_guid(), m_counter(0), m_maxEnchantingLevel(0), m_dbStoreId(0),
|
||||
m_masterLooterGuid(), m_subGroupsCounts(nullptr), m_guid(), m_maxEnchantingLevel(0), m_dbStoreId(0),
|
||||
m_readyCheckStarted(false), m_readyCheckTimer(0), m_activeMarkers(0)
|
||||
{
|
||||
for (uint8 i = 0; i < TARGET_ICONS_COUNT; ++i)
|
||||
@@ -392,6 +392,7 @@ bool Group::AddMember(Player* player)
|
||||
member.group = subGroup;
|
||||
member.flags = 0;
|
||||
member.roles = 0;
|
||||
member.updateSequenceNumber = 1;
|
||||
member.readyChecked = false;
|
||||
m_memberSlots.push_back(member);
|
||||
|
||||
@@ -801,11 +802,11 @@ void Group::Disband(bool hideDestroy /* = false */)
|
||||
{
|
||||
WorldPackets::Party::PartyUpdate partyUpdate;
|
||||
partyUpdate.PartyFlags = GROUP_FLAG_DESTROYED;
|
||||
partyUpdate.PartyIndex = 1; // 0 = original group, 1 = instance/bg group
|
||||
partyUpdate.PartyIndex = 0; // this was the original group if player->GetGroup() returned nullptr
|
||||
partyUpdate.PartyType = GROUP_TYPE_NONE;
|
||||
partyUpdate.PartyGUID = m_guid;
|
||||
partyUpdate.MyIndex = -1;
|
||||
partyUpdate.SequenceNum = m_counter;
|
||||
partyUpdate.SequenceNum = citr->updateSequenceNumber;
|
||||
player->GetSession()->SendPacket(partyUpdate.Write());
|
||||
}
|
||||
|
||||
@@ -1428,7 +1429,7 @@ void Group::SendUpdateToPlayer(ObjectGuid playerGUID, MemberSlot* slot)
|
||||
partyUpdate.PartyGUID = m_guid;
|
||||
partyUpdate.LeaderGUID = m_leaderGuid;
|
||||
|
||||
partyUpdate.SequenceNum = m_counter++; // 3.3, value increases every time this packet gets sent
|
||||
partyUpdate.SequenceNum = slot->updateSequenceNumber++; // 3.3, value increases every time this packet gets sent
|
||||
|
||||
partyUpdate.MyIndex = -1;
|
||||
uint8 index = 0;
|
||||
|
||||
@@ -218,6 +218,7 @@ class TC_GAME_API Group
|
||||
uint8 group;
|
||||
uint8 flags;
|
||||
uint8 roles;
|
||||
int32 updateSequenceNumber;
|
||||
bool readyChecked;
|
||||
};
|
||||
typedef std::list<MemberSlot> MemberSlotList;
|
||||
@@ -431,7 +432,6 @@ class TC_GAME_API Group
|
||||
BoundInstancesMap m_boundInstances[MAX_DIFFICULTY];
|
||||
uint8* m_subGroupsCounts;
|
||||
ObjectGuid m_guid;
|
||||
uint32 m_counter; // used only in SMSG_GROUP_LIST
|
||||
uint32 m_maxEnchantingLevel;
|
||||
uint32 m_dbStoreId; // Represents the ID used in database (Can be reused by other groups if group was disbanded)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user