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.

2890 lines
89 KiB

ConRO.Spells = {};
ConRO.Keybinds = {};
ConRO.DefSpells = {};
ConRO.Flags = {};
ConRO.SpellsGlowing = {};
ConRO.DefGlowing = {};
ConRO.DamageFramePool = {};
ConRO.DamageFrames = {};
ConRO.DefenseFramePool = {};
ConRO.DefenseFrames = {};
ConRO.InterruptFramePool = {};
ConRO.InterruptFrames = {};
ConRO.CoolDownFramePool = {};
ConRO.CoolDownFrames = {};
ConRO.PurgableFramePool = {};
ConRO.PurgableFrames = {};
ConRO.RaidBuffsFramePool = {};
ConRO.RaidBuffsFrames = {};
ConRO.MovementFramePool = {};
ConRO.MovementFrames = {};
ConRO.TauntFramePool = {};
ConRO.TauntFrames = {};
local defaults = {
["ConRO_Settings_Full"] = true,
["ConRO_Settings_Burst"] = false,
["ConRO_Settings_Auto"] = false,
["ConRO_Settings_Single"] = true,
["ConRO_Settings_AoE"] = false,
}
if ConRO:MeleeSpec() then
defaults = {
["ConRO_Settings_Full"] = true,
["ConRO_Settings_Burst"] = false,
["ConRO_Settings_Auto"] = true,
["ConRO_Settings_Single"] = false,
["ConRO_Settings_AoE"] = false,
}
end
ConROCharacter = ConROCharacter or defaults;
function TTOnEnter(self)
GameTooltip:SetOwner(self, "ANCHOR_PRESERVE")
GameTooltip:SetText("ConRO Target Toggle") -- This sets the top line of text, in gold.
GameTooltip:AddLine('MACRO = "/ConROToggle"', 1, 1, 1, true)
GameTooltip:AddLine(" ", 1, 1, 1, true)
GameTooltip:AddLine("Auto", .2, 1, .2)
GameTooltip:AddLine("Used for melee specs to auto detect the number of enemies in range. Must have nameplates turned on.", 1, 1, 1, true)
GameTooltip:AddLine("Single", 1, .2, .2)
GameTooltip:AddLine("This will force single target rotation to focus and burn a target.", 1, 1, 1, true)
GameTooltip:AddLine("AoE", 1, .2, .2)
GameTooltip:AddLine("This will force AoE rotation for trash or Boss phases with frequent adds.", 1, 1, 1, true)
GameTooltip:AddLine(" ", 1, 1, 1, true)
GameTooltip:AddLine('"This can be toggled during combat as phases change."', 1, 1, 0, true)
GameTooltip:Show()
end
function TTOnLeave(self)
GameTooltip:Hide()
end
function ETOnEnter(self)
GameTooltip:SetOwner(self, "ANCHOR_PRESERVE")
GameTooltip:SetText("ConRO Rotation Toggle") -- This sets the top line of text, in gold.
GameTooltip:AddLine('MACRO = "/ConROBurstToggle"', 1, 1, 1, true)
GameTooltip:AddLine(" ", 1, 1, 1, true)
GameTooltip:AddLine("Burst Rotation", .2, 1, .2)
GameTooltip:AddLine("This is for Boss fights where you want to decide when to use your cooldowns.", 1, 1, 1, true)
GameTooltip:AddLine("Full Rotation", 1, .2, .2)
GameTooltip:AddLine("Can be used for placing long cooldowns into the recommended rotation.", 1, 1, 1, true)
GameTooltip:AddLine(" ", 1, 1, 1, true)
GameTooltip:AddLine('"This can be toggled during combat as phases change."', 1, 1, 0, true)
GameTooltip:Show()
end
function ETOnLeave(self)
GameTooltip:Hide()
end
function TWOnEnter(self)
GameTooltip:SetOwner(self, "ANCHOR_PRESERVE")
GameTooltip:SetText("ConRO Window") -- This sets the top line of text, in gold.
GameTooltip:AddLine("", .2, 1, .2)
GameTooltip:AddLine("This window displays the next suggested ability in your rotation.", 1, 1, 1, true)
GameTooltip:Show()
end
function TWOnLeave(self)
GameTooltip:Hide()
end
function TDWOnEnter(self)
GameTooltip:SetOwner(self, "ANCHOR_PRESERVE")
GameTooltip:SetText("ConRO Defense Window") -- This sets the top line of text, in gold.
GameTooltip:AddLine("", .2, 1, .2)
GameTooltip:AddLine("This window displays the next suggested defense ability in your rotation.", 1, 1, 1, true)
GameTooltip:Show()
end
function TDWOnLeave(self)
GameTooltip:Hide()
end
function TIWOnEnter(self)
GameTooltip:SetOwner(self, "ANCHOR_PRESERVE")
GameTooltip:SetText("ConRO Interrupt Flash") -- This sets the top line of text, in gold.
GameTooltip:AddLine("", .2, 1, .2)
GameTooltip:AddLine("This flash displays that you can interrupt.", 1, 1, 1, true)
GameTooltip:Show()
local color = ConRO.db.profile._Interrupt_Overlay_Color;
ConROInterruptWindow:SetSize(ConRO.db.profile.flashIconSize * .75, ConRO.db.profile.flashIconSize * .75);
ConROInterruptWindow.texture:SetVertexColor(color.r, color.g, color.b);
end
function TIWOnLeave(self)
GameTooltip:Hide()
ConROInterruptWindow:SetSize(ConRO.db.profile.flashIconSize * .25, ConRO.db.profile.flashIconSize * .25);
ConROInterruptWindow.texture:SetVertexColor(.1, .1, .1);
end
function TPWOnEnter(self)
GameTooltip:SetOwner(self, "ANCHOR_PRESERVE")
GameTooltip:SetText("ConRO Purge Flash") -- This sets the top line of text, in gold.
GameTooltip:AddLine("", .2, 1, .2)
GameTooltip:AddLine("This flash displays that you can purge.", 1, 1, 1, true)
GameTooltip:Show()
local color = ConRO.db.profile._Purge_Overlay_Color;
ConROPurgeWindow:SetSize(ConRO.db.profile.flashIconSize * .75, ConRO.db.profile.flashIconSize * .75);
ConROPurgeWindow.texture:SetVertexColor(color.r, color.g, color.b);
end
function TPWOnLeave(self)
GameTooltip:Hide()
ConROPurgeWindow:SetSize(ConRO.db.profile.flashIconSize * .25, ConRO.db.profile.flashIconSize * .25);
ConROPurgeWindow.texture:SetVertexColor(.1, .1, .1);
end
function AtoneOnEnter(self)
GameTooltip:SetOwner(self, "ANCHOR_PRESERVE")
GameTooltip:SetText("ConRO Atonement") -- This sets the top line of text, in gold.
GameTooltip:AddLine(" ", 1, 1, 1, true)
GameTooltip:AddLine("At:", .2, 1, .2)
GameTooltip:AddLine("This is the number of Atonement buffs in your group.", 1, 1, 1, true)
GameTooltip:AddLine(" ", 1, 1, 1, true)
GameTooltip:AddLine("Raid:", 1, .2, .2)
GameTooltip:AddLine("Sets your Atonement threshold for raids. Solo is defaulted to 1 and Party is defaulted to 5.", 1, 1, 1, true)
GameTooltip:AddLine(" ", 1, 1, 1, true)
GameTooltip:AddLine('"This can be changed during combat as phases change."', 1, 1, 0, true)
GameTooltip:Show()
end
function AtoneOnLeave(self)
GameTooltip:Hide()
end
function ConRO:DisplayToggleFrame()
local _, Class = UnitClass("player")
local Color = RAID_CLASS_COLORS[Class]
local frame = CreateFrame("Frame", "ConROButtonFrame", UIParent, BackdropTemplateMixin and "BackdropTemplate")
local vert = 2;
local hori = 1;
if ConRO.db.profile.toggleButtonOrientation == 1 then
vert = 2;
hori = 1;
elseif ConRO.db.profile.toggleButtonOrientation == 2 then
vert = 1;
hori = 2;
end
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('5')
frame:SetSize((40 * hori) + 14, (15 * vert) + 14)
frame:SetScale(ConRO.db.profile.toggleButtonSize)
if ConRO.db.profile._Hide_Toggle then
frame:SetAlpha(0);
else
frame:SetAlpha(1);
end
frame:SetBackdrop( {
bgFile = "Interface\\CHATFRAME\\CHATFRAMEBACKGROUND",
edgeFile = "Interface\\Tooltips\\UI-Tooltip-Border",
tile = true,
tileSize = 8,
edgeSize = 20,
insets = { left = 4, right = 4, top = 4, bottom = 4 }
})
frame:SetBackdropColor(0, 0, 0, .75)
frame:SetBackdropBorderColor(Color.r, Color.g, Color.b, .75)
frame:SetPoint("CENTER", 180, -20)
frame:SetMovable(true)
frame:EnableMouse(true)
frame:SetClampedToScreen(true)
frame:RegisterForDrag("LeftButton")
frame:SetScript("OnDragStart", function(self)
if ConRO.db.profile._Unlock_ConRO then
frame:StartMoving()
end
end)
frame:SetScript("OnDragStop", frame.StopMovingOrSizing)
frame:SetScript("OnEnter", function(self)
frame:SetAlpha(1);
end)
frame:SetScript("OnLeave", function(self)
if not MouseIsOver(frame) then
if ConRO.db.profile._Hide_Toggle then
frame:SetAlpha(0);
else
frame:SetAlpha(1);
end
end
end)
frame:Show()
end
function ConRO:CreateAutoButton()
local _, Class = UnitClass("player")
local Color = RAID_CLASS_COLORS[Class]
local tbutton = CreateFrame("Button", 'ConRO_AutoButton', ConROButtonFrame)
tbutton:SetFrameStrata('MEDIUM')
tbutton:SetFrameLevel('6')
tbutton:SetPoint("BOTTOMRIGHT", "ConROButtonFrame", "BOTTOMRIGHT", -7, 7)
tbutton:SetSize(40, 15)
if ConROCharacter.ConRO_Settings_Auto then
tbutton:Show()
else
tbutton:Hide()
end
tbutton:SetAlpha(1)
tbutton:SetText("Auto")
tbutton:SetNormalFontObject("GameFontHighlightSmall")
tbutton:SetScript("OnEnter", TTOnEnter)
tbutton:SetScript("OnLeave", TTOnLeave)
local ntex = tbutton:CreateTexture()
ntex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonUp")
ntex:SetTexCoord(0, 0.625, 0, 0.6875)
ntex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ntex:SetAllPoints()
tbutton:SetNormalTexture(ntex)
local htex = tbutton:CreateTexture()
htex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonHighlight")
htex:SetTexCoord(0, 0.625, 0, 0.6875)
htex:SetAllPoints()
tbutton:SetHighlightTexture(htex)
local ptex = tbutton:CreateTexture()
ptex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonDown")
ptex:SetTexCoord(0, 0.625, 0, 0.6875)
ptex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ptex:SetAllPoints()
tbutton:SetPushedTexture(ptex)
tbutton:SetScript("OnMouseDown", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StartMoving();
end
end)
tbutton:SetScript("OnMouseUp", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StopMovingOrSizing();
end
self:Hide();
ConRO_SingleButton:Show();
ConROCharacter.ConRO_Settings_Auto = false;
ConROCharacter.ConRO_Settings_Single = true;
ConROCharacter.ConRO_Settings_AoE = false;
end)
end
function ConRO:CreateSingleButton()
local _, Class = UnitClass("player")
local Color = RAID_CLASS_COLORS[Class]
local tbutton = CreateFrame("Button", 'ConRO_SingleButton', ConROButtonFrame)
tbutton:SetFrameStrata('MEDIUM')
tbutton:SetFrameLevel('6')
tbutton:SetPoint("BOTTOMRIGHT", "ConROButtonFrame", "BOTTOMRIGHT", -7, 7)
tbutton:SetSize(40, 15)
if ConROCharacter.ConRO_Settings_Single then
tbutton:Show()
else
tbutton:Hide()
end
tbutton:SetAlpha(1)
tbutton:SetText("Single")
tbutton:SetNormalFontObject("GameFontHighlightSmall")
tbutton:SetScript("OnEnter", TTOnEnter)
tbutton:SetScript("OnLeave", TTOnLeave)
local ntex = tbutton:CreateTexture()
ntex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonUp")
ntex:SetTexCoord(0, 0.625, 0, 0.6875)
ntex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ntex:SetAllPoints()
tbutton:SetNormalTexture(ntex)
local htex = tbutton:CreateTexture()
htex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonHighlight")
htex:SetTexCoord(0, 0.625, 0, 0.6875)
htex:SetAllPoints()
tbutton:SetHighlightTexture(htex)
local ptex = tbutton:CreateTexture()
ptex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonDown")
ptex:SetTexCoord(0, 0.625, 0, 0.6875)
ptex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ptex:SetAllPoints()
tbutton:SetPushedTexture(ptex)
tbutton:SetScript("OnMouseDown", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StartMoving();
end
end)
tbutton:SetScript("OnMouseUp", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StopMovingOrSizing();
end
self:Hide();
ConRO_AoEButton:Show();
ConROCharacter.ConRO_Settings_Auto = false;
ConROCharacter.ConRO_Settings_Single = false;
ConROCharacter.ConRO_Settings_AoE = true;
end)
end
function ConRO:CreateAoEButton()
local _, Class = UnitClass("player")
local Color = RAID_CLASS_COLORS[Class]
local tbutton = CreateFrame("Button", 'ConRO_AoEButton', ConROButtonFrame)
tbutton:SetFrameStrata('MEDIUM');
tbutton:SetFrameLevel('6')
tbutton:SetPoint("BOTTOMRIGHT", "ConROButtonFrame", "BOTTOMRIGHT", -7, 7)
tbutton:SetSize(40, 15)
if ConROCharacter.ConRO_Settings_AoE then
tbutton:Show()
else
tbutton:Hide()
end
tbutton:SetAlpha(1)
tbutton:SetText("AoE")
tbutton:SetNormalFontObject("GameFontHighlightSmall")
tbutton:SetScript("OnEnter", TTOnEnter)
tbutton:SetScript("OnLeave", TTOnLeave)
local ntex = tbutton:CreateTexture()
ntex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonUp")
ntex:SetTexCoord(0, 0.625, 0, 0.6875)
ntex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ntex:SetAllPoints()
tbutton:SetNormalTexture(ntex)
local htex = tbutton:CreateTexture()
htex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonHighlight")
htex:SetTexCoord(0, 0.625, 0, 0.6875)
htex:SetAllPoints()
tbutton:SetHighlightTexture(htex)
local ptex = tbutton:CreateTexture()
ptex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonDown")
ptex:SetTexCoord(0, 0.625, 0, 0.6875)
ptex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ptex:SetAllPoints()
tbutton:SetPushedTexture(ptex)
tbutton:SetScript("OnMouseDown", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StartMoving();
end
end)
tbutton:SetScript("OnMouseUp", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StopMovingOrSizing();
end
if ConRO:MeleeSpec() then
ConRO_AutoButton:Show();
self:Hide();
ConROCharacter.ConRO_Settings_Auto = true;
ConROCharacter.ConRO_Settings_Single = false;
ConROCharacter.ConRO_Settings_AoE = false;
else
ConRO_SingleButton:Show();
self:Hide();
ConROCharacter.ConRO_Settings_Auto = false;
ConROCharacter.ConRO_Settings_Single = true;
ConROCharacter.ConRO_Settings_AoE = false;
end
end)
end
function ConRO:CreateFullButton()
local _, Class = UnitClass("player")
local Color = RAID_CLASS_COLORS[Class]
local tbutton = CreateFrame("Button", 'ConRO_FullButton', ConROButtonFrame)
tbutton:SetFrameStrata('MEDIUM');
tbutton:SetFrameLevel('6')
tbutton:SetPoint("TOPLEFT", "ConROButtonFrame", "TOPLEFT", 7, -7)
tbutton:SetSize(40, 15)
tbutton:SetAlpha(1)
if ConROCharacter.ConRO_Settings_Full then
tbutton:Show()
else
tbutton:Hide()
end
tbutton:SetText("Full")
tbutton:SetNormalFontObject("GameFontHighlightSmall")
tbutton:SetScript("OnEnter", ETOnEnter)
tbutton:SetScript("OnLeave", ETOnLeave)
local ntex = tbutton:CreateTexture()
ntex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonUp")
ntex:SetTexCoord(0, 0.625, 0, 0.6875)
ntex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ntex:SetAllPoints()
tbutton:SetNormalTexture(ntex)
local htex = tbutton:CreateTexture()
htex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonHighlight")
htex:SetTexCoord(0, 0.625, 0, 0.6875)
htex:SetAllPoints()
tbutton:SetHighlightTexture(htex)
local ptex = tbutton:CreateTexture()
ptex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonDown")
ptex:SetTexCoord(0, 0.625, 0, 0.6875)
ptex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ptex:SetAllPoints()
tbutton:SetPushedTexture(ptex)
tbutton:SetScript("OnMouseDown", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StartMoving();
end
end)
tbutton:SetScript("OnMouseUp", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StopMovingOrSizing();
end
self:Hide();
ConRO_BurstButton:Show();
ConROCharacter.ConRO_Settings_Full = false;
ConROCharacter.ConRO_Settings_Burst = true;
if ConRO.rotationEnabled then
if ConRO.fetchTimer then
ConRO:CancelTimer(ConRO.fetchTimer);
ConRO:CancelTimer(ConRO.fetchdefTimer);
end
ConRO.fetchTimer = ConRO:ScheduleTimer('Fetch', 0.5);
ConRO.fetchdefTimer = ConRO:ScheduleTimer('FetchDef', 0.5);
end
ConRO:DestroyInterruptOverlays();
ConRO:DestroyCoolDownOverlays();
ConRO:DestroyPurgableOverlays();
ConRO:DestroyRaidBuffsOverlays();
ConRO:DestroyMovementOverlays();
ConRO:DestroyTauntOverlays();
end)
end
function ConRO:CreateBurstButton()
local _, Class = UnitClass("player")
local Color = RAID_CLASS_COLORS[Class]
local tbutton = CreateFrame("Button", 'ConRO_BurstButton', ConROButtonFrame)
tbutton:SetFrameStrata('MEDIUM');
tbutton:SetFrameLevel('6')
tbutton:SetPoint("TOPLEFT", "ConROButtonFrame", "TOPLEFT", 7, -7)
tbutton:SetSize(40, 15)
tbutton:SetAlpha(1)
if ConROCharacter.ConRO_Settings_Burst then
tbutton:Show()
else
tbutton:Hide()
end
tbutton:SetText("Burst")
tbutton:SetNormalFontObject("GameFontHighlightSmall")
tbutton:SetScript("OnEnter", ETOnEnter)
tbutton:SetScript("OnLeave", ETOnLeave)
local ntex = tbutton:CreateTexture()
ntex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonUp")
ntex:SetTexCoord(0, 0.625, 0, 0.6875)
ntex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ntex:SetAllPoints()
tbutton:SetNormalTexture(ntex)
local htex = tbutton:CreateTexture()
htex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonHighlight")
htex:SetTexCoord(0, 0.625, 0, 0.6875)
htex:SetAllPoints()
tbutton:SetHighlightTexture(htex)
local ptex = tbutton:CreateTexture()
ptex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonDown")
ptex:SetTexCoord(0, 0.625, 0, 0.6875)
ptex:SetVertexColor(Color.r, Color.g, Color.b, 1)
ptex:SetAllPoints()
tbutton:SetPushedTexture(ptex)
tbutton:SetScript("OnMouseDown", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StartMoving();
end
end)
tbutton:SetScript("OnMouseUp", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StopMovingOrSizing();
end
self:Hide();
ConRO_FullButton:Show();
ConROCharacter.ConRO_Settings_Burst = false;
ConROCharacter.ConRO_Settings_Full = true;
if ConRO.rotationEnabled then
if ConRO.fetchTimer then
ConRO:CancelTimer(ConRO.fetchTimer);
ConRO:CancelTimer(ConRO.fetchdefTimer);
end
ConRO.fetchTimer = ConRO:ScheduleTimer('Fetch', 0.5);
ConRO.fetchdefTimer = ConRO:ScheduleTimer('FetchDef', 0.5);
end
ConRO:DestroyInterruptOverlays();
ConRO:DestroyCoolDownOverlays();
ConRO:DestroyPurgableOverlays();
ConRO:DestroyRaidBuffsOverlays();
ConRO:DestroyMovementOverlays();
ConRO:DestroyTauntOverlays();
end)
end
function ConRO:CreateBlockBurstButton()
local tbutton = CreateFrame("Button", 'ConRO_BlockBurstButton', ConROButtonFrame)
tbutton:SetFrameStrata('MEDIUM');
tbutton:SetFrameLevel('6')
tbutton:SetPoint("TOPLEFT", "ConROButtonFrame", "TOPLEFT", 7, -7)
tbutton:SetSize(40, 15)
tbutton:Hide()
tbutton:SetAlpha(1)
tbutton:SetText("Just")
tbutton:SetNormalFontObject("GameFontHighlightSmall")
tbutton:SetScript("OnEnter", ETOnEnter)
tbutton:SetScript("OnLeave", ETOnLeave)
local ntex = tbutton:CreateTexture()
ntex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonUp")
ntex:SetTexCoord(0, 0.625, 0, 0.6875)
ntex:SetVertexColor(0, 0, 0, 1)
ntex:SetAllPoints()
tbutton:SetNormalTexture(ntex)
tbutton:SetScript("OnMouseDown", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StartMoving();
end
end)
tbutton:SetScript("OnMouseUp", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StopMovingOrSizing();
end
end)
end
function ConRO:CreateBlockAoEButton()
local tbutton = CreateFrame("Button", 'ConRO_BlockAoEButton', ConROButtonFrame)
tbutton:SetFrameStrata('MEDIUM');
tbutton:SetFrameLevel('6')
tbutton:SetPoint("BOTTOMRIGHT", "ConROButtonFrame", "BOTTOMRIGHT", -7, 7)
tbutton:SetSize(40, 15)
tbutton:Hide()
tbutton:SetAlpha(1)
tbutton:SetText("Kill")
tbutton:SetNormalFontObject("GameFontHighlightSmall")
tbutton:SetScript("OnEnter", TTOnEnter)
tbutton:SetScript("OnLeave", TTOnLeave)
local ntex = tbutton:CreateTexture()
ntex:SetTexture("Interface\\AddOns\\ConRO\\images\\buttonUp")
ntex:SetTexCoord(0, 0.625, 0, 0.6875)
ntex:SetVertexColor(0, 0, 0, 1)
ntex:SetAllPoints()
tbutton:SetNormalTexture(ntex)
tbutton:SetScript("OnMouseDown", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StartMoving();
end
end)
tbutton:SetScript("OnMouseUp", function (self, tbutton, up)
if ConRO.db.profile._Unlock_ConRO then
ConROButtonFrame:StopMovingOrSizing();
end
end)
end
function ConRO:SlashUnlock()
if not ConRO.db.profile._Unlock_ConRO then
ConRO.db.profile._Unlock_ConRO = true;
else
ConRO.db.profile._Unlock_ConRO = false;
end
ConROWindow:EnableMouse(ConRO.db.profile._Unlock_ConRO);
ConRODefenseWindow:EnableMouse(ConRO.db.profile._Unlock_ConRO);
ConROInterruptWindow:EnableMouse(ConRO.db.profile._Unlock_ConRO);
ConROPurgeWindow:EnableMouse(ConRO.db.profile._Unlock_ConRO);
ConROInterruptWindow:SetMovable(ConRO.db.profile._Unlock_ConRO);
ConROPurgeWindow:SetMovable(ConRO.db.profile._Unlock_ConRO);
if ConRO.db.profile._Unlock_ConRO and ConRO.db.profile.enableInterruptWindow == true then
ConROInterruptWindow:Show();
else
ConROInterruptWindow:Hide();
end
if ConRO.db.profile._Unlock_ConRO and ConRO.db.profile.enablePurgeWindow == true then
ConROPurgeWindow:Show();
else
ConROPurgeWindow:Hide();
end
end
function ConRO:SlashToggle()
if ConRO:MeleeSpec() then
if ConRO_AutoButton:IsVisible() then
ConRO_AutoButton:Hide();
ConRO_SingleButton:Show();
ConROCharacter.ConRO_Settings_Auto = false;
ConROCharacter.ConRO_Settings_Single = true;
elseif ConRO_SingleButton:IsVisible() then
ConRO_SingleButton:Hide();
ConRO_AoEButton:Show();
ConROCharacter.ConRO_Settings_Single = false;
ConROCharacter.ConRO_Settings_AoE = true;
elseif ConRO_AoEButton:IsVisible() then
ConRO_AoEButton:Hide();
ConRO_AutoButton:Show();
ConROCharacter.ConRO_Settings_AoE = false;
ConROCharacter.ConRO_Settings_Auto = true;
end
else
if ConRO_SingleButton:IsVisible() then
ConRO_SingleButton:Hide();
ConRO_AoEButton:Show();
ConROCharacter.ConRO_Settings_Single = false;
ConROCharacter.ConRO_Settings_AoE = true;
elseif ConRO_AoEButton:IsVisible() then
ConRO_AoEButton:Hide();
ConRO_SingleButton:Show();
ConROCharacter.ConRO_Settings_AoE = false;
ConROCharacter.ConRO_Settings_Single = true;
end
end
end
function ConRO:SlashBurstToggle()
if ConRO_BurstButton:IsVisible() then
ConRO_BurstButton:Hide();
ConRO_FullButton:Show();
ConROCharacter.ConRO_Settings_Burst = false;
ConROCharacter.ConRO_Settings_Full = true;
elseif ConRO_FullButton:IsVisible() then
ConRO_FullButton:Hide();
ConRO_BurstButton:Show();
ConROCharacter.ConRO_Settings_Full = false;
ConROCharacter.ConRO_Settings_Burst = true;
end
end
SLASH_CONRO1 = '/ConRO'
SLASH_CONROUNLOCK1 = '/ConROlock'
SLASH_CONROA1 = '/ConROtoggle'
SLASH_CONROB1 = '/ConROBurstToggle'
SlashCmdList["CONRO"] = function() InterfaceOptionsFrame_OpenToCategory('ConRO'); InterfaceOptionsFrame_OpenToCategory('ConRO'); end
SlashCmdList["CONROUNLOCK"] = function() ConRO:SlashUnlock() end
SlashCmdList["CONROA"] = function() ConRO:SlashToggle() end -- Slash Command List
SlashCmdList["CONROB"] = function() ConRO:SlashBurstToggle() end -- Slash Command List
function ConRO:ToggleHealer()
ConROButtonFrame:Hide();
ConRO_AutoButton:Hide();
ConRO_SingleButton:Hide();
ConRO_AoEButton:Hide();
ConRO_BurstButton:Hide();
ConRO_FullButton:Hide();
ConRO_BlockBurstButton:Hide();
ConRO_BlockAoEButton:Hide();
end
function ConRO:ToggleDamage()
ConROButtonFrame:Show();
if ConROCharacter.ConRO_Settings_Auto then
ConRO_AutoButton:Show();
ConRO_SingleButton:Hide();
ConRO_AoEButton:Hide();
elseif ConROCharacter.ConRO_Settings_Single then
ConRO_AutoButton:Hide();
ConRO_SingleButton:Show();
ConRO_AoEButton:Hide();
elseif ConROCharacter.ConRO_Settings_AoE then
ConRO_AutoButton:Hide();
ConRO_SingleButton:Hide();
ConRO_AoEButton:Show();
end
if ConROCharacter.ConRO_Settings_Full then
ConRO_FullButton:Show();
ConRO_BurstButton:Hide();
elseif ConROCharacter.ConRO_Settings_Burst then
ConRO_FullButton:Hide();
ConRO_BurstButton:Show();
end
ConRO_BlockBurstButton:Hide();
ConRO_BlockAoEButton:Hide();
end
function ConRO:DisableSpecialization() --WIP
ConRO:ToggleHealer();
end
function ConRO:EnableSpecialization() --WIP
end
function ConRO:BlockBurst()
ConRO_BurstButton:Hide();
ConRO_FullButton:Hide();
ConRO_BlockBurstButton:Show();
end
function ConRO:BlockAoE()
ConRO_AutoButton:Hide();
ConRO_SingleButton:Hide();
ConRO_AoEButton:Hide();
ConRO_BlockAoEButton:Show();
end
function ConRO:DisplayWindowFrame()
local frame = CreateFrame("Frame", "ConROWindow", UIParent);
frame:SetMovable(true);
frame:SetClampedToScreen(true);
frame:RegisterForDrag("LeftButton");
frame:SetScript("OnEnter", TWOnEnter);
frame:SetScript("OnLeave", TWOnLeave);
frame:SetScript("OnDragStart", function(self)
if ConRO.db.profile._Unlock_ConRO then
frame:StartMoving()
end
end)
frame:SetScript("OnDragStop", frame.StopMovingOrSizing);
frame:EnableMouse(ConRO.db.profile._Unlock_ConRO);
frame:SetPoint("CENTER", -200, 50);
frame:SetSize(ConRO.db.profile.windowIconSize, ConRO.db.profile.windowIconSize);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('5');
frame:SetAlpha(ConRO.db.profile.transparencyWindow);
if ConRO.db.profile.combatWindow or ConRO:HealSpec() then
frame:Hide();
elseif not ConRO.db.profile.enableWindow then
frame:Hide();
else
frame:Show();
end
local t = frame.texture;
if not t then
t = frame:CreateTexture("ARTWORK");
t:SetTexture('Interface\\AddOns\\ConRO\\images\\Bigskull');
t:SetBlendMode('BLEND');
frame.texture = t;
end
t:SetAllPoints(frame)
local fontstring = frame.font;
if not fontstring then
fontstring = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight");
fontstring:SetText(" ");
local _, Class = UnitClass("player");
local Color = RAID_CLASS_COLORS[Class];
fontstring:SetTextColor(Color.r, Color.g, Color.b, 1);
fontstring:SetPoint('BOTTOM', frame, 'TOP', 0, 2);
fontstring:SetWidth(ConRO.db.profile.windowIconSize / 1.25 + 30);
fontstring:SetHeight(ConRO.db.profile.windowIconSize / 1.25);
fontstring:SetJustifyV("BOTTOM");
frame.font = fontstring;
end
if ConRO.db.profile.enableWindowSpellName then
fontstring:Show();
else
fontstring:Hide();
end
local fontkey = frame.fontkey;
if not fontkey then
fontkey = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight");
fontkey:SetText(" ");
fontkey:SetPoint('TOP', frame, 'BOTTOM', 0, -2);
fontkey:SetTextColor(1, 1, 1, 1);
frame.fontkey = fontkey;
end
if ConRO.db.profile.enableWindowKeybinds or ConRO.db.profile._Unlock_ConRO then
fontkey:Show();
else
fontkey:Hide();
end
local cd = CreateFrame("Cooldown", "ConROWindowCooldown", frame, "CooldownFrameTemplate")
cd:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START");
cd:RegisterEvent("UNIT_SPELLCAST_CHANNEL_UPDATE");
cd:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP");
cd:RegisterEvent("UNIT_SPELLCAST_SENT");
cd:RegisterEvent("UNIT_SPELLCAST_START");
cd:RegisterEvent("UNIT_SPELLCAST_DELAYED");
cd:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED");
cd:RegisterEvent("UNIT_SPELLCAST_FAILED");
cd:RegisterEvent("UNIT_SPELLCAST_START");
cd:RegisterEvent("UNIT_SPELLCAST_STOP");
cd:SetAllPoints(frame);
cd:SetFrameStrata('MEDIUM');
cd:SetFrameLevel('7');
if ConRO.db.profile.enableWindowCooldown then
cd:SetScript("OnEvent",function(self)
local gcdStart, gcdDuration = GetSpellCooldown(61304)
local _, _, _, startTimeMS, endTimeMS = UnitCastingInfo('player');
local _, _, _, startTimeMSchan, endTimeMSchan = UnitChannelInfo('player');
if not (endTimeMS or endTimeMSchan) then
cd:SetCooldown(gcdStart, gcdDuration)
elseif endTimeMSchan then
local chanStart = startTimeMSchan / 1000;
local chanDuration = endTimeMSchan/1000 - GetTime();
cd:SetCooldown(chanStart, chanDuration)
else
local spStart = startTimeMS / 1000;
local spDuration = endTimeMS/1000 - GetTime();
cd:SetCooldown(spStart, spDuration)
end
end)
end
end
function ConRO:DefenseWindowFrame()
local frame = CreateFrame("Frame", "ConRODefenseWindow", UIParent);
frame:SetMovable(true);
frame:SetClampedToScreen(true);
frame:RegisterForDrag("LeftButton");
frame:SetScript("OnEnter", TDWOnEnter);
frame:SetScript("OnLeave", TDWOnLeave);
frame:SetScript("OnDragStart", function(self)
if ConRO.db.profile._Unlock_ConRO then
frame:StartMoving()
end
end)
frame:SetScript("OnDragStop", frame.StopMovingOrSizing);
frame:EnableMouse(ConRO.db.profile._Unlock_ConRO);
frame:SetPoint("CENTER", -280, 50);
frame:SetSize(ConRO.db.profile.windowIconSize * .75, ConRO.db.profile.windowIconSize * .75);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('4');
frame:SetAlpha(ConRO.db.profile.transparencyWindow);
if ConRO.db.profile.combatWindow then
frame:Hide();
elseif not ConRO.db.profile.enableDefenseWindow then
frame:Hide();
else
frame:Show();
end
local t = frame.texture;
if not t then
t = frame:CreateTexture("ARTWORK")
t:SetTexture('Interface\\AddOns\\ConRO\\images\\shield2');
t:SetBlendMode('BLEND');
local color = ConRO.db.profile._Defense_Overlay_Color;
t:SetVertexColor(color.r, color.g, color.b);
frame.texture = t;
end
t:SetAllPoints(frame)
local fontstring = frame.font;
if not fontstring then
fontstring = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight");
fontstring:SetText(" ");
local _, Class = UnitClass("player");
local Color = RAID_CLASS_COLORS[Class];
fontstring:SetTextColor(Color.r, Color.g, Color.b, 1);
fontstring:SetPoint('BOTTOM', frame, 'TOP', 0, 2);
fontstring:SetWidth(ConRO.db.profile.windowIconSize / 1.25 + 30);
fontstring:SetHeight(ConRO.db.profile.windowIconSize / 1.25);
fontstring:SetJustifyV("BOTTOM");
frame.font = fontstring;
end
if ConRO.db.profile.enableWindowSpellName then
fontstring:Show();
else
fontstring:Hide();
end
local fontkey = frame.fontkey;
if not fontkey then
fontkey = frame:CreateFontString(nil, "ARTWORK", "GameFontHighlight");
fontkey:SetText(" ");
fontkey:SetPoint('TOP', frame, 'BOTTOM', 0, -2);
fontkey:SetTextColor(1, 1, 1, 1);
frame.fontkey = fontkey;
end
if ConRO.db.profile.enableWindowKeybinds or ConRO.db.profile._Unlock_ConRO then
fontkey:Show();
else
fontkey:Hide();
end
local cd = CreateFrame("Cooldown", "ConRODefWindowCooldown", frame, "CooldownFrameTemplate")
cd:RegisterEvent("UNIT_SPELLCAST_CHANNEL_START");
cd:RegisterEvent("UNIT_SPELLCAST_CHANNEL_UPDATE");
cd:RegisterEvent("UNIT_SPELLCAST_CHANNEL_STOP");
cd:RegisterEvent("UNIT_SPELLCAST_SENT");
cd:RegisterEvent("UNIT_SPELLCAST_START");
cd:RegisterEvent("UNIT_SPELLCAST_DELAYED");
cd:RegisterEvent("UNIT_SPELLCAST_INTERRUPTED");
cd:RegisterEvent("UNIT_SPELLCAST_FAILED");
cd:RegisterEvent("UNIT_SPELLCAST_START");
cd:RegisterEvent("UNIT_SPELLCAST_STOP");
cd:SetAllPoints(frame);
cd:SetFrameStrata('MEDIUM');
cd:SetFrameLevel('7');
if ConRO.db.profile.enableWindowCooldown then
cd:SetScript("OnEvent",function(self)
local gcdStart, gcdDuration = GetSpellCooldown(61304)
local _, _, _, startTimeMS, endTimeMS = UnitCastingInfo('player');
local _, _, _, startTimeMSchan, endTimeMSchan = UnitChannelInfo('player');
if not (endTimeMS or endTimeMSchan) then
cd:SetCooldown(gcdStart, gcdDuration)
elseif endTimeMSchan then
local chanStart = startTimeMSchan / 1000;
local chanDuration = endTimeMSchan/1000 - GetTime();
cd:SetCooldown(chanStart, chanDuration)
else
local spStart = startTimeMS / 1000;
local spDuration = endTimeMS/1000 - GetTime();
cd:SetCooldown(spStart, spDuration)
end
end)
end
end
function ConRO:InterruptWindowFrame()
local frame = CreateFrame("Frame", "ConROInterruptWindow", UIParent);
frame:SetMovable(true);
frame:SetClampedToScreen(true);
frame:RegisterForDrag("LeftButton");
frame:SetScript("OnEnter", TIWOnEnter);
frame:SetScript("OnLeave", TIWOnLeave);
frame:SetScript("OnDragStart", function(self)
if ConRO.db.profile._Unlock_ConRO then
frame:StartMoving()
end
end)
frame:SetScript("OnDragStop", frame.StopMovingOrSizing)
frame:EnableMouse(ConRO.db.profile._Unlock_ConRO);
frame:SetPoint("RIGHT", "ConROWindow", "LEFT", -5, 0);
frame:SetSize(ConRO.db.profile.flashIconSize * .25, ConRO.db.profile.flashIconSize * .25);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('5');
if ConRO.db.profile.enableInterruptWindow == true and ConRO.db.profile._Unlock_ConRO == true then
frame:Show();
else
frame:Hide();
end
local t = frame.texture;
if not t then
t = frame:CreateTexture("ARTWORK")
t:SetTexture('Interface\\AddOns\\ConRO\\images\\lightning-interrupt');
t:SetBlendMode('BLEND');
t:SetAlpha(ConRO.db.profile.transparencyWindow);
t:SetVertexColor(.1, .1, .1);
frame.texture = t;
end
t:SetAllPoints(frame)
end
function ConRO:PurgeWindowFrame()
local frame = CreateFrame("Frame", "ConROPurgeWindow", UIParent);
frame:SetMovable(true);
frame:SetClampedToScreen(true);
frame:RegisterForDrag("LeftButton");
frame:SetScript("OnEnter", TPWOnEnter);
frame:SetScript("OnLeave", TPWOnLeave);
frame:SetScript("OnDragStart", function(self)
if ConRO.db.profile._Unlock_ConRO then
frame:StartMoving()
end
end)
frame:SetScript("OnDragStop", frame.StopMovingOrSizing)
frame:EnableMouse(ConRO.db.profile._Unlock_ConRO);
frame:SetPoint("LEFT", "ConROWindow", "RIGHT", 5, 0);
frame:SetSize(ConRO.db.profile.flashIconSize * .25, ConRO.db.profile.flashIconSize * .25);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('5');
if ConRO.db.profile.enablePurgeWindow == true and ConRO.db.profile._Unlock_ConRO == true then
frame:Show();
else
frame:Hide();
end
local t = frame.texture;
if not t then
t = frame:CreateTexture("ARTWORK")
t:SetTexture('Interface\\AddOns\\ConRO\\images\\magiccircle-purge');
t:SetBlendMode('BLEND');
t:SetAlpha(ConRO.db.profile.transparencyWindow);
t:SetVertexColor(.1, .1, .1);
frame.texture = t;
end
t:SetAllPoints(frame)
end
function ConRO:FindKeybinding(id)
local keybind;
if self.Keybinds[id] ~= nil then
for k, button in pairs(self.Keybinds[id]) do
for i = 1, 12 do
if button == 'MultiBarBottomLeftButton' .. i then
button = 'MULTIACTIONBAR1BUTTON' .. i;
elseif button == 'MultiBarBottomRightButton' .. i then
button = 'MULTIACTIONBAR2BUTTON' .. i;
elseif button == 'MultiBarRightButton' .. i then
button = 'MULTIACTIONBAR3BUTTON' .. i;
elseif button == 'MultiBarLeftButton' .. i then
button = 'MULTIACTIONBAR4BUTTON' .. i;
end
keybind = GetBindingKey(button);
end
end
end
return keybind;
end
function ConRO:CreateDamageOverlay(parent, id)
local frame = tremove(self.DamageFramePool);
if not frame then
frame = CreateFrame('Frame', 'ConRO_DamageOverlay_' .. id, parent);
end
frame:SetParent(parent);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('20');
frame:SetPoint('CENTER', 0, 0);
frame:SetWidth(parent:GetWidth() * 1.6);
frame:SetHeight(parent:GetHeight() * 1.6);
frame:SetScale(ConRO.db.profile._Damage_Overlay_Size);
if ConRO.db.profile._Damage_Overlay_Alpha == true then
frame:SetAlpha(1);
else
frame:SetAlpha(0);
end
local t = frame.texture;
if not t then
t = frame:CreateTexture('GlowDamageOverlay', 'OVERLAY');
if ConRO.db.profile._Damage_Icon_Style == 1 then
t:SetTexture(ConRO.Textures.Skull);
elseif ConRO.db.profile._Damage_Icon_Style == 2 then
t:SetTexture(ConRO.Textures.Starburst);
elseif ConRO.db.profile._Damage_Icon_Style == 3 then
t:SetTexture(ConRO.Textures.Shield);
elseif ConRO.db.profile._Damage_Icon_Style == 4 then
t:SetTexture(ConRO.Textures.Rage);
elseif ConRO.db.profile._Damage_Icon_Style == 5 then
t:SetTexture(ConRO.Textures.Lightning);
elseif ConRO.db.profile._Damage_Icon_Style == 6 then
t:SetTexture(ConRO.Textures.MagicCircle);
elseif ConRO.db.profile._Damage_Icon_Style == 7 then
t:SetTexture(ConRO.Textures.Plus);
elseif ConRO.db.profile._Damage_Icon_Style == 8 then
t:SetTexture(ConRO.Textures.DoubleArrow);
elseif ConRO.db.profile._Damage_Icon_Style == 9 then
t:SetTexture(ConRO.Textures.KozNicSquare);
elseif ConRO.db.profile._Damage_Icon_Style == 10 then
t:SetTexture(ConRO.Textures.Circle);
end
if ConRO.db.profile._Damage_Alpha_Mode == 1 then
t:SetBlendMode('BLEND');
elseif ConRO.db.profile._Damage_Alpha_Mode == 2 then
t:SetBlendMode('ADD');
elseif ConRO.db.profile._Damage_Alpha_Mode == 3 then
t:SetBlendMode('MOD');
elseif ConRO.db.profile._Damage_Alpha_Mode == 4 then
t:SetBlendMode('ALPHAKEY');
elseif ConRO.db.profile._Damage_Alpha_Mode == 5 then
t:SetBlendMode('DISABLE');
end
frame.texture = t;
end
t:SetAllPoints(frame);
local color = ConRO.db.profile._Damage_Overlay_Color;
if ConRO.db.profile._Damage_Overlay_Class_Color then
local _, _, classId = UnitClass('player');
color = ConRO.ClassRGB[classId];
end
t:SetVertexColor(color.r, color.g, color.b);
t:SetAlpha(color.a);
tinsert(self.DamageFrames, frame);
return frame;
end
function ConRO:CreateCoolDownOverlay(parent, id)
local frame = tremove(self.CoolDownFramePool);
if not frame then
frame = CreateFrame('Frame', 'ConRO_CoolDownOverlay_' .. id, parent);
end
frame:SetParent(parent);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('20')
frame:SetPoint('CENTER', 0, 0);
frame:SetWidth(parent:GetWidth() * 1.6);
frame:SetHeight(parent:GetHeight() * 1.6);
frame:SetScale(ConRO.db.profile._Cooldown_Overlay_Size)
if ConRO.db.profile._Damage_Overlay_Alpha == true then
frame:SetAlpha(1);
else
frame:SetAlpha(0);
end
local t = frame.texture;
if not t then
t = frame:CreateTexture('AbilityBurstOverlay', 'OVERLAY');
if ConRO.db.profile._Cooldown_Icon_Style == 1 then
t:SetTexture(ConRO.Textures.Skull);
elseif ConRO.db.profile._Cooldown_Icon_Style == 2 then
t:SetTexture(ConRO.Textures.Starburst);
elseif ConRO.db.profile._Cooldown_Icon_Style == 3 then
t:SetTexture(ConRO.Textures.Shield);
elseif ConRO.db.profile._Cooldown_Icon_Style == 4 then
t:SetTexture(ConRO.Textures.Rage);
elseif ConRO.db.profile._Cooldown_Icon_Style == 5 then
t:SetTexture(ConRO.Textures.Lightning);
elseif ConRO.db.profile._Cooldown_Icon_Style == 6 then
t:SetTexture(ConRO.Textures.MagicCircle);
elseif ConRO.db.profile._Cooldown_Icon_Style == 7 then
t:SetTexture(ConRO.Textures.Plus);
elseif ConRO.db.profile._Cooldown_Icon_Style == 8 then
t:SetTexture(ConRO.Textures.DoubleArrow);
elseif ConRO.db.profile._Cooldown_Icon_Style == 9 then
t:SetTexture(ConRO.Textures.KozNicSquare);
elseif ConRO.db.profile._Cooldown_Icon_Style == 10 then
t:SetTexture(ConRO.Textures.Circle);
end
if ConRO.db.profile._Cooldown_Alpha_Mode == 1 then
t:SetBlendMode('BLEND');
elseif ConRO.db.profile._Cooldown_Alpha_Mode == 2 then
t:SetBlendMode('ADD');
elseif ConRO.db.profile._Cooldown_Alpha_Mode == 3 then
t:SetBlendMode('MOD');
elseif ConRO.db.profile._Cooldown_Alpha_Mode == 4 then
t:SetBlendMode('ALPHAKEY');
elseif ConRO.db.profile._Cooldown_Alpha_Mode == 5 then
t:SetBlendMode('DISABLE');
end
frame.texture = t;
end
t:SetAllPoints(frame);
local color = ConRO.db.profile._Cooldown_Overlay_Color;
t:SetVertexColor(color.r, color.g, color.b);
t:SetAlpha(color.a);
tinsert(self.CoolDownFrames, frame);
return frame;
end
function ConRO:CreateDefenseOverlay(parent, id)
local frame = tremove(self.DefenseFramePool);
if not frame then
frame = CreateFrame('Frame', 'ConRO_DefenseOverlay_' .. id, parent);
end
frame:SetParent(parent);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('20')
frame:SetPoint('CENTER', 0, 0);
frame:SetWidth(parent:GetWidth() * 1.6);
frame:SetHeight(parent:GetHeight() * 1.6);
frame:SetScale(ConRO.db.profile._Defense_Overlay_Size)
if ConRO.db.profile._Defense_Overlay_Alpha == true then
frame:SetAlpha(1);
else
frame:SetAlpha(0);
end
local t = frame.texture;
if not t then
t = frame:CreateTexture('GlowDefenseOverlay', 'OVERLAY');
if ConRO.db.profile._Defense_Icon_Style == 1 then
t:SetTexture(ConRO.Textures.Skull);
elseif ConRO.db.profile._Defense_Icon_Style == 2 then
t:SetTexture(ConRO.Textures.Starburst);
elseif ConRO.db.profile._Defense_Icon_Style == 3 then
t:SetTexture(ConRO.Textures.Shield);
elseif ConRO.db.profile._Defense_Icon_Style == 4 then
t:SetTexture(ConRO.Textures.Rage);
elseif ConRO.db.profile._Defense_Icon_Style == 5 then
t:SetTexture(ConRO.Textures.Lightning);
elseif ConRO.db.profile._Defense_Icon_Style == 6 then
t:SetTexture(ConRO.Textures.MagicCircle);
elseif ConRO.db.profile._Defense_Icon_Style == 7 then
t:SetTexture(ConRO.Textures.Plus);
elseif ConRO.db.profile._Defense_Icon_Style == 8 then
t:SetTexture(ConRO.Textures.DoubleArrow);
elseif ConRO.db.profile._Defense_Icon_Style == 9 then
t:SetTexture(ConRO.Textures.KozNicSquare);
elseif ConRO.db.profile._Defense_Icon_Style == 10 then
t:SetTexture(ConRO.Textures.Circle);
end
if ConRO.db.profile._Defense_Alpha_Mode == 1 then
t:SetBlendMode('BLEND');
elseif ConRO.db.profile._Defense_Alpha_Mode == 2 then
t:SetBlendMode('ADD');
elseif ConRO.db.profile._Defense_Alpha_Mode == 3 then
t:SetBlendMode('MOD');
elseif ConRO.db.profile._Defense_Alpha_Mode == 4 then
t:SetBlendMode('ALPHAKEY');
elseif ConRO.db.profile._Defense_Alpha_Mode == 5 then
t:SetBlendMode('DISABLE');
end
frame.texture = t;
end
t:SetAllPoints(frame);
local color = ConRO.db.profile._Defense_Overlay_Color;
t:SetVertexColor(color.r, color.g, color.b);
t:SetAlpha(color.a);
tinsert(self.DefenseFrames, frame);
return frame;
end
function ConRO:CreateTauntOverlay(parent, id)
local frame = tremove(self.TauntFramePool);
if not frame then
frame = CreateFrame('Frame', 'ConRO_TauntOverlay_' .. id, parent);
end
frame:SetParent(parent);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('20')
frame:SetPoint('CENTER', 0, 0);
frame:SetWidth(parent:GetWidth() * 1.5);
frame:SetHeight(parent:GetHeight() * 1.5);
frame:SetScale(ConRO.db.profile._Taunt_Overlay_Size)
if ConRO.db.profile._Defense_Overlay_Alpha == true then
frame:SetAlpha(1);
else
frame:SetAlpha(0);
end
local t = frame.texture;
if not t then
t = frame:CreateTexture('AbilityTauntOverlay', 'OVERLAY');
if ConRO.db.profile._Taunt_Icon_Style == 1 then
t:SetTexture(ConRO.Textures.Skull);
elseif ConRO.db.profile._Taunt_Icon_Style == 2 then
t:SetTexture(ConRO.Textures.Starburst);
elseif ConRO.db.profile._Taunt_Icon_Style == 3 then
t:SetTexture(ConRO.Textures.Shield);
elseif ConRO.db.profile._Taunt_Icon_Style == 4 then
t:SetTexture(ConRO.Textures.Rage);
elseif ConRO.db.profile._Taunt_Icon_Style == 5 then
t:SetTexture(ConRO.Textures.Lightning);
elseif ConRO.db.profile._Taunt_Icon_Style == 6 then
t:SetTexture(ConRO.Textures.MagicCircle);
elseif ConRO.db.profile._Taunt_Icon_Style == 7 then
t:SetTexture(ConRO.Textures.Plus);
elseif ConRO.db.profile._Taunt_Icon_Style == 8 then
t:SetTexture(ConRO.Textures.DoubleArrow);
elseif ConRO.db.profile._Taunt_Icon_Style == 9 then
t:SetTexture(ConRO.Textures.KozNicSquare);
elseif ConRO.db.profile._Taunt_Icon_Style == 10 then
t:SetTexture(ConRO.Textures.Circle);
end
if ConRO.db.profile._Taunt_Alpha_Mode == 1 then
t:SetBlendMode('BLEND');
elseif ConRO.db.profile._Taunt_Alpha_Mode == 2 then
t:SetBlendMode('ADD');
elseif ConRO.db.profile._Taunt_Alpha_Mode == 3 then
t:SetBlendMode('MOD');
elseif ConRO.db.profile._Taunt_Alpha_Mode == 4 then
t:SetBlendMode('ALPHAKEY');
elseif ConRO.db.profile._Taunt_Alpha_Mode == 5 then
t:SetBlendMode('DISABLE');
end
frame.texture = t;
end
t:SetAllPoints(frame);
local color = ConRO.db.profile._Taunt_Overlay_Color;
t:SetVertexColor(color.r, color.g, color.b);
t:SetAlpha(color.a);
tinsert(self.TauntFrames, frame);
return frame;
end
function ConRO:CreateInterruptOverlay(parent, id)
local frame = tremove(self.InterruptFramePool);
if not frame then
frame = CreateFrame('Frame', 'ConRO_InterruptOverlay_' .. id, parent);
end
frame:SetParent(parent);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('20')
frame:SetPoint('CENTER', 0, 0);
frame:SetWidth(parent:GetWidth() * 1.8);
frame:SetHeight(parent:GetHeight() * 1.8);
frame:SetScale(ConRO.db.profile._Interrupt_Overlay_Size)
if ConRO.db.profile._Notifier_Overlay_Alpha == true then
frame:SetAlpha(1);
else
frame:SetAlpha(0);
end
local t = frame.texture;
if not t then
t = frame:CreateTexture('AbilityInterruptOverlay', 'OVERLAY');
if ConRO.db.profile._Interrupt_Icon_Style == 1 then
t:SetTexture(ConRO.Textures.Skull);
elseif ConRO.db.profile._Interrupt_Icon_Style == 2 then
t:SetTexture(ConRO.Textures.Starburst);
elseif ConRO.db.profile._Interrupt_Icon_Style == 3 then
t:SetTexture(ConRO.Textures.Shield);
elseif ConRO.db.profile._Interrupt_Icon_Style == 4 then
t:SetTexture(ConRO.Textures.Rage);
elseif ConRO.db.profile._Interrupt_Icon_Style == 5 then
t:SetTexture(ConRO.Textures.Lightning);
elseif ConRO.db.profile._Interrupt_Icon_Style == 6 then
t:SetTexture(ConRO.Textures.MagicCircle);
elseif ConRO.db.profile._Interrupt_Icon_Style == 7 then
t:SetTexture(ConRO.Textures.Plus);
elseif ConRO.db.profile._Interrupt_Icon_Style == 8 then
t:SetTexture(ConRO.Textures.DoubleArrow);
elseif ConRO.db.profile._Interrupt_Icon_Style == 9 then
t:SetTexture(ConRO.Textures.KozNicSquare);
elseif ConRO.db.profile._Interrupt_Icon_Style == 10 then
t:SetTexture(ConRO.Textures.Circle);
end
if ConRO.db.profile._Interrupt_Alpha_Mode == 1 then
t:SetBlendMode('BLEND');
elseif ConRO.db.profile._Interrupt_Alpha_Mode == 2 then
t:SetBlendMode('ADD');
elseif ConRO.db.profile._Interrupt_Alpha_Mode == 3 then
t:SetBlendMode('MOD');
elseif ConRO.db.profile._Interrupt_Alpha_Mode == 4 then
t:SetBlendMode('ALPHAKEY');
elseif ConRO.db.profile._Interrupt_Alpha_Mode == 5 then
t:SetBlendMode('DISABLE');
end
frame.texture = t;
end
t:SetAllPoints(frame);
local color = ConRO.db.profile._Interrupt_Overlay_Color;
t:SetVertexColor(color.r, color.g, color.b);
t:SetAlpha(color.a);
tinsert(self.InterruptFrames, frame);
return frame;
end
function ConRO:CreatePurgableOverlay(parent, id)
local frame = tremove(self.PurgableFramePool);
if not frame then
frame = CreateFrame('Frame', 'ConRO_PurgableOverlay_' .. id, parent);
end
frame:SetParent(parent);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('20')
frame:SetPoint('CENTER', 0, 0);
frame:SetWidth(parent:GetWidth() * 2);
frame:SetHeight(parent:GetHeight() * 2);
frame:SetScale(ConRO.db.profile._Purge_Overlay_Size)
if ConRO.db.profile._Notifier_Overlay_Alpha == true then
frame:SetAlpha(1);
else
frame:SetAlpha(0);
end
local t = frame.texture;
if not t then
t = frame:CreateTexture('AbilityPurgeOverlay', 'OVERLAY');
if ConRO.db.profile._Purge_Icon_Style == 1 then
t:SetTexture(ConRO.Textures.Skull);
elseif ConRO.db.profile._Purge_Icon_Style == 2 then
t:SetTexture(ConRO.Textures.Starburst);
elseif ConRO.db.profile._Purge_Icon_Style == 3 then
t:SetTexture(ConRO.Textures.Shield);
elseif ConRO.db.profile._Purge_Icon_Style == 4 then
t:SetTexture(ConRO.Textures.Rage);
elseif ConRO.db.profile._Purge_Icon_Style == 5 then
t:SetTexture(ConRO.Textures.Lightning);
elseif ConRO.db.profile._Purge_Icon_Style == 6 then
t:SetTexture(ConRO.Textures.MagicCircle);
elseif ConRO.db.profile._Purge_Icon_Style == 7 then
t:SetTexture(ConRO.Textures.Plus);
elseif ConRO.db.profile._Purge_Icon_Style == 8 then
t:SetTexture(ConRO.Textures.DoubleArrow);
elseif ConRO.db.profile._Purge_Icon_Style == 9 then
t:SetTexture(ConRO.Textures.KozNicSquare);
elseif ConRO.db.profile._Purge_Icon_Style == 10 then
t:SetTexture(ConRO.Textures.Circle);
end
if ConRO.db.profile._Purge_Alpha_Mode == 1 then
t:SetBlendMode('BLEND');
elseif ConRO.db.profile._Purge_Alpha_Mode == 2 then
t:SetBlendMode('ADD');
elseif ConRO.db.profile._Purge_Alpha_Mode == 3 then
t:SetBlendMode('MOD');
elseif ConRO.db.profile._Purge_Alpha_Mode == 4 then
t:SetBlendMode('ALPHAKEY');
elseif ConRO.db.profile._Purge_Alpha_Mode == 5 then
t:SetBlendMode('DISABLE');
end
frame.texture = t;
end
t:SetAllPoints(frame);
local color = ConRO.db.profile._Purge_Overlay_Color;
t:SetVertexColor(color.r, color.g, color.b);
t:SetAlpha(color.a);
tinsert(self.PurgableFrames, frame);
return frame;
end
function ConRO:CreateRaidBuffsOverlay(parent, id)
local frame = tremove(self.RaidBuffsFramePool);
if not frame then
frame = CreateFrame('Frame', 'ConRO_RaidBuffsOverlay_' .. id, parent);
end
frame:SetParent(parent);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('20')
frame:SetPoint('CENTER', 0, 0);
frame:SetWidth(parent:GetWidth() * 1.5);
frame:SetHeight(parent:GetHeight() * 1.65);
frame:SetScale(ConRO.db.profile._RaidBuffs_Overlay_Size)
if ConRO.db.profile._Notifier_Overlay_Alpha == true then
frame:SetAlpha(1);
else
frame:SetAlpha(0);
end
local t = frame.texture;
if not t then
t = frame:CreateTexture('AbilityRaidBuffsOverlay', 'OVERLAY');
if ConRO.db.profile._RaidBuffs_Icon_Style == 1 then
t:SetTexture(ConRO.Textures.Skull);
elseif ConRO.db.profile._RaidBuffs_Icon_Style == 2 then
t:SetTexture(ConRO.Textures.Starburst);
elseif ConRO.db.profile._RaidBuffs_Icon_Style == 3 then
t:SetTexture(ConRO.Textures.Shield);
elseif ConRO.db.profile._RaidBuffs_Icon_Style == 4 then
t:SetTexture(ConRO.Textures.Rage);
elseif ConRO.db.profile._RaidBuffs_Icon_Style == 5 then
t:SetTexture(ConRO.Textures.Lightning);
elseif ConRO.db.profile._RaidBuffs_Icon_Style == 6 then
t:SetTexture(ConRO.Textures.MagicCircle);
elseif ConRO.db.profile._RaidBuffs_Icon_Style == 7 then
t:SetTexture(ConRO.Textures.Plus);
elseif ConRO.db.profile._RaidBuffs_Icon_Style == 8 then
t:SetTexture(ConRO.Textures.DoubleArrow);
elseif ConRO.db.profile._RaidBuffs_Icon_Style == 9 then
t:SetTexture(ConRO.Textures.KozNicSquare);
elseif ConRO.db.profile._RaidBuffs_Icon_Style == 10 then
t:SetTexture(ConRO.Textures.Circle);
end
if ConRO.db.profile._RaidBuffs_Alpha_Mode == 1 then
t:SetBlendMode('BLEND');
elseif ConRO.db.profile._RaidBuffs_Alpha_Mode == 2 then
t:SetBlendMode('ADD');
elseif ConRO.db.profile._RaidBuffs_Alpha_Mode == 3 then
t:SetBlendMode('MOD');
elseif ConRO.db.profile._RaidBuffs_Alpha_Mode == 4 then
t:SetBlendMode('ALPHAKEY');
elseif ConRO.db.profile._RaidBuffs_Alpha_Mode == 5 then
t:SetBlendMode('DISABLE');
end
frame.texture = t;
end
t:SetAllPoints(frame);
local color = ConRO.db.profile._RaidBuffs_Overlay_Color;
t:SetVertexColor(color.r, color.g, color.b);
t:SetAlpha(color.a);
tinsert(self.RaidBuffsFrames, frame);
return frame;
end
function ConRO:CreateMovementOverlay(parent, id)
local frame = tremove(self.MovementFramePool);
if not frame then
frame = CreateFrame('Frame', 'ConRO_MovementOverlay_' .. id, parent);
end
frame:SetParent(parent);
frame:SetFrameStrata('MEDIUM');
frame:SetFrameLevel('20')
frame:SetPoint('CENTER', 0, -3);
frame:SetWidth(parent:GetWidth() * 1.65);
frame:SetHeight(parent:GetHeight() * 1.85);
frame:SetScale(ConRO.db.profile._Movement_Overlay_Size)
if ConRO.db.profile._Notifier_Overlay_Alpha == true then
frame:SetAlpha(1);
else
frame:SetAlpha(0);
end
local t = frame.texture;
if not t then
t = frame:CreateTexture('AbilityMovementOverlay', 'OVERLAY');
if ConRO.db.profile._Movement_Icon_Style == 1 then
t:SetTexture(ConRO.Textures.Skull);
elseif ConRO.db.profile._Movement_Icon_Style == 2 then
t:SetTexture(ConRO.Textures.Starburst);
elseif ConRO.db.profile._Movement_Icon_Style == 3 then
t:SetTexture(ConRO.Textures.Shield);
elseif ConRO.db.profile._Movement_Icon_Style == 4 then
t:SetTexture(ConRO.Textures.Rage);
elseif ConRO.db.profile._Movement_Icon_Style == 5 then
t:SetTexture(ConRO.Textures.Lightning);
elseif ConRO.db.profile._Movement_Icon_Style == 6 then
t:SetTexture(ConRO.Textures.MagicCircle);
elseif ConRO.db.profile._Movement_Icon_Style == 7 then
t:SetTexture(ConRO.Textures.Plus);
elseif ConRO.db.profile._Movement_Icon_Style == 8 then
t:SetTexture(ConRO.Textures.DoubleArrow);
elseif ConRO.db.profile._Movement_Icon_Style == 9 then
t:SetTexture(ConRO.Textures.KozNicSquare);
elseif ConRO.db.profile._Movement_Icon_Style == 10 then
t:SetTexture(ConRO.Textures.Circle);
end
if ConRO.db.profile._Movement_Alpha_Mode == 1 then
t:SetBlendMode('BLEND');
elseif ConRO.db.profile._Movement_Alpha_Mode == 2 then
t:SetBlendMode('ADD');
elseif ConRO.db.profile._Movement_Alpha_Mode == 3 then
t:SetBlendMode('MOD');
elseif ConRO.db.profile._Movement_Alpha_Mode == 4 then
t:SetBlendMode('ALPHAKEY');
elseif ConRO.db.profile._Movement_Alpha_Mode == 5 then
t:SetBlendMode('DISABLE');
end
frame.texture = t;
end
t:SetAllPoints(frame);
local color = ConRO.db.profile._Movement_Overlay_Color;
t:SetVertexColor(color.r, color.g, color.b);
t:SetAlpha(color.a);
tinsert(self.MovementFrames, frame);
return frame;
end
function ConRO:DestroyDamageOverlays()
local frame;
for key, frame in pairs(self.DamageFrames) do
frame:GetParent().ConRODamageOverlays = nil;
frame:ClearAllPoints();
frame:Hide();
frame:SetParent(UIParent);
frame.width = nil;
frame.height = nil;
frame.alpha = nil;
end
for key, frame in pairs(self.DamageFrames) do
tinsert(self.DamageFramePool, frame);
self.DamageFrames[key] = nil;
end
end
function ConRO:DestroyInterruptOverlays()
local frame;
for key, frame in pairs(self.InterruptFrames) do
frame:GetParent().ConROInterruptOverlays = nil;
frame:ClearAllPoints();
frame:Hide();
frame:SetParent(UIParent);
frame.width = nil;
frame.height = nil;
frame.alpha = nil;
end
for key, frame in pairs(self.InterruptFrames) do
tinsert(self.InterruptFramePool, frame);
self.InterruptFrames[key] = nil;
end
end
function ConRO:DestroyPurgableOverlays()
local frame;
for key, frame in pairs(self.PurgableFrames) do
frame:GetParent().ConROPurgableOverlays = nil;
frame:ClearAllPoints();
frame:Hide();
frame:SetParent(UIParent);
frame.width = nil;
frame.height = nil;
frame.alpha = nil;
end
for key, frame in pairs(self.PurgableFrames) do
tinsert(self.PurgableFramePool, frame);
self.PurgableFrames[key] = nil;
end
end
function ConRO:DestroyTauntOverlays()
local frame;
for key, frame in pairs(self.TauntFrames) do
frame:GetParent().ConROTauntOverlays = nil;
frame:ClearAllPoints();
frame:Hide();
frame:SetParent(UIParent);
frame.width = nil;
frame.height = nil;
frame.alpha = nil;
end
for key, frame in pairs(self.TauntFrames) do
tinsert(self.TauntFramePool, frame);
self.TauntFrames[key] = nil;
end
end
function ConRO:DestroyRaidBuffsOverlays()
local frame;
for key, frame in pairs(self.RaidBuffsFrames) do
frame:GetParent().ConRORaidBuffsOverlays = nil;
frame:ClearAllPoints();
frame:Hide();
frame:SetParent(UIParent);
frame.width = nil;
frame.height = nil;
frame.alpha = nil;
end
for key, frame in pairs(self.RaidBuffsFrames) do
tinsert(self.RaidBuffsFramePool, frame);
self.RaidBuffsFrames[key] = nil;
end
end
function ConRO:DestroyMovementOverlays()
local frame;
for key, frame in pairs(self.MovementFrames) do
frame:GetParent().ConROMovementOverlays = nil;
frame:ClearAllPoints();
frame:Hide();
frame:SetParent(UIParent);
frame.width = nil;
frame.height = nil;
frame.alpha = nil;
end
for key, frame in pairs(self.MovementFrames) do
tinsert(self.MovementFramePool, frame);
self.MovementFrames[key] = nil;
end
end
function ConRO:DestroyCoolDownOverlays()
local frame;
for key, frame in pairs(self.CoolDownFrames) do
frame:GetParent().ConROCoolDownOverlays = nil;
frame:ClearAllPoints();
frame:Hide();
frame:SetParent(UIParent);
frame.width = nil;
frame.height = nil;
frame.alpha = nil;
end
for key, frame in pairs(self.CoolDownFrames) do
tinsert(self.CoolDownFramePool, frame);
self.CoolDownFrames[key] = nil;
end
end
function ConRO:DestroyDefenseOverlays()
local frame;
for key, frame in pairs(self.DefenseFrames) do
frame:GetParent().ConRODefenseOverlays = nil;
frame:ClearAllPoints();
frame:Hide();
frame:SetParent(UIParent);
frame.width = nil;
frame.height = nil;
frame.alpha = nil;
end
for key, frame in pairs(self.DefenseFrames) do
tinsert(self.DefenseFramePool, frame);
self.DefenseFrames[key] = nil;
end
end
function ConRO:UpdateButtonGlow()
local LAB;
local LBG;
local origShow;
local noFunction = function() end;
if IsAddOnLoaded('ElvUI') then
LAB = LibStub:GetLibrary('LibActionButton-1.0-ElvUI');
LBG = LibStub:GetLibrary('LibButtonGlow-1.0');
origShow = LBG.ShowOverlayGlow;
elseif IsAddOnLoaded('Bartender4') then
LAB = LibStub:GetLibrary('LibActionButton-1.0');
end
if self.db.profile.disableButtonGlow then
ActionBarActionEventsFrame:UnregisterEvent('SPELL_ACTIVATION_OVERLAY_GLOW_SHOW');
if LAB then
LAB.eventFrame:UnregisterEvent('SPELL_ACTIVATION_OVERLAY_GLOW_SHOW');
end
if LBG then
LBG.ShowOverlayGlow = noFunction;
end
else
ActionBarActionEventsFrame:RegisterEvent('SPELL_ACTIVATION_OVERLAY_GLOW_SHOW');
if LAB then
LAB.eventFrame:RegisterEvent('SPELL_ACTIVATION_OVERLAY_GLOW_SHOW');
end
if LBG then
LBG.ShowOverlayGlow = origShow;
end
end
end
function ConRO:DamageGlow(button, id)
if button.ConRODamageOverlays and button.ConRODamageOverlays[id] then
button.ConRODamageOverlays[id]:Show();
else
if not button.ConRODamageOverlays then
button.ConRODamageOverlays = {};
end
button.ConRODamageOverlays[id] = self:CreateDamageOverlay(button, id);
button.ConRODamageOverlays[id]:Show();
end
end
function ConRO:DefenseGlow(button, id)
if button.ConRODefenseOverlays and button.ConRODefenseOverlays[id] then
button.ConRODefenseOverlays[id]:Show();
else
if not button.ConRODefenseOverlays then
button.ConRODefenseOverlays = {};
end
button.ConRODefenseOverlays[id] = self:CreateDefenseOverlay(button, id);
button.ConRODefenseOverlays[id]:Show();
end
end
function ConRO:InterruptGlow(button, id)
if button.ConROInterruptOverlays and button.ConROInterruptOverlays[id] then
button.ConROInterruptOverlays[id]:Show();
else
if not button.ConROInterruptOverlays then
button.ConROInterruptOverlays = {};
end
button.ConROInterruptOverlays[id] = self:CreateInterruptOverlay(button, id);
button.ConROInterruptOverlays[id]:Show();
end
end
function ConRO:PurgableGlow(button, id)
if button.ConROPurgableOverlays and button.ConROPurgableOverlays[id] then
button.ConROPurgableOverlays[id]:Show();
else
if not button.ConROPurgableOverlays then
button.ConROPurgableOverlays = {};
end
button.ConROPurgableOverlays[id] = self:CreatePurgableOverlay(button, id);
button.ConROPurgableOverlays[id]:Show();
end
end
function ConRO:TauntGlow(button, id)
if button.ConROTauntOverlays and button.ConROTauntOverlays[id] then
button.ConROTauntOverlays[id]:Show();
else
if not button.ConROTauntOverlays then
button.ConROTauntOverlays = {};
end
button.ConROTauntOverlays[id] = self:CreateTauntOverlay(button, id);
button.ConROTauntOverlays[id]:Show();
end
end
function ConRO:RaidBuffsGlow(button, id)
if button.ConRORaidBuffsOverlays and button.ConRORaidBuffsOverlays[id] then
button.ConRORaidBuffsOverlays[id]:Show();
else
if not button.ConRORaidBuffsOverlays then
button.ConRORaidBuffsOverlays = {};
end
button.ConRORaidBuffsOverlays[id] = self:CreateRaidBuffsOverlay(button, id);
button.ConRORaidBuffsOverlays[id]:Show();
end
end
function ConRO:MovementGlow(button, id)
if button.ConROMovementOverlays and button.ConROMovementOverlays[id] then
button.ConROMovementOverlays[id]:Show();
else
if not button.ConROMovementOverlays then
button.ConROMovementOverlays = {};
end
button.ConROMovementOverlays[id] = self:CreateMovementOverlay(button, id);
button.ConROMovementOverlays[id]:Show();
end
end
function ConRO:CoolDownGlow(button, id)
if button.ConROCoolDownOverlays and button.ConROCoolDownOverlays[id] then
button.ConROCoolDownOverlays[id]:Show();
else
if not button.ConROCoolDownOverlays then
button.ConROCoolDownOverlays = {};
end
button.ConROCoolDownOverlays[id] = self:CreateCoolDownOverlay(button, id);
button.ConROCoolDownOverlays[id]:Show();
end
end
function ConRO:HideDamageGlow(button, id)
if button.ConRODamageOverlays and button.ConRODamageOverlays[id] then
button.ConRODamageOverlays[id]:Hide();
end
end
function ConRO:HideDefenseGlow(button, id)
if button.ConRODefenseOverlays and button.ConRODefenseOverlays[id] then
button.ConRODefenseOverlays[id]:Hide();
end
end
function ConRO:HideCoolDownGlow(button, id)
if button.ConROCoolDownOverlays and button.ConROCoolDownOverlays[id] then
button.ConROCoolDownOverlays[id]:Hide();
end
end
function ConRO:HideInterruptGlow(button, id)
if button.ConROInterruptOverlays and button.ConROInterruptOverlays[id] then
button.ConROInterruptOverlays[id]:Hide();
end
end
function ConRO:HidePurgableGlow(button, id)
if button.ConROPurgableOverlays and button.ConROPurgableOverlays[id] then
button.ConROPurgableOverlays[id]:Hide();
end
end
function ConRO:HideTauntGlow(button, id)
if button.ConROTauntOverlays and button.ConROTauntOverlays[id] then
button.ConROTauntOverlays[id]:Hide();
end
end
function ConRO:HideRaidBuffsGlow(button, id)
if button.ConRORaidBuffsOverlays and button.ConRORaidBuffsOverlays[id] then
button.ConRORaidBuffsOverlays[id]:Hide();
end
end
function ConRO:HideMovementGlow(button, id)
if button.ConROMovementOverlays and button.ConROMovementOverlays[id] then
button.ConROMovementOverlays[id]:Hide();
end
end
function ConRO:UpdateRotation()
self = ConRO;
self:FetchBlizzard();
if IsAddOnLoaded('Bartender4') then
self:FetchBartender4();
end
if IsAddOnLoaded('ButtonForge') then
self:FetchButtonForge();
end
if IsAddOnLoaded('ElvUI') then
self:FetchElvUI();
end
if IsAddOnLoaded('Dominos') then
self:FetchDominos();
end
if IsAddOnLoaded('DiabolicUI') then
self:FetchDiabolic();
end
if IsAddOnLoaded('AzeriteUI') then
self:FetchAzeriteUI();
end
if IsAddOnLoaded('ls_UI') then
self:FetchLSUI();
end
end
function ConRO:AddButton(spellID, button, hotkey)
if spellID then
if self.Spells[spellID] == nil then
self.Spells[spellID] = {};
end
tinsert(self.Spells[spellID], button);
if self.Keybinds[spellID] == nil then
self.Keybinds[spellID] = {};
end
tinsert(self.Keybinds[spellID], hotkey);
end
end
function ConRO:AddStandardButton(button, hotkey)
local type = button:GetAttribute('type');
if type then
local actionType = button:GetAttribute(type);
local id;
local spellId;
if type == 'action' then
local slot = button:GetAttribute('action');
if not slot or slot == 0 then
slot = button:GetPagedID();
end
if not slot or slot == 0 then
slot = button:CalculateAction();
end
if HasAction(slot) then
type, id = GetActionInfo(slot);
else
return;
end
end
if type == 'macro' then
spellId = GetMacroSpell(id);
if not spellId then
return;
end
elseif type == 'item' then
spellId = id;
elseif type == 'spell' then
spellId = select(7, GetSpellInfo(id));
end
self:AddButton(spellId, button, hotkey);
end
end
function ConRO:DefAddButton(spellID, button, hotkey)
if spellID then
if self.DefSpells[spellID] == nil then
self.DefSpells[spellID] = {};
end
tinsert(self.DefSpells[spellID], button);
if self.Keybinds[spellID] == nil then
self.Keybinds[spellID] = {};
end
tinsert(self.Keybinds[spellID], hotkey);
end
end
function ConRO:DefAddStandardButton(button, hotkey)
local type = button:GetAttribute('type');
if type then
local actionType = button:GetAttribute(type);
local id;
local spellId;
if type == 'action' then
local slot = button:GetAttribute('action');
if not slot or slot == 0 then
slot = button:GetPagedID();
end
if not slot or slot == 0 then
slot = button:CalculateAction();
end
if HasAction(slot) then
type, id = GetActionInfo(slot);
else
return;
end
end
if type == 'macro' then
spellId = GetMacroSpell(id);
if not spellId then
return;
end
elseif type == 'item' then
spellId = id;
elseif type == 'spell' then
spellId = select(7, GetSpellInfo(id));
end
self:DefAddButton(spellId, button, hotkey);
end
end
function ConRO:Fetch()
self = ConRO;
if self.rotationEnabled then
self:DisableRotationTimer();
end
self.Spell = nil;
self:GlowClear();
self.Spells = {};
self.Keybinds = {};
self.Flags = {};
self.SpellsGlowing = {};
self:FetchBlizzard();
if IsAddOnLoaded('Bartender4') then
self:FetchBartender4();
end
if IsAddOnLoaded('ButtonForge') then
self:FetchButtonForge();
end
if IsAddOnLoaded('ElvUI') then
self:FetchElvUI();
end
if IsAddOnLoaded('Dominos') then
self:FetchDominos();
end
if IsAddOnLoaded('DiabolicUI') then
self:FetchDiabolic();
end
if IsAddOnLoaded('AzeriteUI') then
self:FetchAzeriteUI();
end
if IsAddOnLoaded('ls_UI') then
self:FetchLSUI();
end
if self.rotationEnabled then
self:EnableRotationTimer();
self:InvokeNextSpell();
end
end
function ConRO:FetchDef()
self = ConRO;
if self.defenseEnabled then
self:DisableDefenseTimer();
end
self.Def = nil;
self:GlowClearDef();
self.DefSpells = {};
self.Flags = {};
self.DefGlowing = {};
self:DefFetchBlizzard();
if IsAddOnLoaded('Bartender4') then
self:DefFetchBartender4();
end
if IsAddOnLoaded('ButtonForge') then
self:DefFetchButtonForge();
end
if IsAddOnLoaded('ElvUI') then
self:DefFetchElvUI();
end
if IsAddOnLoaded('Dominos') then
self:DefFetchDominos();
end
if IsAddOnLoaded('DiabolicUI') then
self:DefFetchDiabolic();
end
if IsAddOnLoaded('AzeriteUI') then
self:DefFetchAzeriteUI();
end
if IsAddOnLoaded('ls_UI') then
self:DefFetchLSUI();
end
if self.defenseEnabled then
self:EnableDefenseTimer();
self:InvokeNextDef();
end
end
function ConRO:FetchBlizzard()
local ActionBarsBlizzard = {'Stance', 'PetAction', 'Action', 'MultiBarBottomLeft', 'MultiBarBottomRight', 'MultiBarRight', 'MultiBarLeft'};
for _, barName in pairs(ActionBarsBlizzard) do
if barName == 'Stance' then
local x = GetNumShapeshiftForms();
for i = 1, x do
local button = _G[barName .. 'Button' .. i];
local hotkey = 'SHAPESHIFTBUTTON' .. i;
local spellID = select(4, GetShapeshiftFormInfo(i));
self:AddButton(spellID, button, hotkey);
end
elseif barName == 'PetAction' then
for i = 1, 10 do
local button = _G[barName .. 'Button' .. i];
local hotkey = barName .. 'Button' .. i;
local spellID = select(7, GetPetActionInfo(i));
self:AddButton(spellID, button, hotkey);
end
else
for i = 1, 12 do
local button = _G[barName .. 'Button' .. i];
local hotkey = barName .. 'Button' .. i;
self:AddStandardButton(button, hotkey);
end
end
end
end
function ConRO:DefFetchBlizzard()
local ActionBarsBlizzard = {'Stance', 'PetAction', 'Action', 'MultiBarBottomLeft', 'MultiBarBottomRight', 'MultiBarRight', 'MultiBarLeft'};
for _, barName in pairs(ActionBarsBlizzard) do
if barName == 'Stance' then
local x = GetNumShapeshiftForms();
for i = 1, x do
local button = _G[barName .. 'Button' .. i];
local hotkey = 'SHAPESHIFTBUTTON' .. i;
local spellID = select(4, GetShapeshiftFormInfo(i));
self:DefAddButton(spellID, button, hotkey);
end
elseif barName == 'PetAction' then
for i = 1, 10 do
local button = _G[barName .. 'Button' .. i];
local hotkey = barName .. 'Button' .. i;
local spellID = select(7, GetPetActionInfo(i));
self:DefAddButton(spellID, button, hotkey);
end
else
for i = 1, 12 do
local button = _G[barName .. 'Button' .. i];
local hotkey = barName .. 'Button' .. i;
self:DefAddStandardButton(button, hotkey);
end
end
end
end
function ConRO:FetchDominos()
for i = 1, 60 do
local button = _G['DominosActionButton' .. i];
local hotkey = 'CLICK DominosActionButton' .. i .. ':HOTKEY';
if button then
self:AddStandardButton(button, hotkey);
end
end
end
function ConRO:DefFetchDominos()
for i = 1, 60 do
local button = _G['DominosActionButton' .. i];
local hotkey = 'CLICK DominosActionButton' .. i .. ':HOTKEY';
if button then
self:DefAddStandardButton(button, hotkey);
end
end
end
function ConRO:FetchButtonForge()
local i = 1;
while true do
local button = _G['ButtonForge' .. i];
if not button then
break;
end
i = i + 1;
local type = button:GetAttribute('type');
if type then
local actionType = button:GetAttribute(type);
local id;
local spellId;
if type == 'macro' then
local id = GetMacroSpell(actionType);
if id then
spellId = select(7, GetSpellInfo(id));
end
elseif type == 'item' then
actionName = GetItemInfo(actionType);
elseif type == 'spell' then
spellId = select(7, GetSpellInfo(actionType));
end
if spellId then
if self.Spells[spellId] == nil then
self.Spells[spellId] = {};
end
tinsert(self.Spells[spellId], button);
if self.Keybinds[spellId] == nil then
self.Keybinds[spellId] = {};
end
tinsert(self.Keybinds[spellId], 'ButtonForge' .. i);
end
end
end
end
function ConRO:DefFetchButtonForge()
local i = 1;
while true do
local button = _G['ButtonForge' .. i];
if not button then
break;
end
i = i + 1;
local type = button:GetAttribute('type');
if type then
local actionType = button:GetAttribute(type);
local id;
local spellId;
if type == 'macro' then
local id = GetMacroSpell(actionType);
if id then
spellId = select(7, GetSpellInfo(id));
end
elseif type == 'item' then
actionName = GetItemInfo(actionType);
elseif type == 'spell' then
spellId = select(7, GetSpellInfo(actionType));
end
if spellId then
if self.DefSpells[spellId] == nil then
self.DefSpells[spellId] = {};
end
tinsert(self.DefSpells[spellId], button);
if self.Keybinds[spellId] == nil then
self.Keybinds[spellId] = {};
end
tinsert(self.Keybinds[spellId], 'ButtonForge' .. i);
end
end
end
end
function ConRO:FetchElvUI()
for x = 10, 1, -1 do
for i = 1, 12 do
local button = _G['ElvUI_Bar' .. x .. 'Button' .. i];
if button == 'ElvUI_Bar1Button' .. i then
hotkey = 'ACTIONBUTTON' .. i;
elseif button == 'ElvUI_Bar2Button' .. i then
hotkey = 'MULTIACTIONBAR2BUTTON' .. i;
elseif button == 'ElvUI_Bar3Button' .. i then
hotkey = 'MULTIACTIONBAR1BUTTON' .. i;
elseif button == 'ElvUI_Bar4Button' .. i then
hotkey = 'MULTIACTIONBAR4BUTTON' .. i;
elseif button == 'ElvUI_Bar5Button' .. i then
hotkey = 'MULTIACTIONBAR3BUTTON' .. i;
elseif button == 'ElvUI_Bar6Button' .. i then
hotkey = 'ELVUIBAR6BUTTON' .. i;
elseif button == 'ElvUI_Bar7Button' .. i then
hotkey = 'EXTRABAR7BUTTON' .. i;
elseif button == 'ElvUI_Bar8Button' .. i then
hotkey = 'EXTRABAR8BUTTON' .. i;
elseif button == 'ElvUI_Bar9Button' .. i then
hotkey = 'EXTRABAR9BUTTON' .. i;
elseif button == 'ElvUI_Bar10Button' .. i then
hotkey = 'EXTRABAR10BUTTON' .. i;
end
if button then
self:AddStandardButton(button, hotkey);
end
end
end
end
function ConRO:DefFetchElvUI()
for x = 10, 1, -1 do
for i = 1, 12 do
local button = _G['ElvUI_Bar' .. x .. 'Button' .. i];
if button == 'ElvUI_Bar1Button' .. i then
hotkey = 'ACTIONBUTTON' .. i;
elseif button == 'ElvUI_Bar2Button' .. i then
hotkey = 'MULTIACTIONBAR2BUTTON' .. i;
elseif button == 'ElvUI_Bar3Button' .. i then
hotkey = 'MULTIACTIONBAR1BUTTON' .. i;
elseif button == 'ElvUI_Bar4Button' .. i then
hotkey = 'MULTIACTIONBAR4BUTTON' .. i;
elseif button == 'ElvUI_Bar5Button' .. i then
hotkey = 'MULTIACTIONBAR3BUTTON' .. i;
elseif button == 'ElvUI_Bar6Button' .. i then
hotkey = 'ELVUIBAR6BUTTON' .. i;
elseif button == 'ElvUI_Bar7Button' .. i then
hotkey = 'EXTRABAR7BUTTON' .. i;
elseif button == 'ElvUI_Bar8Button' .. i then
hotkey = 'EXTRABAR8BUTTON' .. i;
elseif button == 'ElvUI_Bar9Button' .. i then
hotkey = 'EXTRABAR9BUTTON' .. i;
elseif button == 'ElvUI_Bar10Button' .. i then
hotkey = 'EXTRABAR10BUTTON' .. i;
end
if button then
self:DefAddStandardButton(button, hotkey);
end
end
end
end
function ConRO:FetchBartender4()
local ActionBarsBartender4 = {'BT4','BT4Stance', 'BT4Pet'};
for _, barName in pairs(ActionBarsBartender4) do
if barName == 'BT4Stance' then
local x = GetNumShapeshiftForms();
for i = 1, x do
local button = _G[barName .. 'Button' .. i];
local hotkey = 'CLICK BT4StanceButton' .. i .. ':LeftButton';
local spellID = select(4, GetShapeshiftFormInfo(i));
self:AddButton(spellID, button, hotkey);
end
elseif barName == 'BT4Pet' then
for i = 1, 10 do
local button = _G[barName .. 'Button' .. i];
local hotkey = 'CLICK BT4PetButton' .. i .. ':LeftButton';
local spellID = select(7, GetPetActionInfo(i));
self:AddButton(spellID, button, hotkey);
end
else
for i = 1, 120 do
local button = _G[barName .. 'Button' .. i];
local hotkey = 'CLICK BT4Button' .. i .. ':LeftButton';
if button then
self:AddStandardButton(button, hotkey);
end
end
end
end
end
function ConRO:DefFetchBartender4()
local ActionBarsBartender4 = {'BT4','BT4Stance', 'BT4Pet'};
for _, barName in pairs(ActionBarsBartender4) do
if barName == 'BT4Stance' then
local x = GetNumShapeshiftForms();
for i = 1, x do
local button = _G[barName .. 'Button' .. i];
local hotkey = 'CLICK BT4StanceButton' .. i .. ':LeftButton';
local spellID = select(4, GetShapeshiftFormInfo(i));
self:DefAddButton(spellID, button, hotkey);
end
elseif barName == 'BT4Pet' then
for i = 1, 10 do
local button = _G[barName .. 'Button' .. i];
local hotkey = 'CLICK BT4PetButton' .. i .. ':LeftButton';
local spellID = select(7, GetPetActionInfo(i));
self:DefAddButton(spellID, button, hotkey);
end
else
for i = 1, 120 do
local button = _G[barName .. 'Button' .. i];
local hotkey = 'CLICK BT4Button' .. i .. ':LeftButton';
if button then
self:DefAddStandardButton(button, hotkey);
end
end
end
end
end
function ConRO:FetchDiabolic()
local ActionBarsDiabolic = {'EngineBar1', 'EngineBar2', 'EngineBar3', 'EngineBar4', 'EngineBar5'};
for _, barName in pairs(ActionBarsDiabolic) do
for i = 1, 12 do
local button = _G[barName .. 'Button' .. i];
if button then
self:AddStandardButton(button);
end
end
end
end
function ConRO:DefFetchDiabolic()
local ActionBarsDiabolic = {'EngineBar1', 'EngineBar2', 'EngineBar3', 'EngineBar4', 'EngineBar5'};
for _, barName in pairs(ActionBarsDiabolic) do
for i = 1, 12 do
local button = _G[barName .. 'Button' .. i];
if button then
self:DefAddStandardButton(button);
end
end
end
end
function ConRO:FetchAzeriteUI()
for i = 1, 24 do
local button = _G['GP_ActionButton' .. i];
if button then
self:AddStandardButton(button);
end
end
end
function ConRO:DefFetchAzeriteUI()
for i = 1, 24 do
local button = _G['GP_ActionButton' .. i];
if button then
self:DefAddStandardButton(button);
end
end
end
function ConRO:FetchLSUI()
local ActionBarsLSUI = {'LSStanceBar', 'LSPetBar', 'LSActionBar'};
for _, barName in pairs(ActionBarsLSUI) do
if barName == 'LSStanceBar' then
local x = GetNumShapeshiftForms();
for i = 1, x do
local button = _G[barName .. 'Button' .. i];
local hotkey = barName .. 'Button' .. i;
local spellID = select(4, GetShapeshiftFormInfo(i));
self:AddButton(spellID, button, hotkey);
end
elseif barName == 'LSPetBar' then
for i = 1, 10 do
local button = _G[barName .. 'Button' .. i];
local hotkey = barName .. 'Button' .. i;
local spellID = select(7, GetPetActionInfo(i));
self:AddButton(spellID, button, hotkey);
end
else
for x = 1, 5 do
for i = 1, 12 do
local button = _G[barName .. x .. 'Button' .. i];
local hotkey = barName .. x .. 'Button' .. i;
self:AddStandardButton(button, hotkey);
end
end
end
end
end
function ConRO:DefFetchLSUI()
local ActionBarsLSUI = {'LSStanceBar', 'LSPetBar', 'LSActionBar'};
for _, barName in pairs(ActionBarsLSUI) do
if barName == 'LSStanceBar' then
local x = GetNumShapeshiftForms();
for i = 1, x do
local button = _G[barName .. 'Button' .. i];
local hotkey = barName .. 'Button' .. i;
local spellID = select(4, GetShapeshiftFormInfo(i));
self:DefAddButton(spellID, button, hotkey);
end
elseif barName == 'LSPetBar' then
for i = 1, 10 do
local button = _G[barName .. 'Button' .. i];
local hotkey = barName .. 'Button' .. i;
local spellID = select(7, GetPetActionInfo(i));
self:DefAddButton(spellID, button, hotkey);
end
else
for x = 1, 5 do
for i = 1, 12 do
local button = _G[barName .. x .. 'Button' .. i];
local hotkey = barName .. x .. 'Button' .. i;
self:DefAddStandardButton(button, hotkey);
end
end
end
end
end
function ConRO:Dump()
local s = '';
for k, v in pairs(self.Spells) do
s = s .. ', ' .. k;
end
print(s);
end
function ConRO:FindSpell(spellID)
return self.Spells[spellID];
end
function ConRO:AbilityBurstIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:CoolDownGlow(button, _Spell_ID);
end
end
end
function ConRO:AbilityInterruptIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:InterruptGlow(button, _Spell_ID);
end
end
end
function ConRO:AbilityPurgeIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:PurgableGlow(button, _Spell_ID);
end
end
end
function ConRO:AbilityTauntIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:TauntGlow(button, _Spell_ID);
end
end
end
function ConRO:AbilityRaidBuffsIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:RaidBuffsGlow(button, _Spell_ID);
end
end
end
function ConRO:AbilityMovementIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:MovementGlow(button, _Spell_ID);
end
end
end
function ConRO:ClearAbilityBurstIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:HideCoolDownGlow(button, _Spell_ID);
end
end
end
function ConRO:ClearAbilityInterruptIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:HideInterruptGlow(button, _Spell_ID);
end
end
end
function ConRO:ClearAbilityPurgeIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:HidePurgableGlow(button, _Spell_ID);
end
end
end
function ConRO:ClearAbilityTauntIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:HideTauntGlow(button, _Spell_ID);
end
end
end
function ConRO:ClearAbilityRaidBuffsIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:HideRaidBuffsGlow(button, _Spell_ID);
end
end
end
function ConRO:ClearAbilityMovementIndependent(_Spell_ID)
if self.Spells[_Spell_ID] ~= nil then
for k, button in pairs(self.Spells[_Spell_ID]) do
self:HideMovementGlow(button, _Spell_ID);
end
end
end
function ConRO:AbilityBurst(_Spell, _Condition)
local incombat = UnitAffectingCombat('player');
if self.Flags[_Spell] == nil then
self.Flags[_Spell] = false;
end
if _Condition and incombat then
self.Flags[_Spell] = true;
self:AbilityBurstIndependent(_Spell);
else
self.Flags[_Spell] = false;
self:ClearAbilityBurstIndependent(_Spell);
end
end
function ConRO:AbilityInterrupt(_Spell, _Condition)
local color = ConRO.db.profile._Interrupt_Overlay_Color;
if self.Flags[_Spell] == nil then
self.Flags[_Spell] = false;
self:ClearAbilityInterruptIndependent(spell, spell); --Trying out 8.2.8
ConROInterruptWindow:SetSize(ConRO.db.profile.flashIconSize * .25, ConRO.db.profile.flashIconSize * .25);
ConROInterruptWindow.texture:SetVertexColor(.1, .1, .1);
if UIFrameIsFlashing(ConROInterruptWindow) then
UIFrameFlashStop(ConROInterruptWindow);
if ConRO.db.profile._Unlock_ConRO == true and ConRO.db.profile.enableInterruptWindow == true then
ConROInterruptWindow:Show();
end
end
end
if _Condition then
if not self.Flags[_Spell] then
ConROInterruptWindow:SetSize(ConRO.db.profile.flashIconSize * .75, ConRO.db.profile.flashIconSize * .75);
ConROInterruptWindow.texture:SetVertexColor(color.r, color.g, color.b);
if not UIFrameIsFlashing(ConROInterruptWindow) and ConRO.db.profile.enableInterruptWindow then
UIFrameFlash(ConROInterruptWindow, 0.25, 0.25, -1);
end
end
self.Flags[_Spell] = true;
self:AbilityInterruptIndependent(_Spell);
else
if self.Flags[_Spell] then
ConROInterruptWindow:SetSize(ConRO.db.profile.flashIconSize * .25, ConRO.db.profile.flashIconSize * .25);
ConROInterruptWindow.texture:SetVertexColor(.1, .1, .1);
if UIFrameIsFlashing(ConROInterruptWindow) then
UIFrameFlashStop(ConROInterruptWindow);
if ConRO.db.profile._Unlock_ConRO == true and ConRO.db.profile.enableInterruptWindow == true then
ConROInterruptWindow:Show();
end
end
end
self.Flags[_Spell] = false;
self:ClearAbilityInterruptIndependent(_Spell);
end
end
function ConRO:AbilityPurge(_Spell, _Condition)
local color = ConRO.db.profile._Purge_Overlay_Color;
if self.Flags[_Spell] == nil then
self.Flags[_Spell] = false;
self:ClearAbilityPurgeIndependent(spell, spell);
ConROPurgeWindow:SetSize(ConRO.db.profile.flashIconSize * .25, ConRO.db.profile.flashIconSize * .25);
ConROPurgeWindow.texture:SetVertexColor(.1, .1, .1);
if UIFrameIsFlashing(ConROPurgeWindow) then
UIFrameFlashStop(ConROPurgeWindow);
if ConRO.db.profile._Unlock_ConRO == true and ConRO.db.profile.enablePurgeWindow == true then
ConROPurgeWindow:Show();
end
end
end
if _Condition then
if not self.Flags[_Spell] then
ConROPurgeWindow:SetSize(ConRO.db.profile.flashIconSize * .75, ConRO.db.profile.flashIconSize * .75);
ConROPurgeWindow.texture:SetVertexColor(color.r, color.g, color.b);
if not UIFrameIsFlashing(ConROPurgeWindow) and ConRO.db.profile.enablePurgeWindow then
UIFrameFlash(ConROPurgeWindow, 0.25, 0.25, -1);
end
end
self.Flags[_Spell] = true;
self:AbilityPurgeIndependent(_Spell);
else
if self.Flags[_Spell] then
ConROPurgeWindow:SetSize(ConRO.db.profile.flashIconSize * .25, ConRO.db.profile.flashIconSize * .25);
ConROPurgeWindow.texture:SetVertexColor(.1, .1, .1);
if UIFrameIsFlashing(ConROPurgeWindow) then
UIFrameFlashStop(ConROPurgeWindow);
if ConRO.db.profile._Unlock_ConRO == true and ConRO.db.profile.enablePurgeWindow == true then
ConROPurgeWindow:Show();
end
end
end
self.Flags[_Spell] = false;
self:ClearAbilityPurgeIndependent(_Spell);
end
end
function ConRO:AbilityTaunt(_Spell, _Condition)
if self.Flags[_Spell] == nil then
self.Flags[_Spell] = false;
end
if _Condition then
self.Flags[_Spell] = true;
self:AbilityTauntIndependent(_Spell);
else
self.Flags[_Spell] = false;
self:ClearAbilityTauntIndependent(_Spell);
end
end
function ConRO:AbilityRaidBuffs(_Spell, _Condition)
if self.Flags[_Spell] == nil then
self.Flags[_Spell] = false;
end
if _Condition then
self.Flags[_Spell] = true;
self:AbilityRaidBuffsIndependent(_Spell);
else
self.Flags[_Spell] = false;
self:ClearAbilityRaidBuffsIndependent(_Spell);
end
end
function ConRO:AbilityMovement(_Spell, _Condition)
if self.Flags[_Spell] == nil then
self.Flags[_Spell] = false;
end
if _Condition then
self.Flags[_Spell] = true;
self:AbilityMovementIndependent(_Spell);
else
self.Flags[_Spell] = false;
self:ClearAbilityMovementIndependent(_Spell);
end
end
function ConRO:GlowSpell(spellID)
local spellName = GetSpellInfo(spellID);
if self.Spells[spellID] ~= nil then
for k, button in pairs(self.Spells[spellID]) do
self:DamageGlow(button, 'next');
end
self.SpellsGlowing[spellID] = 1;
else
if UnitAffectingCombat('player') and not (spellID == 162794 or spellID == 188499 or spellID == 205448) then
if spellName ~= nil then
self:Print(self.Colors.Error .. 'Spell not found on action bars: ' .. ' ' .. spellName .. ' ' .. '(' .. spellID .. ')');
else
local itemName = GetItemInfo(spellID);
if itemName ~= nil then
self:Print(self.Colors.Error .. 'Item not found on action bars: ' .. ' ' .. itemName .. ' ' .. '(' .. spellID .. ')');
end
end
end
ConRO:ButtonFetch();
end
end
function ConRO:GlowDef(spellID)
local spellName = GetSpellInfo(spellID);
local itemName = GetItemInfo(spellID);
if self.DefSpells[spellID] ~= nil then
for k, button in pairs(self.DefSpells[spellID]) do
self:DefenseGlow(button, 'nextdef');
end
self.DefGlowing[spellID] = 1;
else
if UnitAffectingCombat('player') then
if spellName ~= nil then
self:Print(self.Colors.Error .. 'Spell not found on action bars: ' .. ' ' .. spellName .. ' ' .. '(' .. spellID .. ')');
else
local itemName = GetItemInfo(spellID);
if itemName ~= nil then
self:Print(self.Colors.Error .. 'Item not found on action bars: ' .. ' ' .. itemName .. ' ' .. '(' .. spellID .. ')');
end
end
end
ConRO:ButtonFetch();
end
end
function ConRO:GlowNextSpell(spellID)
self:GlowClear();
self:GlowSpell(spellID);
end
function ConRO:GlowNextDef(spellID)
self:GlowClearDef();
self:GlowDef(spellID);
end
function ConRO:GlowClear()
for spellID, v in pairs(self.SpellsGlowing) do
if v == 1 then
for k, button in pairs(self.Spells[spellID]) do
self:HideDamageGlow(button, 'next');
end
self.SpellsGlowing[spellID] = 0;
end
end
end
function ConRO:GlowClearDef()
for spellID, v in pairs(self.DefGlowing) do
if v == 1 then
for k, button in pairs(self.DefSpells[spellID]) do
self:HideDefenseGlow(button, 'nextdef');
end
self.DefGlowing[spellID] = 0;
end
end
end
local function TTOnEnter(self)
GameTooltip:SetOwner(self, "ConROButtonFrame")
GameTooltip:SetText("tooltipTitle") -- This sets the top line of text, in gold.
GameTooltip:AddLine("This is the contents of my tooltip", 1, 1, 1)
GameTooltip:Show()
end
local function TTOnLeave(self)
GameTooltip:Hide()
end