vanilla-wow-addons – Rev 1
?pathlinks?
CT_AddMovable("CT_HotbarLeft_Drag", CT_BARMOD_MOVABLE_LEFTHOTBAR, "BOTTOM", "BOTTOM", "UIParent", -490, 98, function(status)
if ( status and CT_HotbarLeft:IsVisible() ) then
CT_HotbarLeft_Drag:Show()
else
CT_HotbarLeft_Drag:Hide();
end
end);
CT_AddMovable("CT_HotbarRight_Drag", CT_BARMOD_MOVABLE_RIGHTHOTBAR, "BOTTOM", "BOTTOM", "UIParent", 14, 98, function(status)
if ( status and CT_HotbarRight:IsVisible() ) then
CT_HotbarRight_Drag:Show()
else
CT_HotbarRight_Drag:Hide();
end
end);
CT_AddMovable("CT_SidebarLeft_Drag", CT_BARMOD_MOVABLE_LEFTSIDEBAR, "TOPLEFT", "TOPLEFT", "UIParent", 15, -86, function(status)
if ( status and CT_SidebarFrame:IsVisible() ) then
CT_SidebarLeft_Drag:Show()
else
CT_SidebarLeft_Drag:Hide();
end
end);
CT_AddMovable("CT_SidebarRight_Drag", CT_BARMOD_MOVABLE_RIGHTSIDEBAR, "TOPRIGHT", "TOPRIGHT", "UIParent", -15, -148, function(status)
if ( status and CT_SidebarFrame2:IsVisible() ) then
CT_SidebarRight_Drag:Show()
else
CT_SidebarRight_Drag:Hide();
end
end);
CT_AddMovable("CT_HotbarTop_Drag", CT_BARMOD_MOVABLE_TOPHOTBAR, "BOTTOM", "BOTTOM", "UIParent", -28, 140, function(status)
if ( status and CT_HotbarTop:IsVisible() ) then
CT_HotbarTop_Drag:Show()
else
CT_HotbarTop_Drag:Hide();
end
end);
CT_AddMovable("CT_PetBar_Drag", CT_BARMOD_MOVABLE_PETBAR, "BOTTOMLEFT", "BOTTOM", "UIParent", -453, 82, function(status)
if ( status and PetActionBarFrame:IsVisible() ) then
CT_PetBar_Drag:Show()
else
CT_PetBar_Drag:Hide();
end
end, function()
if ( CT_HotbarLeft:IsVisible() ) then
local x = CT_PetBar_Drag:GetLeft()-(UIParent:GetRight()/2);
local y = CT_PetBar_Drag:GetBottom()+40;
CT_PetBar_Drag:ClearAllPoints();
CT_PetBar_Drag:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOM", x, y);
end
end);
CT_AddMovable("CT_BABar_Drag", CT_BARMOD_MOVABLE_CLASSBAR, "BOTTOMLEFT", "BOTTOM", "UIParent", -461, 88, function(status)
if ( status and ShapeshiftBarFrame:IsVisible() ) then
CT_BABar_Drag:Show()
else
CT_BABar_Drag:Hide();
end
end, function()
if ( CT_HotbarLeft:IsVisible() ) then
local x = CT_BABar_Drag:GetLeft()-(UIParent:GetRight()/2);
local y = CT_BABar_Drag:GetBottom()+40;
CT_BABar_Drag:ClearAllPoints();
CT_BABar_Drag:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOM", x, y);
end
end);
local CT_Hotcast = 0;
CT_SelfCast = 0;
CT_CDCount = 0;
CT_FadeColor = { ["r"] = 1.0, ["g"] = 1.0, ["b"] = 1.0 };
CT_ActionBar_LockedPage = 1;
local CT_NextSelfCast;
CT_Hotbar = { };
CT_SidebarAxis = {
[1] = 2,
[2] = 2,
[3] = 1,
[4] = 1,
[5] = 2
};
CT_LSidebar_Buttons = 12;
CT_RSidebar_Buttons = 12;
CT_Alt_Hotbar = 0;
CT_Hotbars_Locked = false;
CT_HotbarButtons_Locked = false;
CT_ShowGrid = 1;
function CT_ButtonLock_Update(modid)
local val = CT_Mods[modid];
if ( val["modStatus"] == "off" ) then
CT_HotbarButtons_Locked = false;
else
CT_HotbarButtons_Locked = true;
end
end
function CT_Sidebar_ButtonInUse(btn)
if ( ( strsub(btn:GetName(), 1, 3) == "CT3" and btn:GetID() <= CT_LSidebar_Buttons ) or ( strsub( btn:GetName(), 1, 3) == "CT4" and btn:GetID() <= CT_RSidebar_Buttons ) ) then
return 1;
else
return nil;
end
end
function CT_HotbarcastUp(id)
CT_Hotbar[id] = nil;
end
function CT_HotbarcastDown(id)
CT_Hotbar[id] = 1;
end
function CT_ActionButton_Update()
-- Special case code for bonus bar buttons
-- Prevents the button from updating if the bonusbar is still in an animation transition
if ( this.isBonus and this.inTransition ) then
CT_ActionButton_UpdateUsable();
CT_ActionButton_UpdateCooldown();
return;
end
local icon = getglobal(this:GetName().."Icon");
local buttonCooldown = getglobal(this:GetName().."Cooldown");
local texture = GetActionTexture(CT_ActionButton_GetPagedID(this));
if ( texture ) then
icon:SetTexture(texture);
icon:Show();
this.rangeTimer = -1;
this:SetNormalTexture("Interface\\Buttons\\UI-Quickslot2");
-- Save texture if the button is a bonus button, will be needed later
if ( this.isBonus ) then
this.texture = texture;
end
else
icon:Hide();
buttonCooldown:Hide();
this.rangeTimer = nil;
this:SetNormalTexture("Interface\\Buttons\\UI-Quickslot");
getglobal(this:GetName().."HotKey"):SetVertexColor(0.6, 0.6, 0.6);
end
CT_ActionButton_UpdateCount();
if ( HasAction(CT_ActionButton_GetPagedID(this)) ) then
this:RegisterEvent("ACTIONBAR_UPDATE_STATE");
this:RegisterEvent("ACTIONBAR_UPDATE_USABLE");
this:RegisterEvent("ACTIONBAR_UPDATE_COOLDOWN");
this:RegisterEvent("UPDATE_INVENTORY_ALERTS");
this:RegisterEvent("PLAYER_AURAS_CHANGED");
this:RegisterEvent("PLAYER_TARGET_CHANGED");
this:RegisterEvent("UNIT_INVENTORY_CHANGED");
this:RegisterEvent("CRAFT_SHOW");
this:RegisterEvent("CRAFT_CLOSE");
this:RegisterEvent("TRADE_SKILL_SHOW");
this:RegisterEvent("TRADE_SKILL_CLOSE");
this:RegisterEvent("PLAYER_ENTER_COMBAT");
this:RegisterEvent("PLAYER_LEAVE_COMBAT");
this:RegisterEvent("START_AUTOREPEAT_SPELL");
this:RegisterEvent("STOP_AUTOREPEAT_SPELL");
this:Show();
CT_ActionButton_UpdateState();
CT_ActionButton_UpdateUsable();
CT_ActionButton_UpdateCooldown();
CT_ActionButton_UpdateFlash();
else
this:UnregisterEvent("ACTIONBAR_UPDATE_STATE");
this:UnregisterEvent("ACTIONBAR_UPDATE_USABLE");
this:UnregisterEvent("ACTIONBAR_UPDATE_COOLDOWN");
this:UnregisterEvent("UPDATE_INVENTORY_ALERTS");
this:UnregisterEvent("PLAYER_AURAS_CHANGED");
this:UnregisterEvent("PLAYER_TARGET_CHANGED");
this:UnregisterEvent("UNIT_INVENTORY_CHANGED");
this:UnregisterEvent("CRAFT_SHOW");
this:UnregisterEvent("CRAFT_CLOSE");
this:UnregisterEvent("TRADE_SKILL_SHOW");
this:UnregisterEvent("TRADE_SKILL_CLOSE");
this:UnregisterEvent("PLAYER_ENTER_COMBAT");
this:UnregisterEvent("PLAYER_LEAVE_COMBAT");
this:UnregisterEvent("START_AUTOREPEAT_SPELL");
this:UnregisterEvent("STOP_AUTOREPEAT_SPELL");
if ( this.showgrid == 0 ) then
this:Hide();
else
buttonCooldown:Hide();
end
end
-- Add a green border if button is an equipped item
local border = getglobal(this:GetName().."Border");
if ( IsEquippedAction(CT_ActionButton_GetPagedID(this)) ) then
border:SetVertexColor(0, 1.0, 0, 0.35);
border:Show();
else
border:Hide();
end
if ( GameTooltip:IsOwned(this) ) then
CT_ActionButton_SetTooltip();
else
this.updateTooltip = nil;
end
-- Update Macro Text
local macroName = getglobal(this:GetName().."Name");
macroName:SetText(GetActionText(CT_ActionButton_GetPagedID(this)));
end
function CT_ActionButton_UpdateFlash()
local pagedID = CT_ActionButton_GetPagedID(this);
if ( (IsAttackAction(pagedID) and IsCurrentAction(pagedID)) or IsAutoRepeatAction(pagedID) ) then
CT_ActionButton_StartFlash();
else
CT_ActionButton_StopFlash();
end
end
function CT_ActionButton_HideGrid(button)
local btn;
if ( button ) then
btn = button;
else
btn = this;
end
local isException;
if (
( GetBonusBarOffset() > 0 and strsub(btn:GetName(), 1, 12) ~= "ActionButton" ) or
( strsub(btn:GetName(), 1, 12) == "MultiBarLeft" and not SHOW_MULTI_ACTIONBAR_4 ) or
( strsub(btn:GetName(), 1, 13) == "MultiBarRight" and not SHOW_MULTI_ACTIONBAR_3 ) or
( strsub(btn:GetName(), 1, 18) == "MultiBarBottomLeft" and not SHOW_MULTI_ACTIONBAR_1 ) or
( strsub(btn:GetName(), 1, 19) == "MultiBarBottomRight" and not SHOW_MULTI_ACTIONBAR_2 ) or
( GetBonusBarOffset() == 0 and strsub(btn:GetName(), 1, 17) ~= "BonusActionButton" )
) then
isException = 1;
end
if ( CT_ShowGrid and isException ) then return; end
btn.showgrid = 0;
if ( not HasAction(CT_ActionButton_GetPagedID(btn)) or not isException ) then
btn:Hide();
end
end
function CT_ActionButton_OnLoad()
if ( ( ( strsub( this:GetName(), 1, 3) == "CT3" and this:GetID() <= CT_LSidebar_Buttons ) or ( strsub( this:GetName(), 1, 3) == "CT4" and this:GetID() <= CT_RSidebar_Buttons ) ) and ( strsub( this:GetName(), 1, 3 ) == "CT3" or strsub( this:GetName(), 1, 3 ) == "CT4" ) ) then
this:Hide();
else
this:Show();
end
this.flashing = 0;
this.flashtime = 0;
ActionButton_Update();
this:RegisterForDrag("LeftButton", "RightButton");
this:RegisterForClicks("LeftButtonUp", "RightButtonUp");
this:RegisterEvent("ACTIONBAR_SHOWGRID");
this:RegisterEvent("ACTIONBAR_HIDEGRID");
this:RegisterEvent("ACTIONBAR_PAGE_CHANGED");
this:RegisterEvent("ACTIONBAR_SLOT_CHANGED");
this:RegisterEvent("ACTIONBAR_UPDATE_STATE");
this:RegisterEvent("ACTIONBAR_UPDATE_USABLE");
this:RegisterEvent("ACTIONBAR_UPDATE_COOLDOWN");
this:RegisterEvent("PLAYER_AURAS_CHANGED");
this:RegisterEvent("PLAYER_TARGET_CHANGED");
this:RegisterEvent("UNIT_AURASTATE");
this:RegisterEvent("UNIT_INVENTORY_CHANGED");
this:RegisterEvent("CRAFT_SHOW");
this:RegisterEvent("CRAFT_CLOSE");
this:RegisterEvent("TRADE_SKILL_SHOW");
this:RegisterEvent("TRADE_SKILL_CLOSE");
this:RegisterEvent("UNIT_HEALTH");
this:RegisterEvent("UNIT_MANA");
this:RegisterEvent("UNIT_RAGE");
this:RegisterEvent("UNIT_FOCUS");
this:RegisterEvent("UNIT_ENERGY");
this:RegisterEvent("UPDATE_BONUS_ACTIONBAR");
this:RegisterEvent("PLAYER_ENTER_COMBAT");
this:RegisterEvent("PLAYER_LEAVE_COMBAT");
this:RegisterEvent("PLAYER_COMBO_POINTS");
this:RegisterEvent("UPDATE_BINDINGS");
this:RegisterEvent("START_AUTOREPEAT_SPELL");
this:RegisterEvent("STOP_AUTOREPEAT_SPELL");
CT_ActionButton_UpdateHotkeys();
this.showgrid = 2;
end
function CT_ActionButton_UpdateHotkeys(actionbtn)
if ( not actionbtn ) then actionbtn = this; end
if ( CT_ShowHotkeys == -1 ) then
getglobal(actionbtn:GetName() .. "HotKey"):Hide();
return;
end
local hotkey = getglobal(actionbtn:GetName().."HotKey");
hotkey:Show();
if ( not CT_ShowHotkeys ) then
local key = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=" };
hotkey:SetText(key[actionbtn:GetID()]);
return;
end
local prefix;
if ( strsub(actionbtn:GetName(), 0, 3) == "CT_" ) then
prefix = "CT_HOTBAR1";
elseif ( strsub(actionbtn:GetName(), 0, 2) == "CT" ) then
prefix = "CT_HOTBAR" .. strsub(actionbtn:GetName(), 3, 3);
else
prefix = "ACTION";
end
local action = prefix .. "BUTTON"..actionbtn:GetID();
local text = GetBindingText(GetBindingKey(action), "KEY_");
text = string.gsub(text, "CTRL%-", "C-");
text = string.gsub(text, "ALT%-", "A-");
text = string.gsub(text, "SHIFT%-", "S-");
text = string.gsub(text, "Num Pad", "NP");
text = string.gsub(text, "Backspace", "Bksp");
text = string.gsub(text, "Spacebar", "Space");
text = string.gsub(text, "Page", "Pg");
text = string.gsub(text, "Down", "Dn");
text = string.gsub(text, "Arrow", "");
text = string.gsub(text, "Insert", "Ins");
text = string.gsub(text, "Delete", "Del");
hotkey:SetText(text);
end
function CT_ActionButton_UpdateState()
if ( IsCurrentAction(CT_ActionButton_GetPagedID(this)) or IsAutoRepeatAction(CT_ActionButton_GetPagedID(this)) ) then
this:SetChecked(1);
else
this:SetChecked(0);
end
end
function CT_ActionButton_UpdateUsable()
local icon = getglobal(this:GetName().."Icon");
local normalTexture = getglobal(this:GetName().."NormalTexture");
local isUsable, notEnoughMana = IsUsableAction(CT_ActionButton_GetPagedID(this));
if ( isUsable ) then
if ( this.inRange and this.inRange == 0 ) then
icon:SetVertexColor(CT_FadeColor.r, CT_FadeColor.g, CT_FadeColor.b);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(CT_FadeColor.r, CT_FadeColor.g, CT_FadeColor.b); end
else
icon:SetVertexColor(1.0, 1.0, 1.0);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(1.0, 1.0, 1.0); end
end
elseif ( notEnoughMana ) then
icon:SetVertexColor(0.5, 0.5, 1.0);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(0.5, 0.5, 1.0); end
else
icon:SetVertexColor(0.4, 0.4, 0.4);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(0.4, 0.4, 0.4); end
end
end
function CT_ActionButton_UpdateCount()
local text = getglobal(this:GetName().."Count");
local count = GetActionCount(CT_ActionButton_GetPagedID(this));
if ( count > 1 ) then
text:SetText(count);
else
text:SetText("");
end
end
function CT_ActionButton_UpdateCooldown()
local cooldown = getglobal(this:GetName().."Cooldown");
local start, duration, enable = GetActionCooldown(CT_ActionButton_GetPagedID(this));
CooldownFrame_SetTimer(cooldown, start, duration, enable);
end
function CT_ActionButton_OnEvent(event)
if ( event == "PLAYER_LEAVING_WORLD" ) then
this.disableEvents = true;
elseif ( event == "PLAYER_ENTERING_WORLD" ) then
this.disableEvents = nil;
elseif ( this.disableEvents ) then
return;
end
if ( event == "ACTIONBAR_SLOT_CHANGED" ) then
if ( arg1 == -1 or arg1 == CT_ActionButton_GetPagedID(this) ) then
CT_ActionButton_Update();
end
return;
end
if ( event == "ACTIONBAR_PAGE_CHANGED" or event == "PLAYER_AURAS_CHANGED" or event == "UPDATE_BONUS_ACTIONBAR" ) then
CT_BarMod_UpdateCooldownCount(this);
CT_ActionButton_Update();
CT_ActionButton_UpdateState();
return;
end
if ( event == "ACTIONBAR_SHOWGRID" ) then
CT_ActionButton_ShowGrid();
return;
end
if ( event == "ACTIONBAR_HIDEGRID" ) then
CT_ActionButton_HideGrid();
return;
end
if ( event == "UPDATE_BINDINGS" ) then
CT_ActionButton_UpdateHotkeys();
end
-- All event handlers below this line MUST only be valid when the button is visible
if ( not this:IsVisible() ) then
return;
end
if ( event == "PLAYER_TARGET_CHANGED" ) then
CT_ActionButton_UpdateUsable();
return;
end
if ( event == "UNIT_AURASTATE" ) then
if ( arg1 == "player" or arg1 == "target" ) then
CT_ActionButton_UpdateUsable();
end
return;
end
if ( event == "UNIT_INVENTORY_CHANGED" ) then
if ( arg1 == "player" ) then
CT_ActionButton_Update();
end
return;
end
if ( event == "ACTIONBAR_UPDATE_STATE" ) then
CT_ActionButton_UpdateState();
return;
end
if ( event == "ACTIONBAR_UPDATE_USABLE" ) then
CT_ActionButton_UpdateUsable();
return;
end
if ( event == "ACTIONBAR_UPDATE_COOLDOWN" ) then
CT_ActionButton_UpdateCooldown();
return;
end
if ( event == "CRAFT_SHOW" or event == "CRAFT_CLOSE" or event == "TRADE_SKILL_SHOW" or event == "TRADE_SKILL_CLOSE" ) then
CT_ActionButton_UpdateState();
return;
end
if ( arg1 == "player" and (event == "UNIT_HEALTH" or event == "UNIT_MANA" or event == "UNIT_RAGE" or event == "UNIT_FOCUS" or event == "UNIT_ENERGY") ) then
CT_ActionButton_UpdateUsable();
return;
end
if ( event == "PLAYER_ENTER_COMBAT" ) then
IN_ATTACK_MODE = 1;
if ( IsAttackAction(CT_ActionButton_GetPagedID(this)) ) then
CT_ActionButton_StartFlash();
end
return;
end
if ( event == "PLAYER_LEAVE_COMBAT" ) then
IN_ATTACK_MODE = 0;
if ( IsAttackAction(CT_ActionButton_GetPagedID(this)) ) then
CT_ActionButton_StopFlash();
end
return;
end
if ( event == "PLAYER_COMBO_POINTS" ) then
CT_ActionButton_UpdateUsable();
return;
end
if ( event == "START_AUTOREPEAT_SPELL" ) then
IN_AUTOREPEAT_MODE = 1;
if ( IsAutoRepeatAction(CT_ActionButton_GetPagedID(this)) ) then
CT_ActionButton_StartFlash();
end
return;
end
if ( event == "STOP_AUTOREPEAT_SPELL" ) then
IN_AUTOREPEAT_MODE = nil;
if ( ActionButton_IsFlashing() and not IsAttackAction(CT_ActionButton_GetPagedID(this)) ) then
CT_ActionButton_StopFlash();
end
return;
end
end
function CT_ActionButton_StartFlash()
this.flashing = 1;
this.flashtime = 0;
CT_ActionButton_UpdateState();
end
function CT_ActionButton_StopFlash()
this.flashing = 0;
getglobal(this:GetName().."Flash"):Hide();
CT_ActionButton_UpdateState();
end
function CT_ActionButton_SetTooltip()
if ( GetCVar("UberTooltips") == "1" ) then
GameTooltip_SetDefaultAnchor(GameTooltip, this);
else
if ( this:GetCenter() < UIParent:GetCenter() ) then
GameTooltip:SetOwner(this, "ANCHOR_RIGHT");
else
GameTooltip:SetOwner(this, "ANCHOR_LEFT");
end
end
if ( GameTooltip:SetAction(CT_ActionButton_GetPagedID(this)) ) then
this.updateTooltip = TOOLTIP_UPDATE_TIME;
else
this.updateTooltip = nil;
end
end
function CT_ActionButton_GetPagedID(button)
if( button == nil ) then
return 0;
end
local page = CURRENT_ACTIONBAR_PAGE;
if ( CT_Hotbars_Locked ) then
page = CT_ActionBar_LockedPage;
end
local isBonus;
if ( not page ) then page = 1; end
if ( strsub( button:GetName(), 1, 3 ) == "CT2" ) then
page = page + 1;
elseif ( strsub( button:GetName(), 1, 3 ) == "CT3" ) then
page = page + 2;
elseif ( strsub( button:GetName(), 1, 3 ) == "CT4" ) then
page = page + 3;
elseif ( strsub( button:GetName(), 1, 3 ) == "CT5" ) then
page = page + 4;
elseif ( string.find(button:GetName(), "^ActionButton%d+$") ) then
page = page - 1;
elseif ( string.find(button:GetName(), "^BonusActionButton%d+$") or string.find(button:GetName(), "^MultiBar") ) then
return ActionButton_GetPagedID(button);
end
if ( page >= 6 and not isBonus ) then
page = page - 6;
end
return (button:GetID() + ((page) * NUM_ACTIONBAR_BUTTONS));
end
function CT_ActionButtonDown(bar, id)
if ( bar == 1 ) then bar = ""; end -- First bar's buttons aren't named CT1
local button = getglobal("CT" .. bar .. "_ActionButton" .. id);
if ( button:GetButtonState() == "NORMAL" ) then
button:SetButtonState("PUSHED");
end
if ( CT_SelfCastModifier ) then
CT_NextSelfCast = 1;
end
end
function CT_ActionButtonUp(bar, id)
if ( bar == 1 ) then bar = ""; end -- First bar's buttons aren't named CT1
local button = getglobal("CT" .. bar .. "_ActionButton" .. id);
if ( button:GetButtonState() == "PUSHED" ) then
button:SetButtonState("NORMAL");
-- Used to save a macro
if ( MacroFrame_SaveMacro ) then
MacroFrame_SaveMacro();
end
if ( CT_NextSelfCast ) then
UseAction(CT_ActionButton_GetPagedID(button), 0, 1);
else
UseAction(CT_ActionButton_GetPagedID(button), 1, nil);
if ( SpellIsTargeting() and CT_SelfCast == 1 and SpellCanTargetUnit("player") ) then
SpellTargetUnit("player");
end
end
if ( CT_DebuffTimers_AddDebuff ) then
CT_DebuffTimers_AddDebuff(CT_ActionButton_GetPagedID(button));
end
if ( IsCurrentAction(CT_ActionButton_GetPagedID(button)) ) then
button:SetChecked(1);
else
button:SetChecked(0);
end
end
CT_NextSelfCast = nil;
end
CT_oldActionButtonUp = ActionButtonUp;
function CT_newActionButtonUp(id, onSelf)
if ( CT_NextSelfCast ) then
CT_oldActionButtonUp(id, 1);
else
CT_oldActionButtonUp(id, onSelf);
if ( SpellIsTargeting() and CT_SelfCast == 1 and SpellCanTargetUnit("player") ) then
SpellTargetUnit("player");
end
end
CT_NextSelfCast = nil;
end
ActionButtonUp = CT_newActionButtonUp;
CT_oldActionButtonDown = ActionButtonDown;
function CT_newActionButtonDown(id)
CT_oldActionButtonDown(id);
if ( CT_SelfCastModifier ) then
CT_NextSelfCast = 1;
end
end
ActionButtonDown = CT_newActionButtonDown;
function CT_LHotbar_Update()
local modStatusLeft = "on";
for key, val in CT_Mods do
if ( val["modName"] == BARMOD_MODNAME_LEFTHB ) then
modStatusLeft = val["modStatus"];
end
end
if ( modStatusLeft == "off" ) then
CT_HotbarLeft:Hide();
else
CT_HotbarLeft:Show();
if ( not CT_BABar_Drag:IsUserPlaced() ) then
CT_BABar_Drag:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOM", -461, 128);
end
if ( not CT_PetBar_Drag:IsUserPlaced() ) then
CT_PetBar_Drag:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOM", -453, 122);
end
end
end
function CT_RHotbar_Update()
local modStatusRight = "on";
for key, val in CT_Mods do
if ( val["modName"] == BARMOD_MODNAME_RIGHTHB ) then
modStatusRight = val["modStatus"];
end
end
if ( modStatusRight == "off" ) then
CT_HotbarRight:Hide();
else
CT_HotbarRight:Show();
end
end
function CT_THotbar_Update()
local modStatusTop = "on";
for key, val in CT_Mods do
if ( val["modName"] == BARMOD_MODNAME_TOPHB ) then
modStatusTop = val["modStatus"];
end
end
if ( modStatusTop == "off" ) then
CT_HotbarTop:Hide();
else
CT_HotbarTop:Show();
end
end
function CT_ActionButton_ShowGrid()
if ( CT_Sidebar_ButtonInUse(this) or ( strsub( this:GetName(), 1, 3 ) ~= "CT3" and strsub( this:GetName(), 1, 3 ) ~= "CT4" ) ) then
this.showgrid = this.showgrid+1;
getglobal(this:GetName().."NormalTexture"):SetVertexColor(1.0, 1.0, 1.0, 1.0);
this:Show();
end
end
function CT_GetBagColumns()
local freeScreenHeight = GetScreenHeight() - CONTAINER_OFFSET;
local index = 1;
local column = 0;
for i=1, NUM_CONTAINER_FRAMES, 1 do
if ( getglobal("ContainerFrame" .. i):IsVisible() ) then
column = 1; break;
end
end
while ContainerFrame1.bags[index] do
local frame = getglobal(ContainerFrame1.bags[index]);
-- freeScreenHeight determines when to start a new column of bags
if ( freeScreenHeight < frame:GetHeight() and index > 1 ) then
column = column + 1;
freeScreenHeight = UIParent:GetHeight() - CONTAINER_OFFSET;
end
freeScreenHeight = freeScreenHeight - frame:GetHeight() - VISIBLE_CONTAINER_SPACING;
index = index + 1;
end
return column;
end
function CT_HideButtons(buttonname, unt, stop, hidebefore)
for i=1, stop, 1 do
local button = getglobal(buttonname .. i);
if ( i <= unt ) then
if ( hidebefore == 1 ) then
button:Hide();
else
button:Show();
end
else
if ( hidebefore == 1 ) then
button:Show();
else
button:Hide();
end
end
end
end
CT_oldActionButton_OnUpdate = ActionButton_OnUpdate;
function CT_newActionButton_OnUpdate(elapsed)
if ( this.rangeTimer and this.rangeTimer <= elapsed ) then
if ( IsActionInRange( ActionButton_GetPagedID(this)) == 0 ) then
this.inRange = 0;
else
this.inRange = 1;
end
ActionButton_UpdateUsable();
end
CT_oldActionButton_OnUpdate(elapsed);
end
ActionButton_OnUpdate = CT_newActionButton_OnUpdate;
CT_oldActionButton_UpdateUsable = ActionButton_UpdateUsable;
function CT_newActionButton_UpdateUsable()
CT_oldActionButton_UpdateUsable();
local icon = getglobal(this:GetName().."Icon");
local isUsable, notEnoughMana = IsUsableAction(ActionButton_GetPagedID(this));
if ( isUsable ) then
if ( this.inRange and this.inRange == 0 ) then
icon:SetVertexColor(CT_FadeColor.r, CT_FadeColor.g, CT_FadeColor.b);
end
end
end
ActionButton_UpdateUsable = CT_newActionButton_UpdateUsable;
function CT_ActionButton_UpdateUsable()
local icon = getglobal(this:GetName().."Icon");
local normalTexture = getglobal(this:GetName().."NormalTexture");
local isUsable, notEnoughMana = IsUsableAction(CT_ActionButton_GetPagedID(this));
if ( isUsable ) then
if ( this.inRange and this.inRange == 0 ) then
icon:SetVertexColor(CT_FadeColor.r, CT_FadeColor.g, CT_FadeColor.b);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(CT_FadeColor.r, CT_FadeColor.g, CT_FadeColor.b); end
else
icon:SetVertexColor(1.0, 1.0, 1.0);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(1.0, 1.0, 1.0); end
end
elseif ( notEnoughMana ) then
icon:SetVertexColor(0.5, 0.5, 1.0);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(0.5, 0.5, 1.0); end
else
icon:SetVertexColor(0.4, 0.4, 0.4);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(0.4, 0.4, 0.4); end
end
end
function CT_ActionButton_OnUpdate(elapsed)
if ( ActionButton_IsFlashing() ) then
this.flashtime = this.flashtime - elapsed;
if ( this.flashtime <= 0 ) then
local overtime = -this.flashtime;
if ( overtime >= ATTACK_BUTTON_FLASH_TIME ) then
overtime = 0;
end
this.flashtime = ATTACK_BUTTON_FLASH_TIME - overtime;
local flashTexture = getglobal(this:GetName().."Flash");
if ( flashTexture:IsVisible() ) then
flashTexture:Hide();
else
flashTexture:Show();
end
end
end
if ( this.rangeTimer ) then
if ( this.rangeTimer < 0 ) then
local count = getglobal(this:GetName().."HotKey");
if ( IsActionInRange( CT_ActionButton_GetPagedID(this)) == 0 ) then
count:SetVertexColor(1.0, 0.1, 0.1);
this.inRange = 0;
else
count:SetVertexColor(1.0, 1.0, 1.0);
this.inRange = 1;
end
this.rangeTimer = TOOLTIP_UPDATE_TIME;
CT_ActionButton_UpdateUsable();
else
this.rangeTimer = this.rangeTimer - elapsed;
end
end
if ( not this.updateTooltip ) then
return;
end
this.updateTooltip = this.updateTooltip - elapsed;
if ( this.updateTooltip > 0 ) then
return;
end
if ( GameTooltip:IsOwned(this) ) then
CT_ActionButton_SetTooltip();
else
this.updateTooltip = nil;
end
end
function CT_Sidebar_ChangeAxis(bar, force)
local curraxis = CT_SidebarAxis[bar];
if ( force ) then
curraxis = force;
end
if ( curraxis == 1 ) then
CT_SidebarAxis[tonumber(bar)] = 2;
else
CT_SidebarAxis[tonumber(bar)] = 1;
end
if ( CT_BarModOptions_Options[UnitName("player")] ) then
CT_BarModOptions_RemoveSpaceBars(CT_BarModOptions_Options[UnitName("player")]["removeBars"])
else
CT_BarModOptions_RemoveSpaceBars();
end
end
BLIZZARD_Original_updateContainerFrameAnchors = updateContainerFrameAnchors;
function updateContainerFrameAnchors()
CT_Bag_Update();
end
function CT_updateContainerFrameAnchors()
local freeScreenHeight = GetScreenHeight() - CONTAINER_OFFSET;
local index = 1;
local column = 0;
while ContainerFrame1.bags[index] do
local frame = getglobal(ContainerFrame1.bags[index]);
if ( index == 1 ) then
frame:SetPoint("BOTTOMRIGHT", frame:GetParent():GetName(), "BOTTOMRIGHT", -40, CONTAINER_OFFSET);
elseif ( freeScreenHeight < frame:GetHeight() ) then
column = column + 1;
freeScreenHeight = UIParent:GetHeight() - CONTAINER_OFFSET;
frame:SetPoint("BOTTOMRIGHT", frame:GetParent():GetName(), "BOTTOMRIGHT", -(column * CONTAINER_WIDTH + 40), CONTAINER_OFFSET);
else
frame:SetPoint("BOTTOMRIGHT", ContainerFrame1.bags[index - 1], "TOPRIGHT", 0, CONTAINER_SPACING);
end
freeScreenHeight = freeScreenHeight - frame:GetHeight() - VISIBLE_CONTAINER_SPACING;
index = index + 1;
end
return column;
end
function CT_Bag_Update()
if ( CT_HotbarTop:IsVisible() ) then
CONTAINER_OFFSET = 110;
elseif ( CT_HotbarRight:IsVisible() ) then
CONTAINER_OFFSET = 90;
else
CONTAINER_OFFSET = 70;
end
if ( CT_SidebarFrame2:IsVisible() ) then
CT_updateContainerFrameAnchors();
else
BLIZZARD_Original_updateContainerFrameAnchors();
end
end
CT_oldFCF_UpdateDockPosition = FCF_UpdateDockPosition;
CT_newFCF_UpdateDockPosition = function() end;
function CT_GlobalFrame_OnUpdate(elapsed)
this.update = this.update + elapsed;
if ( SIMPLE_CHAT == "1" and this.update > 0.05 ) then
FCF_UpdateDockPosition = CT_newFCF_UpdateDockPosition;
this.update = this.update - 0.05;
ChatFrame2:SetPoint("BOTTOMRIGHT", "UIParent", "BOTTOMRIGHT", -32, 95);
if ( ShapeshiftBarFrame:IsVisible() ) then
ChatFrame1:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", 32, 138);
elseif ( PetActionBarFrame:IsVisible() ) then
ChatFrame1:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", 32, 130);
else
ChatFrame1:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOMLEFT", 32, 95);
end
else
FCF_UpdateDockPosition = CT_oldFCF_UpdateDockPosition;
end
this.updateCDC = this.updateCDC + elapsed;
if ( this.updateCDC >= 0.25 ) then
this.updateCDC = 0;
local currTime = GetTime();
for k, v in CT_BarMod_Cooldowns do
CT_BarMod_Cooldowns[k][3] = floor((v[1]+v[2])-currTime);
if ( CT_BarMod_Cooldowns[k][3] <= 0 ) then
CT_BarMod_Cooldowns[k] = nil;
end
end
CT_BarMod_UpdateCooldownCount();
end
end
sidebarfunction = function()
if ( CT_SidebarFrame:IsVisible() ) then
CT_SidebarFrame:Hide();
CT_SetModStatus(BARMOD_MODNAME_LEFTSB, "off");
CT_Print(BARMOD_OFF_LEFTSBAR, 1.0, 1.0, 0.0);
else
if ( CT_MF_ShowFrames ) then
CT_SidebarLeft_Drag:Show();
end
CT_SidebarFrame:Show();
CT_SetModStatus(BARMOD_MODNAME_LEFTSB, "on");
CT_Print(BARMOD_ON_LEFTSBAR, 1.0, 1.0, 0.0);
end
end
sidebarRfunction = function()
if ( CT_SidebarFrame2:IsVisible() ) then
CT_SidebarFrame2:Hide();
CT_SetModStatus(BARMOD_MODNAME_RIGHTSB, "off");
CT_Print(BARMOD_OFF_RIGHTSBAR, 1.0, 1.0, 0.0);
else
if ( CT_MF_ShowFrames ) then
CT_SidebarRight_Drag:Show();
end
CT_SidebarFrame2:Show();
CT_SetModStatus(BARMOD_MODNAME_RIGHTSB, "on");
CT_Print(BARMOD_ON_RIGHTSBAR, 1.0, 1.0, 0.0);
end
-- dbrong
CT_Bag_Update();
end
lsidebarbuttonsfunction = function(modID, text)
local val = CT_Mods[modID]["modValue"];
if ( val == "6" or val == 6 ) then
val = "9";
elseif ( val == "9" or val == 9 ) then
val = "12";
elseif ( val == "12" or val == 12 ) then
val = "6";
end
if ( text ) then text:SetText(val); end
CT_Mods[modID]["modValue"] = val;
LCT_SidebarBtns_Update(modID);
end
hotbarleftfunction = function (modId)
local val = CT_Mods[modId]["modStatus"];
if ( val == "off" ) then
CT_HotbarLeft:Hide();
CT_LeftHotbar_OnHide();
CT_Print(BARMOD_OFF_LEFTHBAR, 1.0, 1.0, 0.0);
else
if ( CT_MF_ShowFrames ) then
CT_HotbarLeft_Drag:Show();
end
local x = CT_PetBar_Drag:GetLeft()-(UIParent:GetRight()/2);
local y = CT_PetBar_Drag:GetBottom()+40;
CT_PetBar_Drag:ClearAllPoints();
CT_PetBar_Drag:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOM", x, y);
x = CT_BABar_Drag:GetLeft()-(UIParent:GetRight()/2);
y = CT_BABar_Drag:GetBottom()+40;
CT_BABar_Drag:ClearAllPoints();
CT_BABar_Drag:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOM", x, y);
CT_HotbarLeft:Show();
CT_Print(BARMOD_ON_LEFTHBAR, 1.0, 1.0, 0.0);
end
end
hotbarrightfunction = function (modId)
local val = CT_Mods[modId]["modStatus"];
if ( val == "off" ) then
CT_HotbarRight:Hide();
CT_Print(BARMOD_OFF_RIGHTHBAR, 1.0, 1.0, 0.0);
else
if ( CT_MF_ShowFrames ) then
CT_HotbarRight_Drag:Show();
end
CT_HotbarRight:Show();
CT_Print(BARMOD_ON_RIGHTHBAR, 1.0, 1.0, 0.0);
end
CT_Bag_Update();
end
hotbartopfunction = function ()
if ( CT_HotbarTop:IsVisible() ) then
CT_HotbarTop:Hide();
CT_SetModStatus(BARMOD_MODNAME_TOPHB, "off");
CT_Print(BARMOD_OFF_TOPBAR, 1.0, 1.0, 0.0);
else
if ( CT_MF_ShowFrames ) then
CT_HotbarTop_Drag:Show();
end
CT_HotbarTop:Show();
CT_SetModStatus(BARMOD_MODNAME_TOPHB, "on");
CT_Print(BARMOD_ON_TOPBAR, 1.0, 1.0, 0.0);
end
CT_Bag_Update();
end
function gridinitfunction(modId)
local val = CT_Mods[modId]["modStatus"];
local i;
if ( val == "off" ) then
CT_ShowGrid = 1;
else
CT_ShowGrid = 0;
for i=1, 12, 1 do
CT_ActionButton_HideGrid(getglobal("ActionButton" .. i));
CT_ActionButton_HideGrid(getglobal("BonusActionButton" .. i));
CT_ActionButton_HideGrid(getglobal("MultiBarLeftButton" .. i));
CT_ActionButton_HideGrid(getglobal("MultiBarRightButton" .. i));
CT_ActionButton_HideGrid(getglobal("MultiBarBottomLeftButton" .. i));
CT_ActionButton_HideGrid(getglobal("MultiBarBottomRightButton" .. i));
CT_ActionButton_HideGrid(getglobal("CT_ActionButton" .. i));
CT_ActionButton_HideGrid(getglobal("CT2_ActionButton" .. i));
CT_ActionButton_HideGrid(getglobal("CT3_ActionButton" .. i));
CT_ActionButton_HideGrid(getglobal("CT4_ActionButton" .. i));
CT_ActionButton_HideGrid(getglobal("CT5_ActionButton" .. i));
end
end
end
function movefunction(modId)
local val = CT_Mods[modId]["modStatus"];
if ( val == "off" ) then
CT_Print(BARMOD_OFF_MOVEPARTYFRAME);
CT_CheckPartyMove();
elseif ( val == "on" ) then
CT_Print(BARMOD_ON_MOVEPARTYFRAME);
CT_CheckPartyMove();
end
end
function CT_CheckPartyMove()
if ( CT_MovableParty_IsInstalled ) then
for i = 1, 4, 1 do
CT_LinkFrameDrag(getglobal("PartyMemberFrame" .. i), getglobal("CT_MovableParty" .. i .. "_Drag"), "TOPLEFT", "TOPLEFT", -40, -7);
end
return;
elseif ( CT_GetModStatus(BARMOD_MODNAME_MOVEPARTYFRAME) == "on" ) then
local offset = -128;
if ( UnitExists("pet") ) then
offset = -160;
end
PartyMemberFrame1:ClearAllPoints();
PartyMemberFrame1:SetPoint("TOPLEFT", "UIParent", "TOPLEFT", 50, offset);
else
local offset = -128;
if ( UnitExists("pet") ) then
offset = -160;
end
PartyMemberFrame1:ClearAllPoints();
PartyMemberFrame1:SetPoint("TOPLEFT", "UIParent", "TOPLEFT", 10, offset);
end
for i = 2, 4, 1 do
getglobal("PartyMemberFrame" .. i):ClearAllPoints();
getglobal("PartyMemberFrame" .. i):SetPoint("TOPLEFT", "PartyMemberFrame" .. (i-1) .. "PetFrame", "BOTTOMLEFT", -23, -10);
end
end
CT_oldPickupAction = PickupAction;
CT_PickupAction = function(x)
if ( not CT_HotbarButtons_Locked or IsShiftKeyDown() ) then
if ( this ) then
CT_BarMod_Cooldowns[this:GetName()] = nil;
CT_BarMod_UpdateCooldownCount();
end
CT_oldPickupAction(x);
end
end
PickupAction = CT_PickupAction;
function cooldownfunction(modId)
local val = CT_Mods[modId]["modStatus"];
if ( val == "off" ) then
CT_Print(BARMOD_OFF_COOLDOWNCOUNT, 1, 1, 0);
CT_CDCount = 0;
CT_BarMod_UpdateCooldownCount();
elseif ( val == "on" ) then
CT_Print(BARMOD_ON_COOLDOWNCOUNT, 1, 1, 0);
CT_CDCount = 1;
CT_BarMod_UpdateCooldownCount();
end
end
function cooldowninitfunction(modId)
local val = CT_Mods[modId]["modStatus"];
if ( val == "off" ) then
CT_CDCount = 0;
CT_BarMod_UpdateCooldownCount();
elseif ( val == "on" ) then
CT_CDCount = 1;
CT_BarMod_UpdateCooldownCount();
end
end
--[[
CT_RegisterMod(BARMOD_MODNAME_LEFTSB, BARMOD_ONOFFTOGGLE, 2, "Interface\\Icons\\Spell_Holy_MindVision", BARMOD_TOOLTIP_LEFTSB, "off", nil, sidebarfunction, CT_LSidebar_Update);
CT_RegisterMod(BARMOD_MODNAME_RIGHTSB, BARMOD_ONOFFTOGGLE, 2, "Interface\\Icons\\Spell_Holy_MindVision", BARMOD_TOOLTIP_RIGHTSB, "off", nil, sidebarRfunction, CT_RSidebar_Update);
CT_RegisterMod(BARMOD_MODNAME_LEFTHB, BARMOD_ONOFFTOGGLE, 2, "Interface\\Icons\\Spell_Holy_MindVision", BARMOD_TOOLTIP_LEFTHB, "off", nil, hotbarleftfunction, CT_LHotbar_Update);
CT_RegisterMod(BARMOD_MODNAME_RIGHTHB, BARMOD_ONOFFTOGGLE, 2, "Interface\\Icons\\Spell_Holy_MindVision", BARMOD_TOOLTIP_RIGHTHB, "off", nil, hotbarrightfunction, CT_RHotbar_Update);
CT_RegisterMod(BARMOD_MODNAME_TOPHB, BARMOD_ONOFFTOGGLE, 2, "Interface\\Icons\\Spell_Holy_MindVision", BARMOD_TOOLTIP_TOPHB, "off", nil, hotbartopfunction, CT_THotbar_Update);
CT_RegisterMod(BARMOD_MODNAME_PAGELOCK, BARMOD_SUB_PAGELOCK, 2, "Interface\\Icons\\INV_Misc_Key_03", BARMOD_TOOLTIP_PAGELOCK, "off", nil, HotbarsLockFunction, HotbarsLockInitFunction);
CT_RegisterMod(BARMOD_MODNAME_BUTTONLOCK, BARMOD_SUB_BUTTONLOCK, 2, "Interface\\Icons\\INV_Misc_Key_13", BARMOD_TOOLTIP_BUTTONLOCK, "off", nil, HotbarButtonsLockFunction, CT_ButtonLock_Update);
CT_RegisterMod(BARMOD_MODNAME_HIDEGRID, BARMOD_SUB_HIDEGRID, 2, "Interface\\Icons\\Ability_Vanish", BARMOD_TOOLTIP_HIDEGRID, "off", nil, gridfunction, gridinitfunction);
]]
CT_RegisterMod(BARMOD_MODNAME_MOVEPARTYFRAME, BARMOD_ONOFFTOGGLE, 2, "Interface\\Icons\\Spell_Holy_MindSooth", BARMOD_TOOLTIP_MOVEPARTYFRAME, "off", nil, movefunction, CT_CheckPartyMove);
CT_RegisterMod(BARMOD_MODNAME_COOLDOWNCOUNT, BARMOD_SUB_COOLDOWNCOUNT, 2, "Interface\\Icons\\INV_Misc_PocketWatch_01", BARMOD_TOOLTIP_COOLDOWNCOUNT, "off", nil, cooldownfunction, cooldowninitfunction);
CT_PetBar_DragFrame_Orientation = "H";
CT_BABar_DragFrame_Orientation = "H";
CT_Show_PetBarDrag = 0;
function CT_Bar_DragFrame_OnMD(force)
local var, type;
if ( this == CT_PetBar_Drag ) then
var = CT_PetBar_DragFrame_Orientation;
type = "PetAction";
else
var = CT_BABar_DragFrame_Orientation;
type = "Shapeshift";
end
if ( arg1 == "LeftButton" ) then
this:StartMoving();
else
if ( var == "H" or force ) then
var = "V";
else
var = "H";
end
local i;
for i = 2, 10, 1 do
getglobal(type .. "Button" .. i):ClearAllPoints();
if ( var == "H" ) then
getglobal(type .. "Button" .. i):SetPoint("LEFT", type .. "Button" .. (i-1), "RIGHT", 8, 0);
else
getglobal(type .. "Button" .. i):SetPoint("TOP", type .. "Button" .. (i-1), "BOTTOM", 0, -8);
end
end
end
if ( this == CT_PetBar_Drag ) then
CT_PetBar_DragFrame_Orientation = var;
else
CT_BABar_DragFrame_Orientation = var;
end
if ( CT_BarModOptions_RemoveSpaceSpecial ) then
CT_BarModOptions_RemoveSpaceSpecial(CT_BarModOptions_Options[UnitName("player")]["removeSpecial"]);
end
if ( CT_BottomBar_HideTextures ) then
CT_BottomBar_HideTextures(CT_BottomBar_HiddenFrames[UnitName("player")]["ClassBackground"]);
end
end
function CT_BarMod_CheckRotations()
for key, val in CT_SidebarAxis do
if ( val == 1 ) then val = 2; else val = 1; end
CT_Sidebar_ChangeAxis(tonumber(key), val);
end
end
local oorfunc = function(modId, text)
local val = CT_Mods[modId]["modValue"];
if ( val == "1" ) then
val = "2"
CT_FadeColor = { ["r"] = 0.5, ["g"] = 0.5, ["b"] = 0.5 };
CT_Print(BARMOD_ON_OOR1, 1, 1, 0);
elseif ( val == "2" ) then
val = "3";
CT_FadeColor = { ["r"] = 0.8, ["g"] = 0.4, ["b"] = 0.4 };
CT_Print(BARMOD_ON_OOR2, 1, 1, 0);
elseif ( val == "3" ) then
val = "1";
CT_FadeColor = { ["r"] = 1, ["g"] = 1, ["b"] = 1 };
CT_Print(BARMOD_OFF_OOR, 1, 1, 0);
end
if ( text ) then text:SetText(val); end
CT_Mods[modId]["modValue"] = val;
CT_Mods[modId]["modStatus"] = "switch";
end
local oorinitfunc = function(modId)
local val = CT_Mods[modId]["modValue"];
if ( val == "2" ) then
CT_FadeColor = { ["r"] = 0.5, ["g"] = 0.5, ["b"] = 0.5 };
elseif ( val == "3" ) then
CT_FadeColor = { ["r"] = 0.8, ["g"] = 0.4, ["b"] = 0.4 };
elseif ( val == "1" ) then
CT_FadeColor = { ["r"] = 1, ["g"] = 1, ["b"] = 1 };
end
end
local selffunc = function(modId)
local val = CT_Mods[modId]["modStatus"];
if ( val == "on" ) then
CT_SelfCast = 1;
CT_Print(BARMOD_ON_SELFCAST, 1, 1, 0);
else
CT_Print(BARMOD_OFF_SELFCAST, 1, 1, 0);
CT_SelfCast = 0;
end
end
local selfinitfunc = function(modId)
local val = CT_Mods[modId]["modStatus"];
if ( val == "on" ) then
CT_SelfCast = 1;
else
CT_SelfCast = 0;
end
end
local hotkeyfunc = function(modId, text)
local val = CT_Mods[modId]["modValue"];
if ( val == "3" ) then
val = "1";
CT_ShowHotkeys = nil;
CT_Print(BARMOD_ON_HOTKEY1, 1, 1, 0);
elseif ( val == "1" ) then
val = "2";
CT_ShowHotkeys = 1;
CT_Print(BARMOD_ON_HOTKEY2, 1, 1, 0);
elseif ( val == "2" ) then
val = "3";
CT_ShowHotkeys = -1;
CT_Print(BARMOD_OFF_HOTKEY, 1, 1, 0);
end
CT_BarMod_UpdateAllHotkeys();
if ( text ) then
text:SetText(val);
end
CT_Mods[modId]["modValue"] = val;
end
local hotkeyinitfunc = function(modId)
local val = CT_Mods[modId]["modValue"];
if ( val == "1" ) then
CT_ShowHotkeys = nil;
elseif ( val == "2" ) then
CT_ShowHotkeys = 1;
elseif ( val == "3" ) then
CT_ShowHotkeys = -1;
end
CT_BarMod_UpdateAllHotkeys();
CT_Mods[modId]["modStatus"] = "switch";
end
function cskeyfunc(modId, text)
local val = CT_Mods[modId]["modValue"];
if ( val == "Ctrl" ) then
val = "Alt";
CT_SelfCastModKey = IsAltKeyDown;
CT_Print(BARMOD_ON_SCKEY2, 1, 1, 0);
elseif ( val == "Alt" ) then
val = "Shift";
CT_SelfCastModKey = IsShiftKeyDown;
CT_Print(BARMOD_ON_SCKEY3, 1, 1, 0);
elseif ( val == "Shift" ) then
val = "None";
CT_SelfCastModKey = nil;
CT_Print(BARMOD_ON_SCKEY4, 1, 1, 0);
elseif ( val == "None" ) then
val = "Ctrl";
CT_SelfCastModKey = IsControlKeyDown;
CT_Print(BARMOD_ON_SCKEY1, 1, 1, 0);
end
CT_Mods[modId]["modValue"] = val;
if ( text ) then text:SetText(val); end
end
function cskeyinitfunc(modId, text)
local val = CT_Mods[modId]["modValue"];
if ( val == "Alt" ) then
CT_SelfCastModKey = IsAltKeyDown;
elseif ( val == "Shift" ) then
CT_SelfCastModKey = IsShiftKeyDown;
elseif ( val == "Ctrl" ) then
CT_SelfCastModKey = IsControlKeyDown;
end
end
CT_RegisterMod(BARMOD_MODNAME_OOR, BARMOD_SUB_OOR, 2, "Interface\\Icons\\Ability_TownWatch", BARMOD_TOOLTIP_OOR, "switch", "1", oorfunc, oorinitfunc);
CT_RegisterMod(BARMOD_MODNAME_HOTKEYS, BARMOD_SUB_HOTKEYS, 2, "Interface\\Icons\\INV_Misc_Key_09", BARMOD_TOOLTIP_HOTKEYS, "switch", "1", hotkeyfunc, hotkeyinitfunc);
--CT_RegisterMod(BARMOD_MODNAME_TTPOS, BARMOD_SUB_TTPOS, 5, "Interface\\Icons\\Ability_Mount_WhiteTiger", BARMOD_TOOLTIP_TTPOS, "off", nil, ttfunc, ttinitfunc);
CT_RegisterMod(BARMOD_MODNAME_SCKEY, BARMOD_SUB_SCKEY, 4, "Interface\\Icons\\Spell_Holy_GreaterHeal", BARMOD_TOOLTIP_SCKEY, "switch", "None", cskeyfunc, cskeyinitfunc);
CT_RegisterMod(BARMOD_MODNAME_SELFCAST, BARMOD_SUB_SELFCAST, 4, "Interface\\Icons\\Spell_Holy_GreaterHeal", BARMOD_TOOLTIP_SELFCAST, "off", nil, selffunc, selfinitfunc);
function CT_ActionButton_OnClick()
if ( ( strsub( this:GetName(), 1, 3 ) ~= "CT3" and strsub( this:GetName(), 1, 3 ) ~= "CT4" ) or CT_Sidebar_ButtonInUse(this) ) then
if ( IsShiftKeyDown() ) then
PickupAction(CT_ActionButton_GetPagedID(this));
else
if ( MacroFrame_SaveMacro ) then
MacroFrame_SaveMacro();
end
if ( CT_NextSelfCast ) then
UseAction(CT_ActionButton_GetPagedID(this), 0, 1);
else
UseAction(CT_ActionButton_GetPagedID(this), 1, nil);
if ( SpellIsTargeting() and CT_SelfCast == 1 and not SpellCanTargetUnit("target") and SpellCanTargetUnit("player") ) then
SpellTargetUnit("player");
end
end
end
CT_ActionButton_Update();
CT_ActionButton_UpdateState();
end
end
CT_oldUseAction = UseAction;
function CT_newUseAction(id, cursor, onSelf)
if ( ( CT_SelfCastModifier and CT_SelfCast == 1 ) or ( CT_SelfCastModKey and CT_SelfCastModKey() ) ) then
onSelf = 1;
end
CT_oldUseAction(id, cursor, onSelf);
if ( SpellIsTargeting() and CT_SelfCast == 1 and not SpellCanTargetUnit("target") and SpellCanTargetUnit("player") ) then
SpellTargetUnit("player");
end
end
UseAction = CT_newUseAction;
CT_BarMod_oldUseContainerItem = UseContainerItem;
function CT_BarMod_newUseContainerItem(bag, item)
CT_BarMod_oldUseContainerItem(bag, item);
if ( ( CT_SelfCast == 1 or ( CT_SelfCastModKey and CT_SelfCastModKey() ) ) and SpellIsTargeting() and not SpellCanTargetUnit("target") and SpellCanTargetUnit("player") ) then
SpellTargetUnit("player");
end
end
UseContainerItem = CT_BarMod_newUseContainerItem;
function CT_BarMod_UpdateAllHotkeys()
local key = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=" };
local i;
for i = 1, 12, 1 do
CT_ActionButton_UpdateHotkeys(getglobal("CT_ActionButton" .. i));
CT_ActionButton_UpdateHotkeys(getglobal("CT2_ActionButton" .. i));
CT_ActionButton_UpdateHotkeys(getglobal("CT3_ActionButton" .. i));
CT_ActionButton_UpdateHotkeys(getglobal("CT4_ActionButton" .. i));
CT_ActionButton_UpdateHotkeys(getglobal("CT5_ActionButton" .. i));
if ( CT_ShowHotkeys and CT_ShowHotkeys == -1 ) then
getglobal("ActionButton" .. i .. "HotKey"):Hide();
getglobal("BonusActionButton" .. i .. "HotKey"):Hide();
getglobal("MultiBarBottomLeftButton" .. i .. "HotKey"):Hide();
getglobal("MultiBarBottomRightButton" .. i .. "HotKey"):Hide();
getglobal("MultiBarLeftButton" .. i .. "HotKey"):Hide();
getglobal("MultiBarRightButton" .. i .. "HotKey"):Hide();
else
getglobal("ActionButton" .. i .. "HotKey"):Show();
getglobal("BonusActionButton" .. i .. "HotKey"):Show();
getglobal("MultiBarBottomLeftButton" .. i .. "HotKey"):Show();
getglobal("MultiBarBottomRightButton" .. i .. "HotKey"):Show();
getglobal("MultiBarLeftButton" .. i .. "HotKey"):Show();
getglobal("MultiBarRightButton" .. i .. "HotKey"):Show();
if ( not CT_ShowHotkeys ) then
getglobal("ActionButton" .. i .. "HotKey"):SetText(key[i]);
getglobal("BonusActionButton" .. i .. "HotKey"):SetText(key[i]);
getglobal("MultiBarBottomLeftButton" .. i .. "HotKey"):Show();
getglobal("MultiBarBottomRightButton" .. i .. "HotKey"):Show();
getglobal("MultiBarLeftButton" .. i .. "HotKey"):Show();
getglobal("MultiBarRightButton" .. i .. "HotKey"):Show();
else
getglobal("ActionButton" .. i .. "HotKey"):SetText(GetBindingText(GetBindingKey("ACTIONBUTTON" .. i), "KEY_"));
getglobal("BonusActionButton" .. i .. "HotKey"):SetText(GetBindingText(GetBindingKey("ACTIONBUTTON" .. i), "KEY_"));
getglobal("MultiBarBottomLeftButton" .. i .. "HotKey"):SetText(GetBindingText(GetBindingKey("MULTIACTIONBAR1BUTTON" .. i), "KEY_"));
getglobal("MultiBarBottomRightButton" .. i .. "HotKey"):SetText(GetBindingText(GetBindingKey("MULTIACTIONBAR2BUTTON" .. i), "KEY_"));
getglobal("MultiBarLeftButton" .. i .. "HotKey"):SetText(GetBindingText(GetBindingKey("MULTIACTIONBAR4BUTTON" .. i), "KEY_"));
getglobal("MultiBarRightButton" .. i .. "HotKey"):SetText(GetBindingText(GetBindingKey("MULTIACTIONBAR3BUTTON" .. i), "KEY_"));
end
end
end
end
CT_oldActionButton_UpdateHotkeys = ActionButton_UpdateHotkeys;
function CT_newActionButton_UpdateHotkeys()
local key = { "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", "-", "=" };
if ( not CT_ShowHotkeys ) then
getglobal(this:GetName() .. "HotKey"):SetText(key[this:GetID()]);
getglobal(this:GetName() .. "HotKey"):Show();
else
CT_ActionButton_UpdateHotkeys();
end
end
ActionButton_UpdateHotkeys = CT_newActionButton_UpdateHotkeys;
CT_oldPickupPetAction = PickupPetAction;
function CT_newPickupPetAction(arg)
if ( not CT_HotbarButtons_Locked or IsShiftKeyDown() ) then
CT_oldPickupPetAction(arg);
end
end
PickupPetAction = CT_newPickupPetAction;
function CT_HotbarToggle(num)
local arr = {
"CT_HotbarLeft",
"CT_HotbarRight",
"CT_SidebarFrame",
"CT_SidebarFrame2",
"CT_HotbarTop"
};
if ( getglobal(arr[num]):IsVisible() ) then
getglobal(arr[num]):Hide();
else
getglobal(arr[num]):Show();
end
end
CT_oldSPAB = ShowPetActionBar;
function CT_newSPAB()
CT_oldSPAB();
if ( PetActionBarFrame:IsVisible() and CT_MF_ShowFrames ) then
CT_PetBar_Drag:Show();
else
CT_PetBar_Drag:Hide();
end
end
ShowPetActionBar = CT_newSPAB;
function CT_LeftHotbar_OnHide()
local x = CT_BABar_Drag:GetLeft()-(UIParent:GetRight()/2);
local y = CT_BABar_Drag:GetBottom()-40;
CT_BABar_Drag:ClearAllPoints();
CT_BABar_Drag:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOM", x, y);
x = CT_PetBar_Drag:GetLeft()-(UIParent:GetRight()/2);
y = CT_PetBar_Drag:GetBottom()-40;
CT_PetBar_Drag:ClearAllPoints();
CT_PetBar_Drag:SetPoint("BOTTOMLEFT", "UIParent", "BOTTOM", x, y);
end
-- Functions to display grid
function CT_updateActionButtons()
for i = 1, 12, 1 do
local ab = getglobal("ActionButton" .. i);
if ( CT_BottomBar_Enabled and CT_BottomBar_Enabled[UnitName("player")] and CT_BottomBar_HiddenFrames[UnitName("player")]["BarHotbar"] ) then
ab.showgrid = 0;
ab:Hide();
elseif ( not HasAction(ActionButton_GetPagedID(ab)) ) then
if ( CT_ShowGrid ) then
ab.showgrid = 1;
ab:Show();
else
ab.showgrid = 0;
ab:Hide();
end
elseif ( GetBonusBarOffset() > 0 ) then
ab.showgrid = 0;
ab:Hide();
else
ab.showgrid = 1;
ab:Show();
end
--[[local ab = getglobal("ActionButton" .. i);
if ( not HasAction(ActionButton_GetPagedID(ab)) or CT_ShowGrid ) then
if (
( not CT_ShowGrid and not HasAction(CT_ActionButton_GetPagedID(ab)) ) or
GetBonusBarOffset() > 0 or
( not CT_BottomBar_Enabled or not CT_BottomBar_Enabled[UnitName("player")] or
( not CT_BottomBar_RotatedFrames[UnitName("player")]["Bars"] and
not CT_BottomBar_HiddenFrames[UnitName("player")]["BarHotbarBackgroundLeft"] )
)
) then
ab.showgrid = 0;
ab:Hide();
else
ab.showgrid = 1;
ab:Show();
end
end
ab = getglobal("BonusActionButton" .. i);
if ( not HasAction(ActionButton_GetPagedID(ab)) or CT_ShowGrid ) then
if (
GetBonusBarOffset() == 0 or
( not CT_ShowGrid and not HasAction(CT_ActionButton_GetPagedID(ab)) ) or
( not CT_BottomBar_Enabled or not CT_BottomBar_Enabled[UnitName("player")] or
( not CT_BottomBar_RotatedFrames[UnitName("player")]["Bars"] and
not CT_BottomBar_HiddenFrames[UnitName("player")]["BarHotbarBackgroundLeft"] )
)
) then
ab.showgrid = 0;
ab:Hide();
else
ab.showgrid = 1;
ab:Show();
end
end]]
local ab = getglobal("BonusActionButton" .. i);
if ( CT_BottomBar_Enabled and CT_BottomBar_Enabled[UnitName("player")] and CT_BottomBar_HiddenFrames[UnitName("player")]["BarHotbar"] ) then
ab.showgrid = 0;
ab:Hide();
elseif ( not HasAction(ActionButton_GetPagedID(ab)) ) then
if ( CT_ShowGrid ) then
ab.showgrid = 1;
ab:Show();
else
ab.showgrid = 0;
ab:Hide();
end
elseif ( GetBonusBarOffset() == 0 ) then
ab.showgrid = 0;
ab:Hide();
else
ab.showgrid = 1;
ab:Show();
end
ab = getglobal("MultiBarBottomLeftButton" .. i);
if ( not HasAction(ActionButton_GetPagedID(ab)) and ab.showgrid == 0 ) then
if ( not CT_ShowGrid ) then
ab.showgrid = 0;
ab:Hide();
else
ab.showgrid = 1;
ab:Show();
end
end
ab = getglobal("MultiBarBottomRightButton" .. i);
if ( not HasAction(ActionButton_GetPagedID(ab)) and ab.showgrid == 0 ) then
if ( not CT_ShowGrid ) then
ab.showgrid = 0;
ab:Hide();
else
ab.showgrid = 1;
ab:Show();
end
end
ab = getglobal("MultiBarLeftButton" .. i);
if ( not HasAction(ActionButton_GetPagedID(ab)) and ab.showgrid == 0 ) then
if ( not CT_ShowGrid ) then
ab.showgrid = 0;
ab:Hide();
else
ab.showgrid = 1;
ab:Show();
end
end
ab = getglobal("MultiBarRightButton" .. i);
if ( not HasAction(ActionButton_GetPagedID(ab)) and ab.showgrid == 0 ) then
if ( not CT_ShowGrid ) then
ab.showgrid = 0;
ab:Hide();
else
ab.showgrid = 1;
ab:Show();
end
end
end
end
CT_oldActionButton_Update = ActionButton_Update;
function CT_newActionButton_Update()
CT_oldActionButton_Update();
if ( not HasAction(CT_ActionButton_GetPagedID(this)) and this.showgrid == 0 ) then
if ( not CT_ShowGrid or ( ( not CT_BottomBar_Enabled or not CT_BottomBar_Enabled[UnitName("player")] or ( not CT_BottomBar_RotatedFrames[UnitName("player")]["Bars"] and not CT_BottomBar_HiddenFrames[UnitName("player")]["BarHotbarBackgroundLeft"] ) ) and ( strsub(this:GetName(), 1, 12) == "ActionButton" or strsub(this:GetName(), 1, 17) == "BonusActionButton" ) ) ) then
this.showgrid = 0;
this:Hide();
return;
else
this.showgrid = 1;
this:Show();
return;
end
end
if (
( strsub(this:GetName(), 1, 12) == "ActionButton" and GetBonusBarOffset() > 0 ) or
( strsub(this:GetName(), 1, 12) == "MultiBarLeft" and not SHOW_MULTI_ACTIONBAR_4 ) or
( strsub(this:GetName(), 1, 13) == "MultiBarRight" and not SHOW_MULTI_ACTIONBAR_3 ) or
( strsub(this:GetName(), 1, 18) == "MultiBarBottomLeft" and not SHOW_MULTI_ACTIONBAR_1 ) or
( strsub(this:GetName(), 1, 19) == "MultiBarBottomRight" and not SHOW_MULTI_ACTIONBAR_2 ) or
( strsub(this:GetName(), 1, 17) == "BonusActionButton" and GetBonusBarOffset() == 0 )
) then
this.showgrid = 0;
this:Hide();
elseif ( CT_ShowGrid ) then
this.showgrid = 1;
this:Show();
end
end
ActionButton_Update = CT_newActionButton_Update;
function CT_newActionButton_UpdateUsable()
local icon = getglobal(this:GetName().."Icon");
if ( not icon ) then
return;
end
local normalTexture = getglobal(this:GetName().."NormalTexture");
local isUsable, notEnoughMana = IsUsableAction(ActionButton_GetPagedID(this));
if ( isUsable ) then
if ( this.inRange and this.inRange == 0 ) then
icon:SetVertexColor(CT_FadeColor.r, CT_FadeColor.g, CT_FadeColor.b);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(CT_FadeColor.r, CT_FadeColor.g, CT_FadeColor.b); end
else
icon:SetVertexColor(1.0, 1.0, 1.0);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(1.0, 1.0, 1.0); end
end
elseif ( notEnoughMana ) then
icon:SetVertexColor(0.5, 0.5, 1.0);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(0.5, 0.5, 1.0); end
else
icon:SetVertexColor(0.4, 0.4, 0.4);
if ( not CT_ShowGrid ) then normalTexture:SetVertexColor(0.4, 0.4, 0.4); end
end
end
ActionButton_UpdateUsable = CT_newActionButton_UpdateUsable;
ActionButton_HideGrid = CT_ActionButton_HideGrid;
function CT_newActionButton_ShowGrid(button)
if ( not button ) then
button = this;
end
button.showgrid = button.showgrid+1;
getglobal(button:GetName().."NormalTexture"):SetVertexColor(1.0, 1.0, 1.0, 1.0);
if (
( strsub(button:GetName(), 1, 12) == "ActionButton" and ( ( CT_BottomBar_Enabled and CT_BottomBar_Enabled[UnitName("player")] and CT_BottomBar_HiddenFrames[UnitName("player")] and CT_BottomBar_HiddenFrames[UnitName("player")]["BarHotbar"] ) or GetBonusBarOffset() > 0 ) ) or
( strsub(button:GetName(), 1, 12) == "MultiBarLeft" and not SHOW_MULTI_ACTIONBAR_4 ) or
( strsub(button:GetName(), 1, 13) == "MultiBarRight" and not SHOW_MULTI_ACTIONBAR_3 ) or
( strsub(button:GetName(), 1, 18) == "MultiBarBottomLeft" and not SHOW_MULTI_ACTIONBAR_1 ) or
( strsub(button:GetName(), 1, 19) == "MultiBarBottomRight" and not SHOW_MULTI_ACTIONBAR_2 )
) then
button:Hide();
elseif ( strsub(button:GetName(), 1, 17) == "BonusActionButton" and ( ( CT_BottomBar_Enabled and CT_BottomBar_Enabled[UnitName("player")] and CT_BottomBar_HiddenFrames[UnitName("player")] and CT_BottomBar_HiddenFrames[UnitName("player")]["BarHotbar"] ) or GetBonusBarOffset() == 0 ) ) then
button:Hide();
else
button:Show();
end
end
ActionButton_ShowGrid = CT_newActionButton_ShowGrid;
CT_oldActionButton_OnEvent = ActionButton_OnEvent;
function CT_newActionButton_OnEvent(event)
if ( event == "UPDATE_BONUS_ACTIONBAR" ) then
ActionButton_Update();
else
CT_oldActionButton_OnEvent(event);
end
end
ActionButton_OnEvent = CT_newActionButton_OnEvent;
MultiActionBar_UpdateGrid = function(barName)
for i=1, NUM_MULTIBAR_BUTTONS do
if ( CT_ShowGrid ) then
ActionButton_ShowGrid(getglobal(barName.."Button"..i));
else
ActionButton_HideGrid(getglobal(barName.."Button"..i));
end
end
end
function CT_BarMod_GetSpellName(id)
if ( not CTTooltip ) then
return;
end
CTTooltipTextLeft1:SetText("");
CTTooltip:SetAction(id);
local name = CTTooltipTextLeft1:GetText();
if ( name and name ~= "" ) then
return name;
end
end
CT_BarMod_Cooldowns = { };
CT_BarMod_oldCooldownFrame_SetTimer = CooldownFrame_SetTimer;
function CT_BarMod_newCooldownFrame_SetTimer(this, start, duration, enable)
CT_BarMod_oldCooldownFrame_SetTimer(this, start, duration, enable);
if ( duration >= 2 and start > 0 and enable > 0 ) then
CT_BarMod_Cooldowns[this:GetParent():GetName()] = { start, duration, duration, CT_BarMod_GetSpellName(CT_ActionButton_GetPagedID(this:GetParent())) };
else
CT_BarMod_Cooldowns[this:GetParent():GetName()] = nil;
end
end
CooldownFrame_SetTimer = CT_BarMod_newCooldownFrame_SetTimer;
function CT_BarMod_UpdateCooldownCount(btn)
if ( not btn ) then
for b = 1, 7, 1 do
local prefix = "CT" .. b .. "_";
if ( b == 1 ) then
prefix = "CT_";
elseif ( b == 6 ) then
prefix = "";
elseif ( b == 7 ) then
prefix = "Bonus";
end
for i = 1, 12, 1 do
if ( CT_CDCount == 1 ) then
local name = prefix .. "ActionButton" .. i;
local btn = getglobal(name);
local id = CT_ActionButton_GetPagedID(btn);
local count = getglobal(name .. "CDCount");
if ( CT_BarMod_Cooldowns[name] and CT_BarMod_Cooldowns[name][3] > 0 ) then
local form = CT_BarMod_FormatCooldown(CT_BarMod_Cooldowns[name][3]);
count:Show();
count:SetText(form);
else
count:Hide();
end
else
getglobal(prefix .. "ActionButton" .. i .. "CDCount"):Hide();
end
end
end
else
if ( CT_CDCount == 1 ) then
local name = btn:GetName();
local id = CT_ActionButton_GetPagedID(btn);
local count = getglobal(btn:GetName() .. "CDCount");
if ( CT_BarMod_Cooldowns[name] and CT_BarMod_Cooldowns[name][3] > 0 ) then
local form = CT_BarMod_FormatCooldown(CT_BarMod_Cooldowns[name][3]);
count:Show();
count:SetText(form);
else
count:Hide();
end
else
getglobal(btn:GetName() .. "CDCount"):Hide();
end
end
end
function CT_BarMod_FormatCooldown(cd)
if ( cd >= 3600 ) then
return floor(cd/3600) .. "h";
elseif ( cd > 60 ) then
local m = mod(cd, 60);
if ( m < 10 ) then
m = "0" .. m;
end
return floor(cd/60) .. ":" .. m;
else
return cd;
end
end
function CT_BarMod_FindRanges()
CT_BarMod_MaxRanges = { };
CT_BarMod_MinRanges = { };
for i = 1, 120, 1 do
CTTooltipTextLeft1:SetText("");
CTTooltip:SetAction(i);
if ( CTTooltipTextLeft1:GetText() and CTTooltipTextLeft1:GetText() ~= "" ) then
local range;
for y = 1, CTTooltip:NumLines(), 1 do
CT_Print("Looping " .. y .. "/" .. CTTooltip:NumLines());
local useless, useless, maxRange = string.find(getglobal("CTTooltipTextRight" .. y):GetText() or "", "^(%d+) yd range$");
if ( maxRange ) then
CT_BarMod_MaxRanges[i] = tonumber(maxRange);
break;
else
local useless, useless, maxRange = string.find(getglobal("CTTooltipTextLeft" .. y):GetText() or "", "^(%d+) yd range$");
if ( maxRange ) then
CT_BarMod_MaxRanges[i] = tonumber(maxRange);
break;
else
local useless, useless, minRange, maxRange = string.find(getglobal("CTTooltipTextRight" .. y):GetText() or "", "^(%d+)%-(%d+) yd range$");
if ( str ) then
CT_BarMod_MaxRanges[i] = tonumber(maxRange);
CT_BarMod_MinRanges[i] = tonumber(minRange);
break;
else
local useless, useless, minRange, maxRange = string.find(getglobal("CTTooltipTextLeft" .. y):GetText() or "", "^(%d+)%-(%d+) yd range$");
if ( str ) then
CT_BarMod_MaxRanges[i] = tonumber(maxRange);
CT_BarMod_MinRanges[i] = tonumber(minRange);
break;
end
end
end
end
end
end
end
end
function CT_BarMod_FindTargetRange()
if ( not UnitExists("target") ) then
return "";
end
local currMin = 0;
local currMax = 1000;
for k, v in CT_BarMod_MaxRanges do
if ( IsActionInRange(v) == 1 and v < currMax ) then
break;
end
end
end
function CT_BarMod_SetCCScaling(scale)
if ( not CT_BarMod_EnteredWorld ) then
CT_BarMod_RequiresScalingUpdate = scale;
return;
end
for i = 1, 12, 1 do
getglobal("CT_ActionButton" .. i .. "CD"):SetScale(scale);
getglobal("CT2_ActionButton" .. i .. "CD"):SetScale(scale);
getglobal("CT3_ActionButton" .. i .. "CD"):SetScale(scale);
getglobal("CT4_ActionButton" .. i .. "CD"):SetScale(scale);
getglobal("CT5_ActionButton" .. i .. "CD"):SetScale(scale);
getglobal("ActionButton" .. i .. "CD"):SetScale(scale);
getglobal("BonusActionButton" .. i .. "CD"):SetScale(scale);
getglobal("CT_ActionButton" .. i .. "CD").scale = scale;
getglobal("CT2_ActionButton" .. i .. "CD").scale = scale;
getglobal("CT3_ActionButton" .. i .. "CD").scale = scale;
getglobal("CT4_ActionButton" .. i .. "CD").scale = scale;
getglobal("CT5_ActionButton" .. i .. "CD").scale = scale;
getglobal("ActionButton" .. i .. "CD").scale = scale;
getglobal("BonusActionButton" .. i .. "CD").scale = scale;
end
end
if ( CT_CPFrame_ShowSlider ) then
-- Add stuff for CC scaling
local function ccscalingonchangefunc(modName, value)
if ( value ) then
CT_Mods[modName]["modValue"] = value;
CT_BarMod_SetCCScaling(value);
CT_SaveInfoName(modName);
end
end
local function ccscalinginitfunction(modName)
CT_BarMod_SetCCScaling(CT_Mods[modName]["modValue"] or 1);
end
local function ccscalingfunction(modName, button)
if ( CT_CPFrame_IsSliderVisible() ) then
CT_CPFrame_HideSlider();
else
CT_CPFrame_ShowSlider(button, modName, ( CT_Mods[modName]["modValue"] or 1 ), ccscalingonchangefunc, 0.75, 1.5, 0.05, "0.75", "1.5", modName, "Drag this slider to increase or decrease the size of the CooldownCount text", "%s");
end
end
CT_RegisterMod(BARMOD_MODNAME_CCSCALING, BARMOD_SUB_CCSCALING, 2, "Interface\\Icons\\Spell_Holy_MindVision", BARMOD_TOOLTIP_CCSCALING, "slider", nil, ccscalingfunction, ccscalinginitfunction);
end
Generated by GNU Enscript 1.6.5.90.