Reply
Thread Tools Display Modes
Unread 12-18-12, 12:28 AM   #1
nefftd
A Murloc Raider
AddOn Author - Click to view addons
Join Date: Mar 2012
Posts: 4
CLEU: CCs, silences, interrupts

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.
nefftd is offline   Reply With Quote
Unread 12-18-12, 12:33 AM   #2
Phanx
A Pyroguard Emberseer
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 4,409
Originally Posted by nefftd View Post
Currently, if I want to track these things I have to listen to SPELL_AURA_APPLIED and then perform tooltip scanning.
Why do you need to perform tooltip scanning? The list of auras that cause a Fear effect, for example, is finite and known; if your only concern is PvP, the list is even smaller. You can just build a precompiled table of Fear auras in "[id]=true" format, and then check "if FearAuras[id] then" inside your CLEU handler to see if the aura that was applied is a Fear effect. Since this uses spell IDs, not spell names or tooltip text, it is also completely locale-independent.
__________________
Author/maintainer of Grid, PhanxChat, ShieldsUp, and many more.
Troubleshoot an addonTurn any code into an addonMore addon resources
Need help with your code? Post all of your actual code! Attach or paste your files.
Please don’t PM me about addon bugs or code questions. Post a comment or forum thread instead!
Phanx is offline   Reply With Quote
Unread 12-18-12, 12:41 AM   #3
nefftd
A Murloc Raider
AddOn Author - Click to view addons
Join Date: Mar 2012
Posts: 4
Originally Posted by Phanx View Post
Why do you need to perform tooltip scanning? The list of auras that cause a Fear effect, for example, is finite and known; if your only concern is PvP, the list is even smaller. You can just build a precompiled table of Fear auras in "[id]=true" format, and then check "if FearAuras[id] then" inside your CLEU handler to see if the aura that was applied is a Fear effect. Since this uses spell IDs, not spell names or tooltip text, it is also completely locale-independent.
This is true, but it's not necessarily an easy task to compile and maintain a list of those spell-IDs. That also doesn't solve the problem of silence and interrupt effects which do not have a relevant debuff. If I were to maintain said table I can also maintain a list of their durations, but unless it's changed silences are on diminishing returns. It might not be impossible to still track their effect (assuming I could get a solid indication when they're applied), but at that point the complexity goes up a lot.

This absolutely just seems like something that is missing in the API. Mechanism-based information would be very useful to include in CLEU. After all, they recently supplemented SPELL_AURA_APPLIED and UnitAura to provide the remaining absorption amount on shields. Why not give us relevant info on some other mechanics which are both equally useful, and equally challenging to otherwise keep track of?
nefftd is offline   Reply With Quote
Unread 12-18-12, 01:32 AM   #4
Phanx
A Pyroguard Emberseer
 
Phanx's Avatar
AddOn Author - Click to view addons
Join Date: Mar 2006
Posts: 4,409
I agree that it would make sense to provide that information through the API, but at least keeping track of fear, stun, silence, and other effects yourself is more tedious (datamining Wowhead by hand or with a script) than actually difficult.
__________________
Author/maintainer of Grid, PhanxChat, ShieldsUp, and many more.
Troubleshoot an addonTurn any code into an addonMore addon resources
Need help with your code? Post all of your actual code! Attach or paste your files.
Please don’t PM me about addon bugs or code questions. Post a comment or forum thread instead!
Phanx is offline   Reply With Quote
Reply

Go BackWoWInterface » Developer Discussions » Wish List » CLEU: CCs, silences, interrupts

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off