WoWInterface

WoWInterface (https://www.wowinterface.com/forums/index.php)
-   AddOn Help/Support (https://www.wowinterface.com/forums/forumdisplay.php?f=3)
-   -   SPELL_AURA_REFRESH question (https://www.wowinterface.com/forums/showthread.php?t=57329)

merlecorey 08-03-19 03:15 PM

SPELL_AURA_REFRESH question
 
I'm trying to figure out how to track unit auras in 8.x and I've run into something I don't understand.

I have a Ret paladin with the Zeal talent. This talent gives me a stackable buff whenever I cast Judgment. Here's the scenario that makes my head hurt:

* I cast Judgment and get a SPELL_AURA_APPLIED for Zeal.
* I cast Judgment two more times and get a SPELL_AURA_APPLIED_DOSE for each. My Zeal stack is now at the maximum value.

From that point on, further casts of Judgment generate no events for my Zeal buff. I expected to get a SPELL_AURA_REFRESH for Zeal or, well... something to indicate that the buff duration has been refreshed. Nope. The default Blizzard UI reflects the updated expiration properly, but my code doesn't get a CLEU event.

Is there anything I am missing here?

Edit: To clarify, I know SPELL_AURA_REFRESHED is not completely gone: my Judgment casts leave a debuff on the target which gets SPELL_AURA_REFRESHED every time. That's not the problem. The problem is that it's not generated for buffs on me.

d87 08-03-19 07:45 PM

It just doesn't fire refresh event for auto-refreshes or extensions. Been that way since cataclysm i think. There are maybe other cases, but the bottom line is you can't completely rely on CLEU.

merlecorey 08-03-19 07:49 PM

Quote:

Originally Posted by d87 (Post 333054)
It just doesn't fire refresh event for auto-refreshes or extensions. Been that way since cataclysm i think. There are maybe other cases, but the bottom line is you can't completely rely on CLEU.

Any suggestions how to handle it in the least CPU- and resource-intensive manner? I suppose I could always process UNIT_AURA and check for any auras whose expiration time has changed, but that kind of sucks.

d87 08-03-19 08:06 PM

Yes, you need to do both. And to reduce CPU the only thing you can do is to minimize the amount of UnitAura scanning

merlecorey 08-03-19 08:31 PM

Quote:

Originally Posted by d87 (Post 333056)
Yes, you need to do both. And to reduce CPU the only thing you can do is to minimize the amount of UnitAura scanning

I don't see how I can avoid scanning every single aura for that unit on every single UNIT_AURA event, though, if I want to figure out which buffs got refreshed.

d87 08-03-19 08:42 PM

i mean avoid scanning units/guids that do not have existing timers. But it doesn't really matter anyway

EDIT: It is maybe better not to do that, because sometimes you'll need to create timers from UnitAura too, in case it wasn't registered in combat log (like if you reload ui in the middle of combat)

aallkkaa 08-04-19 03:43 AM

I understand your Paladin's Judgment + Zeal is only an example, but it this were to work for that, i might work for all such case...?

Given that your "Judgment casts leave a debuff on the target which gets SPELL_AURA_REFRESHED every time. That's not the problem. The problem is that it's not generated for buffs on" you, could you not track just that Judgment on said target and use that to reset the duration on Zeal?
For this to work for other spells, aside just Zeal, you'd need to have some kind of table linking debuff-on-target to buff-on-self for each such case, but... presuming you had that table, then I believe that would be a less CPU intensive routine.


All times are GMT -6. The time now is 11:33 AM.

vBulletin © 2024, Jelsoft Enterprises Ltd
© 2004 - 2022 MMOUI