vanilla-wow-addons – Rev 1
?pathlinks?
--[[ RecapOptions.lua ]]
local classabr = { ["WARRIOR"] = "WAR", ["MAGE"] = "MAG", ["ROGUE"] = "ROG", ["DRUID"] = "DRU",
["HUNTER"] = "HNT", ["SHAMAN"] = "SHM", ["PRIEST"] = "PRI", ["WARLOCK"] = "WLK",
["PALADIN"] = "PAL", ["Pet"] = "PET" }
-- knob=nil to use current values
local function set_anchor_buttons(knob)
RecapAnchorTopLeft:SetNormalTexture("Interface\\AddOns\\Recap\\RecapButtons-Down")
RecapAnchorTopLeft:UnlockHighlight()
RecapAnchorTopRight:SetNormalTexture("Interface\\AddOns\\Recap\\RecapButtons-Down")
RecapAnchorTopRight:UnlockHighlight()
RecapAnchorBottomLeft:SetNormalTexture("Interface\\AddOns\\Recap\\RecapButtons-Down")
RecapAnchorBottomLeft:UnlockHighlight()
RecapAnchorBottomRight:SetNormalTexture("Interface\\AddOns\\Recap\\RecapButtons-Down")
RecapAnchorBottomRight:UnlockHighlight()
if knob=="RecapAnchorTopLeft" then
recap.Opt.GrowUpwards.value = false
recap.Opt.GrowLeftwards.value = false
elseif knob=="RecapAnchorTopRight" then
recap.Opt.GrowUpwards.value = false
recap.Opt.GrowLeftwards.value = true
elseif knob=="RecapAnchorBottomLeft" then
recap.Opt.GrowUpwards.value = true
recap.Opt.GrowLeftwards.value = false
elseif knob=="RecapAnchorBottomRight" then
recap.Opt.GrowUpwards.value = true
recap.Opt.GrowLeftwards.value = true
else
knob = "RecapAnchor"..(recap.Opt.GrowUpwards.value and "Bottom" or "Top")..(recap.Opt.GrowLeftwards.value and "Right" or "Left")
end
getglobal(knob):SetNormalTexture("Interface\\AddOns\\Recap\\RecapButtons-Up")
getglobal(knob):LockHighlight()
Recap_MoveMinimize()
if recap.Opt.Minimized.value then
Recap_Minimize()
end
end
function Recap_InitializeOptions()
local chatname,chatid,i
RecapAutoFadeSlider:SetValue(recap.Opt.AutoFadeTimer.value)
RecapIdleFightSlider:SetValue(recap.Opt.IdleFightTimer.value)
RecapMaxRowsSlider:SetValue(recap.Opt.MaxRows.value)
RecapMaxRankSlider:SetValue(recap.Opt.MaxRank.value)
RecapOptTab1:LockHighlight()
RecapOptSubFrame1:Show()
RecapOpt_StatDropDownText:SetText(recap.Opt.AutoPost.Stat)
_,_,chatid,chatname = string.find(recap.Opt.AutoPost.Channel,"(%d+)-(%w+)")
if chatid and chatid~=GetChannelName(chatid) then
recap.Opt.AutoPost.Channel = "Self"
end
RecapOpt_ChannelDropDownText:SetText(recap.Opt.AutoPost.Channel)
if recap.UseOneSettings then
RecapOptCheck_UseOneSettings:SetChecked(1)
else
RecapOptCheck_UseOneSettings:SetChecked(0)
end
-- set check state for all checked options
for i in recap.Opt do
if RecapOptFrame and recap.Opt[i].type=="Check" then
if recap.Opt[i].value==true then
getglobal("RecapOptCheck_"..i):SetChecked(1)
else
getglobal("RecapOptCheck_"..i):SetChecked(0)
end
end
end
set_anchor_buttons()
end
function RecapOpt_OnMouseDown(arg1)
if recap_temp.Loaded and arg1=="LeftButton" then
RecapOptFrame:StartMoving()
end
end
function RecapOpt_OnMouseUp(arg1)
if recap_temp.Loaded and arg1=="LeftButton" then
RecapOptFrame:StopMovingOrSizing()
end
end
function Recap_AutoFadeSlider_OnValueChanged(arg1)
if recap_temp.Loaded and arg1 then
RecapAutoFadeSlider_Text:SetText(arg1.." seconds")
recap.Opt.AutoFadeTimer.value = arg1
end
end
function Recap_IdleFightSlider_OnValueChanged(arg1)
if recap_temp.Loaded and arg1 then
RecapIdleFightSlider_Text:SetText(arg1.." seconds")
recap.Opt.IdleFightTimer.value = arg1
end
end
function Recap_MaxRowsSlider_OnValueChanged(arg1)
if recap_temp.Loaded and arg1 then
RecapMaxRowsSlider_Text:SetText(arg1.." rows")
recap.Opt.MaxRows.value = arg1
RecapScrollBar_Update()
end
end
function Recap_MaxRankSlider_OnValueChanged(arg1)
if recap_temp.Loaded and arg1 then
RecapMaxRankSlider_Text:SetText("Rank top "..arg1)
recap.Opt.MaxRank.value = arg1
end
end
function RecapOptCheck_OnEnter()
local id = this:GetID()
Recap_Tooltip(recap_temp.OptList[id][2],recap_temp.OptList[id][3])
end
function RecapOptCheck_OnClick()
local i
local id = this:GetID()
RecapSetEditBox:ClearFocus()
if id>0 and recap_temp.OptList[id][1] then
i = getglobal("RecapOptCheck_"..recap_temp.OptList[id][1]):GetChecked()
if i==1 then
recap.Opt[recap_temp.OptList[id][1]].value = true
PlaySound("igMainMenuOptionCheckBoxOn")
else
recap.Opt[recap_temp.OptList[id][1]].value = false
PlaySound("igMainMenuOptionCheckBoxOff")
end
-- if display list/self checks
if ((id>=11 and id<=16) or (id>=26 and id<=27) or (id>=30 and id<=34) or (id>=43 and id<=45)) and not recap.Opt.SelfView.value and not recap.Opt.Minimized.value then
Recap_Maximize()
elseif (id>=48 and id<=62) and recap.Opt.SelfView.value and not recap.Opt.Minimized.value then
Recap_Maximize()
-- if display minimized checks
elseif ((id>=17 and id<=22) or id==36) and recap.Opt.Minimized.value then
Recap_Minimize()
elseif recap_temp.OptList[id][1]=="UseColor" then
Recap_SetColors()
if not recap.Opt.Minimized.value then
Recap_SetView()
end
elseif recap_temp.OptList[id][1]=="ShowTooltips" then
GameTooltip:Hide()
Recap_OnTooltip("ShowTooltips")
elseif recap_temp.OptList[id][1]=="HideFoe" then
Recap_SetView()
elseif recap_temp.OptList[id][1]=="HideZero" then
Recap_SetView()
elseif recap_temp.OptList[id][1]=="HideYardTrash" then
Recap_SetView()
elseif recap_temp.OptList[id][1]=="IdleFight" then
if recap.Opt.IdleFight.value and recap.Opt.State.value=="Active" then
recap_temp.IdleTimer = 0
else
recap_temp.IdleTimer = -1
end
elseif recap_temp.OptList[id][1]=="TooltipFollow" then
Recap_OnTooltip("TooltipFollow")
elseif recap_temp.OptList[id][1]=="AutoFade" then
recap_temp.FadeTimer = -1
elseif recap_temp.OptList[id][1]=="MergePets" and not UnitIsVisible then
recap.Opt.MergePets.value = false
RecapOptCheck_MergePets:SetChecked(0)
elseif recap_temp.OptList[id][1]=="GrowLeftwards" or recap_temp.OptList[id][1]=="GrowUpwards" or recap_temp.OptList[id][1]=="AutoMinimize" then
Recap_MoveMinimize()
if recap.Opt.Minimized.value then
Recap_Minimize()
end
elseif recap_temp.OptList[id][1]=="ShowPanel" then
if RecapPanel:IsVisible() then
RecapPanel_Hide(1)
end
elseif recap_temp.OptList[id][1]=="LightData" then
if recap.Opt.LightData.value then
msg = recap_temp.Local.ConfirmLightData
else
msg = recap_temp.Local.ConfirmHeavyData
end
StaticPopupDialogs["RECAP_CONFIRMLIGHTDATA"] = {
text = TEXT(msg),
button1 = TEXT(ACCEPT),
button2 = TEXT(CANCEL),
OnAccept = function()
recap.DataVersion = recap.DataVersion - 0.01 -- force rebuild of data
ReloadUI()
end,
OnHide = function()
RecapOptCheck_LightData:Enable()
end,
OnCancel = function()
recap.Opt.LightData.value = not recap.Opt.LightData.value
if recap.Opt.LightData.value then
RecapOptCheck_LightData:SetChecked(1)
else
RecapOptCheck_LightData:SetChecked(0)
end
end,
timeout = 0,
showAlert = 1,
whileDead = 1
}
RecapOptCheck_LightData:Disable()
StaticPopup_Show("RECAP_CONFIRMLIGHTDATA")
elseif recap_temp.OptList[id][1]=="ShowGauges" then
RecapScrollBar_Update()
end
end
end
function Recap_UseOneSettings_OnClick()
i = RecapOptCheck_UseOneSettings:GetChecked()
if i==1 then
recap.UseOneSettings = true
PlaySound("igMainMenuOptionCheckBoxOn")
msg = recap_temp.Local.ConfirmGlobalSettings
else
recap.UseOneSettings = false
PlaySound("igMainMenuOptionCheckBoxOff")
msg = recap_temp.Local.ConfirmSeparateSettings
end
StaticPopupDialogs["RECAP_CONFIRMLIGHTDATA"] = {
text = TEXT(msg),
button1 = TEXT(ACCEPT),
button2 = TEXT(CANCEL),
OnAccept = function()
if recap.UseOneSettings then
local i,user
for i in recap_set do
_,_,user = string.find(i,"^UserData:(.+)")
if user and user~=recap_temp.p then
recap_set["UserData:"..user] = nil
recap[user] = nil
end
end
end
ReloadUI()
end,
OnHide = function()
RecapOptCheck_UseOneSettings:Enable()
end,
OnCancel = function()
recap.UseOneSettings = not recap.UseOneSettings
if recap.UseOneSettings then
RecapOptCheck_UseOneSettings:SetChecked(1)
else
RecapOptCheck_UseOneSettings:SetChecked(0)
end
end,
timeout = 0,
showAlert = 1,
whileDead = 1
}
RecapOptCheck_UseOneSettings:Disable()
StaticPopup_Show("RECAP_CONFIRMLIGHTDATA")
end
--[[ Fight Data Set functions ]]
function Recap_InitDataSets()
if RecapOptTitle then
RecapFightDataSetHeader_Name:SetTextColor(recap_temp.ColorNone.r,recap_temp.ColorNone.g,recap_temp.ColorNone.b)
RecapFightDataSetHeader_Date:SetTextColor(recap_temp.ColorNone.r,recap_temp.ColorNone.g,recap_temp.ColorNone.b)
RecapFightDataSetHeader_Combatants:SetTextColor(recap_temp.ColorNone.r,recap_temp.ColorNone.g,recap_temp.ColorNone.b)
RecapSaveButton:Disable()
RecapLoadButton:Disable()
RecapDeleteButton:Disable()
Recap_BuildFightSets()
RecapOptTitle:SetText("Recap v"..Recap_Version.." for "..recap_temp.Player.." of "..recap_temp.Server)
end
end
function Recap_SetEditValidateButtons()
local text
if recap_temp.Loaded then
text = RecapSetEditBox:GetText()
if text and text~="" then
RecapSaveButton:Enable()
else
RecapSaveButton:Disable()
RecapLoadButton:Disable()
RecapDeleteButton:Disable()
end
recap_temp.FightSetSelected = Recap_SetExists(text)
RecapFightSetsScrollBar_Update()
if recap_temp.FightSetSelected~=0 then
RecapLoadButton:Enable()
RecapDeleteButton:Enable()
else
RecapLoadButton:Disable()
RecapDeleteButton:Disable()
end
end
end
-- populates recap_temp.FightSets with a list of existing fight sets
function Recap_BuildFightSets()
local i,friendly
recap_temp.FightSetsSize = 1
for i in recap_set do
if recap_set[i] and not string.find(i,"^UserData:") then
if not recap_temp.FightSets[recap_temp.FightSetsSize] then
recap_temp.FightSets[recap_temp.FightSetsSize] = {}
end
recap_temp.FightSets[recap_temp.FightSetsSize].Name = i
recap_temp.FightSets[recap_temp.FightSetsSize].Date = recap_set[i].TimeStamp
friendly = 0
for j in recap_set[i].Combatant do
if string.find(recap_set[i].Combatant[j],"^true") then
friendly = friendly + 1
end
end
recap_temp.FightSets[recap_temp.FightSetsSize].Combatants = recap_set[i].ListSize .. " ("..friendly..")"
recap_temp.FightSetsSize = recap_temp.FightSetsSize + 1
end
end
table.sort(recap_temp.FightSets,Recap_SetSort)
end
function RecapFightSetsScrollBar_Update()
local i, index, item
if recap_temp.Loaded then
FauxScrollFrame_Update(RecapFightSetsScrollBar,recap_temp.FightSetsSize-1,10,5)
for i=1,10 do
index = i + FauxScrollFrame_GetOffset(RecapFightSetsScrollBar)
if index < recap_temp.FightSetsSize then
getglobal("RecapList"..i.."Back"):Hide()
getglobal("RecapFightDataList"..i.."_Name"):SetText(recap_temp.FightSets[index].Name)
getglobal("RecapFightDataList"..i.."_Date"):SetText(recap_temp.FightSets[index].Date)
getglobal("RecapFightDataList"..i.."_Combatants"):SetText(recap_temp.FightSets[index].Combatants)
item = getglobal("RecapFightDataList"..i)
item:Show()
if recap_temp.FightSetSelected == index then
item:LockHighlight()
else
item:UnlockHighlight()
end
else
item = getglobal("RecapFightDataList"..i)
item:Hide()
item:UnlockHighlight()
getglobal("RecapList"..i.."Back"):Show()
end
end
end
end
function RecapFightData_OnClick()
local id = this:GetID()
RecapSetEditBox:ClearFocus()
index = id + FauxScrollFrame_GetOffset(RecapFightSetsScrollBar)
if index < recap_temp.FightSetsSize then
recap_temp.FightSetSelected = index
RecapSetEditBox:SetText(recap_temp.FightSets[index].Name)
RecapSaveButton:Enable()
RecapLoadButton:Enable()
RecapDeleteButton:Enable()
RecapFightSetsScrollBar_Update()
end
end
function Recap_SetExists(arg1)
local result = 0
for i in recap_temp.FightSets do
if recap_temp.FightSets[i].Name == arg1 then
result = i
end
end
return result
end
-- fight data set sort (by date)
function Recap_SetSort(e1,e2)
if e1 and e2 and ( e1.Date > e2.Date ) then
return true
else
return false
end
end
--[[ Options tabs ]]
function RecapOptTab_OnEnter()
id = this:GetID()
if id and id>0 then
Recap_OnTooltip("OptTab"..id)
end
end
function RecapOptTab_OnClick()
local id,i = this:GetID()
PlaySound("GAMEGENERICBUTTONPRESS")
if id and id>0 then
for i=1,4 do
getglobal("RecapOptTab"..i):UnlockHighlight()
getglobal("RecapOptSubFrame"..i):Hide()
end
RecapOptClipFrame:Hide()
getglobal("RecapOptTab"..id):LockHighlight()
getglobal("RecapOptSubFrame"..id):Show()
end
end
--[[ drop down lists ]]
function RecapDropMenu_OnClick()
local id = this:GetID()
if recap_temp.CurrentDrop==RecapOpt_StatDropDownButton then
recap.Opt.AutoPost.Stat = getglobal("RecapDropMenu"..id.."_Text"):GetText()
RecapOpt_StatDropDownText:SetText(recap.Opt.AutoPost.Stat)
else
recap.Opt.AutoPost.Channel = getglobal("RecapDropMenu"..id.."_Text"):GetText()
RecapOpt_ChannelDropDownText:SetText(recap.Opt.AutoPost.Channel)
end
Recap_DropMenu:Hide()
recap_temp.CurrentDrop = nil
end
function RecapDropMenu_OnEnter()
end
function Recap_ToggleDropDown()
if Recap_DropMenu:IsVisible() and recap_temp.CurrentDrop==this then
Recap_DropMenu:Hide()
recap_temp.CurrentDrop = nil
elseif recap_temp.CurrentDrop~=this and this==RecapOpt_StatDropDownButton then
Recap_ShowStatDrop()
recap_temp.CurrentDrop = this
elseif recap_temp.CurrentDrop~=this then
Recap_ShowChannelDrop()
recap_temp.CurrentDrop = this
end
end
function Recap_ShowStatDrop()
Recap_DropMenu:ClearAllPoints()
Recap_DropMenu:SetPoint("TOPLEFT","RecapOpt_StatDropDown","BOTTOMLEFT",16,8)
Recap_PopulateDrop(recap_temp.StatDropList)
end
function Recap_ShowChannelDrop()
local new_list = {}
Recap_DropMenu:ClearAllPoints()
Recap_DropMenu:SetPoint("TOPLEFT","RecapOpt_ChannelDropDown","BOTTOMLEFT",16,8)
for i=1,table.getn(recap_temp.ChannelDropList) do
table.insert(new_list,recap_temp.ChannelDropList[i])
end
for i=1,10 do
c,name = GetChannelName(i)
if name then
for i=1,table.getn(recap_temp.Local.SkipChannels) do
if string.find(name,recap_temp.Local.SkipChannels[i]) then
name = nil
i = table.getn(recap_temp.Local.SkipChannels)
end
end
end
if name then
table.insert(new_list,c.."-"..name)
end
end
Recap_PopulateDrop(new_list)
end
function Recap_PopulateDrop(arg1)
local height = 0
for i=1,math.min(8,table.getn(arg1)) do
getglobal("RecapDropMenu"..i.."_Text"):SetText(arg1[i])
getglobal("RecapDropMenu"..i):Show()
height = height + 16
end
for i=table.getn(arg1)+1,8 do
getglobal("RecapDropMenu"..i):Hide()
end
Recap_DropMenu:SetHeight(height+4)
Recap_DropMenu:Show()
end
function RecapDropMenu_OnUpdate(arg1)
if not recap_temp.MenuTimer or MouseIsOver(Recap_DropMenu) or
(recap_temp.CurrentDrop and MouseIsOver(recap_temp.CurrentDrop)) then
recap_temp.MenuTimer = 0
end
recap_temp.MenuTimer = recap_temp.MenuTimer + arg1
if recap_temp.MenuTimer > .25 then
recap_temp.MenuTimer = 0
Recap_DropMenu:Hide()
recap_temp.CurrentDrop = nil
end
end
local function logline(arg1,clip)
local lineformat = recap_temp.Local.LogFormat
local str
local prefix = recap.Opt.HTML.value and "<b>" or ""
local suffix = recap.Opt.HTML.value and "</b>" or ""
if recap.Opt.HTML.value then
lineformat = recap_temp.Local.HTMLFormat
end
if arg1=="FirstLine" then
str = string.format(lineformat,prefix..recap_temp.Local.Log[1]..suffix,
prefix..recap_temp.Local.Log[2]..suffix,
prefix..recap_temp.Local.Log[3]..suffix,
prefix..recap_temp.Local.Log[4]..suffix,
prefix..recap_temp.Local.Log[5]..suffix,
prefix..recap_temp.Local.Log[6]..suffix,
prefix..recap_temp.Local.Log[7]..suffix,
prefix..recap_temp.Local.Log[8]..suffix,
prefix..recap_temp.Local.Log[9]..suffix,
prefix..recap_temp.Local.Log[10]..suffix,
prefix..recap_temp.Local.Log[11]..suffix,
prefix..recap_temp.Local.Log[12]..suffix)
elseif arg1=="Spacer" then
str = recap.Opt.HTML.value and string.format(lineformat," "," "," "," "," "," "," "," "," "," "," "," ") or " "
else
str = string.format(lineformat,
recap_temp.List[arg1].Name,
Recap_FormatLevel(recap.Combatant[recap_temp.List[arg1].Name].Level),
Recap_FormatClass(recap.Combatant[recap_temp.List[arg1].Name].Class),
Recap_FormatTime(recap_temp.List[arg1].Time),
recap_temp.List[arg1].Heal,
recap_temp.List[arg1].HealP.."%%",
recap_temp.List[arg1].DmgIn,
recap_temp.List[arg1].DmgInP.."%%",
recap_temp.List[arg1].DmgOut,
recap_temp.List[arg1].DmgOutP.."%%",
recap_temp.List[arg1].MaxHit,
string.format("%.1f",recap_temp.List[arg1].DPS))
end
if str then
str = str .. ((clip and not recap.Opt.HTML.value) and "\n" or "")
if clip then
str = string.gsub(str,"%%%%","%%")
end
return str
end
end
function Recap_WriteClip()
local i,donefriends
local headerformat = recap_temp.Local.LogHeader
RecapClipEditBox:SetText("")
RecapOptSubFrame4:Hide()
RecapOptClipFrame:Show()
RecapClipEditBox:SetFocus()
if recap.Opt.HTML.value then
headerformat = recap_temp.Local.HTMLHeader
RecapClipEditBox:Insert(recap_temp.Local.HTMLPrefix)
end
RecapClipEditBox:Insert(string.format(headerformat,UnitName("player"),recap_temp.Local.LastAll[recap.Opt.View.value],date(),GetRealZoneText()).."\n")
RecapClipEditBox:Insert(logline("FirstLine","clip"))
for i=1,recap_temp.ListSize-1 do
if not donefriends and not recap.Combatant[recap_temp.List[i].Name].Friend then
if not recap.Opt.WriteFriends.value then
RecapClipEditBox:Insert(logline("Spacer","clip"))
end
donefriends = true
end
if not donefriends or not recap.Opt.WriteFriends.value then
RecapClipEditBox:Insert(logline(i,"clip"))
end
end
if recap.Opt.HTML.value then
RecapClipEditBox:Insert(recap_temp.Local.HTMLSuffix)
end
RecapClipEditBox:HighlightText()
end
function Recap_WriteLog()
local i,chatnum,chatname,freeslot,donefriends,alreadyin
local lines = 0
local logchat = "recaplog"..string.lower(UnitName("player"))
local headerformat = recap_temp.Local.LogHeader
local prefix,suffix = "", ""
for i=1,10 do
_,chatname = GetChannelName(i)
if not chatname then
freeslot = true
elseif string.lower(chatname)==logchat then
freeslot = true
alreadyin = true
end
end
if freeslot then
if not alreadyin then
RecapFrame:RegisterEvent("CHAT_MSG_CHANNEL_NOTICE")
JoinChannelByName(logchat)
RecapOpt_WriteLogLabel:SetText(RECAP_ACQUIRING_CHANNEL)
end
chatnum = nil
for i=1,10 do
j,chatname = GetChannelName(i)
if chatname and string.lower(chatname)==logchat then
chatnum=j
end
end
if chatnum then
if recap.Opt.HTML.value then
headerformat = recap_temp.Local.HTMLHeader
prefix = "-->"
suffix = "<!--"
SendChatMessage(recap_temp.Local.HTMLPrefix..prefix,"CHANNEL",nil,chatnum)
end
-- we're in a channel
SendChatMessage(prefix..string.format(headerformat,UnitName("player"),recap_temp.Local.LastAll[recap.Opt.View.value],date(),GetRealZoneText())..suffix,"CHANNEL",nil,chatnum)
SendChatMessage(prefix..logline("FirstLine")..suffix,"CHANNEL",nil,chatnum)
for i=1,recap_temp.ListSize-1 do
if lines<(recap_temp.MaxLogLines/(recap.Opt.HTML.value and 2 or 1)) then
-- MaxLogLines defined in localization.lua. When writing in HTML, halve the limit to prevent disconnect
if not donefriends and not recap.Combatant[recap_temp.List[i].Name].Friend then
if not recap.Opt.WriteFriends.value then
SendChatMessage(prefix..logline("Spacer")..suffix,"CHANNEL",nil,chatnum)
end
donefriends = true
end
if not donefriends or not recap.Opt.WriteFriends.value then
SendChatMessage(prefix..logline(i)..suffix,"CHANNEL",nil,chatnum)
end
lines = lines + 1
end
end
if recap.Opt.HTML.value then
SendChatMessage(prefix..recap_temp.Local.HTMLSuffix,"CHANNEL",nil,chatnum)
end
SendChatMessage("EOF","CHANNEL",nil,chatnum)
end
else
DEFAULT_CHAT_FRAME:AddMessage(recap_temp.Local.NoFreeChannels)
RecapWriteLogButton:Enable()
end
end
function Recap_FormatLevel(arg1)
if arg1 and arg==-1 then
return "??"
elseif arg1 and tonumber(arg1) and tonumber(arg1)>0 then
return arg1
else
return ""
end
end
function Recap_FormatClass(arg1)
if classabr[arg1] then
return classabr[arg1]
else
return ""
end
end
-- removes character-specific
function Recap_UseOneSettings()
for i in recap_set do
_,_,user = string.find(i,"^UserData:(.+)")
if user and user~=recap_temp.p then
recap_set["UserData:"..user] = nil
recap[user] = nil
end
end
recap.UseOneSettings = true
end
function RecapAnchor_OnEnter()
Recap_OnTooltip(this:GetName())
end
function RecapAnchor_OnClick()
set_anchor_buttons(this:GetName())
end