vanilla-wow-addons – Rev 1
?pathlinks?
---------------
-- Variables --
---------------
Perl_Player_Config = {};
-- Default Saved Variables (also set in Perl_Player_GetVars)
local locked = 0; -- unlocked by default
local xpbarstate = 1; -- show default xp bar by default
local compactmode = 0; -- compact mode is disabled by default
local showraidgroup = 1; -- show the raid group number by default when in raids
local scale = 1; -- default scale
local healermode = 0; -- nurfed unit frame style
local transparency = 1; -- transparency for frames
local showportrait = 0; -- portrait is hidden by default
local compactpercent = 0; -- percents are not shown in compact mode by default
local threedportrait = 0; -- 3d portraits are off by default
local portraitcombattext = 1; -- Combat text is enabled by default on the portrait frame
local showdruidbar = 1; -- Druid Bar support is enabled by default
-- Default Local Variables
local InCombat = 0; -- used to track if the player is in combat and if the icon should be displayed
local Initialized = nil; -- waiting to be initialized
local mouseoverhealthflag = 0; -- is the mouse over the health bar for healer mode?
local mouseovermanaflag = 0; -- is the mouse over the mana bar for healer mode?
-- Variables for position of the class icon texture.
local Perl_Player_ClassPosRight = {};
local Perl_Player_ClassPosLeft = {};
local Perl_Player_ClassPosTop = {};
local Perl_Player_ClassPosBottom = {};
----------------------
-- Loading Function --
----------------------
function Perl_Player_OnLoad()
-- Combat Text
CombatFeedback_Initialize(Perl_Player_HitIndicator, 30);
-- Events
this:RegisterEvent("ADDON_LOADED");
this:RegisterEvent("PARTY_LEADER_CHANGED");
this:RegisterEvent("PARTY_LOOT_METHOD_CHANGED");
this:RegisterEvent("PARTY_MEMBERS_CHANGED");
this:RegisterEvent("PLAYER_ENTERING_WORLD");
this:RegisterEvent("PLAYER_REGEN_DISABLED");
this:RegisterEvent("PLAYER_REGEN_ENABLED");
this:RegisterEvent("PLAYER_UPDATE_RESTING");
this:RegisterEvent("PLAYER_XP_UPDATE");
this:RegisterEvent("RAID_ROSTER_UPDATE");
this:RegisterEvent("UNIT_COMBAT");
this:RegisterEvent("UNIT_DISPLAYPOWER");
this:RegisterEvent("UNIT_ENERGY");
this:RegisterEvent("UNIT_HEALTH");
this:RegisterEvent("UNIT_LEVEL");
this:RegisterEvent("UNIT_MANA");
this:RegisterEvent("UNIT_MAXENERGY");
this:RegisterEvent("UNIT_MAXHEALTH");
this:RegisterEvent("UNIT_MAXMANA");
this:RegisterEvent("UNIT_MAXRAGE");
this:RegisterEvent("UNIT_MODEL_CHANGED");
this:RegisterEvent("UNIT_PORTRAIT_UPDATE");
this:RegisterEvent("UNIT_PVP_UPDATE");
this:RegisterEvent("UNIT_RAGE");
this:RegisterEvent("UNIT_SPELLMISS");
this:RegisterEvent("UPDATE_FACTION");
this:RegisterEvent("VARIABLES_LOADED");
-- Button Click Overlays (in order of occurrence in XML)
Perl_Player_Name_CastClickOverlay:SetFrameLevel(Perl_Player_Name:GetFrameLevel() + 2);
Perl_Player_RaidGroupNumberFrame_CastClickOverlay:SetFrameLevel(Perl_Player_RaidGroupNumberFrame:GetFrameLevel() + 1);
Perl_Player_LevelFrame_CastClickOverlay:SetFrameLevel(Perl_Player_LevelFrame:GetFrameLevel() + 1);
Perl_Player_PortraitFrame_CastClickOverlay:SetFrameLevel(Perl_Player_PortraitFrame:GetFrameLevel() + 2);
Perl_Player_StatsFrame_CastClickOverlay:SetFrameLevel(Perl_Player_StatsFrame:GetFrameLevel() + 1);
Perl_Player_HealthBar_CastClickOverlay:SetFrameLevel(Perl_Player_StatsFrame:GetFrameLevel() + 2);
Perl_Player_ManaBar_CastClickOverlay:SetFrameLevel(Perl_Player_StatsFrame:GetFrameLevel() + 2);
Perl_Player_DruidBar_CastClickOverlay:SetFrameLevel(Perl_Player_StatsFrame:GetFrameLevel() + 2);
Perl_Player_XPBar_CastClickOverlay:SetFrameLevel(Perl_Player_StatsFrame:GetFrameLevel() + 2);
if (DEFAULT_CHAT_FRAME) then
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Perl Classic: Player loaded successfully.");
end
end
-------------------
-- Event Handler --
-------------------
function Perl_Player_OnEvent(event)
if (event == "UNIT_HEALTH" or event == "UNIT_MAXHEALTH") then
if (arg1 == "player") then
Perl_Player_Update_Health(); -- Update health values
end
return;
elseif ((event == "UNIT_ENERGY") or (event == "UNIT_MANA") or (event == "UNIT_RAGE") or (event == "UNIT_MAXMANA") or (event == "UNIT_MAXENERGY") or (event == "UNIT_MAXRAGE")) then
if (arg1 == "player") then
Perl_Player_Update_Mana(); -- Update energy/mana/rage values
end
return;
elseif (event == "UNIT_DISPLAYPOWER") then
if (arg1 == "player") then
Perl_Player_Update_Mana_Bar(); -- What type of energy are we using now?
Perl_Player_Update_Mana(); -- Update the energy info immediately
end
return;
elseif (event == "UNIT_COMBAT") then
if (arg1 == "player") then
CombatFeedback_OnCombatEvent(arg2, arg3, arg4, arg5);
end
return;
elseif (event == "UNIT_SPELLMISS") then
if (arg1 == "player") then
CombatFeedback_OnSpellMissEvent(arg2);
end
return;
elseif ((event == "PLAYER_REGEN_DISABLED") or (event == "PLAYER_REGEN_ENABLED") or (event == "PLAYER_UPDATE_RESTING")) then
Perl_Player_Update_Combat_Status(event); -- Are we fighting, resting, or none?
return;
elseif (event == "PLAYER_XP_UPDATE") then
if (xpbarstate == 1) then
Perl_Player_Update_Experience(); -- Set the experience bar info
end
return;
elseif (event == "UPDATE_FACTION") then
if (xpbarstate == 4) then
Perl_Player_Update_Reputation(); -- Set faction info
end
return;
elseif (event == "UNIT_PVP_UPDATE") then
Perl_Player_Update_PvP_Status(); -- Is the character PvP flagged?
return;
elseif (event == "UNIT_LEVEL") then
if (arg1 == "player") then
Perl_Player_LevelFrame_LevelBarText:SetText(UnitLevel("player")); -- Set the player's level
end
return;
elseif (event == "RAID_ROSTER_UPDATE") then
Perl_Player_Update_Raid_Group_Number(); -- What raid group number are we in?
return;
elseif (event == "PARTY_LEADER_CHANGED" or event == "PARTY_MEMBERS_CHANGED") then
Perl_Player_Update_Leader(); -- Are we the party leader?
return;
elseif (event == "PARTY_LOOT_METHOD_CHANGED") then
Perl_Player_Update_Loot_Method();
return;
elseif (event == "UNIT_PORTRAIT_UPDATE" or event == "UNIT_MODEL_CHANGED") then
if (arg1 == "player") then
Perl_Player_Update_Portrait();
end
return;
elseif (event == "VARIABLES_LOADED") or (event=="PLAYER_ENTERING_WORLD") then
Perl_Player_Initialize();
InCombat = 0; -- You can't be fighting if you're zoning, and no event is sent, force it to no combat.
Perl_Player_Update_Once();
return;
elseif (event == "ADDON_LOADED") then
if (arg1 == "Perl_Player") then
Perl_Player_myAddOns_Support();
end
return;
else
return;
end
end
-------------------------------
-- Loading Settings Function --
-------------------------------
function Perl_Player_Initialize()
-- Check if we loaded the mod already.
if (Initialized) then
Perl_Player_Set_Scale();
return;
end
-- Check if a previous exists, if not, enable by default.
if (type(Perl_Player_Config[UnitName("player")]) == "table") then
Perl_Player_GetVars();
else
Perl_Player_UpdateVars();
end
-- Major config options.
Perl_Player_Initialize_Frame_Color();
Perl_Player_Set_Localized_ClassIcons();
-- Unregister the Blizzard frames via the 1.8 function
PlayerFrame:UnregisterAllEvents();
PlayerFrameHealthBar:UnregisterAllEvents();
PlayerFrameManaBar:UnregisterAllEvents();
Perl_Player_Frame:Show();
Initialized = 1;
end
function Perl_Player_Initialize_Frame_Color()
Perl_Player_StatsFrame:SetBackdropColor(0, 0, 0, 1);
Perl_Player_StatsFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
Perl_Player_LevelFrame:SetBackdropColor(0, 0, 0, 1);
Perl_Player_LevelFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
Perl_Player_NameFrame:SetBackdropColor(0, 0, 0, 1);
Perl_Player_NameFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
Perl_Player_RaidGroupNumberFrame:SetBackdropColor(0, 0, 0, 1);
Perl_Player_RaidGroupNumberFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
Perl_Player_PortraitFrame:SetBackdropColor(0, 0, 0, 1);
Perl_Player_PortraitFrame:SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
Perl_Player_HealthBarText:SetTextColor(1, 1, 1, 1);
Perl_Player_ManaBarText:SetTextColor(1, 1, 1, 1);
Perl_Player_RaidGroupNumberBarText:SetTextColor(1, 1, 1);
end
----------------------
-- Update Functions --
----------------------
function Perl_Player_Update_Once()
local PlayerClass = UnitClass("player");
PlayerFrame:Hide(); -- Hide default frame
Perl_Player_Set_Scale(); -- Set the scale
Perl_Player_Set_Transparency(); -- Set the transparency
Perl_Player_NameBarText:SetText(UnitName("player")); -- Set the player's name
Perl_Player_Update_Portrait(); -- Set the player's portrait
Perl_Player_Update_PvP_Status(); -- Is the character PvP flagged?
Perl_Player_ClassTexture:SetTexCoord(Perl_Player_ClassPosRight[PlayerClass], Perl_Player_ClassPosLeft[PlayerClass], Perl_Player_ClassPosTop[PlayerClass], Perl_Player_ClassPosBottom[PlayerClass]); -- Set the player's class icon
Perl_Player_Set_Text_Positions(); -- Align the text according to compact and healer mode
Perl_Player_Update_Health(); -- Set the player's health on load or toggle
Perl_Player_Update_Mana(); -- Set the player's mana/energy on load or toggle
Perl_Player_Update_Mana_Bar(); -- Set the type of mana used
Perl_Player_LevelFrame_LevelBarText:SetText(UnitLevel("player")); -- Set the player's level
Perl_Player_XPBar_Display(xpbarstate); -- Set the xp bar mode and update the experience if needed
Perl_Player_Update_Raid_Group_Number(); -- Are we in a raid at login?
Perl_Player_Update_Leader(); -- Are we the party leader?
Perl_Player_Update_Loot_Method(); -- Are we the master looter?
Perl_Player_Update_Combat_Status(); -- Are we already fighting or resting?
Perl_Player_Set_CompactMode(); -- Are we using compact mode?
end
function Perl_Player_Update_Health()
local playerhealth = UnitHealth("player");
local playerhealthmax = UnitHealthMax("player");
local playerhealthpercent = floor(playerhealth/playerhealthmax*100+0.5);
if (UnitIsDead("player") or UnitIsGhost("player")) then -- This prevents negative health
playerhealth = 0;
playerhealthpercent = 0;
end
Perl_Player_HealthBar:SetMinMaxValues(0, playerhealthmax);
Perl_Player_HealthBar:SetValue(playerhealth);
if (PCUF_COLORHEALTH == 1) then
if ((playerhealthpercent <= 100) and (playerhealthpercent > 75)) then
Perl_Player_HealthBar:SetStatusBarColor(0, 0.8, 0);
Perl_Player_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
elseif ((playerhealthpercent <= 75) and (playerhealthpercent > 50)) then
Perl_Player_HealthBar:SetStatusBarColor(1, 1, 0);
Perl_Player_HealthBarBG:SetStatusBarColor(1, 1, 0, 0.25);
elseif ((playerhealthpercent <= 50) and (playerhealthpercent > 25)) then
Perl_Player_HealthBar:SetStatusBarColor(1, 0.5, 0);
Perl_Player_HealthBarBG:SetStatusBarColor(1, 0.5, 0, 0.25);
else
Perl_Player_HealthBar:SetStatusBarColor(1, 0, 0);
Perl_Player_HealthBarBG:SetStatusBarColor(1, 0, 0, 0.25);
end
else
Perl_Player_HealthBar:SetStatusBarColor(0, 0.8, 0);
Perl_Player_HealthBarBG:SetStatusBarColor(0, 0.8, 0, 0.25);
end
if (compactmode == 0) then
if (healermode == 1) then -- compact mode off and healer mode on
Perl_Player_HealthBarText:SetText("-"..playerhealthmax - playerhealth);
if (mouseoverhealthflag == 0) then
Perl_Player_HealthBarTextPercent:SetText();
else
Perl_Player_HealthBarTextPercent:SetText(playerhealth.."/"..playerhealthmax);
end
else -- compact mode off and healer mode off
Perl_Player_HealthBarText:SetText(playerhealth.."/"..playerhealthmax);
Perl_Player_HealthBarTextPercent:SetText(playerhealthpercent .. "%");
end
Perl_Player_HealthBarTextCompactPercent:SetText(); -- Hide the compact mode percent text in full mode
else
if (healermode == 1) then -- compact mode on and healer mode on
Perl_Player_HealthBarText:SetText("-"..playerhealthmax - playerhealth);
if (mouseoverhealthflag == 0) then
Perl_Player_HealthBarTextPercent:SetText();
else
Perl_Player_HealthBarTextPercent:SetText(playerhealth.."/"..playerhealthmax);
end
else -- compact mode on and healer mode off
Perl_Player_HealthBarText:SetText();
Perl_Player_HealthBarTextPercent:SetText(playerhealth.."/"..playerhealthmax);
end
if (compactpercent == 1) then
Perl_Player_HealthBarTextCompactPercent:SetText(playerhealthpercent.."%");
else
Perl_Player_HealthBarTextCompactPercent:SetText();
end
end
end
function Perl_Player_Update_Mana()
local playermana = UnitMana("player");
local playermanamax = UnitManaMax("player");
local playermanapercent = floor(playermana/playermanamax*100+0.5);
if (UnitIsDead("player") or UnitIsGhost("player")) then -- This prevents negative mana
playermana = 0;
playermanapercent = 0;
end
Perl_Player_ManaBar:SetMinMaxValues(0, playermanamax);
Perl_Player_ManaBar:SetValue(playermana);
if (compactmode == 0) then
if (healermode == 1) then
if (mouseovermanaflag == 0) then
Perl_Player_ManaBarText:SetText();
Perl_Player_ManaBarTextPercent:SetText();
else
if (UnitPowerType("player") == 1) then
Perl_Player_ManaBarTextPercent:SetText(playermana);
else
Perl_Player_ManaBarTextPercent:SetText(playermana.."/"..playermanamax);
end
end
else
Perl_Player_ManaBarText:SetText(playermana.."/"..playermanamax);
if (UnitPowerType("player") == 1) then
Perl_Player_ManaBarTextPercent:SetText(playermana);
else
Perl_Player_ManaBarTextPercent:SetText(playermanapercent.."%");
end
end
Perl_Player_ManaBarTextCompactPercent:SetText(); -- Hide the compact mode percent text in full mode
else
if (healermode == 1) then
if (mouseovermanaflag == 0) then
Perl_Player_ManaBarText:SetText();
Perl_Player_ManaBarTextPercent:SetText();
else
if (UnitPowerType("player") == 1) then
Perl_Player_ManaBarTextPercent:SetText(playermana);
else
Perl_Player_ManaBarTextPercent:SetText(playermana.."/"..playermanamax);
end
end
else
Perl_Player_ManaBarText:SetText();
if (UnitPowerType("player") == 1) then
Perl_Player_ManaBarTextPercent:SetText(playermana);
else
Perl_Player_ManaBarTextPercent:SetText(playermana.."/"..playermanamax);
end
end
if (compactpercent == 1) then
Perl_Player_ManaBarTextCompactPercent:SetText(playermanapercent.."%");
else
Perl_Player_ManaBarTextCompactPercent:SetText();
end
end
if (showdruidbar == 1) then
if (DruidBarKey and (UnitClass("player") == PERL_LOCALIZED_DRUID)) then
if (UnitPowerType("player") > 0) then
-- Show the bars and set the text and reposition the original mana bar below the druid bar
local playerdruidbarmana = floor(DruidBarKey.keepthemana);
local playerdruidbarmanamax = DruidBarKey.maxmana;
local playerdruidbarmanapercent = floor(playerdruidbarmana/playerdruidbarmanamax*100+0.5);
if (playerdruidbarmanapercent == 100) then -- This is to ensure the value isn't 1 or 2 mana under max when 100%
playerdruidbarmana = playerdruidbarmanamax;
end
Perl_Player_DruidBar:SetMinMaxValues(0, playerdruidbarmanamax);
Perl_Player_DruidBar:SetValue(playerdruidbarmana);
-- Show the bar and adjust the stats frame
Perl_Player_DruidBar:Show();
Perl_Player_DruidBarBG:Show();
Perl_Player_DruidBar_CastClickOverlay:Show();
Perl_Player_ManaBar:SetPoint("TOP", "Perl_Player_DruidBar", "BOTTOM", 0, -2);
if (xpbarstate == 3) then
Perl_Player_StatsFrame:SetHeight(54); -- Experience Bar is hidden
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(54);
else
Perl_Player_StatsFrame:SetHeight(66); -- Experience Bar is shown
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(66);
end
-- Display the needed text
if (compactmode == 0) then
if (healermode == 1) then
if (mouseovermanaflag == 0) then
Perl_Player_DruidBarText:SetText();
Perl_Player_DruidBarTextPercent:SetText();
else
Perl_Player_DruidBarTextPercent:SetText(playerdruidbarmana.."/"..playerdruidbarmanamax);
end
else
Perl_Player_DruidBarText:SetText(playerdruidbarmana.."/"..playerdruidbarmanamax);
Perl_Player_DruidBarTextPercent:SetText(playerdruidbarmanapercent.."%");
end
Perl_Player_DruidBarTextCompactPercent:SetText(); -- Hide the compact mode percent text in full mode
else
if (healermode == 1) then
if (mouseovermanaflag == 0) then
Perl_Player_DruidBarText:SetText();
Perl_Player_DruidBarTextPercent:SetText();
else
Perl_Player_DruidBarTextPercent:SetText(playerdruidbarmana.."/"..playerdruidbarmanamax);
end
else
Perl_Player_DruidBarText:SetText();
Perl_Player_DruidBarTextPercent:SetText(playerdruidbarmana.."/"..playerdruidbarmanamax);
end
if (compactpercent == 1) then
Perl_Player_DruidBarTextCompactPercent:SetText(playerdruidbarmanapercent.."%");
else
Perl_Player_DruidBarTextCompactPercent:SetText();
end
end
else
-- Hide it all (bars and text)
Perl_Player_DruidBarText:SetText();
Perl_Player_DruidBarTextPercent:SetText();
Perl_Player_DruidBarTextCompactPercent:SetText();
Perl_Player_DruidBar:Hide();
Perl_Player_DruidBarBG:Hide();
Perl_Player_DruidBar_CastClickOverlay:Hide();
Perl_Player_ManaBar:SetPoint("TOP", "Perl_Player_HealthBar", "BOTTOM", 0, -2);
if (xpbarstate == 3) then
Perl_Player_StatsFrame:SetHeight(42); -- Experience Bar is hidden
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(42);
else
Perl_Player_StatsFrame:SetHeight(54); -- Experience Bar is shown
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(54);
end
end
else
-- Hide it all (bars and text)
Perl_Player_DruidBarText:SetText();
Perl_Player_DruidBarTextPercent:SetText();
Perl_Player_DruidBarTextCompactPercent:SetText();
Perl_Player_DruidBar:Hide();
Perl_Player_DruidBarBG:Hide();
Perl_Player_DruidBar_CastClickOverlay:Hide();
Perl_Player_ManaBar:SetPoint("TOP", "Perl_Player_HealthBar", "BOTTOM", 0, -2);
if (xpbarstate == 3) then
Perl_Player_StatsFrame:SetHeight(42); -- Experience Bar is hidden
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(42);
else
Perl_Player_StatsFrame:SetHeight(54); -- Experience Bar is shown
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(54);
end
end
else
-- Hide it all (bars and text)
Perl_Player_DruidBarText:SetText();
Perl_Player_DruidBarTextPercent:SetText();
Perl_Player_DruidBarTextCompactPercent:SetText();
Perl_Player_DruidBar:Hide();
Perl_Player_DruidBarBG:Hide();
Perl_Player_DruidBar_CastClickOverlay:Hide();
Perl_Player_ManaBar:SetPoint("TOP", "Perl_Player_HealthBar", "BOTTOM", 0, -2);
if (xpbarstate == 3) then
Perl_Player_StatsFrame:SetHeight(42); -- Experience Bar is hidden
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(42);
else
Perl_Player_StatsFrame:SetHeight(54); -- Experience Bar is shown
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(54);
end
end
end
function Perl_Player_Update_Mana_Bar()
local playerpower = UnitPowerType("player");
-- Set mana bar color
if (playerpower == 0) then
Perl_Player_ManaBar:SetStatusBarColor(0, 0, 1, 1);
Perl_Player_ManaBarBG:SetStatusBarColor(0, 0, 1, 0.25);
elseif (playerpower == 1) then
Perl_Player_ManaBar:SetStatusBarColor(1, 0, 0, 1);
Perl_Player_ManaBarBG:SetStatusBarColor(1, 0, 0, 0.25);
elseif (playerpower == 3) then
Perl_Player_ManaBar:SetStatusBarColor(1, 1, 0, 1);
Perl_Player_ManaBarBG:SetStatusBarColor(1, 1, 0, 0.25);
end
end
function Perl_Player_Update_Experience()
if (UnitLevel("player") ~= 70) then
-- XP Bar stuff
local playerxp = UnitXP("player");
local playerxpmax = UnitXPMax("player");
local playerxprest = GetXPExhaustion();
Perl_Player_XPBar:SetMinMaxValues(0, playerxpmax);
Perl_Player_XPRestBar:SetMinMaxValues(0, playerxpmax);
Perl_Player_XPBar:SetValue(playerxp);
-- Set xp text
local xptext = playerxp.."/"..playerxpmax;
local xptextpercent = floor(playerxp/playerxpmax*100+0.5);
if (playerxprest) then
xptext = xptext .."(+"..(playerxprest)..")";
Perl_Player_XPBar:SetStatusBarColor(0, 0.6, 0.6, 1);
Perl_Player_XPRestBar:SetStatusBarColor(0, 0.6, 0.6, 0.5);
Perl_Player_XPBarBG:SetStatusBarColor(0, 0.6, 0.6, 0.25);
Perl_Player_XPRestBar:SetValue(playerxp + playerxprest);
else
Perl_Player_XPBar:SetStatusBarColor(0, 0.6, 0.6, 1);
Perl_Player_XPRestBar:SetStatusBarColor(0, 0.6, 0.6, 0.5);
Perl_Player_XPBarBG:SetStatusBarColor(0, 0.6, 0.6, 0.25);
Perl_Player_XPRestBar:SetValue(playerxp);
end
Perl_Player_XPBarText:SetText(xptextpercent.."%");
else
Perl_Player_XPBar:SetMinMaxValues(0, 1);
Perl_Player_XPRestBar:SetMinMaxValues(0, 1);
Perl_Player_XPBar:SetValue(1);
Perl_Player_XPRestBar:SetValue(1);
Perl_Player_XPBar:SetStatusBarColor(0, 0.6, 0.6, 1);
Perl_Player_XPRestBar:SetStatusBarColor(0, 0.6, 0.6, 0.5);
Perl_Player_XPBarBG:SetStatusBarColor(0, 0.6, 0.6, 0.25);
Perl_Player_XPBarText:SetText("Level 70");
end
end
function Perl_Player_Update_Reputation()
local name, reaction, min, max, value = GetWatchedFactionInfo();
if (name) then
value = value - min;
max = max - min;
min = 0;
Perl_Player_XPBar:SetMinMaxValues(min, max);
Perl_Player_XPRestBar:SetMinMaxValues(min, max);
Perl_Player_XPBar:SetValue(value);
Perl_Player_XPRestBar:SetValue(value);
local color = FACTION_BAR_COLORS[reaction];
Perl_Player_XPBar:SetStatusBarColor(color.r, color.g, color.b, 1);
Perl_Player_XPRestBar:SetStatusBarColor(color.r, color.g, color.b, 0.5);
Perl_Player_XPBarBG:SetStatusBarColor(color.r, color.g, color.b, 0.25);
Perl_Player_XPBarText:SetText(name);
else
Perl_Player_XPBar:SetMinMaxValues(0, 1);
Perl_Player_XPRestBar:SetMinMaxValues(0, 1);
Perl_Player_XPBar:SetValue(1);
Perl_Player_XPRestBar:SetValue(1);
Perl_Player_XPBar:SetStatusBarColor(0.9, 0.7, 0, 1);
Perl_Player_XPRestBar:SetStatusBarColor(0.9, 0.7, 0, 0.5);
Perl_Player_XPBarBG:SetStatusBarColor(0.9, 0.7, 0, 0.25);
Perl_Player_XPBarText:SetText("Select a Reputation");
end
end
function Perl_Player_Update_Combat_Status(event)
-- Rest/Combat Status Icon
if (event == "PLAYER_REGEN_DISABLED") then
InCombat = 1;
Perl_Player_ActivityStatus:SetTexCoord(0.5, 1.0, 0.0, 0.5);
Perl_Player_ActivityStatus:Show();
elseif (event == "PLAYER_REGEN_ENABLED") then
InCombat = 0;
Perl_Player_ActivityStatus:Hide();
elseif (IsResting()) then
if (InCombat == 1) then
return;
else
Perl_Player_ActivityStatus:SetTexCoord(0, 0.5, 0.0, 0.5);
Perl_Player_ActivityStatus:Show();
end
else
if (InCombat == 1) then
return;
else
Perl_Player_ActivityStatus:Hide();
end
end
end
function Perl_Player_Update_Raid_Group_Number() -- taken from 1.8
if (showraidgroup == 1) then
Perl_Player_RaidGroupNumberFrame:Hide();
local name, rank, subgroup;
if (GetNumRaidMembers() == 0) then
Perl_Player_RaidGroupNumberFrame:Hide();
Perl_Player_MasterIcon:Hide(); -- This was added to correctly hide the master loot icon after leaving a party/raid
return;
end
local numRaidMembers = GetNumRaidMembers();
for i=1, MAX_RAID_MEMBERS do
if (i <= numRaidMembers) then
name, rank, subgroup = GetRaidRosterInfo(i);
-- Set the player's group number indicator
if (name == UnitName("player")) then
Perl_Player_RaidGroupNumberBarText:SetText("Group "..subgroup);
Perl_Player_RaidGroupNumberFrame:Show();
return;
end
end
end
else
Perl_Player_RaidGroupNumberFrame:Hide();
end
end
function Perl_Player_Update_Leader()
if (IsPartyLeader()) then
Perl_Player_LeaderIcon:Show();
else
Perl_Player_LeaderIcon:Hide();
end
end
function Perl_Player_Update_Loot_Method()
local lootMethod, lootMaster;
lootMethod, lootMaster = GetLootMethod();
if (lootMaster == 0) then
Perl_Player_MasterIcon:Show();
else
Perl_Player_MasterIcon:Hide();
end
end
function Perl_Player_Update_PvP_Status()
if (UnitIsPVP("player")) then
local factionGroup = UnitFactionGroup("player");
Perl_Player_NameBarText:SetTextColor(0,1,0);
Perl_Player_PVPStatus:SetTexture("Interface\\TargetingFrame\\UI-PVP-"..factionGroup);
Perl_Player_PVPStatus:Show();
else
Perl_Player_NameBarText:SetTextColor(0.5,0.5,1);
Perl_Player_PVPStatus:Hide();
end
end
function Perl_Player_Set_CompactMode()
if (compactmode == 0) then
Perl_Player_Update_Health();
Perl_Player_Update_Mana();
Perl_Player_XPBar:SetWidth(220);
Perl_Player_XPRestBar:SetWidth(220);
Perl_Player_XPBarBG:SetWidth(220);
Perl_Player_XPBar_CastClickOverlay:SetWidth(220);
Perl_Player_StatsFrame:SetWidth(240);
Perl_Player_StatsFrame_CastClickOverlay:SetWidth(240);
else
if (compactpercent == 0) then
Perl_Player_Update_Health();
Perl_Player_Update_Mana();
Perl_Player_XPBar:SetWidth(150);
Perl_Player_XPRestBar:SetWidth(150);
Perl_Player_XPBarBG:SetWidth(150);
Perl_Player_XPBar_CastClickOverlay:SetWidth(150);
Perl_Player_StatsFrame:SetWidth(170);
Perl_Player_StatsFrame_CastClickOverlay:SetWidth(170);
else
Perl_Player_Update_Health();
Perl_Player_Update_Mana();
Perl_Player_XPBar:SetWidth(185);
Perl_Player_XPRestBar:SetWidth(185);
Perl_Player_XPBarBG:SetWidth(185);
Perl_Player_XPBar_CastClickOverlay:SetWidth(185);
Perl_Player_StatsFrame:SetWidth(205);
Perl_Player_StatsFrame_CastClickOverlay:SetWidth(205);
end
end
end
function Perl_Player_Set_Text_Positions()
if (compactmode == 0) then
Perl_Player_HealthBarText:SetPoint("RIGHT", 70, 0);
Perl_Player_HealthBarTextPercent:SetPoint("TOP", 0, 1);
Perl_Player_ManaBarText:SetPoint("RIGHT", 70, 0);
Perl_Player_ManaBarTextPercent:SetPoint("TOP", 0, 1);
Perl_Player_DruidBarText:SetPoint("RIGHT", 70, 0);
Perl_Player_DruidBarTextPercent:SetPoint("TOP", 0, 1);
else
if (healermode == 1) then
Perl_Player_HealthBarText:SetPoint("RIGHT", -10, 0);
Perl_Player_HealthBarTextPercent:SetPoint("TOP", -40, 1);
Perl_Player_ManaBarText:SetPoint("RIGHT", -10, 0);
Perl_Player_ManaBarTextPercent:SetPoint("TOP", -40, 1);
Perl_Player_DruidBarText:SetPoint("RIGHT", -10, 0);
Perl_Player_DruidBarTextPercent:SetPoint("TOP", -40, 1);
else
Perl_Player_HealthBarText:SetPoint("RIGHT", 70, 0);
Perl_Player_HealthBarTextPercent:SetPoint("TOP", 0, 1);
Perl_Player_ManaBarText:SetPoint("RIGHT", 70, 0);
Perl_Player_ManaBarTextPercent:SetPoint("TOP", 0, 1);
Perl_Player_DruidBarText:SetPoint("RIGHT", 70, 0);
Perl_Player_DruidBarTextPercent:SetPoint("TOP", 0, 1);
end
end
end
function Perl_Player_HealthShow()
if (healermode == 1) then
local playerhealth = UnitHealth("player");
local playerhealthmax = UnitHealthMax("player");
if (UnitIsDead("player") or UnitIsGhost("player")) then -- This prevents negative health
playerhealth = 0;
end
Perl_Player_HealthBarTextPercent:SetText(playerhealth.."/"..playerhealthmax);
mouseoverhealthflag = 1;
end
end
function Perl_Player_HealthHide()
if (healermode == 1) then
Perl_Player_HealthBarTextPercent:SetText();
mouseoverhealthflag = 0;
end
end
function Perl_Player_ManaShow()
if (healermode == 1) then
local playermana = UnitMana("player");
local playermanamax = UnitManaMax("player");
if (UnitIsDead("player") or UnitIsGhost("player")) then -- This prevents negative mana
playermana = 0;
end
if (UnitPowerType("player") == 1) then
Perl_Player_ManaBarTextPercent:SetText(playermana);
else
Perl_Player_ManaBarTextPercent:SetText(playermana.."/"..playermanamax);
end
mouseovermanaflag = 1;
end
end
function Perl_Player_ManaHide()
if (healermode == 1) then
Perl_Player_ManaBarTextPercent:SetText();
mouseovermanaflag = 0;
end
end
function Perl_Player_DruidBarManaShow()
if (DruidBarKey and (UnitClass("player") == PERL_LOCALIZED_DRUID)) then
if (healermode == 1) then
local playerdruidbarmana = floor(DruidBarKey.keepthemana);
local playerdruidbarmanamax = DruidBarKey.maxmana;
local playerdruidbarmanapercent = floor(playerdruidbarmana/playerdruidbarmanamax*100+0.5);
if (playerdruidbarmanapercent == 100) then -- This is to ensure the value isn't 1 or 2 mana under max when 100%
playerdruidbarmana = playerdruidbarmanamax;
end
if (UnitIsDead("player") or UnitIsGhost("player")) then -- This prevents negative mana
playerdruidbarmana = 0;
end
Perl_Player_DruidBarTextPercent:SetText(playerdruidbarmana.."/"..playerdruidbarmanamax);
mouseovermanaflag = 1;
end
end
end
function Perl_Player_DruidBarManaHide()
if (healermode == 1) then
Perl_Player_DruidBarTextPercent:SetText();
mouseovermanaflag = 0;
end
end
function Perl_Player_Update_Portrait()
if (showportrait == 1) then
Perl_Player_PortraitTextFrame:SetFrameLevel(Perl_Player_PortraitFrame:GetFrameLevel() + 1); -- Put the combat text above it so the portrait graphic doesn't go on top of it
Perl_Player_PortraitFrame:Show(); -- Show the main portrait frame
if (threedportrait == 0) then
SetPortraitTexture(Perl_Player_Portrait, "player"); -- Load the correct 2d graphic
Perl_Player_PortraitFrame_PlayerModel:Hide(); -- Hide the 3d graphic
Perl_Player_Portrait:Show(); -- Show the 2d graphic
else
Perl_Player_PortraitFrame_PlayerModel:SetUnit("player"); -- Load the correct 3d graphic
Perl_Player_Portrait:Hide(); -- Hide the 2d graphic
Perl_Player_PortraitFrame_PlayerModel:Show(); -- Show the 3d graphic
Perl_Player_PortraitFrame_PlayerModel:SetCamera(0);
end
Perl_Player_PortraitTextFrame:Show(); -- Show the combat text frame
else
Perl_Player_PortraitFrame:Hide(); -- Hide the frame and 2d/3d portion
Perl_Player_PortraitTextFrame:Hide(); -- Hide the combat text
end
end
function Perl_Player_Portrait_Combat_Text()
if (portraitcombattext == 1) then
CombatFeedback_OnUpdate(arg1);
end
end
function Perl_Player_Set_Localized_ClassIcons()
Perl_Player_ClassPosRight = {
[PERL_LOCALIZED_DRUID] = 0.75,
[PERL_LOCALIZED_HUNTER] = 0,
[PERL_LOCALIZED_MAGE] = 0.25,
[PERL_LOCALIZED_PALADIN] = 0,
[PERL_LOCALIZED_PRIEST] = 0.5,
[PERL_LOCALIZED_ROGUE] = 0.5,
[PERL_LOCALIZED_SHAMAN] = 0.25,
[PERL_LOCALIZED_WARLOCK] = 0.75,
[PERL_LOCALIZED_WARRIOR] = 0,
};
Perl_Player_ClassPosLeft = {
[PERL_LOCALIZED_DRUID] = 1,
[PERL_LOCALIZED_HUNTER] = 0.25,
[PERL_LOCALIZED_MAGE] = 0.5,
[PERL_LOCALIZED_PALADIN] = 0.25,
[PERL_LOCALIZED_PRIEST] = 0.75,
[PERL_LOCALIZED_ROGUE] = 0.75,
[PERL_LOCALIZED_SHAMAN] = 0.5,
[PERL_LOCALIZED_WARLOCK] = 1,
[PERL_LOCALIZED_WARRIOR] = 0.25,
};
Perl_Player_ClassPosTop = {
[PERL_LOCALIZED_DRUID] = 0,
[PERL_LOCALIZED_HUNTER] = 0.25,
[PERL_LOCALIZED_MAGE] = 0,
[PERL_LOCALIZED_PALADIN] = 0.5,
[PERL_LOCALIZED_PRIEST] = 0.25,
[PERL_LOCALIZED_ROGUE] = 0,
[PERL_LOCALIZED_SHAMAN] = 0.25,
[PERL_LOCALIZED_WARLOCK] = 0.25,
[PERL_LOCALIZED_WARRIOR] = 0,
};
Perl_Player_ClassPosBottom = {
[PERL_LOCALIZED_DRUID] = 0.25,
[PERL_LOCALIZED_HUNTER] = 0.5,
[PERL_LOCALIZED_MAGE] = 0.25,
[PERL_LOCALIZED_PALADIN] = 0.75,
[PERL_LOCALIZED_PRIEST] = 0.5,
[PERL_LOCALIZED_ROGUE] = 0.25,
[PERL_LOCALIZED_SHAMAN] = 0.5,
[PERL_LOCALIZED_WARLOCK] = 0.5,
[PERL_LOCALIZED_WARRIOR] = 0.25,
};
end
--------------------------
-- GUI Config Functions --
--------------------------
function Perl_Player_XPBar_Display(state)
if (state == 1) then -- Experience
Perl_Player_StatsFrame:SetHeight(54);
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(54);
Perl_Player_XPBar:Show();
Perl_Player_XPBarBG:Show();
Perl_Player_XPRestBar:Show();
Perl_Player_XPBar_CastClickOverlay:Show();
Perl_Player_Update_Experience();
elseif (state == 2) then -- PvP
Perl_Player_StatsFrame:SetHeight(54);
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(54);
Perl_Player_XPBar:Show();
Perl_Player_XPBarBG:Show();
Perl_Player_XPRestBar:Show();
Perl_Player_XPBar_CastClickOverlay:Show();
local rankNumber, rankName, rankProgress;
rankNumber = UnitPVPRank("player")
if (rankNumber < 1) then
rankName = "Unranked"
else
rankName = GetPVPRankInfo(rankNumber, "player");
end
rankProgress = GetPVPRankProgress();
Perl_Player_XPBar:SetMinMaxValues(0, 1);
Perl_Player_XPRestBar:SetMinMaxValues(0, 1);
Perl_Player_XPBar:SetValue(rankProgress);
Perl_Player_XPRestBar:SetValue(rankProgress);
Perl_Player_XPBarText:SetText(rankName);
elseif (state == 3) then -- Hidden
Perl_Player_XPBar:Hide();
Perl_Player_XPBarBG:Hide();
Perl_Player_XPRestBar:Hide();
Perl_Player_XPBar_CastClickOverlay:Hide();
Perl_Player_StatsFrame:SetHeight(42);
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(42);
elseif (state == 4) then -- Reputation
Perl_Player_StatsFrame:SetHeight(54);
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(54);
Perl_Player_XPBar:Show();
Perl_Player_XPBarBG:Show();
Perl_Player_XPRestBar:Show();
Perl_Player_XPBar_CastClickOverlay:Show();
Perl_Player_Update_Reputation();
end
if (DruidBarKey and (UnitClass("player") == PERL_LOCALIZED_DRUID) and (UnitPowerType("player") > 0)) then -- Only change the size if the player has Druid Bar, is a Druid, and is morphed currently
if (state == 3) then
Perl_Player_StatsFrame:SetHeight(54); -- Experience Bar is hidden
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(54);
else
Perl_Player_StatsFrame:SetHeight(66); -- Experience Bar is shown
Perl_Player_StatsFrame_CastClickOverlay:SetHeight(66);
end
end
xpbarstate = state;
Perl_Player_UpdateVars();
end
function Perl_Player_Set_Compact(newvalue)
compactmode = newvalue;
Perl_Player_UpdateVars();
Perl_Player_Set_Text_Positions();
Perl_Player_Set_CompactMode();
end
function Perl_Player_Set_Healer(newvalue)
healermode = newvalue;
Perl_Player_UpdateVars();
Perl_Player_Set_Text_Positions();
Perl_Player_Update_Health();
Perl_Player_Update_Mana();
end
function Perl_Player_Set_RaidGroupNumber(newvalue)
showraidgroup = newvalue;
Perl_Player_UpdateVars();
Perl_Player_Update_Raid_Group_Number();
end
function Perl_Player_Set_Lock(newvalue)
locked = newvalue;
Perl_Player_UpdateVars();
end
function Perl_Player_Set_Portrait(newvalue)
showportrait = newvalue;
Perl_Player_UpdateVars();
Perl_Player_Update_Portrait();
end
function Perl_Player_Set_3D_Portrait(newvalue)
threedportrait = newvalue;
Perl_Player_UpdateVars();
Perl_Player_Update_Portrait();
end
function Perl_Player_Set_Portrait_Combat_Text(newvalue)
portraitcombattext = newvalue;
Perl_Player_UpdateVars();
end
function Perl_Player_Set_Compact_Percent(newvalue)
compactpercent = newvalue;
Perl_Player_UpdateVars();
Perl_Player_Set_Text_Positions();
Perl_Player_Set_CompactMode();
Perl_Player_Update_Health();
Perl_Player_Update_Mana();
end
function Perl_Player_Set_DruidBar(newvalue)
showdruidbar = newvalue;
Perl_Player_UpdateVars();
Perl_Player_Set_Text_Positions();
Perl_Player_Set_CompactMode(); -- Perl_Player_Update_Mana() called here
end
function Perl_Player_Set_Scale(number)
local unsavedscale;
if (number ~= nil) then
scale = (number / 100); -- convert the user input to a wow acceptable value
end
unsavedscale = 1 - UIParent:GetEffectiveScale() + scale; -- run it through the scaling formula introduced in 1.9
Perl_Player_Frame:SetScale(unsavedscale);
Perl_Player_UpdateVars();
end
function Perl_Player_Set_Transparency(number)
if (number ~= nil) then
transparency = (number / 100); -- convert the user input to a wow acceptable value
end
Perl_Player_Frame:SetAlpha(transparency);
Perl_Player_UpdateVars();
end
------------------------------
-- Saved Variable Functions --
------------------------------
function Perl_Player_GetVars()
locked = Perl_Player_Config[UnitName("player")]["Locked"];
xpbarstate = Perl_Player_Config[UnitName("player")]["XPBarState"];
compactmode = Perl_Player_Config[UnitName("player")]["CompactMode"];
showraidgroup = Perl_Player_Config[UnitName("player")]["ShowRaidGroup"];
scale = Perl_Player_Config[UnitName("player")]["Scale"];
healermode = Perl_Player_Config[UnitName("player")]["HealerMode"];
transparency = Perl_Player_Config[UnitName("player")]["Transparency"];
showportrait = Perl_Player_Config[UnitName("player")]["ShowPortrait"];
compactpercent = Perl_Player_Config[UnitName("player")]["CompactPercent"];
threedportrait = Perl_Player_Config[UnitName("player")]["ThreeDPortrait"];
portraitcombattext = Perl_Player_Config[UnitName("player")]["PortraitCombatText"];
showdruidbar = Perl_Player_Config[UnitName("player")]["ShowDruidBar"];
if (locked == nil) then
locked = 0;
end
if (xpbarstate == nil) then
xpbarstate = 1;
end
if (compactmode == nil) then
compactmode = 0;
end
if (showraidgroup == nil) then
showraidgroup = 1;
end
if (scale == nil) then
scale = 1;
end
if (healermode == nil) then
healermode = 0;
end
if (transparency == nil) then
transparency = 1;
end
if (showportrait == nil) then
showportrait = 0;
end
if (compactpercent == nil) then
compactpercent = 0;
end
if (threedportrait == nil) then
threedportrait = 0;
end
if (portraitcombattext == nil) then
portraitcombattext = 1;
end
if (showdruidbar == nil) then
showdruidbar = 1;
end
local vars = {
["locked"] = locked,
["xpbarstate"] = xpbarstate,
["compactmode"] = compactmode,
["showraidgroup"] = showraidgroup,
["scale"] = scale,
["healermode"] = healermode,
["transparency"] = transparency,
["showportrait"] = showportrait,
["compactpercent"] = compactpercent,
["threedportrait"] = threedportrait,
["portraitcombattext"] = portraitcombattext,
["showdruidbar"] = showdruidbar,
}
return vars;
end
function Perl_Player_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"]["XPBarState"] ~= nil) then
xpbarstate = vartable["Global Settings"]["XPBarState"];
else
xpbarstate = nil;
end
if (vartable["Global Settings"]["CompactMode"] ~= nil) then
compactmode = vartable["Global Settings"]["CompactMode"];
else
compactmode = nil;
end
if (vartable["Global Settings"]["ShowRaidGroup"] ~= nil) then
showraidgroup = vartable["Global Settings"]["ShowRaidGroup"];
else
showraidgroup = nil;
end
if (vartable["Global Settings"]["Scale"] ~= nil) then
scale = vartable["Global Settings"]["Scale"];
else
scale = nil;
end
if (vartable["Global Settings"]["HealerMode"] ~= nil) then
healermode = vartable["Global Settings"]["HealerMode"];
else
healermode = nil;
end
if (vartable["Global Settings"]["Transparency"] ~= nil) then
transparency = vartable["Global Settings"]["Transparency"];
else
transparency = nil;
end
if (vartable["Global Settings"]["ShowPortrait"] ~= nil) then
showportrait = vartable["Global Settings"]["ShowPortrait"];
else
showportrait = nil;
end
if (vartable["Global Settings"]["CompactPercent"] ~= nil) then
compactpercent = vartable["Global Settings"]["CompactPercent"];
else
compactpercent = nil;
end
if (vartable["Global Settings"]["ThreeDPortrait"] ~= nil) then
threedportrait = vartable["Global Settings"]["ThreeDPortrait"];
else
threedportrait = nil;
end
if (vartable["Global Settings"]["PortraitCombatText"] ~= nil) then
portraitcombattext = vartable["Global Settings"]["PortraitCombatText"];
else
portraitcombattext = nil;
end
if (vartable["Global Settings"]["ShowDruidBar"] ~= nil) then
showdruidbar = vartable["Global Settings"]["ShowDruidBar"];
else
showdruidbar = 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 (xpbarstate == nil) then
xpbarstate = 1;
end
if (compactmode == nil) then
compactmode = 0;
end
if (showraidgroup == nil) then
showraidgroup = 1;
end
if (scale == nil) then
scale = 1;
end
if (healermode == nil) then
healermode = 0;
end
if (transparency == nil) then
transparency = 1;
end
if (showportrait == nil) then
showportrait = 0;
end
if (compactpercent == nil) then
compactpercent = 0;
end
if (threedportrait == nil) then
threedportrait = 0;
end
if (portraitcombattext == nil) then
portraitcombattext = 1;
end
if (showdruidbar == nil) then
showdruidbar = 1;
end
-- Call any code we need to activate them
Perl_Player_XPBar_Display(xpbarstate);
Perl_Player_Set_Compact(compactmode);
Perl_Player_Set_Healer(healermode);
Perl_Player_Update_Raid_Group_Number();
Perl_Player_Update_Health();
Perl_Player_Update_Mana();
Perl_Player_Update_Portrait();
Perl_Player_Set_Scale();
Perl_Player_Set_Transparency();
end
Perl_Player_Config[UnitName("player")] = {
["Locked"] = locked,
["XPBarState"] = xpbarstate,
["CompactMode"] = compactmode,
["ShowRaidGroup"] = showraidgroup,
["Scale"] = scale,
["HealerMode"] = healermode,
["Transparency"] = transparency,
["ShowPortrait"] = showportrait,
["CompactPercent"] = compactpercent,
["ThreeDPortrait"] = threedportrait,
["PortraitCombatText"] = portraitcombattext,
["ShowDruidBar"] = showdruidbar,
};
end
--------------------
-- Click Handlers --
--------------------
function Perl_PlayerDropDown_OnLoad()
UIDropDownMenu_Initialize(this, Perl_PlayerDropDown_Initialize, "MENU");
end
function Perl_PlayerDropDown_Initialize()
UnitPopup_ShowMenu(Perl_Player_DropDown, "SELF", "player");
end
function Perl_Player_MouseClick(button)
if (CastPartyConfig and PCUF_CASTPARTYSUPPORT == 1) then
if (not string.find(GetMouseFocus():GetName(), "Name")) then
CastParty_OnClickByUnit(button, "player");
end
elseif (Genesis_data and PCUF_CASTPARTYSUPPORT == 1) then
if (not string.find(GetMouseFocus():GetName(), "Name")) then
Genesis_MouseHeal("player", button);
end
else
if (SpellIsTargeting() and button == "RightButton") then
SpellStopTargeting();
return;
end
if (button == "LeftButton") then
if (SpellIsTargeting()) then
SpellTargetUnit("player");
elseif (CursorHasItem()) then
DropItemOnUnit("player");
else
TargetUnit("player");
end
end
end
end
function Perl_Player_MouseDown(button)
if (button == "LeftButton" and locked == 0) then
Perl_Player_Frame:StartMoving();
end
end
function Perl_Player_MouseUp(button)
if (button == "RightButton") then
if ((CastPartyConfig or Genesis_data) and PCUF_CASTPARTYSUPPORT == 1) then
if (not (IsAltKeyDown() or IsControlKeyDown() or IsShiftKeyDown()) and string.find(GetMouseFocus():GetName(), "Name")) then -- if alt, ctrl, or shift ARE NOT held AND we are clicking the name frame, show the menu
ToggleDropDownMenu(1, nil, Perl_Player_DropDown, "Perl_Player_NameFrame", 40, 0);
end
else
if (not (IsAltKeyDown() or IsControlKeyDown() or IsShiftKeyDown())) then -- if alt, ctrl, or shift ARE NOT held, show the menu
ToggleDropDownMenu(1, nil, Perl_Player_DropDown, "Perl_Player_NameFrame", 40, 0);
end
end
end
Perl_Player_Frame:StopMovingOrSizing();
end
------------------------
-- Experience Tooltip --
------------------------
function Perl_Player_XPTooltip()
local playerxp, playerxpmax, xptext
GameTooltip_SetDefaultAnchor(GameTooltip, this);
if (xpbarstate == 1) then
local playerlevel = UnitLevel("player"); -- Player's next level
if (playerlevel < 70) then
playerxp = UnitXP("player"); -- Player's current XP
playerxpmax = UnitXPMax("player"); -- Experience for the current level
local playerxprest = GetXPExhaustion(); -- Amount of bonus xp we have
local xptolevel = playerxpmax - playerxp -- XP till level
if (playerxprest) then
xptext = playerxp.."/"..playerxpmax .." (+"..(playerxprest)..")"; -- Create the experience string w/ rest xp
else
xptext = playerxp.."/"..playerxpmax; -- Create the experience string w/ no rest xp
end
GameTooltip:SetText(xptext, 255/255, 209/255, 0/255);
GameTooltip:AddLine(xptolevel.." until level "..(playerlevel + 1), 255/255, 209/255, 0/255);
else
GameTooltip:SetText("You can't gain anymore experience!", 255/255, 209/255, 0/255);
end
elseif (xpbarstate == 2) then
local rankNumber, rankName, rankProgress; -- Some variables
rankNumber = UnitPVPRank("player")
if (rankNumber < 1) then
rankName = "Unranked"
GameTooltip:SetText("You are Unranked.", 255/255, 209/255, 0/255);
else
rankName = GetPVPRankInfo(rankNumber, "player");
rankProgress = floor(GetPVPRankProgress() * 100);
GameTooltip:SetText(rankProgress.."% into Rank "..(rankNumber - 4).." ("..rankName..")", 255/255, 209/255, 0/255);
if (rankNumber < 18) then
rankNumber = rankNumber + 1;
rankName = GetPVPRankInfo(rankNumber, "player");
GameTooltip:AddLine((100 - rankProgress).."% until Rank "..(rankNumber - 4).." ("..rankName..")", 255/255, 209/255, 0/255);
end
end
elseif (xpbarstate == 4) then
local name, reaction, min, max, value = GetWatchedFactionInfo();
if (name) then
value = value - min;
max = max - min;
min = 0;
GameTooltip:SetText(floor(value/max*100+0.5).."% into "..Perl_Player_Get_Reaction_Name(reaction), 255/255, 209/255, 0/255);
GameTooltip:AddLine(value.."/"..max, 255/255, 209/255, 0/255);
if (reaction ~= 8) then
GameTooltip:AddLine((max - value).." until "..Perl_Player_Get_Reaction_Name(reaction + 1), 255/255, 209/255, 0/255);
end
else
GameTooltip:SetText("There is no reputation being tracked.", 255/255, 209/255, 0/255);
end
end
GameTooltip:Show();
end
function Perl_Player_Get_Reaction_Name(reaction)
local reactionname;
if (reaction == 1) then
reactionname = "Hated";
elseif (reaction == 2) then
reactionname = "Hostile";
elseif (reaction == 3) then
reactionname = "Unfriendly";
elseif (reaction == 4) then
reactionname = "Neutral";
elseif (reaction == 5) then
reactionname = "Friendly";
elseif (reaction == 6) then
reactionname = "Honored";
elseif (reaction == 7) then
reactionname = "Revered";
elseif (reaction == 8) then
reactionname = "Exalted";
end
return reactionname;
end
-----------------------
-- Scripting Support --
-----------------------
function Perl_Player_InCombat()
if (InCombat == 1) then
return 1;
else
return nil;
end
end
----------------------
-- myAddOns Support --
----------------------
function Perl_Player_myAddOns_Support()
-- Register the addon in myAddOns
if (myAddOnsFrame_Register) then
local Perl_Player_myAddOns_Details = {
name = "Perl_Player",
version = "Version 0.58",
releaseDate = "April 15, 2006",
author = "Perl; Maintained by Global",
email = "global@g-ball.com",
website = "http://www.curse-gaming.com/mod.php?addid=2257",
category = MYADDONS_CATEGORY_OTHERS
};
Perl_Player_myAddOns_Help = {};
Perl_Player_myAddOns_Help[1] = "/perl";
myAddOnsFrame_Register(Perl_Player_myAddOns_Details, Perl_Player_myAddOns_Help);
end
end
Generated by GNU Enscript 1.6.5.90.