Repository navigation
EpogArmory v1.5.0 — Stats overview, Guild column, talent tree polish
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 | Statsrow), 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 + buffsGetParryChance()— same for parryGetBlockChance()— same for blockUnitDefense("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.
MigratePlayerscontinues 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).