Elitist Jerks
Register
Blogs
Urban Rivals
Forums
New Posts


Go Back   Elitist Jerks > Public Discussion > User Interface and AddOns
Elitist Jerks Login

gamerDNA Login

Welcome to Elitist Jerks
We're testing some new features on the site regarding OpenID registration and coordination with gamerDNA. If you experience any issues with registering an account, please take the time to fill out a report and send it to this e-mail address. We would appreciate any assistance you could provide in making sure everything is functioning as intended. Thanks!

If this is your first visit, please be sure to check out the FAQ and the forum rules. Users must register to post and new registrations are subject to a one day "mute" period to get acquainted with the community.

Reply
 
LinkBack Thread Tools
Old 02/21/07, 6:02 PM   #1
Ahiru
Von Kaiser
 
Night Elf Rogue
 
Eonar
Tracking Stacked Debuffs

There was some brief discussion of this buried in one of the massive rogue theorycraft threads, but I wanted to break it out to be discussed in a little more detail. The question is: Given a debuff that stacks up to N times, but gives a separate stack to each player that applies the debuff, can a mod accurately track how many stacks a particular player has up? If so, how? Specifically, I want to apply this to Deadly Poison for rogues, so the player can know when it's best to use Envenom.

Possible methods:
1) Spellcast events. The problem is that these events don't fire when your stack is maxed and the spellcast only resets the debuff duration, so an alternate method is needed to reset the mod's debuff timer in that case.
2) Combat log. For stacking DoTs like Deadly Poison, the amount of damage being dealt will indicate how many stacks are up at any given time. While this is useful, it doesn't let you know if the debuff fades, unless you determine that by figuring out that no tick has occurred in the last N seconds. You'd have to check against the last recorded tick pretty frequently for it to be accurate.
3) Charges. This method is very specific to rogue poisons, but would it be possible to track when a charge of the poison is consumed? Is there an event that fires when this happens, or would you need to periodically check how many charges are left?

For the specific case of Deadly Poison, a combination of the first and third methods might do everything needed, but I'm not sure how to implement checking poison charges, let alone how to make the thing more generic. Any other mod-writers out there have ideas?
 
User is offline.
Reply With Quote
Old 02/22/07, 9:10 AM   #2
cladhaire
Von Kaiser
 
Night Elf Priest
 
