Skip to content
This repository was archived by the owner on Aug 3, 2026. It is now read-only.

EpogArmory v1.5.0 — Stats overview, Guild column, talent tree polish

Choose a tag to compare

@Defcons Defcons released this 05 May 20:35
· 8 commits to main since this release

v1.5.0 — major release.

Stats overview panel, Guild column, talent tree polish, and a tighter inspect frame layout. All built on the v1.4.0 reliability foundation (settle+verify, full-set gate, frame leak fixes).

1. Stats overview panel

A new Stats button on the inspect frame opens a side-panel showing aggregated stats for the active gear set. Layout when fully open: Stats | Inspect | Talents, three docked panels.

Live character-pane snapshot at scan time. Item-only aggregation is wrong for any L60+ character — it misses race+level base attributes, class AP formulas (Hunter ranged AP includes Agility×2), weapon damage with AP scaling, talent multipliers (Lightning Reflexes +15% Agility), and active buff effects. So a Hunter with 339 Agility on the in-game character pane was showing 180 in EpogArmory pre-v1.5.

New CapturePlayerStats(unit) reads from UnitStat / UnitArmor / UnitAttackPower / UnitRangedAttackPower / UnitDamage — these all work on inspected unit tokens (raid5, party1, etc.), so the snapshot fires for both self-scans and inspect-scans of others.

Player-only Blizzard APIs (GetCritChance, GetCombatRatingBonus, GetSpellBonusDamage, GetDodgeChance, etc.) only respond to the implicit "player" — those fields populate when scanning self. For inspect-scans of others, the panel falls back to derived-from-rating sums.

Sections: Base Stats (STR/AGI/STA/INT/SPI/Armor) · Melee (Damage/Speed/Power/Hit/Crit/Haste/Expertise) · Ranged (Power/Hit/Crit/Haste) · Spell (Spell Power/Hit/Crit/Haste/Mp5/Penetration) · Defense (Defense skill/Dodge/Parry/Block/Block Value/Resilience/Armor Pen).

Vanilla + TBC + WotLK gear all sum correctly. Vanilla L60 items express percentages as tooltip text (+1% crit) rather than as rating values — the rating system only arrived in TBC. EpogArmory parses these into entry.tooltipStats already; the new CombinePct helper merges both sources into one displayed % per row:

displayed_pct = sum(rating_value / L80_conversion) for rating keys
              + sum(tooltip_pct_value)              for tooltip keys

So a mixed-era character with +1% crit from Devilsaur Eye plus 30 Crit Rating from a TBC ring shows the combined value correctly.

Wire field 43 carries the encoded snapshot (str=74,agi=339,sta=220,armor=2399,mAP=722,...). Stored as set.charStats, persisted in EpogArmoryDB, eventually flowing to epoglogs.com via the standard upload path. Receivers without the field display the (item-only) indicator in the panel title and use the v1.4.0-style fallbacks.

2. Scanners view: Guild column

New wire field 42 carries the scanner's guild name (GetGuildInfo("player") at scan time). Receivers persist to peerInfo[name].guild and display it in a new column inserted between Name and Contrib in the Scanners-view leaderboard.

Self-row guild populated live from the API since peerInfo never tracks self. Forward-compat: pre-v1.5 senders without field 42 don't blow away existing guild values when they broadcast.

Wire-control characters (^, |) stripped defensively from the guild name before encoding.

3. Talent tree visual pass

Closer to Blizzard's PlayerTalentFrame look:

  • Cell size: 36 → 40 px
  • Horizontal gap: 6 → 12 px
  • Vertical gap: 6 → 14 px (the biggest visual change — Blizzard's tree has noticeably more vertical breathing room than horizontal)
  • Brighter rank-state colors: max-rank cells glow gold (1.0, 0.78, 0.18), in-progress cells use saturated green (0.18, 0.78, 0.22), empty cells stay near-black
  • Frame height bumped from 540 to 600 to fit 9 rows at the new pitch

4. Frame sizing & layout

  • Inspect frame: 320 → 360 wide. Slot icon offsets pushed inward (15 → 35 left/right; 55 → 75 for bottom-row weapons) so items have more breathing room around the edges. Icon spacing in the middle is unchanged — only outer padding grew.
  • Browser frame: 320 → 380 wide to fit the new Guild column.
  • Talent frame: 360×600, drag disabled. Always docks to the inspect frame's right edge via a relative anchor (TOPLEFT → TOPRIGHT), so dragging the inspect frame carries talents along automatically. Previously letting talents drag independently broke the "stick" relationship.
  • Stats button grouped horizontally next to Talents (Talents | Stats row), with the spec-tab row dropped 10px for clearance.

5. Defense section fixes

GetCombatRatingBonus(3/4/5) only returns the rating-derived bonus — a Hunter with no dodge rating still has 4-5% dodge from base Agility, but my v1.4.4 build was displaying that as 0%. Switched to:

  • GetDodgeChance() — total dodge incl. base + Agility + items + buffs
  • GetParryChance() — same for parry
  • GetBlockChance() — same for block
  • UnitDefense("player") — for Defense skill (base + rating modifier)

Display row label changed from "Defense Rating: N (+ skill)" → "Defense: N skill" to match the in-game character pane.

6. Test conclusion: Reality Recalibrators required

A v1.4.1 internal test build disabled the aura interlock to validate whether the v1.4.0 settle (400ms) + verify (1.5s) pipeline was sufficient on its own. Result: no. Ascension/Epoch's transmog override keeps returning cosmetic itemIDs for inspected players past the 1.9s combined window, so without the aura we just broadcast junk gear.

Interlock back on. The REQUIRE_REALITY_AURA flag stays in the code (default true) so re-testing is a one-line revert if server transmog behavior ever changes.

7. Frame leak fixes carried over from v1.4.0

The audit fixes from v1.4.0 are still in place: OnInspectReady's settle/verify timer frames are recycled at module level, the talent panel builds once and reuses, no per-inspect frame leaks.

Backward compatibility

  • Wire format additive. Pre-v1.5 receivers ignore positions 42 (senderGuild) and 43 (charStats) silently. v1.5 receivers handle older payloads cleanly.
  • No DB wipe on update. All accumulated mesh data preserved.
  • Pre-v1.5 cached entries render with v1.4.0-style item-only fallbacks for the new Stats panel. Title shows (item-only) indicator so users know why values look low.
  • Mixed-version mesh works: v1.5 senders carry the new fields, older senders don't, receivers handle both.
  • MigratePlayers continues to handle pre-v0.13 flat entries and v0.13+ unkeyed sets.

Install

Extract EpogArmory.zip to <WoW>/Interface/AddOns/, overwriting any previous version.

After upgrading: /reload. Re-scan yourself (equip-and-unequip any item, or /epogarmory cachebuild) once to populate the new charStats field for your own entry. Existing peers' entries upgrade naturally as they re-scan over time.

Note for epoglogs.com integration

The charStats blob persisted in SavedVariables flows directly into the upload payload — the website can now render real character-pane numbers in the armory view. Field reference and display recommendations are documented in the addon's CapturePlayerStats / EncodeCharStats source. Falls back to item-aggregation when the field is absent (pre-v1.5 entries, or inspect-scans of others where player-only APIs don't fire).