Handle SMSG_PARTY_MEMBER_STATS to show group health out of visual range

Parse SMSG_PARTY_MEMBER_STATS and SMSG_PARTY_MEMBER_STATS_FULL packets
so party frames display health, power, level, and online status even
when group members are not nearby. Expansion-aware field sizes: uint16
health for Classic/TBC, uint32 for WotLK, plus per-expansion aura and
vehicle seat handling.
This commit is contained in:
Kelsi 2026-02-26 10:25:55 -08:00
parent 1cf485d149
commit a1f73fdd39
4 changed files with 237 additions and 15 deletions

View file

@ -1127,6 +1127,7 @@ private:
void handleGroupList(network::Packet& packet);
void handleGroupUninvite(network::Packet& packet);
void handlePartyCommandResult(network::Packet& packet);
void handlePartyMemberStats(network::Packet& packet, bool isFull);
// ---- Guild handlers ----
void handleGuildInfo(network::Packet& packet);

View file

@ -17,6 +17,19 @@ struct GroupMember {
uint8_t subGroup = 0; // Raid subgroup (0 for party)
uint8_t flags = 0; // Assistant, main tank, etc.
uint8_t roles = 0; // LFG roles (3.3.5a)
// Party member stats (from SMSG_PARTY_MEMBER_STATS)
uint32_t curHealth = 0;
uint32_t maxHealth = 0;
uint8_t powerType = 0;
uint16_t curPower = 0;
uint16_t maxPower = 0;
uint16_t level = 0;
uint16_t zoneId = 0;
int16_t posX = 0;
int16_t posY = 0;
uint16_t onlineStatus = 0; // GROUP_UPDATE_FLAG_STATUS bitmask
bool hasPartyStats = false; // true once we've received stats
};
/**