You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
937 lines
50 KiB
937 lines
50 KiB
--[[
|
|
Shadowed Unit Frames, Shadowed of Mal'Ganis (US) PvP
|
|
]]
|
|
|
|
ShadowUF = select(2, ...)
|
|
|
|
local L = ShadowUF.L
|
|
ShadowUF.dbRevision = 63
|
|
ShadowUF.playerUnit = "player"
|
|
ShadowUF.enabledUnits = {}
|
|
ShadowUF.modules = {}
|
|
ShadowUF.moduleOrder = {}
|
|
ShadowUF.unitList = {"player", "pet", "pettarget", "target", "targettarget", "targettargettarget", "focus", "focustarget", "party", "partypet", "partytarget", "partytargettarget", "raid", "raidpet", "boss", "bosstarget", "maintank", "maintanktarget", "mainassist", "mainassisttarget", "arena", "arenatarget", "arenapet", "battleground", "battlegroundtarget", "battlegroundpet", "arenatargettarget", "battlegroundtargettarget", "maintanktargettarget", "mainassisttargettarget", "bosstargettarget"}
|
|
ShadowUF.fakeUnits = {["targettarget"] = true, ["targettargettarget"] = true, ["pettarget"] = true, ["arenatarget"] = true, ["arenatargettarget"] = true, ["focustarget"] = true, ["focustargettarget"] = true, ["partytarget"] = true, ["raidtarget"] = true, ["bosstarget"] = true, ["maintanktarget"] = true, ["mainassisttarget"] = true, ["battlegroundtarget"] = true, ["partytargettarget"] = true, ["battlegroundtargettarget"] = true, ["maintanktargettarget"] = true, ["mainassisttargettarget"] = true, ["bosstargettarget"] = true}
|
|
L.units = {["raidpet"] = L["Raid pet"], ["PET"] = L["Pet"], ["VEHICLE"] = L["Vehicle"], ["arena"] = L["Arena"], ["arenapet"] = L["Arena Pet"], ["arenatarget"] = L["Arena Target"], ["arenatargettarget"] = L["Arena Target of Target"], ["boss"] = L["Boss"], ["bosstarget"] = L["Boss Target"], ["focus"] = L["Focus"], ["focustarget"] = L["Focus Target"], ["mainassist"] = L["Main Assist"], ["mainassisttarget"] = L["Main Assist Target"], ["maintank"] = L["Main Tank"], ["maintanktarget"] = L["Main Tank Target"], ["party"] = L["Party"], ["partypet"] = L["Party Pet"], ["partytarget"] = L["Party Target"], ["pet"] = L["Pet"], ["pettarget"] = L["Pet Target"], ["player"] = L["Player"],["raid"] = L["Raid"], ["target"] = L["Target"], ["targettarget"] = L["Target of Target"], ["targettargettarget"] = L["Target of Target of Target"], ["battleground"] = L["Battleground"], ["battlegroundpet"] = L["Battleground Pet"], ["battlegroundtarget"] = L["Battleground Target"], ["partytargettarget"] = L["Party Target of Target"], ["battlegroundtargettarget"] = L["Battleground Target of Target"], ["maintanktargettarget"] = L["Main Tank Target of Target"], ["mainassisttargettarget"] = L["Main Assist Target of Target"], ["bosstargettarget"] = L["Boss Target of Target"]}
|
|
L.shortUnits = {["battleground"] = L["BG"], ["battlegroundtarget"] = L["BG Target"], ["battlegroundpet"] = L["BG Pet"], ["battlegroundtargettarget"] = L["BG ToT"], ["arenatargettarget"] = L["Arena ToT"], ["partytargettarget"] = L["Party ToT"], ["bosstargettarget"] = L["Boss ToT"], ["maintanktargettarget"] = L["MT ToT"], ["mainassisttargettarget"] = L["MA ToT"]}
|
|
|
|
-- Cache the units so we don't have to concat every time it updates
|
|
ShadowUF.unitTarget = setmetatable({}, {__index = function(tbl, unit) rawset(tbl, unit, unit .. "target"); return unit .. "target" end})
|
|
ShadowUF.partyUnits, ShadowUF.raidUnits, ShadowUF.raidPetUnits, ShadowUF.bossUnits, ShadowUF.arenaUnits, ShadowUF.battlegroundUnits = {}, {}, {}, {}, {}, {}
|
|
ShadowUF.maintankUnits, ShadowUF.mainassistUnits, ShadowUF.raidpetUnits = ShadowUF.raidUnits, ShadowUF.raidUnits, ShadowUF.raidPetUnits
|
|
for i=1, MAX_PARTY_MEMBERS do ShadowUF.partyUnits[i] = "party" .. i end
|
|
for i=1, MAX_RAID_MEMBERS do ShadowUF.raidUnits[i] = "raid" .. i end
|
|
for i=1, MAX_RAID_MEMBERS do ShadowUF.raidPetUnits[i] = "raidpet" .. i end
|
|
for i=1, MAX_BOSS_FRAMES do ShadowUF.bossUnits[i] = "boss" .. i end
|
|
for i=1, 5 do ShadowUF.arenaUnits[i] = "arena" .. i end
|
|
for i=1, 4 do ShadowUF.battlegroundUnits[i] = "arena" .. i end
|
|
|
|
function ShadowUF:OnInitialize()
|
|
self.defaults = {
|
|
profile = {
|
|
locked = false,
|
|
advanced = false,
|
|
tooltipCombat = false,
|
|
omnicc = false,
|
|
blizzardcc = true,
|
|
tags = {},
|
|
units = {},
|
|
positions = {},
|
|
range = {},
|
|
filters = {zonewhite = {}, zoneblack = {}, zoneoverride = {}, whitelists = {}, blacklists = {}, overridelists = {}},
|
|
visibility = {arena = {}, pvp = {}, party = {}, raid = {}},
|
|
hidden = {cast = false, playerPower = true, buffs = false, party = true, raid = false, player = true, pet = true, target = true, focus = true, boss = true, arena = true, playerAltPower = false},
|
|
},
|
|
}
|
|
|
|
self:LoadUnitDefaults()
|
|
|
|
-- Initialize DB
|
|
self.db = LibStub:GetLibrary("AceDB-3.0"):New("ShadowedUFDB", self.defaults, true)
|
|
self.db.RegisterCallback(self, "OnProfileChanged", "ProfilesChanged")
|
|
self.db.RegisterCallback(self, "OnProfileCopied", "ProfilesChanged")
|
|
self.db.RegisterCallback(self, "OnProfileReset", "ProfileReset")
|
|
|
|
-- Setup tag cache
|
|
self.tagFunc = setmetatable({}, {
|
|
__index = function(tbl, index)
|
|
if( not ShadowUF.Tags.defaultTags[index] and not ShadowUF.db.profile.tags[index] ) then
|
|
tbl[index] = false
|
|
return false
|
|
end
|
|
|
|
local func, msg = loadstring("return " .. (ShadowUF.Tags.defaultTags[index] or ShadowUF.db.profile.tags[index].func or ""))
|
|
if( func ) then
|
|
func = func()
|
|
elseif( msg ) then
|
|
error(msg, 3)
|
|
end
|
|
|
|
tbl[index] = func
|
|
return tbl[index]
|
|
end})
|
|
|
|
if( not self.db.profile.loadedLayout ) then
|
|
self:LoadDefaultLayout()
|
|
else
|
|
self:CheckUpgrade()
|
|
self:CheckBuild()
|
|
self:ShowInfoPanel()
|
|
end
|
|
|
|
self.db.profile.revision = self.dbRevision
|
|
self:FireModuleEvent("OnInitialize")
|
|
self:HideBlizzardFrames()
|
|
self.Layout:LoadSML()
|
|
self:LoadUnits()
|
|
self.modules.movers:Update()
|
|
|
|
local LibDualSpec = LibStub("LibDualSpec-1.0", true)
|
|
if LibDualSpec then LibDualSpec:EnhanceDatabase(self.db, "ShadowedUnitFrames") end
|
|
end
|
|
|
|
function ShadowUF.UnitAuraBySpell(unit, spell, filter)
|
|
local index = 0
|
|
while true do
|
|
index = index + 1
|
|
local name, _, _, _, _, _, _, _, _, spellID = UnitAura(unit, index, filter)
|
|
if not name then break end
|
|
if (type(spell) == "string" and spell == name) or (type(spell) == "number" and spell == spellID) then
|
|
return UnitAura(unit, index, filter)
|
|
end
|
|
end
|
|
end
|
|
|
|
function ShadowUF:CheckBuild()
|
|
local build = select(4, GetBuildInfo())
|
|
if( self.db.profile.wowBuild == build ) then return end
|
|
|
|
-- Nothing to add here right now
|
|
self.db.profile.wowBuild = build
|
|
end
|
|
|
|
function ShadowUF:CheckUpgrade()
|
|
local revision = self.db.profile.revision or self.dbRevision
|
|
if (revision <= 62 ) then
|
|
-- evoker setup
|
|
self.db.profile.classColors.EVOKER = {r = 0.20, g = 0.58, b = 0.50}
|
|
self.db.profile.powerColors.ESSENCE = {r = 0.40, g = 0.80, b = 1.00}
|
|
self.db.profile.units.player.essence = {enabled = true, anchorTo = "$parent", order = 60, height = 0.40, anchorPoint = "BR", x = -8, y = 6, size = 12, spacing = -2, growth = "LEFT", isBar = true, showAlways = true}
|
|
end
|
|
if (revision <= 61 ) then
|
|
if self.db.profile.bars.texture == "Smooth" then
|
|
self.db.profile.bars.texture = "Smoother"
|
|
end
|
|
end
|
|
if (revision <= 60 ) then
|
|
for unit, config in pairs(self.db.profile.units) do
|
|
if( unit == "player" or unit == "party" or unit == "target" or unit == "raid" or unit == "focus" or unit == "mainassist" or unit == "maintank" ) then
|
|
config.indicators.sumPending = {enabled = true, anchorPoint = "C", size = 40, x = 0, y = 0, anchorTo = "$parent"}
|
|
end
|
|
end
|
|
end
|
|
if (revision <= 59 ) then
|
|
self.db.profile.font.shadowX = 1.0
|
|
self.db.profile.font.shadowY = -1.0
|
|
end
|
|
if( revision <= 58 ) then
|
|
for unit, config in pairs(self.db.profile.units) do
|
|
if config.text then
|
|
local i = 1
|
|
while i <= #config.text do
|
|
local text
|
|
if rawget(config.text, i) or i <= #(self.defaults.profile.units[unit].text) then
|
|
text = config.text[i]
|
|
end
|
|
|
|
if not text then
|
|
table.remove(config.text, i)
|
|
elseif text.anchorTo == "$demonicFuryBar" or text.anchorTo == "$eclipseBar" or text.anchorTo == "$burningEmbersBar" or text.anchorTo == "$monkBar" then
|
|
table.remove(config.text, i)
|
|
elseif i > 6 and text.default and text.anchorTo == "$emptyBar" then
|
|
table.remove(config.text, i)
|
|
else
|
|
if text.anchorTo == "$emptyBar" and text.name == L["Left text"] then
|
|
text.width = 0.50
|
|
end
|
|
|
|
i = i + 1
|
|
end
|
|
end
|
|
|
|
if not config.text[6] or config.text[6].anchorTo ~= "$emptyBar" then
|
|
table.insert(config.text, 6, {enabled = true, width = 0.60, name = L["Right text"], text = "", anchorTo = "$emptyBar", anchorPoint = "CRI", size = 0, x = -3, y = 0, default = true})
|
|
else
|
|
config.text[6].width = 0.60
|
|
config.text[6].name = L["Right text"]
|
|
config.text[6].anchorPoint = "CRI"
|
|
config.text[6].size = 0
|
|
config.text[6].x = -3
|
|
config.text[6].y = 0
|
|
config.text[6].default = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if( revision <= 56 ) then
|
|
-- new classes
|
|
self.db.profile.classColors.DEMONHUNTER = {r = 0.64, g = 0.19, b = 0.79}
|
|
|
|
-- new power types
|
|
self.db.profile.powerColors.INSANITY = {r = 0.40, g = 0, b = 0.80}
|
|
self.db.profile.powerColors.MAELSTROM = {r = 0.00, g = 0.50, b = 1.00}
|
|
self.db.profile.powerColors.FURY = {r = 0.788, g = 0.259, b = 0.992}
|
|
self.db.profile.powerColors.PAIN = {r = 1, g = 0, b = 0}
|
|
self.db.profile.powerColors.LUNAR_POWER = {r = 0.30, g = 0.52, b = 0.90}
|
|
self.db.profile.powerColors.ARCANECHARGES = {r = 0.1, g = 0.1, b = 0.98}
|
|
|
|
-- new bars
|
|
local config = self.db.profile.units
|
|
config.player.priestBar = {enabled = true, background = true, height = 0.40, order = 70}
|
|
config.player.shamanBar = {enabled = true, background = true, height = 0.40, order = 70}
|
|
config.player.arcaneCharges = {enabled = true, anchorTo = "$parent", order = 60, height = 0.40, anchorPoint = "BR", x = -8, y = 6, size = 12, spacing = -2, growth = "LEFT", isBar = true, showAlways = true}
|
|
|
|
-- clean out old bars
|
|
config.player.demonicFuryBar = nil
|
|
config.player.burningEmbersBar = nil
|
|
config.player.shadowOrbs = nil
|
|
config.player.eclipseBar = nil
|
|
config.player.monkBar = nil
|
|
end
|
|
|
|
if( revision <= 49 ) then
|
|
ShadowUF:LoadDefaultLayout(true)
|
|
end
|
|
|
|
if( revision <= 49 ) then
|
|
if( ShadowUF.db.profile.font.extra == "MONOCHROME" ) then
|
|
ShadowUF.db.profile.font.extra = ""
|
|
end
|
|
end
|
|
|
|
if( revision <= 47 ) then
|
|
local config = self.db.profile.units
|
|
config.player.comboPoints = config.target.comboPoints
|
|
end
|
|
|
|
if( revision <= 46 ) then
|
|
local config = self.db.profile.units.arena
|
|
config.indicators.arenaSpec = {enabled = true, anchorPoint = "LC", size = 28, x = 0, y = 0, anchorTo = "$parent"}
|
|
config.indicators.lfdRole = {enabled = true, anchorPoint = "BR", size = 14, x = 3, y = 14, anchorTo = "$parent"}
|
|
end
|
|
|
|
if( revision <= 45 ) then
|
|
for unit, config in pairs(self.db.profile.units) do
|
|
if( config.auras ) then
|
|
for _, key in pairs({"buffs", "debuffs"}) do
|
|
local aura = config.auras[key]
|
|
aura.show = aura.show or {}
|
|
aura.show.player = true
|
|
aura.show.boss = true
|
|
aura.show.raid = true
|
|
aura.show.misc = true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
local function zoneEnabled(zone, zoneList)
|
|
if( type(zoneList) == "string" ) then
|
|
return zone == zoneList
|
|
end
|
|
|
|
for id, row in pairs(zoneList) do
|
|
if( zone == row ) then return true end
|
|
end
|
|
|
|
return false
|
|
end
|
|
|
|
function ShadowUF:LoadUnits()
|
|
-- CanHearthAndResurrectFromArea() returns true for world pvp areas, according to BattlefieldFrame.lua
|
|
local instanceType = CanHearthAndResurrectFromArea() and "pvp" or select(2, IsInInstance())
|
|
if( instanceType == "scenario" ) then instanceType = "party" end
|
|
|
|
if( not instanceType ) then instanceType = "none" end
|
|
|
|
for _, type in pairs(self.unitList) do
|
|
local enabled = self.db.profile.units[type].enabled
|
|
if( ShadowUF.Units.zoneUnits[type] ) then
|
|
enabled = enabled and zoneEnabled(instanceType, ShadowUF.Units.zoneUnits[type])
|
|
elseif( instanceType ~= "none" ) then
|
|
if( self.db.profile.visibility[instanceType][type] == false ) then
|
|
enabled = false
|
|
elseif( self.db.profile.visibility[instanceType][type] == true ) then
|
|
enabled = true
|
|
end
|
|
end
|
|
|
|
self.enabledUnits[type] = enabled
|
|
|
|
if( enabled ) then
|
|
self.Units:InitializeFrame(type)
|
|
else
|
|
self.Units:UninitializeFrame(type)
|
|
end
|
|
end
|
|
end
|
|
|
|
function ShadowUF:LoadUnitDefaults()
|
|
for _, unit in pairs(self.unitList) do
|
|
self.defaults.profile.positions[unit] = {point = "", relativePoint = "", anchorPoint = "", anchorTo = "UIParent", x = 0, y = 0}
|
|
|
|
-- The reason why the defaults are so sparse, is because the layout needs to specify most of this. The reason I set tables here is basically
|
|
-- as an indication that hey, the unit wants this, if it doesn't that it won't want it.
|
|
self.defaults.profile.units[unit] = {
|
|
enabled = false, height = 0, width = 0, scale = 1.0,
|
|
healthBar = {enabled = true},
|
|
powerBar = {enabled = true},
|
|
emptyBar = {enabled = false},
|
|
portrait = {enabled = false},
|
|
castBar = {enabled = false, name = {}, time = {}},
|
|
text = {
|
|
{enabled = true, name = L["Left text"], text = "[name]", anchorPoint = "CLI", anchorTo = "$healthBar", width = 0.50, size = 0, x = 3, y = 0, default = true},
|
|
{enabled = true, name = L["Right text"], text = "[curmaxhp]", anchorPoint = "CRI", anchorTo = "$healthBar", width = 0.60, size = 0, x = -3, y = 0, default = true},
|
|
{enabled = true, name = L["Left text"], text = "[level] [race]", anchorPoint = "CLI", anchorTo = "$powerBar", width = 0.50, size = 0, x = 3, y = 0, default = true},
|
|
{enabled = true, name = L["Right text"], text = "[curmaxpp]", anchorPoint = "CRI", anchorTo = "$powerBar", width = 0.60, size = 0, x = -3, y = 0, default = true},
|
|
{enabled = true, name = L["Left text"], text = "", anchorTo = "$emptyBar", anchorPoint = "CLI", width = 0.50, size = 0, x = 3, y = 0, default = true},
|
|
{enabled = true, name = L["Right text"], text = "", anchorTo = "$emptyBar", anchorPoint = "CRI", width = 0.60, size = 0, x = -3, y = 0, default = true},
|
|
['*'] = {enabled = true, text = "", anchorTo = "", anchorPoint = "C", size = 0, x = 0, y = 0},
|
|
},
|
|
indicators = {raidTarget = {enabled = true, size = 0}},
|
|
highlight = {},
|
|
auraIndicators = {enabled = false},
|
|
auras = {
|
|
buffs = {enabled = false, perRow = 10, maxRows = 4, selfScale = 1.30, prioritize = true, show = {player = true, boss = true, raid = true, misc = true}, enlarge = {}, timers = {ALL = true}},
|
|
debuffs = {enabled = false, perRow = 10, maxRows = 4, selfScale = 1.30, show = {player = true, boss = true, raid = true, misc = true}, enlarge = {SELF = true}, timers = {ALL = true}},
|
|
},
|
|
}
|
|
|
|
if( not self.fakeUnits[unit] ) then
|
|
self.defaults.profile.units[unit].combatText = {enabled = true, anchorTo = "$parent", anchorPoint = "C", x = 0, y = 0}
|
|
|
|
if( unit ~= "battleground" and unit ~= "battlegroundpet" and unit ~= "arena" and unit ~= "arenapet" and unit ~= "boss" ) then
|
|
self.defaults.profile.units[unit].incHeal = {enabled = true, cap = 1.20}
|
|
self.defaults.profile.units[unit].incAbsorb = {enabled = true, cap = 1.30}
|
|
self.defaults.profile.units[unit].healAbsorb = {enabled = true, cap = 1.30}
|
|
end
|
|
end
|
|
|
|
if( unit ~= "player" ) then
|
|
self.defaults.profile.units[unit].range = {enabled = false, oorAlpha = 0.80, inAlpha = 1.0}
|
|
|
|
if( not string.match(unit, "pet") ) then
|
|
self.defaults.profile.units[unit].indicators.class = {enabled = false, size = 19}
|
|
end
|
|
end
|
|
|
|
if( unit == "player" or unit == "party" or unit == "target" or unit == "raid" or unit == "focus" or unit == "mainassist" or unit == "maintank" ) then
|
|
self.defaults.profile.units[unit].indicators.leader = {enabled = true, size = 0}
|
|
self.defaults.profile.units[unit].indicators.masterLoot = {enabled = true, size = 0}
|
|
self.defaults.profile.units[unit].indicators.pvp = {enabled = true, size = 0}
|
|
self.defaults.profile.units[unit].indicators.role = {enabled = true, size = 0}
|
|
self.defaults.profile.units[unit].indicators.status = {enabled = false, size = 19}
|
|
self.defaults.profile.units[unit].indicators.resurrect = {enabled = true}
|
|
self.defaults.profile.units[unit].indicators.sumPending = {enabled = true}
|
|
|
|
if( unit ~= "focus" and unit ~= "target" ) then
|
|
self.defaults.profile.units[unit].indicators.ready = {enabled = true, size = 0}
|
|
end
|
|
end
|
|
|
|
if( unit == "battleground" ) then
|
|
self.defaults.profile.units[unit].indicators.pvp = {enabled = true, size = 0}
|
|
end
|
|
|
|
self.defaults.profile.units[unit].altPowerBar = {enabled = not ShadowUF.fakeUnits[unit]}
|
|
end
|
|
|
|
-- PLAYER
|
|
self.defaults.profile.units.player.enabled = true
|
|
self.defaults.profile.units.player.healthBar.predicted = true
|
|
self.defaults.profile.units.player.powerBar.predicted = true
|
|
self.defaults.profile.units.player.indicators.status.enabled = true
|
|
self.defaults.profile.units.player.runeBar = {enabled = false}
|
|
self.defaults.profile.units.player.totemBar = {enabled = false}
|
|
self.defaults.profile.units.player.druidBar = {enabled = false}
|
|
self.defaults.profile.units.player.priestBar = {enabled = true}
|
|
self.defaults.profile.units.player.shamanBar = {enabled = true}
|
|
self.defaults.profile.units.player.xpBar = {enabled = false}
|
|
self.defaults.profile.units.player.fader = {enabled = false}
|
|
self.defaults.profile.units.player.soulShards = {enabled = true, isBar = true}
|
|
self.defaults.profile.units.player.arcaneCharges = {enabled = true, isBar = true}
|
|
self.defaults.profile.units.player.staggerBar = {enabled = true}
|
|
self.defaults.profile.units.player.comboPoints = {enabled = true, isBar = true}
|
|
self.defaults.profile.units.player.holyPower = {enabled = true, isBar = true}
|
|
self.defaults.profile.units.player.chi = {enabled = true, isBar = true}
|
|
self.defaults.profile.units.player.indicators.lfdRole = {enabled = true, size = 0, x = 0, y = 0}
|
|
self.defaults.profile.units.player.auraPoints = {enabled = false, isBar = true}
|
|
self.defaults.profile.units.player.essence = {enabled = true, isBar = true}
|
|
table.insert(self.defaults.profile.units.player.text, {enabled = true, text = "", anchorTo = "", anchorPoint = "C", size = 0, x = 0, y = 0, default = true})
|
|
table.insert(self.defaults.profile.units.player.text, {enabled = true, text = "", anchorTo = "", anchorPoint = "C", size = 0, x = 0, y = 0, default = true})
|
|
table.insert(self.defaults.profile.units.player.text, {enabled = true, text = "", anchorTo = "", anchorPoint = "C", size = 0, x = 0, y = 0, default = true})
|
|
|
|
-- PET
|
|
self.defaults.profile.units.pet.enabled = true
|
|
self.defaults.profile.units.pet.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
self.defaults.profile.units.pet.xpBar = {enabled = false}
|
|
-- FOCUS
|
|
self.defaults.profile.units.focus.enabled = true
|
|
self.defaults.profile.units.focus.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
self.defaults.profile.units.focus.indicators.lfdRole = {enabled = false, size = 0, x = 0, y = 0}
|
|
self.defaults.profile.units.focus.indicators.questBoss = {enabled = true, size = 0, x = 0, y = 0}
|
|
-- FOCUSTARGET
|
|
self.defaults.profile.units.focustarget.enabled = true
|
|
self.defaults.profile.units.focustarget.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
-- TARGET
|
|
self.defaults.profile.units.target.enabled = true
|
|
self.defaults.profile.units.target.indicators.lfdRole = {enabled = false, size = 0, x = 0, y = 0}
|
|
self.defaults.profile.units.target.indicators.questBoss = {enabled = true, size = 0, x = 0, y = 0}
|
|
self.defaults.profile.units.target.comboPoints = {enabled = false, isBar = true}
|
|
-- TARGETTARGET/TARGETTARGETTARGET
|
|
self.defaults.profile.units.targettarget.enabled = true
|
|
self.defaults.profile.units.targettargettarget.enabled = true
|
|
-- PARTY
|
|
self.defaults.profile.units.party.enabled = true
|
|
self.defaults.profile.units.party.auras.debuffs.maxRows = 1
|
|
self.defaults.profile.units.party.auras.buffs.maxRows = 1
|
|
self.defaults.profile.units.party.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
self.defaults.profile.units.party.combatText.enabled = false
|
|
self.defaults.profile.units.party.indicators.lfdRole = {enabled = true, size = 0, x = 0, y = 0}
|
|
self.defaults.profile.units.party.indicators.phase = {enabled = true, size = 0, x = 0, y = 0}
|
|
-- ARENA
|
|
self.defaults.profile.units.arena.enabled = false
|
|
self.defaults.profile.units.arena.attribPoint = "TOP"
|
|
self.defaults.profile.units.arena.attribAnchorPoint = "LEFT"
|
|
self.defaults.profile.units.arena.auras.debuffs.maxRows = 1
|
|
self.defaults.profile.units.arena.auras.buffs.maxRows = 1
|
|
self.defaults.profile.units.arena.offset = 0
|
|
self.defaults.profile.units.arena.indicators.arenaSpec = {enabled = true, size = 0, x = 0, y = 0}
|
|
self.defaults.profile.units.arena.indicators.lfdRole = {enabled = true, size = 0, x = 0, y = 0}
|
|
-- BATTLEGROUND
|
|
self.defaults.profile.units.battleground.enabled = false
|
|
self.defaults.profile.units.battleground.attribPoint = "TOP"
|
|
self.defaults.profile.units.battleground.attribAnchorPoint = "LEFT"
|
|
self.defaults.profile.units.battleground.auras.debuffs.maxRows = 1
|
|
self.defaults.profile.units.battleground.auras.buffs.maxRows = 1
|
|
self.defaults.profile.units.battleground.offset = 0
|
|
-- BOSS
|
|
self.defaults.profile.units.boss.enabled = false
|
|
self.defaults.profile.units.boss.attribPoint = "TOP"
|
|
self.defaults.profile.units.boss.attribAnchorPoint = "LEFT"
|
|
self.defaults.profile.units.boss.auras.debuffs.maxRows = 1
|
|
self.defaults.profile.units.boss.auras.buffs.maxRows = 1
|
|
self.defaults.profile.units.boss.offset = 0
|
|
self.defaults.profile.units.boss.altPowerBar.enabled = true
|
|
-- RAID
|
|
self.defaults.profile.units.raid.groupBy = "GROUP"
|
|
self.defaults.profile.units.raid.sortOrder = "ASC"
|
|
self.defaults.profile.units.raid.sortMethod = "INDEX"
|
|
self.defaults.profile.units.raid.attribPoint = "TOP"
|
|
self.defaults.profile.units.raid.attribAnchorPoint = "RIGHT"
|
|
self.defaults.profile.units.raid.offset = 0
|
|
self.defaults.profile.units.raid.filters = {[1] = true, [2] = true, [3] = true, [4] = true, [5] = true, [6] = true, [7] = true, [8] = true}
|
|
self.defaults.profile.units.raid.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
self.defaults.profile.units.raid.combatText.enabled = false
|
|
self.defaults.profile.units.raid.indicators.lfdRole = {enabled = true, size = 0, x = 0, y = 0}
|
|
-- RAID PET
|
|
self.defaults.profile.units.raidpet.groupBy = "GROUP"
|
|
self.defaults.profile.units.raidpet.sortOrder = "ASC"
|
|
self.defaults.profile.units.raidpet.sortMethod = "INDEX"
|
|
self.defaults.profile.units.raidpet.attribPoint = "TOP"
|
|
self.defaults.profile.units.raidpet.attribAnchorPoint = "RIGHT"
|
|
self.defaults.profile.units.raidpet.offset = 0
|
|
self.defaults.profile.units.raidpet.filters = {[1] = true, [2] = true, [3] = true, [4] = true, [5] = true, [6] = true, [7] = true, [8] = true}
|
|
self.defaults.profile.units.raidpet.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
self.defaults.profile.units.raidpet.combatText.enabled = false
|
|
-- MAINTANK
|
|
self.defaults.profile.units.maintank.roleFilter = "TANK"
|
|
self.defaults.profile.units.maintank.groupFilter = "MAINTANK"
|
|
self.defaults.profile.units.maintank.groupBy = "GROUP"
|
|
self.defaults.profile.units.maintank.sortOrder = "ASC"
|
|
self.defaults.profile.units.maintank.sortMethod = "INDEX"
|
|
self.defaults.profile.units.maintank.attribPoint = "TOP"
|
|
self.defaults.profile.units.maintank.attribAnchorPoint = "RIGHT"
|
|
self.defaults.profile.units.maintank.offset = 0
|
|
self.defaults.profile.units.maintank.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
-- MAINASSIST
|
|
self.defaults.profile.units.mainassist.groupFilter = "MAINASSIST"
|
|
self.defaults.profile.units.mainassist.groupBy = "GROUP"
|
|
self.defaults.profile.units.mainassist.sortOrder = "ASC"
|
|
self.defaults.profile.units.mainassist.sortMethod = "INDEX"
|
|
self.defaults.profile.units.mainassist.attribPoint = "TOP"
|
|
self.defaults.profile.units.mainassist.attribAnchorPoint = "RIGHT"
|
|
self.defaults.profile.units.mainassist.offset = 0
|
|
self.defaults.profile.units.mainassist.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
-- PARTYPET
|
|
self.defaults.profile.positions.partypet.anchorTo = "$parent"
|
|
self.defaults.profile.positions.partypet.anchorPoint = "RB"
|
|
self.defaults.profile.units.partypet.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
-- PARTYTARGET
|
|
self.defaults.profile.positions.partytarget.anchorTo = "$parent"
|
|
self.defaults.profile.positions.partytarget.anchorPoint = "RT"
|
|
self.defaults.profile.units.partytarget.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
-- PARTYTARGETTARGET
|
|
self.defaults.profile.positions.partytarget.anchorTo = "$parent"
|
|
self.defaults.profile.positions.partytarget.anchorPoint = "RT"
|
|
self.defaults.profile.units.partytarget.fader = {enabled = false, combatAlpha = 1.0, inactiveAlpha = 0.60}
|
|
|
|
-- Aura indicators
|
|
self.defaults.profile.auraIndicators = {
|
|
disabled = {},
|
|
missing = {},
|
|
linked = {},
|
|
indicators = {
|
|
["tl"] = {name = L["Top Left"], anchorPoint = "TLI", anchorTo = "$parent", height = 8, width = 8, alpha = 1.0, x = 4, y = -4, friendly = true, hostile = true},
|
|
["tr"] = {name = L["Top Right"], anchorPoint = "TRI", anchorTo = "$parent", height = 8, width = 8, alpha = 1.0, x = -3, y = -3, friendly = true, hostile = true},
|
|
["bl"] = {name = L["Bottom Left"], anchorPoint = "BLI", anchorTo = "$parent", height = 8, width = 8, alpha = 1.0, x = 4, y = 4, friendly = true, hostile = true},
|
|
["br"] = {name = L["Bottom Right"], anchorPoint = "BRI", anchorTo = "$parent", height = 8, width = 8, alpha = 1.0, x = -4, y = -4, friendly = true, hostile = true},
|
|
["c"] = {name = L["Center"], anchorPoint = "C", anchorTo = "$parent", height = 20, width = 20, alpha = 1.0, x = 0, y = 0, friendly = true, hostile = true},
|
|
},
|
|
filters = {
|
|
["tl"] = {boss = {priority = 100}, curable = {priority = 100}},
|
|
["tr"] = {boss = {priority = 100}, curable = {priority = 100}},
|
|
["bl"] = {boss = {priority = 100}, curable = {priority = 100}},
|
|
["br"] = {boss = {priority = 100}, curable = {priority = 100}},
|
|
["c"] = {boss = {priority = 100}, curable = {priority = 100}},
|
|
},
|
|
auras = {
|
|
["20707"] = [[{indicator = '', group = "Warlock", priority = 10, r = 0.42, g = 0.21, b = 0.65}]],
|
|
["116849"] = [[{r=0.19607843137255, group="Monk", indicator="c", g=1, player=false, duration=true, b=0.3843137254902, alpha=1, priority=0, icon=true, iconTexture="Interface\\Icons\\ability_monk_chicocoon"}]],
|
|
["155777"] = [[{r=0.57647058823529, group="Druid", indicator="tr", g=0.28235294117647, player=true, duration=true, b=0.6156862745098, priority=100, alpha=1, iconTexture="Interface\\Icons\\Spell_Nature_Rejuvenation"}]],
|
|
["121176"] = [[{alpha=1, b=0, priority=0, r=0.062745098039216, group="PvP Flags", indicator="bl", g=1, iconTexture="Interface\\Icons\\INV_BannerPVP_03"}]],
|
|
["19705"] = [[{r=0.80392156862745, group="Food", indicator="", g=0.76470588235294, missing=true, duration=true, priority=0, alpha=1, b=0.24313725490196}]],
|
|
["53563"] = [[{r=0.64313725490196, group="Paladin", indicator="tr", g=0.24705882352941, player=true, alpha=1, b=0.73333333333333, priority=100, duration=false, iconTexture="Interface\\Icons\\Ability_Paladin_BeaconofLight"}]],
|
|
["774"] = [[{r=0.57647058823529, group="Druid", indicator="tr", g=0.28235294117647, player=true, duration=true, b=0.6156862745098, priority=100, alpha=1, iconTexture="Interface\\Icons\\Spell_Nature_Rejuvenation"}]],
|
|
["33206"] = [[{r=0, group="Priest", indicator="c", g=0, b=0, duration=true, priority=0, icon=true, iconTexture="Interface\\Icons\\Spell_Holy_PainSupression"}]],
|
|
["6788"] = [[{b=0.29019607843137, group="Priest", indicator="tl", alpha=1, player=false, g=0.56862745098039, duration=true, r=0.83921568627451, priority=20, icon=false, iconTexture="Interface\\Icons\\Spell_Holy_AshesToAshes"}]],
|
|
["33763"] = [[{r=0.23137254901961, group="Druid", indicator="tl", g=1, player=true, duration=true, alpha=1, priority=0, b=0.2, iconTexture="Interface\\Icons\\INV_Misc_Herb_Felblossom"}]],
|
|
["139"] = [[{r=0.23921568627451, group="Priest", indicator="tr", g=1, player=true, alpha=1, duration=true, b=0.39607843137255, priority=10, icon=false, iconTexture="Interface\\Icons\\Spell_Holy_Renew"}]],
|
|
["41635"] = [[{r=1, group="Priest", indicator="br", g=0.90196078431373, missing=false, player=true, duration=false, alpha=1, b=0, priority=50, icon=false, iconTexture="Interface\\Icons\\Spell_Holy_PrayerOfMendingtga"}]],
|
|
["47788"] = [[{r=0, group="Priest", indicator="c", g=0, b=0, duration=true, priority=0, icon=true, iconTexture="Interface\\Icons\\Spell_Holy_GuardianSpirit"}]],
|
|
["61295"] = [[{r=0.17647058823529, group="Shaman", indicator="tl", g=0.4, player=true, alpha=1, duration=true, b=1, priority=0, icon=false, iconTexture="Interface\\Icons\\spell_nature_riptide"}]],
|
|
["17"] = [[{r=1, group="Priest", indicator="tl", g=0.41960784313725, player=true, alpha=1, duration=true, b=0.5843137254902, priority=0, icon=false, iconTexture="Interface\\Icons\\Spell_Holy_PowerWordShield"}]],
|
|
["152118"] = [[{r=1, group="Priest", indicator="tl", g=0.41960784313725, player=true, alpha=1, duration=true, b=0.5843137254902, priority=0, icon=false, iconTexture="Interface\\Icons\\Ability_Priest_ClarityOfWill"}]],
|
|
["23335"] = [[{r=0, group="PvP Flags", indicator="bl", g=0, duration=false, b=0, priority=0, icon=true, iconTexture="Interface\\Icons\\INV_BannerPVP_02"}]],
|
|
["102342"] = [[{r=0, group="Druid", indicator="c", g=0, duration=true, b=0, priority=0, icon=true, iconTexture="Interface\\Icons\\spell_druid_ironbark"}]],
|
|
["121177"] = [[{r=0.78039215686275, group="PvP Flags", indicator="bl", g=0.42352941176471, alpha=1, b=0, priority=0, icon=false, iconTexture="Interface\\Icons\\INV_BannerPVP_03"}]],
|
|
["586"] = [[{r=0, group="Priest", indicator="", g=0.85882352941176, selfColor={alpha=1, b=1, g=0.93725490196078, r=0, }, alpha=1, priority=0, b=1, iconTexture="Interface\\Icons\\Spell_Magic_LesserInvisibilty"}]],
|
|
["23333"] = [[{icon=true, b=0, priority=0, r=0, group="PvP Flags", indicator="bl", g=0, iconTexture="Interface\\Icons\\INV_BannerPVP_01"}]],
|
|
["119611"] = [[{r=0.26274509803922, group="Monk", indicator="tl", g=0.76078431372549, player=true, duration=true, alpha=1, b=0.53725490196078, priority=0, icon=false, iconTexture="Interface\\Icons\\ability_monk_renewingmists"}]],
|
|
["8936"] = [[{r=0.12156862745098, group="Druid", indicator="br", g=0.45882352941176, player=true, duration=true, b=0.12156862745098, priority=100, alpha=1, iconTexture="Interface\\Icons\\Spell_Nature_ResistNature"}]],
|
|
["34976"] = [[{r=0, group="PvP Flags", indicator="bl", g=0, player=false, b=0, priority=0, icon=true, iconTexture="Interface\\Icons\\INV_BannerPVP_03"}]],
|
|
["121164"] = [[{alpha=1, b=1, priority=0, r=0, group="PvP Flags", indicator="bl", g=0.003921568627451, iconTexture="Interface\\Icons\\INV_BannerPVP_03"}]],
|
|
["48438"] = [[{r=0.55294117647059, group="Druid", indicator="31685", g=1, player=true, duration=true, b=0.3921568627451, priority=100, alpha=1, iconTexture="Interface\\Icons\\Ability_Druid_Flourish"}]],
|
|
["1022"] = [[{r=0, group="Paladin", indicator="c", g=0, player=false, duration=true, b=0, priority=0, icon=true, iconTexture="Interface\\Icons\\Spell_Holy_SealOfProtection"}]],
|
|
["121175"] = [[{r=1, group="PvP Flags", indicator="bl", g=0.24705882352941, b=0.90196078431373, alpha=1, priority=0, icon=false, iconTexture="Interface\\Icons\\INV_BannerPVP_03"}]],
|
|
["64844"] = [[{r=0.67843137254902, group="Priest", indicator="31685", g=0.30588235294118, player=true, alpha=1, priority=0, b=0.14117647058824, iconTexture="Interface\\Icons\\Spell_Holy_DivineProvidence"}]],
|
|
["124081"] = [[{r=0.51372549019608, group="Monk", indicator="br", g=1, player=true, duration=true, b=0.90588235294118, alpha=1, priority=100, icon=false, iconTexture="Interface\\Icons\\ability_monk_forcesphere"}]],
|
|
["29166"] = [[{r=0, group="Druid", indicator="c", g=0, b=0, duration=true, priority=0, icon=true, iconTexture="Interface\\Icons\\Spell_Nature_Lightning"}]],
|
|
["189895"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\INV_Enchant_VoidSphere\";}",
|
|
["189627"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\achievement_zone_cataclysmgreen\";}",
|
|
["181306"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Ability_Mage_LivingBomb\";}",
|
|
["181753"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_felarakkoa_feldetonation_green\";}",
|
|
["188929"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Ability_Hunter_MarkedForDeath\";}",
|
|
["189032"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_malkorok_blightofyshaarj_green\";}",
|
|
["182826"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Fire_FelFlameRing\";}",
|
|
["181515"] = "{b=0;g=0;priority=1;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Shadow_SeedOfDestruction\";}",
|
|
["179219"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_felarakkoa_feldetonation_red\";}",
|
|
["179864"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Arcane_PrismaticCloak\";}",
|
|
["184124"] = "{b=0;g=0;priority=1;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Shadow_AntiMagicShell\";}",
|
|
["184450"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_bossfelorcs_necromancer_purple\";}",
|
|
["186134"] = "{icon=true;b=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"tr\";g=0;iconTexture=\"Interface\\\\Icons\\\\spell_fel_elementaldevastation\";}",
|
|
["185066"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_bossfelorcs_necromancer_red\";}",
|
|
["183817"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Ability_Warlock_EverlastingAffliction\";}",
|
|
["179978"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_bossgorefiend_touchofdoom\";}",
|
|
["182280"] = "{icon=true;b=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";g=0;iconTexture=\"Interface\\\\Icons\\\\Ability_Hunter_MarkedForDeath\";}",
|
|
["189031"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_malkorok_blightofyshaarj_yellow\";}",
|
|
["186500"] = "{b=0;g=0;priority=1;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"INTERFACE\\\\ICONS\\\\inv_misc_steelweaponchain\";}",
|
|
["188666"] = "{b=0;g=0;priority=1;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"INTERFACE\\\\ICONS\\\\ability_warlock_soulsiphon\";}",
|
|
["186333"] = "{b=0;g=0;priority=1;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Shadow_DevouringPlague\";}",
|
|
["186135"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"tr\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Shadow_AntiShadow\";}",
|
|
["181275"] = "{icon=true;b=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";g=0;iconTexture=\"Interface\\\\Icons\\\\spell_warlock_summonterrorguard\";}",
|
|
["181957"] = "{b=0;g=0;priority=2;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Frost_ArcticWinds\";}",
|
|
["189030"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_malkorok_blightofyshaarj_red\";}",
|
|
["182178"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_arakkoa_spinning_blade\";}",
|
|
["189777"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"INTERFACE\\\\ICONS\\\\inv_misc_steelweaponchain\";}",
|
|
["186407"] = "{r=0;indicator=\"c\";b=0;group=\"Hellfire Citadel\";priority=2;g=0;iconTexture=\"Interface\\\\Icons\\\\spell_fel_incinerate\";}",
|
|
["180166"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"tr\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Shadow_ChillTouch\";}",
|
|
["180079"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\inv_blacksmithdye_black\";}",
|
|
["184449"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_bossfelorcs_necromancer_purple\";}",
|
|
["185510"] = "{r=0;icon=true;indicator=\"tr\";b=0;group=\"Hellfire Citadel\";priority=1;g=0;iconTexture=\"INTERFACE\\\\ICONS\\\\inv_misc_steelweaponchain\";}",
|
|
["185065"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_bossfelorcs_necromancer_orange\";}",
|
|
["182769"] = "{r=0;icon=true;indicator=\"tr\";b=0;group=\"Hellfire Citadel\";priority=0;g=0;iconTexture=\"Interface\\\\Icons\\\\ability_fixated_state_purple\";}",
|
|
["181508"] = "{b=0;group=\"Hellfire Citadel\";indicator=\"c\";g=0;alpha=1;r=0;priority=1;icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Shadow_SeedOfDestruction\";}",
|
|
["181099"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Shadow_AuraOfDarkness\";}",
|
|
["181307"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\Spell_Shadow_Requiem\";}",
|
|
["183865"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_warlock_shadowfurytga\";}",
|
|
["186961"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_warlock_moltencoregreen\";}",
|
|
["182200"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_arakkoa_spinning_blade\";}",
|
|
["181597"] = "{b=0;g=0;priority=0;r=0;group=\"Hellfire Citadel\";indicator=\"c\";icon=true;iconTexture=\"Interface\\\\Icons\\\\ability_bossmannoroth_mannorothsgaze\";}",
|
|
}
|
|
}
|
|
|
|
for classToken in pairs(RAID_CLASS_COLORS) do
|
|
self.defaults.profile.auraIndicators.disabled[classToken] = {}
|
|
end
|
|
end
|
|
|
|
-- Module APIs
|
|
function ShadowUF:RegisterModule(module, key, name, isBar, class, spec, level)
|
|
-- Prevent duplicate registration for deprecated plugin
|
|
if( key == "auraIndicators" and IsAddOnLoaded("ShadowedUF_Indicators") and self.modules.auraIndicators ) then
|
|
self:Print(L["WARNING! ShadowedUF_Indicators has been deprecated as v4 and is now built in. Please delete ShadowedUF_Indicators, your configuration will be saved."])
|
|
return
|
|
end
|
|
|
|
self.modules[key] = module
|
|
|
|
module.moduleKey = key
|
|
module.moduleHasBar = isBar
|
|
module.moduleName = name
|
|
module.moduleClass = class
|
|
module.moduleLevel = level
|
|
|
|
if( type(spec) == "number" ) then
|
|
module.moduleSpec = {}
|
|
module.moduleSpec[spec] = true
|
|
elseif( type(spec) == "table" ) then
|
|
module.moduleSpec = {}
|
|
for _, id in pairs(spec) do
|
|
module.moduleSpec[id] = true
|
|
end
|
|
end
|
|
|
|
table.insert(self.moduleOrder, module)
|
|
end
|
|
|
|
function ShadowUF:FireModuleEvent(event, frame, unit)
|
|
for _, module in pairs(self.moduleOrder) do
|
|
if( module[event] ) then
|
|
module[event](module, frame, unit)
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Profiles changed
|
|
-- I really dislike this solution, but if we don't do it then there is setting issues
|
|
-- because when copying a profile, AceDB-3.0 fires OnProfileReset -> OnProfileCopied
|
|
-- SUF then sees that on the new reset profile has no profile, tries to load one in
|
|
-- ... followed by the profile copying happen and it doesn't copy everything correctly
|
|
-- due to variables being reset already.
|
|
local resetTimer
|
|
function ShadowUF:ProfileReset()
|
|
if( not resetTimer ) then
|
|
resetTimer = CreateFrame("Frame")
|
|
resetTimer:SetScript("OnUpdate", function(f)
|
|
ShadowUF:ProfilesChanged()
|
|
f:Hide()
|
|
end)
|
|
end
|
|
|
|
resetTimer:Show()
|
|
end
|
|
|
|
function ShadowUF:ProfilesChanged()
|
|
if( self.layoutImporting ) then return end
|
|
if( resetTimer ) then resetTimer:Hide() end
|
|
|
|
self.db:RegisterDefaults(self.defaults)
|
|
|
|
-- No active layout, register the default one
|
|
if( not self.db.profile.loadedLayout ) then
|
|
self:LoadDefaultLayout()
|
|
else
|
|
self:CheckUpgrade()
|
|
self:CheckBuild()
|
|
end
|
|
|
|
self.db.profile.revision = self.dbRevision
|
|
|
|
self:FireModuleEvent("OnProfileChange")
|
|
self:LoadUnits()
|
|
self:HideBlizzardFrames()
|
|
self.Layout:CheckMedia()
|
|
self.Units:ProfileChanged()
|
|
self.modules.movers:Update()
|
|
end
|
|
|
|
ShadowUF.noop = function() end
|
|
ShadowUF.hiddenFrame = CreateFrame("Frame")
|
|
ShadowUF.hiddenFrame:Hide()
|
|
|
|
local rehideFrame = function(self)
|
|
if( not InCombatLockdown() ) then
|
|
self:Hide()
|
|
end
|
|
end
|
|
|
|
local function basicHideBlizzardFrames(...)
|
|
for i=1, select("#", ...) do
|
|
local frame = select(i, ...)
|
|
frame:UnregisterAllEvents()
|
|
frame:HookScript("OnShow", rehideFrame)
|
|
frame:Hide()
|
|
end
|
|
end
|
|
|
|
local function hideBlizzardFrames(taint, ...)
|
|
for i=1, select("#", ...) do
|
|
local frame = select(i, ...)
|
|
UnregisterUnitWatch(frame)
|
|
frame:UnregisterAllEvents()
|
|
frame:Hide()
|
|
|
|
if( frame.manabar ) then frame.manabar:UnregisterAllEvents() end
|
|
if( frame.healthbar ) then frame.healthbar:UnregisterAllEvents() end
|
|
if( frame.spellbar ) then frame.spellbar:UnregisterAllEvents() end
|
|
if( frame.powerBarAlt ) then frame.powerBarAlt:UnregisterAllEvents() end
|
|
|
|
if( taint ) then
|
|
frame.Show = ShadowUF.noop
|
|
else
|
|
frame:SetParent(ShadowUF.hiddenFrame)
|
|
frame:HookScript("OnShow", rehideFrame)
|
|
end
|
|
end
|
|
end
|
|
|
|
local active_hiddens = {}
|
|
function ShadowUF:HideBlizzardFrames()
|
|
if( self.db.profile.hidden.cast and not active_hiddens.cast ) then
|
|
hideBlizzardFrames(true, PlayerCastingBarFrame or CastingBarFrame, PetCastingBarFrame)
|
|
end
|
|
|
|
if( self.db.profile.hidden.party and not active_hiddens.party ) then
|
|
if( PartyFrame ) then
|
|
hideBlizzardFrames(false, PartyFrame)
|
|
for memberFrame in PartyFrame.PartyMemberFramePool:EnumerateActive() do
|
|
hideBlizzardFrames(false, memberFrame, memberFrame.HealthBar, memberFrame.ManaBar)
|
|
end
|
|
PartyFrame.PartyMemberFramePool:ReleaseAll()
|
|
else
|
|
for i=1, MAX_PARTY_MEMBERS do
|
|
local name = "PartyMemberFrame" .. i
|
|
hideBlizzardFrames(false, _G[name], _G[name .. "HealthBar"], _G[name .. "ManaBar"])
|
|
end
|
|
end
|
|
|
|
-- This stops the compact party frame from being shown
|
|
UIParent:UnregisterEvent("GROUP_ROSTER_UPDATE")
|
|
|
|
-- This just makes sure
|
|
if( CompactPartyFrame ) then
|
|
hideBlizzardFrames(false, CompactPartyFrame)
|
|
end
|
|
end
|
|
|
|
if( CompactRaidFrameManager ) then
|
|
if( self.db.profile.hidden.raid and not active_hiddens.raidTriggered ) then
|
|
active_hiddens.raidTriggered = true
|
|
|
|
local function hideRaid()
|
|
CompactRaidFrameManager:UnregisterAllEvents()
|
|
CompactRaidFrameContainer:UnregisterAllEvents()
|
|
if( InCombatLockdown() ) then return end
|
|
|
|
CompactRaidFrameManager:Hide()
|
|
local shown = CompactRaidFrameManager_GetSetting("IsShown")
|
|
if( shown and shown ~= "0" ) then
|
|
CompactRaidFrameManager_SetSetting("IsShown", "0")
|
|
end
|
|
end
|
|
|
|
hooksecurefunc("CompactRaidFrameManager_UpdateShown", function()
|
|
if( self.db.profile.hidden.raid ) then
|
|
hideRaid()
|
|
end
|
|
end)
|
|
|
|
hideRaid()
|
|
CompactRaidFrameContainer:HookScript("OnShow", hideRaid)
|
|
CompactRaidFrameManager:HookScript("OnShow", hideRaid)
|
|
end
|
|
end
|
|
|
|
if( self.db.profile.hidden.buffs and not active_hiddens.buffs ) then
|
|
hideBlizzardFrames(false, BuffFrame, TemporaryEnchantFrame or DebuffFrame)
|
|
end
|
|
|
|
if( self.db.profile.hidden.player and not active_hiddens.player ) then
|
|
-- alternate bar renamed in 10.1.5
|
|
hideBlizzardFrames(false, PlayerFrame, PlayerFrameAlternateManaBar or AlternatePowerBar)
|
|
|
|
-- We keep these in case someone is still using the default auras, otherwise it messes up vehicle stuff
|
|
PlayerFrame:RegisterEvent("PLAYER_ENTERING_WORLD")
|
|
PlayerFrame:RegisterEvent("UNIT_ENTERING_VEHICLE")
|
|
PlayerFrame:RegisterEvent("UNIT_ENTERED_VEHICLE")
|
|
PlayerFrame:RegisterEvent("UNIT_EXITING_VEHICLE")
|
|
PlayerFrame:RegisterEvent("UNIT_EXITED_VEHICLE")
|
|
PlayerFrame:SetMovable(true)
|
|
PlayerFrame:SetUserPlaced(true)
|
|
PlayerFrame:SetDontSavePosition(true)
|
|
end
|
|
|
|
if( self.db.profile.hidden.playerPower and not active_hiddens.playerPower ) then
|
|
basicHideBlizzardFrames(RuneFrame, WarlockPowerFrame, MonkHarmonyBarFrame, PaladinPowerBarFrame, MageArcaneChargesFrame, EssencePlayerFrame)
|
|
end
|
|
|
|
if( self.db.profile.hidden.pet and not active_hiddens.pet ) then
|
|
hideBlizzardFrames(false, PetFrame)
|
|
end
|
|
|
|
if( self.db.profile.hidden.target and not active_hiddens.target ) then
|
|
hideBlizzardFrames(false, TargetFrame, ComboFrame, TargetFrameToT)
|
|
end
|
|
|
|
if( self.db.profile.hidden.focus and not active_hiddens.focus ) then
|
|
hideBlizzardFrames(false, FocusFrame, FocusFrameToT)
|
|
end
|
|
|
|
if( self.db.profile.hidden.boss and not active_hiddens.boss ) then
|
|
for i=1, MAX_BOSS_FRAMES do
|
|
local name = "Boss" .. i .. "TargetFrame"
|
|
if _G[name].TargetFrameContent then
|
|
hideBlizzardFrames(false, _G[name], _G[name].TargetFrameContent.TargetFrameContentMain.HealthBar, _G[name].TargetFrameContent.TargetFrameContentMain.ManaBar)
|
|
else
|
|
hideBlizzardFrames(false, _G[name], _G[name .. "HealthBar"], _G[name .. "ManaBar"])
|
|
end
|
|
end
|
|
end
|
|
|
|
if( self.db.profile.hidden.arena and not active_hiddens.arenaTriggered ) then
|
|
active_hiddens.arenaTriggered = true
|
|
|
|
hideBlizzardFrames(true, ArenaEnemyFramesContainer, ArenaEnemyPrepFramesContainer, ArenaEnemyMatchFramesContainer)
|
|
end
|
|
|
|
if( self.db.profile.hidden.playerAltPower and not active_hiddens.playerAltPower ) then
|
|
hideBlizzardFrames(false, PlayerPowerBarAlt)
|
|
end
|
|
|
|
-- As a reload is required to reset the hidden hooks, we can just set this to true if anything is true
|
|
for type, flag in pairs(self.db.profile.hidden) do
|
|
if( flag ) then
|
|
active_hiddens[type] = true
|
|
end
|
|
end
|
|
end
|
|
|
|
-- Upgrade info
|
|
local infoMessages = {
|
|
-- Old messages we don't need anymore
|
|
{}, {},
|
|
{
|
|
L["You must restart Shadowed Unit Frames."],
|
|
L["If you don't, you will be unable to use any combo point features (Chi, Holy Power, Combo Points, Aura Points, etc) until you do so."]
|
|
}
|
|
}
|
|
|
|
function ShadowUF:ShowInfoPanel()
|
|
local infoID = ShadowUF.db.global.infoID or 0
|
|
if( ShadowUF.ComboPoints and infoID < 3 ) then infoID = 3 end
|
|
|
|
ShadowUF.db.global.infoID = #(infoMessages)
|
|
if( infoID < 0 or infoID >= #(infoMessages) ) then return end
|
|
|
|
local frame = CreateFrame("Frame", nil, UIParent, BackdropTemplateMixin and "BackdropTemplate" or nil)
|
|
frame:SetClampedToScreen(true)
|
|
frame:SetFrameStrata("HIGH")
|
|
frame:SetToplevel(true)
|
|
frame:SetWidth(500)
|
|
frame:SetHeight(285)
|
|
frame:SetBackdrop({
|
|
bgFile = "Interface\\ChatFrame\\ChatFrameBackground",
|
|
edgeFile = "Interface\\DialogFrame\\UI-DialogBox-Border",
|
|
edgeSize = 26,
|
|
insets = {left = 9, right = 9, top = 9, bottom = 9},
|
|
})
|
|
frame:SetBackdropColor(0, 0, 0, 0.85)
|
|
frame:SetPoint("CENTER", UIParent, "CENTER", 0, 100)
|
|
|
|
frame.titleBar = frame:CreateTexture(nil, "ARTWORK")
|
|
frame.titleBar:SetTexture("Interface\\DialogFrame\\UI-DialogBox-Header")
|
|
frame.titleBar:SetPoint("TOP", 0, 8)
|
|
frame.titleBar:SetWidth(350)
|
|
frame.titleBar:SetHeight(45)
|
|
|
|
frame.title = frame:CreateFontString(nil, "ARTWORK", "GameFontNormal")
|
|
frame.title:SetPoint("TOP", 0, 0)
|
|
frame.title:SetText("Shadowed Unit Frames")
|
|
|
|
frame.text = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight")
|
|
frame.text:SetText(table.concat(infoMessages[ShadowUF.db.global.infoID], "\n"))
|
|
frame.text:SetPoint("TOPLEFT", 12, -22)
|
|
frame.text:SetWidth(frame:GetWidth() - 20)
|
|
frame.text:SetJustifyH("LEFT")
|
|
frame:SetHeight(frame.text:GetHeight() + 70)
|
|
|
|
frame.hide = CreateFrame("Button", nil, frame, "UIPanelButtonTemplate")
|
|
frame.hide:SetText(L["Ok"])
|
|
frame.hide:SetHeight(20)
|
|
frame.hide:SetWidth(100)
|
|
frame.hide:SetPoint("BOTTOMLEFT", frame, "BOTTOMLEFT", 8, 8)
|
|
frame.hide:SetScript("OnClick", function(f)
|
|
f:GetParent():Hide()
|
|
end)
|
|
end
|
|
|
|
function ShadowUF:Print(msg)
|
|
DEFAULT_CHAT_FRAME:AddMessage("|cff33ff99Shadow UF|r: " .. msg)
|
|
end
|
|
|
|
CONFIGMODE_CALLBACKS = CONFIGMODE_CALLBACKS or {}
|
|
CONFIGMODE_CALLBACKS["Shadowed Unit Frames"] = function(mode)
|
|
if( mode == "ON" ) then
|
|
ShadowUF.db.profile.locked = false
|
|
ShadowUF.modules.movers.isConfigModeSpec = true
|
|
elseif( mode == "OFF" ) then
|
|
ShadowUF.db.profile.locked = true
|
|
end
|
|
|
|
ShadowUF.modules.movers:Update()
|
|
end
|
|
|
|
SLASH_SHADOWEDUF1 = "/suf"
|
|
SLASH_SHADOWEDUF2 = "/shadowuf"
|
|
SLASH_SHADOWEDUF3 = "/shadoweduf"
|
|
SLASH_SHADOWEDUF4 = "/shadowedunitframes"
|
|
SlashCmdList["SHADOWEDUF"] = function(msg)
|
|
msg = msg and string.lower(msg)
|
|
if( msg and string.match(msg, "^profile (.+)") ) then
|
|
local profile = string.match(msg, "^profile (.+)")
|
|
|
|
for id, name in pairs(ShadowUF.db:GetProfiles()) do
|
|
if( string.lower(name) == profile ) then
|
|
ShadowUF.db:SetProfile(name)
|
|
ShadowUF:Print(string.format(L["Changed profile to %s."], name))
|
|
return
|
|
end
|
|
end
|
|
|
|
ShadowUF:Print(string.format(L["Cannot find any profiles named \"%s\"."], profile))
|
|
return
|
|
end
|
|
|
|
local loaded, reason = LoadAddOn("ShadowedUF_Options")
|
|
if( not ShadowUF.Config ) then
|
|
DEFAULT_CHAT_FRAME:AddMessage(string.format(L["Failed to load ShadowedUF_Options, cannot open configuration. Error returned: %s"], reason and _G["ADDON_" .. reason] or ""))
|
|
return
|
|
end
|
|
|
|
ShadowUF.Config:Open()
|
|
end
|
|
|
|
local frame = CreateFrame("Frame")
|
|
frame:RegisterEvent("PLAYER_LOGIN")
|
|
frame:RegisterEvent("ADDON_LOADED")
|
|
frame:SetScript("OnEvent", function(self, event, addon)
|
|
if( event == "PLAYER_LOGIN" ) then
|
|
ShadowUF:OnInitialize()
|
|
self:UnregisterEvent("PLAYER_LOGIN")
|
|
elseif( event == "ADDON_LOADED" and ( addon == "Blizzard_ArenaUI" or addon == "Blizzard_CompactRaidFrames" ) ) then
|
|
ShadowUF:HideBlizzardFrames()
|
|
end
|
|
end)
|
|
|