vanilla-wow-addons – Rev 1
?pathlinks?
----------------------------
-- 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;
Generated by GNU Enscript 1.6.5.90.