---------------------------- -- Variables + Constants ---------------------------- -- Keeps track of player class and level for the session. local playerList = {}; -- Winner? local TITAN_HONORPLUS_BGWINNER = nil; -- Time until accepting battlegrounds invite local TITAN_HONORPLUS_BGCONFIRM = 0; -- Last known bonus from battlegrounds local TITAN_HONORPLUS_CURRENTBONUS = 0; -- Time of last PvP damage local TITAN_HONORPLUS_PVPDMG = 0; -- Interval to send API BG Data requests, in seconds. local TITAN_HONORPLUS_BGAPI_INTERVAL = 5; -- The line last used to set tooltip honor info local TITAN_HONORPLUS_TOOLTIPLINE = nil; -- Next time to check. local TITAN_HONORPLUS_BGAPI_NEXT = 0; -- Timer local TITAN_HONORPLUS_BGAUTOJOINTIMER = 10; -- Gives standard class colour TITAN_HONORPLUS_CLASSCOLORINDEX = { [1] = "|cffff7d0a", [2] = "|cffaad2aa", [3] = "|cff69cdf0", [4] = "|cfff58cb9", [5] = "|cffffffff", [6] = "|cfffff569", [7] = "|cfff58cb9", [8] = "|cffc88296", [9] = "|cffc89b6e", } -- Default saved values. TITAN_HONORPLUS_DEFAULTS = { ['todayd'] = 0, ['todayb'] = 0, ['todaydk'] = 0, ['todayhk'] = 0, ['todaycp'] = 0, ['todaycp2'] = 0, ['yesterday'] = 0, ['lastweek'] = 0, ['weekdk'] = 0, ['log'] = {}, }; -- Titan ID local TITAN_HONORPLUS_ID = "HonorPlus"; -- PvP Icon Directory local TITAN_HONORPLUS_ICON_PATH = "Interface\\PvPRankBadges\\PvPRank"; -- Converting honor-gain string format to double-format. local TITAN_HONORPLUS_SEARCH = string.gsub(COMBATLOG_HONORGAIN,'%(','%%('); local TITAN_HONORPLUS_SEARCH = string.gsub(TITAN_HONORPLUS_SEARCH,'%)','%%)'); local TITAN_HONORPLUS_SEARCH = string.gsub(TITAN_HONORPLUS_SEARCH,'%%s','(.+)'); local TITAN_HONORPLUS_SEARCH = string.gsub(TITAN_HONORPLUS_SEARCH,'%%d','(%%d+)'); -- Set when loaded local vLoaded = nil; local vVar = nil; -- Playername|Realmname local vC = nil; ---------------------------- -- Function Hooks ---------------------------- local old_WorldStateScoreFrame_Update; -- Battlegrounds score sheet. Display update. local old_GameTooltip_OnHide; -- Tooltip is hidden, remove custom honor line. local old_WorldStateScoreFrame_Resize; -- When we add a new column to the scoreboard we need to resize it differently. local old_StaticPopup_OnHide; -- Detects when you click 'hide' on BG invite request. ---------------------------- -- On Load ---------------------------- function TitanPanelHonorPlusButton_OnLoad() -- Register for TitanPanel TitanPanelHonorPlus_Register(); -- ** Events ** -- For initialisation this:RegisterEvent("VARIABLES_LOADED"); -- For registering deaths by Players. this:RegisterEvent("PLAYER_DEAD"); -- And auto-release this:RegisterEvent("CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS"); this:RegisterEvent("CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE"); -- For getting honor bonus data this:RegisterEvent("UPDATE_BATTLEFIELD_SCORE"); this:RegisterEvent("UPDATE_WORLD_STATES"); -- Tooltip modifications this:RegisterEvent("UPDATE_MOUSEOVER_UNIT"); -- Updating titan button/tooltip this:RegisterEvent("CHAT_MSG_COMBAT_HONOR_GAIN"); this:RegisterEvent("PLAYER_PVP_KILLS_CHANGED"); this:RegisterEvent("PLAYER_PVP_RANK_CHANGED"); -- For checking BG queue status this:RegisterEvent("UPDATE_BATTLEFIELD_STATUS"); -- Get LeftClick Event this:RegisterForClicks("LeftButtonUp"); -- ** Function hooks ** -- Update of BG scoreboard old_WorldStateScoreFrame_Update = WorldStateScoreFrame_Update; WorldStateScoreFrame_Update = TitanHonorPlus_WorldStateScoreFrame_Update; -- Resizing the BG scoreboard old_WorldStateScoreFrame_Resize = WorldStateScoreFrame_Resize; WorldStateScoreFrame_Resize = TitanHonorPlus_WorldStateScoreFrame_Resize -- Tooltip is hidden old_GameTooltip_OnHide = GameTooltip_OnHide; GameTooltip_OnHide = TitanHonorPlus_GameTooltip_OnHide; -- Dynamic query dialog is hidden old_StaticPopup_OnHide = StaticPopup_OnHide; StaticPopup_OnHide = TitanHonorPlus_StaticPopup_OnHide; -- Kill List. SlashCmdList["TITANHONORPLUS"] = TitanHonorPlus_PrintKills; SLASH_TITANHONORPLUS1 = "/titanhonorplus"; SLASH_TITANHONORPLUS2 = "/thp"; end -- Setup Titan Registry function TitanPanelHonorPlus_Register() this.registry = { id = TITAN_HONORPLUS_ID, menuText = TITAN_HONORPLUS_MENU_TEXT, buttonTextFunction = "TitanPanelHonorPlusButton_GetButtonText", tooltipTitle = TITAN_HONORPLUS_TOOLTIP, tooltipTextFunction = "TitanPanelHonorPlusButton_GetTooltipText", frequency = 1, savedVariables = { ShowIcon = 1, ShowLabelText = 1, AlternateDisplay = 0, SortByHonor = 0, SortByKills = 1, UseCalculatedToday = 0, SCT = 1, Print_Bonus = 1, ScoreBoard_Kills = 1, ScoreBoard_Opium = 1, ScoreBoard_ClassColorSymbol = 0, ScoreBoard_ClassColorList = 1, Tooltip = 1, AutoRelease = 1, AutoJoinBG = 1, } }; end ---------------------------- -- Initialization ---------------------------- function TitanHonorPlus_Initialize() if (vVar) then local iName, xName; if (TITAN_HONORPLUS == nil) then TITAN_HONORPLUS = { }; end vC = UnitName("player").."|"..GetCVar("realmName"); if (TITAN_HONORPLUS[vC] == nil) then TITAN_HONORPLUS[vC] = { }; end for iName, xName in TITAN_HONORPLUS_DEFAULTS do if (TITAN_HONORPLUS[vC][iName] == nil) then TITAN_HONORPLUS[vC][iName] = xName; end end for iName, xName in TITAN_HONORPLUS[vC]['log'] do if (type(xName) == "number") then TITAN_HONORPLUS[vC]['log'][iName] = { ['k'] = xName, ['h'] = 0, ['r'] = "Unknown Rank" }; end end info = TITAN_HONORPLUS_CHATINFO["Default"]; if (TITAN_HONORPLUS_CHATINFO[UnitName("Player")]) then info = TITAN_HONORPLUS_CHATINFO[UnitName("Player")]; end ChatTypeInfo["HONORPLUS"] = info; if (type(TipBuddy_TargetName_Text) == "table") and (type(TipBuddy_Main_Frame) == "table") then TitanHonorPlus_TipBuddy_Main_Frame:Show(); TitanHonorPlus_TipBuddy_TargetName_Text:ClearAllPoints(); TitanHonorPlus_TipBuddy_TargetName_Text:SetPoint("BOTTOMLEFT", "TipBuddy_Main_Frame", "TOPLEFT", 0, 0); end TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); TitanPanelButton_UpdateTooltip(); vLoaded = true; end end ---------------------------- -- Slash Commands ---------------------------- -- The one and only slash command prints all of todays kills function TitanHonorPlus_PrintKills() local rankName, rankNumber, todayHK, todayDK, todayCP, todayB, ydayHK, ydayDK, ydayCP, weekHK, weekDK, weekCP, lastweekHK, lastweekDK, lastweekCP, lastweekRank, lifetimeHK, lifetimeDK, highestRankName, highestRankNumber = TitanPanelHonorPlusGetPVPData("Slashcommand"); DEFAULT_CHAT_FRAME:AddMessage("Todays Kills:"); local s; if (TitanGetVar(TITAN_HONORPLUS_ID, "SortByKills") == 1) then s = "k"; else s = "h"; end local done = {}; local a, b, x, y, i, c, high, text; local c1, c2 = "", ""; i = 0; for a, b in TITAN_HONORPLUS[vC]['log'] do text, high = "", nil; for x, y in TITAN_HONORPLUS[vC]['log'] do if (not done[x]) then if (high == nil) then high = x; end if (y[s] > TITAN_HONORPLUS[vC]['log'][high][s]) then high = x; end end end done[high] = 1; c = "|cffd0d0ff"; if (TITAN_HONORPLUS[vC]['log'][high]['k'] > 3) then c = "|cffffd0d0"; end if (TITAN_HONORPLUS[vC]['log'][high]['c']) then local oclass = TITAN_HONORPLUS[vC]['log'][high]['c']; c1 = TITAN_HONORPLUS_CLASSCOLORINDEX[oclass]; c2 = "|r"; end text = text..c..TITAN_HONORPLUS[vC]['log'][high]['k'].." "..c1..high..c2.."|r".. "|cffd0d0d0".." ("; if (TITAN_HONORPLUS[vC]['log'][high]['l']) then text = text.."L"..TITAN_HONORPLUS[vC]['log'][high]['l'].." "; end text = text..TITAN_HONORPLUS[vC]['log'][high]['r']..")".."|r".." ".. "|cffdacda1"..TitanPanelHonorPlusRound(TITAN_HONORPLUS[vC]['log'][high]['h']).." "..HONOR_CONTRIBUTION_POINTS; i = i+1; DEFAULT_CHAT_FRAME:AddMessage(text); end if (i == 0) then DEFAULT_CHAT_FRAME:AddMessage("|cffffa0a0".."No Kills.".."|r"); end end ---------------------------- -- On Event ---------------------------- function TitanPanelHonorPlusButton_OnEvent() if (event == "VARIABLES_LOADED") then vVar = true; TitanHonorPlus_Initialize(); --------------------------------------- elseif (event == "CHAT_MSG_COMBAT_HONOR_GAIN") then local x, p, h, s ,e, f, k; local s, e, name, rank, honor = string.find(arg1, TITAN_HONORPLUS_SEARCH); if (name) and (rank) and (honor) then if (TITAN_HONORPLUS[vC]['log'][name] == nil) then TITAN_HONORPLUS[vC]['log'][name] = { ['h'] = 0, ['k'] = 0, }; end TITAN_HONORPLUS[vC]['todayhk'] = TITAN_HONORPLUS[vC]['todayhk'] +1; TITAN_HONORPLUS[vC]['log'][name]['k'] = TITAN_HONORPLUS[vC]['log'][name]['k'] +1; x = TITAN_HONORPLUS[vC]['log'][name]['k']; if (x == 1) then p = 1; elseif (x == 2) then p = 0.75; elseif (x == 3) then p = 0.5; elseif (x == 4) then p = 0.25; else p = 0; end h = honor * p; TITAN_HONORPLUS[vC]['todaycp'] = TITAN_HONORPLUS[vC]['todaycp'] + h; TITAN_HONORPLUS[vC]['todaycp2'] = TITAN_HONORPLUS[vC]['todaycp2'] + honor; local hround = TitanPanelHonorPlusRound(h); local text = string.format(TITAN_HONORPLUS_ESTIMATED,name, x, rank, hround); TitanPanelHonorPlusButton_PrintMsg(text); TITAN_HONORPLUS[vC]['log'][name]['h'] = TITAN_HONORPLUS[vC]['log'][name]['h'] + h; TITAN_HONORPLUS[vC]['log'][name]['r'] = rank; local oclass, olevel; if (playerList[name]) then if (playerList[name]['l']) then olevel = playerList[name]['l']; end if (playerList[name]['c']) then oclass = playerList[name]['c']; end end if ((not oclass) or (not olevel)) and (type(Opium_TimeToString) == "function") and (type(OpiumData) == "table") then local playerData = OpiumData["playerLinks"][GetCVar("realmName")][string.lower(name)]; if playerData then olevel = playerData[OPIUM_INDEX_LEVEL]; oclass = playerData[OPIUM_INDEX_CLASS]; end end if (olevel) then TITAN_HONORPLUS[vC]['log'][name]['l'] = olevel; end if (oclass) then TITAN_HONORPLUS[vC]['log'][name]['c'] = oclass; end -- if (hround > 0) and (type(SCT_OnLoad) == "function") and (TitanGetVar(TITAN_HONORPLUS_ID, "SCT") == 1) then -- currentcolor = SCT_GetTable(SCT_COLORS_TABLE, 16); -- text = "+"..hround.." "..HONOR_CONTRIBUTION_POINTS; -- if (SCT_Get("SHOWHONOR") == 1) then text = text.."*"; end -- if (SCT_Get("SHOWASMESSAGE") == 1) then -- SCT_Display_Message(text, currentcolor); -- else -- SCT_Display(text, currentcolor); -- end -- end TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); TitanPanelButton_UpdateTooltip(); end --------------------------------------- elseif (event == "UPDATE_MOUSEOVER_UNIT") then TitanHonorPlus_ClearHonorLine(); if (UnitExists("mouseover")) and (TitanGetVar(TITAN_HONORPLUS_ID, "Tooltip") == 1) and -- Longest ever if statement? lol (not UnitIsFriend("player", "mouseover")) and (UnitIsPlayer("mouseover")) and (GetDifficultyColor(UnitLevel("mouseover")) ~= QuestDifficultyColor["trivial"]) then local oclass, olevel = TITAN_HONORPLUS_CLASSINDEX[UnitClass("mouseover")], UnitLevel("mouseover"); playerList[UnitName("mouseover")] = { ['c'] = oclass, ['l'] = olevel } local i; local z = TITAN_HONORPLUS[vC]['log'][UnitName("mouseover")]; if (z) then TITAN_HONORPLUS[vC]['log'][UnitName("mouseover")]['c'] = oclass; TITAN_HONORPLUS[vC]['log'][UnitName("mouseover")]['l'] = olevel; i = z['k']; end local text, color; if (type(i) ~= "number") then i = 0; end if (i > 3) then text = "0% "; elseif (i == 3) then text = "25% "; elseif (i == 2) then text = "50% "; elseif (i == 1) then text = "75% "; else text = "100%"; end text = text.." "..HONOR_CONTRIBUTION_POINTS; color = TitanHonorPlus_SmoothColor(i); if (type(TipBuddy_TargetName_Text) == "table") and (type(TipBuddy_Main_Frame) == "table") then TitanHonorPlus_TipBuddy_Main_Frame:SetParent(TipBuddy_Main_Frame); TitanHonorPlus_TipBuddy_TargetName_Text:Show(); TitanHonorPlus_TipBuddy_TargetName_Text:SetWidth(TipBuddy_Main_Frame:GetWidth()); TitanHonorPlus_TipBuddy_TargetName_Text:SetText(text); TitanHonorPlus_TipBuddy_TargetName_Text:SetTextColor(color); end if (GameTooltip:IsVisible()) and (type(GameTooltipTextLeft1:GetText()) == "string") and (string.find(GameTooltipTextLeft1:GetText(), UnitName("mouseover"))) then local j, left, right; for j=3,20 do left = getglobal("GameTooltipTextLeft"..j); right = getglobal("GameTooltipTextRight"..j); if ((left:GetText() == nil) or (left:GetText() == "")) and ((right:GetText() == nil) or (right:GetText() == "")) then left:SetText(text); left:SetTextColor(color); left:Show(); TITAN_HONORPLUS_TOOLTIPLINE = j; GameTooltip:SetHeight(GameTooltip:GetHeight() +18); break; end end end else TitanHonorPlus_TipBuddy_TargetName_Text:SetText(""); end --------------------------------------- elseif (event == "UPDATE_BATTLEFIELD_STATUS") then TitanHonorPlus_CheckBGConfirm(); --------------------------------------- -- I've seen other implementations of gathering battleground player data, and it all looked very messy, using function hooks, and the dreadful OnUpdate, ARGH! -- Well, I found a far easier way of doing that with simple events =] elseif (event == "UPDATE_BATTLEFIELD_SCORE") or (event == "UPDATE_WORLD_STATES") then TitanHonorPlus_CheckBonusHonor(); --------------------------------------- elseif (event == "CHAT_MSG_COMBAT_HOSTILEPLAYER_HITS") or (event == "CHAT_MSG_SPELL_HOSTILEPLAYER_DAMAGE") then TITAN_HONORPLUS_PVPDMG = GetTime(); --------------------------------------- elseif (event == "PLAYER_DEAD") then -- Auto-Release upon death. But not when soulstoned, and only in battlegrounds. local status; for i=1, MAX_BATTLEFIELD_QUEUES do local s, _, _ = GetBattlefieldStatus(i); if (s == "active") then status = "active"; break; end end if (status == "active") and (not HasSoulstone()) and (TitanGetVar(TITAN_HONORPLUS_ID, "AutoRelease") == 1) then RepopMe(); end local x = GetTime() -15; if (x <= TITAN_HONORPLUS_PVPDMG) then TITAN_HONORPLUS[vC]['todayd'] = TITAN_HONORPLUS[vC]['todayd'] +1; end TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); TitanPanelButton_UpdateTooltip(); --------------------------------------- TitanHonorPlus_RequestBattlefieldData(); end ------------------------------------------------------------------------------------------------------------------------------------------------------------ end function TitanHonorPlus_RequestBattlefieldData(f) if (f) or (GetTime() > TITAN_HONORPLUS_BGAPI_NEXT) then TITAN_HONORPLUS_BGAPI_NEXT = GetTime() + TITAN_HONORPLUS_BGAPI_INTERVAL; RequestBattlefieldScoreData(); end end -- Clear the tooltip of the previously added honor info function TitanHonorPlus_ClearHonorLine() if (TITAN_HONORPLUS_TOOLTIPLINE) then local lastleft = getglobal("GameTooltipTextLeft"..TITAN_HONORPLUS_TOOLTIPLINE); if (type(lastleft:GetText()) == "string") and (string.find(lastleft:GetText(), HONOR_CONTRIBUTION_POINTS)) then lastleft:SetText(""); lastleft:Hide(); end TITAN_HONORPLUS_TOOLTIPLINE = nil; end end -- Call TitanHonorPlus_ClearHonorLine() when the tooltip is hidden function TitanHonorPlus_GameTooltip_OnHide() old_GameTooltip_OnHide(); TitanHonorPlus_ClearHonorLine(); end function TitanHonorPlus_CheckBonusHonor() local i, j; j = GetNumBattlefieldScores(); for i = 1, j do local name, killingBlows, honorableKills, deaths, honorGained, faction, rank, race, class = GetBattlefieldScore(i); if (name) then if (faction == 1) then faction = "Alliance"; else faction = "Horde"; end if (UnitFactionGroup("player") ~= faction) and (name) and (not playerList[name]) then local oclass = TITAN_HONORPLUS_CLASSINDEX[class]; playerList[name] = { ['c'] = oclass }; if (TITAN_HONORPLUS[vC]['log'][name]) then TITAN_HONORPLUS[vC]['log'][name]['c'] = oclass; end end if (name == UnitName("player")) then if (honorGained ~= nil) and (honorGained ~= TITAN_HONORPLUS_CURRENTBONUS) then diff = honorGained - TITAN_HONORPLUS_CURRENTBONUS; TITAN_HONORPLUS_CURRENTBONUS = honorGained; if (diff > 0) then TitanPanelHonorPlusButton_PrintMsg(string.format(TITAN_HONORPLUS_BONUSHONORGAINED, diff)); TITAN_HONORPLUS[vC]['todayb'] = TITAN_HONORPLUS[vC]['todayb'] + diff; TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); TitanPanelButton_UpdateTooltip(); end end break; end end end end ---------------------------- -- Auto-join Battlegrounds ---------------------------- function TitanHonorPlus_CheckBGConfirm() if (not TitanGetVar(TITAN_HONORPLUS_ID, "AutoJoinBG")) then return; end local status, index; for i=1,MAX_BATTLEFIELD_QUEUES do status,_,_ = GetBattlefieldStatus(i); if(status == "confirm") then index = i; break end end if (status == "confirm") then if (StaticPopup_Visible("CONFIRM_BATTLEFIELD_ENTRY")) then if (TITAN_HONORPLUS_BGCONFIRM == 0) then DEFAULT_CHAT_FRAME:AddMessage(NORMAL_FONT_COLOR_CODE..TITAN_HONORPLUS_AUTOJOINBG..FONT_COLOR_CODE_CLOSE); TITAN_HONORPLUS_BGCONFIRM = GetTime() + TITAN_HONORPLUS_BGAUTOJOINTIMER; elseif (GetTime() > TITAN_HONORPLUS_BGCONFIRM) then TITAN_HONORPLUS_BGCONFIRM = 0; if (TITAN_HONORPLUS_AFK) then DEFAULT_CHAT_FRAME:AddMessage(NORMAL_FONT_COLOR_CODE..TITAN_HONORPLUS_AFKERROR..FONT_COLOR_CODE_CLOSE); else DEFAULT_CHAT_FRAME:AddMessage(NORMAL_FONT_COLOR_CODE..TITAN_HONORPLUS_AUTOJOINBG_DONE..FONT_COLOR_CODE_CLOSE); AcceptBattlefieldPort(index,1) end StaticPopup_Hide("CONFIRM_BATTLEFIELD_ENTRY"); end end end end -- If the "Hide" button is clicked when ready to enter BG. -- It means the user doesn't want to join, so we disable auto-join. function TitanHonorPlus_StaticPopup_OnHide() old_StaticPopup_OnHide(); if (this.which == "CONFIRM_BATTLEFIELD_ENTRY") and (TITAN_HONORPLUS_BGCONFIRM ~= 0) then TITAN_HONORPLUS_BGCONFIRM = 0; DEFAULT_CHAT_FRAME:AddMessage(NORMAL_FONT_COLOR_CODE..TITAN_HONORPLUS_AUTOJOINBG_CANCEL..FONT_COLOR_CODE_CLOSE); end end ---------------------------- -- Return Button text ---------------------------- function TitanPanelHonorPlusButton_GetButtonText(id) if (not vLoaded) then return "Loading.."; end TitanHonorPlus_CheckBGConfirm(); TitanHonorPlus_RequestBattlefieldData(); local rankName, rankNumber, todayHK, todayDK, todayCP, todayB, ydayHK, ydayDK, ydayCP, weekHK, weekDK, weekCP, lastweekHK, lastweekDK, lastweekCP, lastweekRank, lifetimeHK, lifetimeDK, highestRankName, highestRankNumber = TitanPanelHonorPlusGetPVPData("Button"); if (TitanGetVar(TITAN_HONORPLUS_ID, "AlternateDisplay") == 1) then local todayD = TITAN_HONORPLUS[vC]['todayd']; return "".. HONOR_CONTRIBUTION_POINTS..": ", TitanUtils_GetHighlightText(todayCP + todayB), TITAN_HONORPLUS_KILLS..": ", TitanUtils_GetGreenText(todayHK), TITAN_HONORPLUS_DEATHS..": ", TitanUtils_GetRedText(todayD); else return "".. TITAN_HONORPLUS_BUTTON_LABEL_RANK, TitanUtils_GetHighlightText(rankNumber), TITAN_HONORPLUS_BUTTON_LABEL_HK, TitanUtils_GetGreenText(todayHK), TITAN_HONORPLUS_BUTTON_LABEL_DK, TitanUtils_GetRedText(todayDK); end end ---------------------------- -- Return all PvP data ---------------------------- function TitanPanelHonorPlusGetPVPData(msg) -- Current rank local rankName, rankNumber = GetPVPRankInfo(UnitPVPRank("player")); if (not rankName) then rankName = NONE; end -- This session's values local todayHK, todayDK = GetPVPSessionStats(); local todayB = TITAN_HONORPLUS[vC]['todayb']; -- Yesterday's values local ydayHK, ydayDK, ydayCP = GetPVPYesterdayStats(); -- This Week's values local weekHK, weekCP = GetPVPThisWeekStats(); -- Last Week's values local lastweekHK, lastweekDK, lastweekCP, lastweekRank = GetPVPLastWeekStats(); -- Lifetime stats local lifetimeHK, lifetimeDK, highestRank = GetPVPLifetimeStats(); local highestRankName, highestRankNumber = GetPVPRankInfo(highestRank); if ( not highestRankName ) then highestRankName = NONE; end if (ydayCP ~= TITAN_HONORPLUS[vC]['yesterday']) and (not ((ydayCP == 0) and (lifetimeHK == 0))) then -- Yesterday has been updated. TITAN_HONORPLUS[vC]['yesterday'] = ydayCP; TITAN_HONORPLUS[vC]['weekdk'] = TITAN_HONORPLUS[vC]['weekdk'] + ydayDK; TITAN_HONORPLUS[vC]['log'] = { }; TITAN_HONORPLUS[vC]['todayhk'] = 0; TITAN_HONORPLUS[vC]['todaydk'] = 0; TITAN_HONORPLUS[vC]['todaycp'] = 0; TITAN_HONORPLUS[vC]['todayb'] = 0; TITAN_HONORPLUS[vC]['todayd'] = 0; TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); TitanPanelButton_UpdateTooltip(); end if (TitanGetVar(TITAN_HONORPLUS_ID, "UseCalculatedToday") == 1) then todayHK = TITAN_HONORPLUS[vC]['todayhk']; end local todayCP = TitanPanelHonorPlusRound(TITAN_HONORPLUS[vC]['todaycp']); -- reset if new week if (lastweekCP ~= TITAN_HONORPLUS[vC]['lastweek']) then TITAN_HONORPLUS[vC]['lastweek'] = lastweekCP; TITAN_HONORPLUS[vC]['weekcp'] = 0; TITAN_HONORPLUS[vC]['weekdk'] = 0; TitanPanelButton_UpdateTooltip(); end local weekDK = TITAN_HONORPLUS[vC]['weekdk']; return rankName, rankNumber, todayHK, todayDK, todayCP, todayB, ydayHK, ydayDK, ydayCP, weekHK, weekDK, weekCP, lastweekHK, lastweekDK, lastweekCP, lastweekRank, lifetimeHK, lifetimeDK, highestRankName, highestRankNumber; end function TitanPanelHonorPlusButton_OnClick() if (arg1 == "LeftButton") then TitanPanelHonorPlus_ToggleVar_AlternateDisplay(); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); TitanPanelButton_UpdateTooltip(); else TitanPanelButton_OnClick(arg1); end end ---------------------------- -- Return Tooltip text ---------------------------- function TitanPanelHonorPlusButton_GetTooltipText() if (not vLoaded) then return "Loading.."; end local rankName, rankNumber, todayHK, todayDK, todayCP, todayB, ydayHK, ydayDK, ydayCP, weekHK, weekDK, weekCP, lastweekHK, lastweekDK, lastweekCP, lastweekRank, lifetimeHK, lifetimeDK, highestRankName, highestRankNumber = TitanPanelHonorPlusGetPVPData("Tooltip"); local todaycp2 = TitanPanelHonorPlusRound(TITAN_HONORPLUS[vC]['todaycp2']); local progress = TitanPanelHonorPlusRound(GetPVPRankProgress() *100); local todayD = TITAN_HONORPLUS[vC]['todayd']; local s; if (TitanGetVar(TITAN_HONORPLUS_ID, "SortByKills") == 1) then s = "k"; else s = "h"; end local done = {}; local high; if (TitanGetVar(TITAN_HONORPLUS_ID, "AlternateDisplay") == 1) then local text = "".. RANK..": "..TitanUtils_GetHighlightText(rankName.." ("..RANK.." "..rankNumber..")").."\n".. TITAN_HONORPLUS_PROGRESS..": "..TitanUtils_GetHighlightText(progress.."%").."\n".. "\n".. TitanUtils_GetHighlightText(TITAN_HONORPLUS_PVPSTATS).."\n".. TITAN_HONORPLUS_KILLS..": \t"..TitanUtils_GetGreenText(todayHK).."\n".. TITAN_HONORPLUS_DEATHS..": \t"..TitanUtils_GetRedText(todayD).."\n".. "\n".. TitanUtils_GetHighlightText(HONOR_CONTRIBUTION_POINTS).."\n".. TITAN_HONORPLUS_KILLS..": \t"..TitanUtils_GetHighlightText(todayCP).."\n".. TITAN_HONORPLUS_BONUS..": \t"..TitanUtils_GetHighlightText(todayB).."\n".. TITAN_HONORPLUS_TOTAL..": \t"..TitanUtils_GetHighlightText(todayCP + todayB).."\n".. "\n".. TitanUtils_GetHighlightText(TITAN_HONORPLUS_TOP15); local a, b, x, y, i, c; local c1 = "|cffd0d0d0"; i = 0; for a, b in TITAN_HONORPLUS[vC]['log'] do high = nil; for x, y in TITAN_HONORPLUS[vC]['log'] do if (not done[x]) then if (high == nil) then high = x; end if (y[s] > TITAN_HONORPLUS[vC]['log'][high][s]) then high = x; end end end done[high] = 1; c = "|cffd0d0ff"; if (TITAN_HONORPLUS[vC]['log'][high]['k'] > 3) then c = "|cffffd0d0"; end if (TITAN_HONORPLUS[vC]['log'][high]['c']) then local oclass = TITAN_HONORPLUS[vC]['log'][high]['c']; c1 = TITAN_HONORPLUS_CLASSCOLORINDEX[oclass]; end text = text.."\n"..c..TITAN_HONORPLUS[vC]['log'][high]['k'].." "..c1..high.."|r".. "|cffd0d0d0".." ("; if (TITAN_HONORPLUS[vC]['log'][high]['l']) then text = text.."L"..TITAN_HONORPLUS[vC]['log'][high]['l'].." "; end text = text..TITAN_HONORPLUS[vC]['log'][high]['r']..")".."|r".."\t".. "|cffdacda1"..TitanPanelHonorPlusRound(TITAN_HONORPLUS[vC]['log'][high]['h']).." "..HONOR_CONTRIBUTION_POINTS; i = i+1; if (i == 15) then break; end end if (i == 0) then text = text.."\n"..TITAN_HONORPLUS_NOKILLS; end return text; else return "".. RANK..": "..TitanUtils_GetHighlightText(rankName.." ("..RANK.." "..rankNumber..")").."\n".. TITAN_HONORPLUS_PROGRESS..": "..TitanUtils_GetHighlightText(progress.."%").."\n".. "\n".. TitanUtils_GetHighlightText(HONOR_THIS_SESSION).." ".."|cffa0a0a0"..TITAN_HONORPLUS_HINT_TOOLTIP.."|r".."\n".. HONORABLE_KILLS..": \t"..TitanUtils_GetGreenText(todayHK).."\n".. DISHONORABLE_KILLS..": \t"..TitanUtils_GetRedText(todayDK).."\n".. TITAN_HONORPLUS_BONUS..": \t".."|cffa0a0ff"..todayB.."|r".."\n".. HONOR_CONTRIBUTION_POINTS..": \t"..TitanUtils_GetHighlightText(todayCP + todayB).."\n".. "\n".. TitanUtils_GetHighlightText(HONOR_YESTERDAY).."\n".. HONORABLE_KILLS..": \t"..TitanUtils_GetGreenText(ydayHK).."\n".. DISHONORABLE_KILLS..": \t"..TitanUtils_GetRedText(ydayDK).."\n".. HONOR_CONTRIBUTION_POINTS..": \t"..TitanUtils_GetHighlightText(ydayCP).."\n".. "\n".. TitanUtils_GetHighlightText(HONOR_THISWEEK).."\n".. HONORABLE_KILLS..": \t"..TitanUtils_GetGreenText(weekHK).."\n".. DISHONORABLE_KILLS..": \t"..TitanUtils_GetRedText(weekDK).."\n".. HONOR_CONTRIBUTION_POINTS..": \t"..TitanUtils_GetHighlightText(weekCP).."\n".. "\n".. TitanUtils_GetHighlightText(HONOR_LASTWEEK).."\n".. HONORABLE_KILLS..": \t"..TitanUtils_GetGreenText(lastweekHK).."\n".. DISHONORABLE_KILLS..": \t"..TitanUtils_GetRedText(lastweekDK).."\n".. HONOR_CONTRIBUTION_POINTS..": \t"..TitanUtils_GetHighlightText(lastweekCP).."\n".. HONOR_STANDING..": \t"..TitanUtils_GetHighlightText(lastweekRank).."\n".. "\n".. TitanUtils_GetHighlightText(HONOR_LIFETIME).."\n".. HONORABLE_KILLS..": \t"..TitanUtils_GetGreenText(lifetimeHK).."\n".. DISHONORABLE_KILLS..": \t"..TitanUtils_GetRedText(lifetimeDK).."\n".. HONOR_HIGHEST_RANK..": \t"..TitanUtils_GetHighlightText(highestRankName); end end ---------------------------- -- PvP Icon ---------------------------- function TitanPanelHonorPlusButton_OnShow() TitanPanelHonorPlusButton_SetPVPHonorIcon(); end function TitanPanelHonorPlusButton_SetPVPHonorIcon() local rankName, rankNumber = GetPVPRankInfo(UnitPVPRank("player")); if (rankNumber > 0) then TitanPanelHonorPlusButtonIcon:SetTexture(format("%s%02d", TITAN_HONORPLUS_ICON_PATH, rankNumber)); TitanPanelHonorPlusButtonIcon:SetWidth(16); end end ---------------------------- -- TitanVar Toggles ---------------------------- function TitanPanelHonorPlus_ToggleVar_UseCalculatedToday() TitanToggleVar(TITAN_HONORPLUS_ID, "UseCalculatedToday"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_Print_Bonus() TitanToggleVar(TITAN_HONORPLUS_ID, "Print_Bonus"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_SCT() TitanToggleVar(TITAN_HONORPLUS_ID, "SCT"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_ScoreBoard_Opium() TitanToggleVar(TITAN_HONORPLUS_ID, "ScoreBoard_Opium"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_ScoreBoard_ClassColorSymbol() TitanToggleVar(TITAN_HONORPLUS_ID, "ScoreBoard_ClassColorSymbol"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_ScoreBoard_ClassColorList() TitanToggleVar(TITAN_HONORPLUS_ID, "ScoreBoard_ClassColorList"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_Tooltip() TitanToggleVar(TITAN_HONORPLUS_ID, "Tooltip"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_ScoreBoard_Kills() TitanToggleVar(TITAN_HONORPLUS_ID, "ScoreBoard_Kills"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); WorldStateScoreFrame_Update(); WorldStateScoreFrame_Resize(); end function TitanPanelHonorPlus_ToggleVar_AlternateDisplay() TitanToggleVar(TITAN_HONORPLUS_ID, "AlternateDisplay"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_Sorting() TitanToggleVar(TITAN_HONORPLUS_ID, "SortByKills"); TitanToggleVar(TITAN_HONORPLUS_ID, "SortByHonor"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_AutoRelease() TitanToggleVar(TITAN_HONORPLUS_ID, "AutoRelease"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end function TitanPanelHonorPlus_ToggleVar_AutoJoinBG() TitanToggleVar(TITAN_HONORPLUS_ID, "AutoJoinBG"); TitanPanelButton_UpdateButton(TITAN_HONORPLUS_ID); end ---------------------------- -- Rightclick Menu ---------------------------- function TitanPanelRightClickMenu_PrepareHonorPlusMenu() TitanPanelRightClickMenu_AddTitle(TitanPlugins[TITAN_HONORPLUS_ID].menuText); TitanPanelRightClickMenu_AddToggleIcon(TITAN_HONORPLUS_ID); TitanPanelRightClickMenu_AddToggleLabelText(TITAN_HONORPLUS_ID); TitanPanelRightClickMenu_AddSpacer(); TitanPanelRightClickMenu_AddTitle("General Options"); info = {}; info.text = TITAN_HONORPLUS_MENU_TOOLTIP; info.func = TitanPanelHonorPlus_ToggleVar_Tooltip; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "Tooltip"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); -- Add toggle for calculating today's values. info = {}; info.text = TITAN_HONORPLUS_MENU_CALCTODAY; info.func = TitanPanelHonorPlus_ToggleVar_UseCalculatedToday; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "UseCalculatedToday"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); info = {}; info.text = TITAN_HONORPLUS_MENU_PRINTBONUS; info.func = TitanPanelHonorPlus_ToggleVar_Print_Bonus; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "Print_Bonus"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); -- Add toggle for Scrolling Combat Text support. if (type(SCT_OnLoad) == "function") then info = {}; info.text = TITAN_HONORPLUS_MENU_SCT; info.func = TitanPanelHonorPlus_ToggleVar_SCT; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "SCT"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); end TitanPanelRightClickMenu_AddSpacer(); TitanPanelRightClickMenu_AddTitle("Scoreboard Options"); info = {}; info.text = TITAN_HONORPLUS_MENU_SCOREBOARDCLASSCOLORSYMBOL; info.func = TitanPanelHonorPlus_ToggleVar_ScoreBoard_ClassColorSymbol; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_ClassColorSymbol"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); info = {}; info.text = TITAN_HONORPLUS_MENU_SCOREBOARDCLASSCOLORLIST; info.func = TitanPanelHonorPlus_ToggleVar_ScoreBoard_ClassColorList; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_ClassColorList"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); info = {}; info.text = TITAN_HONORPLUS_MENU_SCOREBOARDKILLS; info.func = TitanPanelHonorPlus_ToggleVar_ScoreBoard_Kills; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_Kills"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); if (type(Opium_TimeToString) == "function") and (type(OpiumData) == "table") then info = {}; info.text = TITAN_HONORPLUS_MENU_OPIUM; info.func = TitanPanelHonorPlus_ToggleVar_ScoreBoard_Opium; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_Opium"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); end TitanPanelRightClickMenu_AddSpacer(); TitanPanelRightClickMenu_AddTitle("Battlegrounds"); info = {}; info.text = TITAN_HONORPLUS_MENU_AUTORELEASE; info.func = TitanPanelHonorPlus_ToggleVar_AutoRelease; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "AutoRelease"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); info = {}; info.text = TITAN_HONORPLUS_MENU_AUTOJOINBG; info.func = TitanPanelHonorPlus_ToggleVar_AutoJoinBG; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "AutoJoinBG"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); if (TitanGetVar(TITAN_HONORPLUS_ID, "AlternateDisplay") == 1) then TitanPanelRightClickMenu_AddSpacer(); TitanPanelRightClickMenu_AddTitle("Sorting"); info = {}; info.text = TITAN_HONORPLUS_MENU_SORTBYKILLS; info.func = TitanPanelHonorPlus_ToggleVar_Sorting; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "SortByKills"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); info = {}; info.text = TITAN_HONORPLUS_MENU_SORTBYHONOR; info.func = TitanPanelHonorPlus_ToggleVar_Sorting; info.checked = TitanGetVar(TITAN_HONORPLUS_ID, "SortByHonor"); info.keepShownOnClick = 1; UIDropDownMenu_AddButton(info); end TitanPanelRightClickMenu_AddSpacer(); TitanPanelRightClickMenu_AddTitle(TITAN_HONORPLUS_HINT); TitanPanelRightClickMenu_AddSpacer(); TitanPanelRightClickMenu_AddCommand(TITAN_PANEL_MENU_HIDE, TITAN_HONORPLUS_ID, TITAN_PANEL_MENU_FUNC_HIDE); end ---------------------------- -- Simple Round Function ---------------------------- function TitanPanelHonorPlusRound(x) if(x - math.floor(x) > 0.5) then x = x + 0.5; end return math.floor(x); end ---------------------------- -- Hooked Scoreboard Function ---------------------------- function TitanHonorPlus_WorldStateScoreFrame_Update() old_WorldStateScoreFrame_Update(); TitanHonorPlus_CheckBonusHonor(); local TitanHonorPlusColumn; if (TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_Kills")) then local text, icon, tooltip, columnButton; local numStatColumns = GetNumBattlefieldStats(); local columnButton, columnButtonText, columnTextButton, columnIcon; local honorGainedAnchorFrame = "WorldStateScoreFrameHK"; local i = numStatColumns+1; if (i <= MAX_NUM_STAT_COLUMNS) then TitanHonorPlusColumn = i; text, icon, tooltip = TITAN_HONORPLUS_KILLEDTODAY, "", TITAN_HONORPLUS_TOOLTIP_TODAYSKILLS; columnButton = getglobal("WorldStateScoreColumn"..i); columnButtonText = getglobal("WorldStateScoreColumn"..i.."Text"); columnButtonText:SetText(text); columnButton.icon = icon; columnButton.tooltip = tooltip; columnTextButton = getglobal("WorldStateScoreButton1Column"..i.."Text"); columnTextButton:SetPoint("CENTER", "WorldStateScoreColumn"..i, "CENTER", -1, -33); honorGainedAnchorFrame = "WorldStateScoreColumn"..i; WorldStateScoreFrameHonorGained:SetPoint("CENTER", honorGainedAnchorFrame, "CENTER", 88, 0); getglobal("WorldStateScoreColumn"..i):Show(); end end local i; local numScores = GetNumBattlefieldScores(); local name, faction, index, buttonName, log, kills, color, text; local buttonName, nameButton, todayColumn; for i=1, MAX_WORLDSTATE_SCORE_BUTTONS do -- Need to create an index adjusted by the scrollframe offset index = FauxScrollFrame_GetOffset(WorldStateScoreScrollFrame) + i; if ( index <= numScores ) then buttonName = getglobal("WorldStateScoreButton"..i.."NameButtonName"); nameButton = getglobal("WorldStateScoreButton"..i.."NameButton"); if (TitanHonorPlusColumn) then todayColumn = getglobal("WorldStateScoreButton"..i.."Column"..TitanHonorPlusColumn.."Text"); end local name, killingBlows, honorableKills, deaths, honorGained, faction, rank, race, class = GetBattlefieldScore(index); if (name) then text = name; if (TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_Opium")) and (type(Opium_TimeToString) == "function") and (type(OpiumData) == "table") then local myfaction = OPIUM_FACTIONINDEX[UnitFactionGroup("player")]; local oname, oline; local playerData = OpiumData["playerLinks"][GetCVar("realmName")][string.lower(name)]; if playerData then local olevel, oclass, orace, ofaction, oguild, olastseen = playerData[OPIUM_INDEX_LEVEL], playerData[OPIUM_INDEX_CLASS], playerData[OPIUM_INDEX_RACE], playerData[OPIUM_INDEX_FACTION], playerData[OPIUM_INDEX_GUILD], playerData[OPIUM_INDEX_LASTSEEN]; if (olevel == -1) then olevel = "??"; end olastseen = Opium_TimeToString(time() - OPIUM_TIMEOFFSET - olastseen); if (ofaction ~= myfaction) then oname = "|cffff5050"..name.."|r"; else oname = "|cff50ff50"..name.."|r"; end oline = oname.."\n"..HIGHLIGHT_FONT_COLOR_CODE..OPIUM_TEXT_LEVEL.." "..olevel.."|r".." "..OPIUM_RACEINDEX[orace].." "..TITAN_HONORPLUS_CLASSCOLORINDEX[oclass]..OPIUM_CLASSINDEX[oclass].."|r"; if (oguild) then oline = oline.."\n".."|cff30ff30".."<"..oguild..">".."|r"; end oline = oline.."\nLast Seen: ".."|cffffa0a0"..olastseen.."|r"; nameButton.tooltip = oline; end end if (faction == 1) then faction = "Alliance"; else faction = "Horde"; end local i = TITAN_HONORPLUS_CLASSINDEX[class]; if (WorldStateScoreFrame.selectedTab == 1) then if (TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_ClassColorSymbol")) then text = text..TITAN_HONORPLUS_CLASSCOLORINDEX[i].."+".."|r"; end else if (TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_ClassColorList")) then text = TITAN_HONORPLUS_CLASSCOLORINDEX[i]..text.."|r"; end end buttonName:SetText(text); --(TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_Kills")) if (todayColumn) and (TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_Kills")) and (faction ~= UnitFactionGroup("player")) then local log = TITAN_HONORPLUS[vC]['log'][name]; if (log) then log = log['k']; end if (type(log) ~= "number") then log = 0; end todayColumn:SetText(TitanHonorPlus_SmoothColor(log, 1)..log.."|r"); --todayColumn:SetTextColor(TitanHonorPlus_SmoothColor(log)); todayColumn:Show(); end end end end end -- Returns color based on number of kills, green to red. Red if more than 3 kills. function TitanHonorPlus_SmoothColor(k, t) if (k > 4) then k = 4; end p = 1-(k/4); local r,g,b = 1, 1, 0; if (p > 0.75) then r = 4*(1- p); else g = 1.33* p; end if (not t) then return r, g, b; end r, g, b = TitanHonorPlus_base10to16(255*r), TitanHonorPlus_base10to16(255*g), TitanHonorPlus_base10to16(255*b); return "|cff"..r..g..b; end local TITAN_HONORPLUS_BASE16 = { [0] = 0, [1] = 1, [2] = 2, [3] = 3, [4] = 4, [5] = 5, [6] = 6, [7] = 7, [8] = 8, [9] = 9, [10] = "a", [11] = "b", [12] = "c", [13] = "d", [14] = "e", [15] = "f" }; function _blah(from, msg) ChatFrame4:AddMessage("|cff"..TitanHonorPlus_base10to16(255)..TitanHonorPlus_base10to16(150)..TitanHonorPlus_base10to16(255).."["..from.."] whispers: "..msg); end function blah() _blah("GM_Martin", "Good evening, how may I be of help?"); _blah("GM_Martin", "Your quest item is not registered in our database, I am going to remove it and you will need to obtain a new one."); _blah("Mezron", "LF1m 5man scholo need priest or druid"); _blah("GM_Martin", "Is there anything else I can help you with tonight?"); end function TitanHonorPlus_base10to16(n) if (type(n) ~= "number") then return; end n = math.floor(n); local r, d, x = nil, 0, ""; while true do d = math.floor(n / 16); r = n - (d*16); n = d; x = TITAN_HONORPLUS_BASE16[r]..x; if (d == 0) then break; end end while (strlen(x) < 2) do x = "0"..x; end return x; end -- So we can grow the size of the BG scoreboard when we add the new column function TitanHonorPlus_WorldStateScoreFrame_Resize(width) old_WorldStateScoreFrame_Resize(); TitanHonorPlus_WorldStateScoreFrame_Resize_func(); end function TitanHonorPlus_WorldStateScoreFrame_Resize_func() if (TitanGetVar(TITAN_HONORPLUS_ID, "ScoreBoard_Kills")) then local numColumns = GetNumBattlefieldStats() +1; if ( WorldStateScoreScrollFrame:IsVisible() ) then width = WORLDSTATESCOREFRAME_BASE_WIDTH + 37 + numColumns *WORLDSTATESCOREFRAME_COLUMN_SPACING; else width = WORLDSTATESCOREFRAME_BASE_WIDTH + numColumns *WORLDSTATESCOREFRAME_COLUMN_SPACING; end WorldStateScoreFrame:SetWidth(width); WorldStateScoreFrameTopBackground:SetWidth(WorldStateScoreFrame:GetWidth()-129); WorldStateScoreFrameTopBackground:SetTexCoord(0, WorldStateScoreFrameTopBackground:GetWidth()/256, 0, 1.0); WorldStateScoreFrame.scrollBarButtonWidth = WorldStateScoreFrame:GetWidth() - 165; WorldStateScoreFrame.buttonWidth = WorldStateScoreFrame:GetWidth() - 137; WorldStateScoreScrollFrame:SetWidth(WorldStateScoreFrame.scrollBarButtonWidth); end end ---------------------------- -- Chat Options ---------------------------- CHAT_MSG_HONORPLUS = "Honor+"; ChatTypeGroup["HONORPLUS"] = { "CHAT_MSG_HONORPLUS" }; ChatTypeInfo["HONORPLUS"] = { sticky = 0 }; tinsert(OtherMenuChatTypeGroups, "HONORPLUS"); CHAT_HONORPLUS_GET = ""; TITAN_HONORPLUS_CHATINFO = { ["Default"] = { ["r"] = 0.878, ["g"] = 0.792, ["b"] = 0.039, ["show"] = { "ChatFrame1" } } }; function TitanPanelHonorPlusButton_PrintMsg(msg) event = "CHAT_MSG_HONORPLUS"; arg1 = msg; arg2, arg3, arg4, arg6 = "", "", "", ""; local info = TITAN_HONORPLUS_CHATINFO["Default"]; if ( TITAN_HONORPLUS_CHATINFO[UnitName("player")] ) then info = TITAN_HONORPLUS_CHATINFO[UnitName("player")]; end for i = 1, 7, 1 do for k, v in info["show"] do if ( v == "ChatFrame" .. i ) then this = getglobal("ChatFrame" .. i); ChatFrame_OnEvent(event); end end end end TitanPanelHonorPlusButton_oldFCF_Tab_OnClick = FCF_Tab_OnClick; function TitanPanelHonorPlusButton_newFCF_Tab_OnClick(button) TitanPanelHonorPlusButton_oldFCF_Tab_OnClick(button); if ( button == "RightButton" ) then local frame = getglobal("ChatFrame" .. this:GetID()); local info = TITAN_HONORPLUS_CHATINFO["Default"]; if ( TITAN_HONORPLUS_CHATINFO[UnitName("player")] ) then info = TITAN_HONORPLUS_CHATINFO[UnitName("player")]; end for k, v in info["show"] do if ( v == "ChatFrame" .. this:GetID() ) then local y = 1; while ( frame.messageTypeList[y] ) do y = y + 1; end frame.messageTypeList[y] = "HONORPLUS"; end end end end FCF_Tab_OnClick = TitanPanelHonorPlusButton_newFCF_Tab_OnClick; TitanPanelHonorPlusButton_oldFCF_SetChatTypeColor = FCF_SetChatTypeColor; function TitanPanelHonorPlusButton_newFCF_SetChatTypeColor() TitanPanelHonorPlusButton_oldFCF_SetChatTypeColor(); if ( UIDROPDOWNMENU_MENU_VALUE == "HONORPLUS" ) then local r,g,b = ColorPickerFrame:GetColorRGB(); if ( not TITAN_HONORPLUS_CHATINFO[UnitName("player")] ) then TITAN_HONORPLUS_CHATINFO[UnitName("player")] = TITAN_HONORPLUS_CHATINFO["Default"]; end TITAN_HONORPLUS_CHATINFO[UnitName("player")].r = r; TITAN_HONORPLUS_CHATINFO[UnitName("player")].g = g; TITAN_HONORPLUS_CHATINFO[UnitName("player")].b = b; ChatTypeInfo["HONORPLUS"].r = r; ChatTypeInfo["HONORPLUS"].g = g; ChatTypeInfo["HONORPLUS"].b = b; end end FCF_SetChatTypeColor = TitanPanelHonorPlusButton_newFCF_SetChatTypeColor; TitanPanelHonorPlusButton_oldFCF_CancelFontColorSettings = FCF_CancelFontColorSettings; function TitanPanelHonorPlusButton_newFCF_CancelFontColorSettings(prev) TitanPanelHonorPlusButton_oldFCF_CancelFontColorSettings(prev); if ( prev.r and UIDROPDOWNMENU_MENU_VALUE == "HONORPLUS" ) then if ( not TITAN_HONORPLUS_CHATINFO[UnitName("player")] ) then TITAN_HONORPLUS_CHATINFO[UnitName("player")] = TITAN_HONORPLUS_CHATINFO["Default"]; end TITAN_HONORPLUS_CHATINFO[UnitName("player")].r = prev.r; TITAN_HONORPLUS_CHATINFO[UnitName("player")].g = prev.g; TITAN_HONORPLUS_CHATINFO[UnitName("player")].b = prev.b; ChatTypeInfo["HONORPLUS"].r = prev.r; ChatTypeInfo["HONORPLUS"].g = prev.g; ChatTypeInfo["HONORPLUS"].b = prev.b; end end FCF_CancelFontColorSettings = TitanPanelHonorPlusButton_newFCF_CancelFontColorSettings; TitanPanelHonorPlusButton_oldFCFMessageTypeDropDown_OnClick = FCFMessageTypeDropDown_OnClick; function TitanPanelHonorPlusButton_newFCFMessageTypeDropDown_OnClick() TitanPanelHonorPlusButton_oldFCFMessageTypeDropDown_OnClick(); if ( not TITAN_HONORPLUS_CHATINFO[UnitName("player")] ) then TITAN_HONORPLUS_CHATINFO[UnitName("player")] = TITAN_HONORPLUS_CHATINFO["Default"]; end if ( this.value == "HONORPLUS" ) then if ( UIDropDownMenuButton_GetChecked() ) then for k, v in TITAN_HONORPLUS_CHATINFO[UnitName("player")]["show"] do if ( v == FCF_GetCurrentChatFrame():GetName() ) then TITAN_HONORPLUS_CHATINFO[UnitName("player")]["show"][k] = nil; break; end end else tinsert(TITAN_HONORPLUS_CHATINFO[UnitName("player")]["show"], FCF_GetCurrentChatFrame():GetName()); end end end FCFMessageTypeDropDown_OnClick = TitanPanelHonorPlusButton_newFCFMessageTypeDropDown_OnClick;