Conversation
Add an optional Quality of Life feature that shows a compact, independently movable "[icon] 87%" style readout of the lowest durability percent across equipped repairable gear, making it obvious when to repair. - Event driven only (UPDATE_INVENTORY_DURABILITY, PLAYER_ENTERING_WORLD); no OnUpdate, ticker or polling. - Zero cost unless enabled: default off, builds no frame and registers no events until first enabled; getFrame never creates so login-time ApplySavedPositions stays free while disabled. - Reuses house systems: Lite.NewDB (own gearDurability slice on EllesmereUIQoLDB, other QoL data untouched), GetFontPath/SlugFlag fonts, MakeUnlockElement/Unlock Mode for movement and persistence, ShowWidgetTooltip for a per-slot breakdown, DualRow/DependentSetValue options widgets. - Durability maths and white->red warning gradient mirror the DataBars durability block; reuses the DataBars forge glyph. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The on-screen readout only refreshed on UPDATE_INVENTORY_DURABILITY and PLAYER_ENTERING_WORLD, so after gear was damaged the number stayed stale until a /reload (the hover tooltip samples live, which is why it showed the true values). UPDATE_INVENTORY_DURABILITY alone is unreliable for a standalone readout: durability is lost in combat / on death, where the event can fire before the value settles, and the DataBars block only stays current because a co-located time-driven block drives its shared 1s ticker. Re-sample on the concrete durability-change edges instead (still event-driven, no polling): add PLAYER_EQUIPMENT_CHANGED, PLAYER_REGEN_ENABLED, PLAYER_UNGHOST and MERCHANT_CLOSED alongside the existing two events. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
|
Pushed a follow-up fix (fdd93c1): the on-screen readout wasn't refreshing after Root cause: it only re-sampled on Fix: re-sample on the concrete durability-change edges instead, still fully
Retested in-game: the number now updates without a manual reload (most visibly |
|
Hi there, Is there any news or updates on when QoL feature requests such as the above may or may not be included in the main release? Just wondering if I should convert this into a QoL Addon depending on timescales. |
Add an optional Quality of Life feature that shows a compact, independently movable "[icon] 87%" style readout of the lowest durability percent across equipped repairable gear, making it obvious when to repair. - Event driven only (UPDATE_INVENTORY_DURABILITY, PLAYER_ENTERING_WORLD); no OnUpdate, ticker or polling. - Zero cost unless enabled: default off, builds no frame and registers no events until first enabled; getFrame never creates so login-time ApplySavedPositions stays free while disabled. - Reuses house systems: Lite.NewDB (own gearDurability slice on EllesmereUIQoLDB, other QoL data untouched), GetFontPath/SlugFlag fonts, MakeUnlockElement/Unlock Mode for movement and persistence, ShowWidgetTooltip for a per-slot breakdown, DualRow/DependentSetValue options widgets. - Durability maths and white->red warning gradient mirror the DataBars durability block; reuses the DataBars forge glyph. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
The on-screen readout only refreshed on UPDATE_INVENTORY_DURABILITY and PLAYER_ENTERING_WORLD, so after gear was damaged the number stayed stale until a /reload (the hover tooltip samples live, which is why it showed the true values). UPDATE_INVENTORY_DURABILITY alone is unreliable for a standalone readout: durability is lost in combat / on death, where the event can fire before the value settles, and the DataBars block only stays current because a co-located time-driven block drives its shared 1s ticker. Re-sample on the concrete durability-change edges instead (still event-driven, no polling): add PLAYER_EQUIPMENT_CHANGED, PLAYER_REGEN_ENABLED, PLAYER_UNGHOST and MERCHANT_CLOSED alongside the existing two events. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…nter2/EllesmereUI into feature/qol-durability-display
Add an optional Quality of Life feature that shows a compact, independently movable "[icon] 87%" style readout of the lowest durability percent across equipped repairable gear, making it obvious when to repair.
What does this PR do?
Adds an optional Quality of Life feature: a compact, independently movable gear durability display that shows the lowest durability percent across equipped repairable gear, so it's obvious at a glance when to repair.
[forge icon] 87%(icon and percentage each toggleable).section alongside the BattleRes / Bloodlust trackers.
block), a static colour when dynamic is off, and an optional "hide at full".
It reuses the existing durability maths and white->red gradient from the DataBars durability block (so the two readouts always agree) and reuses the DataBars forge glyph. It does not modify or replace the DataBars block; the differentiator is that this is standalone and independently movable without requiring DataBars.
How was it tested?
Tested in-game on live (Retail/Midnight 12.1), no Lua errors:
/reloadrestores position; survives profile switch.Also validated all touched Lua files with lua-language-server
--check(zero diagnostics); ASCII-only, Lua 5.1, nogoto.Screenshots
Before addon activation:

After activation:

Unlock Mode:

Durability Addon displayed:

Detailed - When hovered over:

Checklist
visibilitydefaults toNEVERApply()builds nothing while off, andgetFramenever creates (so login-timeApplySavedPositionsstays free)UPDATE_INVENTORY_DURABILITY+PLAYER_ENTERING_WORLDUIParentchild; noSetScripton Blizzard framesChangelog
12e5cce feat(qol): add standalone movable gear durability display
[icon] 87%readout of the lowest durability across equipped repairable gear.
Dynamic Colour, static Text Colour, Hide at Full, Font Size).
fdd93c1 fix(qol): refresh on all durability-change edges
UPDATE_INVENTORY_DURABILITY, PLAYER_REGEN_ENABLED, PLAYER_UNGHOST,
PLAYER_EQUIPMENT_CHANGED, MERCHANT_CLOSED and PLAYER_ENTERING_WORLD (still
event-driven, no polling).
Quick note on timing: I know CONTRIBUTING.md currently pauses feature requests until a few weeks after the 12.1 launch, with only bug fixes accepted in the meantime. I'm opening this now mainly for visibility and early feedback on the approach rather than to jump the queue.
I'm completely happy to:
For context, I deliberately kept it self-contained and reused the existing DataBars durability maths, the white->red colour model, the forge glyph, Unlock Mode, the house tooltip, and the DualRow options widgets, so it should sit naturally within the existing conventions and stay zero-cost while disabled. If you'd rather see this as a small extension of the DataBars durability block instead of a separate QoL element, I'm glad to rework it that way.
No rush at all on review, and thanks for the great addon.