Cross-posted on the official forums here, before I came across this forum.
I'm constructing an addon to track all effective control-centric effects on myself and my party. Currently, the API seems to be lacking in information about these effects. Currently, we have an event that tells us when a unit has been interrupted, but not the duration. There seems to be no event to tell us when we've been silence. And as for crowd-controls, the only relevant event or API is the new Loss-of-Control mechanism, but that doesn't seem to function for units other than the player -- moreoever, it is not well-integrated into the rest of the API.
I'm putting forth a recommendation for an addition to COMBAT_LOG_EVENT for these types of mechanics, and possibly a supplement to the global API for querying their information.
Currently, if I want to track these things I have to listen to SPELL_AURA_APPLIED and then perform tooltip scanning. This is problematic for three reasons:
* It is very performance-intensive to track every incoming aura application and then scan the tooltips for all possible substrings that match a control-based mechanism. Some of the performance hit can be mitigated by memoizing the results of all tooltips scanned, but that adds a lot of complexity to the already challenging aspect of scanning tooltips to begin with. This part of the code I'm working on is on its own larger and more complex than most of my entire addons.
* Tooltips are not formatted consistently. For instance, an aura tooltip for various fear effects may say "fleeing", "feared", "running in fear" and a host of other things. Tooltips for most root, snare and other ambiguous effects are even more varied. This pretty much ensures that even a well-thought tooltip scanning mechanism will never pick up every effect unless a huge amount of effort is poured into scraping sites like Wowhead for all possible tooltip descriptions.
* This mechanism is not portable across locales, so even after the effort is put in to track control mechanisms off tooltips for an enUS client, the addon will still be totally ineffective for all non-English clients.
Ideally, the additions I'd like to see would be additional events for CLEU which specifically denote control-based mechanics in a way similar to how SPELL_INTERRUPT currently works. One for "SILENCE[D]" and another for "CONTROL" (which throws an argument denoting the type of control -- "STUN", "ROOT", etc).
These events should throw 2 relevant arguments:
* srcSpellID - Denoting which spell caused the effect. Eg the spellID for Improved Counterspell in the instance of "SILENCE[D]" event or the spellID for Sap in the instance of "CONTROL" event.
* destSpellID - The spell ID of the aura which has been applied to the player, so that the duration of the effect itself can be tracked. This is particularly problematic for effects like silences and interrupts, which don't currently always apply a debuff -- giving us no way to track their duration (except hackish attempts at checking cooldowns, which often fail). In lieu of making these debuffs visible, we should then get some sort of argument which we can provide to an API call to see how long is left on the effect.
Optimally similar events can be added to denote when control-based mechanisms fade or are removed, but this isn't necessary since we can just track SPELL_AURA_REMOVED.