Instead of unhooking the event when we're dead, just hide the ticker
when dead. This ensures, regardless of the order the events come in
when zoning back into an instance, reviving, etc., the ticker is always
shown when appropriate.
WowAce ticket #316
If we're coming from a custom update func, it could mean that we're
tracking a unit that doesn't get events, like UNIT_AURA, for them. This
includes anything other than player, target, and focus, essentially.
I was tracking updates with two separate variables depending on where
the registration happened. The order that updates ran in was not
reliable, so sometimes one would register and sometimes the other would.
Since only one of them was setting itself as "from update", the behavior
internal to the bar was also inconsistent.
This has been tested on Classic PTR and Retail, but only with a Rogue
character. Don't have a ton of time to do more exhaustive tests right now.
Fixes#11
This change adds support for using LibCasterCasterino to get your
target's casting info to enable the TargetCast module. It's not as
clean as the newer retail native calls but works well enough for
most interrupts.
Note: because LibCasterCasterino is using combat log events to get
casting info if a spell cast starts and is immediately cancelled or
interrupted the log may not get updated and the cast bar will zombie
complete.
LibCasterCasterino can be found at:
https://github.com/rgd87/LibClassicCasterino
* Add cooldowns support on target buffs/debuffs
Duration and expiration times are not set on target buffs/debuffs
when using UnitAura. This change looks up the spellID in
LibClassicDurations and sets the duration and expiry using that
source.
This change enables the cooldown sweep that allows OmniCC to properly
display the countdown of time remaining on the buff/debuff.
Note that this only adds the cooldown on buff/debuffs applied
to the target by the player.
* set LibStub to silently fail if library is missing
Support for cooldown durations on Classic WoW is provided by
LibClassicDurations, which comes with the ClassicAuraDurations
addon. This change prevents IceHUD throwing an error if the
library is missing.
This has been tested on Classic with a Rogue up to level 5 using various modules and casually checked against a few level 1 classes. I'm sure there's a lot more to do here. I also made sure to test on Live.
Where possible I tried to check for API availability rather than specific client versions or program IDs. There are many cases where that's impractical, however, so version/program ID checks were used.
This was tested with:
* Ace3 @r1225
* AceGUI-3.0-SharedMediaWidgets @r61
* LibDBIcon-1.0 @v8.2.0
* LibDogTag-3.0 @v80200.1
* LibDogTag-Unit-3.0 @v80200.1-2-g93a898d-alpha
* LibRangeCheck-2.0 @v4.2.3 (with a couple of local changes)
* LibSharedMedia-3.0 @r113-alpha
If a CD bar was tracking a spell that was currently unknown to the player (such as the not-currently-active variations of Wildfire Bomb for Survival Hunters after first login/UI reload) then the placeholder frost icon would show up instead. The icon was only meant to be used to aid in configuration mode, so now the icon is set to the placeholder icon when config mode is enabled only. Technically we should clear the icon if it's set to the default whenever config mode is exited, but I figure config mode is pretty rare and should be okay for now.
It's still, at it's core, a guess because Blizzard doesn't offer the necessary events to make a reliable decision, so it tends to be wrong semi-frequently in a chain-casting scenario. But it's better than it was.