From 7f81b51b1ae06aa24b8a9a723b7b49a91c030422 Mon Sep 17 00:00:00 2001 From: pepopo978 Date: Mon, 18 Aug 2025 10:08:17 -0700 Subject: [PATCH] update rogue spells --- Localization.lua | 6 +++++- curses.lua | 8 +++++--- spells/rogue.lua | 38 +++++++++++++++++++++++++++++++++----- 3 files changed, 43 insertions(+), 9 deletions(-) diff --git a/Localization.lua b/Localization.lua index c1fc226..4ab9afc 100644 --- a/Localization.lua +++ b/Localization.lua @@ -163,6 +163,8 @@ L:RegisterTranslations("enUS", function() ["blind"] = true, ["sap"] = true, ["gouge"] = true, + ["rupture"] = true, + ["kidney shot"] = true, ["expose armor"] = true, ["garrote"] = true, ["deadly poison"] = true, @@ -363,7 +365,9 @@ L:RegisterTranslations("zhCN", function() ["blind"] = "致盲", ["sap"] = "闷棍", ["gouge"] = "凿击", - ["expose armor"] = "破甲", -- no idea if right + ["rupture"] = "割裂", -- no idea if right + ["kidney shot"] = "肾击", -- no idea if right + ["expose armor"] = "破甲", -- no idea if right ["garrote"] = "锁喉", -- no idea if right ["deadly poison"] = "致命毒药", -- no idea if right ["deadly poison II"] = "致命毒药 II", diff --git a/curses.lua b/curses.lua index dc281a9..09df9be 100644 --- a/curses.lua +++ b/curses.lua @@ -139,6 +139,8 @@ end function curses:GetCurseDuration(curseSpellID) if curses.trackedCurseIds[curseSpellID].variableDuration then return curses:ScanTooltipForDuration(curseSpellID) + elseif curses.trackedCurseIds[curseSpellID].calculateDuration then + return curses.trackedCurseIds[curseSpellID].calculateDuration() end return curses.trackedCurseIds[curseSpellID].duration @@ -207,7 +209,8 @@ Cursive:RegisterEvent("UNIT_CASTEVENT", function(casterGuid, targetGuid, event, if curses.trackedCurseIds[spellID] then lastGuid = targetGuid - Cursive:ScheduleEvent("addCurse" .. targetGuid .. curses.trackedCurseIds[spellID].name, curses.ApplyCurse, 0.2, self, spellID, targetGuid, GetTime()) + local duration = curses:GetCurseDuration(spellID) - 0.2 + Cursive:ScheduleEvent("addCurse" .. targetGuid .. curses.trackedCurseIds[spellID].name, curses.ApplyCurse, 0.2, self, spellID, targetGuid, GetTime(), duration) elseif curses.conflagrateSpellIds[spellID] then Cursive:ScheduleEvent("updateCurse" .. targetGuid .. L["conflagrate"], curses.UpdateCurse, 0.2, self, spellID, targetGuid, GetTime()) end @@ -500,13 +503,12 @@ function curses:ApplySharedCurse(sharedDebuffKey, spellID, targetGuid, startTime end -- Apply curse from player -function curses:ApplyCurse(spellID, targetGuid, startTime) +function curses:ApplyCurse(spellID, targetGuid, startTime, duration) -- clear pending cast curses.pendingCast = {} local name = curses.trackedCurseIds[spellID].name local rank = curses.trackedCurseIds[spellID].rank - local duration = curses:GetCurseDuration(spellID) if not curses.guids[targetGuid] then curses.guids[targetGuid] = {} diff --git a/spells/rogue.lua b/spells/rogue.lua index 2a60e03..75907a4 100644 --- a/spells/rogue.lua +++ b/spells/rogue.lua @@ -1,3 +1,21 @@ +function getGougeDuration() + -- Improved Gouge: +.5s per talent + local _, _, _, _, count = GetTalentInfo(2, 1) + if count and count > 0 then + return 4 + (count * .5) + end + + return 4 +end + +function getRuptureDuration() + return 6 + GetComboPoints() * 2 +end + +function getKidneyShotDuration() + return 1 + GetComboPoints() +end + local L = AceLibrary("AceLocale-2.2"):new("Cursive") function getRogueSpells() return { @@ -8,11 +26,21 @@ function getRogueSpells() [2070] = { name = L["sap"], rank = 2, duration = 35 }, [11297] = { name = L["sap"], rank = 3, duration = 45 }, - [1776] = { name = L["gouge"], rank = 1, duration = 4 }, - [1777] = { name = L["gouge"], rank = 2, duration = 4 }, - [8629] = { name = L["gouge"], rank = 3, duration = 4 }, - [11285] = { name = L["gouge"], rank = 4, duration = 4 }, - [11286] = { name = L["gouge"], rank = 5, duration = 4 }, + [1776] = { name = L["gouge"], rank = 1, duration = 4, calculateDuration = getGougeDuration }, + [1777] = { name = L["gouge"], rank = 2, duration = 4, calculateDuration = getGougeDuration }, + [8629] = { name = L["gouge"], rank = 3, duration = 4, calculateDuration = getGougeDuration }, + [11285] = { name = L["gouge"], rank = 4, duration = 4, calculateDuration = getGougeDuration }, + [11286] = { name = L["gouge"], rank = 5, duration = 4, calculateDuration = getGougeDuration }, + + [1943] = { name = L["rupture"], rank = 1, duration = 6, calculateDuration = getRuptureDuration }, + [8639] = { name = L["rupture"], rank = 2, duration = 6, calculateDuration = getRuptureDuration }, + [8640] = { name = L["rupture"], rank = 3, duration = 6, calculateDuration = getRuptureDuration }, + [11273] = { name = L["rupture"], rank = 4, duration = 6, calculateDuration = getRuptureDuration }, + [11274] = { name = L["rupture"], rank = 5, duration = 6, calculateDuration = getRuptureDuration }, + [11275] = { name = L["rupture"], rank = 6, duration = 6, calculateDuration = getRuptureDuration }, + + [408] = { name = L["kidney shot"], rank = 1, duration = 1, calculateDuration = getKidneyShotDuration }, + [8643] = { name = L["kidney shot"], rank = 2, duration = 1, calculateDuration = getKidneyShotDuration }, [8647] = { name = L["expose armor"], rank = 1, duration = 30 }, -- this is a shared debuff but almost always only done by 1 rogue [8649] = { name = L["expose armor"], rank = 2, duration = 30 },