A Warpwood Thunder Caller
Join Date: Aug 2011
Posts: 99
|
The addon that comes closest to what I want is this ...
http://www.curse.com/addons/wow/rogue-subtlety
Code:
Subtlety = {}
Subtlety.currentTarget = ""
Subtlety.lastTarget = ""
function FM_GetSpellNameById(spellId)
if (spellId == nil) then
return nil
end
local spellName, rank, _, _, _, _, _, _, _ = GetSpellInfo(spellId)
if rank==nil then
return spellName
elseif string.len(rank)>1 then
return spellName.."("..rank..")"
end
return spellName
end
local language = GetLocale();
if language == "esMX" then
Subtlety.L = {
["Garrote"] = "Garrote",
["Backstab"] = "Puñalada",
["Slice and Dice"] = "Hacer picadillo",
["Eviscerate"] = "Eviscerar",
["Rupture"] = "Ruptura",
["Recuperate"] = "Reponerse",
["Tricks of the Trade"] = "Secretos del oficio",
["Shadow Blades"] = "Paso de las Sombras",
["Hemorrhage"] = "Hemorragia",
["Ambush"] = "Emboscada",
["Vanish"] = "Esfumarse",
["Shadow Dance"] = "Danza de las Sombras",
["Premeditation"] = "Premeditación",
["Redirect"] = "Redirigir",
["Master of Subtlety"] = "Maestro de la sutileza",
["Stealth"] = "Sigilo",
["Generator"] = "Generator"
}
elseif language == "ptBR" then
Subtlety.L = {
["Garrote"] = "Garrote",
["Backstab"] = "Punhalada pelas Costas",
["Slice and Dice"] = "Retalhar",
["Eviscerate"] = "Esvicerar",
["Rupture"] = "Ruptura",
["Recuperate"] = "Recobrar",
["Tricks of the Trade"] = "Truques do Ofício",
["Shadow Blades"] = "Lâminas Sombrias",
["Hemorrhage"] = "Hemorragia",
["Ambush"] = "Emboscar",
["Vanish"] = "Sumir",
["Shadow Dance"] = "Dança das Sombras",
["Premeditation"] = "Premeditação",
["Redirect"] = "Redirecionar",
["Master of Subtlety"] = "Mestre do Subterfúgio",
["Stealth"] = "Furtividade",
["Crimson Tempest"] = "Tempestade Carmesim",
["Generator"] = "Generator"
}
elseif language == "frFR" then
Subtlety.L = {
["Garrote"] = "Garrot",
["Backstab"] = "Attaque sournoise",
["Slice and Dice"] = "Débiter",
["Eviscerate"] = "Eviscération",
["Rupture"] = "Rupture",
["Recuperate"] = "Conversion",
["Tricks of the Trade"] = "Ficelles du métier",
["Shadow Blades"] = "Pas de l'ombre",
["Hemorrhage"] = "Hémorragie",
["Ambush"] = "Embuscade",
["Vanish"] = "Disparition",
["Shadow Dance"] = "Danse de l'ombre",
["Premeditation"] = "Préméditation",
["Redirect"] = "Rediriger",
["Master of Subtlety"] = "Maître de la discrétion",
["Stealth"] = "Camouflage",
["Generator"] = "Generator"
}
elseif language == "deDE" then
Subtlety.L = {
["Garrote"] = "Erdrosseln",
["Backstab"] = "Meucheln",
["Slice and Dice"] = "Zerhäckseln",
["Eviscerate"] = "Ausweiden",
["Rupture"] = "Blutung",
["Recuperate"] = "Gesundung",
["Tricks of the Trade"] = "Schurkenhandel",
["Shadow Blades"] = "Schattenschritt",
["Hemorrhage"] = "Blutsturz",
["Ambush"] = "Hinterhalt",
["Vanish"] = "Verschwinden",
["Shadow Dance"] = "Schattentanz",
["Premeditation"] = "Konzentration",
["Redirect"] = "Umlenken",
["Master of Subtlety"] = "Meister des hinterhältigen Angriffs",
["Stealth"] = "Verstohlenheit",
["Generator"] = "Generator"
}
elseif language == "ruRU" then
Subtlety.L = {
["Garrote"] = "Гаррота",
["Backstab"] = "Удар в спину",
["Slice and Dice"] = "Мясорубка",
["Eviscerate"] = "Потрошение",
["Rupture"] = "Рваная рана",
["Recuperate"] = "Заживление ран",
["Tricks of the Trade"] = "Маленькие хитрости",
["Shadow Blades"] = "Шаг сквозь тень",
["Hemorrhage"] = "Кровоизлияние",
["Ambush"] = "Внезапный удар",
["Vanish"] = "Исчезновение",
["Shadow Dance"] = "Танец теней",
["Premeditation"] = "Умысел",
["Redirect"] = "Смена приоритетов",
["Master of Subtlety"] = "Мастер скрытности",
["Stealth"] = "Незаметность",
["Generator"] = "Generator"
}
else
Subtlety.L = {
["Garrote"] = "Garrote",
["Backstab"] = "Backstab",
["Slice and Dice"] = "Slice and Dice",
["Eviscerate"] = "Eviscerate",
["Rupture"] = "Rupture",
["Recuperate"] = "Recuperate",
["Tricks of the Trade"] = "Tricks of the Trade",
["Shadow Blades"] = "Shadow Blades",
["Hemorrhage"] = "Hemorrhage",
["Ambush"] = "Ambush",
["Vanish"] = "Vanish",
["Shadow Dance"] = "Shadow Dance",
["Premeditation"] = "Premeditation",
["Redirect"] = "Redirect",
["Master of Subtlety"] = "Master of Subtlety",
["Stealth"] = "Stealth",
["Generator"] = "Generator"
}
end
Subtlety.L["Garrote"] = GetSpellInfo(703)
Subtlety.L["Slice and Dice"] = GetSpellInfo(5171)
Subtlety.L["Backstab"] = GetSpellInfo(53)
Subtlety.L["Hemorrhage"] = GetSpellInfo(1752)
Subtlety.L["Hemorrhage-Debuff"] = GetSpellInfo(16511)
Subtlety.L["Eviscerate"] = GetSpellInfo(2098)
Subtlety.L["Rupture"] = GetSpellInfo(1943)
Subtlety.L["Recuperate"] = GetSpellInfo(73651)
Subtlety.L["Tricks of the Trade"] = GetSpellInfo(57934)
Subtlety.L["Shadow Blades"] = GetSpellInfo(121471)
Subtlety.L["Shadow Dance"] = GetSpellInfo(51713)
Subtlety.L["Ambush"] = GetSpellInfo(8676)
Subtlety.L["Premeditation"] = GetSpellInfo(14183)
Subtlety.L["Vanish"] = GetSpellInfo(1856)
Subtlety.L["Redirect"] = GetSpellInfo(73981)
Subtlety.timeSinceLastUpdate = 0
Subtlety.playerName = UnitName("player")
Subtlety.textureList = {
["last"] = nil,
["redirect"] = nil,
["current"] = nil,
["next"] = nil,
["misc"] = nil,
["int"] = nil,
["ss"] = nil,
}
Subtlety.eventFrame = CreateFrame("Frame")
Subtlety.eventFrame:SetScript("OnEvent", function(this, event, ...)
Subtlety.events[event](...)
end)
Subtlety.eventFrame:RegisterEvent("ADDON_LOADED")
Subtlety.eventFrame:RegisterEvent("PLAYER_LOGIN")
Subtlety.eventFrame:RegisterEvent("PLAYER_ALIVE")
Subtlety.eventFrame:RegisterEvent("PLAYER_TARGET_CHANGED")
Subtlety.eventFrame:RegisterEvent("PLAYER_TALENT_UPDATE")
Subtlety.events = {}
function Subtlety.events.PLAYER_TALENT_UPDATE()
if GetSpecialization() == 3 then
Subtlety.displayFrame:Show()
else
Subtlety.displayFrame:Hide()
end
end
function Subtlety.events.PLAYER_ALIVE()
Subtlety.eventFrame:UnregisterEvent("PLAYER_ALIVE")
end
function Subtlety.events.PLAYER_LOGIN()
Subtlety.playerName = UnitName("player");
end
function Subtlety.events.ADDON_LOADED(addon)
if addon ~= "Lelex" and GetSpecialization() == 3 then
return
end
local _,playerClass = UnitClass("player")
if playerClass ~= "ROGUE" then
Subtlety.eventFrame:UnregisterEvent("PLAYER_ALIVE")
Subtlety.eventFrame:UnregisterEvent("ADDON_LOADED")
Subtlety.eventFrame:UnregisterEvent("PLAYER_LOGIN")
Subtlety.eventFrame:UnregisterEvent("PLAYER_TARGET_CHANGED")
Subtlety.eventFrame:UnregisterEvent("PLAYER_TALENT_UPDATE")
return
end
if not Subtletydb then
Subtletydb = {}
end
if not Subtletydb.scale then Subtletydb.scale = 1 end
if not Subtletydb.RupturePoints then Subtletydb.RupturePoints = 5 end
if not Subtletydb.RupturePriority then Subtletydb.RupturePriority = 2 end
if not Subtletydb.SliceAndDicePoints then Subtletydb.SliceAndDicePoints = 5 end
if not Subtletydb.SliceAndDicePriority then Subtletydb.SliceAndDicePriority = 1 end
if Subtletydb.locked == nil then Subtletydb.locked = true end
if not Subtletydb.x then Subtletydb.x = 100 end
if not Subtletydb.y then Subtletydb.y = 100 end
if not Subtletydb.SuggestVanish then Subtletydb.SuggestVanish = false end
if not Subtletydb.SuggestBackstab then Subtletydb.SuggestBackstab = true end
if not Subtletydb.SuggestShadowDance then Subtletydb.SuggestShadowDance = false end
if not Subtletydb.SuggestTotT then Subtletydb.SuggestTotT = false end
if Subtletydb.range == nil then Subtletydb.range = true end
if (Subtletydb.SuggestBackstab == true) then
Subtlety.L["Generator"] = Subtlety.L["Hemorrhage"]
else
Subtlety.L["Generator"] = Subtlety.L["Backstab"]
end
Subtlety:CreateGUI()
Subtlety.displayFrame:SetScale(Subtletydb.scale)
Subtlety:CreateOptionFrame()
if Subtletydb.locked then
Subtlety.displayFrame:SetScript("OnMouseDown", nil)
Subtlety.displayFrame:SetScript("OnMouseUp", nil)
Subtlety.displayFrame:SetScript("OnDragStop", nil)
Subtlety.displayFrame:SetBackdropColor(0, 0, 0, 0)
Subtlety.displayFrame:EnableMouse(false)
else
Subtlety.displayFrame:SetScript("OnMouseDown", function(self) self:StartMoving() end)
Subtlety.displayFrame:SetScript("OnMouseUp", function(self) self:StopMovingOrSizing() end)
Subtlety.displayFrame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
Subtlety.displayFrame:SetBackdropColor(0, 0, 0, .4)
Subtlety.displayFrame:EnableMouse(true)
end
Subtlety.eventFrame:RegisterEvent("COMBAT_LOG_EVENT_UNFILTERED")
Subtlety.eventFrame:RegisterEvent("PLAYER_TARGET_CHANGED")
if GetSpecialization() == 3 then
Subtlety.displayFrame:Show()
else
Subtlety.displayFrame:Hide()
end
end
function Subtlety.events.COMBAT_LOG_EVENT_UNFILTERED(timestamp, event, srcGUID, srcName, srcFlags, dstGUID, dstName, dstFlags, ...)
end
function Subtlety.events.COMBAT_RATING_UPDATE(unit)
end
function Subtlety.events.PLAYER_TARGET_CHANGED(...)
Subtlety.lastTarget = Subtlety.currentTarget
Subtlety.currentTarget = UnitGUID("target")
if UnitName("target") == nil or UnitIsFriend("player","target") ~= nil or UnitHealth("target") == 0 then
Subtlety.displayFrame_last:Hide()
Subtlety.displayFrame_current:Hide()
Subtlety.displayFrame_next:Hide()
Subtlety.displayFrame_misc:Hide()
Subtlety.displayFrame_int:Hide()
Subtlety.displayFrame_ss:Hide()
else
Subtlety.displayFrame_last:Show()
Subtlety.displayFrame_current:Show()
Subtlety.displayFrame_next:Show()
Subtlety.displayFrame_misc:Show()
Subtlety.displayFrame_int:Show()
Subtlety.displayFrame_ss:Show()
Subtlety:DecideSpells()
end
end
function Subtlety:CreateGUI()
local displayFrame = CreateFrame("Frame","SubtletyDisplayFrame",UIParent)
displayFrame:SetFrameStrata("BACKGROUND")
displayFrame:SetWidth(300)
displayFrame:SetHeight(95)
displayFrame:EnableMouse(true)
displayFrame:SetMovable(true)
displayFrame:SetClampedToScreen(true)
displayFrame:SetScript("OnMouseDown", function(self) self:StartMoving() end)
displayFrame:SetScript("OnMouseUp", function(self) self:StopMovingOrSizing() end)
displayFrame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
displayFrame:SetPoint("CENTER",-200,-200)
local displayFrame_last = CreateFrame("Frame","$parent_last", SubtletyDisplayFrame)
local displayFrame_current = CreateFrame("Frame","$parent_current", SubtletyDisplayFrame)
local displayFrame_next = CreateFrame("Frame","$parent_next", SubtletyDisplayFrame)
local displayFrame_misc = CreateFrame("Frame","$parent_misc", SubtletyDisplayFrame)
local displayFrame_int = CreateFrame("Frame","$parent_int", SubtletyDisplayFrame)
local displayFrame_ss = CreateFrame("Frame","$parent_ss", SubtletyDisplayFrame)
displayFrame_last:SetWidth(45)
displayFrame_current:SetWidth(70)
displayFrame_next:SetWidth(45)
displayFrame_misc:SetWidth(45)
displayFrame_int:SetWidth(45)
displayFrame_ss:SetWidth(45)
displayFrame_last:SetHeight(45)
displayFrame_current:SetHeight(70)
displayFrame_next:SetHeight(45)
displayFrame_misc:SetHeight(45)
displayFrame_int:SetHeight(45)
displayFrame_ss:SetHeight(45)
displayFrame_current:SetPoint("TOPLEFT", 140, 40)
displayFrame_next:SetPoint("TOPLEFT", 150, -10)
displayFrame_last:SetPoint("TOPLEFT", 0, -10)
displayFrame_misc:SetPoint("TOPLEFT", 0, 40)
displayFrame_int:SetPoint("TOPLEFT", 50, 40)
displayFrame_ss:SetPoint("TOPLEFT", 50,-10)
local t = displayFrame_last:CreateTexture(nil,"BACKGROUND")
t:SetTexture(nil)
t:SetAllPoints(displayFrame_last)
t:SetAlpha(.8)
displayFrame_last.texture = t
Subtlety.textureList["last"] = t
t = displayFrame_current:CreateTexture(nil,"BACKGROUND")
t:SetTexture(nil)
t:ClearAllPoints()
t:SetAllPoints(displayFrame_current)
displayFrame_current.texture = t
Subtlety.textureList["current"] = t
t = displayFrame_misc:CreateTexture(nil,"BACKGROUND")
t:SetTexture(nil)
t:SetAllPoints(displayFrame_misc)
t:SetAlpha(.8)
displayFrame_misc.texture = t
Subtlety.textureList["misc"] = t
t = displayFrame_int:CreateTexture(nil,"BACKGROUND")
t:SetTexture(nil)
t:SetAllPoints(displayFrame_int)
t:SetAlpha(.8)
displayFrame_int.texture = t
Subtlety.textureList["int"] = t
t = displayFrame_next:CreateTexture(nil,"BACKGROUND")
t:SetTexture(nil)
t:SetAllPoints(displayFrame_next)
t:SetAlpha(.8)
displayFrame_next.texture = t
Subtlety.textureList["next"] = t
t = displayFrame_ss:CreateTexture(nil,"BACKGROUND")
t:SetTexture(nil)
t:SetAllPoints(displayFrame_ss)
t:SetAlpha(.8)
displayFrame_ss.texture = t
Subtlety.textureList["ss"] = t
displayFrame:SetScript("OnUpdate", function(this, elapsed)
Subtlety:OnUpdate(elapsed)
end)
local cooldownFrame = CreateFrame("Cooldown","$parent_cooldown", SubtletyDisplayFrame_current)
cooldownFrame:SetHeight(70)
cooldownFrame:SetWidth(70)
cooldownFrame:ClearAllPoints()
cooldownFrame:SetPoint("CENTER", displayFrame_current, "CENTER", 0, 0)
Subtlety.displayFrame = displayFrame
Subtlety.displayFrame_last = displayFrame_last
Subtlety.displayFrame_current = displayFrame_current
Subtlety.displayFrame_next = displayFrame_next
Subtlety.displayFrame_misc = displayFrame_misc
Subtlety.displayFrame_int = displayFrame_int
Subtlety.displayFrame_ss = displayFrame_ss
Subtlety.cooldownFrame = cooldownFrame
end
function Subtlety:OnUpdate(elapsed)
Subtlety.timeSinceLastUpdate = Subtlety.timeSinceLastUpdate + elapsed;
Subtlety:DecideSpells()
end
function Subtlety:Find(t, v, c)
if type(t) == "table" and v then
v = (c==0 or c==2) and v:lower() or v
for k, val in pairs(t) do
val = (c==0 or c==2) and val:lower() or val
if (c==1 or c==2) and val:find(v) or v == val then
return k
end
end
end
return nil
end
function Subtlety:DecideSpells()
Subtlety.timeSinceLastUpdate = 0;
if UnitName("target") == nil or UnitIsFriend("player","target") ~= nil or UnitHealth("target") == 0 then
return
end
Subtlety.Finisher = {
{
spell = "Rupture",
name = "rupture",
priority = Subtletydb.RupturePriority,
points = Subtletydb.RupturePoints,
energy = 25,
expires = '0',
},
{
spell = "Slice and Dice",
name = "slice_and_dice",
priority = Subtletydb.SliceAndDicePriority,
points = Subtletydb.SliceAndDicePoints,
energy = 25,
expires = '0',
},
}
function sort_func(a, b)
return a.priority < b.priority;
end
table.sort(Subtlety.Finisher, sort_func);
local guid = UnitGUID("target")
local puid = UnitGUID("player")
if guid == nil then
Subtlety.textureList["last"]:SetTexture(nil)
Subtlety.textureList["current"]:SetTexture(nil)
Subtlety.textureList["next"]:SetTexture(nil)
Subtlety.textureList["misc"]:SetTexture(nil)
Subtlety.textureList["int"]:SetTexture(nil)
Subtlety.textureList["ss"]:SetTexture(nil)
return
end
local energy = UnitPower("player")
local cp = GetComboPoints("player")
local currentTime = GetTime()
local spell = ""
local nextspell = ""
local miscspell = ""
local intspell = ""
local bleeds = 0
local cost = 0
local garrote = 0
local slice_and_dice = 0
local recuperate = 0
local rupture = 0
local premeditation = 0
local hemorrhage = 0
local vanish = 0
local tott = 0
local shadowblades = 0
local shadow_dance = 0
local master_of_subtlety = 0
local serrated_blades = 0
for i = 1, 2, 1 do
local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitBuff("player", Subtlety.L[Subtlety.Finisher[i].spell])
currentTime = GetTime()
if name ~= nil then
if Subtlety.Finisher[i].name == "slice_and_dice" then
Subtlety.Finisher[i]["expires"] = expirationTime - currentTime
end
end
local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitDebuff("target", Subtlety.L[Subtlety.Finisher[i].spell])
currentTime = GetTime()
if name ~= nil then
if Subtlety.Finisher[i].name == "rupture" then
Subtlety.Finisher[i]["expires"] = expirationTime - currentTime
end
end
end
local name, rank, icon, price, isFunnel, powerType, castTime, minRange, maxRange = GetSpellInfo(Subtlety.L["Generator"])
if name ~= nil then
cost = price
end
local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitDebuff("target", Subtlety.L["Rupture"])
currentTime = GetTime()
if name ~= nil and isMine == "player" then
rupture = expirationTime - currentTime
end
local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitDebuff("target", Subtlety.L["Garrote"])
currentTime = GetTime()
if name ~= nil and isMine == "player" then
garrote = expirationTime - currentTime
bleeds = 1
end
local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitBuff("player", Subtlety.L["Master of Subtlety"])
currentTime = GetTime()
if name ~= nil then
master_of_subtlety = expirationTime - currentTime
end
local name, rank, icon, count, debuffType, duration, expirationTime, isMine, isStealable = UnitDebuff("target", Subtlety.L["Hemorrhage-Debuff"])
currentTime = GetTime()
if name ~= nil and isMine == "player" then
hemorrhage = expirationTime - currentTime
end
local start, duration, enabled = GetSpellCooldown(Subtlety.L["Tricks of the Trade"]);
if duration ~= nil then
tott = duration + start - currentTime
else
tott = 60
end
local start, duration, enabled = GetSpellCooldown(Subtlety.L["Shadow Blades"]);
if duration ~= nil then
shadowblades = duration + start - currentTime
else
shadowblades = 60
end
local start, duration, enabled = GetSpellCooldown(Subtlety.L["Vanish"]);
if duration ~= nil then
vanish = duration + start - currentTime
else
vanish = 60
end
local start, duration, enabled = GetSpellCooldown(Subtlety.L["Shadow Dance"]);
if duration ~= nil then
shadow_dance = duration + start - currentTime
else
shadow_dance = 60
end
if (UnitAura("player", Subtlety.L["Stealth"]) ~= nil or UnitBuff("player", Subtlety.L["Shadow Dance"]) ~= nil or UnitBuff("player", Subtlety.L["Vanish"]) ~= nil) then
if UnitAura("player", Subtlety.L["Stealth"]) ~= nil then
spell = Subtlety.L["Ambush"];
elseif (tott < 1) and (Subtletydb.SuggestTotT == true) then
spell = Subtlety.L["Tricks of the Trade"];
elseif (tonumber(Subtlety.Finisher[1].expires) <= 1) and (cp >= tonumber(Subtlety.Finisher[1].points)) and (tonumber(Subtlety.Finisher[1].points) ~= 0) then
if (energy >= Subtlety.Finisher[1].energy) then
spell = Subtlety.L[Subtlety.Finisher[1].spell];
else
nextspell = Subtlety.L[Subtlety.Finisher[1].spell];
end
elseif (tonumber(Subtlety.Finisher[2].expires) <= 1) and (cp >= tonumber(Subtlety.Finisher[2].points)) and (tonumber(Subtlety.Finisher[2].points) ~= 0) then
if (energy >= Subtlety.Finisher[2].energy) then
spell = Subtlety.L[Subtlety.Finisher[2].spell];
else
nextspell = Subtlety.L[Subtlety.Finisher[2].spell];
end
elseif (cp == 5) then
if (energy >= 25) then
spell = Subtlety.L["Eviscerate"];
else
nextspell = Subtlety.L["Eviscerate"];
end
else
if rupture == 0 then
if (energy >= 50) then
spell = Subtlety.L["Ambush"];
else
nextspell = Subtlety.L["Ambush"];
end
else
if (energy >= 40) then
spell = Subtlety.L["Ambush"];
else
nextspell = Subtlety.L["Ambush"];
end
end
end
end
if (UnitAura("player", Subtlety.L["Stealth"]) == nil and UnitBuff("player", Subtlety.L["Shadow Dance"]) == nil and UnitBuff("player", Subtlety.L["Vanish"]) == nil) then
if (rupture <= 5) and (cp == 5) and (rupture ~= 0) then
if (energy >= 35) then
spell = Subtlety.L["Eviscerate"];
else
nextspell = Subtlety.L["Eviscerate"];
end
elseif (tott < 1) and (Subtletydb.SuggestTotT == true) then
spell = Subtlety.L["Tricks of the Trade"];
elseif (shadow_dance < 1) and (Subtletydb.SuggestShadowDance == true) then
spell = Subtlety.L["Shadow Dance"];
elseif (vanish < 1) and (Subtletydb.SuggestVanish == true) and UnitAffectingCombat("player") == 1 then
spell = Subtlety.L["Vanish"];
elseif (tonumber(Subtlety.Finisher[1].expires) <= 5) and (cp >= tonumber(Subtlety.Finisher[1].points)) and (tonumber(Subtlety.Finisher[1].points) ~= 0) then
if (energy >= Subtlety.Finisher[1].energy) then
spell = Subtlety.L[Subtlety.Finisher[1].spell];
else
nextspell = Subtlety.L[Subtlety.Finisher[1].spell];
end
elseif (tonumber(Subtlety.Finisher[2].expires) <= 5) and (cp >= tonumber(Subtlety.Finisher[2].points)) and (tonumber(Subtlety.Finisher[2].points) ~= 0) then
if (energy >= Subtlety.Finisher[2].energy) then
spell = Subtlety.L[Subtlety.Finisher[2].spell];
else
nextspell = Subtlety.L[Subtlety.Finisher[2].spell];
end
elseif (cp == 5) then
if (energy >= 25) then
spell = Subtlety.L["Eviscerate"];
else
nextspell = Subtlety.L["Eviscerate"];
end
else
if (hemorrhage <= 5) then
if (energy >= cost) then
spell = Subtlety.L["Hemorrhage"];
else
nextspell = Subtlety.L["Hemorrhage"];
end
else
if (energy >= cost) then
spell = Subtlety.L["Generator"];
else
nextspell = Subtlety.L["Generator"];
end
end
end
end
Subtlety.textureList["current"]:SetTexture(GetSpellBookItemTexture(spell))
Subtlety.textureList["next"]:SetTexture(GetSpellBookItemTexture(nextspell))
if shadow_dance < 1 then
Subtlety.textureList["last"]:SetTexture(GetSpellBookItemTexture(Subtlety.L["Shadow Dance"]))
else
Subtlety.textureList["last"]:SetTexture(nil)
end
if tott < 1 then
Subtlety.textureList["misc"]:SetTexture(GetSpellBookItemTexture(Subtlety.L["Tricks of the Trade"]))
else
Subtlety.textureList["misc"]:SetTexture(nil)
end
if (vanish < 1) then
Subtlety.textureList["int"]:SetTexture(GetSpellBookItemTexture(Subtlety.L["Vanish"]))
else
Subtlety.textureList["int"]:SetTexture(nil)
end
if shadowblades < 1 then
Subtlety.textureList["ss"]:SetTexture(GetSpellBookItemTexture(Subtlety.L["Shadow Blades"]))
else
Subtlety.textureList["ss"]:SetTexture(nil)
end
if spell ~= "" and spell ~= nil then
local start, dur = GetSpellCooldown(spell)
if dur == 0 or start == nil or dur == nil then
Subtlety.cooldownFrame:SetAlpha(0)
else
Subtlety.cooldownFrame:SetAlpha(1)
Subtlety.cooldownFrame:SetCooldown(start, dur)
end
end
end
function Subtlety:CreateOptionFrame()
local panel = CreateFrame("FRAME", "SubtletyOptions");
panel.name = "Rotação Subterfúgio";
local fstring00 = panel:CreateFontString("SubtletyOptions_string00","OVERLAY","GameFontNormal")
fstring00:SetText("Prioridade")
fstring00:SetPoint("TOPLEFT", 355, -35)
local fstring01 = panel:CreateFontString("SubtletyOptions_string01","OVERLAY","GameFontNormal")
fstring01:SetText("Pontos de Combo")
fstring01:SetPoint("TOPLEFT", 485, -35)
local fstring2 = panel:CreateFontString("SubtletyOptions_string2","OVERLAY","GameFontNormal")
fstring2:SetText("Ruptura")
fstring2:SetPoint("TOPLEFT", 10, -70)
local slider2a = CreateFrame("Slider", "$parent_s2a", panel, "OptionsSliderTemplate")
slider2a:SetMinMaxValues(1, 2)
slider2a:SetWidth(75)
slider2a:SetValue(Subtlety:GetRupturePriority())
slider2a:SetValueStep(1)
slider2a:SetScript("OnValueChanged", function(self) Subtlety:SetRupturePriority(self:GetValue()); getglobal(self:GetName() .. "Text"):SetText(self:GetValue()) end)
getglobal(slider2a:GetName() .. "Low"):SetText("1")
getglobal(slider2a:GetName() .. "High"):SetText("2")
getglobal(slider2a:GetName() .. "Text"):SetText(Subtlety:GetRupturePriority())
slider2a:SetPoint("TOPRIGHT", -200, -70)
local slider2b = CreateFrame("Slider", "$parent_s2b", panel, "OptionsSliderTemplate")
slider2b:SetMinMaxValues(0, 5)
slider2b:SetWidth(150)
slider2b:SetValue(Subtlety:GetRupturePoints())
slider2b:SetValueStep(1)
slider2b:SetScript("OnValueChanged", function(self) Subtlety:SetRupturePoints(self:GetValue()); getglobal(self:GetName() .. "Text"):SetText(self:GetValue()) end)
getglobal(slider2b:GetName() .. "Low"):SetText("0")
getglobal(slider2b:GetName() .. "High"):SetText("5")
getglobal(slider2b:GetName() .. "Text"):SetText(Subtlety:GetRupturePoints())
slider2b:SetPoint("TOPRIGHT", -10, -70)
local fstring3 = panel:CreateFontString("SubtletyOptions_string3","OVERLAY","GameFontNormal")
fstring3:SetText("Retalhar")
fstring3:SetPoint("TOPLEFT", 10, -100)
local slider3a = CreateFrame("Slider", "$parent_s3a", panel, "OptionsSliderTemplate")
slider3a:SetMinMaxValues(1, 2)
slider3a:SetWidth(75)
slider3a:SetValue(Subtlety:GetSliceAndDicePriority())
slider3a:SetValueStep(1)
slider3a:SetScript("OnValueChanged", function(self) Subtlety:SetSliceAndDicePriority(self:GetValue()); getglobal(self:GetName() .. "Text"):SetText(self:GetValue()) end)
getglobal(slider3a:GetName() .. "Low"):SetText("1")
getglobal(slider3a:GetName() .. "High"):SetText("2")
getglobal(slider3a:GetName() .. "Text"):SetText(Subtlety:GetSliceAndDicePriority())
slider3a:SetPoint("TOPRIGHT", -200, -100)
local slider3b = CreateFrame("Slider", "$parent_s3b", panel, "OptionsSliderTemplate")
slider3b:SetMinMaxValues(0, 5)
slider3b:SetWidth(150)
slider3b:SetValue(Subtlety:GetSliceAndDicePoints())
slider3b:SetValueStep(1)
slider3b:SetScript("OnValueChanged", function(self) Subtlety:SetSliceAndDicePoints(self:GetValue()); getglobal(self:GetName() .. "Text"):SetText(self:GetValue()) end)
getglobal(slider3b:GetName() .. "Low"):SetText("0")
getglobal(slider3b:GetName() .. "High"):SetText("5")
getglobal(slider3b:GetName() .. "Text"):SetText(Subtlety:GetSliceAndDicePoints())
slider3b:SetPoint("TOPRIGHT", -10, -100)
local fstring4 = panel:CreateFontString("SubtletyOptions_string4","OVERLAY","GameFontNormal")
fstring4:SetText("Sugerir Sumir na rotação")
fstring4:SetPoint("TOPLEFT", 10, -150)
local checkbox4 = CreateFrame("CheckButton", "$parent_cb4", panel, "OptionsCheckButtonTemplate")
checkbox4:SetWidth(18)
checkbox4:SetHeight(18)
checkbox4:SetScript("OnClick", function() Subtlety:ToggleVanish() end)
checkbox4:SetPoint("TOPRIGHT", -10, -150)
checkbox4:SetChecked(Subtlety:GetVanish())
local fstring5 = panel:CreateFontString("SubtletyOptions_string4","OVERLAY","GameFontNormal")
fstring5:SetText("Sugerir Hemorragia para gerar Pontos de Combo")
fstring5:SetPoint("TOPLEFT", 10, -180)
local checkbox5 = CreateFrame("CheckButton", "$parent_cb5", panel, "OptionsCheckButtonTemplate")
checkbox5:SetWidth(18)
checkbox5:SetHeight(18)
checkbox5:SetScript("OnClick", function() Subtlety:ToggleBackstab() end)
checkbox5:SetPoint("TOPRIGHT", -10, -180)
checkbox5:SetChecked(Subtlety:GetBackstab())
local fstring6 = panel:CreateFontString("SubtletyOptions_string5","OVERLAY","GameFontNormal")
fstring6:SetText("Sugerir Dança das Sombras")
fstring6:SetPoint("TOPLEFT", 10, -210)
local checkbox6 = CreateFrame("CheckButton", "$parent_cb6", panel, "OptionsCheckButtonTemplate")
checkbox6:SetWidth(18)
checkbox6:SetHeight(18)
checkbox6:SetScript("OnClick", function() Subtlety:ToggleShadowDance() end)
checkbox6:SetPoint("TOPRIGHT", -10, -210)
checkbox6:SetChecked(Subtlety:GetShadowDance())
local fstring7 = panel:CreateFontString("SubtletyOptions_string7","OVERLAY","GameFontNormal")
fstring7:SetText("Sugerir Truques do Ofício")
fstring7:SetPoint("TOPLEFT", 10, -240)
local checkbox7 = CreateFrame("CheckButton", "$parent_cb7", panel, "OptionsCheckButtonTemplate")
checkbox7:SetWidth(18)
checkbox7:SetHeight(18)
checkbox7:SetScript("OnClick", function() Subtlety:ToggleTotT() end)
checkbox7:SetPoint("TOPRIGHT", -10, -240)
checkbox7:SetChecked(Subtlety:GetTotT())
local fstring8 = panel:CreateFontString("SubtletyOptions_string8","OVERLAY","GameFontNormal")
fstring8:SetText("Escala GUI")
fstring8:SetPoint("TOPLEFT", 10, -280)
local slider8 = CreateFrame("Slider", "$parent_s8", panel, "OptionsSliderTemplate")
slider8:SetMinMaxValues(.5, 1.5)
slider8:SetValue(Subtlety:GetScale())
slider8:SetValueStep(.05)
slider8:SetScript("OnValueChanged", function(self) Subtlety:SetScale(self:GetValue()); getglobal(self:GetName() .. "Text"):SetText(self:GetValue()) end)
getglobal(slider8:GetName() .. "Low"):SetText("0.5")
getglobal(slider8:GetName() .. "High"):SetText("1.5")
getglobal(slider8:GetName() .. "Text"):SetText(Subtlety:GetScale())
slider8:SetPoint("TOPRIGHT", -10, -280)
local fstring9 = panel:CreateFontString("SubtletyOptions_string1","OVERLAY","GameFontNormal")
fstring9:SetText("Travar")
fstring9:SetPoint("TOPLEFT", 10, -320)
local checkbox9 = CreateFrame("CheckButton", "$parent_cb9", panel, "OptionsCheckButtonTemplate")
checkbox9:SetWidth(18)
checkbox9:SetHeight(18)
checkbox9:SetScript("OnClick", function() Subtlety:ToggleLocked() end)
checkbox9:SetPoint("TOPRIGHT", -10, -320)
checkbox9:SetChecked(Subtlety:GetLocked())
InterfaceOptions_AddCategory(panel);
end
function Subtlety:GetLocked()
return Subtletydb.locked
end
function Subtlety:ToggleLocked()
if Subtletydb.locked then
Subtletydb.locked = false
Subtlety.displayFrame:SetScript("OnMouseDown", function(self) self:StartMoving() end)
Subtlety.displayFrame:SetScript("OnMouseUp", function(self) self:StopMovingOrSizing() end)
Subtlety.displayFrame:SetScript("OnDragStop", function(self) self:StopMovingOrSizing() end)
Subtlety.displayFrame:SetBackdropColor(0, 0, 0, .4)
Subtlety.displayFrame:EnableMouse(true)
else
Subtletydb.locked = true
Subtlety.displayFrame:SetScript("OnMouseDown", nil)
Subtlety.displayFrame:SetScript("OnMouseUp", nil)
Subtlety.displayFrame:SetScript("OnDragStop", nil)
Subtlety.displayFrame:SetBackdropColor(0, 0, 0, 0)
Subtlety.displayFrame:EnableMouse(false)
end
end
function Subtlety:GetScale()
return Subtletydb.scale
end
function Subtlety:SetScale(num)
Subtletydb.scale = num
Subtlety.displayFrame:SetScale(Subtletydb.scale)
Subtlety.cooldownFrame:SetScale(Subtletydb.scale)
end
function Subtlety.Options(msg, editBox)
if(msg == 'show') then
Subtlety.displayFrame:Show()
elseif(msg == 'hide') then
Subtlety.displayFrame:Hide()
elseif(msg == '') then
InterfaceOptionsFrame_OpenToCategory(getglobal("SubtletyOptions"))
else
end
end
function Subtlety:GetRupturePoints()
return Subtletydb.RupturePoints
end
function Subtlety:SetRupturePoints(num)
Subtletydb.RupturePoints = num
end
function Subtlety:GetRupturePriority()
return Subtletydb.RupturePriority
end
function Subtlety:SetRupturePriority(num)
Subtletydb.RupturePriority = num
end
function Subtlety:GetSliceAndDicePoints()
return Subtletydb.SliceAndDicePoints
end
function Subtlety:SetSliceAndDicePoints(num)
Subtletydb.SliceAndDicePoints = num
end
function Subtlety:GetSliceAndDicePriority()
return Subtletydb.SliceAndDicePriority
end
function Subtlety:SetSliceAndDicePriority(num)
Subtletydb.SliceAndDicePriority = num
end
function Subtlety:GetVanish()
return Subtletydb.SuggestVanish
end
function Subtlety:GetShadowDance()
return Subtletydb.SuggestShadowDance
end
function Subtlety:GetBackstab()
return Subtletydb.SuggestBackstab
end
function Subtlety:GetTotT()
return Subtletydb.SuggestTotT
end
function Subtlety:ToggleVanish()
if(Subtletydb.SuggestVanish == true) then
Subtletydb.SuggestVanish = false
else
Subtletydb.SuggestVanish = true
end
end
function Subtlety:ToggleShadowDance()
if(Subtletydb.SuggestShadowDance == true) then
Subtletydb.SuggestShadowDance = false
else
Subtletydb.SuggestShadowDance = true
end
end
function Subtlety:ToggleBackstab()
if(Subtletydb.SuggestBackstab == true) then
Subtletydb.SuggestBackstab = false
Subtlety.L["Generator"] = Subtlety.L["Backstab"]
else
Subtletydb.SuggestBackstab = true
Subtlety.L["Generator"] = Subtlety.L["Hemorrhage"]
end
end
function Subtlety:ToggleTotT()
if(Subtletydb.SuggestTotT == true) then
Subtletydb.SuggestTotT = false
else
Subtletydb.SuggestTotT = true
end
end
But it is not working properly, in fact it only works when I type /reload after opening the game.
I already placed the BugTracker but did not identify any problem, and as I unfortunately have no programming knowledge, do not know what to do ...
Last edited by Caetan0 : 08-04-14 at 03:54 PM.
|