diff --git a/curses.lua b/curses.lua index 9b5fe92..3f80559 100644 --- a/curses.lua +++ b/curses.lua @@ -76,25 +76,23 @@ function curses:LoadCurses() end end -function curses:GetCurseDuration(curseSpellID) - if playerClassName == "WARLOCK" and curses.trackedCurseIds[curseSpellID].rapid_deterioration then - -- scan spellbook for duration in case they have haste talent - local nameRank = curses.trackedCurseIds[curseSpellID].name .. "Rank " .. curses.trackedCurseIds[curseSpellID].rank - local spellSlot = curses.trackedCurseNameRanksToSpellSlots[nameRank] +function curses:ScanTooltipForDuration(curseSpellID) + -- scan spellbook for duration in case they have haste talent + local nameRank = curses.trackedCurseIds[curseSpellID].name .. "Rank " .. curses.trackedCurseIds[curseSpellID].rank + local spellSlot = curses.trackedCurseNameRanksToSpellSlots[nameRank] - if spellSlot then - Cursive.core.tooltipScan:SetOwner(Cursive.core.tooltipScan, "ANCHOR_NONE") - Cursive.core.tooltipScan:ClearLines() - Cursive.core.tooltipScan:SetSpell(spellSlot, BOOKTYPE_SPELL) - local numLines = Cursive.core.tooltipScan:NumLines() - if numLines and numLines > 0 then - -- get the last line - local text = getglobal("CursiveTooltipScan" .. "TextLeft" .. numLines):GetText() - if text then - local _, _, duration = string.find(text, L["curse_duration_format"]) - if duration then - return tonumber(duration) - end + if spellSlot then + Cursive.core.tooltipScan:SetOwner(Cursive.core.tooltipScan, "ANCHOR_NONE") + Cursive.core.tooltipScan:ClearLines() + Cursive.core.tooltipScan:SetSpell(spellSlot, BOOKTYPE_SPELL) + local numLines = Cursive.core.tooltipScan:NumLines() + if numLines and numLines > 0 then + -- get the last line + local text = getglobal("CursiveTooltipScan" .. "TextLeft" .. numLines):GetText() + if text then + local _, _, duration = string.find(text, L["curse_duration_format"]) + if duration then + return tonumber(duration) end end end @@ -103,6 +101,14 @@ function curses:GetCurseDuration(curseSpellID) return curses.trackedCurseIds[curseSpellID].duration end +function curses:GetCurseDuration(curseSpellID) + if curses.trackedCurseIds[curseSpellID].variable_duration then + return curses:ScanTooltipForDuration(curseSpellID) + end + + return curses.trackedCurseIds[curseSpellID].duration +end + function curses:ScanGuidForCurse(guid, curseSpellID) for i = 1, 16 do local _, _, _, spellID = UnitDebuff(guid, i) diff --git a/spells/druid.lua b/spells/druid.lua index dc8084a..29c5a37 100644 --- a/spells/druid.lua +++ b/spells/druid.lua @@ -31,34 +31,34 @@ function getDruidSpells() [18657] = { name = L["Hibernate"], rank = 2, duration = 30 }, [18658] = { name = L["Hibernate"], rank = 3, duration = 40 }, - [5570] = { name = L["Insect Swarm"], rank = 1, duration = 12 }, - [24974] = { name = L["Insect Swarm"], rank = 2, duration = 12 }, - [24975] = { name = L["Insect Swarm"], rank = 3, duration = 12 }, - [24976] = { name = L["Insect Swarm"], rank = 4, duration = 12 }, - [24977] = { name = L["Insect Swarm"], rank = 5, duration = 12 }, + [5570] = { name = L["Insect Swarm"], rank = 1, duration = 12, variable_duration = true }, + [24974] = { name = L["Insect Swarm"], rank = 2, duration = 12, variable_duration = true }, + [24975] = { name = L["Insect Swarm"], rank = 3, duration = 12, variable_duration = true }, + [24976] = { name = L["Insect Swarm"], rank = 4, duration = 12, variable_duration = true }, + [24977] = { name = L["Insect Swarm"], rank = 5, duration = 12, variable_duration = true }, - [8921] = { name = L["Moonfire"], rank = 1, duration = 9 }, - [8924] = { name = L["Moonfire"], rank = 2, duration = 12 }, - [8925] = { name = L["Moonfire"], rank = 3, duration = 12 }, - [8926] = { name = L["Moonfire"], rank = 4, duration = 12 }, - [8927] = { name = L["Moonfire"], rank = 5, duration = 12 }, - [8928] = { name = L["Moonfire"], rank = 6, duration = 12 }, - [8929] = { name = L["Moonfire"], rank = 7, duration = 12 }, - [9833] = { name = L["Moonfire"], rank = 8, duration = 12 }, - [9834] = { name = L["Moonfire"], rank = 9, duration = 12 }, - [9835] = { name = L["Moonfire"], rank = 10, duration = 12 }, + [8921] = { name = L["Moonfire"], rank = 1, duration = 9, variable_duration = true }, + [8924] = { name = L["Moonfire"], rank = 2, duration = 12, variable_duration = true }, + [8925] = { name = L["Moonfire"], rank = 3, duration = 12, variable_duration = true }, + [8926] = { name = L["Moonfire"], rank = 4, duration = 12, variable_duration = true }, + [8927] = { name = L["Moonfire"], rank = 5, duration = 12, variable_duration = true }, + [8928] = { name = L["Moonfire"], rank = 6, duration = 12, variable_duration = true }, + [8929] = { name = L["Moonfire"], rank = 7, duration = 12, variable_duration = true }, + [9833] = { name = L["Moonfire"], rank = 8, duration = 12, variable_duration = true }, + [9834] = { name = L["Moonfire"], rank = 9, duration = 12, variable_duration = true }, + [9835] = { name = L["Moonfire"], rank = 10, duration = 12, variable_duration = true }, - [1822] = { name = L["Rake"], rank = 1, duration = 9 }, - [1823] = { name = L["Rake"], rank = 2, duration = 9 }, - [1824] = { name = L["Rake"], rank = 3, duration = 9 }, - [9904] = { name = L["Rake"], rank = 4, duration = 9 }, + [1822] = { name = L["Rake"], rank = 1, duration = 9, variable_duration = true }, + [1823] = { name = L["Rake"], rank = 2, duration = 9, variable_duration = true }, + [1824] = { name = L["Rake"], rank = 3, duration = 9, variable_duration = true }, + [9904] = { name = L["Rake"], rank = 4, duration = 9, variable_duration = true }, - [1079] = { name = L["Rip"], rank = 1, duration = 12 }, - [9492] = { name = L["Rip"], rank = 2, duration = 12 }, - [9493] = { name = L["Rip"], rank = 3, duration = 12 }, - [9752] = { name = L["Rip"], rank = 4, duration = 12 }, - [9894] = { name = L["Rip"], rank = 5, duration = 12 }, - [9896] = { name = L["Rip"], rank = 6, duration = 12 }, + [1079] = { name = L["Rip"], rank = 1, duration = 12, variable_duration = true }, + [9492] = { name = L["Rip"], rank = 2, duration = 12, variable_duration = true }, + [9493] = { name = L["Rip"], rank = 3, duration = 12, variable_duration = true }, + [9752] = { name = L["Rip"], rank = 4, duration = 12, variable_duration = true }, + [9894] = { name = L["Rip"], rank = 5, duration = 12, variable_duration = true }, + [9896] = { name = L["Rip"], rank = 6, duration = 12, variable_duration = true }, [2908] = { name = L["Soothe Animal"], rank = 1, duration = 15 }, [8955] = { name = L["Soothe Animal"], rank = 2, duration = 15 }, @@ -68,9 +68,7 @@ function getDruidSpells() [6798] = { name = L["Bash"], rank = 2, duration = 3 }, [8983] = { name = L["Bash"], rank = 3, duration = 4 }, - [22570] = { name = L["Maim"], rank = 1, duration = 5 }, - [49802] = { name = L["Maim"], rank = 2, duration = 5 }, - [49803] = { name = L["Maim"], rank = 3, duration = 5 }, + [22570] = { name = L["Mangle"], rank = 1, duration = 5 }, -- duration depends on combo points so not gonna be accurate [99] = { name = L["Demoralizing Roar"], rank = 1, duration = 30 }, [1735] = { name = L["Demoralizing Roar"], rank = 2, duration = 30 }, diff --git a/spells/warlock.lua b/spells/warlock.lua index 2f0fce0..da17412 100644 --- a/spells/warlock.lua +++ b/spells/warlock.lua @@ -1,20 +1,20 @@ local L = AceLibrary("AceLocale-2.2"):new("Cursive") function getWarlockSpells() return { - [172] = { name = L["Corruption"], rank = 1, duration = 12, rapid_deterioration = true }, - [6222] = { name = L["Corruption"], rank = 2, duration = 15, rapid_deterioration = true }, - [6223] = { name = L["Corruption"], rank = 3, duration = 18, rapid_deterioration = true }, - [7648] = { name = L["Corruption"], rank = 4, duration = 18, rapid_deterioration = true }, - [11671] = { name = L["Corruption"], rank = 5, duration = 18, rapid_deterioration = true }, - [11672] = { name = L["Corruption"], rank = 6, duration = 18, rapid_deterioration = true }, - [25311] = { name = L["Corruption"], rank = 7, duration = 18, rapid_deterioration = true }, + [172] = { name = L["Corruption"], rank = 1, duration = 12, variable_duration = true }, + [6222] = { name = L["Corruption"], rank = 2, duration = 15, variable_duration = true }, + [6223] = { name = L["Corruption"], rank = 3, duration = 18, variable_duration = true }, + [7648] = { name = L["Corruption"], rank = 4, duration = 18, variable_duration = true }, + [11671] = { name = L["Corruption"], rank = 5, duration = 18, variable_duration = true }, + [11672] = { name = L["Corruption"], rank = 6, duration = 18, variable_duration = true }, + [25311] = { name = L["Corruption"], rank = 7, duration = 18, variable_duration = true }, - [980] = { name = L["Curse of Agony"], rank = 1, duration = 24, rapid_deterioration = true }, - [1014] = { name = L["Curse of Agony"], rank = 2, duration = 24, rapid_deterioration = true }, - [6217] = { name = L["Curse of Agony"], rank = 3, duration = 24, rapid_deterioration = true }, - [11711] = { name = L["Curse of Agony"], rank = 4, duration = 24, rapid_deterioration = true }, - [11712] = { name = L["Curse of Agony"], rank = 5, duration = 24, rapid_deterioration = true }, - [11713] = { name = L["Curse of Agony"], rank = 6, duration = 24, rapid_deterioration = true }, + [980] = { name = L["Curse of Agony"], rank = 1, duration = 24, variable_duration = true }, + [1014] = { name = L["Curse of Agony"], rank = 2, duration = 24, variable_duration = true }, + [6217] = { name = L["Curse of Agony"], rank = 3, duration = 24, variable_duration = true }, + [11711] = { name = L["Curse of Agony"], rank = 4, duration = 24, variable_duration = true }, + [11712] = { name = L["Curse of Agony"], rank = 5, duration = 24, variable_duration = true }, + [11713] = { name = L["Curse of Agony"], rank = 6, duration = 24, variable_duration = true }, [603] = { name = L["Curse of Doom"], rank = 1, duration = 60 }, @@ -58,10 +58,10 @@ function getWarlockSpells() [710] = { name = L["Banish"], rank = 1, duration = 20 }, [18647] = { name = L["Banish"], rank = 2, duration = 30 }, - [18265] = { name = L["Siphon Life"], rank = 1, duration = 30, rapid_deterioration = true }, - [18879] = { name = L["Siphon Life"], rank = 2, duration = 30, rapid_deterioration = true }, - [18880] = { name = L["Siphon Life"], rank = 3, duration = 30, rapid_deterioration = true }, - [18881] = { name = L["Siphon Life"], rank = 4, duration = 30, rapid_deterioration = true }, + [18265] = { name = L["Siphon Life"], rank = 1, duration = 30, variable_duration = true }, + [18879] = { name = L["Siphon Life"], rank = 2, duration = 30, variable_duration = true }, + [18880] = { name = L["Siphon Life"], rank = 3, duration = 30, variable_duration = true }, + [18881] = { name = L["Siphon Life"], rank = 4, duration = 30, variable_duration = true }, [5782] = { name = L["Fear"], rank = 1, duration = 10 }, [6213] = { name = L["Fear"], rank = 2, duration = 15 },