Originally Posted by Shkarn
How is it, then, that some timers won't always accurately track the DoTs? Back in early T5, we were having a debuff issue where we thought we were hitting the limit, but found out that the dot timers people were using were dropping the dots before their duration was up. Chronometer was the big culprit of this, but ClassTimers has been (from what we can tell) 100% accurate. If they're using the same API, wouldn't the timers theoretically be 100% accurate all the time, or is there that big of a discrepancy between using the Unit* procedure calls and referencing the combatlog?
Ultimately, I'm aiming to provide a set list of how each of these DoT/HoT timers function for the purpose of finding the ideal timer(s) to use and not drop HoTs or DoTs from the target(s).
|
As funky said, you have to use the Blizzard API for this. The difference between all these timer mods is *which* APIs you use and the logic with which you use them. I haven't investigated all of them, but I would be very curious to see how the timer detection is done for any mod that claims to have 100% correctness. The reason for this is the information exposed by the various APIs varies, and it is very difficult to get a complete picture from the combat log because several relevant events are missing information that Blizzard has, but providing it would totally unbalance things like PvP.
Funky's basic analysis of the two methods is spot on, based on my own experiences with writing a DoT Timer. UnitBuff and UnitDebuff are very complete in their information, but can only be called on targets that can be referenced through tokens like "player", "pet", "target", "raid1", "party3", "party3target", etc. Additionally, they require scanning all the (de)buffs on the target to determine which are yours. The combat log, on the other hand, will provide information about every spell or ability used, but rarely does it ever provide all the information you want in one single event. It's up to the addon author to analyze the information available which involves detecting casts/attacks, determining possible targets, and correlating the sequence of combat log events that correspond to one cast/attack to come up with the right information.
I'm still working out the last few idiosyncrasies of the logic involved, but I almost have a functional DoT Timer that I will make available once I can get through an entire raid or two without it missing things! Everything it does do is correct, but it's missing a couple events here and there, and I don't know why yet (though I have a couple ideas)!
As far as the list goes, DoTimer uses the Blizzard APIs, but I'm unsure which APIs. I do know that last I checked (recently), it did not use 2.4 combat log.