Skip to content

fix(tracking-bars): track hero-talent spells in both override directions#413

Merged
EllesmereGaming merged 1 commit into
EllesmereGaming:mainfrom
nulltyto:bugfix/8.2.3-tracking-bar-talent-overwrite
Jun 20, 2026
Merged

fix(tracking-bars): track hero-talent spells in both override directions#413
EllesmereGaming merged 1 commit into
EllesmereGaming:mainfrom
nulltyto:bugfix/8.2.3-tracking-bar-talent-overwrite

Conversation

@nulltyto

Copy link
Copy Markdown
Contributor

Summary

A tracking bar created for a hero-talent override spell stopped showing once the talent was removed, even though the base spell is what then casts. A bar created for the base spell already worked when talented into the override — so the behaviour was asymmetric.

Repro (from the bug report — DK Death Charge / Death's Advance):

  1. Talent into Death Charge, create a Death Charge tracking bar.
  2. Untalent Death Charge.
  3. Cast Death's Advance → bar did not show (bug).

The reverse (create a Death's Advance bar, talent into Death Charge, cast Death Charge) already worked.

Cause

Blizzard's cooldownInfo always reports the base spell in info.spellID, but only reports the override in info.overrideSpellID while the talent is active. So a base-saved bar matched in every talent state, while an override-saved bar matched only while talented.

(Note: C_Spell.GetOverrideSpell(id, 0, false) does not resolve the override statically when untalented in-client, so it can't be used to normalize the two forms.)

Fix

Persist the base spell id on the bar config as cfg.baseSpellID and match against it too:

  • Capture at pick time from the live cooldownInfo in the spell picker.
  • Self-healing backfill in MatchFrameToConfig: when a bar is matched via the override while talented, record info.spellID so it keeps matching after untalenting (this also upgrades bars created before this change, on the next tick while talented).
  • Clear baseSpellID on the other spell-assignment paths (new-bar reset, popular preset, manual-id popup) to avoid stale values.

Testing

Confirmed in-game in both directions:

  • Override bar (Death Charge) → untalent → cast Death's Advance → shows ✅
  • Base bar (Death's Advance) → talent into Death Charge → cast Death Charge → shows ✅

Bug report

https://discord.com/channels/585577383847788554/1517941986076922059

A tracking bar saved for a hero-talent override spell (e.g. DK "Death
Charge") stopped showing once the talent was removed, even though casting
the base spell ("Death's Advance") should still drive it. A bar saved for
the base spell already worked when talented into the override, so the
behaviour was asymmetric.

Cause: Blizzard's cooldownInfo always reports the base in info.spellID but
only reports the override in info.overrideSpellID WHILE the talent is
active. So a base-saved bar matched in every state, while an override-saved
bar matched only while talented.

Fix: persist the base spell id on the bar config as cfg.baseSpellID and
match against it too.
- Capture at pick time from the live cooldownInfo (spell picker).
- Self-healing backfill in MatchFrameToConfig: when matched via the
  override while talented, record info.spellID so the bar keeps matching
  after untalenting (also upgrades bars created before this change).
- Clear baseSpellID on the other spell-assignment paths (new-bar reset,
  popular preset, manual-id popup) to avoid stale values.

Confirmed in-game in both directions.
@EllesmereGaming EllesmereGaming merged commit 8d1152c into EllesmereGaming:main Jun 20, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants