This project is abandoned and its default file will likely not work with the most recent version of World of Warcraft. Whether this project is out of date or its author has marked it as abandoned, this project is no longer maintained.
I haven't found any working DoT timers that I like better, so I did some research and figured out a minor fix to the timers in DotDotDot. Unfortunately, it still gets confused as to who's dots are who's (for example, showing me a warlock's dots sometimes). Anyway, apparently Blizzard changed the UnitDebuff function such that the time returned is now the end time and not the time left. To reflect this change, replace the function DotDotDot:UpdateDebuffs(unit) in the current r74120.11 version of DotDotDot's core.lua with the following:
function DotDotDot:UpdateDebuffs(unit)
self = DotDotDot
if (UnitExists(unit)) then
local currentTime = GetTime()
for num = 1, 40 do
local name, _, texture, applications, _, duration, endTime, timeLeft
name, _, texture, applications, _, duration, endTime = UnitDebuff(unit, num)
if (duration) then
if (self.shortcode[name]) then
timeLeft = endTime - currentTime
guid = (UnitGUID(unit) .. "-" .. self.shortcode[name])
if unit == "target" then
self:ShowCandyBar(self.shortcode[name].." - "..(UnitName(unit) or ""), guid, timeLeft, BS:GetSpellIcon(name), true, self.db.profile.highcolor)
else
self:ShowCandyBar(self.shortcode[name].." - "..(UnitName(unit) or ""), guid, timeLeft, BS:GetSpellIcon(name), false, self.db.profile.basecolor)
end
end
end
end
end
end
Or, just implement this list of changes:
line 4 (391 in core.lua): new line "local currentTime = GetTime()" added
line 6 (393): "endTime," inserted as next to last variable
line 7 (394): "timeLeft" replaced by "endTime"
line 10 (397): new line "timeLeft = endTime - currentTime" added
Think I've fixed the reporting of other players' dots too. Found that there were some new fields added to the UnitDebuff function (such as isMine) (see http://forums.worldofwarcraft.com/thread.html?topicId=10043170854&sid=1 for a full description of 3.0.2 API changes). So, to fix DotDotDot r74120.11, replace the function DotDotDot:UpdateDebuffs(unit) in core.lua with the following:
function DotDotDot:UpdateDebuffs(unit)
self = DotDotDot
if (UnitExists(unit)) then
for num = 1, 40 do
local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitDebuff(unit, num)
if (isMine) then
if (duration) then
if (self.shortcode[name]) then
local guid = (UnitGUID(unit) .. "-" .. self.shortcode[name])
local timeLeft = expirationTime - GetTime()
if unit == "target" then
self:ShowCandyBar(self.shortcode[name].." - "..(UnitName(unit) or ""), guid, timeLeft, BS:GetSpellIcon(name), true, self.db.profile.highcolor)
else
self:ShowCandyBar(self.shortcode[name].." - "..(UnitName(unit) or ""), guid, timeLeft, BS:GetSpellIcon(name), false, self.db.profile.basecolor)
end
end
end
end
end
end
end
Or, implement this list of changes (to the original r74120.11 core.lua):
line 392: replace line with "local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitDebuff(unit, num)"
line 393: replace line with "if (isMine) then"
line 394: "timeLeft" replaced by "endTime"
line 396: insert prefix "local "
line 397: add new line "local timeLeft = expirationTime - GetTime()"
line 405: add new line "end"
My pleasure. It's one of my favorites, too. Hopefully we'll get an official update soon.
Also, just noticed that I have an extra line change listed in my previous post. The change for line 394 should be ignored as it got left in the list by accident from my fist post (but the full function is correct).
same here issues with the timer not working since patch 3.0 fellhounds raise havoc with it and it sticks on a continous count down as with all spells it tracks
function DotDotDot:UpdateDebuffs(unit)
self = DotDotDot
if (UnitExists(unit)) then
local currentTime = GetTime()
for num = 1, 40 do
local name, _, texture, applications, _, duration, endTime, timeLeft
name, _, texture, applications, _, duration, endTime = UnitDebuff(unit, num)
if (duration) then
if (self.shortcode[name]) then
timeLeft = endTime - currentTime
guid = (UnitGUID(unit) .. "-" .. self.shortcode[name])
if unit == "target" then
self:ShowCandyBar(self.shortcode[name].." - "..(UnitName(unit) or ""), guid, timeLeft, BS:GetSpellIcon(name), true, self.db.profile.highcolor)
else
self:ShowCandyBar(self.shortcode[name].." - "..(UnitName(unit) or ""), guid, timeLeft, BS:GetSpellIcon(name), false, self.db.profile.basecolor)
end
end
end
end
end
end
Or, just implement this list of changes:
line 4 (391 in core.lua): new line "local currentTime = GetTime()" added
line 6 (393): "endTime," inserted as next to last variable
line 7 (394): "timeLeft" replaced by "endTime"
line 10 (397): new line "timeLeft = endTime - currentTime" added
function DotDotDot:UpdateDebuffs(unit)
self = DotDotDot
if (UnitExists(unit)) then
for num = 1, 40 do
local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitDebuff(unit, num)
if (isMine) then
if (duration) then
if (self.shortcode[name]) then
local guid = (UnitGUID(unit) .. "-" .. self.shortcode[name])
local timeLeft = expirationTime - GetTime()
if unit == "target" then
self:ShowCandyBar(self.shortcode[name].." - "..(UnitName(unit) or ""), guid, timeLeft, BS:GetSpellIcon(name), true, self.db.profile.highcolor)
else
self:ShowCandyBar(self.shortcode[name].." - "..(UnitName(unit) or ""), guid, timeLeft, BS:GetSpellIcon(name), false, self.db.profile.basecolor)
end
end
end
end
end
end
end
Or, implement this list of changes (to the original r74120.11 core.lua):
line 392: replace line with "local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitDebuff(unit, num)"
line 393: replace line with "if (isMine) then"
line 394: "timeLeft" replaced by "endTime"
line 396: insert prefix "local "
line 397: add new line "local timeLeft = expirationTime - GetTime()"
line 405: add new line "end"
/salute
Also, just noticed that I have an extra line change listed in my previous post. The change for line 394 should be ignored as it got left in the list by accident from my fist post (but the full function is correct).