Stormrage
As you know, you can easily tell the count of each seperate stack of poison, but its difficult to be able to tell which is yours (Druids and priests have similiar issues tracking their heals over time, but that's more for informational purposes than anything. As you state, the combat log isn't useful as a reminder, since you don't get any information about the debuff being dispelled, etc.

Personally, I would find the most reliable way to determine that YOU have applied deadly poison (there should be a combat log entry if I remember correctly) and in some frame, display each tick of the poison (including the damage). As for tracking charges used, you should be able to use a throttled OnUpdate, and as long as you're only working on one target you should be able to reliably guess how many your stack has on it.

_ending_ your count is the really difficult part =(
 
User is offline.
Reply With Quote
Old 02/22/07, 11:02 AM   #3
Ahiru
Von Kaiser
 
Night Elf Rogue
 
Eonar
Originally Posted by cladhaire View Post
Personally, I would find the most reliable way to determine that YOU have applied deadly poison (there should be a combat log entry if I remember correctly) and in some frame, display each tick of the poison (including the damage).
Even in the combat log, there is no message for an application when you already have a five-stack

_ending_ your count is the really difficult part =(
Well, I guess a 12-second timer would suffice for PVE, if you refresh it every time the poison procs (using charges to know when a proc has occurred since you don't always get the spellcast event). In PVP cleansing is much more common and I'm not sure if there is a reliable way to track that, but even if I can get something that only works for PVE, that would be some progress.
 
User is offline.
Reply With Quote
Old 02/22/07, 11:30 AM   #4
cladhaire
Von Kaiser
 
Night Elf Priest
 
Stormrage
Originally Posted by Ahiru View Post
Even in the combat log, there is no message for an application when you already have a five-stack
Understood, but its the only reliable way to know that you've put the debuff on the mob to begin with, i.e. when to start your counting.

Well, I guess a 12-second timer would suffice for PVE, if you refresh it every time the poison procs (using charges to know when a proc has occurred since you don't always get the spellcast event). In PVP cleansing is much more common and I'm not sure if there is a reliable way to track that, but even if I can get something that only works for PVE, that would be some progress.
You could make it relatively low overhead and start a 12 second timer on the combat log message, and check every 1.0 seconds to see how many charges are left on your poison, and reset the timer if necessary. It won't be precise, but would give you a good idea of how many you have on the stack, and when it will expire.
 
User is offline.
Reply With Quote
Old 02/22/07, 4:52 PM   #5
Twid
Cilantro es el hombre, con el queso el diablo
 
Twid's Avatar
 
Human Warrior
 
Hyjal
Originally Posted by cladhaire View Post
Understood, but its the only reliable way to know that you've put the debuff on the mob to begin with, i.e. when to start your counting.



You could make it relatively low overhead and start a 12 second timer on the combat log message, and check every 1.0 seconds to see how many charges are left on your poison, and reset the timer if necessary. It won't be precise, but would give you a good idea of how many you have on the stack, and when it will expire.
Wouldn't this not work for charges that are expended, but resisted? If applications can indeed be resisted that is.
 
User is online.
Reply With Quote
Old 02/22/07, 4:53 PM   #6
cladhaire
Von Kaiser
 
Night Elf Priest
 
Stormrage
If its resisted, there should be a combat log message, and you can alter the account as necessary.
 
User is offline.
Reply With Quote
Old 02/22/07, 5:47 PM   #7
Ahiru
Von Kaiser
 
Night Elf Rogue
 
Eonar
Resists could present a problem to the method of tracking charges with OnUpdate. If your OnUpdate code resets the timer whenever a charge is used, the code to handle a resist can't "un-reset" the timer because you won't know how much time should be left.

The resist handler could set a flag when a resist occurs, and OnUpdate could check that, but that only works if the resist handler is called before OnUpdate. If OnUpdate is throttled to 1 second, the problem situation is unlikely to happen, but still possible.
 
User is offline.
Reply With Quote
Old 02/22/07, 5:54 PM   #8
Apate
Debleated
 
Apate's Avatar
 
@ChickenArise
Night Elf Warlock
 
No WoW Account
Couldn't the resist handler perform the same task as an OnUpdate, to ensure that the work is done? Then the OnUpdate code could handle it accordingly via some flag.

See you, auntie.
 
User is online.
Reply With Quote
Old 02/22/07, 6:17 PM   #9
Ahiru
Von Kaiser
 
Night Elf Rogue
 
Eonar
Originally Posted by Apate View Post
Couldn't the resist handler perform the same task as an OnUpdate, to ensure that the work is done? Then the OnUpdate code could handle it accordingly via some flag.
You'd still need the flag to be set before OnUpdate figures out that a charge was consumed. Otherwise you could have the following sequence of events:
1) Poison procs and is resisted, using a charge and writing a combat log message.
2) OnUpdate happens, we see that a charge is used and reset our timer.
3) Combat log message handler runs, sets "resisted flag" and now we're in a broken state for the next proc.

Like I said, those events are unlikely to occur in that order, so maybe the mod can just come with a disclaimer, "Slightly less than perfect"
 
User is offline.
Reply With Quote
Old 02/22/07, 6:31 PM   #10
Apate
Debleated
 
Apate's Avatar
 
@ChickenArise
Night Elf Warlock
 
No WoW Account
If that sequence of events did occur, could the message handler check the time of the last OnUpdate, compare the charges used, last update, and last resist times to determine if you are in a bugged state? If so, I would think that creating a copy of the timer at each reset and perhaps storing a 'time of reset' value could "un-reset" the timer, or would the asynchronous nature of the events leave you with still not enough information?

See you, auntie.
 
User is online.
Reply With Quote
Old 02/22/07, 6:42 PM   #11
Ahiru
Von Kaiser
 
Night Elf Rogue
 
Eonar
You'd have to store a time of last reset, time the poison would have expired before that reset, time of last charge used, and time of last resist, then match the resist time and the charge-used time to within some margin of error. Definitely doable, but I'd love to find a simpler way I might just test it out under the assumption that the resist handler will always occur first, and see if I can actually replicate the bad situation before going to any great lengths to fix it.
 
User is offline.
Reply With Quote
Old 02/23/07, 2:39 AM   #12
jaske
Piston Honda
 
Human Rogue
 
Blackrock
Since getting Shiv ive been searching for a mod that tracks deadly, its so anoying trying to keep track of the debuff on 25man bosses. Something like the old Disco Dice timer bar would be perfect.
 
User is offline.
Reply With Quote
Old 03/07/07, 7:56 PM   #13
Jo_
Piston Honda
 
Undead Priest
 
Magtheridon
I'm pretty sure Dotimer would be able to do what you want. In my brief time as raid dps I fell instantly in love with it. Most addons starts timers where this one actualy keeps tracks of what goes on after it's cast meaning if it's dispeled/cleansed/whatever it will reflect this in real time. Sounds like i'm selling it but i got pretty impressed. It did take a truck load of memory for me though.

http://www-en.curse-gaming.com/files.../3260/dotimer/
 
User is offline.
Reply With Quote
Old 04/23/07, 5:37 AM   #14
Freddie
Now with 83% more casual
 
Freddie's Avatar
 
Tauren Druid
 
Mal'Ganis
Sorry for the thread necromancy, but I came across this info while catching up on blue posts:

Originally Posted by Slouken
* UPDATED - name, rank, icon, count, duration, timeLeft = UnitBuff("target", i) -- Now returns duration and timeLeft for buffs you can cast.
* UPDATED - name, rank, icon, count, debuffType, duration, timeLeft = UnitDebuff("target", i); -- Now returns duration and timeLeft in some situations (?need details?).

The duration and timeleft are set if they are buffs/debuffs that you cast. The return values are now sorted so your buffs and debuffs are returned in the first indices. (e.g. yours, yours, others, ...)
It looks like rogues will now be able to find out some useful info, including how many charges _your_ Deadly Poison has on the mob, and the expiry time of all sorts of poisons (Crippling and Mind Numbing being the ones I am interested in). My alt is excited!
 
User is offline.
Reply With Quote
Reply

Go Back   Elitist Jerks > Public Discussion > User Interface and AddOns

Thread Tools

Similar Threads
Thread Thread Starter Forum Replies Last Post
LF mods to track ALL debuffs and ALL buffs. Dappercad User Interface and AddOns 3 03/26/07 2:17 PM
Tracking multiple debuffs Demi9OD User Interface and AddOns 10 03/20/07 6:26 PM
Standard raid debuffs? Bryne Public Discussion 23 02/20/07 5:18 PM
Debuffs on Raid Bosses Liandra Public Discussion 1 08/06/06 7:09 PM
Threat and +Damage Debuffs Shivers Public Discussion 5 03/10/06 9:42 AM