/
SliceCommander = LibStub("AceAddon-3.0"):NewAddon("SliceCommander", "AceEvent-3.0", "AceHook-3.0") |
local L = LibStub("AceLocale-3.0"):GetLocale("SliceCommander") |
local LSM = LibStub("LibSharedMedia-3.0") |
local _G = getfenv(0) |
function SliceCommander:BarTexture() |
return LSM:Fetch("statusbar", _G['SC'].SET.BarTexture) |
return LSM:Fetch("statusbar", SC.SET.BarTexture) |
end |
function SliceCommander:PlayCDSound(BAR) |
if BAR['sound'] ~= nil and not _G['SC'].preventSound then |
local name = BAR['sound']['available'] |
if (SliceCommander:isCombat() or _G['SC'].SET.ForceCDSpellSound) and name ~= 'None' and name ~= nil then |
PlaySoundFile(LSM:Fetch("sound", name), _G['SC'].SET.soundChannel) |
if (SliceCommander:isCombat() or SC.SET.ForceCDSpellSound) and name ~= 'None' and name ~= nil then |
PlaySoundFile(LSM:Fetch("sound", name), SC.SET.soundChannel) |
end |
end |
end |
function SliceCommander:PlaySoundReal(name) |
local _ |
if _G['SC'].previousSound then |
StopSound(_G['SC'].previousSound) |
if SC.previousSound then |
StopSound(SC.previousSound) |
end |
_, _G['SC'].previousSound = PlaySoundFile(LSM:Fetch("sound", name), _G['SC'].SET.soundChannel) |
_, SC.previousSound = PlaySoundFile(LSM:Fetch("sound", name), SC.SET.soundChannel) |
end |
function SliceCommander:PlaySound(name) |
function SliceCommander:ChangeAnchor() |
local offSetSize, numberPos, numberNeg, alignPos, alignNeg |
offSetSize = _G['SC'].SET.BarMargin+_G['SC'].SET.TimerHeight |
offSetSize = SC.SET.BarMargin+SC.SET.TimerHeight |
numberPos = 0 |
numberNeg = 0 |
for i = 1, _G['SC'].countBars do |
for j,v in pairs(_G['SC'].BARS) do |
for j,v in pairs(SC.BARS) do |
if v['obj']:IsVisible() and v['expire'] == nil then |
v['obj']:Hide() |
if v['type'] == 4 or v['type'] == 5 then |
SliceCommander:PlayCDSound(v) |
end |
end |
if _G['SC'].SET.Pos[j] == i and v['obj']:IsVisible() then |
alignPos = -1*numberNeg*offSetSize-_G['SC'].SET.BarMargin |
if SC.SET.Pos[j] == i and v['obj']:IsVisible() then |
alignPos = -1*numberNeg*offSetSize-SC.SET.BarMargin |
v['obj']:ClearAllPoints() |
v['obj']:SCPoint("TOPRIGHT", VTimerEnergy, "BOTTOMRIGHT", 0, alignPos) |
numberNeg = numberNeg +1 |
end |
if _G['SC'].SET.Pos[j] == i*-1 and v['obj']:IsVisible() then |
alignNeg = numberPos*offSetSize+_G['SC'].SET.BarMargin |
if SC.SET.Pos[j] == i*-1 and v['obj']:IsVisible() then |
alignNeg = numberPos*offSetSize+SC.SET.BarMargin |
v['obj']:ClearAllPoints() |
v['obj']:SCPoint("BOTTOMRIGHT", VTimerEnergy, "TOPRIGHT", 0, alignNeg) |
numberPos = numberPos +1 |
end |
function SliceCommander:isCombat() |
if _G['SC'].SET.SoundCombat==true then |
if SC.SET.SoundCombat==true then |
return UnitAffectingCombat("player") |
else |
return true |
local maxCP = UnitPowerMax("player", Enum.PowerType.ComboPoints) |
for i = 1, maxCP do |
_G['SC'].BARS['CP']['obj'].combos[i].bg:Hide() |
SC.BARS['CP']['obj'].combos[i].bg:Hide() |
end |
_G['SC'].BARS['CP']['obj']:Hide() |
SC.BARS['CP']['obj']:Hide() |
local text = points |
if text == 0 then |
text = '' |
end |
if points < _G['SC'].BARS['CP']['expire'] then |
_G['SC'].BARS['CP']['last'] = _G['SC'].BARS['CP']['expire'] |
if points < SC.BARS['CP']['expire'] then |
SC.BARS['CP']['last'] = SC.BARS['CP']['expire'] |
end |
_G['SC'].BARS['CP']['expire'] = points |
SC.BARS['CP']['expire'] = points |
SliceCommander_Combo:SetText(text) |
_G['SC'].BARS['CP']['obj'].comboText:SetText(text) |
SC.BARS['CP']['obj'].comboText:SetText(text) |
if _G['SC'].SET.display.CP == true then |
if SC.SET.display.CP == true then |
for i = 1, points do |
_G['SC'].BARS['CP']['obj'].combos[i].bg:Show() |
SC.BARS['CP']['obj'].combos[i].bg:Show() |
end |
_G['SC'].BARS['CP']['obj']:Show() |
SC.BARS['CP']['obj']:Show() |
end |
end |
end |
function SliceCommander:AbilityCDBar(spell) |
local BAR = _G['SC'].BARS[spell] |
local display = _G['SC'].SET.display[spell] |
local BAR = SC.BARS[spell] |
local display = SC.SET.display[spell] |
if display ~= true then |
BAR['expire'] = 0 |
return |
end |
if start == 0 then |
if _G['SC'].SET.flash[spell] == true and UnitAffectingCombat("player") then |
if SC.SET.flash[spell] == true and UnitAffectingCombat("player") then |
if not BAR['obj'].anim:IsPlaying() then |
BAR['obj']:SetValue(500) |
BAR['obj'].text:SetText('') |
end |
end |
if not BAR['obj']:IsVisible() then |
if _G['SC'].SET.SpellText == true then |
if SC.SET.SpellText == true then |
BAR['obj'].text2:SetText(string.format("%s", BAR['name'].." (CD)")) |
else |
BAR['obj'].text2:SetText('') |
end |
BAR['expire'] = (start+duration) |
local x |
if BAR['expire'] > 0 and _G['SC'].tNow < BAR['expire'] then |
x = BAR['expire'] - _G['SC'].tNow |
if BAR['expire'] > 0 and SC.tNow < BAR['expire'] then |
x = BAR['expire'] - SC.tNow |
else |
x = 0 |
end |
end |
function SliceCommander:ChargeAbilityCDBar(spell) |
local BAR = _G['SC'].BARS[spell] |
local display = _G['SC'].SET.display[spell] |
local BAR = SC.BARS[spell] |
local display = SC.SET.display[spell] |
if display ~= true then |
BAR['expire'] = 0 |
return |
end |
if charges == maxCharges then |
if _G['SC'].SET.flash[spell] == true and UnitAffectingCombat("player") then |
if SC.SET.flash[spell] == true and UnitAffectingCombat("player") then |
if not BAR['obj'].anim:IsPlaying() then |
BAR['obj']:SetValue(500) |
BAR['obj'].text:SetText('') |
end |
end |
if not BAR['obj']:IsVisible() then |
if _G['SC'].SET.SpellText == true then |
if SC.SET.SpellText == true then |
BAR['obj'].text2:SetText(string.format("%s", BAR['name'].." (CD)")) |
else |
BAR['obj'].text2:SetText('') |
BAR['expire'] = (start+duration) |
local x |
if BAR['expire'] > 0 and _G['SC'].tNow < BAR['expire'] then |
x = BAR['expire'] - _G['SC'].tNow |
if BAR['expire'] > 0 and SC.tNow < BAR['expire'] then |
x = BAR['expire'] - SC.tNow |
else |
x = 0 |
end |
textcount = ' x'..charges |
end |
if not BAR['count'] or BAR['count'] ~= charges then |
if _G['SC'].SET.SpellText == true then |
if SC.SET.SpellText == true then |
BAR['obj'].text2:SetText(string.format("%s", BAR['name'].." (CD)"..textcount)) |
else |
BAR['obj'].text2:SetText(textcount) |
function SliceCommander:EnableBar(BAR, duration, text, expire) |
BAR['expire'] = expire |
if _G['SC'].SET.FullTimer == true and duration then |
if SC.SET.FullTimer == true and duration then |
BAR['obj']:SetMinMaxValues(0, duration) |
else |
BAR['obj']:SetMinMaxValues(0, 6.0) |
end |
if _G['SC'].SET.SpellText == true then |
if SC.SET.SpellText == true then |
BAR['obj'].text2:SetText(string.format("%s", text)) |
else |
BAR['obj'].text2:SetText('') |
end |
function SliceCommander:UpdateBar(spell) |
local BAR = _G['SC'].BARS[spell] |
local BAR = SC.BARS[spell] |
local name, expire, icon, count, duration, unitCaster, x, _, maxValue, widthSeconde, value1, value2, value3, spellId |
if _G['SC'].SET.display[spell] ~= true then |
if SC.SET.display[spell] ~= true then |
BAR['expire'] = 0 |
if BAR['obj']:IsVisible() then |
SliceCommander:HideBar(BAR) |
end |
return |
end |
if _G['SC'].tNow == nil then |
_G['SC'].tNow = GetTime() |
if SC.tNow == nil then |
SC.tNow = GetTime() |
end |
value1, value2, value3 = 0 , 0, 0 |
BAR['expire'] = expire |
if expire == nil then |
if _G['SC'].SET.flash[spell] == true and UnitAffectingCombat("player") then |
if SC.SET.flash[spell] == true and UnitAffectingCombat("player") then |
if not BAR['obj'].anim:IsPlaying() then |
BAR['obj']:SetValue(500) |
BAR['obj'].text:SetText('') |
end |
end |
if not BAR['obj']:IsVisible() then |
if _G['SC'].SET.SpellText == true then |
if SC.SET.SpellText == true then |
BAR['obj'].text2:SetText(string.format("%s", BAR['name'])) |
else |
BAR['obj'].text2:SetText('') |
end |
end |
else |
if expire > 0 and _G['SC'].tNow < expire then |
x = expire - _G['SC'].tNow |
if expire > 0 and SC.tNow < expire then |
x = expire - SC.tNow |
else |
x = 0 |
end |
count = value1..value2..value3 |
end |
if not BAR['count'] or BAR['count'] ~= count then |
if _G['SC'].SET.SpellText == true then |
if SC.SET.SpellText == true then |
BAR['obj'].text2:SetText(string.format("%s", BAR['name']..textcount)) |
else |
BAR['obj'].text2:SetText(textcount) |
if not UnitAffectingCombat("player") then |
local alreadyExist = GetMacroBody("SC_TOT") |
if alreadyExist then |
EditMacro("SC_TOT", "SC_TOT", "INV_MISC_QUESTIONMARK", "#showtooltip\n/cast [@".._G['SC'].SET.TOTTarget..",modifier:alt] [help] [@targettarget, help][@none,@".._G['SC'].SET.TOTTarget.."] "..GetSpellInfo(SC_SPELL['TOTCD']), 1, 1) |
EditMacro("SC_TOT", "SC_TOT", "INV_MISC_QUESTIONMARK", "#showtooltip\n/cast [@"..SC.SET.TOTTarget..",modifier:alt] [help] [@targettarget, help][@none,@"..SC.SET.TOTTarget.."] "..GetSpellInfo(SC_SPELL['TOTCD']), 1, 1) |
else |
CreateMacro("SC_TOT", "INV_MISC_QUESTIONMARK", "#showtooltip\n/cast [@".._G['SC'].SET.TOTTarget..",modifier:alt] [help] [@targettarget, help][@none,@".._G['SC'].SET.TOTTarget.."] "..GetSpellInfo(SC_SPELL['TOTCD']), 1, 1) |
CreateMacro("SC_TOT", "INV_MISC_QUESTIONMARK", "#showtooltip\n/cast [@"..SC.SET.TOTTarget..",modifier:alt] [help] [@targettarget, help][@none,@"..SC.SET.TOTTarget.."] "..GetSpellInfo(SC_SPELL['TOTCD']), 1, 1) |
end |
end |
end |
function SliceCommander:HealthBar(bar) |
if _G['SC'].SET.display[bar] then |
if SC.SET.display[bar] then |
local HP, maxHP, pourcentHP, hexCol, rCol, gCol, bCol, healthText |
HP = UnitHealth(_G['SC'].BARS[bar]['target']) |
maxHP = UnitHealthMax(_G['SC'].BARS[bar]['target']) |
HP = UnitHealth(SC.BARS[bar]['target']) |
maxHP = UnitHealthMax(SC.BARS[bar]['target']) |
if maxHP ~= 0 then |
pourcentHP = (HP / maxHP) * 100 |
else |
HP = 0 |
end |
if HP == 0 then |
if _G['SC'].BARS[bar]['obj']:IsVisible() then |
_G['SC'].BARS[bar]['obj']:Hide() |
if SC.BARS[bar]['obj']:IsVisible() then |
SC.BARS[bar]['obj']:Hide() |
end |
_G['SC'].BARS[bar]['expire'] = 0 |
SC.BARS[bar]['expire'] = 0 |
else |
if _G['SC'].BARS[bar]['expire'] > 35 and pourcentHP < 35 then |
SliceCommander:PlaySound(_G['SC'].SET[bar].LowUnder) |
elseif _G['SC'].BARS[bar]['expire'] > 50 and pourcentHP < 50 then |
SliceCommander:PlaySound(_G['SC'].SET[bar].MidUnder) |
if SC.BARS[bar]['expire'] > 35 and pourcentHP < 35 then |
SliceCommander:PlaySound(SC.SET[bar].LowUnder) |
elseif SC.BARS[bar]['expire'] > 50 and pourcentHP < 50 then |
SliceCommander:PlaySound(SC.SET[bar].MidUnder) |
end |
hexCol = (100-pourcentHP)*(255/100) |
rCol = hexCol |
end |
bCol = 50 |
if _G['SC'].SET[bar].HideCombat and not UnitAffectingCombat("player") then |
if _G['SC'].BARS[bar]['obj']:IsVisible() then |
_G['SC'].BARS[bar]['obj']:Hide() |
if SC.SET[bar].HideCombat and not UnitAffectingCombat("player") then |
if SC.BARS[bar]['obj']:IsVisible() then |
SC.BARS[bar]['obj']:Hide() |
end |
_G['SC'].BARS[bar]['expire'] = 0 |
SC.BARS[bar]['expire'] = 0 |
else |
if not _G['SC'].BARS[bar]['obj']:IsVisible() then |
_G['SC'].BARS[bar]['obj']:Show() |
if not SC.BARS[bar]['obj']:IsVisible() then |
SC.BARS[bar]['obj']:Show() |
end |
_G['SC'].BARS[bar]['expire'] = pourcentHP |
SC.BARS[bar]['expire'] = pourcentHP |
end |
_G['SC'].BARS[bar]['obj']:SetValue(pourcentHP) |
if _G['SC'].SET[bar].value then |
SC.BARS[bar]['obj']:SetValue(pourcentHP) |
if SC.SET[bar].value then |
if HP > 1000000000 then |
healthText = string.format("%0.1f", HP/1000000000)..'G' |
elseif HP > 1000000 then |
else |
healthText = string.format("%0.1f", pourcentHP) |
end |
_G['SC'].BARS[bar]['obj'].text:SetText(healthText) |
_G['SC'].BARS[bar]['obj']:SetStatusBarColor(rCol/255,gCol/255,bCol/255) |
SC.BARS[bar]['obj'].text:SetText(healthText) |
SC.BARS[bar]['obj']:SetStatusBarColor(rCol/255,gCol/255,bCol/255) |
end |
else |
_G['SC'].BARS[bar]['expire'] = 0 |
_G['SC'].BARS[bar]['obj']:Hide() |
SC.BARS[bar]['expire'] = 0 |
SC.BARS[bar]['obj']:Hide() |
end |
end |
function SliceCommander:TargetThreat() |
local hexCol, rCol, gCol, bCol |
if _G['SC'].SET.display.THREAT == false or (_G['SC'].SET.ThreatGroupOnly and IsInRaid() == false and IsInGroup() == false) then |
_G['SC'].BARS['THREAT']['expire'] = 0 |
if SC.SET.display.THREAT == false or (SC.SET.ThreatGroupOnly and IsInRaid() == false and IsInGroup() == false) then |
SC.BARS['THREAT']['expire'] = 0 |
else |
local isTanking, status, threatpct, rawthreatpct, threatvalue = UnitDetailedThreatSituation("player", "target") |
if rawthreatpct == nil then |
_G['SC'].BARS['THREAT']['expire'] = 0 |
SC.BARS['THREAT']['expire'] = 0 |
else |
hexCol = rawthreatpct *(255/110) |
rCol = hexCol-45 |
gCol = 50 |
end |
bCol = 50 |
_G['SC'].BARS['THREAT']['expire'] = rawthreatpct |
SC.BARS['THREAT']['expire'] = rawthreatpct |
end |
end |
if _G['SC'].BARS['THREAT']['expire'] == 0 then |
_G['SC'].BARS['THREAT']['obj']:Hide() |
if SC.BARS['THREAT']['expire'] == 0 then |
SC.BARS['THREAT']['obj']:Hide() |
else |
_G['SC'].BARS['THREAT']['obj']:SetValue(_G['SC'].BARS['THREAT']['expire']) |
_G['SC'].BARS['THREAT']['obj'].text:SetText(string.format("%0.1f", _G['SC'].BARS['THREAT']['expire'])) |
_G['SC'].BARS['THREAT']['obj']:SetStatusBarColor(rCol/255,gCol/255,bCol/255) |
_G['SC'].BARS['THREAT']['obj']:Show() |
SC.BARS['THREAT']['obj']:SetValue(SC.BARS['THREAT']['expire']) |
SC.BARS['THREAT']['obj'].text:SetText(string.format("%0.1f", SC.BARS['THREAT']['expire'])) |
SC.BARS['THREAT']['obj']:SetStatusBarColor(rCol/255,gCol/255,bCol/255) |
SC.BARS['THREAT']['obj']:Show() |
SliceCommander:ChangeAnchor() |
end |
end |
function SliceCommander:SetTransparency(value) |
VTimerEnergy:SetAlpha(value/100) |
_G['SC'].OTHER['AS']['obj']:SetAlpha(value/100) |
SC.OTHER['AS']['obj']:SetAlpha(value/100) |
end |
function SliceCommander:TestDP() |
local combat = UnitAffectingCombat("player") |
if _G['SC'].SET.display.DPICON then --and GetSpecialization() == 1 |
if SC.SET.display.DPICON then --and GetSpecialization() == 1 |
local aSpec = GetSpecialization() |
local mhPoison = _G['SC'].SET.poison.mh[aSpec] |
local ohPoison = _G['SC'].SET.poison.oh[aSpec] |
local mhPoison = SC.SET.poison.mh[aSpec] |
local ohPoison = SC.SET.poison.oh[aSpec] |
local _, _, _, selected = GetTalentInfo(4, 1, 1) |
if not selected and ohPoison == SC_SPELL['LP'] then |
ohPoison = 'CRP' |
local name, _, _, _, _, expirationTime = SliceCommander:UnitAura("player", SC_SPELLID[mhPoison], "HELPFUL PLAYER") |
local name2, _, _, _, _, expirationTime2 = SliceCommander:UnitAura("player", SC_SPELLID[ohPoison], "HELPFUL PLAYER") |
local minimalTime = _G['SC'].SET.display.DPTIME*60 |
local minimalTime = SC.SET.display.DPTIME*60 |
if IsMounted() or ((name and ((expirationTime-_G['SC'].tNow) > minimalTime or combat)) and (name2 and ((expirationTime2-_G['SC'].tNow) > minimalTime or combat))) then |
if _G['SC'].SET.IsLocked == true then |
if _G['SC'].OTHER['POISON']['obj']:GetAlpha() == 1 then |
_G['SC'].OTHER['POISON']['obj']:SetAlpha(0) |
if IsMounted() or ((name and ((expirationTime-SC.tNow) > minimalTime or combat)) and (name2 and ((expirationTime2-SC.tNow) > minimalTime or combat))) then |
if SC.SET.IsLocked == true then |
if SC.OTHER['POISON']['obj']:GetAlpha() == 1 then |
SC.OTHER['POISON']['obj']:SetAlpha(0) |
end |
if not combat and _G['SC'].OTHER['POISON']['obj'].button:IsMouseEnabled() then |
--_G['SC'].OTHER['POISON']['obj'].button:EnableMouse(false) |
if not combat and SC.OTHER['POISON']['obj'].button:IsMouseEnabled() then |
--SC.OTHER['POISON']['obj'].button:EnableMouse(false) |
end |
end |
elseif not name or not name2 or (((expirationTime-_G['SC'].tNow) < minimalTime or (expirationTime2-_G['SC'].tNow) < minimalTime) and not combat) and not IsMounted() then |
if _G['SC'].OTHER['POISON']['obj']:GetAlpha() ~= 1 then |
SliceCommander:PlaySoundReal(_G['SC'].SET.DPSound) |
_G['SC'].OTHER['POISON']['obj']:SetAlpha(1) |
elseif not name or not name2 or (((expirationTime-SC.tNow) < minimalTime or (expirationTime2-SC.tNow) < minimalTime) and not combat) and not IsMounted() then |
if SC.OTHER['POISON']['obj']:GetAlpha() ~= 1 then |
SliceCommander:PlaySoundReal(SC.SET.DPSound) |
SC.OTHER['POISON']['obj']:SetAlpha(1) |
end |
if not combat and not _G['SC'].OTHER['POISON']['obj'].button:IsMouseEnabled() and _G['SC'].SET.display.DPBUT then |
_G['SC'].OTHER['POISON']['obj'].button:EnableMouse(true) |
if not combat and not SC.OTHER['POISON']['obj'].button:IsMouseEnabled() and SC.SET.display.DPBUT then |
SC.OTHER['POISON']['obj'].button:EnableMouse(true) |
end |
end |
else |
if _G['SC'].SET.IsLocked == true then |
if _G['SC'].OTHER['POISON']['obj']:GetAlpha() == 1 then |
_G['SC'].OTHER['POISON']['obj']:SetAlpha(0) |
if SC.SET.IsLocked == true then |
if SC.OTHER['POISON']['obj']:GetAlpha() == 1 then |
SC.OTHER['POISON']['obj']:SetAlpha(0) |
end |
if not combat and _G['SC'].OTHER['POISON']['obj'].button:IsMouseEnabled() then |
--_G['SC'].OTHER['POISON']['obj'].button:EnableMouse(false) |
if not combat and SC.OTHER['POISON']['obj'].button:IsMouseEnabled() then |
--SC.OTHER['POISON']['obj'].button:EnableMouse(false) |
end |
end |
end |
function SliceCommander:Latency() |
local _ |
_G['SC'].tNow = GetTime() |
if (_G['SC'].SET.PadLatency) then |
_, _, _G['SC'].lag = GetNetStats() |
_G['SC'].tNow = _G['SC'].tNow + (_G['SC'].lag*2/1000) |
SC.tNow = GetTime() |
if (SC.SET.PadLatency) then |
_, _, SC.lag = GetNetStats() |
SC.tNow = SC.tNow + (SC.lag*2/1000) |
end |
end |
VTimerEnergyTxt:SetText(value) |
if UnitPowerMax("player", Enum.PowerType.Energy) == UnitPower("player", Enum.PowerType.Energy) and not UnitAffectingCombat("player") then |
SliceCommander:SetTransparency(_G['SC'].SET.EnergyTrans) |
SliceCommander:SetTransparency(SC.SET.EnergyTrans) |
else |
SliceCommander:SetTransparency(_G['SC'].SET.FrameOpacity) |
SliceCommander:SetTransparency(SC.SET.FrameOpacity) |
end |
end |
function SliceCommander:GCD() |
if not _G['SC'].OTHER['AS']['expire'] then return _G['SC'].OTHER['AS']['obj']:Hide() end |
if not SC.OTHER['AS']['expire'] then return SC.OTHER['AS']['obj']:Hide() end |
local val = (_G['SC'].OTHER['AS']['expire']-GetTime()) |
local val = (SC.OTHER['AS']['expire']-GetTime()) |
if val < 0 then |
_G['SC'].OTHER['AS']['expire'] = nil |
SC.OTHER['AS']['expire'] = nil |
else |
_G['SC'].OTHER['AS']['obj']:SetValue(val) |
SC.OTHER['AS']['obj']:SetValue(val) |
end |
end |
end |
function SliceCommander:Pandemic(BAR, current) |
if _G['SC'].SET.Pandemic and BAR['pandemic'] then |
if SC.SET.Pandemic and BAR['pandemic'] then |
local timers = BAR['pandemictimer'] |
local maxCP = UnitPowerMax("player", Enum.PowerType.ComboPoints) |
if maxCP > 6 then |
end |
function SliceCommander:Tick(BAR, current) |
if _G['SC'].SET.Tick and BAR['tick'] ~= nil and BAR['tick']['value'] ~= nil then |
if SC.SET.Tick and BAR['tick'] ~= nil and BAR['tick']['value'] ~= nil then |
local tick = BAR['tick']['value'] |
local _, maxValue = BAR['obj']:GetMinMaxValues() |
local widthSeconde = (BAR['obj']:GetWidth())/maxValue |
end |
function SliceCommander:MultipleAbilityBar(spell) |
local BAR = _G['SC'].BARS[spell] |
local BAR = SC.BARS[spell] |
local expire, duration, tempDuration, x, _, expire |
if _G['SC'].SET.display[spell] ~= true then |
if SC.SET.display[spell] ~= true then |
BAR['expire'] = 0 |
if BAR['obj']:IsVisible() then |
SliceCommander:HideBar(BAR) |
for k, v in pairs(BAR.subbar) do |
_, _, _, _, tempDuration, expire = SliceCommander:UnitAura("player", k, "HELPFUL PLAYER") |
if expire ~= nil then |
if _G['SC'].SET.RB[v] then |
spellname[v] = _G['SC'].SET.RB[v] |
if SC.SET.RB[v] then |
spellname[v] = SC.SET.RB[v] |
spellduration[v] = expire |
end |
if expire > BAR['expire'] then |
end |
end |
if _G['SC'].tNow == nil then |
_G['SC'].tNow = GetTime() |
if SC.tNow == nil then |
SC.tNow = GetTime() |
end |
if BAR['expire'] > 0 and _G['SC'].tNow < BAR['expire'] then |
x = BAR['expire'] - _G['SC'].tNow |
if BAR['expire'] > 0 and SC.tNow < BAR['expire'] then |
x = BAR['expire'] - SC.tNow |
else |
x = 0 |
end |
if x > 0 then |
local xlast = SliceCommander:ShowBar(BAR, duration, false) |
if _G['SC'].SET.SpellText == true then |
if SC.SET.SpellText == true then |
local displayConcatName = spell..'Name' |
if _G['SC'].SET.display[displayConcatName] and next(spellname) ~= nil then |
if SC.SET.display[displayConcatName] and next(spellname) ~= nil then |
local label = '' |
for k, v in pairs(spellduration) do |
if v == BAR['expire'] then |
end |
for k, v in pairs(spellduration) do |
if v ~= BAR['expire'] then |
local xOther = v - _G['SC'].tNow |
local xOther = v - SC.tNow |
label = label .. ' - |cff33bb33' .. spellname[k] .. '|r'-- .. ' (' .. string.format("%0.1f", xOther) .. ')|r' |
end |
end |
SliceCommander:Pandemic(BAR, x) |
SliceCommander:SoundBar(BAR, x, xlast) |
else |
if _G['SC'].SET.flash[spell] == true and UnitAffectingCombat("player") then |
if SC.SET.flash[spell] == true and UnitAffectingCombat("player") then |
if not BAR['obj'].anim:IsPlaying() then |
BAR['obj']:SetValue(500) |
BAR['obj'].text:SetText('') |
end |
end |
if not BAR['obj']:IsVisible() then |
if _G['SC'].SET.SpellText == true then |
if SC.SET.SpellText == true then |
BAR['obj'].text2:SetText(string.format("%s", BAR['name'])) |
else |
BAR['obj'].text2:SetText('') |
SlashCmdList["SLICECOMMANDER"] = function(msg, editbox) |
local command, rest = msg:match("^(%S*)%s*(.-)$") |
if command == "lock" or command == "unlock" then |
SliceCommander:LockCkecked(not _G['SC'].SET.IsLocked) |
SliceCommander:LockCkecked(not SC.SET.IsLocked) |
elseif command == "eyefinity" and tonumber(rest) then |
_G['SC'].SET.eyefinity = rest |
SC.SET.eyefinity = rest |
ReloadUI() |
elseif command == "tot" then |
if rest == nil or rest == '' or not tostring(rest) then |
end |
if rest and tostring(rest) then |
rest = tostring(rest) |
_G['SC'].SET.TOTTarget = rest |
SC.SET.TOTTarget = rest |
SliceCommander:CreateTOTMacro() |
print(L['Macro update']) |
else |
print(L['Macro update failed!']) |
end |
elseif command == "resolution" and tostring(rest) then |
_G['SC'].SET.fixedResolution = rest |
SC.SET.fixedResolution = rest |
ReloadUI() |
else |
InterfaceOptionsFrame_OpenToCategory("SliceCommander "..GetAddOnMetadata("SliceCommander", "Version")) |
local AceConfigDialog = LibStub("AceConfigDialog-3.0") |
local AceConfig = LibStub("AceConfig-3.0") |
local L = LibStub("AceLocale-3.0"):GetLocale("SliceCommander") |
local _G = getfenv(0) |
function SliceCommander:ChangeVolume(val) |
if _G['SC'].SET.soundChannel == "Master" then |
if SC.SET.soundChannel == "Master" then |
SetCVar("Sound_MasterVolume",val) |
elseif _G['SC'].SET.soundChannel == "SFX" then |
elseif SC.SET.soundChannel == "SFX" then |
SetCVar("Sound_SFXVolume",val) |
elseif _G['SC'].SET.soundChannel == "Ambience" then |
elseif SC.SET.soundChannel == "Ambience" then |
SetCVar("Sound_AmbienceVolume",val) |
elseif _G['SC'].SET.soundChannel == "Music" then |
elseif SC.SET.soundChannel == "Music" then |
SetCVar("Sound_MusicVolume",val) |
end |
end |
end |
function SliceCommander:MoveStart(frame) |
if _G['SC'].SET.IsLocked == false then |
if SC.SET.IsLocked == false then |
frame:StartMoving() |
end |
end |
function SliceCommander:MoveStop(frame) |
if _G['SC'].SET.IsLocked == false then |
if SC.SET.IsLocked == false then |
frame:StopMovingOrSizing() |
frame:SetUserPlaced(false) |
_G['SC'].OTHER[frame:GetName()]['position'].point, |
_G['SC'].OTHER[frame:GetName()]['position'].relativeTo, |
_G['SC'].OTHER[frame:GetName()]['position'].relativePoint, |
_G['SC'].OTHER[frame:GetName()]['position'].xOfs, |
_G['SC'].OTHER[frame:GetName()]['position'].yOfs = frame:GetPoint(); |
SC.OTHER[frame:GetName()]['position'].point, |
SC.OTHER[frame:GetName()]['position'].relativeTo, |
SC.OTHER[frame:GetName()]['position'].relativePoint, |
SC.OTHER[frame:GetName()]['position'].xOfs, |
SC.OTHER[frame:GetName()]['position'].yOfs = frame:GetPoint(); |
end |
end |
function SliceCommander:ApplySkin(isApply) |
if isApply then |
for i,v in pairs(_G['SC'].BARS) do |
for i,v in pairs(SC.BARS) do |
if i ~= 'CP' then |
if i ~= 'THREAT' and i ~= 'HEALTH' then |
v['obj'].icon:ClearAllPoints() |
end |
end |
else |
for i,v in pairs(_G['SC'].BARS) do |
for i,v in pairs(SC.BARS) do |
if i ~= 'CP' then |
if i ~= 'THREAT' and i ~= 'HEALTH' then |
v['obj'].icon:ClearAllPoints() |
end |
end |
SliceCommander:SetTimersHeight(_G['SC'].SET.TimerHeight) |
SliceCommander:SetWidth(_G['SC'].SET.Width) |
SliceCommander:SetEnergyHeight(_G['SC'].SET.EnergyHeight) |
SliceCommander:SetIconSize(_G['SC'].SET.IconSize) |
SliceCommander:SetTimersHeight(SC.SET.TimerHeight) |
SliceCommander:SetWidth(SC.SET.Width) |
SliceCommander:SetEnergyHeight(SC.SET.EnergyHeight) |
SliceCommander:SetIconSize(SC.SET.IconSize) |
end |
function SliceCommander:GetVolume() |
if _G['SC'].SET.soundChannel == "Master" then |
if SC.SET.soundChannel == "Master" then |
return GetCVar("Sound_MasterVolume") |
elseif _G['SC'].SET.soundChannel == "SFX" then |
elseif SC.SET.soundChannel == "SFX" then |
return GetCVar("Sound_SFXVolume") |
elseif _G['SC'].SET.soundChannel == "Ambience" then |
elseif SC.SET.soundChannel == "Ambience" then |
return GetCVar("Sound_AmbienceVolume") |
elseif _G['SC'].SET.soundChannel == "Music" then |
elseif SC.SET.soundChannel == "Music" then |
return GetCVar("Sound_MusicVolume") |
end |
end |
end |
function SliceCommander:InitFont() |
_G['SC'].BarFont1 = SliceCommander:NewFont("VTimerFont2", 8, 0.7, 213/255, 200/255, 184/255) |
_G['SC'].BarFont2 = SliceCommander:NewFont("VTimerFont4", 8, 1, 213/255, 200/255, 184/255) |
_G['SC'].FontIcon = SliceCommander:NewFont("IconFont", 15, 0.5, 1, 1, 1) |
SC.BarFont1 = SliceCommander:NewFont("VTimerFont2", 8, 0.7, 213/255, 200/255, 184/255) |
SC.BarFont2 = SliceCommander:NewFont("VTimerFont4", 8, 1, 213/255, 200/255, 184/255) |
SC.FontIcon = SliceCommander:NewFont("IconFont", 15, 0.5, 1, 1, 1) |
end |
function SliceCommander:InitIcon() |
_G['SC'].OTHER['POISON']['obj'] = SliceCommander:NewIcon("Interface\\Icons\\ability_rogue_dualweild", 'POISON')--Create poison icon warning when it left 5minute or less on the current timer |
_G['SC'].OTHER['POISON']['obj']:Show() |
_G['SC'].OTHER['POISON']['obj'].button = CreateFrame("Button", nil, UIParent, "SecureActionButtonTemplate")--Create button to reaply poison |
_G['SC'].OTHER['POISON']['obj'].button:SetFrameStrata("HIGH") |
_G['SC'].OTHER['POISON']['obj'].button:SetFrameLevel(5) |
_G['SC'].OTHER['POISON']['obj'].button:SetPoint("BOTTOMLEFT", _G['SC'].OTHER['POISON']['obj'], "BOTTOMLEFT") |
_G['SC'].OTHER['POISON']['obj'].button:SetPoint("TOPRIGHT", _G['SC'].OTHER['POISON']['obj'], "TOPRIGHT") |
SC.OTHER['POISON']['obj'] = SliceCommander:NewIcon("Interface\\Icons\\ability_rogue_dualweild", 'POISON')--Create poison icon warning when it left 5minute or less on the current timer |
SC.OTHER['POISON']['obj']:Show() |
SC.OTHER['POISON']['obj'].button = CreateFrame("Button", nil, UIParent, "SecureActionButtonTemplate")--Create button to reaply poison |
SC.OTHER['POISON']['obj'].button:SetFrameStrata("HIGH") |
SC.OTHER['POISON']['obj'].button:SetFrameLevel(5) |
SC.OTHER['POISON']['obj'].button:SetPoint("BOTTOMLEFT", SC.OTHER['POISON']['obj'], "BOTTOMLEFT") |
SC.OTHER['POISON']['obj'].button:SetPoint("TOPRIGHT", SC.OTHER['POISON']['obj'], "TOPRIGHT") |
local state = C_CVar.GetCVarBool("ActionButtonUseKeyDown") |
if state then |
_G['SC'].OTHER['POISON']['obj'].button:RegisterForClicks("LeftButtonDown", "RightButtonDown") |
SC.OTHER['POISON']['obj'].button:RegisterForClicks("LeftButtonDown", "RightButtonDown") |
else |
_G['SC'].OTHER['POISON']['obj'].button:RegisterForClicks("LeftButtonUp", "RightButtonUp") |
SC.OTHER['POISON']['obj'].button:RegisterForClicks("LeftButtonUp", "RightButtonUp") |
end |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("unit", "player") |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("type", "spell") |
_G['SC'].OTHER['POISON']['obj'].button:EnableMouse(false) |
SC.OTHER['POISON']['obj'].button:SetAttribute("unit", "player") |
SC.OTHER['POISON']['obj'].button:SetAttribute("type", "spell") |
SC.OTHER['POISON']['obj'].button:EnableMouse(false) |
end |
function SliceCommander:InitGCDBar() |
_G['SC'].OTHER['AS']['obj'] = SliceCommander:ThinBar("BOTTOMLEFT", "TOPLEFT", 0 , 0)--Create Autoshot |
_G['SC'].OTHER['AS']['obj']:SetStatusBarColor(180/255, 38/255, 38/255) |
SC.OTHER['AS']['obj'] = SliceCommander:ThinBar("BOTTOMLEFT", "TOPLEFT", 0 , 0)--Create Autoshot |
SC.OTHER['AS']['obj']:SetStatusBarColor(180/255, 38/255, 38/255) |
end |
function SliceCommander:DisableIcon(obj, val) |
end |
function SliceCommander:InitBar() |
_G['SC'].BARS['CP']['obj'] = SliceCommander:CPFrame()--create Combo Point bar |
SC.BARS['CP']['obj'] = SliceCommander:CPFrame()--create Combo Point bar |
local maxCP = UnitPowerMax("player", Enum.PowerType.ComboPoints) |
for i = 1, maxCP do |
_G['SC'].BARS['CP']['obj'].combos[i].bg:SetVertexColor(unpack(_G['SC'].SET.CP[maxCP][i])) |
_G['SC'].BARS['CP']['obj'].combos[i].border[2]:SetBackdropColor(unpack(_G['SC'].V.wColor)) |
SC.BARS['CP']['obj'].combos[i].bg:SetVertexColor(unpack(SC.SET.CP[maxCP][i])) |
SC.BARS['CP']['obj'].combos[i].border[2]:SetBackdropColor(unpack(SC.V.wColor)) |
end |
for i,v in pairs(_G['SC'].BARS) do |
for i,v in pairs(SC.BARS) do |
if i ~= "CP" then |
_G['SC'].BARS[i].obj = SliceCommander:NewFrame(v.color, i) |
SC.BARS[i].obj = SliceCommander:NewFrame(v.color, i) |
end |
end |
--GLOBAL |
_G['SC'].BARS['KSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_kidneyshot") |
_G['SC'].BARS['TOTCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Rogue_TricksOftheTrade") |
_G['SC'].BARS['VANCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Vanish") |
_G['SC'].BARS['MDCD']['obj'].icon:SetTexture("Interface\\Icons\\achievement_bg_killingblow_berserker") |
_G['SC'].BARS['DFACD']['obj'].icon:SetTexture("Interface\\Icons\\spell_rogue_deathfromabove") |
_G['SC'].BARS['CVCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_crimsonvial") |
_G['SC'].BARS['KICD']['obj'].icon:SetTexture("Interface\\Icons\\ability_kick") |
_G['SC'].BARS['COSCD']['obj'].icon:SetTexture("Interface\\Icons\\spell_shadow_nethercloak") |
_G['SC'].BARS['EVACD']['obj'].icon:SetTexture("Interface\\Icons\\spell_shadow_shadowward") |
_G['SC'].BARS['SPRCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_sprint") |
_G['SC'].BARS['SSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_shadowstep") |
_G['SC'].BARS['FECD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_feint") |
SC.BARS['KSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_kidneyshot") |
SC.BARS['TOTCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Rogue_TricksOftheTrade") |
SC.BARS['VANCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Vanish") |
SC.BARS['MDCD']['obj'].icon:SetTexture("Interface\\Icons\\achievement_bg_killingblow_berserker") |
SC.BARS['DFACD']['obj'].icon:SetTexture("Interface\\Icons\\spell_rogue_deathfromabove") |
SC.BARS['CVCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_crimsonvial") |
SC.BARS['KICD']['obj'].icon:SetTexture("Interface\\Icons\\ability_kick") |
SC.BARS['COSCD']['obj'].icon:SetTexture("Interface\\Icons\\spell_shadow_nethercloak") |
SC.BARS['EVACD']['obj'].icon:SetTexture("Interface\\Icons\\spell_shadow_shadowward") |
SC.BARS['SPRCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_sprint") |
SC.BARS['SSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_shadowstep") |
SC.BARS['FECD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_feint") |
--COVENANTS |
_G['SC'].BARS['SUMSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_kyrian_summonsteward") |
_G['SC'].BARS['FCCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_necrolord_fleshcraft") |
_G['SC'].BARS['SOSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_nightfae_flicker") |
_G['SC'].BARS['DOSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_venthyr_doorofshadows") |
_G['SC'].BARS['ERCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_bastion_rogue") |
_G['SC'].BARS['SBSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_maldraxxus_rogue") |
_G['SC'].BARS['SPCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_ardenweald_rogue") |
_G['SC'].BARS['FLACD']['obj'].icon:SetTexture("Interface\\Icons\\ability_revendreth_rogue") |
SC.BARS['SUMSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_kyrian_summonsteward") |
SC.BARS['FCCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_necrolord_fleshcraft") |
SC.BARS['SOSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_nightfae_flicker") |
SC.BARS['DOSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_venthyr_doorofshadows") |
SC.BARS['ERCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_bastion_rogue") |
SC.BARS['SBSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_maldraxxus_rogue") |
SC.BARS['SPCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_ardenweald_rogue") |
SC.BARS['FLACD']['obj'].icon:SetTexture("Interface\\Icons\\ability_revendreth_rogue") |
--ASSASSINATION |
_G['SC'].BARS['VENCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Rogue_Deadliness") |
_G['SC'].BARS['EXCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_deathwing_bloodcorruption_earth") |
_G['SC'].BARS['GARCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_garrote") |
_G['SC'].BARS['KBCD']['obj'].icon:SetTexture("Interface\\Icons\\inv_knife_1h_artifactgarona_d_01") |
SC.BARS['VENCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Rogue_Deadliness") |
SC.BARS['EXCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_deathwing_bloodcorruption_earth") |
SC.BARS['GARCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_garrote") |
SC.BARS['KBCD']['obj'].icon:SetTexture("Interface\\Icons\\inv_knife_1h_artifactgarona_d_01") |
--OUTLAW |
_G['SC'].BARS['ARCD']['obj'].icon:SetTexture("Interface\\Icons\\Spell_Shadow_ShadowWordDominate") |
_G['SC'].BARS['KSPCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Rogue_Murderspree") |
_G['SC'].BARS['GHCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_grapplinghook") |
_G['SC'].BARS['BECD']['obj'].icon:SetTexture("Interface\\Icons\\inv_weapon_rifle_01") |
_G['SC'].BARS['RB']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_rollthebones") |
_G['SC'].BARS['RBCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_rollthebones") |
_G['SC'].BARS['CDBCD']['obj'].icon:SetTexture("Interface\\Icons\\inv_sword_1h_artifactskywall_d_01dual") |
_G['SC'].BARS['BFCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Warrior_PunishingBlow") |
_G['SC'].BARS['GSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_creature_cursed_02") |
_G['SC'].BARS['BRCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_arakkoa_spinning_blade") |
_G['SC'].BARS['GGCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_gouge") |
SC.BARS['ARCD']['obj'].icon:SetTexture("Interface\\Icons\\Spell_Shadow_ShadowWordDominate") |
SC.BARS['KSPCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Rogue_Murderspree") |
SC.BARS['GHCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_grapplinghook") |
SC.BARS['BECD']['obj'].icon:SetTexture("Interface\\Icons\\inv_weapon_rifle_01") |
SC.BARS['RB']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_rollthebones") |
SC.BARS['RBCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_rollthebones") |
SC.BARS['CDBCD']['obj'].icon:SetTexture("Interface\\Icons\\inv_sword_1h_artifactskywall_d_01dual") |
SC.BARS['BFCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Warrior_PunishingBlow") |
SC.BARS['GSCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_creature_cursed_02") |
SC.BARS['BRCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_arakkoa_spinning_blade") |
SC.BARS['GGCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_gouge") |
--SUBTLETY |
_G['SC'].BARS['SDCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Rogue_Shadowdance") |
_G['SC'].BARS['SBCD']['obj'].icon:SetTexture("Interface\\Icons\\inv_knife_1h_grimbatolraid_d_03") |
_G['SC'].BARS['GBCD']['obj'].icon:SetTexture("Interface\\Icons\\inv_knife_1h_artifactfangs_d_01") |
_G['SC'].BARS['SODCD']['obj'].icon:SetTexture("Interface\\Icons\\spell_shadow_rune") |
_G['SC'].BARS['SHTCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_throwingspecialization") |
_G['SC'].BARS['STHCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_sinistercalling") |
SC.BARS['SDCD']['obj'].icon:SetTexture("Interface\\Icons\\Ability_Rogue_Shadowdance") |
SC.BARS['SBCD']['obj'].icon:SetTexture("Interface\\Icons\\inv_knife_1h_grimbatolraid_d_03") |
SC.BARS['GBCD']['obj'].icon:SetTexture("Interface\\Icons\\inv_knife_1h_artifactfangs_d_01") |
SC.BARS['SODCD']['obj'].icon:SetTexture("Interface\\Icons\\spell_shadow_rune") |
SC.BARS['SHTCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_throwingspecialization") |
SC.BARS['STHCD']['obj'].icon:SetTexture("Interface\\Icons\\ability_rogue_sinistercalling") |
SliceCommander:DisableIcon(_G['SC'].BARS['THREAT']['obj'], 110) |
SliceCommander:DisableIcon(_G['SC'].BARS['HEALTH']['obj'], 100) |
SliceCommander:DisableIcon(_G['SC'].BARS['THEALTH']['obj'], 100) |
SliceCommander:DisableIcon(SC.BARS['THREAT']['obj'], 110) |
SliceCommander:DisableIcon(SC.BARS['HEALTH']['obj'], 100) |
SliceCommander:DisableIcon(SC.BARS['THEALTH']['obj'], 100) |
end |
function SliceCommander:InitConstantValue() |
local height, width |
height = tonumber(string.match(GetCVar("gxWindowedResolution"), "%d+x(%d+)")) |
width = tonumber(string.match(GetCVar("gxWindowedResolution"), "(%d+)x+%d")) |
width = width*_G['SC'].SET.eyefinity--eyefinity is wired |
_G['SC'].curCombo = 0 |
_G['SC'].RUP_AlertPending = 3 |
_G['SC'].SND_AlertPending = 3 |
_G['SC'].V = { |
width = width*SC.SET.eyefinity--eyefinity is wired |
SC.curCombo = 0 |
SC.RUP_AlertPending = 3 |
SC.SND_AlertPending = 3 |
SC.V = { |
['bColor'] = {.1,.1,.1}, |
['wColor'] = {.6,.6,.6}, |
['pxH'] = UIParent:GetHeight() / height, |
['pxW'] = UIParent:GetWidth() / width, |
} |
_G['SC'].Spark = {} |
SC.Spark = {} |
end |
function SliceCommander:ShowHideBorder(visible) |
for i,v in pairs(VTimerEnergy.border) do |
v:Show() |
end |
for i,v in pairs(_G['SC'].BARS) do |
for i,v in pairs(SC.BARS) do |
if i ~= "CP" then |
for j,w in pairs(v['obj'].border) do |
w:Show() |
end |
end |
end |
for i,v in pairs(_G['SC'].BARS['CP']['obj'].combos) do |
for i,v in pairs(SC.BARS['CP']['obj'].combos) do |
for j,w in pairs(v.border) do |
w:Show() |
end |
for i,v in pairs(VTimerEnergy.border) do |
v:Hide() |
end |
for i,v in pairs(_G['SC'].BARS) do |
for i,v in pairs(SC.BARS) do |
if i ~= "CP" then |
for j,w in pairs(v['obj'].border) do |
w:Hide() |
end |
end |
end |
for i,v in pairs(_G['SC'].BARS['CP']['obj'].combos) do |
for i,v in pairs(SC.BARS['CP']['obj'].combos) do |
for j,w in pairs(v.border) do |
w:Hide() |
end |
end |
function SliceCommander:ApplyConf() |
SliceCommander:LockCkecked(_G['SC'].SET.IsLocked) |
SliceCommander:SetTimersHeight(_G['SC'].SET.TimerHeight) |
SliceCommander:SetWidth(_G['SC'].SET.Width) |
SliceCommander:SetEnergyHeight(_G['SC'].SET.EnergyHeight) |
SliceCommander:SetIconSize(_G['SC'].SET.IconSize) |
SliceCommander:LockCkecked(SC.SET.IsLocked) |
SliceCommander:SetTimersHeight(SC.SET.TimerHeight) |
SliceCommander:SetWidth(SC.SET.Width) |
SliceCommander:SetEnergyHeight(SC.SET.EnergyHeight) |
SliceCommander:SetIconSize(SC.SET.IconSize) |
SliceCommander:Config_RetextureBars(SliceCommander:BarTexture()) |
SliceCommander:FrameOpacity(_G['SC'].SET.FrameOpacity) |
SliceCommander:SetTransparency(_G['SC'].SET.EnergyTrans) |
SliceCommander:ApplySkin(_G['SC'].SET.skin) |
SliceCommander:ShowHideBorder(_G['SC'].SET.skin) |
SliceCommander:FrameOpacity(SC.SET.FrameOpacity) |
SliceCommander:SetTransparency(SC.SET.EnergyTrans) |
SliceCommander:ApplySkin(SC.SET.skin) |
SliceCommander:ShowHideBorder(SC.SET.skin) |
SliceCommander:ACTIVE_TALENT_GROUP_CHANGED() |
end |
function SliceCommander:SetSparks() |
local spec = GetSpecialization() |
_G['SC'].Spark[1]:SCPoint("TOPLEFT", VTimerEnergy, "TOPLEFT", ((_G['SC'].SET.Energy[spec][1] / UnitPowerMax("player", Enum.PowerType.Energy) * _G['SC'].SET.Width)-1), 0) |
_G['SC'].Spark[2]:SCPoint("TOPLEFT", VTimerEnergy, "TOPLEFT", ((_G['SC'].SET.Energy[spec][2] / UnitPowerMax("player", Enum.PowerType.Energy) * _G['SC'].SET.Width)-1), 0) |
_G['SC'].Spark[3]:SCPoint("TOPLEFT", VTimerEnergy, "TOPLEFT", ((_G['SC'].SET.Energy[spec][3] / UnitPowerMax("player", Enum.PowerType.Energy) * _G['SC'].SET.Width)-1), 0) |
SC.Spark[1]:SCPoint("TOPLEFT", VTimerEnergy, "TOPLEFT", ((SC.SET.Energy[spec][1] / UnitPowerMax("player", Enum.PowerType.Energy) * SC.SET.Width)-1), 0) |
SC.Spark[2]:SCPoint("TOPLEFT", VTimerEnergy, "TOPLEFT", ((SC.SET.Energy[spec][2] / UnitPowerMax("player", Enum.PowerType.Energy) * SC.SET.Width)-1), 0) |
SC.Spark[3]:SCPoint("TOPLEFT", VTimerEnergy, "TOPLEFT", ((SC.SET.Energy[spec][3] / UnitPowerMax("player", Enum.PowerType.Energy) * SC.SET.Width)-1), 0) |
end |
function SliceCommander:LockCkecked(checked) |
if checked then |
SliceCommander:SetTransparency(_G['SC'].SET.FrameOpacity) |
SliceCommander:SetTransparency(SC.SET.FrameOpacity) |
SliceCommanderFrame:SetAlpha(0) |
SliceCommanderFrame:EnableMouse(false) |
_G['SC'].OTHER['POISON']['obj']['moveframe']:SetAlpha(0) |
_G['SC'].OTHER['POISON']['obj']['moveframe']:EnableMouse(false) |
_G['SC'].SET.IsLocked = true |
SC.OTHER['POISON']['obj']['moveframe']:SetAlpha(0) |
SC.OTHER['POISON']['obj']['moveframe']:EnableMouse(false) |
SC.SET.IsLocked = true |
else |
SliceCommander:SetTransparency(100) |
SliceCommanderFrame:SetAlpha(.5) |
SliceCommanderFrame:EnableMouse(true) |
_G['SC'].OTHER['POISON']['obj']['moveframe']:SetAlpha(.5) |
_G['SC'].OTHER['POISON']['obj']['moveframe']:EnableMouse(true) |
_G['SC'].OTHER['POISON']['obj']:SetAlpha(1) |
_G['SC'].OTHER['POISON']['obj']:Show() |
_G['SC'].SET.IsLocked = false |
SC.OTHER['POISON']['obj']['moveframe']:SetAlpha(.5) |
SC.OTHER['POISON']['obj']['moveframe']:EnableMouse(true) |
SC.OTHER['POISON']['obj']:SetAlpha(1) |
SC.OTHER['POISON']['obj']:Show() |
SC.SET.IsLocked = false |
SliceCommander:StaticPopup_Show('CONFIG_UNLOCK') |
end |
end |
function SliceCommander:Config_RetextureBars(texture) |
VTimerEnergy:SetStatusBarTexture(texture) |
for i,v in pairs(_G['SC'].BARS) do |
for i,v in pairs(SC.BARS) do |
if v['expire'] ~= nil and i ~= 'CP' then |
v['obj']:SetStatusBarTexture(texture) |
end |
end |
for i = 1, 10 do |
_G['SC'].BARS['CP']['obj'].combos[i].bg:SetTexture(texture) |
SC.BARS['CP']['obj'].combos[i].bg:SetTexture(texture) |
end |
end |
function SliceCommander:SetWidth(w) |
local pxMargin = 1 |
local maxCP = UnitPowerMax("player", Enum.PowerType.ComboPoints) |
if _G['SC'].SET.skin then |
if SC.SET.skin then |
pxMargin = 7 |
end |
local widthCP = math.floor((w-(pxMargin*(maxCP-1)))/maxCP) |
w = widthCP*maxCP+pxMargin*(maxCP-1) |
local h = _G['SC'].SET.TimerHeight |
local h = SC.SET.TimerHeight |
if _G['SC'].SET.skin then |
if SC.SET.skin then |
--3 pixel border x2 + 1 pixel margin |
h = h + 6 + 1 |
end |
for i,v in pairs(_G['SC'].BARS) do |
for i,v in pairs(SC.BARS) do |
if v['expire'] ~= nil and i ~= 'THREAT' and i ~= 'CP' and i ~= "HEALTH" and i ~= "THEALTH" then |
SliceCommander:SetSizeBorder(w-h, 0, v['obj'].border) |
v['obj']:SCWidth(w-h) |
SliceCommander:SetSizeBorder(w, 0, VTimerEnergy.border) |
SliceCommanderFrame:SCWidth(w+16) |
_G['SC'].OTHER['AS']['obj']:SCWidth(w) |
_G['SC'].BARS['CP']['obj']:SCWidth(w) |
SC.OTHER['AS']['obj']:SCWidth(w) |
SC.BARS['CP']['obj']:SCWidth(w) |
_G['SC'].BARS['THREAT']['obj']:SCWidth(w) |
SliceCommander:SetSizeBorder(w, 0, _G['SC'].BARS['THREAT']['obj'].border) |
_G['SC'].BARS['HEALTH']['obj']:SCWidth(w) |
SliceCommander:SetSizeBorder(w, 0, _G['SC'].BARS['HEALTH']['obj'].border) |
_G['SC'].BARS['THEALTH']['obj']:SCWidth(w) |
SliceCommander:SetSizeBorder(w, 0, _G['SC'].BARS['THEALTH']['obj'].border) |
SC.BARS['THREAT']['obj']:SCWidth(w) |
SliceCommander:SetSizeBorder(w, 0, SC.BARS['THREAT']['obj'].border) |
SC.BARS['HEALTH']['obj']:SCWidth(w) |
SliceCommander:SetSizeBorder(w, 0, SC.BARS['HEALTH']['obj'].border) |
SC.BARS['THEALTH']['obj']:SCWidth(w) |
SliceCommander:SetSizeBorder(w, 0, SC.BARS['THEALTH']['obj'].border) |
local cx = 0 |
for i = 1, maxCP do |
_G['SC'].BARS['CP']['obj'].combos[i]:ClearAllPoints() |
_G['SC'].BARS['CP']['obj'].combos[i]:SCPoint("TOPLEFT", _G['SC'].BARS['CP']['obj'], "TOPLEFT", cx, 0) |
_G['SC'].BARS['CP']['obj'].combos[i]:SCPoint("BOTTOMRIGHT", _G['SC'].BARS['CP']['obj'], "BOTTOMLEFT", cx + widthCP , 0) |
_G['SC'].BARS['CP']['obj'].combos[i]:SCWidth(widthCP) |
SliceCommander:SetSizeBorder(widthCP, 0, _G['SC'].BARS['CP']['obj'].combos[i].border) |
SC.BARS['CP']['obj'].combos[i]:ClearAllPoints() |
SC.BARS['CP']['obj'].combos[i]:SCPoint("TOPLEFT", SC.BARS['CP']['obj'], "TOPLEFT", cx, 0) |
SC.BARS['CP']['obj'].combos[i]:SCPoint("BOTTOMRIGHT", SC.BARS['CP']['obj'], "BOTTOMLEFT", cx + widthCP , 0) |
SC.BARS['CP']['obj'].combos[i]:SCWidth(widthCP) |
SliceCommander:SetSizeBorder(widthCP, 0, SC.BARS['CP']['obj'].combos[i].border) |
cx = cx + widthCP + pxMargin |
end |
SliceCommander:SetSparks() |
SliceCommanderFrame:SCHeight(h+16) |
VTimerEnergyTxt:SCHeight(h) |
SliceCommander_Combo:SCHeight(h) |
_G['SC'].Spark[1]:SCHeight(h) |
_G['SC'].Spark[2]:SCHeight(h) |
_G['SC'].Spark[3]:SCHeight(h) |
SC.Spark[1]:SCHeight(h) |
SC.Spark[2]:SCHeight(h) |
SC.Spark[3]:SCHeight(h) |
SliceCommander:SetSizeBorder(0, h, VTimerEnergy.border) |
SliceCommander:HealthBar('HEALTH') |
SliceCommander:HealthBar('THEALTH') |
end |
function SliceCommander:SetIconSize(w) |
SliceCommander:SetIconSizeObj(_G['SC'].OTHER['POISON']['obj'], w) |
SliceCommander:SetIconSizeObj(SC.OTHER['POISON']['obj'], w) |
end |
function SliceCommander:SetIconSizeObj(obj, w) |
end |
function SliceCommander:SetTimersHeight(h) |
for i,v in pairs(_G['SC'].BARS) do |
for i,v in pairs(SC.BARS) do |
if v['expire'] ~= nil and i ~= 'CP' then |
v['obj']:SCHeight(h) |
v['obj'].text:SCHeight(h) |
v:SCHeight(h) |
end |
_G['SC'].BARS['CP']['obj']:SCHeight(h) |
_G['SC'].BARS['CP']['obj'].comboText:SCHeight(h) |
SC.BARS['CP']['obj']:SCHeight(h) |
SC.BARS['CP']['obj'].comboText:SCHeight(h) |
local maxCP = UnitPowerMax("player", Enum.PowerType.ComboPoints) |
for i = 1, maxCP do |
_G['SC'].BARS['CP']['obj'].combos[i]:SCHeight(h) |
SliceCommander:SetSizeBorder(0, h, _G['SC'].BARS['CP']['obj'].combos[i].border) |
SC.BARS['CP']['obj'].combos[i]:SCHeight(h) |
SliceCommander:SetSizeBorder(0, h, SC.BARS['CP']['obj'].combos[i].border) |
end |
_G['SC'].BarFont1:SetFont(SliceCommander:GetFont(), (h-2)*_G['SC'].V.pxH, "") |
_G['SC'].BarFont2:SetFont(SliceCommander:GetFont(), (h-2)*_G['SC'].V.pxH, "") |
_G['SC'].BARS['CP']['obj'].comboText:SetFont(SliceCommander:GetFont(), (h-2)*_G['SC'].V.pxH, "THINOUTLINE") |
SliceCommander:SetWidth(_G['SC'].SET.Width) |
SC.BarFont1:SetFont(SliceCommander:GetFont(), (h-2)*SC.V.pxH, "") |
SC.BarFont2:SetFont(SliceCommander:GetFont(), (h-2)*SC.V.pxH, "") |
SC.BARS['CP']['obj'].comboText:SetFont(SliceCommander:GetFont(), (h-2)*SC.V.pxH, "THINOUTLINE") |
SliceCommander:SetWidth(SC.SET.Width) |
end |
function SliceCommander:GetFont() |
local LSM = LibStub("LibSharedMedia-3.0") |
return LSM:Fetch("font", _G['SC'].SET.font) |
return LSM:Fetch("font", SC.SET.font) |
end |
function SliceCommander:FrameOpacity(opValue) |
SliceCommander:SetTransparency(opValue) |
for i,v in pairs(_G['SC'].BARS) do |
for i,v in pairs(SC.BARS) do |
if v['expire'] ~= nil then |
v['obj']:SetAlpha(opValue/100) |
end |
end |
function SliceCommander:TestCurrentVersion() |
if _G['SC'].version == nil or tonumber(_G['SC'].version) < 7.00 then |
if _G['SC'].version == nil or _G['SC'].version < '7.00' then |
_G['SC'] = {version = GetAddOnMetadata("SliceCommander", "Version")} |
else |
if tonumber(_G['SC'].version) < 9.01 then |
end |
if tonumber(_G['SC'].version) < 10.0 then |
_G['SC'].SET['CP'] = nil |
_G['SC'].SET.CP = nil |
end |
_G['SC'].version = GetAddOnMetadata("SliceCommander", "Version") |
function SliceCommander:DisplaySpells(Spells) |
for i, v in ipairs(Spells) do |
if _G['SC'].SET.display[v] == nil then |
_G['SC'].SET.display[v] = true |
if SC.SET.display[v] == nil then |
SC.SET.display[v] = true |
end |
end |
end |
function SliceCommander:NotDisplaySpells(Spells) |
for i, v in ipairs(Spells) do |
if _G['SC'].SET.display[v] == nil then |
_G['SC'].SET.display[v] = false |
if SC.SET.display[v] == nil then |
SC.SET.display[v] = false |
end |
end |
end |
function SliceCommander:FlashSpells(Spells) |
for i, v in ipairs(Spells) do |
if _G['SC'].SET.flash[v] == nil then |
_G['SC'].SET.flash[v] = true |
if SC.SET.flash[v] == nil then |
SC.SET.flash[v] = true |
end |
end |
end |
function SliceCommander:NotFlashSpells(Spells) |
for i, v in ipairs(Spells) do |
if _G['SC'].SET.flash[v] == nil then |
_G['SC'].SET.flash[v] = false |
if SC.SET.flash[v] == nil then |
SC.SET.flash[v] = false |
end |
end |
end |
if _G['SC'].orderBar > _G['SC'].maxPos then |
_G['SC'].maxPos = _G['SC'].orderBar |
end |
if _G['SC'].SET.Pos[v] == nil then |
_G['SC'].SET.Pos[v] = _G['SC'].orderBar |
if SC.SET.Pos[v] == nil then |
SC.SET.Pos[v] = _G['SC'].orderBar |
end |
end |
end |
if _G['SC'].orderCDBar < _G['SC'].maxCDPos then |
_G['SC'].maxCDPos = _G['SC'].orderCDBar |
end |
if _G['SC'].SET.Pos[v] == nil then |
_G['SC'].SET.Pos[v] = _G['SC'].orderCDBar |
if SC.SET.Pos[v] == nil then |
SC.SET.Pos[v] = _G['SC'].orderCDBar |
end |
end |
_G['SC'].orderBar = _G['SC'].maxPos |
_G['SC'].orderCDBar = _G['SC'].maxCDPos |
if _G['SC'].SET.Pos.CP == nil then--Combo Points |
_G['SC'].SET.Pos.CP = -1 |
if SC.SET.Pos.CP == nil then--Combo Points |
SC.SET.Pos.CP = -1 |
end |
SliceCommander:OrderSpells({'SND', 'CV', 'FE', 'SUB', 'AC', 'MAI', 'COS', 'EVA', 'SPR', 'SS', 'SP', 'FLA', 'SBS', 'ER'}) |
SC_SPELLID['ESSECD'] = SC_SPELLID['ALLESSE'][essenceId][essenceRank] |
local name, _, icon = GetSpellInfo(SC_SPELLID['ESSECD']) |
SC_SPELL['ESSECD'] = name |
if _G['SC'].BARS['ESSECD']['obj'] ~= nil and _G['SC'].BARS['ESSECD']['obj'] ~= 0 then |
_G['SC'].BARS['ESSECD']['obj'].icon:SetTexture(icon) |
if SC.BARS['ESSECD']['obj'] ~= nil and SC.BARS['ESSECD']['obj'] ~= 0 then |
SC.BARS['ESSECD']['obj'].icon:SetTexture(icon) |
end |
else |
SC_SPELLID['ESSECD'] = -1 |
SC_SPELL['ESSECD'] = 'ESSENCE' |
end |
_G['SC'].BARS['ESSECD']['name'] = SC_SPELL['ESSECD'] |
_G['SC'].BARS['ESSECD']['id'] = SC_SPELLID['ESSECD'] |
SC.BARS['ESSECD']['name'] = SC_SPELL['ESSECD'] |
SC.BARS['ESSECD']['id'] = SC_SPELLID['ESSECD'] |
end |
function SliceCommander:DisplayOrderBar() |
function SliceCommander:SetSetOptions() |
local defaultTable = {'poison'} |
for k, v in pairs(defaultTable) do |
if _G['SC'].SET[v] == nil then |
_G['SC'].SET[v] = {} |
if SC.SET[v] == nil then |
SC.SET[v] = {} |
end |
end |
local defaultEnabled = {'PadLatency', 'SpellText', 'SoundCombat', 'ThreatGroupOnly', 'kickEnable', 'displayGCD'} |
for k, v in pairs(defaultEnabled) do |
if _G['SC'].SET[v] == nil then |
_G['SC'].SET[v] = true |
if SC.SET[v] == nil then |
SC.SET[v] = true |
end |
end |
local defaultDisabled = {'IsLocked', 'HideEnergy', 'FullTimer', 'ARMarioMod', 'skin'} |
for k, v in pairs(defaultDisabled) do |
if _G['SC'].SET[v] == nil then |
_G['SC'].SET[v] = false |
if SC.SET[v] == nil then |
SC.SET[v] = false |
end |
end |
end |
function SliceCommander:SetRB() |
if _G['SC'].SET.RB == nil then |
_G['SC'].SET.RB = { |
if SC.SET.RB == nil then |
SC.SET.RB = { |
['SC'] = 'SS', |
['GM'] = 'AS', |
['RP'] = 'Crit', |
['BT'] = 'NRJ', |
['BS'] = 'CP+' |
} |
_G['SC'].SET.display.RBName = true |
SC.SET.display.RBName = true |
end |
_G['SC'].BARS['RB'].subbar = { |
SC.BARS['RB'].subbar = { |
[SC_SPELLID['SC']] = 'SC', |
[SC_SPELLID['GM']] = 'GM', |
[SC_SPELLID['RP']] = 'RP', |
end |
function SliceCommander:TestValueOptions() |
if _G['SC'].SET == nil or _G['SC'].SET.display == nil or _G['SC'].SET.Pos == nil then |
_G['SC'].SET = { display = {}, Pos = {} } |
if SC.SET == nil or SC.SET.display == nil or SC.SET.Pos == nil then |
SC.SET = { display = {}, Pos = {} } |
end |
if _G['SC'].SET.flash == nil then |
_G['SC'].SET.flash = {} |
if SC.SET.flash == nil then |
SC.SET.flash = {} |
end |
if _G['SC'].SET.PixelPerfect == nil then |
_G['SC'].SET.PixelPerfect = true |
end |
SliceCommander:DisplayOrderBar() |
SliceCommander:SetSetOptions() |
if _G['SC'].SET.Energy == nil then |
_G['SC'].SET.Energy = { |
if SC.SET.Energy == nil then |
SC.SET.Energy = { |
[1] = {--ASSASSINATION |
[1] = 25, |
[2] = 35, |
} |
} |
end |
if _G['SC'].SET.kickMessage == nil then |
_G['SC'].SET.kickMessage = "Kick successful" |
if SC.SET.kickMessage == nil then |
SC.SET.kickMessage = "Kick successful" |
end |
if _G['SC'].SET.kickSpell == nil then |
_G['SC'].SET.kickSpell = true |
if SC.SET.kickSpell == nil then |
SC.SET.kickSpell = true |
end |
if _G['SC'].SET.kickChannel == nil then |
_G['SC'].SET.kickChannel = { |
if SC.SET.kickChannel == nil then |
SC.SET.kickChannel = { |
['INSTANCE_CHAT'] = true, |
['RAID'] = true, |
['PARTY'] = true, |
['SAY'] = true |
} |
end |
if _G['SC'].SET.eyefinity == nil then |
_G['SC'].SET.eyefinity = 1 |
if SC.SET.eyefinity == nil then |
SC.SET.eyefinity = 1 |
end |
if _G['SC'].SET.HEALTH == nil then |
_G['SC'].SET.HEALTH = { |
if SC.SET.HEALTH == nil then |
SC.SET.HEALTH = { |
value = false, |
HideCombat = true, |
MidUnder = 'None', |
LowUnder = 'None' |
} |
end |
if _G['SC'].SET.THEALTH == nil then |
_G['SC'].SET.THEALTH = { |
if SC.SET.THEALTH == nil then |
SC.SET.THEALTH = { |
value = false, |
HideCombat = true, |
MidUnder = 'None', |
LowUnder = 'None' |
} |
end |
--[[if _G['SC'].SET.EnergySound1 == nil then |
_G['SC'].SET.EnergySound1 = 'None' |
--[[if SC.SET.EnergySound1 == nil then |
SC.SET.EnergySound1 = 'None' |
end |
if _G['SC'].SET.EnergySound2 == nil then |
_G['SC'].SET.EnergySound2 = 'None' |
if SC.SET.EnergySound2 == nil then |
SC.SET.EnergySound2 = 'None' |
end |
if _G['SC'].SET.EnergySound3 == nil then |
_G['SC'].SET.EnergySound3 = 'None' |
if SC.SET.EnergySound3 == nil then |
SC.SET.EnergySound3 = 'None' |
end]] |
if _G['SC'].SET.DPSound == nil then |
_G['SC'].SET.DPSound = 'None' |
if SC.SET.DPSound == nil then |
SC.SET.DPSound = 'None' |
end |
if _G['SC'].SET.Width == nil then |
_G['SC'].SET.Width = 287 |
if SC.SET.Width == nil then |
SC.SET.Width = 287 |
end |
if _G['SC'].SET.EnergyTrans == nil then |
_G['SC'].SET.EnergyTrans = 0 |
if SC.SET.EnergyTrans == nil then |
SC.SET.EnergyTrans = 0 |
end |
if _G['SC'].SET.BarMargin == nil then |
_G['SC'].SET.BarMargin = 2 |
if SC.SET.BarMargin == nil then |
SC.SET.BarMargin = 2 |
end |
if _G['SC'].SET.EnergyHeight == nil then |
_G['SC'].SET.EnergyHeight = 28 |
if SC.SET.EnergyHeight == nil then |
SC.SET.EnergyHeight = 28 |
end |
if _G['SC'].SET.IconSize == nil then |
_G['SC'].SET.IconSize = 30 |
if SC.SET.IconSize == nil then |
SC.SET.IconSize = 30 |
end |
if _G['SC'].SET.TimerHeight == nil then |
_G['SC'].SET.TimerHeight = 17 |
if SC.SET.TimerHeight == nil then |
SC.SET.TimerHeight = 17 |
end |
if _G['SC'].SET.BarTexture == nil then |
_G['SC'].SET.BarTexture = 'Tukui' |
if SC.SET.BarTexture == nil then |
SC.SET.BarTexture = 'Tukui' |
end |
if _G['SC'].SET.display.DPTIME == nil then |
_G['SC'].SET.display.DPTIME = 10 |
if SC.SET.display.DPTIME == nil then |
SC.SET.display.DPTIME = 10 |
end |
if _G['SC'].SET.FrameOpacity == nil then |
_G['SC'].SET.FrameOpacity = 100 |
if SC.SET.FrameOpacity == nil then |
SC.SET.FrameOpacity = 100 |
end |
if _G['SC'].SET.soundChannel == nil then |
_G['SC'].SET.soundChannel = "Master" |
if SC.SET.soundChannel == nil then |
SC.SET.soundChannel = "Master" |
end |
if _G['SC'].SET.Pandemic == nil then |
_G['SC'].SET.Pandemic = true |
if SC.SET.Pandemic == nil then |
SC.SET.Pandemic = true |
end |
if _G['SC'].SET.Tick == nil then |
_G['SC'].SET.Tick = true |
if SC.SET.Tick == nil then |
SC.SET.Tick = true |
end |
if _G['SC'].SET.CP == nil then |
_G['SC'].SET.CP = { |
if SC.SET.CP == nil then |
SC.SET.CP = { |
[5] = { |
[1] = {.33, .63, .33}, |
[2] = {.46, .63, .35}, |
} |
} |
end |
if _G['SC'].SET.energyColor == nil then |
_G['SC'].SET.energyColor = {.92, .92, .92} |
if SC.SET.energyColor == nil then |
SC.SET.energyColor = {.92, .92, .92} |
end |
if _G['SC'].SET.poison.mh == nil or _G['SC'].SET.poison.oh == nil or type(_G['SC'].SET.poison.mh) ~= "table" or type(_G['SC'].SET.poison.oh) ~= "table" then |
_G['SC'].SET.poison.mh = { |
if SC.SET.poison.mh == nil or SC.SET.poison.oh == nil or type(SC.SET.poison.mh) ~= "table" or type(SC.SET.poison.oh) ~= "table" then |
SC.SET.poison.mh = { |
[1] = 'DPB', |
[2] = 'IP', |
[3] = 'IP' |
} |
_G['SC'].SET.poison.oh = { |
SC.SET.poison.oh = { |
[1] = 'CRP', |
[2] = 'CRP', |
[3] = 'CRP' |
} |
end |
if _G['SC'].SET.font == nil then |
_G['SC'].SET.font = "Friz Quadrata TT" |
if SC.SET.font == nil then |
SC.SET.font = "Friz Quadrata TT" |
end |
SliceCommander:InitBarArray() |
SliceCommander:InitOtherArray() |
function SliceCommander:InitOtherArray() |
if _G['SC'].OTHER == nil then |
_G['SC'].OTHER = {} |
if SC.OTHER == nil then |
SC.OTHER = {} |
end |
if _G['SC'].OTHER['AS'] == nil then |
_G['SC'].OTHER['AS'] = { |
if SC.OTHER['AS'] == nil then |
SC.OTHER['AS'] = { |
['obj'] = 0, |
['expire'] = 0, |
['color'] = 0 |
} |
end |
if _G['SC'].OTHER['POISON'] == nil then |
_G['SC'].OTHER['POISON'] = { |
if SC.OTHER['POISON'] == nil then |
SC.OTHER['POISON'] = { |
['obj'] = 0, |
['expire'] = 0, |
['color'] = 0, |
} |
} |
end |
if _G['SC'].OTHER['SliceCommanderFrame'] == nil then |
_G['SC'].OTHER['SliceCommanderFrame'] = { |
if SC.OTHER['SliceCommanderFrame'] == nil then |
SC.OTHER['SliceCommanderFrame'] = { |
['position'] = { |
['xOfs'] = -250, |
['yOfs'] = 75, |
end |
function SliceCommander:InitGlobalBarArray() |
if _G['SC'].BARS['HEALTH'] == nil then |
_G['SC'].BARS['HEALTH'] = {['color'] = {0, 0, 0}} |
if SC.BARS['HEALTH'] == nil then |
SC.BARS['HEALTH'] = {['color'] = {0, 0, 0}} |
end |
_G['SC'].BARS['HEALTH']['target'] = "player" |
if _G['SC'].BARS['THEALTH'] == nil then |
_G['SC'].BARS['THEALTH'] = {['color'] = {0, 0, 0}} |
SC.BARS['HEALTH']['target'] = "player" |
if SC.BARS['THEALTH'] == nil then |
SC.BARS['THEALTH'] = {['color'] = {0, 0, 0}} |
end |
_G['SC'].BARS['THEALTH']['target'] = "target" |
if _G['SC'].BARS['THREAT'] == nil then |
_G['SC'].BARS['THREAT'] = {['color'] = {0, 0, 0}} |
SC.BARS['THEALTH']['target'] = "target" |
if SC.BARS['THREAT'] == nil then |
SC.BARS['THREAT'] = {['color'] = {0, 0, 0}} |
end |
_G['SC'].BARS['CP'] = { |
SC.BARS['CP'] = { |
['last'] = 0,--last CP has to be init to 0 |
['target'] = '', |
['color'] = 0 |
} |
if _G['SC'].BARS['KS'] == nil then--Kidney Shot |
_G['SC'].BARS['KS'] = {['color'] = {.89, .73, .52}} |
if SC.BARS['KS'] == nil then--Kidney Shot |
SC.BARS['KS'] = {['color'] = {.89, .73, .52}} |
end |
if _G['SC'].BARS['KSCD'] == nil then--Kidney Shot CD |
_G['SC'].BARS['KSCD'] = {['color'] = {.89, .73, .52}} |
if SC.BARS['KSCD'] == nil then--Kidney Shot CD |
SC.BARS['KSCD'] = {['color'] = {.89, .73, .52}} |
end |
if _G['SC'].BARS['CS'] == nil then--Cheap Shot |
_G['SC'].BARS['CS'] = {['color'] = {.89, .73, .2}} |
if SC.BARS['CS'] == nil then--Cheap Shot |
SC.BARS['CS'] = {['color'] = {.89, .73, .2}} |
end |
if _G['SC'].BARS['VANCD'] == nil then--Vanish |
_G['SC'].BARS['VANCD'] = {['color'] = {.42, .46, .51}} |
if SC.BARS['VANCD'] == nil then--Vanish |
SC.BARS['VANCD'] = {['color'] = {.42, .46, .51}} |
end |
if _G['SC'].BARS['SS'] == nil then--Shadowstep |
_G['SC'].BARS['SS'] = {['color'] = {.76, .28, .78}} |
if SC.BARS['SS'] == nil then--Shadowstep |
SC.BARS['SS'] = {['color'] = {.76, .28, .78}} |
end |
if _G['SC'].BARS['SSCD'] == nil then--Shadowstep CD |
_G['SC'].BARS['SSCD'] = {['color'] = {.76, .28, .78}} |
if SC.BARS['SSCD'] == nil then--Shadowstep CD |
SC.BARS['SSCD'] = {['color'] = {.76, .28, .78}} |
end |
if _G['SC'].BARS['FE'] == nil then--Feint |
_G['SC'].BARS['FE'] = {['color'] = {.15, .42, .68}} |
if SC.BARS['FE'] == nil then--Feint |
SC.BARS['FE'] = {['color'] = {.15, .42, .68}} |
end |
if _G['SC'].BARS['FECD'] == nil then--Feint CD |
_G['SC'].BARS['FECD'] = {['color'] = {.15, .42, .68}} |
if SC.BARS['FECD'] == nil then--Feint CD |
SC.BARS['FECD'] = {['color'] = {.15, .42, .68}} |
end |
if _G['SC'].BARS['KICD'] == nil then--Kick |
_G['SC'].BARS['KICD'] = {['color'] = {.42, .46, .51}} |
if SC.BARS['KICD'] == nil then--Kick |
SC.BARS['KICD'] = {['color'] = {.42, .46, .51}} |
end |
if _G['SC'].BARS['MAI'] == nil then--Master Assassin's Initiative |
_G['SC'].BARS['MAI'] = {['color'] = {.42, .46, .51}} |
if SC.BARS['MAI'] == nil then--Master Assassin's Initiative |
SC.BARS['MAI'] = {['color'] = {.42, .46, .51}} |
end |
if _G['SC'].BARS['MDCD'] == nil then--Marked for Death |
_G['SC'].BARS['MDCD'] = {['color'] = {.92, .33, .33}} |
if SC.BARS['MDCD'] == nil then--Marked for Death |
SC.BARS['MDCD'] = {['color'] = {.92, .33, .33}} |
end |
if _G['SC'].BARS['DFACD'] == nil then--Death from Above |
_G['SC'].BARS['DFACD'] = {['color'] = {.75, .65, .53}} |
if SC.BARS['DFACD'] == nil then--Death from Above |
SC.BARS['DFACD'] = {['color'] = {.75, .65, .53}} |
end |
if _G['SC'].BARS['AC'] == nil then--Alacrity |
_G['SC'].BARS['AC'] = {['color'] = {.6, .55, .17}} |
if SC.BARS['AC'] == nil then--Alacrity |
SC.BARS['AC'] = {['color'] = {.6, .55, .17}} |
end |
if _G['SC'].BARS['CV'] == nil then--Crimson Vial |
_G['SC'].BARS['CV'] = {['color'] = {.43, .67, .64}} |
if SC.BARS['CV'] == nil then--Crimson Vial |
SC.BARS['CV'] = {['color'] = {.43, .67, .64}} |
end |
_G['SC'].BARS['CV']['tick'] = { |
SC.BARS['CV']['tick'] = { |
['obj'] = {}, |
['value'] = 1 |
} |
if _G['SC'].BARS['CVCD'] == nil then--Crimson Vial |
_G['SC'].BARS['CVCD'] = {['color'] = {.33, .57, .54}} |
if SC.BARS['CVCD'] == nil then--Crimson Vial |
SC.BARS['CVCD'] = {['color'] = {.33, .57, .54}} |
end |
if _G['SC'].BARS['CDCD'] == nil then--Cheated Death |
_G['SC'].BARS['CDCD'] = {['color'] = {.2, .47, .19}} |
if SC.BARS['CDCD'] == nil then--Cheated Death |
SC.BARS['CDCD'] = {['color'] = {.2, .47, .19}} |
end |
if _G['SC'].BARS['SUB'] == nil then--Subterfuge |
_G['SC'].BARS['SUB'] = {['color'] = {.04, .81, .82}} |
if SC.BARS['SUB'] == nil then--Subterfuge |
SC.BARS['SUB'] = {['color'] = {.04, .81, .82}} |
end |
if _G['SC'].BARS['TOTCD'] == nil then--Tricks of the Trade |
_G['SC'].BARS['TOTCD'] = {['color'] = {.3, .3, 1}} |
if SC.BARS['TOTCD'] == nil then--Tricks of the Trade |
SC.BARS['TOTCD'] = {['color'] = {.3, .3, 1}} |
end |
if _G['SC'].BARS['COS'] == nil then--Cloak of Shadows |
_G['SC'].BARS['COS'] = {['color'] = {.2, .4, .53}} |
if SC.BARS['COS'] == nil then--Cloak of Shadows |
SC.BARS['COS'] = {['color'] = {.2, .4, .53}} |
end |
if _G['SC'].BARS['COSCD'] == nil then--Cloak of Shadows CD |
_G['SC'].BARS['COSCD'] = {['color'] = {.12, .32, .45}} |
if SC.BARS['COSCD'] == nil then--Cloak of Shadows CD |
SC.BARS['COSCD'] = {['color'] = {.12, .32, .45}} |
end |
if _G['SC'].BARS['EVA'] == nil then--Evasion |
_G['SC'].BARS['EVA'] = {['color'] = {.42, .46, .51}} |
if SC.BARS['EVA'] == nil then--Evasion |
SC.BARS['EVA'] = {['color'] = {.42, .46, .51}} |
end |
if _G['SC'].BARS['EVACD'] == nil then--Evasion CD |
_G['SC'].BARS['EVACD'] = {['color'] = {.42, .46, .51}} |
if SC.BARS['EVACD'] == nil then--Evasion CD |
SC.BARS['EVACD'] = {['color'] = {.42, .46, .51}} |
end |
if _G['SC'].BARS['SPR'] == nil then--Sprint |
_G['SC'].BARS['SPR'] = {['color'] = {.83, .51, .27}} |
if SC.BARS['SPR'] == nil then--Sprint |
SC.BARS['SPR'] = {['color'] = {.83, .51, .27}} |
end |
if _G['SC'].BARS['SPRCD'] == nil then--Sprint CD |
_G['SC'].BARS['SPRCD'] = {['color'] = {.83, .51, .27}} |
if SC.BARS['SPRCD'] == nil then--Sprint CD |
SC.BARS['SPRCD'] = {['color'] = {.83, .51, .27}} |
end |
if _G['SC'].BARS['ESSECD'] == nil then--Essence CD |
_G['SC'].BARS['ESSECD'] = {['color'] = {.01, .59, .78}} |
if SC.BARS['ESSECD'] == nil then--Essence CD |
SC.BARS['ESSECD'] = {['color'] = {.01, .59, .78}} |
end |
SliceCommander:InitCovenantBarArray() |
end |
function SliceCommander:InitCovenantBarArray() |
if _G['SC'].BARS['SUMSCD'] == nil then--Summon Steward (Kyrian) |
_G['SC'].BARS['SUMSCD'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['SUMSCD'] == nil then--Summon Steward (Kyrian) |
SC.BARS['SUMSCD'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['FCCD'] == nil then--Fleshcraft (Necrolord) |
_G['SC'].BARS['FCCD'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['FCCD'] == nil then--Fleshcraft (Necrolord) |
SC.BARS['FCCD'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['SOSCD'] == nil then--Soulshape (Night Fae) |
_G['SC'].BARS['SOSCD'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['SOSCD'] == nil then--Soulshape (Night Fae) |
SC.BARS['SOSCD'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['DOSCD'] == nil then--Door of Shadows (Venthyr) |
_G['SC'].BARS['DOSCD'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['DOSCD'] == nil then--Door of Shadows (Venthyr) |
SC.BARS['DOSCD'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['ERCD'] == nil then--Echoing Reprimand (Kyrian) |
_G['SC'].BARS['ERCD'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['ERCD'] == nil then--Echoing Reprimand (Kyrian) |
SC.BARS['ERCD'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['ER'] == nil then--Echoing Reprimand (Kyrian) |
_G['SC'].BARS['ER'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['ER'] == nil then--Echoing Reprimand (Kyrian) |
SC.BARS['ER'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['SBSCD'] == nil then--Serrated Bone Spike (Necrolord) |
_G['SC'].BARS['SBSCD'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['SBSCD'] == nil then--Serrated Bone Spike (Necrolord) |
SC.BARS['SBSCD'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['SBS'] == nil then--Serrated Bone Spike (Necrolord) |
_G['SC'].BARS['SBS'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['SBS'] == nil then--Serrated Bone Spike (Necrolord) |
SC.BARS['SBS'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['SP'] == nil then--Sepsis (Night Fae) |
_G['SC'].BARS['SP'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['SP'] == nil then--Sepsis (Night Fae) |
SC.BARS['SP'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['SPCD'] == nil then--Sepsis (Night Fae) |
_G['SC'].BARS['SPCD'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['SPCD'] == nil then--Sepsis (Night Fae) |
SC.BARS['SPCD'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['FLA'] == nil then--Flagellation (Venthyr) |
_G['SC'].BARS['FLA'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['FLA'] == nil then--Flagellation (Venthyr) |
SC.BARS['FLA'] = {['color'] = {.2, .45, .82}} |
end |
if _G['SC'].BARS['FLACD'] == nil then--Flagellation (Venthyr) |
_G['SC'].BARS['FLACD'] = {['color'] = {.2, .45, .82}} |
if SC.BARS['FLACD'] == nil then--Flagellation (Venthyr) |
SC.BARS['FLACD'] = {['color'] = {.2, .45, .82}} |
end |
end |
function SliceCommander:InitAssassinationBarArray() |
if _G['SC'].BARS['GAR'] == nil then--Garrote |
_G['SC'].BARS['GAR'] = {['color'] = {.83, .27, .27}} |
if SC.BARS['GAR'] == nil then--Garrote |
SC.BARS['GAR'] = {['color'] = {.83, .27, .27}} |
end |
_G['SC'].BARS['GAR']['tick'] = { |
SC.BARS['GAR']['tick'] = { |
['obj'] = {}, |
['value'] = 3 |
} |
if _G['SC'].BARS['GARCD'] == nil then--Garrote CD |
_G['SC'].BARS['GARCD'] = {['color'] = {.83, .27, .27}} |
if SC.BARS['GARCD'] == nil then--Garrote CD |
SC.BARS['GARCD'] = {['color'] = {.83, .27, .27}} |
end |
if _G['SC'].BARS['RUP'] == nil then--Rupture |
_G['SC'].BARS['RUP'] = {['color'] = {.83, .27, .27}} |
if SC.BARS['RUP'] == nil then--Rupture |
SC.BARS['RUP'] = {['color'] = {.83, .27, .27}} |
end |
_G['SC'].BARS['RUP']['tick'] = { |
SC.BARS['RUP']['tick'] = { |
['obj'] = {}, |
['value'] = 2 |
} |
if _G['SC'].BARS['BA'] == nil then--Blood of the Assassinated |
_G['SC'].BARS['BA'] = {['color'] = {.83, .27, .27}} |
if SC.BARS['BA'] == nil then--Blood of the Assassinated |
SC.BARS['BA'] = {['color'] = {.83, .27, .27}} |
end |
if _G['SC'].BARS['EXCD'] == nil then--Exsanguinate |
_G['SC'].BARS['EXCD'] = {['color'] = {.83, .27, .27}} |
if SC.BARS['EXCD'] == nil then--Exsanguinate |
SC.BARS['EXCD'] = {['color'] = {.83, .27, .27}} |
end |
if _G['SC'].BARS['DP'] == nil then--Deadly Poison |
_G['SC'].BARS['DP'] = {['color'] = {.27, .68, .23}} |
if SC.BARS['DP'] == nil then--Deadly Poison |
SC.BARS['DP'] = {['color'] = {.27, .68, .23}} |
end |
if _G['SC'].BARS['ENV'] == nil then--Envenom |
_G['SC'].BARS['ENV'] = {['color'] = {.27, .68, .23}} |
if SC.BARS['ENV'] == nil then--Envenom |
SC.BARS['ENV'] = {['color'] = {.27, .68, .23}} |
end |
if _G['SC'].BARS['ST'] == nil then--Surge of Toxins |
_G['SC'].BARS['ST'] = {['color'] = {.27, .68, .23}} |
if SC.BARS['ST'] == nil then--Surge of Toxins |
SC.BARS['ST'] = {['color'] = {.27, .68, .23}} |
end |
if _G['SC'].BARS['KB'] == nil then--Kingsbane |
_G['SC'].BARS['KB'] = {['color'] = {.27, .68, .23}} |
if SC.BARS['KB'] == nil then--Kingsbane |
SC.BARS['KB'] = {['color'] = {.27, .68, .23}} |
end |
if _G['SC'].BARS['KBCD'] == nil then--Kingsbane CD |
_G['SC'].BARS['KBCD'] = {['color'] = {.27, .68, .23}} |
if SC.BARS['KBCD'] == nil then--Kingsbane CD |
SC.BARS['KBCD'] = {['color'] = {.27, .68, .23}} |
end |
if _G['SC'].BARS['EP'] == nil then--Elaborate Planning |
_G['SC'].BARS['EP'] = {['color'] = {.83, .78, .27}} |
if SC.BARS['EP'] == nil then--Elaborate Planning |
SC.BARS['EP'] = {['color'] = {.83, .78, .27}} |
end |
if _G['SC'].BARS['VEN'] == nil then--Vendetta |
_G['SC'].BARS['VEN'] = {['color'] = {.83, .53, .27}} |
if SC.BARS['VEN'] == nil then--Vendetta |
SC.BARS['VEN'] = {['color'] = {.83, .53, .27}} |
end |
if _G['SC'].BARS['VENCD'] == nil then--Vendetta CD |
_G['SC'].BARS['VENCD'] = {['color'] = {.71, .4, .15}} |
if SC.BARS['VENCD'] == nil then--Vendetta CD |
SC.BARS['VENCD'] = {['color'] = {.71, .4, .15}} |
end |
if _G['SC'].BARS['BLS'] == nil then--Blindside |
_G['SC'].BARS['BLS'] = {['color'] = {.52, .38, .75}} |
if SC.BARS['BLS'] == nil then--Blindside |
SC.BARS['BLS'] = {['color'] = {.52, .38, .75}} |
end |
if _G['SC'].BARS['MA'] == nil then--Master Assassin |
_G['SC'].BARS['MA'] = {['color'] = {.42, .46, .51}} |
if SC.BARS['MA'] == nil then--Master Assassin |
SC.BARS['MA'] = {['color'] = {.42, .46, .51}} |
end |
if _G['SC'].BARS['CT'] == nil then--Crimson Tempest |
_G['SC'].BARS['CT'] = {['color'] = {.71, .15, .15}} |
if SC.BARS['CT'] == nil then--Crimson Tempest |
SC.BARS['CT'] = {['color'] = {.71, .15, .15}} |
end |
_G['SC'].BARS['CT']['tick'] = { |
SC.BARS['CT']['tick'] = { |
['obj'] = {}, |
['value'] = 2 |
} |
end |
function SliceCommander:InitOutlawBarArray()--http://paletton.com/#uid=60s0u0klqqvbNEzh9uFpomItmi0 |
if _G['SC'].BARS['SND'] == nil then--Slice and Dice |
_G['SC'].BARS['SND'] = {['color'] = {.83, .51, .27}} |
if SC.BARS['SND'] == nil then--Slice and Dice |
SC.BARS['SND'] = {['color'] = {.83, .51, .27}} |
end |
if _G['SC'].BARS['RB'] == nil then--Roll the Bones |
_G['SC'].BARS['RB'] = {['color'] = {.83, .51, .27}} |
if SC.BARS['RB'] == nil then--Roll the Bones |
SC.BARS['RB'] = {['color'] = {.83, .51, .27}} |
end |
if _G['SC'].BARS['RBCD'] == nil then--Roll the Bones CD |
_G['SC'].BARS['RBCD'] = {['color'] = {.83, .51, .27}} |
if SC.BARS['RBCD'] == nil then--Roll the Bones CD |
SC.BARS['RBCD'] = {['color'] = {.83, .51, .27}} |
end |
if _G['SC'].BARS['AR'] == nil then--Adrenaline Rush |
_G['SC'].BARS['AR'] = {['color'] = {.83, .64, .27}} |
if SC.BARS['AR'] == nil then--Adrenaline Rush |
SC.BARS['AR'] = {['color'] = {.83, .64, .27}} |
end |
if _G['SC'].BARS['ARCD'] == nil then--Adrenaline Rush CD |
_G['SC'].BARS['ARCD'] = {['color'] = {.71, .52, .15}} |
if SC.BARS['ARCD'] == nil then--Adrenaline Rush CD |
SC.BARS['ARCD'] = {['color'] = {.71, .52, .15}} |
end |
if _G['SC'].BARS['CDB'] == nil then--Curse of the Dreadblades |
_G['SC'].BARS['CDB'] = {['color'] = {.2, .6, .36}} |
if SC.BARS['CDB'] == nil then--Curse of the Dreadblades |
SC.BARS['CDB'] = {['color'] = {.2, .6, .36}} |
end |
if _G['SC'].BARS['CDBCD'] == nil then--Curse of the Dreadblades CD |
_G['SC'].BARS['CDBCD'] = {['color'] = {.2, .6, .36}} |
if SC.BARS['CDBCD'] == nil then--Curse of the Dreadblades CD |
SC.BARS['CDBCD'] = {['color'] = {.2, .6, .36}} |
end |
if _G['SC'].BARS['GS'] == nil then--Ghostly Strike |
_G['SC'].BARS['GS'] = {['color'] = {.81, .27, .3}} |
if SC.BARS['GS'] == nil then--Ghostly Strike |
SC.BARS['GS'] = {['color'] = {.81, .27, .3}} |
end |
if _G['SC'].BARS['GSCD'] == nil then--Ghostly Strike CD |
_G['SC'].BARS['GSCD'] = {['color'] = {.81, .27, .3}} |
if SC.BARS['GSCD'] == nil then--Ghostly Strike CD |
SC.BARS['GSCD'] = {['color'] = {.81, .27, .3}} |
end |
if _G['SC'].BARS['OP'] == nil then--Opportunity |
_G['SC'].BARS['OP'] = {['color'] = {.83, .73, .27}} |
if SC.BARS['OP'] == nil then--Opportunity |
SC.BARS['OP'] = {['color'] = {.83, .73, .27}} |
end |
if _G['SC'].BARS['GSWW'] == nil then--Greenskin's Waterlogged Wristcuffs |
_G['SC'].BARS['GSWW'] = {['color'] = {.81, .27, .3}} |
if SC.BARS['GSWW'] == nil then--Greenskin's Waterlogged Wristcuffs |
SC.BARS['GSWW'] = {['color'] = {.81, .27, .3}} |
end |
if _G['SC'].BARS['GHCD'] == nil then--Grappling Hook |
_G['SC'].BARS['GHCD'] = {['color'] = {.83, .82, .27}} |
if SC.BARS['GHCD'] == nil then--Grappling Hook |
SC.BARS['GHCD'] = {['color'] = {.83, .82, .27}} |
end |
if _G['SC'].BARS['BE'] == nil then--Between the Eyes |
_G['SC'].BARS['BE'] = {['color'] = {.62, .78, .26}} |
if SC.BARS['BE'] == nil then--Between the Eyes |
SC.BARS['BE'] = {['color'] = {.62, .78, .26}} |
end |
if _G['SC'].BARS['BECD'] == nil then--Between the Eyes CD |
_G['SC'].BARS['BECD'] = {['color'] = {.62, .78, .26}} |
if SC.BARS['BECD'] == nil then--Between the Eyes CD |
SC.BARS['BECD'] = {['color'] = {.62, .78, .26}} |
end |
if _G['SC'].BARS['KSPCD'] == nil then--Killing Spree |
_G['SC'].BARS['KSPCD'] = {['color'] = {.27, .68, .23}} |
if SC.BARS['KSPCD'] == nil then--Killing Spree |
SC.BARS['KSPCD'] = {['color'] = {.27, .68, .23}} |
end |
if _G['SC'].BARS['LD'] == nil then--Loaded Dice |
_G['SC'].BARS['LD'] = {['color'] = {.63, .52, .38}} |
if SC.BARS['LD'] == nil then--Loaded Dice |
SC.BARS['LD'] = {['color'] = {.63, .52, .38}} |
end |
if _G['SC'].BARS['BF'] == nil then--Blade Flury |
_G['SC'].BARS['BF'] = {['color'] = {.66, .22, .47}} |
if SC.BARS['BF'] == nil then--Blade Flury |
SC.BARS['BF'] = {['color'] = {.66, .22, .47}} |
end |
if _G['SC'].BARS['BFCD'] == nil then--Blade Flury CD |
_G['SC'].BARS['BFCD'] = {['color'] = {.66, .22, .47}} |
if SC.BARS['BFCD'] == nil then--Blade Flury CD |
SC.BARS['BFCD'] = {['color'] = {.66, .22, .47}} |
end |
if _G['SC'].BARS['BRCD'] == nil then--Blade Rush |
_G['SC'].BARS['BRCD'] = {['color'] = {.99, .99, .56}} |
if SC.BARS['BRCD'] == nil then--Blade Rush |
SC.BARS['BRCD'] = {['color'] = {.99, .99, .56}} |
end |
if _G['SC'].BARS['GG'] == nil then--Gouge |
_G['SC'].BARS['GG'] = {['color'] = {.81, .27, .3}} |
if SC.BARS['GG'] == nil then--Gouge |
SC.BARS['GG'] = {['color'] = {.81, .27, .3}} |
end |
if _G['SC'].BARS['GGCD'] == nil then--Gouge CD |
_G['SC'].BARS['GGCD'] = {['color'] = {.81, .27, .3}} |
if SC.BARS['GGCD'] == nil then--Gouge CD |
SC.BARS['GGCD'] = {['color'] = {.81, .27, .3}} |
end |
end |
function SliceCommander:InitSubtletyBarArray()--http://paletton.com/#uid=64r0u0kleqtbzEKgVuIpcmGtdhZ |
if _G['SC'].BARS['GB'] == nil then--Goremaw's Bite |
_G['SC'].BARS['GB'] = {['color'] = {.52, .18, .54}} |
if SC.BARS['GB'] == nil then--Goremaw's Bite |
SC.BARS['GB'] = {['color'] = {.52, .18, .54}} |
end |
if _G['SC'].BARS['GBCD'] == nil then--Goremaw's Bite CD |
_G['SC'].BARS['GBCD'] = {['color'] = {.52, .18, .54}} |
if SC.BARS['GBCD'] == nil then--Goremaw's Bite CD |
SC.BARS['GBCD'] = {['color'] = {.52, .18, .54}} |
end |
if _G['SC'].BARS['SOD'] == nil then--Symbols of Death |
_G['SC'].BARS['SOD'] = {['color'] = {.25, .26, .58}} |
if SC.BARS['SOD'] == nil then--Symbols of Death |
SC.BARS['SOD'] = {['color'] = {.25, .26, .58}} |
end |
if _G['SC'].BARS['SODCD'] == nil then--Symbols of Death CD |
_G['SC'].BARS['SODCD'] = {['color'] = {.25, .26, .58}} |
if SC.BARS['SODCD'] == nil then--Symbols of Death CD |
SC.BARS['SODCD'] = {['color'] = {.25, .26, .58}} |
end |
if _G['SC'].BARS['SB'] == nil then--Shadow Blades |
_G['SC'].BARS['SB'] = {['color'] = {.19, .58, .39}} |
if SC.BARS['SB'] == nil then--Shadow Blades |
SC.BARS['SB'] = {['color'] = {.19, .58, .39}} |
end |
if _G['SC'].BARS['SBCD'] == nil then--Shadow Blades CD |
_G['SC'].BARS['SBCD'] = {['color'] = {.1, .5, .31}} |
if SC.BARS['SBCD'] == nil then--Shadow Blades CD |
SC.BARS['SBCD'] = {['color'] = {.1, .5, .31}} |
end |
if _G['SC'].BARS['SD'] == nil then--Shadow Dance |
_G['SC'].BARS['SD'] = {['color'] = {.2, .4, .53}} |
if SC.BARS['SD'] == nil then--Shadow Dance |
SC.BARS['SD'] = {['color'] = {.2, .4, .53}} |
end |
if _G['SC'].BARS['SDCD'] == nil then--Shadow Dance CD |
_G['SC'].BARS['SDCD'] = {['color'] = {.12, .32, .45}} |
if SC.BARS['SDCD'] == nil then--Shadow Dance CD |
SC.BARS['SDCD'] = {['color'] = {.12, .32, .45}} |
end |
if _G['SC'].BARS['SHT'] == nil then--Shuriken Tornado |
_G['SC'].BARS['SHT'] = {['color'] = {.6, .55, .17}} |
if SC.BARS['SHT'] == nil then--Shuriken Tornado |
SC.BARS['SHT'] = {['color'] = {.6, .55, .17}} |
end |
_G['SC'].BARS['SHT']['tick'] = { |
SC.BARS['SHT']['tick'] = { |
['obj'] = {}, |
['value'] = 1 |
} |
if _G['SC'].BARS['SHTCD'] == nil then--Shuriken Tornado CD |
_G['SC'].BARS['SHTCD'] = {['color'] = {.6, .55, .17}} |
if SC.BARS['SHTCD'] == nil then--Shuriken Tornado CD |
SC.BARS['SHTCD'] = {['color'] = {.6, .55, .17}} |
end |
if _G['SC'].BARS['STHCD'] == nil then--Secret Technique |
_G['SC'].BARS['STHCD'] = {['color'] = {.52, .18, .54}} |
if SC.BARS['STHCD'] == nil then--Secret Technique |
SC.BARS['STHCD'] = {['color'] = {.52, .18, .54}} |
end |
if _G['SC'].BARS['FW'] == nil then--Find Weakness |
_G['SC'].BARS['FW'] = {['color'] = {.28, .86, .47}} |
if SC.BARS['FW'] == nil then--Find Weakness |
SC.BARS['FW'] = {['color'] = {.28, .86, .47}} |
end |
end |
function SliceCommander:InitBarArray() |
if _G['SC'].BARS == nil then |
_G['SC'].BARS = {} |
if SC.BARS == nil then |
SC.BARS = {} |
end |
SliceCommander:InitGlobalBarArray() |
SliceCommander:InitOutlawBarArray() |
SliceCommander:InitSubtletyBarArray() |
for k, v in pairs(_G['SC'].BARS) do |
_G['SC'].BARS[k]['obj'] = 0 |
_G['SC'].BARS[k]['pandemic'] = false |
_G['SC'].BARS[k]['expire'] = 0 |
_G['SC'].BARS[k]['name'] = SC_SPELL[k] |
_G['SC'].BARS[k]['id'] = SC_SPELLID[k] |
for k, v in pairs(SC.BARS) do |
SC.BARS[k]['obj'] = 0 |
SC.BARS[k]['pandemic'] = false |
SC.BARS[k]['expire'] = 0 |
SC.BARS[k]['name'] = SC_SPELL[k] |
SC.BARS[k]['id'] = SC_SPELLID[k] |
end |
local buff = {'AR', 'SUB', 'EP', 'CV', 'AC', 'FE', 'SND', 'SD', 'SOD', 'SB', 'OP', 'ENV', 'GB', 'GSWW', 'MAI', 'LD', 'BF', 'SHT', 'COS', 'EVA', 'SPR', 'BLS', 'MA', 'SS', 'ER'} |
for i, v in ipairs(buff) do--BUFF |
_G['SC'].BARS[v]['type'] = 1 |
SC.BARS[v]['type'] = 1 |
end |
local debuff = {'GAR', 'RUP', 'DP', 'KS', 'CS', 'VEN', 'GS', 'KB', 'BA', 'ST', 'CT', 'BE', 'GG', 'FW', 'SP', 'FLA', 'SBS'} |
for i, v in ipairs(debuff) do--DEBUFF |
_G['SC'].BARS[v]['type'] = 2 |
SC.BARS[v]['type'] = 2 |
end |
local selfdebuff = {'CDCD', 'CDB'} |
for i, v in ipairs(selfdebuff) do--SELF DEBUF |
_G['SC'].BARS[v]['type'] = 3 |
SC.BARS[v]['type'] = 3 |
end |
local cd = {'VANCD', 'KSPCD', 'ARCD', 'CDBCD', 'CVCD', 'MDCD', 'GHCD', 'BECD', 'TOTCD', 'SDCD', 'SBCD', 'VENCD', 'GBCD', 'EXCD', 'GARCD', 'KBCD', 'KSCD', 'DFACD', 'KICD', 'SODCD', 'SHTCD', 'STHCD', 'COSCD', 'EVACD', 'SPRCD', 'FECD', 'GSCD', 'BRCD', 'GGCD', 'ESSECD', 'BFCD', 'RBCD', 'SUMSCD', 'FCCD', 'SOSCD', 'DOSCD', 'ERCD', 'SPCD', 'FLACD'} |
for i, v in ipairs(cd) do--CD |
_G['SC'].BARS[v]['type'] = 4 |
SC.BARS[v]['type'] = 4 |
end |
--CHARGE CD |
_G['SC'].BARS['SDCD']['type'] = 5 |
_G['SC'].BARS['SSCD']['type'] = 5 |
_G['SC'].BARS['SBSCD']['type'] = 5 |
SC.BARS['SDCD']['type'] = 5 |
SC.BARS['SSCD']['type'] = 5 |
SC.BARS['SBSCD']['type'] = 5 |
--MULTIPLE BUFF BAR |
_G['SC'].BARS['RB']['type'] = 6 |
SC.BARS['RB']['type'] = 6 |
--[[local chargecd = {'SDCD'} |
for i, v in ipairs(chargecd) do |
_G['SC'].BARS[v]['type'] = 5 |
SC.BARS[v]['type'] = 5 |
end |
local chargecd = {'RB'} |
for i, v in ipairs(chargecd) do |
_G['SC'].BARS[v]['type'] = 6 |
SC.BARS[v]['type'] = 6 |
end]] |
local pandemic = { |
} |
} |
for i, v in pairs(pandemic) do |
_G['SC'].BARS[i]['pandemic'] = true |
_G['SC'].BARS[i]['pandemictimer'] = v |
_G['SC'].BARS[i]['pandemicobj'] = nil |
SC.BARS[i]['pandemic'] = true |
SC.BARS[i]['pandemictimer'] = v |
SC.BARS[i]['pandemicobj'] = nil |
end |
end |
local Smoother = LibStub("LibSmoothStatusBar-1.0") |
local Glower = LibStub("LibCustomGlow-1.0") |
local _G = getfenv(0) |
function SliceCommander:NewFrame(color, name) |
local f = CreateFrame("StatusBar", 'SliceCommander_bar_' .. name, UIParent, BackdropTemplateMixin and "BackdropTemplate") |
-- text on the right -- |
f.text = f:CreateFontString(nil, nil, 'GameFontNormal') |
f.text:SetFontObject(_G['SC'].BarFont1) |
f.text:SetFontObject(SC.BarFont1) |
f.text:SCWidth(120) |
f.text:SCPoint("TOPRIGHT", f, "TOPRIGHT", -5, 0) |
f.text:SetJustifyH("RIGHT") |
-- text on the center -- |
f.text2 = f:CreateFontString(nil, nil, 'GameFontNormal') |
f.text2:SCPoint("CENTER", f, "CENTER", -8, 0) |
f.text2:SetFontObject(_G['SC'].BarFont1) |
f.text2:SetFontObject(SC.BarFont1) |
f.text2:SCWidth(200) |
f.text2:SetJustifyH("CENTER") |
f:SetFrameStrata("MEDIUM") |
f:Hide() |
f:SetDefaultBackdrop() |
local r,v,b = unpack(_G['SC'].V.bColor) |
f:SetBackdropBorderColor(unpack(_G['SC'].V.wColor)) |
local r,v,b = unpack(SC.V.bColor) |
f:SetBackdropBorderColor(unpack(SC.V.wColor)) |
f:SetBackdropColor(r,v,b,0) |
f:SetPoint(point, VTimerEnergy, relativePoint, x, y) |
return f |
SliceCommanderFrame:SetMovable(true) |
SliceCommanderFrame:SCSize(216, 36) |
SliceCommanderFrame:SetPoint( |
_G['SC'].OTHER['SliceCommanderFrame']['position'].point, |
_G['SC'].OTHER['SliceCommanderFrame']['position'].relativeTo, |
_G['SC'].OTHER['SliceCommanderFrame']['position'].relativePoint, |
_G['SC'].OTHER['SliceCommanderFrame']['position'].xOfs, |
_G['SC'].OTHER['SliceCommanderFrame']['position'].yOfs |
SC.OTHER['SliceCommanderFrame']['position'].point, |
SC.OTHER['SliceCommanderFrame']['position'].relativeTo, |
SC.OTHER['SliceCommanderFrame']['position'].relativePoint, |
SC.OTHER['SliceCommanderFrame']['position'].xOfs, |
SC.OTHER['SliceCommanderFrame']['position'].yOfs |
) |
SliceCommanderFrame:SetDefaultBackdrop() |
SliceCommanderFrame:SetBackdropColor(0.7,0.2,0.2,1) |
f:SetFrameLevel(1) |
f:SetMinMaxValues(0,UnitPowerMax("player", Enum.PowerType.Energy)) |
f:SetDefaultBackdrop() |
f:SetBackdropBorderColor(unpack(_G['SC'].V.wColor)) |
f:SetBackdropBorderColor(unpack(SC.V.wColor)) |
f:SetBackdropColor(unpack({.1,.1,.1,.7})) |
f:SetStatusBarTexture(SliceCommander:BarTexture()) |
f:SetFrameStrata("MEDIUM") |
f:SetFrameLevel(1) |
f:SetStatusBarColor(unpack(_G['SC'].SET.energyColor)) |
f:SetStatusBarColor(unpack(SC.SET.energyColor)) |
f.border = SliceCommander:tukSkin(f, false) |
if _G['SC'].SET.HideEnergy then |
if SC.SET.HideEnergy then |
f:Hide() |
else |
f:Show() |
function SliceCommander:CreateSpark() |
for i = 1, 3 do |
_G['SC'].Spark[i] = VTimerEnergy:CreateTexture(nil, 'OVERLAY', nil, 1) |
_G['SC'].Spark[i]:SetTexture("Interface\\CastingBar\\UI-CastingBar-Spark") |
_G['SC'].Spark[i]:SetBlendMode('ADD') |
_G['SC'].Spark[i]:SCSize(5,20) |
SC.Spark[i] = VTimerEnergy:CreateTexture(nil, 'OVERLAY', nil, 1) |
SC.Spark[i]:SetTexture("Interface\\CastingBar\\UI-CastingBar-Spark") |
SC.Spark[i]:SetBlendMode('ADD') |
SC.Spark[i]:SCSize(5,20) |
end |
end |
local tickObj = BAR['obj']:CreateTexture(nil, 'OVERLAY', nil, 1) |
tickObj:SetTexture('Interface\\AddOns\\SliceCommander\\Images\\solid.tga') |
tickObj:SCWidth(2) |
tickObj:SCHeight(_G['SC'].SET.TimerHeight) |
tickObj:SCHeight(SC.SET.TimerHeight) |
tickObj:SetVertexColor(226/255, 226/255, 226/255, 0.75) |
table.insert(_G['SCtick'], tickObj) |
return tickObj |
MoveFrame:SetMovable(true) |
MoveFrame:SCSize(28, 28) |
MoveFrame:SetPoint( |
_G['SC'].OTHER[name]['position'].point, |
_G['SC'].OTHER[name]['position'].relativeTo, |
_G['SC'].OTHER[name]['position'].relativePoint, |
_G['SC'].OTHER[name]['position'].xOfs, |
_G['SC'].OTHER[name]['position'].yOfs |
SC.OTHER[name]['position'].point, |
SC.OTHER[name]['position'].relativeTo, |
SC.OTHER[name]['position'].relativePoint, |
SC.OTHER[name]['position'].xOfs, |
SC.OTHER[name]['position'].yOfs |
) |
MoveFrame:SetDefaultBackdrop() |
MoveFrame:SetBackdropColor(0.7,0.2,0.2,1) |
f.iconTxt:SetJustifyH("CENTER") |
f.iconTxt:SetJustifyV("MIDDLE") |
f.iconTxt:SCPoint('CENTER', f, "CENTER", 2, 0) |
f.iconTxt:SetFontObject(_G['SC'].FontIcon) |
f.iconTxt:SetFontObject(SC.FontIcon) |
f.iconTxt:SetShadowColor(0,0,0,1) |
f.iconTxt:SetShadowOffset(2*_G['SC'].V.pxW, -2*_G['SC'].V.pxH) |
f.iconTxt:SetShadowOffset(2*SC.V.pxW, -2*SC.V.pxH) |
return f |
end |
function SliceCommander:tukSkin(frame, texture) |
return { |
[1] = SliceCommander:CreateTextureSkin(frame, _G['SC'].V.bColor, 1, texture), |
[2] = SliceCommander:CreateTextureSkin(frame, _G['SC'].V.wColor, 2, texture), |
[3] = SliceCommander:CreateTextureSkin(frame, _G['SC'].V.bColor, 3, texture) |
[1] = SliceCommander:CreateTextureSkin(frame, SC.V.bColor, 1, texture), |
[2] = SliceCommander:CreateTextureSkin(frame, SC.V.wColor, 2, texture), |
[3] = SliceCommander:CreateTextureSkin(frame, SC.V.bColor, 3, texture) |
} |
end |
local ChatEdit_FocusActiveWindow = ChatEdit_FocusActiveWindow |
local STATICPOPUP_TEXTURE_ALERT = STATICPOPUP_TEXTURE_ALERT |
local STATICPOPUP_TEXTURE_ALERTGEAR = STATICPOPUP_TEXTURE_ALERTGEAR |
local _G = getfenv(0) |
function SliceCommander:LoadPopup() |
_G['SC'].PopupDialogs = {}; |
_G['SC'].StaticPopup_DisplayedFrames = {}; |
SC.PopupDialogs = {}; |
SC.StaticPopup_DisplayedFrames = {}; |
_G['SC'].PopupDialogs['FAILED_UISCALE'] = { |
SC.PopupDialogs['FAILED_UISCALE'] = { |
text = L["You have changed your UIScale, however you still have the PixelPerfect option enabled in SliceCommander. Press accept if you would like to disable the Auto Scale option."], |
button1 = ACCEPT, |
button2 = CANCEL, |
OnAccept = function() _G['SC'].SET.PixelPerfect = false; ReloadUI(); end, |
OnAccept = function() SC.SET.PixelPerfect = false; ReloadUI(); end, |
timeout = 0, |
whileDead = 1, |
hideOnEscape = false, |
} |
_G['SC'].PopupDialogs["CONFIG_UNLOCK"] = { |
SC.PopupDialogs["CONFIG_UNLOCK"] = { |
text = L["SliceCommander frames are currently unlocked. Accept to relock them."], |
button1 = ACCEPT, |
OnAccept = function() SliceCommander:LockCkecked(true) end, |
hideOnEscape = false, |
} |
_G['SC'].PopupDialogs["CONFIG_RL"] = { |
SC.PopupDialogs["CONFIG_RL"] = { |
text = L["One or more of the changes you have made require a ReloadUI."], |
button1 = ACCEPT, |
button2 = CANCEL, |
hideOnEscape = false, |
} |
_G['SC'].PopupDialogs["FAILED_UISCALERESOLUTION"] = { |
SC.PopupDialogs["FAILED_UISCALERESOLUTION"] = { |
text = L["The resolution for the PixelPerfect option can not be found properly. You should try to change your client to fullscreen and then back to windowed. If does not fix the issue you can force the resolution for SliceCommander with the following macro '/sc resolution 1920x1080' (replace 1920x1080 by your resolution)."], |
button1 = ACCEPT, |
OnAccept = function() GameMenuButtonOptions:Click(); end, |
function SliceCommander:StaticPopup_OnShow() |
PlaySound("igMainMenuOpen"); |
local dialog = _G['SC'].PopupDialogs[self.which]; |
local dialog = SC.PopupDialogs[self.which]; |
local OnShow = dialog.OnShow; |
if ( OnShow ) then |
_G[self:GetName().."MoneyInputFrameGold"]:SetFocus(); |
end |
if ( dialog.enterClicksFirstButton ) then |
self:SetScript("OnKeyDown", _G['SC'].StaticPopup_OnKeyDown); |
self:SetScript("OnKeyDown", SC.StaticPopup_OnKeyDown); |
end |
end |
function SliceCommander:StaticPopup_EscapePressed() |
local closed = nil; |
for _, frame in pairs(_G['SC'].StaticPopup_DisplayedFrames) do |
for _, frame in pairs(SC.StaticPopup_DisplayedFrames) do |
if( frame:IsShown() and frame.hideOnEscape ) then |
local standardDialog = _G['SC'].PopupDialogs[frame.which]; |
local standardDialog = SC.PopupDialogs[frame.which]; |
if ( standardDialog ) then |
local OnCancel = standardDialog.OnCancel; |
local noCancelOnEscape = standardDialog.noCancelOnEscape; |
end |
function SliceCommander:StaticPopup_CollapseTable() |
if (_G['SC'].StaticPopup_DisplayedFrames == nil) then |
if (SC.StaticPopup_DisplayedFrames == nil) then |
SliceCommander:LoadPopup(); |
end |
local displayedFrames = _G['SC'].StaticPopup_DisplayedFrames; |
local displayedFrames = SC.StaticPopup_DisplayedFrames; |
local index = #displayedFrames; |
while ( ( index >= 1 ) and ( not displayedFrames[index]:IsShown() ) ) do |
tremove(displayedFrames, index); |
end |
function SliceCommander:StaticPopup_SetUpPosition(dialog) |
if not tContains(_G['SC'].StaticPopup_DisplayedFrames, dialog) then |
local lastFrame = _G['SC'].StaticPopup_DisplayedFrames[#_G['SC'].StaticPopup_DisplayedFrames]; |
if not tContains(SC.StaticPopup_DisplayedFrames, dialog) then |
local lastFrame = SC.StaticPopup_DisplayedFrames[#SC.StaticPopup_DisplayedFrames]; |
if lastFrame then |
dialog:SCPoint("TOP", lastFrame, "BOTTOM", 0, -4); |
else |
dialog:SCPoint("TOP", UIParent, "TOP", 0, -100); |
end |
tinsert(_G['SC'].StaticPopup_DisplayedFrames, dialog); |
tinsert(SC.StaticPopup_DisplayedFrames, dialog); |
end |
end |
--Used to figure out if we can resize a frame |
function SliceCommander:StaticPopup_IsLastDisplayedFrame(frame) |
for i=#_G['SC'].StaticPopup_DisplayedFrames, 1, -1 do |
local popup = _G['SC'].StaticPopup_DisplayedFrames[i]; |
for i=#SC.StaticPopup_DisplayedFrames, 1, -1 do |
local popup = SC.StaticPopup_DisplayedFrames[i]; |
if ( popup:IsShown() ) then |
return frame == popup |
end |
return; |
end |
local dialog = _G['SC'].PopupDialogs[self.which]; |
local dialog = SC.PopupDialogs[self.which]; |
if ( dialog ) then |
if ( key == "ENTER" and dialog.enterClicksFirstButton ) then |
local frameName = self:GetName(); |
SliceCommander:StaticPopup_CollapseTable(); |
local dialog = _G['SC'].PopupDialogs[self.which]; |
local dialog = SC.PopupDialogs[self.which]; |
local OnHide = dialog.OnHide; |
if ( OnHide ) then |
OnHide(self, self.data); |
local which = self.which; |
local timeleft = self.timeleft - elapsed; |
if ( timeleft <= 0 ) then |
if ( not _G['SC'].PopupDialogs[which].timeoutInformationalOnly ) then |
if ( not SC.PopupDialogs[which].timeoutInformationalOnly ) then |
self.timeleft = 0; |
local OnCancel = _G['SC'].PopupDialogs[which].OnCancel; |
local OnCancel = SC.PopupDialogs[which].OnCancel; |
if ( OnCancel ) then |
OnCancel(self, self.data, "timeout"); |
end |
if ( timeleft <= 0 ) then |
self.startDelay = nil; |
local text = _G[self:GetName().."Text"]; |
text:SetFormattedText(_G['SC'].PopupDialogs[which].text, text.text_arg1, text.text_arg2); |
text:SetFormattedText(SC.PopupDialogs[which].text, text.text_arg1, text.text_arg2); |
local button1 = _G[self:GetName().."Button1"]; |
button1:Enable(); |
StaticPopup_Resize(self, which); |
self.startDelay = timeleft; |
end |
local onUpdate = _G['SC'].PopupDialogs[self.which].OnUpdate; |
local onUpdate = SC.PopupDialogs[self.which].OnUpdate; |
if ( onUpdate ) then |
onUpdate(self, elapsed); |
end |
return; |
end |
local which = self.which; |
local info = _G['SC'].PopupDialogs[which]; |
local info = SC.PopupDialogs[which]; |
if ( not info ) then |
return nil; |
end |
dialog = parent:GetParent(); |
end |
if ( not self.autoCompleteParams or not AutoCompleteEditBox_OnEnterPressed(self) ) then |
EditBoxOnEnterPressed = _G['SC'].PopupDialogs[which].EditBoxOnEnterPressed; |
EditBoxOnEnterPressed = SC.PopupDialogs[which].EditBoxOnEnterPressed; |
if ( EditBoxOnEnterPressed ) then |
EditBoxOnEnterPressed(self, dialog.data); |
end |
end |
function SliceCommander:StaticPopup_EditBoxOnEscapePressed() |
local EditBoxOnEscapePressed = _G['SC'].PopupDialogs[self:GetParent().which].EditBoxOnEscapePressed; |
local EditBoxOnEscapePressed = SC.PopupDialogs[self:GetParent().which].EditBoxOnEscapePressed; |
if ( EditBoxOnEscapePressed ) then |
EditBoxOnEscapePressed(self, self:GetParent().data); |
end |
function SliceCommander:StaticPopup_EditBoxOnTextChanged(userInput) |
if ( not self.autoCompleteParams or not AutoCompleteEditBox_OnTextChanged(self, userInput) ) then |
local EditBoxOnTextChanged = _G['SC'].PopupDialogs[self:GetParent().which].EditBoxOnTextChanged; |
local EditBoxOnTextChanged = SC.PopupDialogs[self:GetParent().which].EditBoxOnTextChanged; |
if ( EditBoxOnTextChanged ) then |
EditBoxOnTextChanged(self, self:GetParent().data); |
end |
end |
function SliceCommander:StaticPopup_FindVisible(which, data) |
local info = _G['SC'].PopupDialogs[which]; |
local info = SC.PopupDialogs[which]; |
if ( not info ) then |
return nil; |
end |
end |
function SliceCommander:StaticPopup_Resize(dialog, which) |
local info = _G['SC'].PopupDialogs[which]; |
local info = SC.PopupDialogs[which]; |
if ( not info ) then |
return nil; |
end |
local tempButtonLocs = {}; --So we don't make a new table each time. |
function SliceCommander:StaticPopup_Show(which, text_arg1, text_arg2, data) |
if _G['SC'].PopupDialogs == nil then |
if SC.PopupDialogs == nil then |
SliceCommander:LoadPopup() |
end |
local info = _G['SC'].PopupDialogs[which]; |
local info = SC.PopupDialogs[which]; |
if not info then |
return nil; |
end |
local frame = _G["SliceCommander_StaticPopup"..index]; |
if ( frame:IsShown() and (frame.which == info.cancels) ) then |
frame:Hide(); |
local OnCancel = _G['SC'].PopupDialogs[frame.which].OnCancel; |
local OnCancel = SC.PopupDialogs[frame.which].OnCancel; |
if ( OnCancel ) then |
OnCancel(frame, frame.data, "override"); |
end |
_G[dialog:GetName().."MoneyFrame"]:Hide(); |
-- Set OnEnterPress for money input frames |
if ( info.EditBoxOnEnterPressed ) then |
moneyInputFrame.gold:SetScript("OnEnterPressed", _G['SC'].StaticPopup_EditBoxOnEnterPressed); |
moneyInputFrame.silver:SetScript("OnEnterPressed", _G['SC'].StaticPopup_EditBoxOnEnterPressed); |
moneyInputFrame.copper:SetScript("OnEnterPressed", _G['SC'].StaticPopup_EditBoxOnEnterPressed); |
moneyInputFrame.gold:SetScript("OnEnterPressed", SC.StaticPopup_EditBoxOnEnterPressed); |
moneyInputFrame.silver:SetScript("OnEnterPressed", SC.StaticPopup_EditBoxOnEnterPressed); |
moneyInputFrame.copper:SetScript("OnEnterPressed", SC.StaticPopup_EditBoxOnEnterPressed); |
else |
moneyInputFrame.gold:SetScript("OnEnterPressed", nil); |
moneyInputFrame.silver:SetScript("OnEnterPressed", nil); |
end |
function SliceCommander:Contruct_StaticPopups() |
_G['SC'].StaticPopupFrames = {} |
SC.StaticPopupFrames = {} |
for index = 1, MAX_STATIC_POPUPS do |
_G['SC'].StaticPopupFrames[index] = CreateFrame('Frame', 'SliceCommander_StaticPopup'..index, UIParent, 'StaticPopupTemplate') |
_G['SC'].StaticPopupFrames[index]:SetID(index) |
SC.StaticPopupFrames[index] = CreateFrame('Frame', 'SliceCommander_StaticPopup'..index, UIParent, 'StaticPopupTemplate') |
SC.StaticPopupFrames[index]:SetID(index) |
--Fix Scripts |
_G['SC'].StaticPopupFrames[index]:SetScript('OnShow', _G['SC'].StaticPopup_OnShow) |
_G['SC'].StaticPopupFrames[index]:SetScript('OnHide', _G['SC'].StaticPopup_OnHide) |
_G['SC'].StaticPopupFrames[index]:SetScript('OnUpdate', _G['SC'].StaticPopup_OnUpdate) |
_G['SC'].StaticPopupFrames[index]:SetScript('OnEvent', _G['SC'].StaticPopup_OnEvent) |
SC.StaticPopupFrames[index]:SetScript('OnShow', SC.StaticPopup_OnShow) |
SC.StaticPopupFrames[index]:SetScript('OnHide', SC.StaticPopup_OnHide) |
SC.StaticPopupFrames[index]:SetScript('OnUpdate', SC.StaticPopup_OnUpdate) |
SC.StaticPopupFrames[index]:SetScript('OnEvent', SC.StaticPopup_OnEvent) |
for i = 1, 3 do |
_G['SliceCommander_StaticPopup'..index..'Button'..i]:SetScript('OnClick', function(self) |
end) |
end |
_G['SliceCommander_StaticPopup'..index..'EditBox']:SetScript('OnEnterPressed', _G['SC'].StaticPopup_EditBoxOnEnterPressed) |
_G['SliceCommander_StaticPopup'..index..'EditBox']:SetScript('OnEscapePressed', _G['SC'].StaticPopup_EditBoxOnEscapePressed) |
_G['SliceCommander_StaticPopup'..index..'EditBox']:SetScript('OnTextChanged', _G['SC'].StaticPopup_EditBoxOnTextChanged) |
_G['SliceCommander_StaticPopup'..index..'EditBox']:SetScript('OnEnterPressed', SC.StaticPopup_EditBoxOnEnterPressed) |
_G['SliceCommander_StaticPopup'..index..'EditBox']:SetScript('OnEscapePressed', SC.StaticPopup_EditBoxOnEscapePressed) |
_G['SliceCommander_StaticPopup'..index..'EditBox']:SetScript('OnTextChanged', SC.StaticPopup_EditBoxOnTextChanged) |
end |
local AceConfig = LibStub("AceConfig-3.0") |
local L = LibStub("AceLocale-3.0"):GetLocale("SliceCommander") |
local LSM = LibStub("LibSharedMedia-3.0") |
local _G = getfenv(0) |
function SliceCommander:getOrder() |
_G['SC'].order = _G['SC'].order+1 |
local cd |
local count = 0 |
for k, v in pairs(_G['SC'].SET.Pos) do |
for k, v in pairs(SC.SET.Pos) do |
if _G['SC'].BARS[string.upper(k)] == nil or _G['SC'].BARS[string.upper(k)]['name'] == nil then |
_G['SC'].SET.Pos[string.upper(k)] = nil--Remove spell |
_G['SC'].BARS[string.upper(k)] = nil |
desc = SliceCommander:getColorCDDescription(spell), |
type = "color", |
set = function(info, r, g, b) |
_G['SC'].BARS[spell]['obj']:SetStatusBarColor(r, g, b) |
_G['SC'].BARS[spell]['color'] = {r, g, b} |
SC.BARS[spell]['obj']:SetStatusBarColor(r, g, b) |
SC.BARS[spell]['color'] = {r, g, b} |
end, |
get = function(info) return unpack(_G['SC'].BARS[spell]['color']) end |
get = function(info) return unpack(SC.BARS[spell]['color']) end |
} |
end |
desc = L["CP color"], |
type = "color", |
set = function(info, r, g, b) |
_G['SC'].SET.CP[type][id] = {r, g, b } |
SC.SET.CP[type][id] = {r, g, b } |
local maxCP = UnitPowerMax("player", SPELL_POWER_COMBO_POINTS) |
_G['SC'].BARS['CP']['obj'].combos[id].bg:SetVertexColor(unpack(_G['SC'].SET.CP[maxCP][id])) |
SC.BARS['CP']['obj'].combos[id].bg:SetVertexColor(unpack(SC.SET.CP[maxCP][id])) |
end, |
get = function(info) return unpack(_G['SC'].SET.CP[type][id]) end |
get = function(info) return unpack(SC.SET.CP[type][id]) end |
} |
end |
width = "full", |
values = SliceCommander:ArrayPos(), |
set = function(info,val) |
_G['SC'].SET.Pos[spell] = val |
SC.SET.Pos[spell] = val |
end, |
get = function(info) return _G['SC'].SET.Pos[spell] end |
get = function(info) return SC.SET.Pos[spell] end |
} |
end |
desc = SliceCommander:getShowCDDescription(spell), |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.display[spell] = val |
SC.SET.display[spell] = val |
end, |
get = function(info) return _G['SC'].SET.display[spell] end |
get = function(info) return SC.SET.display[spell] end |
} |
end |
desc = L["The bar will keep flashing when it should be use."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.flash[spell] = val |
SC.SET.flash[spell] = val |
end, |
get = function(info) return _G['SC'].SET.flash[spell] end |
get = function(info) return SC.SET.flash[spell] end |
} |
end |
['Pos'..spell] = SliceCommander:getPosSetting(spell), |
['Flash'..spell] = SliceCommander:getFlashSetting(spell) |
} |
if _G['SC'].SET.SpellSound ~= nil and _G['SC'].SET.SpellSound then |
if SC.SET.SpellSound ~= nil and SC.SET.SpellSound then |
args.SpellSound = SliceCommander:getSpellSound(spell) |
end |
return { |
['Pos'..spell] = SliceCommander:getPosSetting(spell), |
['CDFlash'..spell] = SliceCommander:getFlashSetting(spell) |
} |
if _G['SC'].SET.SpellSound ~= nil and _G['SC'].SET.SpellSound then |
if SC.SET.SpellSound ~= nil and SC.SET.SpellSound then |
args.CDSpellSound = SliceCommander:getCDSpellSound(spell) |
end |
return { |
desc = string.format(L["%s text."], SC_SPELL[spell]), |
type = "input", |
width = "half", |
set = function(info,val) _G['SC'].SET.RB[spell] = val end, |
get = function(info) return _G['SC'].SET.RB[spell] end |
set = function(info,val) SC.SET.RB[spell] = val end, |
get = function(info) return SC.SET.RB[spell] end |
} |
end |
['CDPos'..spell] = SliceCommander:getPosSetting(spell..'CD'), |
['CDFlash'..spell] = SliceCommander:getFlashSetting(spell..'CD') |
} |
if _G['SC'].SET.SpellSound ~= nil and _G['SC'].SET.SpellSound then |
if SC.SET.SpellSound ~= nil and SC.SET.SpellSound then |
args.SpellSound = SliceCommander:getSpellSound(spell) |
args.CDSpellSound = SliceCommander:getCDSpellSound(spell..'CD') |
end |
step = 1, |
bigStep = 1, |
set = function(info,val) |
_G['SC'].SET.Energy[spec][id] = val |
SC.SET.Energy[spec][id] = val |
SliceCommander:SetSparks() |
end, |
get = function(info) return _G['SC'].SET.Energy[spec][id] end, |
get = function(info) return SC.SET.Energy[spec][id] end, |
isPercent = false |
} |
end |
dialogControl = 'LSM30_Sound', |
values = LSM:HashTable("sound"), |
set = function(info,val) |
_G['SC'].BARS[spell]['sound'][id] = val |
SC.BARS[spell]['sound'][id] = val |
end, |
get = function(info) |
if _G['SC'].BARS[spell]['sound'] == nil then _G['SC'].BARS[spell]['sound'] = {} end |
if _G['SC'].BARS[spell]['sound'][id] == nil then _G['SC'].BARS[spell]['sound'][id] = 'None' end |
return _G['SC'].BARS[spell]['sound'][id] |
if SC.BARS[spell]['sound'] == nil then SC.BARS[spell]['sound'] = {} end |
if SC.BARS[spell]['sound'][id] == nil then SC.BARS[spell]['sound'][id] = 'None' end |
return SC.BARS[spell]['sound'][id] |
end |
} |
end |
name = L["Sound Combat"], |
desc = L["Disable sounds out of combat"], |
type = "toggle", |
set = function(info,val) _G['SC'].SET.SoundCombat = val end, |
get = function(info) return _G['SC'].SET.SoundCombat end |
set = function(info,val) SC.SET.SoundCombat = val end, |
get = function(info) return SC.SET.SoundCombat end |
}, |
SoundChannel = { |
order = SliceCommander:getOrder(), |
return returnArray |
end, |
set = function(info,val) |
_G['SC'].SET.soundChannel = val |
SC.SET.soundChannel = val |
end, |
get = function(info) return _G['SC'].SET.soundChannel end |
get = function(info) return SC.SET.soundChannel end |
}, |
SoundVolume = { |
order = SliceCommander:getOrder(), |
desc = L["Each spell will have full sound personalization in their respective settings."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.SpellSound = val |
SC.SET.SpellSound = val |
SliceCommander:StaticPopup_Show('CONFIG_RL') |
end, |
get = function(info) |
if _G['SC'].SET.SpellSound == nil then |
_G['SC'].SET.SpellSound = false |
if SC.SET.SpellSound == nil then |
SC.SET.SpellSound = false |
end |
return _G['SC'].SET.SpellSound |
return SC.SET.SpellSound |
end |
}, |
ForceCDSpellSound = { |
desc = L["Force the cooldown sound to be play even if you are not in combat."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.ForceCDSpellSound = val |
SC.SET.ForceCDSpellSound = val |
end, |
get = function(info) |
if _G['SC'].SET.ForceCDSpellSound == nil then |
_G['SC'].SET.ForceCDSpellSound = false |
if SC.SET.ForceCDSpellSound == nil then |
SC.SET.ForceCDSpellSound = false |
end |
return _G['SC'].SET.ForceCDSpellSound |
return SC.SET.ForceCDSpellSound |
end |
}, |
} |
desc = L["Show HP value rather than health percentage."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.HEALTH.value = val |
SC.SET.HEALTH.value = val |
SliceCommander:HealthBar('HEALTH') |
end, |
get = function(info) return _G['SC'].SET.HEALTH.value end |
get = function(info) return SC.SET.HEALTH.value end |
}, |
healthCombat = { |
order = SliceCommander:getOrder(), |
desc = L["Hide health bar when you are not in combat."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.HEALTH.HideCombat = val |
SC.SET.HEALTH.HideCombat = val |
SliceCommander:HealthBar('HEALTH') |
end, |
get = function(info) return _G['SC'].SET.HEALTH.HideCombat end |
get = function(info) return SC.SET.HEALTH.HideCombat end |
}, |
MidHealthUnder = { |
order = SliceCommander:getOrder(), |
dialogControl = 'LSM30_Sound', |
values = LSM:HashTable("sound"), |
set = function(info,val) |
_G['SC'].SET.HEALTH.MidUnder = val |
SC.SET.HEALTH.MidUnder = val |
end, |
get = function(info) |
return _G['SC'].SET.HEALTH.MidUnder |
return SC.SET.HEALTH.MidUnder |
end |
}, |
LowHealthUnder = { |
dialogControl = 'LSM30_Sound', |
values = LSM:HashTable("sound"), |
set = function(info,val) |
_G['SC'].SET.HEALTH.LowUnder = val |
SC.SET.HEALTH.LowUnder = val |
end, |
get = function(info) |
return _G['SC'].SET.HEALTH.LowUnder |
return SC.SET.HEALTH.LowUnder |
end |
}, |
} |
desc = L["Show HP value rather than health percentage."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.THEALTH.value = val |
SC.SET.THEALTH.value = val |
SliceCommander:HealthBar('THEALTH') |
end, |
get = function(info) return _G['SC'].SET.THEALTH.value end |
get = function(info) return SC.SET.THEALTH.value end |
}, |
healthCombat = { |
order = SliceCommander:getOrder(), |
desc = L["Hide health bar when you are not in combat."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.THEALTH.HideCombat = val |
SC.SET.THEALTH.HideCombat = val |
SliceCommander:HealthBar('THEALTH') |
end, |
get = function(info) return _G['SC'].SET.THEALTH.HideCombat end |
get = function(info) return SC.SET.THEALTH.HideCombat end |
}, |
} |
}, |
type = "toggle", |
width = "full", |
set = function(info,val) |
_G['SC'].SET.ThreatGroupOnly = val |
SC.SET.ThreatGroupOnly = val |
end, |
get = function(info) return _G['SC'].SET.ThreatGroupOnly end |
get = function(info) return SC.SET.ThreatGroupOnly end |
}, |
} |
}, |
desc = string.format(L["Display the %s icon when the timer left on your poison go under specified time. If you are in combat it only display the icon when it fade out."], SC_SPELL['DP']), |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.display.DPICON = val |
SC.SET.display.DPICON = val |
end, |
get = function(info) return _G['SC'].SET.display.DPICON end |
get = function(info) return SC.SET.display.DPICON end |
}, |
DPTimeCheck = { |
order = SliceCommander:getOrder(), |
bigStep = 5, |
set = function(info,val) |
if strmatch(val,"%d") then |
_G['SC'].SET.display.DPTIME = val |
SC.SET.display.DPTIME = val |
else |
_G['SC'].SET.display.DPTIME = 10 |
SC.SET.display.DPTIME = 10 |
end |
end, |
get = function(info) return _G['SC'].SET.display.DPTIME end |
get = function(info) return SC.SET.display.DPTIME end |
}, |
DPButtonEnable = { |
order = SliceCommander:getOrder(), |
desc = L["Enable poison button has no effect if poison icon is not shown. If it is enable there is two restrinction: You can't click through the area where the icon was when the icon is hide in combat and the button does not work when the icon is shown in combat."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.display.DPBUT = val |
SC.SET.display.DPBUT = val |
end, |
get = function(info) return _G['SC'].SET.display.DPBUT end |
get = function(info) return SC.SET.display.DPBUT end |
}, |
DPSound = { |
order = SliceCommander:getOrder(), |
dialogControl = 'LSM30_Sound', |
values = LSM:HashTable("sound"), |
set = function(info,val) |
_G['SC'].SET.DPSound = val |
SC.SET.DPSound = val |
end, |
get = function(info) return _G['SC'].SET.DPSound end |
get = function(info) return SC.SET.DPSound end |
}, |
} |
}, |
desc = L["Write a macro which Tricks the target if it is friendly, if not the target of target. Except if a modifier is down the Tricks will target the player name specify here."], |
type = "input", |
set = function(info,val) |
_G['SC'].SET.TOTTarget = val |
SC.SET.TOTTarget = val |
SliceCommander:CreateTOTMacro() |
end, |
get = function(info) return _G['SC'].SET.TOTTarget end |
get = function(info) return SC.SET.TOTTarget end |
}, |
} |
}, |
name = L["Enable kick warning"], |
desc = L["If enable, a warning message will be display when you succeed to interrupts spellcasting."], |
type = "toggle", |
set = function(info,val) _G['SC'].SET.kickEnable = val end, |
get = function(info) return _G['SC'].SET.kickEnable end |
set = function(info,val) SC.SET.kickEnable = val end, |
get = function(info) return SC.SET.kickEnable end |
}, |
kickChannel = { |
order = SliceCommander:getOrder(), |
['PARTY'] = L["Party"], |
['SAY'] = L["Say"] |
}, |
set = function(info, key, val) _G['SC'].SET.kickChannel[key] = val end, |
get = function(info, key) return _G['SC'].SET.kickChannel[key] end |
set = function(info, key, val) SC.SET.kickChannel[key] = val end, |
get = function(info, key) return SC.SET.kickChannel[key] end |
}, |
kickMessage = { |
order = SliceCommander:getOrder(), |
desc = L["The warning message which will be display when you kick is successful."], |
type = "input", |
width = "full", |
set = function(info,val) _G['SC'].SET.kickMessage = val end, |
get = function(info) return _G['SC'].SET.kickMessage end |
set = function(info,val) SC.SET.kickMessage = val end, |
get = function(info) return SC.SET.kickMessage end |
}, |
kickSpell = { |
order = SliceCommander:getOrder(), |
name = L["Add spell"], |
desc = L["Add kicked spell at the start of the message."], |
type = "toggle", |
set = function(info,val) _G['SC'].SET.kickSpell = val end, |
get = function(info) return _G['SC'].SET.kickSpell end |
set = function(info,val) SC.SET.kickSpell = val end, |
get = function(info) return SC.SET.kickSpell end |
}, |
} |
}, |
set = function(info,val) |
local aSpec = GetSpecialization() |
if aSpec == 1 then |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[val]) |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[val]) |
end |
_G['SC'].SET.poison.mh[1] = val |
SC.SET.poison.mh[1] = val |
end, |
get = function(info) |
return _G['SC'].SET.poison.mh[1] |
return SC.SET.poison.mh[1] |
end |
}, |
Utility = { |
set = function(info,val) |
local aSpec = GetSpecialization() |
if aSpec == 1 then |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell2", SC_SPELL[val]) |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell2", SC_SPELL[val]) |
end |
_G['SC'].SET.poison.oh[1] = val |
SC.SET.poison.oh[1] = val |
end, |
get = function(info) |
return _G['SC'].SET.poison.oh[1] |
return SC.SET.poison.oh[1] |
end |
}, |
} |
set = function(info,val) |
local aSpec = GetSpecialization() |
if aSpec == 2 then |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[val]) |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[val]) |
end |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[val]) |
_G['SC'].SET.poison.mh[2] = val |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[val]) |
SC.SET.poison.mh[2] = val |
end, |
get = function(info) |
return _G['SC'].SET.poison.mh[2] |
return SC.SET.poison.mh[2] |
end |
}, |
Utility = { |
set = function(info,val) |
local aSpec = GetSpecialization() |
if aSpec == 2 then |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell2", SC_SPELL[val]) |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell2", SC_SPELL[val]) |
end |
_G['SC'].SET.poison.oh[2] = val |
SC.SET.poison.oh[2] = val |
end, |
get = function(info) |
return _G['SC'].SET.poison.oh[2] |
return SC.SET.poison.oh[2] |
end |
}, |
} |
desc = L["Each active buff actually up will be displayed in the spell name."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.display.RBName = val |
SC.SET.display.RBName = val |
end, |
get = function(info) return _G['SC'].SET.display.RBName end |
get = function(info) return SC.SET.display.RBName end |
}, |
SC = SliceCommander:getRBSetting('SC'), |
GM = SliceCommander:getRBSetting('GM'), |
desc = L["Enable mario star music during Adrenaline rush buff"], |
type = "toggle", |
set = function(info,val) |
if _G['SC'].BARS['AR']['sound'] == nil then _G['SC'].BARS['AR']['sound'] = {} end |
if SC.BARS['AR']['sound'] == nil then SC.BARS['AR']['sound'] = {} end |
if val then |
SliceCommander:PlaySoundReal('Mario') |
_G['SC'].BARS['AR']['sound']['applied'] = 'Mario' |
SC.BARS['AR']['sound']['applied'] = 'Mario' |
else |
if _G['SC'].previousSound then |
StopSound(_G['SC'].previousSound) |
if SC.previousSound then |
StopSound(SC.previousSound) |
end |
_G['SC'].BARS['AR']['sound']['applied'] = 'None' |
SC.BARS['AR']['sound']['applied'] = 'None' |
end |
_G['SC'].SET.ARMarioMod = val |
SC.SET.ARMarioMod = val |
end, |
get = function(info) return _G['SC'].SET.ARMarioMod end |
get = function(info) return SC.SET.ARMarioMod end |
}, |
headerCD = { |
type = "header", |
} |
} |
} |
if _G['SC'].SET.SpellSound ~= nil and _G['SC'].SET.SpellSound then |
if SC.SET.SpellSound ~= nil and SC.SET.SpellSound then |
SC_OptionsTable["Outlaw"]['args']['Skills']['args']['AR']['args']['ARCDSpellSound'] = SliceCommander:getCDSpellSound('ARCD') |
end |
set = function(info,val) |
local aSpec = GetSpecialization() |
if aSpec == 3 then |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[val]) |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[val]) |
end |
_G['SC'].SET.poison.mh[3] = val |
SC.SET.poison.mh[3] = val |
end, |
get = function(info) |
return _G['SC'].SET.poison.mh[3] |
return SC.SET.poison.mh[3] |
end |
}, |
Utility = { |
set = function(info,val) |
local aSpec = GetSpecialization() |
if aSpec == 3 then |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell2", SC_SPELL[val]) |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell2", SC_SPELL[val]) |
end |
_G['SC'].SET.poison.oh[3] = val |
SC.SET.poison.oh[3] = val |
end, |
get = function(info) |
return _G['SC'].SET.poison.oh[3] |
return SC.SET.poison.oh[3] |
end |
}, |
} |
set = function(info,val) |
SliceCommander:LockCkecked(val) |
end, |
get = function(info) return _G['SC'].SET.IsLocked end |
get = function(info) return SC.SET.IsLocked end |
}, |
FullTimer = {--Full timer |
order = SliceCommander:getOrder(), |
name = L["Full Timer"], |
desc = L["Make timer full bar duration"], |
type = "toggle", |
set = function(info,val) _G['SC'].SET.FullTimer = val end, |
get = function(info) return _G['SC'].SET.FullTimer end |
set = function(info,val) SC.SET.FullTimer = val end, |
get = function(info) return SC.SET.FullTimer end |
}, |
PadLatency = {--Latency |
order = SliceCommander:getOrder(), |
name = L["Enable Latency"], |
desc = L["Pad Alerts with Latency"], |
type = "toggle", |
set = function(info,val) _G['SC'].SET.PadLatency = val end, |
get = function(info) return _G['SC'].SET.PadLatency end |
set = function(info,val) SC.SET.PadLatency = val end, |
get = function(info) return SC.SET.PadLatency end |
}, |
SpellText = {--Spell text |
order = SliceCommander:getOrder(), |
name = L["Spell Text"], |
desc = L["Enable spell text on bars"], |
type = "toggle", |
set = function(info,val) _G['SC'].SET.SpellText = val end, |
get = function(info) return _G['SC'].SET.SpellText end |
set = function(info,val) SC.SET.SpellText = val end, |
get = function(info) return SC.SET.SpellText end |
}, |
GCD = {--Spell text |
order = SliceCommander:getOrder(), |
name = L["GCD Bar"], |
desc = L["Enable GCD bar"], |
type = "toggle", |
set = function(info,val) _G['SC'].SET.displayGCD = val end, |
get = function(info) return _G['SC'].SET.displayGCD end |
set = function(info,val) SC.SET.displayGCD = val end, |
get = function(info) return SC.SET.displayGCD end |
}, |
PixelPerfect = { |
order = SliceCommander:getOrder(), |
desc = L["Should be enabled. If you change this option state you have to reload interface. This option is automatically disabled after a reload to only force uiscale one time."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.PixelPerfect = val |
SC.SET.PixelPerfect = val |
SliceCommander:StaticPopup_Show('CONFIG_RL') |
end, |
get = function(info) return _G['SC'].SET.PixelPerfect end |
get = function(info) return SC.SET.PixelPerfect end |
}, |
skinEnable = { |
order = SliceCommander:getOrder(), |
desc = L["Add a border like the one on Tukui."], |
type = "toggle", |
set = function(info,val) |
_G['SC'].SET.skin = val |
SC.SET.skin = val |
SliceCommander:ApplySkin(val) |
SliceCommander:ShowHideBorder(val) |
end, |
get = function(info) return _G['SC'].SET.skin end |
get = function(info) return SC.SET.skin end |
}, |
headerDisplaySetting = {--CDisplay Setting |
order = SliceCommander:getOrder(), |
step = 1, |
bigStep = 1, |
set = function(info,val) |
_G['SC'].SET.IconSize = val |
SC.SET.IconSize = val |
SliceCommander:SetIconSize(val) |
end, |
get = function(info) return _G['SC'].SET.IconSize end, |
get = function(info) return SC.SET.IconSize end, |
isPercent = false |
}, |
Width = {--Width |
step = 1, |
bigStep = 5, |
set = function(info,val) |
_G['SC'].SET.Width = val |
if _G['SC'].SET.skin then |
SC.SET.Width = val |
if SC.SET.skin then |
SliceCommander:ApplySkin(false) |
end |
SliceCommander:SetWidth(val) |
if _G['SC'].SET.skin then |
if SC.SET.skin then |
SliceCommander:ApplySkin(true) |
end |
end, |
get = function(info) return _G['SC'].SET.Width end, |
get = function(info) return SC.SET.Width end, |
isPercent = false |
}, |
TimerHeight = {--Timer height |
step = 1, |
bigStep = 1, |
set = function(info,val) |
_G['SC'].SET.TimerHeight = val |
SC.SET.TimerHeight = val |
SliceCommander:SetTimersHeight(val) |
SliceCommander:ApplySkin(_G['SC'].SET.skin) |
SliceCommander:ApplySkin(SC.SET.skin) |
end, |
get = function(info) return _G['SC'].SET.TimerHeight end, |
get = function(info) return SC.SET.TimerHeight end, |
isPercent = false |
}, |
BarMargin = {--Margin |
max = 10, |
step = 1, |
bigStep = 1, |
set = function(info,val) _G['SC'].SET.BarMargin = val end, |
get = function(info) return _G['SC'].SET.BarMargin end, |
set = function(info,val) SC.SET.BarMargin = val end, |
get = function(info) return SC.SET.BarMargin end, |
isPercent = false |
}, |
FrameOpacity = {--Opacity |
bigStep = 1, |
set = function(info,val) |
SliceCommander:FrameOpacity(val) |
_G['SC'].SET.FrameOpacity = val |
SC.SET.FrameOpacity = val |
end, |
get = function(info) return _G['SC'].SET.FrameOpacity end, |
get = function(info) return SC.SET.FrameOpacity end, |
isPercent = false |
}, |
BarTexture = {--Texture |
dialogControl = 'LSM30_Statusbar', |
values = LSM:HashTable("statusbar"), |
set = function(info,val) |
_G['SC'].SET.BarTexture = val |
SC.SET.BarTexture = val |
SliceCommander:Config_RetextureBars(SliceCommander:BarTexture()) |
end, |
get = function(info) return _G['SC'].SET.BarTexture end |
get = function(info) return SC.SET.BarTexture end |
}, |
Font = { |
order = SliceCommander:getOrder(), |
dialogControl = 'LSM30_Font', |
values = LSM:HashTable("font"), |
set = function(info,val) |
_G['SC'].SET.font = val |
SC.SET.font = val |
SliceCommander:StaticPopup_Show('CONFIG_RL') |
end, |
get = function(info) return _G['SC'].SET.font end |
get = function(info) return SC.SET.font end |
}, |
headerEnergySetting = { |
order = SliceCommander:getOrder(), |
else |
VTimerEnergy:Show() |
end |
_G['SC'].SET.HideEnergy = val |
SC.SET.HideEnergy = val |
end, |
get = function(info) return _G['SC'].SET.HideEnergy end |
get = function(info) return SC.SET.HideEnergy end |
}, |
EnergyHeight = { |
order = SliceCommander:getOrder(), |
step = 1, |
bigStep = 1, |
set = function(info,val) |
_G['SC'].SET.EnergyHeight = val |
SC.SET.EnergyHeight = val |
SliceCommander:SetEnergyHeight(val) |
end, |
get = function(info) return _G['SC'].SET.EnergyHeight end, |
get = function(info) return SC.SET.EnergyHeight end, |
isPercent = false |
}, |
EnergyTrans = { |
bigStep = 1, |
set = function(info,val) |
SliceCommander:SetTransparency(val) |
_G['SC'].SET.EnergyTrans = val |
SC.SET.EnergyTrans = val |
end, |
get = function(info) return _G['SC'].SET.EnergyTrans end, |
get = function(info) return SC.SET.EnergyTrans end, |
isPercent = false |
}, |
EnergyColor = { |
type = "color", |
set = function(info, r, g, b) |
VTimerEnergy:SetStatusBarColor(r, g, b) |
_G['SC'].SET.energyColor = {r, g, b} |
SC.SET.energyColor = {r, g, b} |
end, |
get = function(info) return unpack(_G['SC'].SET.energyColor) end |
get = function(info) return unpack(SC.SET.energyColor) end |
}, |
headerTicksSetting = { |
order = SliceCommander:getOrder(), |
type = "toggle", |
width = "full", |
set = function(info,val) |
_G['SC'].SET.Pandemic = val |
SC.SET.Pandemic = val |
end, |
get = function(info) return _G['SC'].SET.Pandemic end |
get = function(info) return SC.SET.Pandemic end |
}, |
TickToggle = { |
order = SliceCommander:getOrder(), |
type = "toggle", |
width = "full", |
set = function(info,val) |
_G['SC'].SET.Tick = val |
SC.SET.Tick = val |
end, |
get = function(info) return _G['SC'].SET.Tick end |
get = function(info) return SC.SET.Tick end |
}, |
} |
} |
local L = LibStub("AceLocale-3.0"):GetLocale("SliceCommander") |
local _G = getfenv(0) |
function SliceCommander:UNIT_HEALTH(_, unitID) |
if unitID == "player" then |
--13:extraSpellID 14:extraSpellName 15:extraSchool |
function SliceCommander:COMBAT_LOG_EVENT_UNFILTERED() |
local _, event, _, _, sourceName, _, _, _, _, _, _, _, _, _, extraSpellID = CombatLogGetCurrentEventInfo() |
if event == "SPELL_INTERRUPT" and sourceName == UnitName("player") and _G['SC'].SET.kickEnable == true then |
local message = _G['SC'].SET.kickMessage |
if _G['SC'].SET.kickSpell then |
if event == "SPELL_INTERRUPT" and sourceName == UnitName("player") and SC.SET.kickEnable == true then |
local message = SC.SET.kickMessage |
if SC.SET.kickSpell then |
local link = GetSpellLink(extraSpellID) |
message = link..' > '..message |
end |
if _G['SC'].SET.kickChannel['INSTANCE_CHAT'] and IsInGroup(LE_PARTY_CATEGORY_INSTANCE) then |
if SC.SET.kickChannel['INSTANCE_CHAT'] and IsInGroup(LE_PARTY_CATEGORY_INSTANCE) then |
SendChatMessage(message, 'INSTANCE_CHAT') |
elseif _G['SC'].SET.kickChannel['RAID'] and IsInRaid() then |
elseif SC.SET.kickChannel['RAID'] and IsInRaid() then |
SendChatMessage(message, 'RAID') |
elseif _G['SC'].SET.kickChannel['PARTY'] and IsInGroup() then |
elseif SC.SET.kickChannel['PARTY'] and IsInGroup() then |
SendChatMessage(message, 'PARTY') |
elseif _G['SC'].SET.kickChannel['SAY'] then |
elseif SC.SET.kickChannel['SAY'] then |
SendChatMessage(message, 'SAY') |
end |
end |
end |
function SliceCommander:UNIT_SPELLCAST_START(_, unit, _, spellId) |
if unit == "player" and _G['SC'].SET.displayGCD then |
if unit == "player" and SC.SET.displayGCD then |
local start, dur = GetSpellCooldown(spellId) |
if dur and dur > 0 and dur <= 1.5 then |
_G['SC'].OTHER['AS']['expire'] = start+dur |
_G['SC'].OTHER['AS']['obj']:SetMinMaxValues(0, dur) |
_G['SC'].OTHER['AS']['obj']:Show() |
SC.OTHER['AS']['expire'] = start+dur |
SC.OTHER['AS']['obj']:SetMinMaxValues(0, dur) |
SC.OTHER['AS']['obj']:Show() |
end |
end |
end |
function SliceCommander:UNIT_MAXPOWER(_, UnitId, PowyerType) |
if _G['SC'].initDone and UnitId == "player" and PowyerType == "COMBO_POINTS" then |
if SC.initDone and UnitId == "player" and PowyerType == "COMBO_POINTS" then |
--Update CP Bar |
local maxCP = UnitPowerMax("player", Enum.PowerType.ComboPoints) |
for i = 1, maxCP do |
_G['SC'].BARS['CP']['obj'].combos[i].bg:SetVertexColor(unpack(_G['SC'].SET.CP[maxCP][i])) |
SC.BARS['CP']['obj'].combos[i].bg:SetVertexColor(unpack(SC.SET.CP[maxCP][i])) |
end |
for i = 1, 10 do |
_G['SC'].BARS['CP']['obj'].combos[i].bg:Hide() |
SC.BARS['CP']['obj'].combos[i].bg:Hide() |
end |
SliceCommander:SetTimersHeight(_G['SC'].SET.TimerHeight) |
SliceCommander:SetWidth(_G['SC'].SET.Width) |
SliceCommander:SetTimersHeight(SC.SET.TimerHeight) |
SliceCommander:SetWidth(SC.SET.Width) |
SliceCommander:SetComboPts() |
end |
end |
end |
function SliceCommander:ACTIVE_TALENT_GROUP_CHANGED() |
if _G['SC'].initDone then |
if SC.initDone then |
SliceCommander:SetSparks()--MOVE SPARK for the current spec |
local aSpec = GetSpecialization() |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[_G['SC'].SET.poison.mh[aSpec]]) |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell2", SC_SPELL[_G['SC'].SET.poison.oh[aSpec]]) |
if _G['SC'].SET.poison.oh == 'none' then |
_G['SC'].OTHER['POISON']['obj'].button:SetAttribute("spell2", nil) |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell1", SC_SPELL[SC.SET.poison.mh[aSpec]]) |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell2", SC_SPELL[SC.SET.poison.oh[aSpec]]) |
if SC.SET.poison.oh == 'none' then |
SC.OTHER['POISON']['obj'].button:SetAttribute("spell2", nil) |
end |
end |
end |
end |
function SliceCommander:OnInitialize() |
if _G['SC'] == nil then |
if SC == nil then |
_G['SC'] = {} |
end |
_G['SC'].initDone = false |
local _, englishClass = UnitClass("player") |
SliceCommander:GCD()--GCD |
SliceCommander:TargetThreat()--Threat |
for k, v in pairs(_G['SC'].BARS) do |
if _G['SC'].BARS[k]['type'] ~= nil then--1=BUFF 2=DEBUFF 3=SELF DEBUF |
if _G['SC'].BARS[k]['type'] == 1 or _G['SC'].BARS[k]['type'] == 2 or _G['SC'].BARS[k]['type'] == 3 then |
for k, v in pairs(SC.BARS) do |
if SC.BARS[k]['type'] ~= nil then--1=BUFF 2=DEBUFF 3=SELF DEBUF |
if SC.BARS[k]['type'] == 1 or SC.BARS[k]['type'] == 2 or SC.BARS[k]['type'] == 3 then |
SliceCommander:UpdateBar(k) |
elseif _G['SC'].BARS[k]['type'] == 4 then--CD |
elseif SC.BARS[k]['type'] == 4 then--CD |
SliceCommander:AbilityCDBar(k) |
elseif _G['SC'].BARS[k]['type'] == 5 then--CHARGE CD |
elseif SC.BARS[k]['type'] == 5 then--CHARGE CD |
SliceCommander:ChargeAbilityCDBar(k) |
elseif _G['SC'].BARS[k]['type'] == 6 then--MULTIPLE BUFF BAR |
elseif SC.BARS[k]['type'] == 6 then--MULTIPLE BUFF BAR |
SliceCommander:MultipleAbilityBar(k) |
end |
end |
end |
frame:SetToplevel(true) |
local titlebg = frame:CreateTexture(nil, "BACKGROUND") |
local titlebg = frame:CreateTexture(nil, "BACKGROUND", nil, 1) |
titlebg:SetTexture(251966) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Title-Background |
titlebg:SetPoint("TOPLEFT", 9, -6) |
titlebg:SetPoint("BOTTOMRIGHT", frame, "TOPRIGHT", -28, -24) |
local dialogbg = frame:CreateTexture(nil, "BACKGROUND") |
local dialogbg = frame:CreateTexture(nil, "BACKGROUND", nil, 1) |
dialogbg:SetTexture(137056) -- Interface\\Tooltips\\UI-Tooltip-Background |
dialogbg:SetPoint("TOPLEFT", 8, -24) |
dialogbg:SetPoint("BOTTOMRIGHT", -6, 8) |
dialogbg:SetVertexColor(0, 0, 0, .75) |
local topleft = frame:CreateTexture(nil, "BORDER") |
local topleft = frame:CreateTexture(nil, "BORDER", nil, 1) |
topleft:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border |
topleft:SetWidth(64) |
topleft:SetHeight(64) |
topleft:SetPoint("TOPLEFT") |
topleft:SetTexCoord(0.501953125, 0.625, 0, 1) |
local topright = frame:CreateTexture(nil, "BORDER") |
local topright = frame:CreateTexture(nil, "BORDER", nil, 1) |
topright:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border |
topright:SetWidth(64) |
topright:SetHeight(64) |
topright:SetPoint("TOPRIGHT") |
topright:SetTexCoord(0.625, 0.75, 0, 1) |
local top = frame:CreateTexture(nil, "BORDER") |
local top = frame:CreateTexture(nil, "BORDER", nil, 1) |
top:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border |
top:SetHeight(64) |
top:SetPoint("TOPLEFT", topleft, "TOPRIGHT") |
top:SetPoint("TOPRIGHT", topright, "TOPLEFT") |
top:SetTexCoord(0.25, 0.369140625, 0, 1) |
local bottomleft = frame:CreateTexture(nil, "BORDER") |
local bottomleft = frame:CreateTexture(nil, "BORDER", nil, 1) |
bottomleft:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border |
bottomleft:SetWidth(64) |
bottomleft:SetHeight(64) |
bottomleft:SetPoint("BOTTOMLEFT") |
bottomleft:SetTexCoord(0.751953125, 0.875, 0, 1) |
local bottomright = frame:CreateTexture(nil, "BORDER") |
local bottomright = frame:CreateTexture(nil, "BORDER", nil, 1) |
bottomright:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border |
bottomright:SetWidth(64) |
bottomright:SetHeight(64) |
bottomright:SetPoint("BOTTOMRIGHT") |
bottomright:SetTexCoord(0.875, 1, 0, 1) |
local bottom = frame:CreateTexture(nil, "BORDER") |
local bottom = frame:CreateTexture(nil, "BORDER", nil, 1) |
bottom:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border |
bottom:SetHeight(64) |
bottom:SetPoint("BOTTOMLEFT", bottomleft, "BOTTOMRIGHT") |
bottom:SetPoint("BOTTOMRIGHT", bottomright, "BOTTOMLEFT") |
bottom:SetTexCoord(0.376953125, 0.498046875, 0, 1) |
local left = frame:CreateTexture(nil, "BORDER") |
local left = frame:CreateTexture(nil, "BORDER", nil, 1) |
left:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border |
left:SetWidth(64) |
left:SetPoint("TOPLEFT", topleft, "BOTTOMLEFT") |
left:SetPoint("BOTTOMLEFT", bottomleft, "TOPLEFT") |
left:SetTexCoord(0.001953125, 0.125, 0, 1) |
local right = frame:CreateTexture(nil, "BORDER") |
local right = frame:CreateTexture(nil, "BORDER", nil, 1) |
right:SetTexture(251963) -- Interface\\PaperDollInfoFrame\\UI-GearManager-Border |
right:SetWidth(64) |
right:SetPoint("TOPRIGHT", topright, "BOTTOMRIGHT") |
sizer_se:SetScript("OnMouseUp", sizerOnMouseUp) |
self.sizer_se = sizer_se |
local line1 = sizer_se:CreateTexture(nil, "BACKGROUND") |
local line1 = sizer_se:CreateTexture(nil, "BACKGROUND", nil, 1) |
self.line1 = line1 |
line1:SetWidth(14) |
line1:SetHeight(14) |
local x = 0.1 * 14/17 |
line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) |
local line2 = sizer_se:CreateTexture(nil, "BACKGROUND") |
local line2 = sizer_se:CreateTexture(nil, "BACKGROUND", nil, 1) |
self.line2 = line2 |
line2:SetWidth(8) |
line2:SetHeight(8) |
-- set the script as the last step, so it doesn't fire yet |
scrollbar:SetScript("OnValueChanged", ScrollBar_OnScrollValueChanged) |
local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND") |
local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND", nil, 1) |
scrollbg:SetAllPoints(scrollbar) |
scrollbg:SetColorTexture(0, 0, 0, 0.4) |
text:SetPoint("BOTTOMRIGHT",frame,"BOTTOMRIGHT",-8,0) |
self.text = text |
local highlight = frame:CreateTexture(nil, "OVERLAY") |
local highlight = frame:CreateTexture(nil, "OVERLAY", nil, 1) |
highlight:SetTexture(136810) -- Interface\\QuestFrame\\UI-QuestTitleHighlight |
highlight:SetBlendMode("ADD") |
highlight:SetHeight(14) |
highlight:Hide() |
self.highlight = highlight |
local check = frame:CreateTexture(nil, "OVERLAY") |
local check = frame:CreateTexture(nil, "OVERLAY", nil, 1) |
check:SetWidth(16) |
check:SetHeight(16) |
check:SetPoint("LEFT",frame,"LEFT",3,-1) |
check:Hide() |
self.check = check |
local sub = frame:CreateTexture(nil, "OVERLAY") |
local sub = frame:CreateTexture(nil, "OVERLAY", nil, 1) |
sub:SetWidth(16) |
sub:SetHeight(16) |
sub:SetPoint("RIGHT",frame,"RIGHT",-3,-1) |
self.SetDisabled = SetDisabled |
local line = self.frame:CreateTexture(nil, "OVERLAY") |
local line = self.frame:CreateTexture(nil, "OVERLAY", nil, 1) |
line:SetHeight(1) |
line:SetColorTexture(.5, .5, .5) |
line:SetPoint("LEFT", self.frame, "LEFT", 10, 0) |
local button = CreateFrame("Button", ("AceGUI30TreeButton%d"):format(num), self.treeframe, "OptionsListButtonTemplate") |
button.obj = self |
local icon = button:CreateTexture(nil, "OVERLAY") |
local icon = button:CreateTexture(nil, "OVERLAY", nil, 1) |
icon:SetWidth(14) |
icon:SetHeight(14) |
button.icon = icon |
scrollbar:SetWidth(16) |
scrollbar:SetScript("OnValueChanged", OnScrollValueChanged) |
local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND") |
local scrollbg = scrollbar:CreateTexture(nil, "BACKGROUND", nil, 1) |
scrollbg:SetAllPoints(scrollbar) |
scrollbg:SetColorTexture(0,0,0,0.4) |
frame:SetScript("OnLeave", Control_OnLeave) |
frame:SetScript("OnClick", ColorSwatch_OnClick) |
local colorSwatch = frame:CreateTexture(nil, "OVERLAY") |
local colorSwatch = frame:CreateTexture(nil, "OVERLAY", nil, 1) |
colorSwatch:SetWidth(19) |
colorSwatch:SetHeight(19) |
colorSwatch:SetTexture(130939) -- Interface\\ChatFrame\\ChatFrameColorSwatch |
colorSwatch:SetPoint("LEFT") |
local texture = frame:CreateTexture(nil, "BACKGROUND") |
local texture = frame:CreateTexture(nil, "BACKGROUND", nil, 1) |
colorSwatch.background = texture |
texture:SetWidth(16) |
texture:SetHeight(16) |
texture:SetPoint("CENTER", colorSwatch) |
texture:Show() |
local checkers = frame:CreateTexture(nil, "BACKGROUND") |
local checkers = frame:CreateTexture(nil, "BACKGROUND", nil, 1) |
colorSwatch.checkers = checkers |
checkers:SetWidth(14) |
checkers:SetHeight(14) |
text:SetPoint("LEFT", colorSwatch, "RIGHT", 2, 0) |
text:SetPoint("RIGHT") |
--local highlight = frame:CreateTexture(nil, "HIGHLIGHT") |
--local highlight = frame:CreateTexture(nil, "HIGHLIGHT", nil, 1) |
--highlight:SetTexture(136810) -- Interface\\QuestFrame\\UI-QuestTitleHighlight |
--highlight:SetBlendMode("ADD") |
--highlight:SetAllPoints(frame) |
frame:SetScript("OnLeave", Control_OnLeave) |
frame:SetScript("OnMouseDown", Label_OnClick) |
local highlight = frame:CreateTexture(nil, "HIGHLIGHT") |
local highlight = frame:CreateTexture(nil, "HIGHLIGHT", nil, 1) |
highlight:SetTexture(nil) |
highlight:SetAllPoints() |
highlight:SetBlendMode("ADD") |
frame:Hide() |
local label = frame:CreateFontString(nil, "BACKGROUND", "GameFontHighlightSmall") |
local image = frame:CreateTexture(nil, "BACKGROUND") |
local image = frame:CreateTexture(nil, "BACKGROUND", nil, 1) |
-- create widget |
local widget = { |
tab.deselectedTextY = -3 |
tab.selectedTextY = -2 |
tab.LeftDisabled = tab:CreateTexture(tabname .. "LeftDisabled", "BORDER") |
tab.LeftDisabled = tab:CreateTexture(tabname .. "LeftDisabled", "BORDER", nil, 1) |
tab.LeftDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab") |
tab.LeftDisabled:SetSize(20, 24) |
tab.LeftDisabled:SetPoint("BOTTOMLEFT", 0, -3) |
tab.LeftDisabled:SetTexCoord(0, 0.15625, 0, 1.0) |
tab.MiddleDisabled = tab:CreateTexture(tabname .. "MiddleDisabled", "BORDER") |
tab.MiddleDisabled = tab:CreateTexture(tabname .. "MiddleDisabled", "BORDER", nil, 1) |
tab.MiddleDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab") |
tab.MiddleDisabled:SetSize(88, 24) |
tab.MiddleDisabled:SetPoint("LEFT", tab.LeftDisabled, "RIGHT") |
tab.MiddleDisabled:SetTexCoord(0.15625, 0.84375, 0, 1.0) |
tab.RightDisabled = tab:CreateTexture(tabname .. "RightDisabled", "BORDER") |
tab.RightDisabled = tab:CreateTexture(tabname .. "RightDisabled", "BORDER", nil, 1) |
tab.RightDisabled:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-ActiveTab") |
tab.RightDisabled:SetSize(20, 24) |
tab.RightDisabled:SetPoint("LEFT", tab.MiddleDisabled, "RIGHT") |
tab.RightDisabled:SetTexCoord(0.84375, 1.0, 0, 1.0) |
tab.Left = tab:CreateTexture(tabname .. "Left", "BORDER") |
tab.Left = tab:CreateTexture(tabname .. "Left", "BORDER", nil, 1) |
tab.Left:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab") |
tab.Left:SetSize(20, 24) |
tab.Left:SetPoint("TOPLEFT") |
tab.Left:SetTexCoord(0, 0.15625, 0, 1.0) |
tab.Middle = tab:CreateTexture(tabname .. "Middle", "BORDER") |
tab.Middle = tab:CreateTexture(tabname .. "Middle", "BORDER", nil, 1) |
tab.Middle:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab") |
tab.Middle:SetSize(88, 24) |
tab.Middle:SetPoint("LEFT", tab.Left, "RIGHT") |
tab.Middle:SetTexCoord(0.15625, 0.84375, 0, 1.0) |
tab.Right = tab:CreateTexture(tabname .. "Right", "BORDER") |
tab.Right = tab:CreateTexture(tabname .. "Right", "BORDER", nil, 1) |
tab.Right:SetTexture("Interface\\OptionsFrame\\UI-OptionsFrame-InActiveTab") |
tab.Right:SetSize(20, 24) |
tab.Right:SetPoint("LEFT", tab.Middle, "RIGHT") |
frame:SetScript("OnMouseDown", CheckBox_OnMouseDown) |
frame:SetScript("OnMouseUp", CheckBox_OnMouseUp) |
local checkbg = frame:CreateTexture(nil, "ARTWORK") |
local checkbg = frame:CreateTexture(nil, "ARTWORK", nil, 1) |
checkbg:SetWidth(24) |
checkbg:SetHeight(24) |
checkbg:SetPoint("TOPLEFT") |
checkbg:SetTexture(130755) -- Interface\\Buttons\\UI-CheckBox-Up |
local check = frame:CreateTexture(nil, "OVERLAY") |
local check = frame:CreateTexture(nil, "OVERLAY", nil, 1) |
check:SetAllPoints(checkbg) |
check:SetTexture(130751) -- Interface\\Buttons\\UI-CheckBox-Check |
text:SetPoint("LEFT", checkbg, "RIGHT") |
text:SetPoint("RIGHT") |
local highlight = frame:CreateTexture(nil, "HIGHLIGHT") |
local highlight = frame:CreateTexture(nil, "HIGHLIGHT", nil, 1) |
highlight:SetTexture(130753) -- Interface\\Buttons\\UI-CheckBox-Highlight |
highlight:SetBlendMode("ADD") |
highlight:SetAllPoints(checkbg) |
local image = frame:CreateTexture(nil, "OVERLAY") |
local image = frame:CreateTexture(nil, "OVERLAY", nil, 1) |
image:SetHeight(16) |
image:SetWidth(16) |
image:SetPoint("LEFT", checkbg, "RIGHT", 1, 0) |
label:SetJustifyV("TOP") |
label:SetHeight(18) |
local image = frame:CreateTexture(nil, "BACKGROUND") |
local image = frame:CreateTexture(nil, "BACKGROUND", nil, 1) |
image:SetWidth(64) |
image:SetHeight(64) |
image:SetPoint("TOP", 0, -5) |
local highlight = frame:CreateTexture(nil, "HIGHLIGHT") |
local highlight = frame:CreateTexture(nil, "HIGHLIGHT", nil, 1) |
highlight:SetAllPoints(image) |
highlight:SetTexture(136580) -- Interface\\PaperDollInfoFrame\\UI-Character-Tab-Highlight |
highlight:SetTexCoord(0, 1, 0.23, 0.77) |
statustext:SetJustifyH("LEFT") |
statustext:SetText("") |
local titlebg = frame:CreateTexture(nil, "OVERLAY") |
local titlebg = frame:CreateTexture(nil, "OVERLAY", nil, 1) |
titlebg:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header |
titlebg:SetTexCoord(0.31, 0.67, 0, 0.63) |
titlebg:SetPoint("TOP", 0, 12) |
local titletext = title:CreateFontString(nil, "OVERLAY", "GameFontNormal") |
titletext:SetPoint("TOP", titlebg, "TOP", 0, -14) |
local titlebg_l = frame:CreateTexture(nil, "OVERLAY") |
local titlebg_l = frame:CreateTexture(nil, "OVERLAY", nil, 1) |
titlebg_l:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header |
titlebg_l:SetTexCoord(0.21, 0.31, 0, 0.63) |
titlebg_l:SetPoint("RIGHT", titlebg, "LEFT") |
titlebg_l:SetWidth(30) |
titlebg_l:SetHeight(40) |
local titlebg_r = frame:CreateTexture(nil, "OVERLAY") |
local titlebg_r = frame:CreateTexture(nil, "OVERLAY", nil, 1) |
titlebg_r:SetTexture(131080) -- Interface\\DialogFrame\\UI-DialogBox-Header |
titlebg_r:SetTexCoord(0.67, 0.77, 0, 0.63) |
titlebg_r:SetPoint("LEFT", titlebg, "RIGHT") |
sizer_se:SetScript("OnMouseDown",SizerSE_OnMouseDown) |
sizer_se:SetScript("OnMouseUp", MoverSizer_OnMouseUp) |
local line1 = sizer_se:CreateTexture(nil, "BACKGROUND") |
local line1 = sizer_se:CreateTexture(nil, "BACKGROUND", nil, 1) |
line1:SetWidth(14) |
line1:SetHeight(14) |
line1:SetPoint("BOTTOMRIGHT", -8, 8) |
local x = 0.1 * 14/17 |
line1:SetTexCoord(0.05 - x, 0.5, 0.05, 0.5 + x, 0.05, 0.5 - x, 0.5 + x, 0.5) |
local line2 = sizer_se:CreateTexture(nil, "BACKGROUND") |
local line2 = sizer_se:CreateTexture(nil, "BACKGROUND", nil, 1) |
line2:SetWidth(8) |
line2:SetHeight(8) |
line2:SetPoint("BOTTOMRIGHT", -8, 8) |
label:SetPoint("BOTTOM") |
label:SetJustifyH("CENTER") |
local left = frame:CreateTexture(nil, "BACKGROUND") |
local left = frame:CreateTexture(nil, "BACKGROUND", nil, 1) |
left:SetHeight(8) |
left:SetPoint("LEFT", 3, 0) |
left:SetPoint("RIGHT", label, "LEFT", -5, 0) |
left:SetTexture(137057) -- Interface\\Tooltips\\UI-Tooltip-Border |
left:SetTexCoord(0.81, 0.94, 0.5, 1) |
local right = frame:CreateTexture(nil, "BACKGROUND") |
local right = frame:CreateTexture(nil, "BACKGROUND", nil, 1) |
right:SetHeight(8) |
right:SetPoint("RIGHT", -3, 0) |
right:SetPoint("LEFT", label, "RIGHT", 5, 0) |
--@curseforge-project-slug: libsharedmedia-3-0@ |
--[[ |
Name: LibSharedMedia-3.0 |
Revision: $Revision: 128 $ |
Revision: $Revision: 114 $ |
Author: Elkano (elkano@gmx.de) |
Inspired By: SurfaceLib by Haste/Otravi (troeks@gmail.com) |
Website: http://www.wowace.com/projects/libsharedmedia-3-0/ |
<Ui xmlns="http://www.blizzard.com/wow/ui/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.blizzard.com/wow/ui/ |
..\FrameXML\UI.xsd"> |
<Script file="LibSharedMedia-3.0.lua" /> |
<Include file="LibSharedMedia-3.0\lib.xml"/> |
</Ui> |
## Interface: 100200 |
## Author: Tomate |
## Version: 10.01 |
## Version: 10.00 |
## Title: |TInterface\Icons\ClassIcon_Rogue:0|t |cffd38245Slice|r|cff45ad3bCommander|r |TInterface\Icons\ClassIcon_Rogue:0|t |
## Notes: Energy bar, Combo point bar and rogue timer bar. |
## SavedVariables: SC |