Files
pfUI/modules
Brues d6951b386e unitframes/buffwatch/libpredict: route aura reads through C_UnitAuras
ClassicAPI's recent C_UnitAuras additions (sourceUnit / sourceGUID /
non-player expirationTime / the PLAYER filter token) finally cover
everything libdebuff:UnitDebuff and :UnitOwnDebuff were doing — caster
attribution, accurate timing for non-player units, and the own-debuffs
filter. Migrating the remaining callers off the libdebuff readers.

- api/unitframes.lua: collapses the debuff render path's three-branch
  if/else into a single C_UnitAuras.GetAuraDataByIndex with a HARMFUL
  or HARMFUL|PLAYER filter selected by the selfdebuff config; tooltip
  slot-finders match by sourceGUID instead of libdebuff's caster flag;
  custom-debuff indicator scan unifies the same way.
- modules/buffwatch.lua: GetBuffData drops the libdebuff fallback;
  tooltip slot-finder mirrors the unitframes pattern.
- libs/libpredict.lua: drops the orphaned UnitHasBuff slot-loop (no
  callers left).
- api/api.lua: pfUI.api.UnitHasBuff tightens from a HELPFUL iteration
  to a single GetAuraDataBySpellName lookup.

Each site that builds a cooldown ring from expirationTime carries the
talent-extension guard — when expirationTime exceeds the dbc base
duration (e.g. Shadow Affinity → SW:P), clamp start to now and use the
remaining time as the effective duration so CooldownFrame_SetTimer
doesn't get a future start it treats as "not yet begun".
2026-06-24 22:41:13 -05:00
..
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-06-17 20:19:42 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-06-08 11:33:05 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-06-22 11:31:27 -05:00
2026-06-17 20:19:42 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2017-07-19 10:35:01 +02:00
2026-05-27 23:11:44 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-31 13:13:48 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-31 13:18:20 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-29 22:56:12 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-05-25 18:50:53 -05:00
2026-06-07 02:39:53 -05:00