fix(tracking-bars): track hero-talent spells in both override directions#413
Merged
EllesmereGaming merged 1 commit intoJun 20, 2026
Conversation
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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):
The reverse (create a Death's Advance bar, talent into Death Charge, cast Death Charge) already worked.
Cause
Blizzard's
cooldownInfoalways reports the base spell ininfo.spellID, but only reports the override ininfo.overrideSpellIDwhile 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.baseSpellIDand match against it too:cooldownInfoin the spell picker.MatchFrameToConfig: when a bar is matched via the override while talented, recordinfo.spellIDso it keeps matching after untalenting (this also upgrades bars created before this change, on the next tick while talented).baseSpellIDon the other spell-assignment paths (new-bar reset, popular preset, manual-id popup) to avoid stale values.Testing
Confirmed in-game in both directions:
Bug report
https://discord.com/channels/585577383847788554/1517941986076922059