--[[ TipBuddy: --------- copyright 2005 by Chester ]] function TipBuddy_OnLoad() this:RegisterEvent("VARIABLES_LOADED"); this:RegisterEvent("PLAYER_LOGIN"); this:RegisterEvent("UPDATE_MOUSEOVER_UNIT"); this:RegisterEvent("UNIT_LEVEL"); this:RegisterEvent("UNIT_FACTION"); this:RegisterEvent("UNIT_DYNAMIC_FLAGS"); this:RegisterEvent("UNIT_CLASSIFICATION_CHANGED"); this:RegisterEvent("PLAYER_PVPLEVEL_CHANGED"); this:RegisterEvent("UNIT_AURA"); this:RegisterEvent("PLAYER_FLAGS_CHANGED"); this:RegisterEvent("UNIT_HEALTH"); this:RegisterEvent("UNIT_MAXHEALTH"); this:RegisterEvent("UNIT_MANA"); this:RegisterEvent("UNIT_RAGE"); this:RegisterEvent("UNIT_FOCUS"); this:RegisterEvent("UNIT_ENERGY"); this:RegisterEvent("UNIT_HAPPINESS"); this:RegisterEvent("UNIT_MAXMANA"); this:RegisterEvent("UNIT_MAXRAGE"); this:RegisterEvent("UNIT_MAXFOCUS"); this:RegisterEvent("UNIT_MAXENERGY"); this:RegisterEvent("UNIT_MAXHAPPINESS"); this:RegisterEvent("UNIT_DISPLAYPOWER"); this:RegisterEvent("UNIT_PVP_UPDATE"); this:RegisterEvent("UPDATE_SHAPESHIFT_FORMS"); SLASH_TIPBUDDY1 = "/tipbuddy"; SLASH_TIPBUDDY2 = "/tbuddy"; SLASH_TIPBUDDY3 = "/tip"; SlashCmdList["TIPBUDDY"] = function(msg) TipBuddy_SlashCommand(msg); end -- commented out cause it fucked up my buttons -- Add TipBuddy_OptionsFrame to the UIPanelWindows list --UIPanelWindows['TipBuddy_OptionsFrame'] = {area = 'center', pushable = 0}; end local lGameTooltip_OnEvent_Orig; local lGameTooltip_OnShow_Orig; local lGameTooltip_FadeOut_Orig; function TipBuddy_OnEvent() if( event == "VARIABLES_LOADED" ) then --TB_AddMessage(TB_WHT_TXT.."VARIABLES_LOADED"); TipBuddy_Variable_Initialize(); TB_GameTooltip_IniHooks(); TipBuddy.uiscale = TipBuddy_GetUIScale(); --hooking GameTooltip's OnEvent lGameTooltip_OnEvent_Orig = GameTooltip:GetScript("OnEvent"); GameTooltip:SetScript( "OnEvent", TipBuddy_GameTooltip_OnEvent ); --hooking GameTooltip's OnShow lGameTooltip_OnShow_Orig = GameTooltip:GetScript("OnShow"); GameTooltip:SetScript( "OnShow", TipBuddy_GameTooltip_OnShow ); if (TipBuddy_SavedVars["general"].framepos_L or TipBuddy_SavedVars["general"].framepos_T) then TipBuddy_Header_Frame:SetPoint("TOPLEFT", "UIParent", "BOTTOMLEFT", TipBuddy_SavedVars["general"].framepos_L, TipBuddy_SavedVars["general"].framepos_T); end if (not TipBuddy_SavedVars["general"].delaytime) then TipBuddy_SavedVars["general"].delaytime = "0.5"; end if (not TipBuddy_SavedVars["general"].fadetime) then TipBuddy_SavedVars["general"].fadetime = "0.3"; end if (not TipBuddy_SavedVars["general"].gtt_anchored) then TipBuddy_SavedVars["general"].gtt_anchored = 0; end if (TipBuddy_SavedVars["general"].anchored == 1) then if (not TipBuddy_SavedVars["general"].anchor_vis_first or TipBuddy_SavedVars["general"].anchor_vis == 1) then TipBuddy_SavedVars["general"].anchor_vis_first = 1; TipBuddy_Header_Frame:Show(); else TipBuddy_Header_Frame:Show(); TipBuddy_Header_Frame:Hide(); end TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos(); this:SetPoint(TipBuddy.anchor, "TipBuddy_Header_Frame", TipBuddy.fanchor, 0, 1); else if (not TipBuddy_SavedVars["general"].anchor_vis_first) then TipBuddy_ResetAnchorPos(); TipBuddy_Header_Frame:Hide(); else TipBuddy_Header_Frame:Show(); TipBuddy_Header_Frame:Hide(); end end if( DEFAULT_CHAT_FRAME ) then DEFAULT_CHAT_FRAME:AddMessage("|cffffd200TipBuddy |cffffff00v"..TIPBUDDY_VERSION.." loaded."); end TipBuddy_InitializeTextColors(); elseif( event == "PLAYER_LOGIN" ) then -- Add TipBuddy to myAddOns addons list if (myAddOnsFrame) then myAddOnsList.TipBuddy = { name = "|cff20ff20TipBuddy", description = "Enhanced, configurable unit tooltip.", version = "|cffffff00"..TIPBUDDY_VERSION, author = "chester", email = "chester.dent@gmail.com", category = MYADDONS_CATEGORY_OTHERS, frame = "TipBuddy_OptionsFrame", optionsframe = "TipBuddy_OptionsFrame" }; end TipBuddy.xpoint, TipBuddy.xpos, TipBuddy.ypos = TipBuddy_GetFrameCursorOffset(); TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos(); GameTooltip:SetOwner(UIParent, "ANCHOR_RIGHT"); GameTooltip:SetPoint("BOTTOM", "TipBuddy_Parent_Frame", "CENTER", 0, 0); GameTooltip:SetText(" "); GameTooltip:SetBackdrop({bgFile="Interface\\AddOns\\TipBuddy\\gfx\\UI-Tooltip-Background",edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",tile=true,tileSize=32,edgeSize=16,insets={ left = 4, right = 4, top = 4, bottom = 4 }}); GameTooltip:Hide(); TipBuddyTooltip:SetOwner(UIParent, "ANCHOR_RIGHT"); TipBuddyTooltip:SetPoint("BOTTOM", "TipBuddy_Parent_Frame", "CENTER", 0, 0); TipBuddyTooltip:SetText(" "); TipBuddyTooltip:SetBackdrop({bgFile="Interface\\AddOns\\TipBuddy\\gfx\\UI-Tooltip-Background",edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",tile=true,tileSize=32,edgeSize=16,insets={ left = 4, right = 4, top = 4, bottom = 4 }}); TipBuddyTooltip:Hide(); --TB_AddMessage("loading: ("..TipBuddyTooltip:GetTop()..")"); TipBuddy_Main_Frame:SetBackdrop({bgFile="Interface\\AddOns\\TipBuddy\\gfx\\UI-Tooltip-Background",edgeFile="Interface\\Tooltips\\UI-Tooltip-Border",tile=true,tileSize=32,edgeSize=8,insets={ left = 2, right = 2, top = 2, bottom = 2 }}); --/script TipBuddyTooltip:SetOwner(TipBuddy_Parent_Frame); TipBuddyTooltip:SetPoint("BOTTOM", "TipBuddy_Parent_Frame", "CENTER", 0, 0); TipBuddyTooltip:SetText("player"); --/script TipBuddyTooltip:SetOwner(TipBuddy_Parent_Frame); TipBuddyTooltip:SetPoint("BOTTOM", "TipBuddy_Parent_Frame"); TipBuddyTooltip:SetText("player"); --/script TipBuddyTooltip:SetPoint("BOTTOM", "TipBuddy_Parent_Frame", "CENTER", 0, 0); elseif (event == "UPDATE_MOUSEOVER_UNIT" or event == "UNIT_LEVEL" or event == "UNIT_FACTION" or event == "PLAYER_PVPLEVEL_CHANGED" or event == "UNIT_DYNAMIC_FLAGS" or event == "UNIT_MAXHEALTH") then if (UnitExists("mouseover")) then --TB_AddMessage(TB_WHT_TXT.."UPDATE_MOUSEOVER_UNIT"); TipBuddy.hasTarget = 1; TipBuddy_ShowUnitTooltip(); elseif (TipBuddy.targetUnit and TipBuddy.targetUnit == arg1) then TipBuddy.hasTarget = 1; TipBuddy_ShowUnitTooltip(); end --this fires after mouseover_unit when buffs change elseif ( event == "UNIT_AURA" and (arg1 == "mouseover" or string.find(arg1, "party"))) then if ((arg1 == "mouseover") or (TipBuddy.targetUnit and TipBuddy.targetUnit == arg1)) then ----TB_AddMessage(TB_WHT_TXT.."UNIT_AURA"); TipBuddy_TargetBuffs_Update( TipBuddy.targetType, arg1 ); end elseif ( event == "UNIT_HEALTH" ) then if ((arg1 == "mouseover") or (TipBuddy.targetUnit and TipBuddy.targetUnit == arg1)) then ----TB_AddMessage(TB_WHT_TXT.."UNIT_HEALTH or UNIT_MAXHEALTH"); if (UnitHealth(arg1) <= 0) then TipBuddy_ShowUnitTooltip(); return; end if (TipBuddy.compactvis) then TipBuddy_UpdateHealthText( TipBuddy_HealthText, TipBuddy.targetType, arg1 ); TipBuddy_UpdateManaText( TipBuddy_ManaText, TipBuddy.targetType, arg1 ); TipBuddy_TargetInfo_FindExtras( arg1 ); else TipBuddyTooltipStatusBar:SetValue(UnitHealth(arg1)); TipBuddy_UpdateHealthText( TipBuddy_HealthTextGTT, TipBuddy.targetType, arg1 ); TipBuddy_UpdateManaText( TipBuddy_ManaTextGTT, TipBuddy.targetType, arg1 ); end end elseif ( event == "UNIT_MANA" or event == "UNIT_RAGE" or event == "UNIT_FOCUS" or event == "UNIT_ENERGY" or event == "UNIT_HAPPINESS" or event == "UNIT_MAXMANA" or event == "UNIT_MAXRAGE" or event == "UNIT_MAXFOCUS" or event == "UNIT_MAXENERGY" or event == "UNIT_MAXHAPPINESS" or event == "UNIT_DISPLAYPOWER" or event == "UPDATE_SHAPESHIFT_FORMS") then if ( arg1 == "mouseover" or UnitIsPlayer("mouseover")) then ----TB_AddMessage("UNIT_MANA"); if (not TipBuddy.targetType) then TipBuddy.targetType = TipBuddy_TargetInfo_GetTargetType( arg1 ); end if (not TipBuddy_SavedVars[TipBuddy.targetType]) then return; elseif ( TipBuddy_SavedVars[TipBuddy.targetType].off ~= 0 ) then ------TB_AddMessage(TB_WHT_TXT.."UNIT_MANA - go"); TipBuddy_SetFrame_Visibility( TipBuddy.targetType, arg1, 1 ); TipBuddy_SetFrame_BackgroundColor( TipBuddy.targetType, arg1 ); end end end end function TipBuddy_SlashCommand(msg) if( not msg or msg == "" ) then TipBuddy_ToggleOptionsFrame(); end if( msg == "rankname" ) then if (TipBuddy_SavedVars["general"].rankname == 1) then TipBuddy_SavedVars["general"].rankname = 0; DEFAULT_CHAT_FRAME:AddMessage("|cff20ff20TipBuddy: No longer showing full rank title in name."); else TipBuddy_SavedVars["general"].rankname = 1; DEFAULT_CHAT_FRAME:AddMessage("|cff20ff20TipBuddy: Showing full rank titles in name."); end end if( msg == "resetanchor" ) then TipBuddy_ResetAnchorPos(); DEFAULT_CHAT_FRAME:AddMessage("|cff20ff20TipBuddy: Resetting TipBuddyAnchor position."); end if( msg == "report" ) then TipBuddy_ReportVarStats(); end if( msg == "blizdefault" ) then if (TipBuddy_SavedVars["general"].blizdefault == 1) then TipBuddy_SavedVars["general"].blizdefault = 0; DEFAULT_CHAT_FRAME:AddMessage("|cff20ff20TipBuddy: Default tooltips are now enhanced."); else TipBuddy_SavedVars["general"].blizdefault = 1; DEFAULT_CHAT_FRAME:AddMessage("|cff20ff20TipBuddy: Default tooltips are no longer enhanced."); end end if (string.find(msg, "extras") ~= nil) then local type = ""; for type in string.gfind(msg, "extras%s(.+)") do type = TipBuddy_ToggleExtras(type); ----TB_AddMessage(type); end if (not type) then DEFAULT_CHAT_FRAME:AddMessage("|cff20ff20TipBuddy: Please specify a target type (ex: /tip extras pc_friend)"); return; end return; end if (string.find(msg, "scale") ~= nil) then --local i, s = string.find(msg, "%d+"); for scale in string.gfind(msg, "scale%s(%d.*)") do TipBuddy.s = tonumber(scale); end if (TipBuddy.s) then if (TipBuddy.s > 2) then TipBuddy.s = 2; elseif (TipBuddy.s < 0.25) then TipBuddy.s = 0.25; end GameTooltip:SetScale(2); TipBuddyTooltip:SetScale(2); --GameTooltip:SetScale(UIParent:GetScale() * TipBuddy.s); TipBuddy_SetEffectiveScale(GameTooltip, TipBuddy.s, UIParent); TipBuddy_SetEffectiveScale(TipBuddyTooltip, TipBuddy.s, UIParent); --TipBuddy_SavedVars["general"].gtt_scale = (UIParent:GetScale() * TipBuddy.s); TipBuddy_SavedVars["general"].gtt_scale = TipBuddy.s; else DEFAULT_CHAT_FRAME:AddMessage("|cff20ff20TipBuddy: Please type a scale number after 'scale' (valid numbers: 0.25-2)"); end return; end end function TipBuddy_ShowUnitTooltip(unit, refresh) if (not unit) then unit = "mouseover"; end if (not refresh) then TipBuddy.targetUnit = unit; TipBuddy.uName = UnitName(unit); TipBuddy.uLevel = UnitLevel(unit); TipBuddy.uClass = UnitClass(unit); TipBuddy.uRace = UnitRace(unit); TipBuddy.uGuild = GetGuildInfo(unit); TipBuddy.uReaction = TipBuddy_GetUnitReaction(unit); --TB_AddMessage("ShowUnitTooltip"); TipBuddy.targetType = TipBuddy_TargetInfo_GetTargetType( unit ); else --TB_AddMessage("ShowUnitTooltip -- refresh!"); end TipBuddy_SetFrame_Visibility( TipBuddy.targetType, unit, refresh ); TipBuddy_SetFrame_BackgroundColor( TipBuddy.targetType, unit ); TipBuddy_ShowRank( TipBuddy.targetType, unit ); TipBuddy_TargetBuffs_Update( TipBuddy.targetType, unit ); --local text = getglobal("GameTooltipTextLeft1"); --if (not text or not TipBuddy.uName or not string.find(text:GetText(), TipBuddy_FixMagicChars(TipBuddy.uName)) ) then --end end -------------------------------------------------------------------------------------------------------------------------------------- -- CHECK PET -------------------------------------------------------------------------------------------------------------------------------------- --[[ UNITNAME_TITLE_CHARM = "%s's Minion"; -- %s is the name of the unit's charmer UNITNAME_TITLE_CREATION = "%s's Creation"; UNITNAME_TITLE_GUARDIAN = "%s's Guardian"; UNITNAME_TITLE_MINION = "%s's Minion"; UNITNAME_TITLE_PET = "%s's Pet"; -- %s is the name of the unit's summoner ]]-- function TipBuddy_TargetInfo_CheckPet() for i=1, (GameTooltip:NumLines()), 1 do local tipstring = getglobal("GameTooltipTextLeft"..i); if (not tipstring or not tipstring:GetText()) then return; end if ( string.find(tipstring:GetText(), TB_minion) ) then return 1; end if ( string.find(tipstring:GetText(), TB_creation) ) then return 1; end if ( string.find(tipstring:GetText(), TB_guardian) ) then return 1; end if ( string.find(tipstring:GetText(), TB_pet) ) then return 1; end end return; end -------------------------------------------------------------------------------------------------------------------------------------- -- GET TARGET TYPE -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_TargetInfo_GetTargetType( unit ) if (not unit) then return; end if ( ( UnitHealth(unit) <= 0 ) ) then return ( "corpse" ); elseif ( ( UnitHealthMax(unit) > 0 ) ) then if (string.find(unit, "party.+")) then return ( "pc_party" ); end if (UnitPlayerControlled(unit)) then if (UnitIsFriend(unit, "player")) then if ( UnitIsUnit(unit, "pet") or TipBuddy_TargetInfo_CheckPet() ) then TB_AddMessage("1 - pet_friend"); return ( "pet_friend" ); end if (UnitInParty(unit)) then TB_AddMessage("1 - pc_party"); return ( "pc_party" ); else return ( "pc_friend" ); end elseif (UnitIsEnemy(unit, "player")) then if ( TipBuddy_TargetInfo_CheckPet() ) then return ( "pet_enemy" ); else return ( "pc_enemy" ); end else TB_AddMessage("2 - pet_friend"); return ( "pet_friend" ); end else if (UnitIsFriend(unit, "player")) then if ( TipBuddy_TargetInfo_CheckPet() ) then return ( "pet_friend" ); else return ( "npc_friend" ); end elseif (UnitIsEnemy(unit, "player")) then if ( TipBuddy_TargetInfo_CheckPet() ) then return ( "pet_enemy" ); else return ( "npc_enemy" ); end else --neutral return ( "npc_neutral" ); end end else TipBuddy_Hide( TipBuddy_Main_Frame ); return; end end -------------------------------------------------------------------------------------------------------------------------------------- -- GET EXTRAS -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_TargetInfo_FindExtras( unit ) TipBuddy_GTT_GetExtraLines(20, unit); TipBuddy_TargetInfo_ShowExtras(); end function TipBuddy_TargetInfo_ShowExtras() ----TB_AddMessage("SHOWING_EXTRAS"); if (TipBuddy.gtt_xtra) then local lineL, LineR; for i=1, 20, 1 do getglobal("TipBuddy_Xtra"..i.."_Text"):Hide(); getglobal("TipBuddy_Xtra"..i.."_Text"):SetText(""); getglobal("TipBuddy_XtraR"..i.."_Text"):Hide(); getglobal("TipBuddy_XtraR"..i.."_Text"):SetText(""); end for i=1, table.getn(TipBuddy.gtt_xtra), 1 do lineL = getglobal("TipBuddy_Xtra"..i.."_Text"); ----TB_AddMessage(TEXT(TipBuddy.gtt_xtra[i])) if (TipBuddy.gtt_xtra[i.."color"]) then lineL:SetVertexColor(TipBuddy.gtt_xtra[i.."color"].r, TipBuddy.gtt_xtra[i.."color"].g, TipBuddy.gtt_xtra[i.."color"].b); else lineL:SetTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b); end if (TipBuddy.gtt_xtraR[i.."color"]) then lineR:SetVertexColor(TipBuddy.gtt_xtraR[i.."color"].r, TipBuddy.gtt_xtraR[i.."color"].g, TipBuddy.gtt_xtraR[i.."color"].b); else lineR:SetTextColor(HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b); end if (TipBuddy.gtt_xtraR) then lineL:SetText(TEXT(TipBuddy.gtt_xtra[i])); lineL:Show(); lineR = getglobal("TipBuddy_XtraR"..i.."_Text"); ------TB_AddMessage(TEXT(TipBuddy.gtt_xtraR[i])) lineR:SetText(TEXT(TipBuddy.gtt_xtraR[i])); lineR:Show(); else lineL:SetText(TEXT(TipBuddy.gtt_xtra[i])); lineL:Show(); end end end end function TipBuddy_GTT_GetExtraLines( numlines, unit ) TB_AddMessage("getting extra lines"); if (not numlines) then return; end TipBuddy.gtt_xtra = {}; TipBuddy.gtt_xtraR = {}; if (not TipBuddy.gtt_lastline) then if (GameTooltip:IsVisible()) then TipBuddy.gtt_lastline = GameTooltip:NumLines(); else TipBuddy.gtt_lastline = 2; end end TB_AddMessage("!! lastline: "..TipBuddy.gtt_lastline..", numlines (stored): "..TipBuddy.gtt_numlines..", numlines (real): "..GameTooltip:NumLines()); if (numlines > TipBuddy.gtt_lastline) then TB_AddMessage("numlines > TipBuddy.gtt_lastline"); --/script GameTooltipTextLeft1:SetText(GameTooltipTextLeft1:GetText().."\nSecondLine");GameTooltip:Show(); local line, text; local j = 1; for i=TipBuddy.gtt_lastline + 1, numlines, 1 do line = getglobal("GameTooltipTextLeft"..i); lineR = getglobal("GameTooltipTextRight"..i); if (not line or not line:GetText() or string.find(line:GetText(), PVP_ENABLED)) then return; else TipBuddy.gtt_xtra[j.."color"] = {}; TipBuddy.gtt_xtra[j.."color"].r, TipBuddy.gtt_xtra[j.."color"].g, TipBuddy.gtt_xtra[j.."color"].b = line:GetTextColor(); text = line:GetText(); end --GREEN_FONT_COLOR_CODE..PVP_RANK_CIVILIAN..FONT_COLOR_CODE_CLOSE TipBuddy.gtt_xtra[j] = text; if (lineR:GetText() and lineR:IsShown()) then TipBuddy.gtt_xtraR[j.."color"] = {}; TipBuddy.gtt_xtraR[j.."color"].r, TipBuddy.gtt_xtraR[j.."color"].g, TipBuddy.gtt_xtraR[j.."color"].b = lineR:GetTextColor(); TipBuddy.gtt_xtraR[j] = lineR:GetText(); else TipBuddy.gtt_xtraR[j] = ""; end TB_AddMessage(line:GetText()); j = j + 1; --/script ----TB_AddMessage(GameTooltipTextLeft2:GetText()); end else return; end end function TipBuddy_GTT_AddExtras() if (TipBuddy.gtt_xtra) then --TB_AddMessage(TB_WHT_TXT.."Adding Extras"); for i=1, table.getn(TipBuddy.gtt_xtra), 1 do local lCr, lCg, lCb, rCr, rCg, rCb; if (TipBuddy.gtt_xtra[i.."color"]) then lCr, lCg, lCb = TipBuddy.gtt_xtra[i.."color"].r, TipBuddy.gtt_xtra[i.."color"].g, TipBuddy.gtt_xtra[i.."color"].b; else lCr, lCg, lCb = HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b; end if (TipBuddy.gtt_xtraR and TipBuddy.gtt_xtraR[i.."color"]) then rCr, rCg, rCb = TipBuddy.gtt_xtraR[i.."color"].r, TipBuddy.gtt_xtraR[i.."color"].g, TipBuddy.gtt_xtraR[i.."color"].b; else rCr, rCg, rCb = HIGHLIGHT_FONT_COLOR.r, HIGHLIGHT_FONT_COLOR.g, HIGHLIGHT_FONT_COLOR.b; end if (TipBuddy.gtt_xtraR) then TipBuddyTooltip:AddDoubleLine(TipBuddy.gtt_xtra[i], TipBuddy.gtt_xtraR[i], lCr, lCg, lCb, rCr, rCg, rCb); else TipBuddyTooltip:AddLine(TipBuddy.gtt_xtra[i], lCr, lCg, lCb); end end end end -------------------------------------------------------------------------------------------------------------------------------------- -- VISIBILITY -------------------------------------------------------------------------------------------------------------------------------------- -- Target Types are: -- pc_friend -- pc_party -- pc_enemy -- npc_friend -- npc_neutral -- npc_enemy -- pet_friend -- pet_enemy function TipBuddy_SetFrame_Visibility( type, unit, refresh ) if (not type or not unit) then return; end local targettype = TipBuddy_SavedVars[type]; if (not targettype) then ----TB_AddMessage("BUG! NO SAVED VARS FOR: "..type); TipBuddy_SetFrame_BackgroundColor( "corpse", unit ); return; end local targettype = TipBuddy_SavedVars[type]; ----TB_AddMessage("1: "..GameTooltipTextLeft2:GetText()); if (TipBuddy_SavedVars["general"].blizdefault == 1) then elseif ( targettype.off == 1 ) then TipBuddy_ForceHide(TipBuddy_Main_Frame); if (not TipBuddy_Main_Frame:IsVisible()) then TipBuddy_Main_Frame:Show(); TipBuddy_Main_Frame:SetAlpha(1); end TipBuddy.compactvis = 1; else TipBuddy_ForceHide( TipBuddy_Main_Frame ); end TipBuddy_SetFrame_TargetType( type, unit, refresh ); TipBuddy.vis = 1; TipBuddy.gotextras = 1; end function TipBuddy_TargetInfo_CheckName( type, unit ) TipBuddy.gtt_namecolor = ""; local targettype = TipBuddy_SavedVars[type]; if (targettype.off == 2) then return; end if (not type or not unit) then TipBuddy.gtt_namecolor = tbcolor_unknown; if (UnitName(unit)) then TipBuddy.gtt_name = UnitName(unit); else TipBuddy.gtt_name = TB_notspecified; end return; end if (UnitHealth(unit) <= 0) then TipBuddy.gtt_namecolor = tbcolor_corpse; elseif (TipBuddy.uReaction) then TipBuddy.gtt_namecolor = getglobal("tbcolor_nam_"..TipBuddy.uReaction); elseif ( UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit) ) then TipBuddy.gtt_namecolor = (tbcolor_nam_tappedother.." >"); elseif (UnitIsTappedByPlayer(unit)) then TipBuddy.gtt_namecolor = (tbcolor_nam_tappedplayer); else TipBuddy.gtt_namecolor = tbcolor_unknown; end if (TipBuddy.refresh == 1 and TipBuddy.gtt_name ~= nil) then return; end if (TipBuddy.uName) then TipBuddy.gtt_name = TipBuddy.uName; else TipBuddy.gtt_name = TB_notspecified; end if (UnitPlayerControlled(unit) and targettype.rnm == 1) then if (unit == "player" or unit == "mouseover" or unit == "target" ) then TipBuddy.gtt_name = UnitPVPName(unit); elseif (getglobal("GameTooltipTextLeft1"):GetText()) then TipBuddy.gtt_name = getglobal("GameTooltipTextLeft1"):GetText(); end end end -------------------------------------------------------------------------------------------------------------------------------------- -- GET TARGET's TARGET -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_TargetInfo_TargetsTarget( type, unit ) if (not TipBuddy.gtt_target) then TipBuddy.gtt_target = ""; end if (TipBuddy_SavedVars[type].trg == 0 and TipBuddy_SavedVars[type].off ~= 2) then ------TB_AddMessage("TT for "..type.." is turned off"); return; end local tunit = unit.."target"; local target = UnitName(tunit); if (target) then if (target == UNKNOWNOBJECT) then return; end local treaction = TipBuddy_GetUnitReaction( tunit ); local tcolor = ""; TipBuddy.tt = 1; if (target == UnitName("player")) then tcolor = TB_WHT_TXT; if (TipBuddy_SavedVars[type].trg_2l and TipBuddy_SavedVars[type].trg_2l == 1) then TipBuddy.gtt_target = "\n"..tcolor.." [YOU]"; else TipBuddy.gtt_target = tcolor.." : [YOU]"; end ------TB_AddMessage("target = "..tcolor.." [YOU]"); return; elseif (target == UnitInParty(tunit)) then if (TipBuddy_SavedVars[type].trg_pa == 0) then return; else tcolor = TB_PNK_TXT; end elseif (UnitHealth(tunit) <= 0) then tcolor = TB_DGY_TXT; --elseif (treaction) then elseif ( UnitPlayerControlled(tunit) ) then --[[ TB_NML_TXT = "|cffffd200" TB_WHT_TXT = "|cffffffff" TB_GRY_TXT = "|cffC0C0C0" TB_DGY_TXT = "|cff585858" TB_RED_TXT = "|cffff2020" TB_GRN_TXT = "|cff20ff20" TB_YLW_TXT = "|cffffff00" TB_BLE_TXT = "|cff3366ff" TB_PNK_TXT = "|cffff00ff" TB_DBL_TXT = "|cff3399ff" TB_DGN_TXT = "|cff339900" TB_DRD_TXT = "|cffcc0000" ]] if ( UnitCanAttack(tunit, "player") or UnitCanAttack("player", tunit) ) then if (TipBuddy_SavedVars[type].trg_en == 0) then return; else tcolor = TB_RED_TXT; end --return "hostile"; else -- All other players are green if (TipBuddy_SavedVars[type].trg_pl == 0) then return; else tcolor = TB_GRN_TXT; --return "friendly"; end end elseif ( UnitIsEnemy(tunit, "player") ) then if (TipBuddy_SavedVars[type].trg_en == 0) then return; else tcolor = TB_RED_TXT; --return "pvp"; end else if (TipBuddy_SavedVars[type].trg_np == 0) then return; else tcolor = TB_BLE_TXT; end end --TipBuddy.gtt_target = tcolor.." ["..TB_WHT_TXT..UnitName(unit.."target")..tcolor.."]"; if (TipBuddy_SavedVars[type].trg_2l and TipBuddy_SavedVars[type].trg_2l == 1) then TipBuddy.gtt_target = "\n"..TB_WHT_TXT.." "..tcolor.."["..UnitName(unit.."target").."]"; else TipBuddy.gtt_target = TB_WHT_TXT.." : "..tcolor.."["..UnitName(unit.."target").."]"; ------TB_AddMessage("target = "..tcolor.."["..UnitName(unit.."target").."]"); end else TipBuddy.tt = 0; end end function TipBuddy_Adv_TargetsTarget( unit ) local tunit = unit.."target"; local target = UnitName(tunit); if (target) then local treaction = TipBuddy_GetUnitReaction( tunit ); local tcolor = ""; if (target == UnitName("player")) then return "YOU", TB_WHT_TXT; elseif (target == UnitInParty(tunit)) then return target, TB_PNK_TXT; elseif (UnitHealth(tunit) <= 0) then return target, TB_DGY_TXT; elseif ( UnitPlayerControlled(tunit) ) then if ( UnitCanAttack(tunit, "player") or UnitCanAttack("player", tunit) ) then --return "hostile"; return target, TB_RED_TXT; else --return "friendly"; return target, TB_GRN_TXT; end elseif ( UnitIsEnemy(tunit, "player") ) then --return "pvp"; return target, TB_RED_TXT; else return target, TB_BLE_TXT; end else return "", ""; end end -------------------------------------------------------------------------------------------------------------------------------------- -- GET GUILD -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_TargetInfo_GetGuild( type, unit ) if (not unit or not type) then return; end if (TipBuddy.refresh == 1) then ------TB_AddMessage("REFRESH == 1"); if (TipBuddy.gtt_guild == "" or TipBuddy.gtt_guild == nil) then return; end end --/script GameTooltip_SetDefaultAnchor(GameTooltip, UIParent);GameTooltip:SetUnit("partypet1"); ----TB_AddMessage(GameTooltipTextLeft2:GetText()); local targettype = TipBuddy_SavedVars[type]; TipBuddy.gtt_guildcolor = ""; if (targettype.off ~= 2) then if (TipBuddy.uGuild and GetGuildInfo("player") and TipBuddy.uGuild == GetGuildInfo("player")) then TipBuddy.gtt_guildcolor = tbcolor_gld_mate; elseif ( UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit) ) then TipBuddy.gtt_guildcolor = (tbcolor_gld_tappedother); elseif (UnitIsTappedByPlayer(unit)) then TipBuddy.gtt_guildcolor = (tbcolor_gld_tappedplayer); elseif (TipBuddy.uReaction) then TipBuddy.gtt_guildcolor = getglobal("tbcolor_gld_"..TipBuddy.uReaction); else TipBuddy.gtt_guildcolor = tbcolor_unknown; end if (TipBuddy.refresh == 1) then return; end end if (unit == "party1" or unit == "partypet1" or unit == "party2" or unit == "partypet2" or unit == "party3" or unit == "partypet3" or unit == "party4" or unit == "partypet4" or unit == "party5" or unit == "partypet5" ) then if ( TipBuddy.uGuild ) then TipBuddy.gtt_guild = TipBuddy.uGuild; ------TB_AddMessage(GetGuildInfo(unit)); end if (not TipBuddy.gtt_guild) then TipBuddy.gtt_guild = ""; end return; elseif (UnitPlayerControlled(unit) or (GameTooltipTextLeft2:GetText() and string.find(GameTooltipTextLeft2:GetText(), PLAYER ) ) ) then if ( type == "pet_friend" or type == "pet_enemy" ) then TipBuddy.gtt_guild = (GameTooltipTextLeft2:GetText()); ------TB_AddMessage("player pet guild: "..TipBuddy.gtt_guild); return; elseif ( TipBuddy.uGuild ) then TipBuddy.gtt_guild = TipBuddy.uGuild; ------TB_AddMessage("player guild: "..TipBuddy.gtt_guild); end return; else ------TB_AddMessage("GUILD: npc, testing..."); if (not GameTooltipTextLeft2:GetText()) then ------TB_AddMessage("GUILD: npc, line 2 is blank"); return; end if ( type == "pet_friend" or type == "pet_enemy" ) then TipBuddy.gtt_guild = (GameTooltipTextLeft2:GetText()); ------TB_AddMessage("pet guild: "..TipBuddy.gtt_guild); return; end if (string.find(GameTooltipTextLeft2:GetText(), TB_level ) ) then ------TB_AddMessage("GUILD: npc, line 2 is level"); return; else TipBuddy.gtt_guild = (GameTooltipTextLeft2:GetText()); ----TB_AddMessage("title guild: "..TipBuddy.gtt_guild); end end end -------------------------------------------------------------------------------------------------------------------------------------- -- GET CLASS/TYPE -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_TargetInfo_GetClass( type, unit ) --TipBuddy.uClass local targettype = TipBuddy_SavedVars[type]; TipBuddy.gtt_classlvlcolor = ""; TipBuddy.gtt_classcorpse = ""; TipBuddy.gtt_classcolor = ""; TipBuddy.gtt_class = ""; TipBuddy.gtt_race = ""; if (targettype.off == 2) then return; elseif (TipBuddy_SavedVars["general"].classcolor == 1) then TipBuddy.gtt_classlvlcolor = ""; elseif ( UnitCanAttack(unit, "player") or UnitCanAttack("player", unit) or UnitIsPVP(unit) ) then -- Hostile Units, use con color system TipBuddy.gtt_classlvlcolor = TipBuddy_GetDifficultyColor(TipBuddy.uLevel); else -- Friendly (non-PvP flagged) Units, we don't want to use the con color cause we don't care TipBuddy.gtt_classlvlcolor = tbcolor_lvl_same_faction; end if (UnitHealth(unit) <= 0) then TipBuddy.gtt_classlvlcolor = tbcolor_corpse; TipBuddy.gtt_classcorpse = " "..CORPSE.."|r"; end if ( UnitPlayerControlled(unit) or TipBuddy.uRace) then if (targettype.rac == 1 and TipBuddy.uRace ~= nil) then TipBuddy.gtt_race = (tbcolor_race..TipBuddy.uRace.." |r"); else TipBuddy.gtt_race = "|r"; end --coloring class text if (UnitClass(unit) == TB_mage) then TipBuddy.gtt_classcolor = tbcolor_cls_mage; elseif (UnitClass(unit) == TB_warlock) then TipBuddy.gtt_classcolor = tbcolor_cls_warlock; elseif (UnitClass(unit) == TB_priest) then TipBuddy.gtt_classcolor = tbcolor_cls_priest; elseif (UnitClass(unit) == TB_druid) then TipBuddy.gtt_classcolor = tbcolor_cls_druid; elseif (UnitClass(unit) == TB_shaman) then TipBuddy.gtt_classcolor = tbcolor_cls_shaman; elseif (UnitClass(unit) == TB_paladin) then TipBuddy.gtt_classcolor = tbcolor_cls_paladin; elseif (UnitClass(unit) == TB_rogue) then TipBuddy.gtt_classcolor = tbcolor_cls_rogue; elseif (UnitClass(unit) == TB_hunter) then TipBuddy.gtt_classcolor = tbcolor_cls_hunter; elseif (UnitClass(unit) == TB_warrior) then TipBuddy.gtt_classcolor = tbcolor_cls_warrior; else TipBuddy.gtt_classcolor = tbcolor_cls_other; end else TipBuddy.gtt_classcolor = tbcolor_cls_other; end --/script ----TB_AddMessage(UnitCreatureFamily("mouseover")); if ( type == "pet_friend" or type == "pet_enemy" ) then TipBuddy.gtt_race = ""; if (UnitCreatureFamily(unit)) then TipBuddy.gtt_class = UnitCreatureFamily(unit).."|r"; return; else TipBuddy.gtt_class = "|r"; end return; end ------TB_AddMessage("Get Class - "..unit); -- /script ----TB_AddMessage(UnitCreatureType(unit)); if ( UnitPlayerControlled(unit) or TipBuddy.uRace) then TipBuddy.gtt_class = TipBuddy.uClass.."|r"; elseif ( UnitCreatureFamily(unit) ) then TipBuddy.gtt_class = UnitCreatureFamily(unit).."|r"; else if ( UnitCreatureType(unit) == TB_notspecified) then TipBuddy.gtt_class = TB_creature.."|r"; else if (not UnitCreatureType(unit)) then TipBuddy.gtt_class = "|r"; else TipBuddy.gtt_class = UnitCreatureType(unit).."|r"; end end end end -------------------------------------------------------------------------------------------------------------------------------------- -- GET LEVEL -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_TargetInfo_GetLevel( type, unit ) local targettype = TipBuddy_SavedVars[type]; if (not unit or targettype.off == 2) then return; end local targetLevel = TipBuddy.uLevel; if ( targetLevel == -1 ) then targetLevel = 100; end -- Color level number local color; if (UnitHealth(unit) <= 0) then color = tbcolor_corpse; ------TB_AddMessage("level color = corpse"); elseif ( UnitCanAttack(unit, "player") or UnitCanAttack("player", unit) or UnitIsPVP(unit) ) then -- Hostile unit of friendly unit flagged for PvP color = TipBuddy_GetDifficultyColor(targetLevel); ------TB_AddMessage("level color = hostile or pvp"); else color = tbcolor_lvl_same_faction; ------TB_AddMessage("level color = same fac"); end if ( targetLevel == 100 ) then targetLevel = "??"; end TipBuddy.classification = UnitClassification(unit); if ( not targetLevel or targetLevel == 0 ) then TipBuddy.gtt_level = ("|r"); TipBuddy_TargetLevel_Text:SetText(TipBuddy.gtt_level); elseif ( TipBuddy.classification == "worldboss" ) then TipBuddy.gtt_level = (color..targetLevel..tbcolor_elite_worldboss.." ("..TB_worldboss..")|r"); TipBuddy_TargetLevel_Text:SetText(TipBuddy.gtt_level); elseif ( TipBuddy.classification == "rareelite" ) then TipBuddy.gtt_level = (color.."+"..targetLevel..tbcolor_elite_rare.." ("..TB_rare..")|r"); TipBuddy_TargetLevel_Text:SetText(TipBuddy.gtt_level); elseif ( TipBuddy.classification == "elite" ) then TipBuddy.gtt_level = (color.."+"..targetLevel.."|r"); TipBuddy_TargetLevel_Text:SetText(TipBuddy.gtt_level); elseif ( TipBuddy.classification == "rare" ) then TipBuddy.gtt_level = (color..targetLevel..tbcolor_elite_rare.." ("..TB_rare..")|r"); TipBuddy_TargetLevel_Text:SetText(TipBuddy.gtt_level); else TipBuddy.gtt_level = (color..targetLevel.."|r"); TipBuddy_TargetLevel_Text:SetText(TipBuddy.gtt_level); end end -------------------------------------------------------------------------------------------------------------------------------------- -- GET/SHOW CITY FACTION -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_TargetInfo_ShowCityFaction( type, unit ) if (UnitPlayerControlled(unit) or unit == "player" or unit == "party1" or unit == "partypet1" or unit == "party2" or unit == "partypet2" or unit == "party3" or unit == "partypet3" or unit == "party4" or unit == "partypet4" or unit == "party5" or unit == "partypet5" ) then ------TB_AddMessage("CityFac: found a player"); return; end local line; for i=1, (GameTooltip:NumLines()), 1 do local tipline = getglobal("GameTooltipTextLeft"..i); if (not tipline or not tipline:GetText()) then ------TB_AddMessage("tipline: "..i.." is empty"); return; end if ( string.find(tipline:GetText(), TB_level..".+") ) then line = getglobal("GameTooltipTextLeft"..(i + 1)); if (line:GetText() == "\n" or line:GetText() == nil) then ------TB_AddMessage("Line after Level is empty"); break; end if (string.find(line:GetText(), PVP_ENABLED) or line:GetText() == nil) then ------TB_AddMessage("CityFac: found PvP or something"); break; else local first = string.sub(line:GetText(), 0 , 1); if (first and TB_Factions[first]) then ------TB_AddMessage("testing cityfac: ("..line:GetText()..") Line: "..(i+1)); for j=1, table.getn(TB_Factions[first]), 1 do if (line:GetText() == TB_Factions[first][j]) then ------TB_AddMessage("found cityfac: ("..line:GetText()..") Line: "..(i+1)); TipBuddy.gtt_lastline = i+1; TipBuddy.gtt_cityfac = tbcolor_cityfac..line:GetText(); break; end end end end end end end function TipBuddy_ConfirmLastLine(unit) local line; if (not unit) then unit = "mouseover"; TipBuddy.targetUnit = unit; end if (not TipBuddy.gtt_numlines) then if (GameTooltip:IsVisible()) then TipBuddy.gtt_numlines = GameTooltip:NumLines(); else TipBuddy.gtt_numlines = 2; end end for i=TipBuddy.gtt_numlines, 1, -1 do line = getglobal("GameTooltipTextLeft"..i); if (not line or not line:GetText()) then return; end ----TB_AddMessage("LASTLINE: i = "..i..", text: "..line:GetText()); if (string.find(line:GetText(), PVP_ENABLED) or string.find(line:GetText(), TB_level ) or (TipBuddy.gtt_cityfac ~= "" and string.find(line:GetText(), TipBuddy.gtt_cityfac ) ) ) then if (i > TipBuddy.gtt_lastline) then TipBuddy.gtt_lastline = i; ------TB_AddMessage("i>LL: "..TipBuddy.gtt_lastline); break; else ------TB_AddMessage("i!>LL: "..TipBuddy.gtt_lastline); break; end end end end -------------------------------------------------------------------------------------------------------------------------------------- -- HEALTH / MANA -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_UnitFrame_UpdateHealth( unit ) UnitFrameHealthBar_Update(TipBuddy_TargetFrameHealthBar, unit); end function TipBuddy_UnitFrame_UpdateMana( unit ) local manatype = UnitPowerType(unit); local info = ManaBarColor[manatype]; info = ManaBarColor[manatype]; TipBuddy_TargetFrameManaBar:SetStatusBarColor(info.r, info.g, info.b); UnitFrameManaBar_Update(TipBuddy_TargetFrameManaBar, unit); end -------------------------------------------------------------------------------------------------------------------------------------- -- HEALTH TEXT -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_UpdateHealthText( frame, type, unit ) if (not type) then if (frame) then frame:Hide(); end return; elseif (not frame) then return elseif (not TipBuddy_SavedVars[type] or not TipBuddy_SavedVars[type].txt_hth or TipBuddy_SavedVars[type].txt_hth == 0) then TipBuddy_SavedVars[type].txt_hth = 0; frame:Hide(); return; end --/script DEFAULT_CHAT_FRAME:AddMessage(UnitInParty("target")); --TipBuddy_HealthTextGTT, TipBuddy_UpdateHealthTextGTT( TipBuddy_HealthTextGTT, unit ) --TipBuddy_HealthText local health = UnitHealth(unit); --local percent = tonumber(format("%.0f", ( (health / UnitHealthMax(unit)) * 100 ) )); local text = getglobal(frame:GetName().."Text"); TB_AddMessage("health of: "..unit); if ( unit == "player" or UnitInParty(unit) or UnitInRaid(unit) ) then text:SetText( health.." / "..UnitHealthMax(unit) ); elseif ( type == "pet_friend" and UnitName("mouseover") == UnitName("pet") ) then text:SetText( health.." / "..UnitHealthMax(unit) ); --/script DEFAULT_CHAT_FRAME:AddMessage(UnitName("partypet1")); else if (MobHealthDB) then local ppp = MobHealth_PPP(UnitName(unit)..":"..UnitLevel(unit)); local curHP = math.floor(health * ppp + 0.5); local maxHP = math.floor(100 * ppp + 0.5); if (curHP and maxHP and maxHP ~= 0) then text:SetText( curHP.." / "..maxHP ); ------TB_AddMessage(curHP.." / "..maxHP); else text:SetText( health.."%" ); end else text:SetText( health.."%" ); end end frame:Show(); end function TipBuddy_UpdateManaText( frame, type, unit ) if (not frame or not unit or TipBuddy_SavedVars[type].txt_mna == 0) then return; end frame:Hide(); --local percent = (UnitMana(unit) / UnitManaMax(unit)) * 100; --local mana = UnitMana(unit); local text = getglobal(frame:GetName().."Text"); if (UnitMana(unit) and UnitMana(unit) > 0) then frame:Show(); text:SetText( UnitMana(unit).." / "..UnitManaMax(unit) ); end end -------------------------------------------------------------------------------------------------------------------------------------- -- GET/SHOW BUFFS -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_TargetBuffs_Initialize() local frame, bframe; for i=1, 8 do frame = "TipBuddy_BuffFrame"; bframe = getglobal(frame.."B"..i); bframe:Hide(); bframe = getglobal(frame.."D"..i); bframe:Hide(); frame = "TipBuddy_BuffFrameGTT"; bframe = getglobal(frame.."B"..i); bframe:Hide(); bframe = getglobal(frame.."D"..i); bframe:Hide(); end end function TipBuddy_TargetBuffs_Update( type, unit ) if (not unit or not type) then TipBuddy_TargetBuffs_Initialize(type, unit); return; end local debuff, buff; local frame, bframe; local targettype = TipBuddy_SavedVars[type]; if ( TipBuddy_SavedVars["general"].blizdefault == 1 or targettype.off ~= 1 ) then frame = "TipBuddy_BuffFrameGTT"; else frame = "TipBuddy_BuffFrame"; end for i=1, 8 do buff = UnitBuff(unit, i); bframe = getglobal(frame.."B"..i); if ( buff ) then --/script ----TB_AddMessage(UnitCreatureFamily("mouseover")); ----TB_AddMessage(buff); if ( targettype.bff == 1 ) then getglobal(frame.."B"..i.."Icon"):SetTexture(buff); bframe:Show(); bframe.id = i; --TB_AddMessage(buff); else bframe:Hide(); end else bframe:Hide(); end end for i=1, 8 do debuff = UnitDebuff(unit, i); bframe = getglobal(frame.."D"..i); if ( debuff ) then if ( targettype.bff == 1 ) then getglobal(frame.."D"..i.."Icon"):SetTexture(debuff); bframe:Show(); else bframe:Hide(); end else bframe:Hide(); end bframe.id = i; end end function TipBuddy_ShowRank( type, unit ) ------TB_AddMessage("TipBuddy_ShowRank"); TipBuddy_RankFrameGTT:Hide(); TipBuddy_RankFrame:Hide(); if (not type or not unit or ( TipBuddy_SavedVars[type].rnk == 0 )) then ------TB_AddMessage("no type or unit"); return; end local rankName, rankNumber = GetPVPRankInfo(UnitPVPRank(unit)); local rankFrame, srankFrame; if ( TipBuddy_SavedVars[type].off == 1 ) then rankFrame = getglobal("TipBuddy_RankFrame"); srankFrame = "TipBuddy_RankFrame"; else rankFrame = getglobal("TipBuddy_RankFrameGTT"); srankFrame = "TipBuddy_RankFrameGTT"; end local rankFrameIcon = getglobal(srankFrame.."Icon"); -- /script DEFAULT_CHAT_FRAME:AddMessage(UnitPVPRank("target")); if (not UnitPlayerControlled(unit) or rankNumber == 0) then rankFrame:Hide(); return; end -- Set icon if ( rankNumber > 0 ) then rankFrameIcon:SetTexture(format("%s%02d","Interface\\PvPRankBadges\\PvPRank",rankNumber)); rankFrame:Show(); else rankFrame:Hide(); end end -------------------------------------------------------------------------------------------------------------------------------------- -- GET/SHOW FACTION -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_TargetInfo_ShowFaction( type, unit ) TipBuddy_FactionFrameGTT:Hide(); TipBuddy_FactionFrame:Hide(); if (not unit) then return; end local factionGroup = UnitFactionGroup(unit); if (not factionGroup) then return; end local frame, sframe; if ( TipBuddy_SavedVars[TipBuddy.targetType].off == 1 ) then frame = getglobal("TipBuddy_FactionFrame"); sframe = "TipBuddy_FactionFrame"; else frame = getglobal("TipBuddy_FactionFrameGTT"); sframe = "TipBuddy_FactionFrameGTT"; end local frameIcon = getglobal(sframe.."Icon"); local frameText = getglobal(sframe.."Text"); --how in the world does this happen? if ( UnitIsPVPFreeForAll(unit) ) then frameIcon:SetTexture("Interface\\TargetingFrame\\UI-PVP-FFA"); frame:Show(); if (TipBuddy_SavedVars[TipBuddy.targetType].txt_pvp == 1) then frameIcon:Hide(); frameText:Show(); frameText:SetText("FFA"); else frameIcon:Show(); frameText:Hide(); end elseif ( UnitIsPVP(unit) ) then ------TB_AddMessage("txt_pvp = "..TipBuddy_SavedVars[TipBuddy.targetType].txt_pvp); frameIcon:SetTexture("Interface\\TargetingFrame\\UI-PVP-"..factionGroup); frame:Show(); if (TipBuddy_SavedVars[TipBuddy.targetType].txt_pvp == 1) then frameIcon:Hide(); frameText:Show(); frameText:SetText("PvP"); else frameIcon:Show(); frameText:Hide(); end else frame:Hide(); end end function TipBuddy_SetFrame_TargetType( type, unit, refresh ) if (TipBuddy_SavedVars.debug == 1 and TipBuddy.uName) then ------TB_AddMessage(TipBuddy.uName.." == TT: "..GameTooltipTextLeft1:GetText()); end local targettype = TipBuddy_SavedVars[type]; if (TipBuddy_SavedVars["general"].blizdefault ~= 1) then if (refresh) then ------TB_AddMessage("!! lastline: "..TipBuddy.gtt_lastline..", numlines (stored): "..TipBuddy.gtt_numlines..", numlines (real): "..GameTooltip:NumLines()); TipBuddy.refresh = 1; ----TB_AddMessage("!! REFRESH"); else ----TB_AddMessage("!! CLEARING ALL DATA"); TipBuddy.refresh = nil; TipBuddy.gtt_numlines = GameTooltip:NumLines(); TipBuddy.gtt_lastline = 1; TipBuddy.gtt_xtra = nil; TipBuddy.gtt_name = ""; TipBuddy.gtt_target = ""; TipBuddy.gtt_guild = ""; TipBuddy.gtt_level = ""; TipBuddy.gtt_race = ""; TipBuddy.gtt_class = ""; TipBuddy.gtt_cityfac = ""; end if (not TipBuddy.gtt_numlines) then TipBuddy.gtt_numlines = 0; end TipBuddy_TargetInfo_CheckName( type, unit ); TipBuddy_TargetInfo_TargetsTarget( type, unit ); TipBuddy_TargetInfo_GetGuild( type, unit ); TipBuddy_TargetInfo_GetClass( type, unit ); TipBuddy_TargetInfo_GetLevel( type, unit ); if (TipBuddy.refresh ~= 1) then TipBuddy_TargetInfo_ShowCityFaction( type, unit ); TipBuddy_ConfirmLastLine(unit); if ( targettype.off ~= 1 ) then TipBuddy_GTT_GetExtraLines(TipBuddy.gtt_numlines); end end end if ( targettype.off == 1 ) then if (TipBuddy_SavedVars["general"].blizdefault == 1) then TipBuddy_ClearFade(TipBuddyTooltip, 1); TipBuddyTooltip:SetUnit(unit); TipBuddy_GTT_AddExtras(); TipBuddyTooltip:Show(); else TipBuddy_TargetName_Text:SetText(TipBuddy.gtt_namecolor..TipBuddy.gtt_name..TipBuddy.gtt_target); TipBuddy_TargetName_Text:Show(); if ( targettype.gld == 1 ) then if (TipBuddy.gtt_guildcolor and TipBuddy.gtt_guild and TipBuddy.gtt_guild ~= "" ) then ----TB_AddMessage(TB_RED_TXT.."Guild text = "..TB_YLW_TXT..TipBuddy.gtt_guild); TipBuddy_TargetGuild_Text:SetText(TipBuddy.gtt_guildcolor.."<"..TipBuddy.gtt_guild..TipBuddy.gtt_guildcolor..">"); TipBuddy_TargetGuild_Text:Show(); else TipBuddy_TargetGuild_Text:Hide(); end else TipBuddy_TargetGuild_Text:Hide(); end if ( targettype.hth == 1 ) then TipBuddy_TargetFrameHealthBar:Show(); ------TB_AddMessage(unit); if (UnitMana( unit ) > 0) then TipBuddy_TargetFrameManaBar:Show(); else TipBuddy_TargetFrameManaBar:Hide(); end TipBuddy_UnitFrame_UpdateHealth( unit ); TipBuddy_UnitFrame_UpdateMana( unit ); TipBuddy_UpdateHealthText( TipBuddy_HealthText, type, unit ); TipBuddy_UpdateManaText( TipBuddy_ManaText, type, unit ); else TipBuddy_TargetFrameHealthBar:Hide(); TipBuddy_TargetFrameManaBar:Hide(); end if ( targettype.cfc == 1 and TipBuddy.gtt_cityfac ~= "" ) then TipBuddy_TargetCityFac_Text:SetText(tbcolor_cityfac..TipBuddy.gtt_cityfac); TipBuddy_TargetCityFac_Text:Show(); else TipBuddy_TargetCityFac_Text:Hide(); end if ( targettype.cls == 1 ) then if (TipBuddy.gtt_class == "" and TipBuddy.gtt_level == "") then TipBuddy_TargetClass_Text:Hide(); TipBuddy_TargetLevel_Text:Hide(); elseif (TipBuddy.gtt_class and TipBuddy.gtt_class ~= "" ) then TipBuddy_TargetClass_Text:SetText(TipBuddy.gtt_race..TipBuddy.gtt_classcolor..TipBuddy.gtt_classlvlcolor..TipBuddy.gtt_class..TipBuddy.gtt_classcorpse); TipBuddy_TargetClass_Text:Show(); else TipBuddy_TargetClass_Text:Hide(); TipBuddy_TargetLevel_Text:Hide(); end TipBuddy_TargetLevel_Text:Show(); else TipBuddy_TargetClass_Text:Hide(); TipBuddy_TargetLevel_Text:Hide(); end TipBuddy_TargetInfo_FindExtras( unit ); TipBuddy_FrameHeights_Initialize(type); TipBuddy_SetFrame_Width(); end else --TB_AddMessage(getglobal("TipBuddyTooltipTextLeft1"):GetText()); TipBuddy_ClearFade(TipBuddyTooltip, 1); TipBuddyTooltip:SetUnit(unit); ----TB_AddMessage("setunit show: ("..TipBuddyTooltip:GetTop()..")"); --/script TipBuddy_SavedVars.npc_friend.off = 2 if (TipBuddy_SavedVars["general"].blizdefault == 1) then elseif (targettype.off == 2) then GameTooltip.variables1 = {}; GameTooltip.variables2 = {}; if (not targettype.ebx1) then targettype.ebx1 = ""; end if (not targettype.ebx2) then targettype.ebx2 = ""; end local ebtext1 = targettype.ebx1; local ebtext2 = targettype.ebx2; for variable, value in TB_VARIABLE_FUNCTIONS do if (string.find(ebtext1, variable)) then GameTooltip.variables1[variable] = true; end if (string.find(ebtext2, variable)) then GameTooltip.variables2[variable] = true; end end local maxchar = 256; TipBuddyTooltipTextLeft1:SetTextColor(1, 1, 1); if ((not ebtext1) or ebtext1 == "") then TipBuddyTooltip:SetText(" "); --TipBuddyTooltipTextLeft1:Show(); else for var in GameTooltip.variables1 do ebtext1 = TB_VARIABLE_FUNCTIONS[var].func(ebtext1, unit); end if (maxchar and string.len(ebtext1) > maxchar) then ebtext1 = string.sub(ebtext1, 1, maxchar); end TipBuddyTooltip:SetText(ebtext1); --TipBuddyTooltipTextLeft1:Show(); end maxchar = 2048; if ((not ebtext2) or ebtext2 == "") then --TipBuddyTooltipTextLeft2:SetText(" "); --TipBuddyTooltipTextLeft1:Show(); else for var in GameTooltip.variables2 do ebtext2 = TB_VARIABLE_FUNCTIONS[var].func(ebtext2, unit); end if (maxchar and string.len(ebtext2) > maxchar) then ebtext2 = string.sub(ebtext2, 1, maxchar); end --strip out the empty lines ebtext2 = string.gsub(ebtext2, "|r\n|r\n", "|r\n"); ebtext2 = string.gsub(ebtext2, "^|r\n", ""); TipBuddyTooltip:AddLine(ebtext2); TipBuddyTooltipTextLeft2:SetTextColor(1, 1, 1); end else TipBuddyTooltip:SetText(TipBuddy.gtt_namecolor..TipBuddy.gtt_name..TipBuddy.gtt_target); if ( targettype.gld == 1 and TipBuddy.gtt_guild and TipBuddy.gtt_guild ~= "" ) then if (TipBuddy.gtt_guild ~= nil) then TipBuddyTooltip:AddLine(TipBuddy.gtt_guildcolor.."<"..TipBuddy.gtt_guild..TipBuddy.gtt_guildcolor..">".."|r"); end end if ( targettype.cls == 1 ) then if (TipBuddy.gtt_class == nil) then TipBuddy.gtt_class = ""; end if (TipBuddy.gtt_class == "" and TipBuddy.gtt_level == "") then else TipBuddyTooltip:AddLine(TipBuddy.gtt_level.."|r "..TipBuddy.gtt_race..TipBuddy.gtt_classcolor..TipBuddy.gtt_classlvlcolor..TipBuddy.gtt_class..TipBuddy.gtt_classcorpse.."|r"); end end if ( targettype.cfc == 1 and TipBuddy.gtt_cityfac ~= "" ) then TipBuddyTooltip:AddLine(TipBuddy.gtt_cityfac.."|r"); end end TipBuddy_GTT_AddExtras(); if ( targettype.hth == 1 ) then TipBuddyTooltipStatusBar:Show(); else TipBuddyTooltipStatusBar:Hide(); end TipBuddyTooltip:Show(); TipBuddy_UpdateHealthText( TipBuddy_HealthTextGTT, type, unit ); end if ( targettype.fac == 1 ) then TipBuddy_TargetInfo_ShowFaction( type, unit ); else TipBuddy_FactionFrameGTT:Hide(); TipBuddy_FactionFrame:Hide(); end end -------------------------------------------------------------------------------------------------------------------------------------- -- SET BACKGROUND COLOR -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_SetFrame_BackgroundColor( type, unit ) --TB_AddMessage(TB_WHT_TXT.."Background Color"); if (not unit or not type) then TipBuddy_SetFrame_NonUnit_BackgroundColor( type ); ------TB_AddMessage("NO UNIT OR TYPE - SETTING BG"); return; end local targettype = TipBuddy_SavedVars[type]; local r, br, g, bg, b, bb, a, ba; if (not targettype.c_bdp) then targettype.c_bdp = 0; end if (not targettype.c_bdb) then targettype.c_bdb = 0; end ----TB_AddMessage("bdp = "..targettype.c_bdp); if (GetGuildInfo("player") and GetGuildInfo(unit) == GetGuildInfo("player")) then type = "guild"; targettype = TipBuddy_SavedVars[type]; r, g, b, a = targettype.bgcolor.r, targettype.bgcolor.g, targettype.bgcolor.b, targettype.bgcolor.a; ----TB_AddMessage("setting BG color to Guild"); elseif (targettype.c_bdp and targettype.c_bdp == 1) then --[[ tbcolor_lvl_impossible = TipBuddy_RGBToHexColor(colors.lvl_imp.r, colors.lvl_imp.g, colors.lvl_imp.b); tbcolor_lvl_verydifficult = TipBuddy_RGBToHexColor(colors.lvl_vdf.r, colors.lvl_vdf.g, colors.lvl_vdf.b); tbcolor_lvl_difficult = TipBuddy_RGBToHexColor(colors.lvl_dif.r, colors.lvl_dif.g, colors.lvl_dif.b); tbcolor_lvl_standard = TipBuddy_RGBToHexColor(colors.lvl_stn.r, colors.lvl_stn.g, colors.lvl_stn.b); tbcolor_lvl_trivial = TipBuddy_RGBToHexColor(colors.lvl_trv.r, colors.lvl_trv.g, colors.lvl_trv.b); ]] local levelDiff = UnitLevel(unit) - UnitLevel("player"); local colors = TipBuddy_SavedVars["textcolors"]; if ( levelDiff >= 5 ) then r, g, b = colors.lvl_imp.r, colors.lvl_imp.g, colors.lvl_imp.b; elseif ( levelDiff >= 3 ) then r, g, b = colors.lvl_vdf.r, colors.lvl_vdf.g, colors.lvl_vdf.b; elseif ( levelDiff >= -2 ) then r, g, b = colors.lvl_dif.r, colors.lvl_dif.g, colors.lvl_dif.b; elseif ( -levelDiff <= GetQuestGreenRange() ) then r, g, b = colors.lvl_stn.r, colors.lvl_stn.g, colors.lvl_stn.b; else r, g, b = colors.lvl_trv.r, colors.lvl_trv.g, colors.lvl_trv.b; end r, g, b = TB_NoNegative(r - 0.35), TB_NoNegative(g - 0.35), TB_NoNegative(b - 0.35); a = targettype.bgcolor.a; elseif (targettype.c_bdp and targettype.c_bdp == 2) then local reaction = TipBuddy_GetUnitReaction( unit ); local colors = TipBuddy_SavedVars["textcolors"]; ----TB_AddMessage("reaction = "..reaction); --[[ tbcolor_nam_hostile = TipBuddy_RGBToHexColor(colors.nam_hos.r, colors.nam_hos.g, colors.nam_hos.b); tbcolor_nam_neutral = TipBuddy_RGBToHexColor(colors.nam_neu.r, colors.nam_neu.g, colors.nam_neu.b); tbcolor_nam_friendly = TipBuddy_RGBToHexColor(colors.nam_fri.r, colors.nam_fri.g, colors.nam_fri.b); tbcolor_nam_caution = TipBuddy_RGBToHexColor(colors.nam_cau.r, colors.nam_cau.g, colors.nam_cau.b); tbcolor_nam_pvp = TipBuddy_RGBToHexColor(colors.nam_pvp.r, colors.nam_pvp.g, colors.nam_pvp.b); tbcolor_nam_tappedplayer = TipBuddy_RGBToHexColor(colors.nam_tpp.r, colors.nam_tpp.g, colors.nam_tpp.b); tbcolor_nam_tappedother = TipBuddy_RGBToHexColor(colors.nam_tpo.r, colors.nam_tpo.g, colors.nam_tpo.b);]] if (reaction == "hostile") then r, g, b = colors.nam_hos.r, colors.nam_hos.g, colors.nam_hos.b; elseif (reaction == "neutral") then r, g, b = colors.nam_neu.r, colors.nam_neu.g, colors.nam_neu.b; elseif (reaction == "friendly") then r, g, b = colors.nam_fri.r, colors.nam_fri.g, colors.nam_fri.b; elseif (reaction == "caution") then r, g, b = colors.nam_cau.r, colors.nam_cau.g, colors.nam_cau.b; elseif (reaction == "pvp") then r, g, b = colors.nam_pvp.r, colors.nam_pvp.g, colors.nam_pvp.b; elseif (reaction == "tappedplayer") then r, g, b = colors.nam_tpp.r, colors.nam_tpp.g, colors.nam_tpp.b; elseif (reaction == "tappedother") then r, g, b = colors.nam_tpo.r, colors.nam_tpo.g, colors.nam_tpo.b; else r, g, b = targettype.bgcolor.r, targettype.bgcolor.g, targettype.bgcolor.b; end r, g, b = TB_NoNegative(r - 0.35), TB_NoNegative(g - 0.35), TB_NoNegative(b - 0.35); a = targettype.bgcolor.a; else r, g, b, a = targettype.bgcolor.r, targettype.bgcolor.g, targettype.bgcolor.b, targettype.bgcolor.a; ----TB_AddMessage("setting BG color to Custom"); end if (targettype.c_bdb and targettype.c_bdb == 1) then --[[ tbcolor_lvl_impossible = TipBuddy_RGBToHexColor(colors.lvl_imp.r, colors.lvl_imp.g, colors.lvl_imp.b); tbcolor_lvl_verydifficult = TipBuddy_RGBToHexColor(colors.lvl_vdf.r, colors.lvl_vdf.g, colors.lvl_vdf.b); tbcolor_lvl_difficult = TipBuddy_RGBToHexColor(colors.lvl_dif.r, colors.lvl_dif.g, colors.lvl_dif.b); tbcolor_lvl_standard = TipBuddy_RGBToHexColor(colors.lvl_stn.r, colors.lvl_stn.g, colors.lvl_stn.b); tbcolor_lvl_trivial = TipBuddy_RGBToHexColor(colors.lvl_trv.r, colors.lvl_trv.g, colors.lvl_trv.b); ]] local levelDiff = UnitLevel(unit) - UnitLevel("player"); local colors = TipBuddy_SavedVars["textcolors"]; if ( levelDiff >= 5 ) then br, bg, bb = colors.lvl_imp.r, colors.lvl_imp.g, colors.lvl_imp.b; elseif ( levelDiff >= 3 ) then br, bg, bb = colors.lvl_vdf.r, colors.lvl_vdf.g, colors.lvl_vdf.b; elseif ( levelDiff >= -2 ) then br, bg, bb = colors.lvl_dif.r, colors.lvl_dif.g, colors.lvl_dif.b; elseif ( -levelDiff <= GetQuestGreenRange() ) then br, bg, bb = colors.lvl_stn.r, colors.lvl_stn.g, colors.lvl_stn.b; else br, bg, bb = colors.lvl_trv.r, colors.lvl_trv.g, colors.lvl_trv.b; end ba = targettype.bgbcolor.a; elseif (targettype.c_bdb and targettype.c_bdb == 2) then local reaction = TipBuddy_GetUnitReaction( unit ); local colors = TipBuddy_SavedVars["textcolors"]; --[[ tbcolor_nam_hostile = TipBuddy_RGBToHexColor(colors.nam_hos.r, colors.nam_hos.g, colors.nam_hos.b); tbcolor_nam_neutral = TipBuddy_RGBToHexColor(colors.nam_neu.r, colors.nam_neu.g, colors.nam_neu.b); tbcolor_nam_friendly = TipBuddy_RGBToHexColor(colors.nam_fri.r, colors.nam_fri.g, colors.nam_fri.b); tbcolor_nam_caution = TipBuddy_RGBToHexColor(colors.nam_cau.r, colors.nam_cau.g, colors.nam_cau.b); tbcolor_nam_pvp = TipBuddy_RGBToHexColor(colors.nam_pvp.r, colors.nam_pvp.g, colors.nam_pvp.b); tbcolor_nam_tappedplayer = TipBuddy_RGBToHexColor(colors.nam_tpp.r, colors.nam_tpp.g, colors.nam_tpp.b); tbcolor_nam_tappedother = TipBuddy_RGBToHexColor(colors.nam_tpo.r, colors.nam_tpo.g, colors.nam_tpo.b);]] if (reaction == "hostile") then br, bg, bb = colors.nam_hos.r, colors.nam_hos.g, colors.nam_hos.b; elseif (reaction == "neutral") then br, bg, bb = colors.nam_neu.r, colors.nam_neu.g, colors.nam_neu.b; elseif (reaction == "friendly") then br, bg, bb = colors.nam_fri.r, colors.nam_fri.g, colors.nam_fri.b; elseif (reaction == "caution") then br, bg, bb = colors.nam_cau.r, colors.nam_cau.g, colors.nam_cau.b; elseif (reaction == "pvp") then br, bg, bb = colors.nam_pvp.r, colors.nam_pvp.g, colors.nam_pvp.b; elseif (reaction == "tappedplayer") then br, bg, bb = colors.nam_tpp.r, colors.nam_tpp.g, colors.nam_tpp.b; elseif (reaction == "tappedother") then br, bg, bb = colors.nam_tpo.r, colors.nam_tpo.g, colors.nam_tpo.b; else br, bg, bb = targettype.bgcolor.r, targettype.bgcolor.g, targettype.bgcolor.b; end ba = targettype.bgbcolor.a; else targettype = TipBuddy_SavedVars[type]; if (not targettype.bgbcolor) then targettype.bgbcolor = {}; targettype.bgbcolor.r = 0.8; targettype.bgbcolor.g = 0.8; targettype.bgbcolor.b = 0.9; targettype.bgbcolor.a = 1; end br, bg, bb, ba = targettype.bgbcolor.r, targettype.bgbcolor.g, targettype.bgbcolor.b, targettype.bgbcolor.a; end --if (TipBuddy_SavedVars["general"].blizdefault == 1) then -- GameTooltip:SetBackdropColor(TOOLTIP_DEFAULT_BACKGROUND_COLOR.r, TOOLTIP_DEFAULT_BACKGROUND_COLOR.g, TOOLTIP_DEFAULT_BACKGROUND_COLOR.b, 1); -- GameTooltip:SetBackdropBorderColor(0.8, 0.8, 0.9, 1); if (TipBuddy.compactvis) then TipBuddy_Main_Frame:SetBackdropColor( r, g, b, a ); TipBuddy_Main_Frame:SetBackdropBorderColor( 0, 0, 0, 0.9 ); else TipBuddyTooltip:SetBackdropColor( r, g, b, a ); --/script GameTooltip:SetBackdropBorderColor( 1, 1, 1, 1 ); TipBuddyTooltip:SetBackdropBorderColor( br, bg, bb, ba ); end if (TipBuddy_SavedVars["general"].blizdefault == 1) then TipBuddyTooltipTextLeft1:SetTextColor(GameTooltip_UnitColor(unit)); end ----TB_AddMessage(r.." - "..g.." - "..b.." - "..a); end -------------------------------------------------------------------------------------------------------------------------------------- -- SET NON-UNIT BACKGROUND COLOR -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_SetFrame_NonUnit_BackgroundColor( type ) if (not type) then type = "general"; end local targettype = TipBuddy_SavedVars[type]; if (not targettype.bgcolor) then targettype.bgcolor = {}; targettype.bgcolor.r = 0.1; targettype.bgcolor.g = 0.1; targettype.bgcolor.b = 0.1; targettype.bgcolor.a = 0.78; end if (not targettype.bgbcolor) then targettype.bgbcolor = {}; targettype.bgbcolor.r = 0.8; targettype.bgbcolor.g = 0.8; targettype.bgbcolor.b = 0.9; targettype.bgbcolor.a = 1; end --TB_AddMessage("NU: "..targettype.bgcolor.r.." - "..targettype.bgcolor.g.." - "..targettype.bgcolor.b.." - "..targettype.bgcolor.a); GameTooltip:SetBackdropColor( targettype.bgcolor.r, targettype.bgcolor.g, targettype.bgcolor.b, targettype.bgcolor.a ); GameTooltip:SetBackdropBorderColor( targettype.bgbcolor.r, targettype.bgbcolor.g, targettype.bgbcolor.b, targettype.bgbcolor.a ); end -------------------------------------------------------------------------------------------------------------------------------------- -- PARENT ON UPDATE -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_ParentTip_OnUpdate() --if (TipBuddy_Main_Frame:IsVisible() or GameTooltip:IsVisible()) then this:ClearAllPoints(); local x, y = TipBuddy_PositionFrameToCursor(); if (not TipBuddy.xpoint or not TipBuddy.xpos or not TipBuddy.anchor or not TipBuddy.fanchor) then TipBuddy.xpoint, TipBuddy.xpos, TipBuddy.ypos = TipBuddy_GetFrameCursorOffset(); TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos(); end if ( UnitExists("mouseover") or TipBuddy.anchorparent == "UIParent") then if (TipBuddy_SavedVars["general"].anchored == 1) then this:SetPoint(TipBuddy.anchor, "TipBuddy_Header_Frame", TipBuddy.fanchor, 0, 0); else this:SetPoint(TipBuddy.xpoint, "UIParent", "BOTTOMLEFT", x, y); end else if (TipBuddy_SavedVars["general"].nonunit_anchor == 0) then this:SetPoint(TipBuddy.xpoint, "UIParent", "BOTTOMLEFT", x, y); elseif (TipBuddy_SavedVars["general"].nonunit_anchor == 1) then this:SetPoint(TipBuddy.anchor, "TipBuddy_Header_Frame", TipBuddy.fanchor, 0, 0); else this:SetPoint(TipBuddy.xpoint, "UIParent", "BOTTOMLEFT", x, y); end --/script TipBuddyTooltipx:SetOwner(TipBuddy_Parent_Frame, "ANCHOR_RIGHT"); TipBuddyTooltipx:SetUnit("player"); end if ( UnitExists("mouseover") or TipBuddy.unitframe == 1) then if (TipBuddy.hasTarget and TipBuddy.hasTarget == 1) then --TB_AddMessage(TB_WHT_TXT.."ParentTip_OnUpdate"); GameTooltip:SetAlpha(0); end elseif (TipBuddy.hasTarget == 1) then local text1 = getglobal("GameTooltipTextLeft1"):GetText(); --TB_AddMessage(tbcolor_nam_hostile..TipBuddy.uName.." - "..getglobal("GameTooltipTextLeft1"):GetText()); if (text1 == nil or TipBuddy.gtt_name == nil or string.find(text1, TipBuddy_FixMagicChars(TipBuddy.gtt_name))) then GameTooltip:Hide(); ------TB_AddMessage(TEXT(text1).." - "..TEXT(TipBuddy.gtt_name)); if (TipBuddy_SavedVars["general"].gtt_fade == 1) then --TipBuddyTooltip:FadeOut(); ----TB_AddMessage("fading tt"); TipBuddy_Hide( TipBuddyTooltip ); else TipBuddy_ForceHide( TipBuddyTooltip ); --TB_AddMessage("hiding tt"); end end --/script GameTooltipTextLeft1:SetTextColor(GameTooltip_UnitColor("mouseover")); if (TipBuddy_Main_Frame:IsVisible()) then TipBuddy_Hide( TipBuddy_Main_Frame ); end TipBuddy.hasTarget = 0; --TB_AddMessage("TipBuddy.hasTarget = 0"); TipBuddy.uName = nil; TipBuddy.vis = nil; end if (not TipBuddy.first) then GameTooltip.default = nil; TipBuddy.first = 1; --TB_AddMessage("first time: ("..TipBuddyTooltip:GetTop()..")"); end end function TipBuddyTooltip_OnUpdate() if ( this.fadingout ) then if ( this:GetAlpha() <= 0 ) then TipBuddy_FadeOut_Finished(this); end elseif ( this.fadingin ) then if ( this:GetAlpha() >= 1 ) then TipBuddy_FadeIn_Finished(this); end end if (this:IsVisible()) then if ((TipBuddy.hasTarget ~= 1) and (not this.fadingout)) then if (not this.startTime or not this.endTime) then TipBuddy_ForceHide( this ); return; end GameTooltip:SetAlpha(0); local fraction = (GetTime() - this.startTime) / (this.endTime - this.startTime); if ( fraction >= 1.0 ) then TipBuddy_FadeOut( this ); end end end end -------------------------------------------------------------------------------------------------------------------------------------- -- MAIN ON UPDATE -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_MainTip_OnUpdate() --/script TipBuddy_SavedVars["general"].cursorpos = 1; --/script TipBuddy_SavedVars["general"].cursorpos = 0; if ( this.fadingout ) then if ( this:GetAlpha() <= 0 ) then TipBuddy_FadeOut_Finished(this); end elseif ( this.fadingin ) then if ( this:GetAlpha() >= 1 ) then TipBuddy_FadeIn_Finished(this); end end if (this:IsVisible()) then if ((TipBuddy.hasTarget ~= 1) and (not this.fadingout)) then TipBuddy.compactvis = nil; --/script ----TB_AddMessage(TipBuddy_Main_Frame.fadingout); if (not this.startTime or not this.endTime) then TipBuddy_SetFrame_NonUnit_BackgroundColor(); TipBuddy_ForceHide( this ); return; end GameTooltip:SetAlpha(0); local fraction = (GetTime() - this.startTime) / (this.endTime - this.startTime); if ( fraction >= 1.0 ) then TipBuddy_FadeOut( this ); elseif (GameTooltip:IsVisible() and TipBuddy.compactvis ~= 1) then TipBuddy_SetFrame_NonUnit_BackgroundColor(); TipBuddy_ForceHide( this ); end elseif (GameTooltip:IsVisible() and TipBuddy.compactvis ~= 1) then TipBuddy_SetFrame_NonUnit_BackgroundColor(); TipBuddy_ForceHide( this ); end end end -------------------------------------------------------------------------------------------------------------------------------------- -- SET ANCHOR -------------------------------------------------------------------------------------------------------------------------------------- -- if it is set to be anchored, anchor it to TipBuddyAnchor -- otherwise, set it to the cursor function TipBuddy_SetFrame_Anchor( frame ) --TB_AddMessage(TB_WHT_TXT.."SetFrame_Anchor"); if (not TipBuddy.xpoint or not TipBuddy.anchor) then TipBuddy.xpoint, TipBuddy.xpos, TipBuddy.ypos = TipBuddy_GetFrameCursorOffset(); TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos(); end frame:ClearAllPoints(); if (TipBuddy_SavedVars["general"].anchored == 1) then frame:SetPoint(TipBuddy.anchor, "TipBuddy_Parent_Frame", TipBuddy.fanchor, 0, TipBuddy.offset); else frame:SetPoint(TipBuddy.xpoint, "TipBuddy_Parent_Frame", "CENTER", 0, 0); end end -------------------------------------------------------------------------------------------------------------------------------------- -- SET HEIGHTS (COMPACT) -------------------------------------------------------------------------------------------------------------------------------------- -- /script TipBuddy_SavedVars["general"].scalemod = "1"; -- /script TipBuddy_SavedVars["general"].scalemod = "0"; function TipBuddy_FrameHeights_Initialize( type ) local scale = TipBuddy_SavedVars["general"].scalemod; TipBuddy_FactionFrameIcon:SetHeight( 30 + (scale * 1.5) ); TipBuddy_FactionFrameIcon:SetWidth( 30 + (scale * 1.5) ); TipBuddy_TargetName_Text:SetTextHeight( 11 + scale ); TipBuddy_TargetName_TextR:SetTextHeight( 11 + scale ); if (type and TipBuddy.tt and TipBuddy.tt == 1 and TipBuddy_SavedVars[type] and TipBuddy_SavedVars[type].trg_2l and TipBuddy_SavedVars[type].trg_2l == 1) then TipBuddy_TargetName_Text:SetHeight( (11 + scale) * 2); TipBuddy_TargetName_TextR:SetHeight( (11 + scale) * 2); else TipBuddy_TargetName_Text:SetHeight( 11 + scale ); TipBuddy_TargetName_TextR:SetHeight( 11 + scale ); end TipBuddy_TargetGuild_Text:SetTextHeight( 8 + scale ); TipBuddy_TargetGuild_Text:SetHeight( 8 + scale ); TipBuddy_TargetGuild_TextR:SetTextHeight( 8 + scale ); TipBuddy_TargetGuild_TextR:SetHeight( 8 + scale ); TipBuddy_TargetLevel_Text:SetTextHeight( 10 + scale ); TipBuddy_TargetLevel_Text:SetHeight( 10 + scale ); --TipBuddy_TargetLevel_Text:SetTextHeight( 8 + scale ); --TipBuddy_TargetLevel_Text:SetHeight( 8 + scale ); TipBuddy_TargetClass_Text:SetTextHeight( 10 + scale ); TipBuddy_TargetClass_Text:SetHeight( 10 + scale ); TipBuddy_TargetCityFac_Text:SetTextHeight( 8 + scale ); TipBuddy_TargetCityFac_Text:SetHeight( 8 + scale ); TipBuddy_TargetCityFac_TextR:SetTextHeight( 8 + scale ); TipBuddy_TargetCityFac_TextR:SetHeight( 8 + scale ); for i=1, 20, 1 do local line; line = getglobal("TipBuddy_Xtra"..i.."_Text"); line:SetTextHeight( 8 + scale ); line:SetHeight( 8 + scale ); line = getglobal("TipBuddy_XtraR"..i.."_Text"); line:SetTextHeight( 8 + scale ); line:SetHeight( 8 + scale ); end TipBuddy_TargetFrameHealthBar:SetHeight( 5 + scale ); TipBuddy_TargetFrameManaBar:SetHeight( 3 + scale ); TipBuddy_HealthTextText:SetTextHeight( TipBuddy_TargetFrameHealthBar:GetHeight() + 6 ); TipBuddy_ManaTextText:SetTextHeight( TipBuddy_TargetFrameManaBar:GetHeight() + 3.5 ); TipBuddy_RankFrameIcon:SetHeight( 12 + scale ); TipBuddy_RankFrameIcon:SetWidth( 12 + scale ); -- hack to fix the fonts scaling badly TipBuddy_Main_Frame:SetScale(2); TipBuddy_Main_Frame:SetScale(1); TipBuddy_SetFrame_Height(); end function TipBuddy_SetFrame_Width() local scale = TipBuddy_SavedVars["general"].scalemod; local targetNameLength = TipBuddy_TargetName_Text:GetStringWidth() + (4 + scale); local targetClassLength = (TipBuddy_TargetClass_Text:GetStringWidth() + TipBuddy_TargetLevel_Text:GetStringWidth() + (scale + 10)); local targetGuildLength = TipBuddy_TargetGuild_Text:GetStringWidth() + (4 + scale); if (not TipBuddy_TargetClass_Text:IsVisible()) then targetClassLength = 1; end if (not TipBuddy_TargetGuild_Text:IsVisible()) then targetGuildLength = 1; end if (targetNameLength > targetGuildLength) then if (targetNameLength < targetClassLength) then targetNameLength = targetClassLength; end elseif (targetGuildLength > targetClassLength) then targetNameLength = targetGuildLength; else targetNameLength = targetClassLength; end local t1 = targetNameLength; local t2; for i=1, 20, 1 do t2 = (getglobal("TipBuddy_Xtra"..i.."_Text"):GetStringWidth() + (5 + scale)) + (getglobal("TipBuddy_XtraR"..i.."_Text"):GetStringWidth() + (12 + scale)); if (t1 < t2) then t1 = t2; end end if (t1 < 72) then t1 = 72; end TipBuddy_Main_Frame:SetWidth(t1 + scale); TipBuddy_TargetFrameHealthBar:SetWidth(TipBuddy_Main_Frame:GetWidth() - 6); TipBuddy_TargetFrameManaBar:SetWidth(TipBuddy_Main_Frame:GetWidth() - 6); end --/script foc = GetMouseFocus(); DEFAULT_CHAT_FRAME:AddMessage(foc:GetName()); function TipBuddy_SetFrame_Height() local scale = TipBuddy_SavedVars["general"].scalemod; local nameFrame = TipBuddy_TargetName_Text:GetHeight(); local guildFrame = TipBuddy_TargetGuild_Text:GetHeight(); local classFrame = TipBuddy_TargetLevel_Text:GetHeight(); local healthFrame = TipBuddy_TargetFrameHealthBar:GetHeight(); local manaFrame = TipBuddy_TargetFrameManaBar:GetHeight(); local cityfacFrame = TipBuddy_TargetCityFac_Text:GetHeight(); local lastparent = "TipBuddy_TargetName_Text"; local lastparentr = "TipBuddy_TargetName_TextR"; if (TipBuddy_TargetName_Text:IsVisible()) then nameFrame = TipBuddy_TargetName_Text:GetHeight(); else nameFrame = 0; end if (TipBuddy_TargetGuild_Text:IsVisible()) then guildFrame = TipBuddy_TargetGuild_Text:GetHeight(); TipBuddy_TargetGuild_Text:SetPoint("TOPLEFT", lastparent, "BOTTOMLEFT", 0, 1); TipBuddy_TargetGuild_TextR:SetPoint("TOPRIGHT", lastparentr, "BOTTOMRIGHT", 0, 1); lastparent = "TipBuddy_TargetGuild_Text"; lastparentr = "TipBuddy_TargetGuild_TextR"; else guildFrame = 0; end if (TipBuddy_TargetFrameHealthBar:IsVisible()) then healthFrame = (TipBuddy_TargetFrameHealthBar:GetHeight() + 5); TipBuddy_TargetFrameHealthBar:SetPoint("TOPLEFT", lastparent, "BOTTOMLEFT", 2, -4); lastparent = "TipBuddy_TargetFrameHealthBar"; lastparentr = "TipBuddy_TargetFrameHealthBar"; else healthFrame = 0; end if (TipBuddy_TargetFrameManaBar:IsVisible()) then manaFrame = (TipBuddy_TargetFrameManaBar:GetHeight() + 4); lastparent = "TipBuddy_TargetFrameManaBar"; lastparentr = "TipBuddy_TargetFrameManaBar"; else manaFrame = 0; end if (TipBuddy_TargetCityFac_Text:IsVisible()) then ------TB_AddMessage(lastparent); cityfacFrame = TipBuddy_TargetCityFac_Text:GetHeight(); TipBuddy_TargetCityFac_Text:SetPoint("TOPLEFT", lastparent, "BOTTOMLEFT", 0, 0); TipBuddy_TargetCityFac_TextR:SetPoint("TOPRIGHT", lastparentr, "BOTTOMRIGHT", 0, 0); lastparent = "TipBuddy_TargetCityFac_Text"; lastparentr = "TipBuddy_TargetCityFac_TextR"; else cityfacFrame = 0; end if (TipBuddy_TargetLevel_Text:IsVisible()) then ------TB_AddMessage(lastparent); classFrame = (TipBuddy_TargetLevel_Text:GetHeight() + 1); TipBuddy_TargetLevel_Text:SetPoint("TOPLEFT", lastparent, "BOTTOMLEFT", 0, -1); TipBuddy_TargetClass_Text:SetPoint("TOPRIGHT", lastparentr, "BOTTOMRIGHT", 0, -1); lastparent = "TipBuddy_TargetLevel_Text"; lastparentr = "TipBuddy_TargetClass_Text"; else classFrame = 0; end if (TipBuddy_Xtra1_Text:IsVisible()) then TipBuddy_Xtra1_Text:SetPoint("TOPLEFT", lastparent, "BOTTOMLEFT", 0, -3); TipBuddy_XtraR1_Text:SetPoint("TOPRIGHT", lastparentr, "BOTTOMRIGHT", 0, -3); end local xtraHeight = 0; for i=1, 20, 1 do local xtraLineL = getglobal("TipBuddy_Xtra"..i.."_Text"); local xtraLineR = getglobal("TipBuddy_XtraR"..i.."_Text"); if (xtraLineL:IsVisible()) then xtraHeight = ( xtraHeight + xtraLineL:GetHeight() + 1 ); else if (xtraLineR:IsVisible()) then xtraHeight = ( xtraHeight + xtraLineL:GetHeight() + 1 ); end end end if (xtraHeight ~= 0) then xtraHeight = xtraHeight + 2; end local tipFrameHeight = ((nameFrame + guildFrame + classFrame + healthFrame + manaFrame + cityfacFrame + xtraHeight) + 4); TipBuddy_Main_Frame:SetHeight(tipFrameHeight); end -------------------------------------------------------------------------------------------------------------------------------------- -- POSITIONING -------------------------------------------------------------------------------------------------------------------------------------- --/script ----TB_AddMessage(UIParent:GetWidth()..", "..UIParent:GetHeight()); local x, y = GetCursorPosition(UIParent); ----TB_AddMessage(x..", "..y); function TipBuddy_PositionFrameToCursor() local x, y = GetCursorPosition(UIParent); x = (x / TipBuddy.uiscale) + TipBuddy.xpos; y = (y / TipBuddy.uiscale) + TipBuddy.ypos; local x1, x2, y1, y2, tip; if (TipBuddyTooltip:IsVisible()) then tip = getglobal("TipBuddyTooltip"); elseif (TipBuddy_Main_Frame:IsVisible()) then tip = getglobal("TipBuddy_Main_Frame"); else tip = getglobal("GameTooltip"); end if ( TipBuddy.xpoint == "LEFT" ) then x1 = 0; x2 = (TipBuddy.uiwidth - tip:GetWidth()); elseif ( TipBuddy.xpoint == "RIGHT" ) then x1 = tip:GetWidth(); x2 = TipBuddy.uiwidth; else x1 = tip:GetWidth() * 0.5; x2 = (TipBuddy.uiwidth - x1); end y1 = (TipBuddy.uiheight - tip:GetHeight()); if ( TipBuddy.xpoint == "TOP" ) then y2 = tip:GetHeight(); elseif ( xpoint == "BOTTOM" ) then y2 = 0; else y2 = (tip:GetHeight() * 0.5); end ------TB_AddMessage(x1..", "..y2); if ( x < x1 ) then x = x1; end if ( x > x2 ) then x = x2; end if ( y > y1 ) then y = y1; end if ( y < y2 ) then y = y2; end return x, y; end function TipBuddy_GetIconAnchorPos( frame ) local x, y = TipBuddy_PositionFrameToCursor(); if (not frame or not frame:GetLeft()) then return; end if (not TipBuddy.uiwidth) then TipBuddy.uiscale = UIParent:GetScale(); TipBuddy.uiwidth = UIParent:GetWidth() / TipBuddy.uiscale; TipBuddy.uiheight = UIParent:GetHeight() / TipBuddy.uiscale; end if (y > (TipBuddy.uiheight * 0.75)) then --topright if (x > (TipBuddy.uiwidth * 0.75)) then if (frame and frame:GetLeft() <= (TipBuddy.uiwidth * 0.2)) then ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOM", "TOP"; end ------TB_AddMessage("ANCHOR_BOTTOMLEFT"); return "ANCHOR_BOTTOMLEFT", "TOPRIGHT", "BOTTOMLEFT"; --topmidright elseif (x > (TipBuddy.uiwidth * 0.5)) then if (frame and frame:GetLeft() <= (TipBuddy.uiwidth * 0.2)) then ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOM", "TOP"; end ------TB_AddMessage("ANCHOR_BOTTOMLEFT"); return "ANCHOR_BOTTOMLEFT", "TOPRIGHT", "BOTTOMRIGHT"; --cursor is topmidleft elseif (x > (TipBuddy.uiwidth * 0.25)) then if (frame and frame:GetRight() >= (TipBuddy.uiwidth * 0.8)) then ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOM", "TOP"; end ------TB_AddMessage("ANCHOR_BOTTOMRIGHT"); return "ANCHOR_BOTTOMRIGHT", "TOPLEFT", "BOTTOMLEFT"; --cursor is topleft else if (frame and frame:GetRight() >= (TipBuddy.uiwidth * 0.8)) then ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOM", "TOP"; end ------TB_AddMessage("ANCHOR_BOTTOMRIGHT"); return "ANCHOR_BOTTOMRIGHT", "TOPLEFT", "BOTTOMRIGHT"; end elseif (y > (TipBuddy.uiheight * 0.25)) then --midright if (x > (TipBuddy.uiwidth * 0.75)) then if (frame and frame:GetLeft() <= (TipBuddy.uiwidth * 0.2)) then ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOM", "TOP"; end ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOMRIGHT", "BOTTOMLEFT"; else if (frame and frame:GetRight() >= (TipBuddy.uiwidth * 0.8)) then ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOM", "TOP"; end ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOMLEFT", "BOTTOMRIGHT"; end else if (x > (TipBuddy.uiwidth * 0.75)) then if (frame and frame:GetLeft() <= (TipBuddy.uiwidth * 0.2)) then ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOM", "TOP"; end ------TB_AddMessage("ANCHOR_LEFT"); return "ANCHOR_LEFT", "BOTTOMRIGHT", "TOPLEFT"; else if (frame and frame:GetRight() >= (TipBuddy.uiwidth * 0.8)) then ------TB_AddMessage("ANCHOR_NONE"); return "ANCHOR_NONE", "BOTTOM", "TOP"; end ------TB_AddMessage("ANCHOR_RIGHT"); return "ANCHOR_RIGHT", "BOTTOMLEFT", "TOPRIGHT"; end end end function TipBuddy_GetFrameCursorOffset() local curpos = TipBuddy_SavedVars["general"].cursorpos; TipBuddy.uiscale = UIParent:GetScale(); TipBuddy.uiwidth = UIParent:GetWidth() / TipBuddy.uiscale; TipBuddy.uiheight = UIParent:GetHeight() / TipBuddy.uiscale; -- set the position of the tooltip in relation to the cursor if (curpos == "Top") then xpoint = "BOTTOM"; elseif (curpos == "Right") then xpoint = "LEFT"; elseif (curpos == "Left") then xpoint = "RIGHT"; elseif (curpos == "Bottom") then xpoint = "TOP"; else xpoint = "BOTTOM"; end return xpoint, TipBuddy_SavedVars["general"].offset_x, TipBuddy_SavedVars["general"].offset_y; end function TipBuddy_GetFrameAnchorPos() local anchorpos = TipBuddy_SavedVars["general"].anchor_pos; if (anchorpos == "Top Right") then anchor = "BOTTOMRIGHT"; fanchor = "TOPRIGHT"; offset = -2; elseif (anchorpos == "Top Left") then anchor = "BOTTOMLEFT"; fanchor = "TOPLEFT"; offset = -2; elseif (anchorpos == "Bottom Right") then anchor = "TOPRIGHT"; fanchor = "BOTTOMRIGHT"; offset = 2; elseif (anchorpos == "Bottom Left") then anchor = "TOPLEFT"; fanchor = "BOTTOMLEFT"; offset = 2; elseif (anchorpos == "Top Center") then anchor = "BOTTOM"; fanchor = "TOP"; offset = -2; elseif (anchorpos == "Bottom Center") then anchor = "TOP"; fanchor = "BOTTOM"; offset = 2; end return anchor, fanchor, offset; end -------------------------------------------------------------------------------------------------------------------------------------- -- FADING -------------------------------------------------------------------------------------------------------------------------------------- function TipBuddy_Hide( frame ) ------TB_AddMessage("TipBuddy_Hide"); TipBuddy.hasTarget = 0; --TB_AddMessage("TipBuddy.hasTarget = 0"); if (frame:GetName() == "TipBuddy_Main_Frame") then if (GameTooltip:IsVisible() and TipBuddy.compactvis ~= 1 and not UnitExists("mouseover")) then TipBuddy_ForceHide(frame); return; elseif (UnitExists("mouseover")) then TipBuddy_ForceHide(frame); return; elseif ( frame.fadingout ) then return; end end local delayTime; if (TipBuddy_SavedVars["general"].delaytime) then delayTime = TipBuddy_SavedVars["general"].delaytime; else delayTime = 0; end TipBuddy.uName = nil; frame.startTime = GetTime(); frame.endTime = frame.startTime + (0.01 + delayTime); end function TipBuddy_FadeOut( frame, func ) --TB_AddMessage("TipBuddy_FadeOut"); if (frame:GetName() == "TipBuddy_Main_Frame") then TipBuddy.compactvis = nil; end if ( frame.fadingout ) then return; end frame.fadingout = 1; frame.fadingin = nil; frame.targetalpha = 0; frame.animfunc_fade = func; local fadeTime; if (TipBuddy_SavedVars["general"].fadetime) then fadeTime = TipBuddy_SavedVars["general"].fadetime; else fadeTime = 0; end UIFrameFadeRemoveFrame(frame); UIFrameFadeOut( frame, (0.01 + fadeTime), frame:GetAlpha(), frame.targetalpha ); end function TipBuddy_FadeOut_Finished() --TB_AddMessage("TipBuddy_FadeOut_Finished"); this:Hide(); this:SetAlpha( 1 ); this.fadingout = nil; if ( this.animfunc_fade ) then this.animfunc_fade(); end end function TipBuddy_FadeIn( frame, func ) ------TB_AddMessage("TipBuddy_FadeIn"); if ( frame.fadingin ) then return; end if ( frame.fadingout ) then UIFrameFadeRemoveFrame(frame); end frame.fadingin = 1; frame.fadingout = nil; frame.targetalpha = 1; frame.animfunc_fade = func; UIFrameFadeRemoveFrame(frame); UIFrameFadeIn( frame, 0.01, 0.9, frame.targetalpha ); end function TipBuddy_FadeIn_Finished() ------TB_AddMessage("TipBuddy_FadeIn_Finished"); this:SetAlpha( 1 ); this.fadingin = nil; if ( this.animfunc_fade ) then this.animfunc_fade(); end end -------------------------------------------------------------------------------------------------------------------------------------- -- GAMETOOLTIP -------------------------------------------------------------------------------------------------------------------------------------- function TB_GameTooltip_IniHooks() TB_AddMessage("GameTooltip_OnLoad"); --hooking GameTooltip's AddLine if( not GameTooltip.tborgAddLine ) then GameTooltip.tborgAddLine = GameTooltip.AddLine; GameTooltip.AddLine = TipBuddy_GameTooltip_AddLine; end --hooking GameTooltip's AddDoubleLine if( not GameTooltip.tborgAddDoubleLine ) then GameTooltip.tborgAddDoubleLine = GameTooltip.AddDoubleLine; GameTooltip.AddDoubleLine = TipBuddy_GameTooltip_AddDoubleLine; ----TB_AddMessage("adding double line hook"); end --hooking GameTooltip's SetUnit if( not GameTooltip.orgSetUnit ) then GameTooltip.orgSetUnit = GameTooltip.SetUnit; GameTooltip.SetUnit = TipBuddy_GameTooltip_SetUnit; end --hooking GameTooltip's FadeOut if( not GameTooltip.orgFadeOut ) then GameTooltip.orgFadeOut = GameTooltip.FadeOut; GameTooltip.FadeOut = TipBuddy_GameTooltip_FadeOut; end --hooking GameTooltip's SetOwner if( not GameTooltip.orgSetOwner ) then --TB_AddMessage( tbcolor_nam_hostile.."hooking setowner" ) GameTooltip.orgSetOwner = GameTooltip.SetOwner; GameTooltip.SetOwner = TipBuddy_GameTooltip_SetOwner; end --hooking GameTooltip's SetPoint if( not GameTooltip.orgSetPoint ) then --TB_AddMessage( tbcolor_nam_hostile.."hooking setpoint" ) GameTooltip.orgSetPoint = GameTooltip.SetPoint; GameTooltip.SetPoint = TipBuddy_GameTooltip_SetPoint; end end --hook local originalGameTooltip_SetDefaultAnchor; originalGameTooltip_SetDefaultAnchor = GameTooltip_SetDefaultAnchor; function GameTooltip_SetDefaultAnchor(tooltip, parent) TB_AddMessage(TB_WHT_TXT.."GTT SETANCHOR"); TipBuddy.defanch = 1; originalGameTooltip_SetDefaultAnchor( tooltip, parent ); if (tooltip:GetName() ~= "GameTooltip" and tooltip:GetName() ~= "TipBuddyTooltip") then TipBuddy.defanch = nil; return; end if (parent) then TipBuddy.anchorparent = parent:GetName(); --TB_AddMessage("GTT_PARENT = "..parent:GetName()); else --TB_AddMessage("GTT HAS NO PARENT "); end --/script GameTooltip:SetOwner(PetActionButton5, "ANCHOR_NONE"); if (not TipBuddy.first) then tooltip:Show(); end if (not TipBuddy.xpoint or not TipBuddy.anchor) then TipBuddy.xpoint, TipBuddy.xpos, TipBuddy.ypos = TipBuddy_GetFrameCursorOffset(); TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos(); end TipBuddyTooltip:ClearAllPoints(); GameTooltip:ClearAllPoints(); TB_AddMessage("GameTooltip:ClearAllPoints()"); if (UnitExists("mouseover") or TipBuddy.unitframe == 1) then GameTooltip:orgSetOwner(parent, "ANCHOR_NONE"); GameTooltip:orgSetPoint("TOPLEFT", "UIParent", "BOTTOMRIGHT", 256, -256); GameTooltip.default = 0; TB_AddMessage("GameTooltip:orgSetPoint"); local newparent = TipBuddy_Parent_Frame; if (parent.unit) then GameTooltip:SetUnit(parent.unit); TB_AddMessage(parent:GetName()); newparent = parent; end if ( TipBuddy_SavedVars["general"].anchored == 1) then TB_AddMessage("GTT-ANCHORED = 1 "..TipBuddy.offset); TipBuddyTooltip:SetOwner(newparent, "ANCHOR_NONE"); TipBuddyTooltip:SetPoint(TipBuddy.anchor, "TipBuddy_Parent_Frame", TipBuddy.fanchor, 0, TipBuddy.offset); else TipBuddyTooltip:SetOwner(newparent, "ANCHOR_NONE"); TipBuddyTooltip:SetPoint(TipBuddy.xpoint, "TipBuddy_Parent_Frame", "CENTER", 0, 0); TB_AddMessage("GTT-ANCHORED = 0 "..TipBuddy.xpoint); end else if (parent == getglobal("UIParent")) then if ( TipBuddy_SavedVars["general"].anchored == 1) then TB_AddMessage("GTT-ANCHORED = 1"); tooltip:SetOwner(parent, "ANCHOR_NONE"); tooltip:SetPoint(TipBuddy.anchor, "TipBuddy_Parent_Frame", TipBuddy.fanchor, 0, TipBuddy.offset); tooltip.default = nil; else if (TipBuddy_SavedVars["general"].gtt_fade == 1) then tooltip:SetOwner(parent, "ANCHOR_NONE"); tooltip:SetPoint(TipBuddy.xpoint, "TipBuddy_Parent_Frame", "CENTER", 0, 0); tooltip.default = nil; TB_AddMessage("GTT-ANCHORED = 0"); else TB_AddMessage("GTT-ANCHORED = CURSOR"); tooltip:SetOwner(parent, "ANCHOR_CURSOR"); tooltip.default = nil; end end elseif (TipBuddy_SavedVars["general"].nonunit_anchor == 0) then -- -- Or to the cursor tooltip:SetOwner(parent, "ANCHOR_NONE"); tooltip:SetPoint(TipBuddy.xpoint, "TipBuddy_Parent_Frame", "CENTER", 0, 0); tooltip.default = nil; TB_AddMessage("GTT-NONUNIT_ANCHOR = 0"); elseif (TipBuddy_SavedVars["general"].nonunit_anchor == 1) then tooltip:SetOwner(parent, "ANCHOR_NONE"); tooltip:SetPoint(TipBuddy.anchor, "TipBuddy_Parent_Frame", TipBuddy.fanchor, 0, TipBuddy.offset); tooltip.default = nil; TB_AddMessage("GTT-NONUNIT_ANCHOR = xxx"); elseif (TipBuddy_SavedVars["general"].nonunit_anchor == 2) then local oanchor, ganchor, panchor = TipBuddy_GetIconAnchorPos(parent); tooltip:ClearAllPoints(); tooltip:SetOwner(parent, oanchor); tooltip:SetPoint(ganchor, parent:GetName(), panchor, 0, 0); tooltip.default = nil; end TipBuddy_ForceHide( TipBuddyTooltip ); end TipBuddy.defanch = nil; end function TipBuddy_GTT_ClearExtras() TipBuddy.gotextras = nil; TipBuddy.gtt_xtra = nil; TipBuddy.gtt_xtraR = nil; TipBuddy.vis = nil; end -- hook for GameTooltip_OnShow function TipBuddy_GameTooltip_OnShow() TB_AddMessage(TB_WHT_TXT.."GTT OnShow"); TipBuddy.xpoint, TipBuddy.xpos, TipBuddy.ypos = TipBuddy_GetFrameCursorOffset(); TipBuddy.anchor, TipBuddy.fanchor, TipBuddy.offset = TipBuddy_GetFrameAnchorPos(); if (lGameTooltip_OnShow_Orig) then lGameTooltip_OnShow_Orig(); end TB_AddMessage(TB_WHT_TXT.."end GTT OnShow"); if (TipBuddy_SavedVars["general"].reposmods and TipBuddy_SavedVars["general"].reposmods == 1) then --this adjusts the xy of the tooltip position ONLY if GameTooltip_SetDefaultAnchor hasn't --been called and then ONLY if it extends off the screen. if (TipBuddy.d_own and (TipBuddy.d_own):GetName()) then local owner = TipBuddy.d_own or this:GetParent(); TB_AddMessage("reposmods"); if (UnitExists("mouseover") or TipBuddy.unitframe == 1) then else --local x2, y2 = TipBuddy_PositionFrameToCursor(); if (not TipBuddy.uiwidth or not TipBuddy.uiheight) then TipBuddy.uiscale = UIParent:GetScale(); TipBuddy.uiwidth = UIParent:GetWidth() / TipBuddy.uiscale; TipBuddy.uiheight = UIParent:GetHeight() / TipBuddy.uiscale; end if (GameTooltip:IsVisible() and GameTooltip:GetLeft()) then local scale = TipBuddy_SavedVars["general"].gtt_scale; local left = GameTooltip:GetLeft()* scale; local right = GameTooltip:GetRight()* scale; local top = GameTooltip:GetTop()* scale; local bottom = GameTooltip:GetBottom()* scale; local x, y = 0, 0; local off = false; if (left and left < -4) then x = (left * -1)/scale; off = true; elseif (right and right > TipBuddy.uiwidth+8) then x = (TipBuddy.uiwidth - right)/scale; off = true; end if (top and top > TipBuddy.uiheight+16) then y = (TipBuddy.uiheight - top)/scale; off = true; elseif (bottom and bottom < -4) then y = (bottom * -1)/scale; off = true; end TB_AddMessage("scale="..scale.." x="..x.." - y="..y.." - top="..top.." - height="..TipBuddy.uiheight); --only readjust it if it extends off the screen if (owner and owner:GetName() and off == true) then TB_AddMessage("GameTooltip off edge"); --local _, ganchor, panchor = TipBuddy_GetIconAnchorPos(owner); GameTooltip:ClearAllPoints(); GameTooltip:SetPoint(TipBuddy.d_anch1, owner:GetName(), TipBuddy.d_anch2, x, y); --GameTooltip:orgSetPoint(ganchor, owner:GetName(), panchor, 0, 0); --/script GameTooltip:ClearAllPoints();GameTooltip:SetPoint(TipBuddy.anchor, this:GetParent():GetName(), TipBuddy.fanchor, 100, 0); --GameTooltip.default = nil; end end TipBuddy_ForceHide( TipBuddyTooltip ); end end end if (not UnitExists("mouseover") and TipBuddy.unitframe ~= 1) then TipBuddy_SetFrame_BackgroundColor(); TipBuddy_ForceHide( TipBuddyTooltip ); end end --hook local originalGameTooltip_OnHide; originalGameTooltip_OnHide = GameTooltip_OnHide; function GameTooltip_OnHide() originalGameTooltip_OnHide(); TipBuddy_GTT_ClearExtras(); TipBuddy.d_own = nil; TipBuddy.d_point = nil; --TipBuddyTooltip:Hide(); TB_AddMessage("hiding GTT"); --TipBuddy_TargetBuffs_Update(); --TipBuddy_ShowRank( TipBuddy.targetType, this.unit ); --TipBuddy_TargetInfo_ShowFaction( TipBuddy.targetType, this.unit ); end -- hook for GameTooltip_OnEvent function TipBuddy_GameTooltip_OnEvent() lGameTooltip_OnEvent_Orig(event); --TB_AddMessage("GTT_0NEVENT called"); end -- hook for GameTooltip_SetUnit function TipBuddy_GameTooltip_SetUnit(this, unit) --TB_AddMessage( "SET UNIT!!" ) TipBuddy_GTT_ClearExtras(); GameTooltip:orgSetUnit(unit); end -- hook for GameTooltip_FadeOut function TipBuddy_GameTooltip_FadeOut() TB_AddMessage( "FadeOut" ) GameTooltip:orgFadeOut(); end -- hook for GameTooltip_SetOwner function TipBuddy_GameTooltip_SetOwner( this, owner, position, x, y ) TipBuddy.d_own = nil; TipBuddy.d_point = nil; GameTooltip:orgSetOwner(owner, position, x, y); TB_AddMessage(TB_WHT_TXT.."SetOwner"); --if this tooltip has had its default anchor set, then don't modify it any further if (TipBuddy_SavedVars["general"].gtt_scale) then GameTooltip:SetScale(2); local ttScale = TipBuddy_SavedVars["general"].gtt_scale; if (EnhancedTooltip and EnhancedTooltip:IsVisible()) then ttScale = 1.0; end TipBuddy_SetEffectiveScale(GameTooltip, ttScale, UIParent); end if (TipBuddy.defanch) then return; end --/script if (GameTooltip:IsOwned(BrowseButton1Item)) then TB_AddMessage("0wn3d")end; TB_AddMessage(TB_WHT_TXT.."SetOwner Modify"); if (owner and owner:GetName() and TipBuddy_SavedVars["general"].reposmods and TipBuddy_SavedVars["general"].reposmods == 1) then --need to check for the position because some mods don't set a position if (position) then TB_AddMessage(position..GetTime()); position = string.gsub(position, "ANCHOR_", ""); --TB_AddMessage(position); if (TB_ANCHOR[position]) then TipBuddy.d_anch1 = TB_ANCHOR[position].a; TipBuddy.d_anch2 = TB_ANCHOR[position].b; elseif (position == "NONE") then --don't do anything return; else TipBuddy.d_anch1 = "BOTTOMRIGHT"; TipBuddy.d_anch2 = "BOTTOMLEFT"; end else --if no positioned was passed, use the default position for anchoring TipBuddy.d_anch1 = "BOTTOMRIGHT"; TipBuddy.d_anch2 = "BOTTOMLEFT"; end --TB_AddMessage(owner:GetName()); TipBuddy.d_own = owner; --we have to set the anchor to NONE because otherwise, we can't reposition it with SetPoint GameTooltip:orgSetOwner(owner, "ANCHOR_NONE"); if (not x) then x = 0; end if (not y) then y = 0; end GameTooltip:ClearAllPoints(); GameTooltip:orgSetPoint(TipBuddy.d_anch1, owner:GetName(), TipBuddy.d_anch2, x, y); --TB_AddMessage(TipBuddy.d_anch1); end TB_AddMessage(TB_WHT_TXT.."endSetOwner"); --"ANCHOR_NONE" end -- hook for GameTooltip_SetPoint function TipBuddy_GameTooltip_SetPoint( this, pos1, parent, pos2, x, y ) if (not pos1 or not parent) then return; end TipBuddy.d_point = 1; if (TipBuddy_SavedVars["general"].gtt_scale) then TipBuddyTooltip:SetScale(2); TipBuddy_SetEffectiveScale(TipBuddyTooltip, TipBuddy_SavedVars["general"].gtt_scale, UIParent); TB_AddMessage("SCALE = "..TipBuddy_SavedVars["general"].gtt_scale); end GameTooltip:orgSetPoint(pos1, parent, pos2, x, y); TB_AddMessage(TB_WHT_TXT.."SetPoint"); end --/script GameTooltip:AddDoubleLine("text", "something", 1, 0, 1, 0, 0, 1); function TipBuddy_GameTooltip_AddLine( frame, text, r, g, b, nowrap ) if (not TipBuddy.targetUnit) then TipBuddy.targetUnit = "mouseover"; end GameTooltip:tborgAddLine(text, r, g, b, nowrap); if (not text or text == "") then return; end --TB_AddMessage("GTTADDLINE!!!!!!!!!: adding = "..string.gsub(text, " ", "_")); if (not TipBuddyTooltip:IsVisible() and not TipBuddy_Main_Frame:IsVisible() and not TipBuddy.vis) then if (TipBuddy_SavedVars["general"].blizdefault == 1 and not TipBuddy.gotextras) then if (not TipBuddy.gtt_xtra) then TipBuddy.gtt_xtra = {}; end for i=1, 32, 1 do if (not TipBuddy.gtt_xtra[i]) then TipBuddy.gtt_xtra[i.."color"] = {}; TipBuddy.gtt_xtra[i.."color"].r, TipBuddy.gtt_xtra[i.."color"].g, TipBuddy.gtt_xtra[i.."color"].b = r, g, b; TipBuddy.gtt_xtra[i] = text; --TB_AddMessage("GTTADDLINE!!!!!!!!!: adding = "..text); break; end end end return; end if (not TipBuddy.targetType) then TipBuddy.targetType = TipBuddy_TargetInfo_GetTargetType( TipBuddy.targetUnit ); end --TB_AddMessage("GTTADDLINE!!!!!!!!!: "..TipBuddy.targetType.." = '"..string.gsub(text, " ", "_").."'"); if (TipBuddy_Main_Frame:IsVisible()) then local line; for i=1, 20, 1 do line = getglobal("TipBuddy_Xtra"..i.."_Text"); if (line:GetText() and line:IsShown()) then ----TB_AddMessage("line: "..i.." = occupied"); --return; else ----TB_AddMessage("line: "..i.." = free.....setting text: "..text); line:SetText(text); if (not r) then r, g, b = NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b; end line:SetTextColor(r, g, b); line:Show(); break; end end TipBuddy_FrameHeights_Initialize(TipBuddy.targetType); TipBuddy_SetFrame_Width(); else if (text == " ") then return; end TipBuddyTooltip:AddLine(text, r, g, b, nowrap); TipBuddyTooltip:Show(); end end --/script GameTooltip:AddDoubleLine("text", "something", 1, 0, 1, 0, 0, 1); function TipBuddy_GameTooltip_AddDoubleLine( frame, textL, textR, Lr, Lg, Lb, Rr, Rg, Rb ) if (not TipBuddy.targetUnit) then TipBuddy.targetUnit = "mouseover"; end GameTooltip:tborgAddDoubleLine(textL, textR, Lr, Lg, Lb, Rr, Rg, Rb); if (not textL or textL == "") then return; end --TB_AddMessage("GTTADDDOUBLELINE!!!!!!!!!: adding = "..textL); if (not TipBuddyTooltip:IsVisible() and not TipBuddy_Main_Frame:IsVisible() and not TipBuddy.vis) then if (TipBuddy_SavedVars["general"].blizdefault == 1 and not TipBuddy.gotextras) then if (not TipBuddy.gtt_xtra) then TipBuddy.gtt_xtra = {}; end if (not TipBuddy.gtt_xtraR) then TipBuddy.gtt_xtraR = {}; end for i=1, 32, 1 do if (not TipBuddy.gtt_xtra[i]) then TipBuddy.gtt_xtra[i.."color"] = {}; TipBuddy.gtt_xtra[i.."color"].r, TipBuddy.gtt_xtra[i.."color"].g, TipBuddy.gtt_xtra[i.."color"].b = Lr, Lg, Lb; TipBuddy.gtt_xtra[i] = textL; if (textR) then TipBuddy.gtt_xtraR[i.."color"] = {}; TipBuddy.gtt_xtraR[i.."color"].r, TipBuddy.gtt_xtraR[i.."color"].g, TipBuddy.gtt_xtraR[i.."color"].b = Rr, Rg, Rb; TipBuddy.gtt_xtraR[i] = textR; end --TB_AddMessage("GTTADDDOUBLELINE!!!!!!!!!: adding = "..textL.." : "..textR); break; end end end return; end if (not TipBuddy.targetType) then TipBuddy.targetType = TipBuddy_TargetInfo_GetTargetType( TipBuddy.targetUnit ); end ----TB_AddMessage("GTTADDDOUBLELINE!!!!!!!!!: "..TipBuddy.targetType.." = "..textL.." : "..textR); if (TipBuddy_Main_Frame:IsVisible()) then local lineL, lineR; for i=1, 20, 1 do lineL = getglobal("TipBuddy_Xtra"..i.."_Text"); lineR = getglobal("TipBuddy_XtraR"..i.."_Text"); if (lineL:GetText() and lineL:IsShown()) then --return; else lineL:SetText(textL); if (not Lr) then Lr, Lg, Lb = NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b; end lineL:SetTextColor(Lr, Lg, Lb); lineL:Show(); lineR:SetText(textR); if (not Rr) then Rr, Rg, Rb = NORMAL_FONT_COLOR.r, NORMAL_FONT_COLOR.g, NORMAL_FONT_COLOR.b; end lineR:SetTextColor(Rr, Rg, Rb); lineR:Show(); break; end end TipBuddy_FrameHeights_Initialize(TipBuddy.targetType); TipBuddy_SetFrame_Width(); else TipBuddyTooltip:AddDoubleLine(textL, textR, Lr, Lg, Lb, Rr, Rg, Rb); TipBuddyTooltip:Show(); --/script TipBuddyTooltip:AddDoubleLine("what", "the fuck");TipBuddyTooltip:Show(); end end -------------------------------------------------------------------------------------------------------------------------------------- -- UNITFRAME HOOKS -------------------------------------------------------------------------------------------------------------------------------------- --hook local originalUnitFrame_OnEnter; originalUnitFrame_OnEnter = UnitFrame_OnEnter; function UnitFrame_OnEnter() originalUnitFrame_OnEnter(); this.elapsed = 1.0; TipBuddy.unitframe = 1; TipBuddy.hasTarget = 1; TipBuddy.targetUnit = this.unit; ----TB_AddMessage("entering unit frame: "..this.unit); --TipBuddy.targetType = TipBuddy_TargetInfo_GetTargetType( this.unit ); GameTooltip_SetDefaultAnchor(TipBuddyTooltip, this); --GameTooltip:SetUnit(this.unit); TipBuddy_ShowUnitTooltip(this.unit); --/script TipBuddy_ShowUnitTooltip("target"); -- hiding health and mana bars because they won't update if ( TipBuddy_SavedVars[TipBuddy.targetType].off == 1 ) then TipBuddy_TargetFrameHealthBar:Hide(); TipBuddy_TargetFrameManaBar:Hide(); -- setting frame size again TipBuddy_FrameHeights_Initialize(TipBuddy.targetType); TipBuddy_SetFrame_Width(); end end --hook local originalUnitFrame_OnLeave; originalUnitFrame_OnLeave = UnitFrame_OnLeave; function UnitFrame_OnLeave() originalUnitFrame_OnLeave(); TipBuddy.unitframe = 0; TipBuddy.hasTarget = 0; TipBuddy.targetUnit = nil; ------TB_AddMessage("leaving unit frame"); TipBuddy.uName = nil; TipBuddy.vis = nil; end --hook local originalUnitFrame_OnUpdate; originalUnitFrame_OnUpdate = UnitFrame_OnUpdate; function UnitFrame_OnUpdate(elapsed) originalUnitFrame_OnUpdate(elapsed); if ( TipBuddy.unitframe == 1 and TipBuddyTooltip:IsOwned(this)) then this.elapsed = this.elapsed - elapsed; if ( this.elapsed <= 0 ) then this.elapsed = 1.0; --TB_AddMessage(this.unit); TipBuddy_ShowUnitTooltip(this.unit, 1); -- hiding health and mana bars because they won't update TipBuddy_TargetFrameHealthBar:Hide(); TipBuddy_TargetFrameManaBar:Hide(); -- setting frame size again TipBuddy_FrameHeights_Initialize(TipBuddy.targetType); TipBuddy_SetFrame_Width(); TipBuddy.hasTarget = 1; ----TB_AddMessage("TipBuddy.hasTarget = 1"); end end end --hook local originalPlayerFrame_OnUpdate; originalPlayerFrame_OnUpdate = PlayerFrame_OnUpdate; function PlayerFrame_OnUpdate(elapsed) originalPlayerFrame_OnUpdate(elapsed); if ( TipBuddy.unitframe == 1 and TipBuddyTooltip:IsOwned(this)) then this.elapsed = this.elapsed - elapsed; if ( this.elapsed <= 0 ) then this.elapsed = 1.0; ------TB_AddMessage(this.unit); TipBuddy_ShowUnitTooltip(this.unit, 1); -- hiding health and mana bars because they won't update TipBuddy_TargetFrameHealthBar:Hide(); TipBuddy_TargetFrameManaBar:Hide(); -- setting frame size again TipBuddy_FrameHeights_Initialize(TipBuddy.targetType); TipBuddy_SetFrame_Width(); TipBuddy.hasTarget = 1; ----TB_AddMessage("TipBuddy.hasTarget = 1"); end end end