It looks like the entire game-side code for runes and rune events have been re-done, so this module was failing to properly update rune availability. I've switched to a model of ignoring the rune index coming in from the update event and just rebuilding my internal state of rune availability/cooldown for all runes on each event (sometimes the incoming rune index was 32760 or a huge negative number...looks like garbage values). This is how the built-in rune frame is handling things now as well.
I also tweaked the shine fade-in to not create a new function every shine. Whoops.
All the spellcasting event callbacks need their signatures changed, but I can't cleanly do that without breaking Legion compatibility. So that will have to wait, I think. Castbars seem to be working for now...
The simplest solution is probably to register different callbacks for BfA versus pre-BfA, but that seems ugly.
Updated for:
- SPELL_POWER_* constants becoming Enum.PowerType.*
- Rank no longer existing in return values for UnitAura, UnitBuff, UnitDebuff, UnitCastingInfo, UnitChannelInfo
- UNIT_POWER event becoming UNIT_POWER_UPDATE
- UnitPopupFrames no longer existing
- Removed events: PLAYER_PET_CHANGED, UNIT_MAXPOWER, PET_BAR_CHANGED, UNIT_DYNAMIC_FLAGS
- Texture return value from UnitAura type changing (name -> id)
- All Warlock specializations using soul shards
- Death Knight rune changes
Haven't tested all classes/specializations yet, so I'm sure I missed some stuff.
Probably need to add support for the new circular cooldown wipe flourish added in the base client.
Saw a problem with cooldown flashes being delayed on DK runes becoming available that probably need to be fixed.
Apparently internally Insanity is multiplied by 100 from the value that's actually displayed on the ui (so the internal max for my test character is 10500 while the displayed amount is 105).
For any user that had existing counters (such as anyone who had savedata from before the time that Maelstrom, Lacerate, and Sunder were converted to custom counters automatically) in numeric mode, a 0 or faded graphical icon was showing up all the time after the recent change to enable showing empty counters. Now there's a checkbox for whether you want the empty/0 count to show or not.
For charges, being full is the default state, so we need to treat full the same as health or mana being full. (ticket #231)
Also fixed the "target" variable never getting set on custom counters or custom counter bars because they were overriding the PLAYER_TARGET_CHANGED event that the base class was registering.
Also also fixed numeric display mode for custom counters not using the correct gradient scaling when the number hit 0. It was using the same scaling as graphical mode where 0 displays nothing and needs to be accounted for separately.
This change is potentially contentious because it's a very old default, but with health and power values being so incredibly high in Legion, the shortened form of values is immensely more readable. This change will not affect those who have modified their text settings and the Short form only kicks in when values hit 10,000 or higher.
Somehow even though "maxCount" is forced to a number any time it's configured in the UI, a user ended up with maxCount as a string in his saved variables. The mod was then trying to compare a string to a number and failing, causing a cascade of errors.