 |
| 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.
|
02/21/07, 6:02 PM
|
#1
|
|
Von Kaiser
|
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?
|
|
|
|
|
|
02/22/07, 9:10 AM
|
#2
|
|
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 =(
|
|
|
|
|
|
02/22/07, 11:02 AM
|
#3
|
|
Von Kaiser
|
Originally Posted by cladhaire
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.
|
|
|
|
|
|
02/22/07, 11:30 AM
|
#4
|
|
Von Kaiser
Night Elf Priest
Stormrage
|
Originally Posted by Ahiru
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.
|
|
|
|
|
|
02/22/07, 4:52 PM
|
#5
|
|
Cilantro es el hombre, con el queso el diablo
|
Originally Posted by cladhaire
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.
|
|
|
|
|
|
02/22/07, 4:53 PM
|
#6
|
|
Von Kaiser
Night Elf Priest
Stormrage
|
If its resisted, there should be a combat log message, and you can alter the account as necessary.
|
|
|
|
|
|
02/22/07, 5:47 PM
|
#7
|
|
Von Kaiser
|
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.
|
|
|
|
|
|
02/22/07, 5:54 PM
|
#8
|
|
Debleated
@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.
|
|
|
|
02/22/07, 6:17 PM
|
#9
|
|
Von Kaiser
|
Originally Posted by Apate
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" 
|
|
|
|
|
|
02/22/07, 6:31 PM
|
#10
|
|
Debleated
@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.
|
|
|
|
02/22/07, 6:42 PM
|
#11
|
|
Von Kaiser
|
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.
|
|
|
|
|
|
02/23/07, 2:39 AM
|
#12
|
|
Piston Honda
|
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.
|
|
|
|
|
|
03/07/07, 7:56 PM
|
#13
|
|
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/
|
|
|
|
|
|
04/23/07, 5:37 AM
|
#14
|
|
Now with 83% more casual
|
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!
|
|
|
|
|
|
|