feat: track and display WotLK server-authoritative combat stats

Adds update field tracking for WotLK secondary combat statistics:
- UNIT_FIELD_ATTACK_POWER / RANGED_ATTACK_POWER (fields 123, 126)
- PLAYER_DODGE/PARRY/BLOCK/CRIT_PERCENTAGE (fields 1025-1029)
- PLAYER_RANGED_CRIT_PERCENTAGE, PLAYER_SPELL_CRIT_PERCENTAGE1 (1030, 1032)
- PLAYER_FIELD_COMBAT_RATING_1 (25 slots at 1231, hit/expertise/haste/etc.)

Both CREATE_OBJECT and VALUES update paths now populate these fields.
The Character screen Stats tab shows them when received from the server,
with graceful fallback when not available (Classic/TBC expansions).

Field indices verified against AzerothCore 3.3.5a UpdateFields.h.
This commit is contained in:
Kelsi 2026-03-13 08:35:18 -07:00
parent ea7b276125
commit c0ffca68f2
7 changed files with 166 additions and 3 deletions

View file

@ -42,6 +42,10 @@ enum class UF : uint16_t {
UNIT_FIELD_STAT4, // Spirit
UNIT_END,
// Unit combat fields (WotLK: PRIVATE+OWNER — only visible for the player character)
UNIT_FIELD_ATTACK_POWER, // Melee attack power (int32)
UNIT_FIELD_RANGED_ATTACK_POWER, // Ranged attack power (int32)
// Player fields
PLAYER_FLAGS,
PLAYER_BYTES,
@ -59,6 +63,15 @@ enum class UF : uint16_t {
PLAYER_EXPLORED_ZONES_START,
PLAYER_CHOSEN_TITLE, // Active title index (-1 = no title)
// Player combat stats (WotLK: PRIVATE — float values)
PLAYER_BLOCK_PERCENTAGE, // Block chance %
PLAYER_DODGE_PERCENTAGE, // Dodge chance %
PLAYER_PARRY_PERCENTAGE, // Parry chance %
PLAYER_CRIT_PERCENTAGE, // Melee crit chance %
PLAYER_RANGED_CRIT_PERCENTAGE, // Ranged crit chance %
PLAYER_SPELL_CRIT_PERCENTAGE1, // Spell crit chance % (first school; 7 consecutive float fields)
PLAYER_FIELD_COMBAT_RATING_1, // First of 25 int32 combat rating slots (CR_* indices)
// GameObject fields
GAMEOBJECT_DISPLAYID,