CT_RelocateTooltip = 0; reloadfunction = function () ConsoleExec("reloadui"); CT_Print(" "..CT_MASTERMOD_WARNING_RELOAD, 1, 1, 0); end resetfunction = function() CT_Print(" "..CT_MASTERMOD_WARNING_RESET, 1, 1, 0); end CT_RegisterMod(CT_MASTERMOD_MODNAME_RESET, "", 5, "Interface\\Icons\\Spell_Frost_WindWalkOn", CT_MASTERMOD_TOOLTIP_RESET, "switch", "", resetfunction); CT_RegisterMod(CT_MASTERMOD_MODNAME_RELOAD, "", 5, "Interface\\Icons\\Ability_Whirlwind", CT_MASTERMOD_TOOLTIP_RELOAD, "switch", "", reloadfunction); SlashCmdList["RESETOPTIONS"] = function(msg) CT_Options[UnitName("player")] = { }; CT_Print(CT_MASTERMOD_OPTIONRESET, 1, 1, 0); end SLASH_RESETOPTIONS1 = "/resetoptions"; function CT_QuestTimer_UpdatePosition() if ( CT_BuffFrame and CT_BuffFrame:IsVisible() ) then if ( Minimap:IsVisible() ) then QuestTimerFrame:ClearAllPoints(); QuestTimerFrame:SetPoint("CENTER", "MinimapCluster", "LEFT", -50, 0); else QuestTimerFrame:ClearAllPoints(); QuestTimerFrame:SetPoint("RIGHT", "MinimapCluster", "RIGHT", -25, 0); end else QuestTimerFrame:ClearAllPoints(); QuestTimerFrame:SetPoint("TOP", "MinimapCluster", "BOTTOM", 10, 0); end end CT_QuestTimer_oldToggleMinimap = ToggleMinimap; function CT_QuestTimer_newToggleMinimap() CT_QuestTimer_oldToggleMinimap(); CT_QuestTimer_UpdatePosition(); end ToggleMinimap = CT_QuestTimer_newToggleMinimap; CT_oldUIParent_ManageRightSideFrames = UIParent_ManageRightSideFrames; function CT_newUIParent_ManageRightSideFrames() CT_oldUIParent_ManageRightSideFrames(); CT_QuestTimer_UpdatePosition(); end UIParent_ManageRightSideFrames = CT_newUIParent_ManageRightSideFrames; function CT_QuestTimerFrame_OnShow() CT_QuestTimer_UpdatePosition(); return; end function CT_QuestTimerFrame_OnHide() return; end -- Redefine how the show/hide happens QuestTimerFrame_OnShow = CT_QuestTimerFrame_OnShow; QuestTimerFrame_OnHide = CT_QuestTimerFrame_OnHide; CT_OldDD_AddButton = UIDropDownMenu_AddButton; function CT_NewDD_AddButton(info, level) if ( not level ) then level = 1; end local listFrame = getglobal("DropDownList"..level); local listFrameName = listFrame:GetName(); local index = listFrame.numButtons + 1; local width; -- If too many buttons error out if ( index > UIDROPDOWNMENU_MAXBUTTONS ) then return; end CT_OldDD_AddButton(info, level); end UIDropDownMenu_AddButton = CT_NewDD_AddButton; CT_oldGT_SetDefaultAnchor = GameTooltip_SetDefaultAnchor; function CT_GT_SetDefaultAnchor(tooltip, parent) if ( tooltip == GameTooltip and CT_RelocateTooltip == 1 ) then tooltip:SetOwner(parent, "ANCHOR_NONE"); tooltip:ClearAllPoints(); tooltip:SetPoint("TOP", "UIParent", "TOP"); else CT_oldGT_SetDefaultAnchor(tooltip, parent); end end GameTooltip_SetDefaultAnchor = CT_GT_SetDefaultAnchor; local relocatefunc = function(modId, text) local val = CT_Mods[modId]["modStatus"]; if ( val == "on" ) then CT_RelocateTooltip = 1; CT_Print(" "..CT_MASTERMOD_ON_RELOCATETT, 1, 1, 0); else CT_RelocateTooltip = 0; CT_Print(" "..CT_MASTERMOD_OFF_RELOCATETT, 1, 1, 0); end end local relocateinitfunc = function(modId) local val = CT_Mods[modId]["modStatus"]; if ( val == "on" ) then CT_RelocateTooltip = 1; else CT_RelocateTooltip = 0; end end CT_RegisterMod(CT_MASTERMOD_MODNAME_RELOCATETT, CT_MASTERMOD_SUBNAME_RELOCATETT, 5, "Interface\\Icons\\INV_Misc_Map_01", CT_MASTERMOD_TOOLTIP_RELOCATETT, "off", nil, relocatefunc, relocateinitfunc); CT_MasterMod_TimestampInitFunc = function(modId) local val = CT_Mods[modId]["modValue"]; if ( val == "12h" ) then for i = 1, 7, 1 do CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage; getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b) if ( msg ) then CT_BarMod_OriginalChatHandlers[i](self, "[" .. tonumber(date("%I")) .. date(":%M") .. "] " .. msg, r, g, b); else CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b); end end end elseif ( val == "24h" ) then for i = 1, 7, 1 do CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage; getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b) if ( msg ) then CT_BarMod_OriginalChatHandlers[i](self, "[" .. date("%H:%M") .. "] " .. msg, r, g, b); else CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b); end end end elseif ( val == "12hs" ) then for i = 1, 7, 1 do CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage; getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b) if ( msg ) then CT_BarMod_OriginalChatHandlers[i](self, "[" .. tonumber(date("%I")) .. date(":%M:%S") .. "] " .. msg, r, g, b); else CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b); end end end elseif ( val == "24hs" ) then for i = 1, 7, 1 do CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage; getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b) if ( msg ) then CT_BarMod_OriginalChatHandlers[i](self, "[" .. date("%H:%M:%S") .. "] " .. msg, r, g, b); else CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b); end end end elseif ( val == "Off" ) then for i = 1, 7, 1 do CT_BarMod_OriginalChatHandlers[i] = getglobal("ChatFrame" .. i).AddMessage; end end end CT_BarMod_OriginalChatHandlers = { }; local timestampfunc = function(modId, text) if ( getn(CT_BarMod_OriginalChatHandlers) == 0 ) then CT_MasterMod_TimestampInitFunc(modId); end local val = CT_Mods[modId]["modValue"]; if ( val == "Off" ) then val = "12h"; for i = 1, 7, 1 do getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b) if ( msg ) then CT_BarMod_OriginalChatHandlers[i](self, "[" .. tonumber(date("%I")) .. date(":%M") .. "] " .. msg, r, g, b); else CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b); end end end CT_Print(" " .. CT_MASTERMOD_12H_TIMESTAMP, 1, 1, 0); elseif ( val == "12h" ) then val = "24h"; for i = 1, 7, 1 do getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b) if ( msg ) then CT_BarMod_OriginalChatHandlers[i](self, "[" .. date("%H:%M") .. "] " .. msg, r, g, b); else CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b); end end end CT_Print(" " .. CT_MASTERMOD_24H_TIMESTAMP, 1, 1, 0); elseif ( val == "24h" ) then val = "12hs"; for i = 1, 7, 1 do getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b) if ( msg ) then CT_BarMod_OriginalChatHandlers[i](self, "[" .. tonumber(date("%I")) .. date(":%M:%S") .. "] " .. msg, r, g, b); else CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b); end end end CT_Print(" " .. CT_MASTERMOD_12HS_TIMESTAMP, 1, 1, 0); elseif ( val == "12hs" ) then val = "24hs"; for i = 1, 7, 1 do getglobal("ChatFrame" .. i).AddMessage = function(self, msg, r, g, b) if ( msg ) then CT_BarMod_OriginalChatHandlers[i](self, "[" .. date("%H:%M:%S") .. "] " .. msg, r, g, b); else CT_BarMod_OriginalChatHandlers[i](self, msg, r, g, b); end end end CT_Print(" " .. CT_MASTERMOD_24HS_TIMESTAMP, 1, 1, 0); elseif ( val == "24hs" ) then val = "Off"; for i = 1, 7, 1 do getglobal("ChatFrame" .. i).AddMessage = CT_BarMod_OriginalChatHandlers[i]; end CT_Print(" " .. CT_MASTERMOD_OFF_TIMESTAMP, 1, 1, 0); end if ( text ) then text:SetText(val); end CT_Mods[modId]["modValue"] = val; end CT_RegisterMod(CT_MASTERMOD_MODNAME_TIMESTAMP, CT_MASTERMOD_SUBNAME_TIMESTAMP, 5, "Interface\\Icons\\INV_Misc_PocketWatch_03", CT_MASTERMOD_TOOLTIP_TIMESTAMP, "switch", "Off", timestampfunc, CT_MasterMod_TimestampInitFunc); CT_oldSetItemButtonCount = SetItemButtonCount; function CT_newItemButtonCount(button, count) CT_oldSetItemButtonCount(button, count); if ( button and button.count ) then getglobal(button:GetName().."Count"):SetText(button.count); end end SetItemButtonCount = CT_newItemButtonCount; function MasterLockFunction(modId) local val = CT_Mods[modId]["modStatus"]; if ( val == "on" ) then CT_LockMovables(1); CT_Print(" " .. CT_MASTERMOD_UNLOCKED, 1, 1, 0); else CT_Print(" " .. CT_MASTERMOD_LOCKED, 1, 1, 0); CT_LockMovables(nil); end end function MasterLockInitFunction(modId) local val = CT_Mods[modId]["modStatus"]; if ( val == "on" ) then CT_MF_ShowFrames = 1; else CT_MF_ShowFrames = nil; end end function MasterResetFunction(modId, text) CT_ResetFrame:Show(); if ( text ) then text:SetText(""); end end function CT_MasterMod_OnChatScroll() if ( tonumber(arg1) > 0 ) then if ( CT_Mods[CT_MASTERMOD_MODNAME_SCROLL] and CT_Mods[CT_MASTERMOD_MODNAME_SCROLL]["modValue"] == "3" and IsShiftKeyDown()) then this:ScrollToTop(); elseif ( CT_Mods[CT_MASTERMOD_MODNAME_SCROLL] and CT_Mods[CT_MASTERMOD_MODNAME_SCROLL]["modValue"] == "3" and IsControlKeyDown()) then this:PageUp(); else this:ScrollUp(); end else if ( CT_Mods[CT_MASTERMOD_MODNAME_SCROLL] and CT_Mods[CT_MASTERMOD_MODNAME_SCROLL]["modValue"] == "3" and IsShiftKeyDown()) then this:ScrollToBottom(); elseif ( CT_Mods[CT_MASTERMOD_MODNAME_SCROLL] and CT_Mods[CT_MASTERMOD_MODNAME_SCROLL]["modValue"] == "3" and IsControlKeyDown()) then this:PageDown(); else this:ScrollDown(); end end end local function ChatScrollFunction(modId, text) local val = CT_Mods[modId]["modValue"]; if ( val == "1" ) then val = "2"; CT_Print(CT_MASTERMOD_CHATSCROLLON, 1, 1, 0); for i = 1, 7, 1 do getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", CT_MasterMod_OnChatScroll); getglobal("ChatFrame" .. i):EnableMouseWheel(true); end elseif ( val == "2" ) then val = "3"; CT_Print(CT_MASTERMOD_CHATSCROLLONSHIFT, 1, 1, 0); for i = 1, 7, 1 do getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", CT_MasterMod_OnChatScroll); getglobal("ChatFrame" .. i):EnableMouseWheel(true); end elseif ( val == "3" ) then val = "1"; CT_Print(CT_MASTERMOD_CHATSCROLLOFF, 1, 1, 0); for i = 1, 7, 1 do getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", nil); getglobal("ChatFrame" .. i):EnableMouseWheel(false); end end if ( text ) then text:SetText(val); end CT_Mods[modId]["modValue"] = val; end local function ChatScrollInitFunction(modId) local val = CT_Mods[modId]["modValue"]; if ( val ~= "1" ) then for i = 1, 7, 1 do getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", CT_MasterMod_OnChatScroll); getglobal("ChatFrame" .. i):EnableMouseWheel(true); end else for i = 1, 7, 1 do getglobal("ChatFrame" .. i):SetScript("OnMouseWheel", nil); getglobal("ChatFrame" .. i):EnableMouseWheel(false); end end end CT_RegisterMod(CT_MASTERMOD_MODNAME_UNLOCK, CT_MASTERMOD_SUBNAME_UNLOCK, 1, "Interface\\Icons\\INV_Misc_Key_03", CT_MASTERMOD_TOOLTIP_UNLOCK, "off", nil, MasterLockFunction, MasterLockInitFunction, 11); CT_RegisterMod(CT_MASTERMOD_MODNAME_RESETFRAMES, CT_MASTERMOD_SUBNAME_RESETFRAMES, 1, "Interface\\Icons\\INV_Misc_Key_04", CT_MASTERMOD_TOOLTIP_RESETFRAMES, "switch", "", MasterResetFunction, nil, 12); CT_RegisterMod(CT_MASTERMOD_MODNAME_SCROLL, "", 5, "Interface\\Icons\\INV_Misc_Key_03", CT_MASTERMOD_TOOLTIP_SCROLL, "switch", "1", ChatScrollFunction, ChatScrollInitFunction); -- Buy full stack when alt-rightclicking an item local CT_MasterMod_oldBuyMerchantItem = BuyMerchantItem; function BuyMerchantItem(id, qty) local maxStack = GetMerchantItemMaxStack(id); local money = GetMoney(); local name, texture, price, quantity, numAvailable, isUsable = GetMerchantItemInfo(id); if ( not qty and IsAltKeyDown() ) then if ( maxStack*price > money ) then maxStack = floor(money/price); end CT_MasterMod_oldBuyMerchantItem(id, maxStack); else CT_MasterMod_oldBuyMerchantItem(id, qty); end end --[[ function CT_FindTellTarget(text) if ( not text ) then return; end text = strlower(text); -- /tell local iStart, iEnd, nick = string.find(text, "^/tell ([^%s]+)$"); if ( iStart and iEnd and nick ) then return nick, "/tell "; end -- /t local iStart, iEnd, nick = string.find(text, "^/t ([^%s]+)$"); if ( iStart and iEnd and nick ) then return nick, "/t "; end -- /whisper local iStart, iEnd, nick = string.find(text, "^/whisper ([^%s]+)$"); if ( iStart and iEnd and nick ) then return nick, "/whisper "; end -- /w local iStart, iEnd, nick = string.find(text, "^/w ([^%s]+)$"); if ( iStart and iEnd and nick ) then return nick, "/w "; end -- No result, return nil return nil; end CT_oldChatEdit_ExtractTellTarget = ChatEdit_ExtractTellTarget; function CT_newChatEdit_ExtractTellTarget(editBox, msg) if ( not this.noParse ) then CT_oldChatEdit_ExtractTellTarget(editBox, msg); else this.noParse = nil; end end ChatEdit_ExtractTellTarget = CT_newChatEdit_ExtractTellTarget; CT_oldChatEdit_OnTextChanged = ChatEdit_OnTextChanged; function CT_newChatEdit_OnTextChanged() CT_oldChatEdit_OnTextChanged(); if ( this.hasCompleted ) then this.hasCompleted = nil; return; end if ( this.lastTextLen and strlen(this:GetText()) <= this.lastTextLen ) then this.lastTextLen = strlen(this:GetText()); return; end this.noParse = nil; -- Auto Completion local textlen = strlen(this:GetText()); this.lastTextLen = textlen; local text, type = CT_FindTellTarget(this:GetText()); if ( not text ) then return; end local numFriends = GetNumFriends(); local name; if ( numFriends > 0 ) then for i=1, numFriends do name = GetFriendInfo(i); if ( strfind(strlower(name), "^"..text) ) then this.noParse = 1; this:SetText(type .. name); this:HighlightText(textlen, -1); this.hasCompleted = 1; break; end end end -- Hack to scan offline members local oldOffline = GuildFrameLFGButton:GetChecked(); SetGuildRosterShowOffline(1); local numGuildMembers = GetNumGuildMembers(); if ( numGuildMembers > 0 ) then for i=1, numGuildMembers do name = GetGuildRosterInfo(i); if ( strfind(strlower(name), "^"..text) ) then this.noParse = 1; this:SetText(type .. name); this:HighlightText(textlen, -1); this.hasCompleted = 1; break; end end end this.noParse = nil; SetGuildRosterShowOffline(oldOffline); end ChatEdit_OnTextChanged = CT_newChatEdit_OnTextChanged; ]]