vanilla-wow-addons – Rev 1
?pathlinks?
---------------
-- Variables --
---------------
Perl_Target_Target_Config = {};
-- Default Saved Variables (also set in Perl_Target_Target_GetVars)
local locked = 0; -- unlocked by default
local mobhealthsupport = 1; -- mobhealth support is on by default
local scale = 1; -- default scale
local totsupport = 1; -- target of target support enabled by default
local tototsupport = 1; -- target of target of target support enabled by default
local transparency = 1; -- transparency for frames
local alertsound = 0; -- audible alert disabled by default
local alertmode = 0; -- DPS, Tank, Healer modes
local alertsize = 0; -- Variable which controls the size of the text
-- Default Local Variables
local Initialized = nil; -- waiting to be initialized
local Perl_Target_Target_Time_Elapsed = 0; -- set the update timer to 0
local Perl_Target_Target_Time_Update_Rate = 0.2; -- the update interval
local aggroWarningCount = 0; -- the check to see if we have alerted the player of a ToT event
local aggroToToTWarningCount = 0; -- the check to see if we have alerted the player of a ToToT event
local startTime = 0; -- used to keep track of fading the big alert text
local mouseovertargettargethealthflag = 0; -- is the mouse over the health bar for healer mode?
local mouseovertargettargetmanaflag = 0; -- is the mouse over the mana bar for healer mode?
local mouseovertargettargettargethealthflag = 0; -- is the mouse over the health bar for healer mode?
local mouseovertargettargettargetmanaflag = 0; -- is the mouse over the mana bar for healer mode?
----------------------
-- Loading Function --
----------------------
function Perl_Target_Target_OnLoad()
-- Events
this:RegisterEvent("ADDON_LOADED");
this:RegisterEvent("PLAYER_ENTERING_WORLD");
this:RegisterEvent("PLAYER_REGEN_ENABLED");
this:RegisterEvent("PLAYER_TARGET_CHANGED");
this:RegisterEvent("VARIABLES_LOADED");
-- Button Click Overlays (in order of occurrence in XML)
Perl_Target_Target_NameFrame_CastClickOverlay:SetFrameLevel(Perl_Target_Target_NameFrame:GetFrameLevel() + 1);
Perl_Target_Target_StatsFrame_CastClickOverlay:SetFrameLevel(Perl_Target_Target_StatsFrame:GetFrameLevel() + 1);
Perl_Target_Target_HealthBar_CastClickOverlay:SetFrameLevel(Perl_Target_Target_StatsFrame:GetFrameLevel() + 2);
Perl_Target_Target_ManaBar_CastClickOverlay:SetFrameLevel(Perl_Target_Target_StatsFrame:GetFrameLevel() + 2);
Perl_Target_Target_Target_NameFrame_CastClickOverlay:SetFrameLevel(Perl_Target_Target_Target_NameFrame:GetFrameLevel() + 1);
Perl_Target_Target_Target_StatsFrame_CastClickOverlay:SetFrameLevel(Perl_Target_Target_Target_StatsFrame:GetFrameLevel() + 1);
Perl_Target_Target_Target_HealthBar_CastClickOverlay:SetFrameLevel(Perl_Target_Target_Target_StatsFrame:GetFrameLevel() + 2);
Perl_Target_Target_Target_ManaBar_CastClickOverlay:SetFrameLevel(Perl_Target_Target_Target_StatsFrame:GetFrameLevel() + 2);
if (DEFAULT_CHAT_FRAME) then
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Perl Classic: Target_Target loaded successfully.");
end
end
-------------------
-- Event Handler --
-------------------
function Perl_Target_Target_OnEvent(event)
if (event == "PLAYER_REGEN_ENABLED" or event == "PLAYER_TARGET_CHANGED") then
aggroWarningCount = 0;
elseif (event == "VARIABLES_LOADED") or (event=="PLAYER_ENTERING_WORLD") then
Perl_Target_Target_Initialize();
return;
elseif (event == "ADDON_LOADED") then
if (arg1 == "Perl_Target_Target") then
Perl_Target_Target_myAddOns_Support();
end
return;
else
return;
end
end
-------------------------------
-- Loading Settings Function --
-------------------------------
function Perl_Target_Target_Initialize()
if (Initialized) then
Perl_Target_Target_Set_Scale(); -- Set the scale
Perl_Target_Target_Set_Transparency(); -- Set the transparency
return;
end
-- Check if a previous exists, if not, enable by default.
if (type(Perl_Target_Target_Config[UnitName("player")]) == "table") then
Perl_Target_Target_GetVars();
else
Perl_Target_Target_UpdateVars();
end
-- Major config options.
Perl_Target_Target_Initialize_Frame_Color();
Perl_Target_Target_Frame:Hide();
Perl_Target_Target_Target_Frame:Hide();
Initialized = 1;
end
function Perl_Target_Target_Initialize_Frame_Color()
Perl_Target_Target_StatsFrame:SetBackdropColor(0, 0, 0, 1);
Perl_Target_Target_StatsFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
Perl_Target_Target_NameFrame:SetBackdropColor(0, 0, 0, 1);
Perl_Target_Target_NameFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
Perl_Target_Target_HealthBarText:SetTextColor(1, 1, 1, 1);
Perl_Target_Target_ManaBarText:SetTextColor(1, 1, 1, 1);
Perl_Target_Target_Target_StatsFrame:SetBackdropColor(0, 0, 0, 1);
Perl_Target_Target_Target_StatsFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
Perl_Target_Target_Target_NameFrame:SetBackdropColor(0, 0, 0, 1);
Perl_Target_Target_Target_NameFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
Perl_Target_Target_Target_HealthBarText:SetTextColor(1, 1, 1, 1);
Perl_Target_Target_Target_ManaBarText:SetTextColor(1, 1, 1, 1);
end
--------------------------
-- The Update Functions --
--------------------------
function Perl_Target_Target_OnUpdate(arg1)
Perl_Target_Target_Time_Elapsed = Perl_Target_Target_Time_Elapsed + arg1;
if (Perl_Target_Target_Time_Elapsed > Perl_Target_Target_Time_Update_Rate) then
Perl_Target_Target_Time_Elapsed = 0;
if (UnitExists("targettarget") and totsupport == 1) then
Perl_Target_Target_Warn(); -- Display any warnings if needed
Perl_Target_Target_Frame:Show(); -- Show the frame
-- Begin: Set the name
local targettargetname = UnitName("targettarget");
if (strlen(targettargetname) > 11) then
targettargetname = strsub(targettargetname, 1, 10).."...";
end
Perl_Target_Target_NameBarText:SetText(targettargetname);
-- End: Set the name
-- Begin: Set the name text color
if (UnitIsPlayer("targettarget") or UnitPlayerControlled("targettarget")) then -- is it a player
local r, g, b;
if (UnitCanAttack("targettarget", "player")) then -- are we in an enemy controlled zone
-- Hostile players are red
if (not UnitCanAttack("player", "targettarget")) then -- enemy is not pvp enabled
r = 0.5;
g = 0.5;
b = 1.0;
else -- enemy is pvp enabled
r = 1.0;
g = 0.0;
b = 0.0;
end
elseif (UnitCanAttack("player", "targettarget")) then -- enemy in a zone controlled by friendlies or when we're a ghost
-- Players we can attack but which are not hostile are yellow
r = 1.0;
g = 1.0;
b = 0.0;
elseif (UnitIsPVP("targettarget")) then -- friendly pvp enabled character
-- Players we can assist but are PvP flagged are green
r = 0.0;
g = 1.0;
b = 0.0;
else -- friendly non pvp enabled character
-- All other players are blue (the usual state on the "blue" server)
r = 0.5;
g = 0.5;
b = 1.0;
end
Perl_Target_Target_NameBarText:SetTextColor(r, g, b);
elseif (UnitIsTapped("targettarget") and not UnitIsTappedByPlayer("targettarget")) then
Perl_Target_Target_NameBarText:SetTextColor(0.5,0.5,0.5); -- not our tap
else
local reaction = UnitReaction("targettarget", "player");
if (reaction) then
local r, g, b;
r = UnitReactionColor[reaction].r;
g = UnitReactionColor[reaction].g;
b = UnitReactionColor[reaction].b;
Perl_Target_Target_NameBarText:SetTextColor(r, g, b);
else
Perl_Target_Target_NameBarText:SetTextColor(0.5, 0.5, 1.0);
end
end
-- End: Set the name text color
-- Begin: Update the health bar
local targettargethealth = UnitHealth("targettarget");
local targettargethealthmax = UnitHealthMax("targettarget");
local targettargethealthpercent = floor(targettargethealth/targettargethealthmax*100+0.5);
if (UnitIsDead("targettarget") or UnitIsGhost("targettarget")) then -- This prevents negative health
targettargethealth = 0;
targettargethealthpercent = 0;
end
Perl_Target_Target_HealthBar:SetMinMaxValues(0, targettargethealthmax);
Perl_Target_Target_HealthBar:SetValue(targettargethealth);
if (PCUF_COLORHEALTH == 1) then
if ((targettargethealthpercent <= 100) and (targettargethealthpercent > 75)) then
Perl_Target_Target_HealthBar:SetStatusBarColor(0, 0.8, 0);
Perl_Target_Target_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
elseif ((targettargethealthpercent <= 75) and (targettargethealthpercent > 50)) then
Perl_Target_Target_HealthBar:SetStatusBarColor(1, 1, 0);
Perl_Target_Target_HealthBarBG:SetStatusBarColor(1, 1, 0, 0.25);
elseif ((targettargethealthpercent <= 50) and (targettargethealthpercent > 25)) then
Perl_Target_Target_HealthBar:SetStatusBarColor(1, 0.5, 0);
Perl_Target_Target_HealthBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
else
Perl_Target_Target_HealthBar:SetStatusBarColor(1, 0, 0);
Perl_Target_Target_HealthBarBG:SetStatusBarColor(1, 0, 0, 0.25);
end
else
Perl_Target_Target_HealthBar:SetStatusBarColor(0, 0.8, 0);
Perl_Target_Target_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
end
if (mouseovertargettargethealthflag == 1) then
Perl_Target_Target_HealthShow();
else
Perl_Target_Target_HealthBarText:SetText(targettargethealthpercent.."%");
end
-- End: Update the health bar
-- Begin: Update the mana bar
local targettargetmana = UnitMana("targettarget");
local targettargetmanamax = UnitManaMax("targettarget");
if (UnitIsDead("targettarget") or UnitIsGhost("targettarget")) then -- This prevents negative mana
targettargetmana = 0;
end
Perl_Target_Target_ManaBar:SetMinMaxValues(0, targettargetmanamax);
Perl_Target_Target_ManaBar:SetValue(targettargetmana);
if (mouseovertargettargetmanaflag == 1) then
if (UnitPowerType("targettarget") == 1 or UnitPowerType("targettarget") == 2) then
Perl_Target_Target_ManaBarText:SetText(targettargetmana);
else
Perl_Target_Target_ManaBarText:SetText(targettargetmana.."/"..targettargetmanamax);
end
else
Perl_Target_Target_ManaBarText:Hide();
end
-- End: Update the mana bar
-- Begin: Update the mana bar color
local targettargetmanamax = UnitManaMax("targettarget");
local targettargetpower = UnitPowerType("targettarget");
-- Set mana bar color
if (targettargetmanamax == 0) then
Perl_Target_Target_ManaBar:Hide();
Perl_Target_Target_ManaBarBG:Hide();
Perl_Target_Target_ManaBar_CastClickOverlay:Hide();
Perl_Target_Target_StatsFrame:SetHeight(30);
Perl_Target_Target_StatsFrame_CastClickOverlay:SetHeight(30);
elseif (targettargetpower == 1) then
Perl_Target_Target_ManaBar:SetStatusBarColor(1, 0, 0, 1);
Perl_Target_Target_ManaBarBG:SetStatusBarColor(1, 0, 0, 0.25);
Perl_Target_Target_ManaBar:Show();
Perl_Target_Target_ManaBarBG:Show();
Perl_Target_Target_ManaBar_CastClickOverlay:Show();
Perl_Target_Target_StatsFrame:SetHeight(42);
Perl_Target_Target_StatsFrame_CastClickOverlay:SetHeight(42);
elseif (targettargetpower == 2) then
Perl_Target_Target_ManaBar:SetStatusBarColor(1, 0.5, 0, 1);
Perl_Target_Target_ManaBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
Perl_Target_Target_ManaBar:Show();
Perl_Target_Target_ManaBarBG:Show();
Perl_Target_Target_ManaBar_CastClickOverlay:Show();
Perl_Target_Target_StatsFrame:SetHeight(42);
Perl_Target_Target_StatsFrame_CastClickOverlay:SetHeight(42);
elseif (targettargetpower == 3) then
Perl_Target_Target_ManaBar:SetStatusBarColor(1, 1, 0, 1);
Perl_Target_Target_ManaBarBG:SetStatusBarColor(1, 1, 0, 0.25);
Perl_Target_Target_ManaBar:Show();
Perl_Target_Target_ManaBarBG:Show();
Perl_Target_Target_ManaBar_CastClickOverlay:Show();
Perl_Target_Target_StatsFrame:SetHeight(42);
Perl_Target_Target_StatsFrame_CastClickOverlay:SetHeight(42);
else
Perl_Target_Target_ManaBar:SetStatusBarColor(0, 0, 1, 1);
Perl_Target_Target_ManaBarBG:SetStatusBarColor(0, 0, 1, 0.25);
Perl_Target_Target_ManaBar:Show();
Perl_Target_Target_ManaBarBG:Show();
Perl_Target_Target_ManaBar_CastClickOverlay:Show();
Perl_Target_Target_StatsFrame:SetHeight(42);
Perl_Target_Target_StatsFrame_CastClickOverlay:SetHeight(42);
end
-- End: Update the mana bar color
else
Perl_Target_Target_Frame:Hide(); -- Hide the frame
end
if (UnitExists("targettargettarget") and tototsupport == 1) then
Perl_Target_Target_Target_Frame:Show(); -- Show the frame
if (UnitAffectingCombat("targettarget")) then
if (UnitIsDead("targettargettarget") or UnitIsCorpse("targettargettarget")) then
-- Im thinking targetting something that is targetting a corpse or dead thing is causing crashes
-- Hence this safety check. If it is, we do nothing.
else
if (UnitName("targettargettarget")) then
if (UnitIsEnemy("targettarget", "player")) then
if (UnitName("targettargettarget") == UnitName("player")) then -- play the warning sound if needed
if (aggroWarningCount == 0 and aggroToToTWarningCount == 0) then
-- Its coming right for us!
if (aggroToToTWarningCount == 0) then
aggroToToTWarningCount = 1;
Perl_Target_Target_Play_Sound();
end
end
else
-- Whew it isnt fighting us
aggroToToTWarningCount = 0;
end
else
-- Friendly target
aggroToToTWarningCount = 0;
end
end
end
end
-- Begin: Set the name
local targettargettargetname = UnitName("targettargettarget");
if (strlen(targettargettargetname) > 11) then
targettargettargetname = strsub(targettargettargetname, 1, 10).."...";
end
Perl_Target_Target_Target_NameBarText:SetText(targettargettargetname);
-- End: Set the name
-- Begin: Set the name text color
if (UnitIsPlayer("targettargettarget") or UnitPlayerControlled("targettargettarget")) then -- is it a player
local r, g, b;
if (UnitCanAttack("targettargettarget", "player")) then -- are we in an enemy controlled zone
-- Hostile players are red
if (not UnitCanAttack("player", "targettargettarget")) then -- enemy is not pvp enabled
r = 0.5;
g = 0.5;
b = 1.0;
else -- enemy is pvp enabled
r = 1.0;
g = 0.0;
b = 0.0;
end
elseif (UnitCanAttack("player", "targettargettarget")) then -- enemy in a zone controlled by friendlies or when we're a ghost
-- Players we can attack but which are not hostile are yellow
r = 1.0;
g = 1.0;
b = 0.0;
elseif (UnitIsPVP("targettargettarget")) then -- friendly pvp enabled character
-- Players we can assist but are PvP flagged are green
r = 0.0;
g = 1.0;
b = 0.0;
else -- friendly non pvp enabled character
-- All other players are blue (the usual state on the "blue" server)
r = 0.5;
g = 0.5;
b = 1.0;
end
Perl_Target_Target_Target_NameBarText:SetTextColor(r, g, b);
elseif (UnitIsTapped("targettargettarget") and not UnitIsTappedByPlayer("targettargettarget")) then
Perl_Target_Target_Target_NameBarText:SetTextColor(0.5,0.5,0.5); -- not our tap
else
local reaction = UnitReaction("targettargettarget", "player");
if (reaction) then
local r, g, b;
r = UnitReactionColor[reaction].r;
g = UnitReactionColor[reaction].g;
b = UnitReactionColor[reaction].b;
Perl_Target_Target_Target_NameBarText:SetTextColor(r, g, b);
else
Perl_Target_Target_Target_NameBarText:SetTextColor(0.5, 0.5, 1.0);
end
end
-- End: Set the name text color
-- Begin: Update the health bar
local targettargettargethealth = UnitHealth("targettargettarget");
local targettargettargethealthmax = UnitHealthMax("targettargettarget");
local targettargettargethealthpercent = floor(targettargettargethealth/targettargettargethealthmax*100+0.5);
if (UnitIsDead("targettargettarget") or UnitIsGhost("targettargettarget")) then -- This prevents negative health
targettargettargethealth = 0;
targettargettargethealthpercent = 0;
end
Perl_Target_Target_Target_HealthBar:SetMinMaxValues(0, targettargettargethealthmax);
Perl_Target_Target_Target_HealthBar:SetValue(targettargettargethealth);
if (PCUF_COLORHEALTH == 1) then
if ((targettargettargethealthpercent <= 100) and (targettargettargethealthpercent > 75)) then
Perl_Target_Target_Target_HealthBar:SetStatusBarColor(0, 0.8, 0);
Perl_Target_Target_Target_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
elseif ((targettargettargethealthpercent <= 75) and (targettargettargethealthpercent > 50)) then
Perl_Target_Target_Target_HealthBar:SetStatusBarColor(1, 1, 0);
Perl_Target_Target_Target_HealthBarBG:SetStatusBarColor(1, 1, 0, 0.25);
elseif ((targettargettargethealthpercent <= 50) and (targettargettargethealthpercent > 25)) then
Perl_Target_Target_Target_HealthBar:SetStatusBarColor(1, 0.5, 0);
Perl_Target_Target_Target_HealthBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
else
Perl_Target_Target_Target_HealthBar:SetStatusBarColor(1, 0, 0);
Perl_Target_Target_Target_HealthBarBG:SetStatusBarColor(1, 0, 0, 0.25);
end
else
Perl_Target_Target_Target_HealthBar:SetStatusBarColor(0, 0.8, 0);
Perl_Target_Target_Target_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
end
if (mouseovertargettargettargethealthflag == 1) then
Perl_Target_Target_Target_HealthShow();
else
Perl_Target_Target_Target_HealthBarText:SetText(targettargettargethealthpercent.."%");
end
-- End: Update the health bar
-- Begin: Update the mana bar
local targettargettargetmana = UnitMana("targettargettarget");
local targettargettargetmanamax = UnitManaMax("targettargettarget");
if (UnitIsDead("targettargettarget") or UnitIsGhost("targettargettarget")) then -- This prevents negative mana
targettargettargetmana = 0;
end
Perl_Target_Target_Target_ManaBar:SetMinMaxValues(0, targettargettargetmanamax);
Perl_Target_Target_Target_ManaBar:SetValue(targettargettargetmana);
if (mouseovertargettargettargetmanaflag == 1) then
if (UnitPowerType("targettargettarget") == 1 or UnitPowerType("targettargettarget") == 2) then
Perl_Target_Target_Target_ManaBarText:SetText(targettargettargetmana);
else
Perl_Target_Target_Target_ManaBarText:SetText(targettargettargetmana.."/"..targettargettargetmanamax);
end
else
Perl_Target_Target_Target_ManaBarText:Hide();
end
-- End: Update the mana bar
-- Begin: Update the mana bar color
local targettargettargetmanamax = UnitManaMax("targettargettarget");
local targettargettargetpower = UnitPowerType("targettargettarget");
-- Set mana bar color
if (targettargettargetmanamax == 0) then
Perl_Target_Target_Target_ManaBar:Hide();
Perl_Target_Target_Target_ManaBarBG:Hide();
Perl_Target_Target_Target_ManaBar_CastClickOverlay:Hide();
Perl_Target_Target_Target_StatsFrame:SetHeight(30);
Perl_Target_Target_Target_StatsFrame_CastClickOverlay:SetHeight(30);
elseif (targettargettargetpower == 1) then
Perl_Target_Target_Target_ManaBar:SetStatusBarColor(1, 0, 0, 1);
Perl_Target_Target_Target_ManaBarBG:SetStatusBarColor(1, 0, 0, 0.25);
Perl_Target_Target_Target_ManaBar:Show();
Perl_Target_Target_Target_ManaBarBG:Show();
Perl_Target_Target_Target_ManaBar_CastClickOverlay:Show();
Perl_Target_Target_Target_StatsFrame:SetHeight(42);
Perl_Target_Target_Target_StatsFrame_CastClickOverlay:SetHeight(42);
elseif (targettargettargetpower == 2) then
Perl_Target_Target_Target_ManaBar:SetStatusBarColor(1, 0.5, 0, 1);
Perl_Target_Target_Target_ManaBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
Perl_Target_Target_Target_ManaBar:Show();
Perl_Target_Target_Target_ManaBarBG:Show();
Perl_Target_Target_Target_ManaBar_CastClickOverlay:Show();
Perl_Target_Target_Target_StatsFrame:SetHeight(42);
Perl_Target_Target_Target_StatsFrame_CastClickOverlay:SetHeight(42);
elseif (targettargettargetpower == 3) then
Perl_Target_Target_Target_ManaBar:SetStatusBarColor(1, 1, 0, 1);
Perl_Target_Target_Target_ManaBarBG:SetStatusBarColor(1, 1, 0, 0.25);
Perl_Target_Target_Target_ManaBar:Show();
Perl_Target_Target_Target_ManaBarBG:Show();
Perl_Target_Target_Target_ManaBar_CastClickOverlay:Show();
Perl_Target_Target_Target_StatsFrame:SetHeight(42);
Perl_Target_Target_Target_StatsFrame_CastClickOverlay:SetHeight(42);
else
Perl_Target_Target_Target_ManaBar:SetStatusBarColor(0, 0, 1, 1);
Perl_Target_Target_Target_ManaBarBG:SetStatusBarColor(0, 0, 1, 0.25);
Perl_Target_Target_Target_ManaBar:Show();
Perl_Target_Target_Target_ManaBarBG:Show();
Perl_Target_Target_Target_ManaBar_CastClickOverlay:Show();
Perl_Target_Target_Target_StatsFrame:SetHeight(42);
Perl_Target_Target_Target_StatsFrame_CastClickOverlay:SetHeight(42);
end
-- End: Update the mana bar color
else
Perl_Target_Target_Target_Frame:Hide(); -- Hide the frame
end
end
end
function Perl_Target_Target_Warn()
-- Player has something targetted
if (UnitAffectingCombat("target")) then -- Target is in an active combat situation
if (UnitIsDead("targettarget") or UnitIsCorpse("targettarget")) then -- Target is dead, do nothing
-- Previous author had this in as a safety check
else
if (not UnitIsFriend("target", "player")) then -- Target isn't dead
-- Stupid mobs dont have targets when they are trapped/polyd/sapped/stunned, check for this
if (alertmode == 0) then -- Disabled but still have audible alert enabled
if (UnitName("targettarget") == UnitName("player")) then -- play the warning sound if needed
-- Its coming right for us!
if (aggroWarningCount == 0) then
aggroWarningCount = 1;
Perl_Target_Target_Play_Sound();
end
else
-- Whew it isnt fighting us
aggroWarningCount = 0;
end
elseif (alertmode == 1) then -- DPS Mode
if (UnitName("targettarget") == UnitName("player")) then
-- Its coming right for us!
if (aggroWarningCount == 0) then
if (alertsize == 0) then
UIErrorsFrame:AddMessage(UnitName("target").." has changed targets to you!",1,0,0,1,3);
elseif (alertsize == 1) then
Perl_Target_Target_BigWarning_Show(UnitName("target").." has changed targets to you!");
elseif (alertsize == 2) then
-- Warning disabled
end
aggroWarningCount = 1;
Perl_Target_Target_Play_Sound();
end
else
-- Whew it isnt fighting us
aggroWarningCount = 0;
end
elseif (alertmode == 2) then -- Tank mode
if (UnitName("targettarget") == UnitName("player")) then
-- Its coming right for us! (A good thing, im tanking it)
aggroWarningCount = 0;
else
-- Some dumb hunter pulled aggro
if (aggroWarningCount == 0) then
if (alertsize == 0) then
UIErrorsFrame:AddMessage("You have lost aggro to "..UnitName("targettarget").."!",1,0,0,1,3);
elseif (alertsize == 1) then
Perl_Target_Target_BigWarning_Show("You have lost aggro to "..UnitName("targettarget").."!");
elseif (alertsize == 2) then
-- Warning disabled
end
aggroWarningCount = 1;
Perl_Target_Target_Play_Sound();
end
end
elseif (alertmode == 3) then -- Healer Mode (Do this check down here for sanity reasons)
Perl_Target_Target_Warn_Healer_Mode();
else
-- Friendly target
aggroWarningCount = 0;
end
--end
else
if (alertmode == 3) then -- Healer Mode (Do this check down here for sanity reasons)
Perl_Target_Target_Warn_Healer_Mode();
else
-- Friendly target
aggroWarningCount = 0;
end
end
end
end
end
function Perl_Target_Target_Warn_Healer_Mode() -- This chunk of code is called in 2 places so may as well place it as it's own function
if (UnitIsPlayer("target")) then
if (UnitIsFriend("player", "target")) then
if (UnitIsUnit("target", "targettargettarget")) then -- The target and the targets target target (whew) are the same
if (aggroWarningCount == 0) then
if (alertsize == 0) then
UIErrorsFrame:AddMessage(UnitName("target").." is now tanking "..UnitName("targettarget"),1,0,0,1,3);
elseif (alertsize == 1) then
if ((UnitName("player") == UnitName("target")) or (UnitName("target") == UnitName("targettarget"))) then
-- Do nothing
else
Perl_Target_Target_BigWarning_Show(UnitName("target").." is now tanking "..UnitName("targettarget"));
end
elseif (alertsize == 2) then
-- Warning disabled
end
aggroWarningCount = 1;
end
else
-- Lazy warrior isnt tanking anything!
aggroWarningCount = 0;
end
else
if (UnitName("targettarget") == UnitName("player")) then
-- Its coming right for us!
if (aggroWarningCount == 0) then
if (alertsize == 0) then
UIErrorsFrame:AddMessage(UnitName("target").." has changed targets to you!",1,0,0,1,3);
elseif (alertsize == 1) then
Perl_Target_Target_BigWarning_Show(UnitName("target").." has changed targets to you!");
elseif (alertsize == 2) then
-- Warning disabled
end
aggroWarningCount = 1;
Perl_Target_Target_Play_Sound();
end
else
-- Whew it isnt fighting us
aggroWarningCount = 0;
end
end
else
if (UnitName("targettarget") == UnitName("player")) then
-- Its coming right for us!
if (aggroWarningCount == 0) then
if (alertsize == 0) then
UIErrorsFrame:AddMessage(UnitName("target").." has changed targets to you!",1,0,0,1,3);
elseif (alertsize == 1) then
Perl_Target_Target_BigWarning_Show(UnitName("target").." has changed targets to you!");
elseif (alertsize == 2) then
-- Warning disabled
end
aggroWarningCount = 1;
Perl_Target_Target_Play_Sound();
end
else
-- Whew it isnt fighting us
aggroWarningCount = 0;
end
end
end
function Perl_Target_Target_Play_Sound()
if (alertsound == 1) then
PlaySoundFile("Sound\\Spells\\PVPFlagTakenHorde.wav");
end
end
-------------------------
-- Mouseover Functions --
-------------------------
-- Target of Target Start
function Perl_Target_Target_HealthShow()
local targettargethealth = UnitHealth("targettarget");
local targettargethealthmax = UnitHealthMax("targettarget");
if (UnitIsDead("targettarget") or UnitIsGhost("targettarget")) then -- This prevents negative health
targettargethealth = 0;
targettargethealthpercent = 0;
end
if (targettargethealthmax == 100) then
-- Begin Mobhealth support
if (mobhealthsupport == 1) then
if (MobHealthFrame) then
local index;
if UnitIsPlayer("targettarget") then
index = UnitName("targettarget");
else
index = UnitName("targettarget")..":"..UnitLevel("targettarget");
end
if ((MobHealthDB and MobHealthDB[index]) or (MobHealthPlayerDB and MobHealthPlayerDB[index])) then
local s, e;
local pts;
local pct;
if MobHealthDB[index] then
if (type(MobHealthDB[index]) ~= "string") then
Perl_Target_Target_HealthBarText:SetText(targettargethealth.."%");
end
s, e, pts, pct = string.find(MobHealthDB[index], "^(%d+)/(%d+)$");
else
if (type(MobHealthPlayerDB[index]) ~= "string") then
Perl_Target_Target_HealthBarText:SetText(targettargethealth.."%");
end
s, e, pts, pct = string.find(MobHealthPlayerDB[index], "^(%d+)/(%d+)$");
end
if (pts and pct) then
pts = pts + 0;
pct = pct + 0;
if (pct ~= 0) then
pointsPerPct = pts / pct;
else
pointsPerPct = 0;
end
end
local currentPct = UnitHealth("targettarget");
if (pointsPerPct > 0) then
Perl_Target_Target_HealthBarText:SetText(string.format("%d", (currentPct * pointsPerPct) + 0.5).."/"..string.format("%d", (100 * pointsPerPct) + 0.5)); -- Stored unit info from the DB
end
else
Perl_Target_Target_HealthBarText:SetText(targettargethealth.."%"); -- Unit not in MobHealth DB
end
-- End MobHealth Support
else
Perl_Target_Target_HealthBarText:SetText(targettargethealth.."%"); -- MobHealth isn't installed
end
else -- mobhealthsupport == 0
Perl_Target_Target_HealthBarText:SetText(targettargethealth.."%"); -- MobHealth support is disabled
end
else
Perl_Target_Target_HealthBarText:SetText(targettargethealth.."/"..targettargethealthmax); -- Self/Party/Raid member
end
mouseovertargettargethealthflag = 1;
end
function Perl_Target_Target_HealthHide()
local targettargethealthpercent = floor(UnitHealth("targettarget")/UnitHealthMax("targettarget")*100+0.5);
if (UnitIsDead("targettarget") or UnitIsGhost("targettarget")) then -- This prevents negative health
targettargethealthpercent = 0;
end
Perl_Target_Target_HealthBarText:SetText(targettargethealthpercent.."%");
mouseovertargettargethealthflag = 0;
end
function Perl_Target_Target_ManaShow()
local targettargetmana = UnitMana("targettarget");
local targettargetmanamax = UnitManaMax("targettarget");
if (UnitIsDead("targettarget") or UnitIsGhost("targettarget")) then -- This prevents negative mana
targettargetmana = 0;
end
if (UnitPowerType("targettarget") == 1) then
Perl_Target_Target_ManaBarText:SetText(targettargetmana);
else
Perl_Target_Target_ManaBarText:SetText(targettargetmana.."/"..targettargetmanamax);
end
Perl_Target_Target_ManaBarText:Show();
mouseovertargettargetmanaflag = 1;
end
function Perl_Target_Target_ManaHide()
Perl_Target_Target_ManaBarText:Hide();
mouseovertargettargetmanaflag = 0;
end
-- Target of Target End
-- Target of Target of Target Start
function Perl_Target_Target_Target_HealthShow()
local targettargettargethealth = UnitHealth("targettargettarget");
local targettargettargethealthmax = UnitHealthMax("targettargettarget");
if (UnitIsDead("targettargettarget") or UnitIsGhost("targettargettarget")) then -- This prevents negative health
targettargettargethealth = 0;
targettargettargethealthpercent = 0;
end
if (targettargettargethealthmax == 100) then
-- Begin Mobhealth support
if (mobhealthsupport == 1) then
if (MobHealthFrame) then
local index;
if UnitIsPlayer("targettargettarget") then
index = UnitName("targettargettarget");
else
index = UnitName("targettargettarget")..":"..UnitLevel("targettargettarget");
end
if ((MobHealthDB and MobHealthDB[index]) or (MobHealthPlayerDB and MobHealthPlayerDB[index])) then
local s, e;
local pts;
local pct;
if MobHealthDB[index] then
if (type(MobHealthDB[index]) ~= "string") then
Perl_Target_Target_Target_HealthBarText:SetText(targettargettargethealth.."%");
end
s, e, pts, pct = string.find(MobHealthDB[index], "^(%d+)/(%d+)$");
else
if (type(MobHealthPlayerDB[index]) ~= "string") then
Perl_Target_Target_Target_HealthBarText:SetText(targettargettargethealth.."%");
end
s, e, pts, pct = string.find(MobHealthPlayerDB[index], "^(%d+)/(%d+)$");
end
if (pts and pct) then
pts = pts + 0;
pct = pct + 0;
if (pct ~= 0) then
pointsPerPct = pts / pct;
else
pointsPerPct = 0;
end
end
local currentPct = UnitHealth("targettargettarget");
if (pointsPerPct > 0) then
Perl_Target_Target_Target_HealthBarText:SetText(string.format("%d", (currentPct * pointsPerPct) + 0.5).."/"..string.format("%d", (100 * pointsPerPct) + 0.5)); -- Stored unit info from the DB
end
else
Perl_Target_Target_Target_HealthBarText:SetText(targettargettargethealth.."%"); -- Unit not in MobHealth DB
end
-- End MobHealth Support
else
Perl_Target_Target_Target_HealthBarText:SetText(targettargettargethealth.."%"); -- MobHealth isn't installed
end
else -- mobhealthsupport == 0
Perl_Target_Target_Target_HealthBarText:SetText(targettargettargethealth.."%"); -- MobHealth support is disabled
end
else
Perl_Target_Target_Target_HealthBarText:SetText(targettargettargethealth.."/"..targettargettargethealthmax); -- Self/Party/Raid member
end
mouseovertargettargettargethealthflag = 1;
end
function Perl_Target_Target_Target_HealthHide()
local targettargettargethealthpercent = floor(UnitHealth("targettargettarget")/UnitHealthMax("targettargettarget")*100+0.5);
if (UnitIsDead("targettargettarget") or UnitIsGhost("targettargettarget")) then -- This prevents negative health
targettargettargethealthpercent = 0;
end
Perl_Target_Target_Target_HealthBarText:SetText(targettargettargethealthpercent.."%");
mouseovertargettargettargethealthflag = 0;
end
function Perl_Target_Target_Target_ManaShow()
local targettargettargetmana = UnitMana("targettargettarget");
local targettargettargetmanamax = UnitManaMax("targettargettarget");
if (UnitIsDead("targettargettarget") or UnitIsGhost("targettargettarget")) then -- This prevents negative mana
targettargettargetmana = 0;
end
if (UnitPowerType("targettargettarget") == 1) then
Perl_Target_Target_Target_ManaBarText:SetText(targettargettargetmana);
else
Perl_Target_Target_Target_ManaBarText:SetText(targettargettargetmana.."/"..targettargettargetmanamax);
end
Perl_Target_Target_Target_ManaBarText:Show();
mouseovertargettargettargetmanaflag = 1;
end
function Perl_Target_Target_Target_ManaHide()
Perl_Target_Target_Target_ManaBarText:Hide();
mouseovertargettargettargetmanaflag = 0;
end
-- Target of Target of Target End
--------------------------
-- GUI Config Functions --
--------------------------
function Perl_Target_Target_Set_ToT(newvalue)
totsupport = newvalue;
Perl_Target_Target_UpdateVars();
end
function Perl_Target_Target_Set_ToToT(newvalue)
tototsupport = newvalue;
Perl_Target_Target_UpdateVars();
end
function Perl_Target_Target_Set_Mode(newvalue)
alertmode = newvalue;
Perl_Target_Target_UpdateVars();
end
function Perl_Target_Target_Set_Sound_Alert(newvalue)
alertsound = newvalue;
Perl_Target_Target_UpdateVars();
end
function Perl_Target_Target_Set_Alert_Size(newvalue)
alertsize = newvalue;
Perl_Target_Target_UpdateVars();
end
function Perl_Target_Target_Set_MobHealth(newvalue)
mobhealthsupport = newvalue;
Perl_Target_Target_UpdateVars();
end
function Perl_Target_Target_Set_Lock(newvalue)
locked = newvalue;
Perl_Target_Target_UpdateVars();
end
function Perl_Target_Target_Set_Scale(number)
local unsavedscale;
if (number ~= nil) then
scale = (number / 100); -- convert the user input to a wow acceptable value
--DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Target of Target Display is now scaled to |cffffffff"..floor(scale * 100 + 0.5).."%|cffffff00."); -- only display if the user gave us a number
end
unsavedscale = 1 - UIParent:GetEffectiveScale() + scale; -- run it through the scaling formula introduced in 1.9
Perl_Target_Target_Frame:SetScale(unsavedscale);
Perl_Target_Target_Target_Frame:SetScale(unsavedscale);
Perl_Target_Target_UpdateVars();
end
function Perl_Target_Target_Set_Transparency(number)
if (number ~= nil) then
transparency = (number / 100); -- convert the user input to a wow acceptable value
end
Perl_Target_Target_Frame:SetAlpha(transparency);
Perl_Target_Target_Target_Frame:SetAlpha(transparency);
Perl_Target_Target_UpdateVars();
end
function Perl_Target_Target_Allign(button)
if (Perl_Target_Frame) then
local vartable = Perl_Target_GetVars(); -- Get the target frame settings
Perl_Target_Target_Frame:SetUserPlaced(1); -- This makes wow remember the changes if the frames have never been moved before
Perl_Target_Target_Target_Frame:SetUserPlaced(1);
if (button == 1) then
if (vartable["showportrait"] == 1) then
if (vartable["showcp"] == 1 or vartable["comboframedebuffs"] == 1) then
Perl_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_PortraitFrame, "TOPRIGHT", 17, 0);
Perl_Target_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_Target_Frame, "TOPRIGHT", -4, 0);
else
Perl_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_PortraitFrame, "TOPRIGHT", -4, 0);
Perl_Target_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_Target_Frame, "TOPRIGHT", -4, 0);
end
else
if (vartable["showcp"] == 1 or vartable["comboframedebuffs"] == 1) then
Perl_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_LevelFrame, "TOPRIGHT", 17, 0);
Perl_Target_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_Target_Frame, "TOPRIGHT", -4, 0);
else
Perl_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_LevelFrame, "TOPRIGHT", -4, 0);
Perl_Target_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_Target_Frame, "TOPRIGHT", -4, 0);
end
end
elseif (button == 2) then
if (vartable["showclassframe"] == 1 or vartable["showrareeliteframe"] == 1) then
Perl_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_NameFrame, "TOPLEFT", 0, 77);
Perl_Target_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_Target_Frame, "TOPRIGHT", 1, 0);
else
Perl_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_NameFrame, "TOPLEFT", 0, 57);
Perl_Target_Target_Target_Frame:SetPoint("TOPLEFT", Perl_Target_Target_Frame, "TOPRIGHT", 1, 0);
end
end
else
DEFAULT_CHAT_FRAME:AddMessage("This feature is disabled due to Perl_Target not being installed/enabled.");
end
end
------------------------------
-- Saved Variable Functions --
------------------------------
function Perl_Target_Target_GetVars()
locked = Perl_Target_Target_Config[UnitName("player")]["Locked"];
mobhealthsupport = Perl_Target_Target_Config[UnitName("player")]["MobHealthSupport"];
scale = Perl_Target_Target_Config[UnitName("player")]["Scale"];
totsupport = Perl_Target_Target_Config[UnitName("player")]["ToTSupport"];
tototsupport = Perl_Target_Target_Config[UnitName("player")]["ToToTSupport"];
transparency = Perl_Target_Target_Config[UnitName("player")]["Transparency"];
alertsound = Perl_Target_Target_Config[UnitName("player")]["AlertSound"];
alertmode = Perl_Target_Target_Config[UnitName("player")]["AlertMode"];
alertsize = Perl_Target_Target_Config[UnitName("player")]["AlertSize"];
if (locked == nil) then
locked = 0;
end
if (mobhealthsupport == nil) then
mobhealthsupport = 1;
end
if (scale == nil) then
scale = 1;
end
if (totsupport == nil) then
totsupport = 1;
end
if (tototsupport == nil) then
tototsupport = 1;
end
if (transparency == nil) then
transparency = 1;
end
if (alertsound == nil) then
alertsound = 0;
end
if (alertmode == nil) then
alertmode = 0;
end
if (alertsize == nil) then
alertsize = 0;
end
local vars = {
["locked"] = locked,
["mobhealthsupport"] = mobhealthsupport,
["scale"] = scale,
["totsupport"] = totsupport,
["tototsupport"] = tototsupport,
["transparency"] = transparency,
["alertsound"] = alertsound,
["alertmode"] = alertmode,
["alertsize"] = alertsize,
}
return vars;
end
function Perl_Target_Target_UpdateVars(vartable)
if (vartable ~= nil) then
-- Sanity checks in case you use a load from an old version
if (vartable["Global Settings"] ~= nil) then
if (vartable["Global Settings"]["Locked"] ~= nil) then
locked = vartable["Global Settings"]["Locked"];
else
locked = nil;
end
if (vartable["Global Settings"]["MobHealthSupport"] ~= nil) then
mobhealthsupport = vartable["Global Settings"]["MobHealthSupport"];
else
mobhealthsupport = nil;
end
if (vartable["Global Settings"]["Scale"] ~= nil) then
scale = vartable["Global Settings"]["Scale"];
else
scale = nil;
end
if (vartable["Global Settings"]["ToTSupport"] ~= nil) then
totsupport = vartable["Global Settings"]["ToTSupport"];
else
totsupport = nil;
end
if (vartable["Global Settings"]["ToToTSupport"] ~= nil) then
tototsupport = vartable["Global Settings"]["ToToTSupport"];
else
tototsupport = nil;
end
if (vartable["Global Settings"]["Transparency"] ~= nil) then
transparency = vartable["Global Settings"]["Transparency"];
else
transparency = nil;
end
if (vartable["Global Settings"]["AlertSound"] ~= nil) then
alertsound = vartable["Global Settings"]["AlertSound"];
else
alertsound = nil;
end
if (vartable["Global Settings"]["AlertMode"] ~= nil) then
alertmode = vartable["Global Settings"]["AlertMode"];
else
alertmode = nil;
end
if (vartable["Global Settings"]["AlertSize"] ~= nil) then
alertsize = vartable["Global Settings"]["AlertSize"];
else
alertsize = nil;
end
end
-- Set the new values if any new values were found, same defaults as above
if (locked == nil) then
locked = 0;
end
if (mobhealthsupport == nil) then
mobhealthsupport = 1;
end
if (scale == nil) then
scale = 1;
end
if (totsupport == nil) then
totsupport = 1;
end
if (tototsupport == nil) then
tototsupport = 1;
end
if (transparency == nil) then
transparency = 1;
end
if (alertsound == nil) then
alertsound = 0;
end
if (alertmode == nil) then
alertmode = 0;
end
if (alertsize == nil) then
alertsize = 0;
end
-- Call any code we need to activate them
Perl_Target_Target_Set_Scale();
Perl_Target_Target_Set_Transparency();
end
Perl_Target_Target_Config[UnitName("player")] = {
["Locked"] = locked,
["MobHealthSupport"] = mobhealthsupport,
["Scale"] = scale,
["ToTSupport"] = totsupport,
["ToToTSupport"] = tototsupport,
["Transparency"] = transparency,
["AlertSound"] = alertsound,
["AlertMode"] = alertmode,
["AlertSize"] = alertsize,
};
end
--------------------
-- Click Handlers --
--------------------
-- Target of Target Start
function Perl_TargetTargetDropDown_OnLoad()
UIDropDownMenu_Initialize(this, Perl_TargetTargetDropDown_Initialize, "MENU");
end
function Perl_TargetTargetDropDown_Initialize()
local menu = nil;
if (UnitIsEnemy("targettarget", "player")) then
return;
end
if (UnitIsUnit("targettarget", "player")) then
menu = "SELF";
elseif (UnitIsUnit("targettarget", "pet")) then
menu = "PET";
elseif (UnitIsPlayer("targettarget")) then
if (UnitInParty("targettarget")) then
menu = "PARTY";
else
menu = "PLAYER";
end
end
if (menu) then
UnitPopup_ShowMenu(Perl_Target_Target_DropDown, menu, "targettarget");
end
end
function Perl_Target_Target_MouseClick(button)
if (SpellIsTargeting() and button == "RightButton") then
SpellStopTargeting();
return;
end
if (button == "LeftButton") then
if (SpellIsTargeting()) then
SpellTargetUnit("targettarget");
elseif (CursorHasItem()) then
DropItemOnUnit("targettarget");
else
TargetUnit("targettarget");
end
end
end
function Perl_Target_Target_MouseDown(button)
if (button == "LeftButton" and locked == 0) then
Perl_Target_Target_Frame:StartMoving();
end
end
function Perl_Target_Target_MouseUp(button)
if (button == "RightButton") then
if (not (IsAltKeyDown() or IsControlKeyDown() or IsShiftKeyDown())) then -- if alt, ctrl, or shift ARE NOT held, show the menu
ToggleDropDownMenu(1, nil, Perl_Target_Target_DropDown, "Perl_Target_Target_NameFrame", 40, 0);
end
end
Perl_Target_Target_Frame:StopMovingOrSizing();
end
-- Target of Target End
-- Target of Target of Target Start
function Perl_TargetTargetTargetDropDown_OnLoad()
UIDropDownMenu_Initialize(this, Perl_TargetTargetTargetDropDown_Initialize, "MENU");
end
function Perl_TargetTargetTargetDropDown_Initialize()
local menu = nil;
if (UnitIsEnemy("targettargettarget", "player")) then
return;
end
if (UnitIsUnit("targettargettarget", "player")) then
menu = "SELF";
elseif (UnitIsUnit("targettargettarget", "pet")) then
menu = "PET";
elseif (UnitIsPlayer("targettargettarget")) then
if (UnitInParty("targettargettarget")) then
menu = "PARTY";
else
menu = "PLAYER";
end
end
if (menu) then
UnitPopup_ShowMenu(Perl_Target_Target_Target_DropDown, menu, "targettargettarget");
end
end
function Perl_Target_Target_Target_MouseClick(button)
if (SpellIsTargeting() and button == "RightButton") then
SpellStopTargeting();
return;
end
if (button == "LeftButton") then
if (SpellIsTargeting()) then
SpellTargetUnit("targettargettarget");
elseif (CursorHasItem()) then
DropItemOnUnit("targettargettarget");
else
TargetUnit("targettargettarget");
end
end
end
function Perl_Target_Target_Target_MouseDown(button)
if (button == "LeftButton" and locked == 0) then
Perl_Target_Target_Target_Frame:StartMoving();
end
end
function Perl_Target_Target_Target_MouseUp(button)
if (button == "RightButton") then
if (not (IsAltKeyDown() or IsControlKeyDown() or IsShiftKeyDown())) then -- if alt, ctrl, or shift ARE NOT held, show the menu
ToggleDropDownMenu(1, nil, Perl_Target_Target_Target_DropDown, "Perl_Target_Target_Target_NameFrame", 40, 0);
end
end
Perl_Target_Target_Target_Frame:StopMovingOrSizing();
end
-- Target of Target of Target End
----------------------------
-- Big Warning Text Frame --
----------------------------
-- Fade in/out frame stuff
-- Ripped/modified from FadingFrame from Blizzard
-- Ripped from AggroAlert 1.5
function Perl_Target_Target_BigWarning_OnLoad()
Perl_Target_Target_BigWarning:Hide();
end
function Perl_Target_Target_BigWarning_Show(message)
startTime = GetTime();
if (message) then
Perl_Target_Target_BigWarning_Text:SetText(message);
end
Perl_Target_Target_BigWarning:Show();
end
function Perl_Target_Target_BigWarning_OnUpdate()
local elapsed = GetTime() - startTime;
local fadeInTime = 0.2;
if (elapsed < fadeInTime) then
local alpha = (elapsed / fadeInTime);
Perl_Target_Target_BigWarning:SetAlpha(alpha);
return;
end
local holdTime = 2.5;
if (elapsed < (fadeInTime + holdTime)) then
Perl_Target_Target_BigWarning:SetAlpha(1.0);
return;
end
local fadeOutTime = 2;
if (elapsed < (fadeInTime + holdTime + fadeOutTime)) then
local alpha = 1.0 - ((elapsed - holdTime - fadeInTime) / fadeOutTime);
Perl_Target_Target_BigWarning:SetAlpha(alpha);
return;
end
Perl_Target_Target_BigWarning:Hide();
end
-------------
-- Tooltip --
-------------
function Perl_Target_Target_Tip()
UnitFrame_Initialize("targettarget")
end
function Perl_Target_Target_Target_Tip()
UnitFrame_Initialize("targettargettarget")
end
function UnitFrame_Initialize(unit) -- Hopefully this doesn't break any mods
this.unit = unit;
end
----------------------
-- myAddOns Support --
----------------------
function Perl_Target_Target_myAddOns_Support()
-- Register the addon in myAddOns
if (myAddOnsFrame_Register) then
local Perl_Target_Target_myAddOns_Details = {
name = "Perl_Target_Target",
version = "Version 0.58",
releaseDate = "April 15, 2006",
author = "Global",
email = "global@g-ball.com",
website = "http://www.curse-gaming.com/mod.php?addid=2257",
category = MYADDONS_CATEGORY_OTHERS
};
Perl_Target_Target_myAddOns_Help = {};
Perl_Target_Target_myAddOns_Help[1] = "/perl";
myAddOnsFrame_Register(Perl_Target_Target_myAddOns_Details, Perl_Target_Target_myAddOns_Help);
end
end
Generated by GNU Enscript 1.6.5.90.