aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Groups/Group.cpp9
-rw-r--r--src/server/game/Groups/Group.h2
2 files changed, 6 insertions, 5 deletions
diff --git a/src/server/game/Groups/Group.cpp b/src/server/game/Groups/Group.cpp
index 8a0782887a9..6908d7649d3 100644
--- a/src/server/game/Groups/Group.cpp
+++ b/src/server/game/Groups/Group.cpp
@@ -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;
diff --git a/src/server/game/Groups/Group.h b/src/server/game/Groups/Group.h
index 00582262f98..86476d0bb81 100644
--- a/src/server/game/Groups/Group.h
+++ b/src/server/game/Groups/Group.h
@@ -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)