vanilla-wow-addons – Rev 1
?pathlinks?
---------------
-- Variables --
---------------
Perl_Party_Config = {};
-- Default Saved Variables (also set in Perl_Party_GetVars)
local locked = 0; -- unlocked by default
local compactmode = 0; -- compact mode is disabled by default
local partyhidden = 0; -- party frame is set to always show by default
local partyspacing = -80; -- default spacing between party member frames
local scale = 1; -- default scale
local showpets = 1; -- show pets by default
local healermode = 0; -- nurfed unit frame style
local transparency = 1.0; -- transparency for frames
local bufflocation = 4; -- default buff location
local debufflocation = 1; -- default debuff location
local verticalalign = 1; -- default alignment is vertically
local compactpercent = 0; -- percents are not shown in compact mode by default
local showportrait = 0; -- portrait is hidden by default
local showfkeys = 0; -- hide appropriate F key in the name frame by default
local displaycastablebuffs = 0; -- display all buffs by default
local threedportrait = 0; -- 3d portraits are off by default
local buffsize = 16; -- default buff size is 16
local debuffsize = 16; -- default debuff size is 16
-- Default Local Variables
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?
local mouseoverpethealthflag = 0; -- is the mouse over the pet health bar for healer mode?
-- Variables for position of the class icon texture.
local Perl_Party_ClassPosRight = {};
local Perl_Party_ClassPosLeft = {};
local Perl_Party_ClassPosTop = {};
local Perl_Party_ClassPosBottom = {};
----------------------
-- Loading Function --
----------------------
function Perl_Party_Script_OnLoad()
this:RegisterEvent("PLAYER_ENTERING_WORLD");
if (DEFAULT_CHAT_FRAME) then
DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Perl Classic: Party loaded successfully.");
end
end
function Perl_Party_OnLoad()
-- Events
this:RegisterEvent("ADDON_LOADED");
this:RegisterEvent("PARTY_LEADER_CHANGED");
this:RegisterEvent("PARTY_LOOT_METHOD_CHANGED");
this:RegisterEvent("PARTY_MEMBERS_CHANGED");
this:RegisterEvent("PLAYER_ALIVE");
this:RegisterEvent("PLAYER_ENTERING_WORLD");
this:RegisterEvent("RAID_ROSTER_UPDATE");
this:RegisterEvent("UNIT_AURA");
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_NAME_UPDATE");
this:RegisterEvent("UNIT_PET");
this:RegisterEvent("UNIT_PORTRAIT_UPDATE");
this:RegisterEvent("UNIT_PVP_UPDATE");
this:RegisterEvent("UNIT_RAGE");
this:RegisterEvent("VARIABLES_LOADED");
HidePartyFrame();
ShowPartyFrame = HidePartyFrame; -- This is to fix the annoyance 1.9 introduced
end
-------------------
-- Event Handler --
-------------------
function Perl_Party_Script_OnEvent(event) -- All this just to ensure party frames are hidden/shown on zoning
if (event == "PLAYER_ENTERING_WORLD") then
if (Initialized) then
Perl_Party_Set_Hidden(); -- Are we running a hidden mode? (Another redundancy check because Blizzard sucks)
end
return;
else
return;
end
end
function Perl_Party_OnEvent(event)
if (event == "UNIT_HEALTH" or event == "UNIT_MAXHEALTH") then
if ((arg1 == "party1") or (arg1 == "party2") or (arg1 == "party3") or (arg1 == "party4")) then
Perl_Party_Update_Health();
elseif ((arg1 == "partypet1") or (arg1 == "partypet2") or (arg1 == "partypet3") or (arg1 == "partypet4")) then
Perl_Party_Update_Pet_Health();
end
return;
elseif ((event == "UNIT_MANA") or (event == "UNIT_ENERGY") or (event == "UNIT_RAGE") or (event == "UNIT_MAXMANA") or (event == "UNIT_MAXENERGY") or (event == "UNIT_MAXRAGE")) then
if ((arg1 == "party1") or (arg1 == "party2") or (arg1 == "party3") or (arg1 == "party4")) then
Perl_Party_Update_Mana();
end
return;
elseif (event == "UNIT_AURA") then
if ((arg1 == "party1") or (arg1 == "party2") or (arg1 == "party3") or (arg1 == "party4")) then
Perl_Party_Buff_UpdateAll();
end
return;
elseif (event == "UNIT_DISPLAYPOWER") then
if ((arg1 == "party1") or (arg1 == "party2") or (arg1 == "party3") or (arg1 == "party4")) then
Perl_Party_Update_Mana_Bar(); -- What type of energy are we using now?
Perl_Party_Update_Mana(); -- Update the power info immediately
end
return;
elseif (event == "UNIT_PVP_UPDATE") then
if ((arg1 == "party1") or (arg1 == "party2") or (arg1 == "party3") or (arg1 == "party4")) then
Perl_Party_Update_PvP_Status(); -- Is the character PvP flagged?
end
return;
elseif (event == "UNIT_NAME_UPDATE") then
if ((arg1 == "party1") or (arg1 == "party2") or (arg1 == "party3") or (arg1 == "party4")) then
Perl_Party_Set_Name(); -- Set the player's name and class icon
end
return;
elseif (event == "UNIT_PET") then
if ((arg1 == "party1") or (arg1 == "party2") or (arg1 == "party3") or (arg1 == "party4")) then
Perl_Party_Update_Pet(); -- Set the player's level
end
return;
elseif (event == "UNIT_LEVEL") then
if ((arg1 == "party1") or (arg1 == "party2") or (arg1 == "party3") or (arg1 == "party4")) then
Perl_Party_Update_Level(); -- Set the player's level
end
return;
elseif (event == "PARTY_MEMBERS_CHANGED") then -- or (event == "RAID_ROSTER_UPDATE") or (event == "PARTY_MEMBER_ENABLE") or (event == "PARTY_MEMBER_DISABLE")
Perl_Party_MembersUpdate(); -- How many members are in the group and show the correct frames and do UpdateOnce things
return;
elseif (event == "RAID_ROSTER_UPDATE") then
Perl_Party_Check_Raid_Hidden(); -- Are we running a hidden mode?
return;
elseif (event == "PARTY_LEADER_CHANGED") then
Perl_Party_Update_Leader(); -- Who is the group leader
return;
elseif (event == "UNIT_PORTRAIT_UPDATE" or event == "UNIT_MODEL_CHANGED") then
if ((arg1 == "party1") or (arg1 == "party2") or (arg1 == "party3") or (arg1 == "party4")) then
Perl_Party_Update_Portrait();
end
return;
elseif (event == "PARTY_LOOT_METHOD_CHANGED") then
Perl_Party_Update_Loot_Method(); -- Who is the master looter if any
return;
elseif (event == "PLAYER_ALIVE") then
Perl_Party_Set_Hidden(); -- Are we running a hidden mode? (Hopefully the last check we need to add for this)
return;
elseif (event == "PLAYER_ENTERING_WORLD" or event == "VARIABLES_LOADED") then
Perl_Party_Initialize(); -- We also force update info here in case of a /console reloadui
return;
elseif (event == "ADDON_LOADED") then
if (arg1 == "Perl_Party") then
Perl_Party_myAddOns_Support();
end
return;
else
return;
end
end
-------------------------------
-- Loading Settings Function --
-------------------------------
function Perl_Party_Initialize()
-- Check if we loaded the mod already.
if (Initialized) then
Perl_Party_Set_Scale();
Perl_Party_Force_Update() -- Attempt to forcefully update information
Perl_Party_Set_Text_Positions(); -- Not called in the above
Perl_Party_Set_Pets(); -- Also not called
Perl_Party_Update_Health_Mana(); -- You know the drill
Perl_Party_Set_Hidden(); -- Are we running a hidden mode?
return;
end
-- Check if a previous exists, if not, enable by default.
if (type(Perl_Party_Config[UnitName("player")]) == "table") then
Perl_Party_GetVars();
else
Perl_Party_UpdateVars();
end
-- Major config options.
Perl_Party_Initialize_Frame_Color(); -- Color the frame borders
Perl_Party_Set_Localized_ClassIcons(); -- Do localization stuff
Perl_Party_Set_Transparency(); -- Set the frame transparency
Perl_Party_Reset_Buffs(); -- Set the buff sizing
-- Unregister the Blizzard frames via the 1.8 function
for num = 1, 4 do
frame = getglobal("PartyMemberFrame"..num);
HealthBar = getglobal("PartyMemberFrame"..num.."HealthBar");
ManaBar = getglobal("PartyMemberFrame"..num.."ManaBar");
frame:UnregisterAllEvents();
HealthBar:UnregisterAllEvents();
ManaBar:UnregisterAllEvents();
end
-- Button Click Overlays (in order of occurrence in XML)
for num = 1, 4 do
getglobal("Perl_Party_MemberFrame"..num.."_NameFrame_CastClickOverlay"):SetFrameLevel(getglobal("Perl_Party_MemberFrame"..num.."_NameFrame"):GetFrameLevel() + 1);
getglobal("Perl_Party_MemberFrame"..num.."_LevelFrame_CastClickOverlay"):SetFrameLevel(getglobal("Perl_Party_MemberFrame"..num.."_LevelFrame"):GetFrameLevel() + 2);
getglobal("Perl_Party_MemberFrame"..num.."_PortraitFrame_CastClickOverlay"):SetFrameLevel(getglobal("Perl_Party_MemberFrame"..num.."_PortraitFrame"):GetFrameLevel() + 2);
getglobal("Perl_Party_MemberFrame"..num.."_StatsFrame_CastClickOverlay"):SetFrameLevel(getglobal("Perl_Party_MemberFrame"..num.."_StatsFrame"):GetFrameLevel() + 1);
getglobal("Perl_Party_MemberFrame"..num.."_StatsFrame_HealthBar_CastClickOverlay"):SetFrameLevel(getglobal("Perl_Party_MemberFrame"..num.."_StatsFrame"):GetFrameLevel() + 2);
getglobal("Perl_Party_MemberFrame"..num.."_StatsFrame_ManaBar_CastClickOverlay"):SetFrameLevel(getglobal("Perl_Party_MemberFrame"..num.."_StatsFrame"):GetFrameLevel() + 2);
getglobal("Perl_Party_MemberFrame"..num.."_StatsFrame_PetHealthBar_CastClickOverlay"):SetFrameLevel(getglobal("Perl_Party_MemberFrame"..num.."_StatsFrame"):GetFrameLevel() + 2);
end
Initialized = 1;
Perl_Party_MembersUpdate();
end
function Perl_Party_Initialize_Frame_Color(flag)
if (flag == nil) then
getglobal(this:GetName().."_NameFrame"):SetBackdropColor(0, 0, 0, 1);
getglobal(this:GetName().."_NameFrame"):SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
getglobal(this:GetName().."_LevelFrame"):SetBackdropColor(0, 0, 0, 1);
getglobal(this:GetName().."_LevelFrame"):SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
getglobal(this:GetName().."_PortraitFrame"):SetBackdropColor(0, 0, 0, 1);
getglobal(this:GetName().."_PortraitFrame"):SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
getglobal(this:GetName().."_StatsFrame"):SetBackdropColor(0, 0, 0, 1);
getglobal(this:GetName().."_StatsFrame"):SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
else
for partynum=1,4 do
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame"):SetBackdropColor(0, 0, 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame"):SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_LevelFrame"):SetBackdropColor(0, 0, 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_LevelFrame"):SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame"):SetBackdropColor(0, 0, 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame"):SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame"):SetBackdropColor(0, 0, 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame"):SetBackdropBorderColor(0.5, 0.5, 0.5, 1);
end
end
end
----------------------
-- Update Functions --
----------------------
function Perl_Party_MembersUpdate()
for partynum=1,4 do
local partyid = "party"..partynum;
local frame = getglobal("Perl_Party_MemberFrame"..partynum);
if (UnitName(partyid) ~= nil) then
if (partyhidden == 0) then
frame:Show();
else
if (partyhidden == 1) then
frame:Hide();
end
if (partyhidden == 2) then
if (UnitInRaid("player")) then
frame:Hide();
else
frame:Show();
end
end
end
else
frame:Hide();
end
end
Perl_Party_Set_Name();
Perl_Party_Set_Scale();
Perl_Party_Update_PvP_Status();
Perl_Party_Update_Level();
Perl_Party_Set_Compact(); -- Perl_Party_Set_Text_Positions is also called from here
Perl_Party_Update_Health();
Perl_Party_Update_Mana();
Perl_Party_Update_Mana_Bar();
Perl_Party_Update_Pet(); -- Call instead of Perl_Party_Set_Space to ensure spacing is correctly set for pets
Perl_Party_Update_Pet_Health();
Perl_Party_Update_Leader();
Perl_Party_Update_Loot_Method();
Perl_Party_Update_Portrait();
Perl_Party_Buff_UpdateAll();
end
function Perl_Party_Update_Health()
local id = this:GetID();
local partyid = "party"..id;
local partyhealth = UnitHealth(partyid);
local partyhealthmax = UnitHealthMax(partyid);
local partyhealthpercent = floor(partyhealth/partyhealthmax*100+0.5);
if (UnitIsDead(partyid) or UnitIsGhost(partyid)) then -- This prevents negative health
partyhealth = 0;
partyhealthpercent = 0;
end
getglobal(this:GetName().."_StatsFrame_HealthBar"):SetMinMaxValues(0, partyhealthmax);
getglobal(this:GetName().."_StatsFrame_HealthBar"):SetValue(partyhealth);
if (PCUF_COLORHEALTH == 1) then
if ((partyhealthpercent <= 100) and (partyhealthpercent > 75)) then
getglobal(this:GetName().."_StatsFrame_HealthBar"):SetStatusBarColor(0, 0.8, 0);
getglobal(this:GetName().."_StatsFrame_HealthBarBG"):SetStatusBarColor(0, 0.8, 0, 0.25);
elseif ((partyhealthpercent <= 75) and (partyhealthpercent > 50)) then
getglobal(this:GetName().."_StatsFrame_HealthBar"):SetStatusBarColor(1, 1, 0);
getglobal(this:GetName().."_StatsFrame_HealthBarBG"):SetStatusBarColor(1, 1, 0, 0.25);
elseif ((partyhealthpercent <= 50) and (partyhealthpercent > 25)) then
getglobal(this:GetName().."_StatsFrame_HealthBar"):SetStatusBarColor(1, 0.5, 0);
getglobal(this:GetName().."_StatsFrame_HealthBarBG"):SetStatusBarColor(1, 0.5, 0, 0.25);
else
getglobal(this:GetName().."_StatsFrame_HealthBar"):SetStatusBarColor(1, 0, 0);
getglobal(this:GetName().."_StatsFrame_HealthBarBG"):SetStatusBarColor(1, 0, 0, 0.25);
end
else
getglobal(this:GetName().."_StatsFrame_HealthBar"):SetStatusBarColor(0, 0.8, 0);
getglobal(this:GetName().."_StatsFrame_HealthBarBG"):SetStatusBarColor(0, 0.8, 0, 0.25);
end
if (compactmode == 0) then
if (healermode == 1) then
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarText"):SetText("-"..partyhealthmax - partyhealth);
if (tonumber(mouseoverhealthflag) == tonumber(id)) then
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText(partyhealth.."/"..partyhealthmax);
else
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText();
end
else
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarText"):SetText(partyhealth.."/"..partyhealthmax);
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText(partyhealthpercent.."%");
end
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarTextCompactPercent"):SetText(); -- Hide the compact mode percent text in full mode
else
if (healermode == 1) then
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarText"):SetText("-"..partyhealthmax - partyhealth);
if (tonumber(mouseoverhealthflag) == tonumber(id)) then
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText(partyhealth.."/"..partyhealthmax);
else
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText();
end
else
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarText"):SetText();
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText(partyhealth.."/"..partyhealthmax);
end
if (compactpercent == 1) then
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarTextCompactPercent"):SetText(partyhealthpercent.."%");
else
getglobal(this:GetName().."_StatsFrame_HealthBar_HealthBarTextCompactPercent"):SetText();
end
end
-- Handle disconnected state
if (UnitIsConnected(partyid)) then
getglobal(this:GetName().."_NameFrame_DisconnectStatus"):Hide();
else
getglobal(this:GetName().."_NameFrame_DisconnectStatus"):Show();
end
-- Handle death state
if (UnitIsDead(partyid) or UnitIsGhost(partyid)) then
getglobal(this:GetName().."_NameFrame_DeadStatus"):Show();
else
getglobal(this:GetName().."_NameFrame_DeadStatus"):Hide();
end
end
function Perl_Party_Update_Mana()
local id = this:GetID();
local partyid = "party"..id;
local partymana = UnitMana(partyid);
local partymanamax = UnitManaMax(partyid);
local partymanapercent = floor(partymana/partymanamax*100+0.5);
if (UnitIsDead(partyid) or UnitIsGhost(partyid)) then -- This prevents negative mana
partymana = 0;
partymanapercent = 0;
end
getglobal(this:GetName().."_StatsFrame_ManaBar"):SetMinMaxValues(0, partymanamax);
getglobal(this:GetName().."_StatsFrame_ManaBar"):SetValue(partymana);
if (compactmode == 0) then
if (healermode == 1) then
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarText"):SetText();
if (tonumber(mouseovermanaflag) == tonumber(id)) then
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymana.."/"..partymanamax);
else
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText();
end
else
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarText"):SetText(partymana.."/"..partymanamax);
if (UnitPowerType(partyid) == 1) then
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymana);
else
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymanapercent.."%");
end
end
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextCompactPercent"):SetText(); -- Hide the compact mode percent text in full mode
else
if (healermode == 1) then
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarText"):SetText();
if (tonumber(mouseovermanaflag) == tonumber(id)) then
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymana.."/"..partymanamax);
else
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText();
end
else
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarText"):SetText();
if (UnitPowerType(partyid) == 1) then
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymana);
else
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymana.."/"..partymanamax);
end
end
if (compactpercent == 1) then
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextCompactPercent"):SetText(partymanapercent.."%");
else
getglobal(this:GetName().."_StatsFrame_ManaBar_ManaBarTextCompactPercent"):SetText();
end
end
end
function Perl_Party_Update_Mana_Bar()
local partyid = "party"..this:GetID();
local partypower = UnitPowerType(partyid);
-- Set mana bar color
if (partypower == 0) then
getglobal(this:GetName().."_StatsFrame_ManaBar"):SetStatusBarColor(0, 0, 1, 1);
getglobal(this:GetName().."_StatsFrame_ManaBarBG"):SetStatusBarColor(0, 0, 1, 0.25);
elseif (partypower == 1) then
getglobal(this:GetName().."_StatsFrame_ManaBar"):SetStatusBarColor(1, 0, 0, 1);
getglobal(this:GetName().."_StatsFrame_ManaBarBG"):SetStatusBarColor(1, 0, 0, 0.25);
elseif (partypower == 3) then
getglobal(this:GetName().."_StatsFrame_ManaBar"):SetStatusBarColor(1, 1, 0, 1);
getglobal(this:GetName().."_StatsFrame_ManaBarBG"):SetStatusBarColor(1, 1, 0, 0.25);
end
end
function Perl_Party_Update_Pet()
local id = this:GetID();
if (showpets == 1) then
if (UnitIsConnected("party"..id) and UnitExists("partypet"..id)) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):Show();
getglobal(this:GetName().."_StatsFrame_PetHealthBarBG"):Show();
getglobal(this:GetName().."_StatsFrame_PetHealthBar_CastClickOverlay"):Show();
getglobal(this:GetName().."_StatsFrame"):SetHeight(54);
getglobal(this:GetName().."_StatsFrame_CastClickOverlay"):SetHeight(54);
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetMinMaxValues(0, 1); -- Set health to zero in order to keep the bars sane
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetValue(0); -- Info should be updated automatically anyway
if (PCUF_COLORHEALTH == 1) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetStatusBarColor(1, 0, 0);
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetStatusBarColor(0, 0.8, 0);
end
if (compactmode == 0) then
if (healermode == 1) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText("-0");
if (tonumber(mouseoverpethealthflag) == tonumber(id)) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText("0/0");
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText();
end
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText("0/0");
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText("0%");
end
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextCompactPercent"):SetText();
else
if (healermode == 1) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText("-0");
if (tonumber(mouseoverpethealthflag) == tonumber(id)) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText("0/0");
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText();
end
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText();
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText("0/0");
end
if (compactpercent == 1) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextCompactPercent"):SetText("0%");
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextCompactPercent"):SetText();
end
end -- End waste of code to keep it sane
if (verticalalign == 1) then
if (partyspacing < 0) then -- Frames are normal
if (id == 1 or id == 2 or id == 3) then
local idspace = id + 1;
local partypetspacing;
partypetspacing = partyspacing - 12;
getglobal("Perl_Party_MemberFrame"..idspace):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id, "TOPLEFT", 0, partypetspacing);
end
else -- Frames are inverted
if (partynum == 2 or partynum == 3 or partynum == 4) then
local idspace = id - 1;
local partypetspacing;
partypetspacing = partyspacing + 12;
getglobal("Perl_Party_MemberFrame"..id):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..idspace, "TOPLEFT", 0, partypetspacing);
end
end
else
local horizontalspacing;
if (partyspacing < 0) then
horizontalspacing = partyspacing - 195;
else
horizontalspacing = partyspacing + 195;
end
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", horizontalspacing, 0);
end
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):Hide();
getglobal(this:GetName().."_StatsFrame_PetHealthBarBG"):Hide();
getglobal(this:GetName().."_StatsFrame_PetHealthBar_CastClickOverlay"):Hide();
getglobal(this:GetName().."_StatsFrame"):SetHeight(42);
getglobal(this:GetName().."_StatsFrame_CastClickOverlay"):SetHeight(42);
if (verticalalign == 1) then
if (id == 1) then
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", 0, partyspacing);
elseif (id == 2) then
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", 0, partyspacing);
elseif (id == 3) then
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", 0, partyspacing);
end
else
local horizontalspacing;
if (partyspacing < 0) then
horizontalspacing = partyspacing - 195;
else
horizontalspacing = partyspacing + 195;
end
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", horizontalspacing, 0);
end
end
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):Hide();
getglobal(this:GetName().."_StatsFrame_PetHealthBarBG"):Hide();
getglobal(this:GetName().."_StatsFrame_PetHealthBar_CastClickOverlay"):Hide();
getglobal(this:GetName().."_StatsFrame"):SetHeight(42);
getglobal(this:GetName().."_StatsFrame_CastClickOverlay"):SetHeight(42);
if (verticalalign == 1) then
if (id == 1) then
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", 0, partyspacing);
elseif (id == 2) then
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", 0, partyspacing);
elseif (id == 3) then
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", 0, partyspacing);
end
else
local horizontalspacing;
if (partyspacing < 0) then
horizontalspacing = partyspacing - 195;
else
horizontalspacing = partyspacing + 195;
end
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", horizontalspacing, 0);
end
end
end
function Perl_Party_Update_Pet_Health()
local id = this:GetID();
if (UnitIsConnected("party"..id) and UnitExists("partypet"..id)) then
local partypethealth = UnitHealth("partypet"..id);
local partypethealthmax = UnitHealthMax("partypet"..id);
local partypethealthpercent = floor(partypethealth/partypethealthmax*100+0.5);
if (UnitIsDead("partypet"..id) or UnitIsGhost("partypet"..id)) then -- This prevents negative health
partypethealth = 0;
partypethealthpercent = 0;
end
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetMinMaxValues(0, partypethealthmax);
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetValue(partypethealth);
if (PCUF_COLORHEALTH == 1) then
if ((partypethealthpercent <= 100) and (partypethealthpercent > 75)) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetStatusBarColor(0, 0.8, 0);
getglobal(this:GetName().."_StatsFrame_PetHealthBarBG"):SetStatusBarColor(0, 0.8, 0, 0.25);
elseif ((partypethealthpercent <= 75) and (partypethealthpercent > 50)) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetStatusBarColor(1, 1, 0);
getglobal(this:GetName().."_StatsFrame_PetHealthBarBG"):SetStatusBarColor(1, 1, 0, 0.25);
elseif ((partypethealthpercent <= 50) and (partypethealthpercent > 25)) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetStatusBarColor(1, 0.5, 0);
getglobal(this:GetName().."_StatsFrame_PetHealthBarBG"):SetStatusBarColor(1, 0.5, 0, 0.25);
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetStatusBarColor(1, 0, 0);
getglobal(this:GetName().."_StatsFrame_PetHealthBarBG"):SetStatusBarColor(1, 0, 0, 0.25);
end
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar"):SetStatusBarColor(0, 0.8, 0);
getglobal(this:GetName().."_StatsFrame_PetHealthBarBG"):SetStatusBarColor(0, 0.8, 0, 0.25);
end
if (compactmode == 0) then
if (healermode == 1) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText("-"..partypethealthmax - partypethealth);
if (tonumber(mouseoverpethealthflag) == tonumber(id)) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText(partypethealth.."/"..partypethealthmax);
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText();
end
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText(partypethealth.."/"..partypethealthmax);
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText(partypethealthpercent.."%");
end
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextCompactPercent"):SetText(); -- Hide the compact mode percent text in full mode
else
if (healermode == 1) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText("-"..partypethealthmax - partypethealth);
if (tonumber(mouseoverpethealthflag) == tonumber(id)) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText(partypethealth.."/"..partypethealthmax);
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText();
end
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText();
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText(partypethealth.."/"..partypethealthmax);
end
if (compactpercent == 1) then
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextCompactPercent"):SetText(partypethealthpercent.."%");
else
getglobal(this:GetName().."_StatsFrame_PetHealthBar_PetHealthBarTextCompactPercent"):SetText();
end
end
else
-- do nothing, should be hidden
end
end
function Perl_Party_Set_Name()
local id = this:GetID();
local partyid = "party"..id;
local partyname = UnitName(partyid);
-- Set name
if (UnitName(partyid) ~= nil) then
if (strlen(partyname) > 20) then
partyname = strsub(partyname, 1, 19).."...";
end
if (showfkeys == 1) then
getglobal(this:GetName().."_NameFrame_FKeyText"):SetText("F"..(id + 1));
else
getglobal(this:GetName().."_NameFrame_FKeyText"):SetText();
end
getglobal(this:GetName().."_NameFrame_NameBarText"):SetText(partyname);
end
-- Set Class Icon
if (UnitIsPlayer(partyid)) then
local PlayerClass = UnitClass(partyid);
getglobal(this:GetName().."_LevelFrame_ClassTexture"):SetTexCoord(Perl_Party_ClassPosRight[PlayerClass], Perl_Party_ClassPosLeft[PlayerClass], Perl_Party_ClassPosTop[PlayerClass], Perl_Party_ClassPosBottom[PlayerClass]); -- Set the player's class icon
getglobal(this:GetName().."_LevelFrame_ClassTexture"):Show();
else
getglobal(this:GetName().."_LevelFrame_ClassTexture"):Hide();
end
end
function Perl_Party_Update_PvP_Status() -- Modeled after 1.9 code
local partyid = "party"..this:GetID();
local factionGroup = UnitFactionGroup(partyid);
if (factionGroup == nil) then -- This check probably isn't needed since the changes in the code below in 0.48
factionGroup = UnitFactionGroup("player");
end
-- Color their name if PvP flagged
if (UnitIsPVPFreeForAll(partyid)) then
getglobal(this:GetName().."_NameFrame_NameBarText"):SetTextColor(0,1,0); -- FFA PvP will still use normal PvP coloring since you're grouped
getglobal(this:GetName().."_NameFrame_PVPStatus"):SetTexture("Interface\\TargetingFrame\\UI-PVP-FFA"); -- Set the FFA PvP icon
getglobal(this:GetName().."_NameFrame_PVPStatus"):Show(); -- Show the icon
elseif (factionGroup and UnitIsPVP(partyid)) then
getglobal(this:GetName().."_NameFrame_NameBarText"):SetTextColor(0,1,0); -- Color the name for PvP
getglobal(this:GetName().."_NameFrame_PVPStatus"):SetTexture("Interface\\TargetingFrame\\UI-PVP-"..factionGroup); -- Set the correct team icon
getglobal(this:GetName().."_NameFrame_PVPStatus"):Show(); -- Show the icon
else
getglobal(this:GetName().."_NameFrame_NameBarText"):SetTextColor(0.5,0.5,1); -- Set the non PvP name color
getglobal(this:GetName().."_NameFrame_PVPStatus"):Hide(); -- Hide the icon
end
end
function Perl_Party_Update_Level()
local id = this:GetID();
if (id ~= 0) then -- Do this check to prevent showing a player level of zero when the player is zoning or dead or cant have info received (linkdead)
getglobal(this:GetName().."_LevelFrame_LevelBarText"):SetText(UnitLevel("party"..id));
end
end
function Perl_Party_Update_Leader()
local id = this:GetID();
local icon = getglobal(this:GetName().."_NameFrame_LeaderIcon");
if (GetPartyLeaderIndex() == id) then
icon:Show();
else
icon:Hide();
end
end
function Perl_Party_Update_Loot_Method()
local lootMethod, lootMaster;
lootMethod, lootMaster = GetLootMethod();
if (this:GetID() == lootMaster) then
getglobal(this:GetName().."_NameFrame_MasterIcon"):Show();
else
getglobal(this:GetName().."_NameFrame_MasterIcon"):Hide();
end
end
function Perl_Party_Check_Raid_Hidden()
if (partyhidden == 2) then
Perl_Party_MemberFrame1:Hide();
Perl_Party_MemberFrame2:Hide();
Perl_Party_MemberFrame3:Hide();
Perl_Party_MemberFrame4:Hide();
end
end
function Perl_Party_Set_Text_Positions()
if (compactmode == 0) then
for partynum=1,4 do
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarText"):SetPoint("RIGHT", 70, 0);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextPercent"):SetPoint("TOP", 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarText"):SetPoint("RIGHT", 70, 0);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetPoint("TOP", 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarText"):SetPoint("RIGHT", 70, 0);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetPoint("TOP", 0, 1);
end
else
if (healermode == 1) then
for partynum=1,4 do
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarText"):SetPoint("RIGHT", -10, 0);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextPercent"):SetPoint("TOP", -40, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarText"):SetPoint("RIGHT", -10, 0);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetPoint("TOP", -40, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarText"):SetPoint("RIGHT", -10, 0);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetPoint("TOP", -40, 1);
end
else
for partynum=1,4 do
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarText"):SetPoint("RIGHT", 70, 0);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextPercent"):SetPoint("TOP", 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarText"):SetPoint("RIGHT", 70, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetPoint("TOP", 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarText"):SetPoint("RIGHT", 70, 0);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetPoint("TOP", 0, 1);
end
end
end
end
function Perl_Party_HealthShow()
if (healermode == 1) then
local id = this:GetID();
if (id == 0) then
local name=this:GetName();
id = string.sub(name, 23, 23);
end
local partyid = "party"..id;
local partyhealth = UnitHealth(partyid);
local partyhealthmax = UnitHealthMax(partyid);
if (UnitIsDead(partyid) or UnitIsGhost(partyid)) then -- This prevents negative health
partyhealth = 0;
end
getglobal("Perl_Party_MemberFrame"..id.."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText(partyhealth.."/"..partyhealthmax);
mouseoverhealthflag = id;
end
end
function Perl_Party_HealthHide()
if (healermode == 1) then
local id = this:GetID();
if (id == 0) then
local name=this:GetName();
id = string.sub(name, 23, 23);
end
getglobal("Perl_Party_MemberFrame"..id.."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText();
mouseoverhealthflag = 0;
end
end
function Perl_Party_ManaShow()
if (healermode == 1) then
local id = this:GetID();
if (id == 0) then
local name=this:GetName();
id = string.sub(name, 23, 23);
end
local partyid = "party"..id;
local partymana = UnitMana(partyid);
local partymanamax = UnitManaMax(partyid);
if (UnitIsDead(partyid) or UnitIsGhost(partyid)) then -- This prevents negative mana
partymana = 0;
end
if (UnitPowerType(partyid) == 1) then
getglobal("Perl_Party_MemberFrame"..id.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymana);
else
getglobal("Perl_Party_MemberFrame"..id.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymana.."/"..partymanamax);
end
mouseovermanaflag = id;
end
end
function Perl_Party_ManaHide()
if (healermode == 1) then
local id = this:GetID();
if (id == 0) then
local name=this:GetName();
id = string.sub(name, 23, 23);
end
getglobal("Perl_Party_MemberFrame"..id.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText();
mouseovermanaflag = 0;
end
end
function Perl_Party_Pet_HealthShow()
if (healermode == 1) then
local id = this:GetID();
if (id == 0) then
local name=this:GetName();
id = string.sub(name, 23, 23);
end
local partyid = "partypet"..id;
local partypethealth = UnitHealth(partyid);
local partypethealthmax = UnitHealthMax(partyid);
if (UnitIsDead(partyid) or UnitIsGhost(partyid)) then -- This prevents negative health
partypethealth = 0;
end
getglobal("Perl_Party_MemberFrame"..id.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText(partypethealth.."/"..partypethealthmax);
mouseoverpethealthflag = id;
end
end
function Perl_Party_Pet_HealthHide()
if (healermode == 1) then
local id = this:GetID();
if (id == 0) then
local name=this:GetName();
id = string.sub(name, 23, 23);
end
getglobal("Perl_Party_MemberFrame"..id.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText();
mouseoverpethealthflag = 0;
end
end
function Perl_Party_Update_Portrait(partymember)
local id;
if (partymember == nil) then
id = this:GetID();
else
id = partymember;
end
if (showportrait == 1) then
local partyid = "party"..id;
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame"):Show(); -- Show the main portrait frame
if (threedportrait == 0) then
SetPortraitTexture(getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_Portrait"), partyid); -- Load the correct 2d graphic
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_PartyModel"):Hide(); -- Hide the 3d graphic
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_Portrait"):Show(); -- Show the 2d graphic
else
if UnitIsVisible(partyid) then
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_PartyModel"):SetUnit(partyid); -- Load the correct 3d graphic
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_Portrait"):Hide(); -- Hide the 2d graphic
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_PartyModel"):Show(); -- Show the 3d graphic
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_PartyModel"):SetCamera(0);
else
SetPortraitTexture(getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_Portrait"), partyid); -- Load the correct 2d graphic
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_PartyModel"):Hide(); -- Hide the 3d graphic
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame_Portrait"):Show(); -- Show the 2d graphic
end
end
else
getglobal("Perl_Party_MemberFrame"..id.."_PortraitFrame"):Hide(); -- Hide the frame and 2d/3d portion
end
end
function Perl_Party_Update_Health_Mana()
local partyhealth, partyhealthmax, partyhealthpercent, partymana, partymanamax, partymanapercent, partypethealth, partypethealthmax, partypethealthpercent;
for partynum=1,4 do
local partyid = "party"..partynum;
if (UnitName(partyid) ~= nil) then
partyhealth = UnitHealth(partyid);
partyhealthmax = UnitHealthMax(partyid);
partyhealthpercent = floor(partyhealth/partyhealthmax*100+0.5);
partymana = UnitMana(partyid);
partymanamax = UnitManaMax(partyid);
partymanapercent = floor(partymana/partymanamax*100+0.5);
partypethealth = UnitHealth("partypet"..partynum);
partypethealthmax = UnitHealthMax("partypet"..partynum);
partypethealthpercent = floor(partypethealth/partypethealthmax*100+0.5);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar"):SetMinMaxValues(0, partyhealthmax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar"):SetValue(partyhealth);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar"):SetMinMaxValues(0, partymanamax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar"):SetValue(partymana);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar"):SetMinMaxValues(0, partypethealthmax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar"):SetValue(partypethealth);
if (compactmode == 0) then
if (healermode == 1) then
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarText"):SetText("-"..partyhealthmax - partyhealth);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarText"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText("-"..partypethealthmax - partypethealth);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText();
else
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarText"):SetText(partyhealth.."/"..partyhealthmax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText(partyhealthpercent.."%");
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarText"):SetText(partymana.."/"..partymanamax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymanapercent.."%");
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText(partypethealth.."/"..partypethealthmax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText(partypethealthpercent.."%");
end
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextCompactPercent"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextCompactPercent"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextCompactPercent"):SetText();
else
if (healermode == 1) then
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarText"):SetText("-"..partyhealthmax - partyhealth);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarText"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText("-"..partypethealthmax - partypethealth);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText();
else
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarText"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextPercent"):SetText(partyhealth.."/"..partyhealthmax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarText"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextPercent"):SetText(partymana.."/"..partymanamax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText(partypethealth.."/"..partypethealthmax);
end
if (compactpercent == 1) then
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextCompactPercent"):SetText(partyhealthpercent.."%");
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextCompactPercent"):SetText(partymanapercent.."%");
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextCompactPercent"):SetText(partypethealthpercent.."%");
else
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_HealthBar_HealthBarTextCompactPercent"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar_ManaBarTextCompactPercent"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextCompactPercent"):SetText();
end
end
else
-- Do nothing since it's hidden anyway
end
end
end
function Perl_Party_Force_Update()
for partynum = 1, 4 do
local partyid = "party"..partynum;
local partyname = UnitName(partyid);
-- Set name
if (UnitName(partyid) ~= nil) then
if (strlen(partyname) > 20) then
partyname = strsub(partyname, 1, 19).."...";
end
if (showfkeys == 1) then
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_FKeyText"):SetText("F"..(partynum + 1));
else
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_FKeyText"):SetText();
end
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_NameBarText"):SetText(partyname);
end
-- Set Class Icon
if (UnitIsPlayer(partyid)) then
local PlayerClass = UnitClass(partyid);
getglobal("Perl_Party_MemberFrame"..partynum.."_LevelFrame_ClassTexture"):SetTexCoord(Perl_Party_ClassPosRight[PlayerClass], Perl_Party_ClassPosLeft[PlayerClass], Perl_Party_ClassPosTop[PlayerClass], Perl_Party_ClassPosBottom[PlayerClass]); -- Set the player's class icon
getglobal("Perl_Party_MemberFrame"..partynum.."_LevelFrame_ClassTexture"):Show();
else
getglobal("Perl_Party_MemberFrame"..partynum.."_LevelFrame_ClassTexture"):Hide();
end
-- Set Level
getglobal("Perl_Party_MemberFrame"..partynum.."_LevelFrame_LevelBarText"):SetText(UnitLevel(partyid));
-- Handle disconnected state
if (UnitIsConnected(partyid)) then
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_DisconnectStatus"):Hide();
else
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_DisconnectStatus"):Show();
end
-- Handle death state
if (UnitIsDead(partyid) or UnitIsGhost(partyid)) then
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_DeadStatus"):Show();
else
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_DeadStatus"):Hide();
end
-- Set PvP info
local factionGroup = UnitFactionGroup(partyid);
if (factionGroup == nil) then
factionGroup = UnitFactionGroup("player");
end
-- Color their name if PvP flagged
if (UnitIsPVP(partyid)) then
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_NameBarText"):SetTextColor(0,1,0);
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_PVPStatus"):SetTexture("Interface\\TargetingFrame\\UI-PVP-"..factionGroup);
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_PVPStatus"):Show();
else
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_NameBarText"):SetTextColor(0.5,0.5,1);
getglobal("Perl_Party_MemberFrame"..partynum.."_NameFrame_PVPStatus"):Hide();
end
-- Set mana bar color
local partypower = UnitPowerType(partyid);
if (partypower == 1) then
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar"):SetStatusBarColor(1, 0, 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBarBG"):SetStatusBarColor(1, 0, 0, 0.25);
elseif (partypower == 2) then
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar"):SetStatusBarColor(1, 0.5, 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBarBG"):SetStatusBarColor(1, 0.5, 0, 0.25);
elseif (partypower == 3) then
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar"):SetStatusBarColor(1, 1, 0, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBarBG"):SetStatusBarColor(1, 1, 0, 0.25);
else
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBar"):SetStatusBarColor(0, 0, 1, 1);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_ManaBarBG"):SetStatusBarColor(0, 0, 1, 0.25);
end
-- Set portraits
if (showportrait == 1) then
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame"):Show(); -- Show the main portrait frame
if (threedportrait == 0) then
SetPortraitTexture(getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_Portrait"), partyid); -- Load the correct 2d graphic
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_PartyModel"):Hide(); -- Hide the 3d graphic
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_Portrait"):Show(); -- Show the 2d graphic
else
if UnitIsVisible(partyid) then
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_PartyModel"):SetUnit(partyid); -- Load the correct 3d graphic
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_Portrait"):Hide(); -- Hide the 2d graphic
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_PartyModel"):Show(); -- Show the 3d graphic
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_PartyModel"):SetCamera(0);
else
SetPortraitTexture(getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_Portrait"), partyid); -- Load the correct 2d graphic
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_PartyModel"):Hide(); -- Hide the 3d graphic
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame_Portrait"):Show(); -- Show the 2d graphic
end
end
else
getglobal("Perl_Party_MemberFrame"..partynum.."_PortraitFrame"):Hide(); -- Hide the frame and 2d/3d portion
end
-- Set pet bars
local id = partynum; -- Easier than changing all variables below, I'll do it later
if (showpets == 1) then
if (UnitIsConnected("party"..id) and UnitExists("partypet"..id)) then
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar"):Show();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBarBG"):Show();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_CastClickOverlay"):Show();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame"):SetHeight(54);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_CastClickOverlay"):SetHeight(54);
if (verticalalign == 1) then
if (id == 1 or id == 2 or id == 3) then
local idspace = id + 1;
local partypetspacing;
if (partyspacing < 0) then -- Frames are normal
partypetspacing = partyspacing - 12;
else -- Frames are inverted
partypetspacing = partyspacing + 12;
end
getglobal("Perl_Party_MemberFrame"..idspace):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id, "TOPLEFT", 0, partypetspacing);
end
else
local horizontalspacing;
if (partyspacing < 0) then
horizontalspacing = partyspacing - 195;
else
horizontalspacing = partyspacing + 195;
end
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", horizontalspacing, 0);
end
else
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar"):Hide();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBarBG"):Hide();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_CastClickOverlay"):Hide();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame"):SetHeight(42);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_CastClickOverlay"):SetHeight(42);
if (verticalalign == 1) then
if (id == 1) then
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", 0, partyspacing);
elseif (id == 2) then
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", 0, partyspacing);
elseif (id == 3) then
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", 0, partyspacing);
end
else
local horizontalspacing;
if (partyspacing < 0) then
horizontalspacing = partyspacing - 195;
else
horizontalspacing = partyspacing + 195;
end
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", horizontalspacing, 0);
end
end
else
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar"):Hide();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBarBG"):Hide();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_CastClickOverlay"):Hide();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame"):SetHeight(42);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_CastClickOverlay"):SetHeight(42);
if (verticalalign == 1) then
if (id == 1) then
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", 0, partyspacing);
elseif (id == 2) then
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", 0, partyspacing);
elseif (id == 3) then
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", 0, partyspacing);
end
else
local horizontalspacing;
if (partyspacing < 0) then
horizontalspacing = partyspacing - 195;
else
horizontalspacing = partyspacing + 195;
end
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", horizontalspacing, 0);
end
end
end
end
function Perl_Party_Set_Localized_ClassIcons()
Perl_Party_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_Party_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_Party_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_Party_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_Party_Set_Space(number)
if (number ~= nil) then
partyspacing = -number;
end
if (verticalalign == 1) then
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", 0, partyspacing);
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", 0, partyspacing);
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", 0, partyspacing);
if (showpets == 1) then
local partypetspacing;
if (partyspacing < 0) then -- Frames are normal
partypetspacing = partyspacing - 12;
else -- Frames are inverted
partypetspacing = partyspacing + 12;
end
for partynum=1,4 do
local partyid = "party"..partynum;
local frame = getglobal("Perl_Party_MemberFrame"..partynum);
if (UnitName(partyid) ~= nil) then
if (UnitIsConnected(partyid) and UnitExists("partypet"..partynum)) then
if (partyspacing < 0) then -- Frames are normal
if (partynum == 1 or partynum == 2 or partynum == 3) then
local idspace = partynum + 1;
local partypetspacing;
partypetspacing = partyspacing - 12;
getglobal("Perl_Party_MemberFrame"..idspace):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..partynum, "TOPLEFT", 0, partypetspacing);
end
else -- Frames are inverted
if (partynum == 2 or partynum == 3 or partynum == 4) then
local idspace = partynum - 1;
local partypetspacing;
partypetspacing = partyspacing + 12;
getglobal("Perl_Party_MemberFrame"..partynum):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..idspace, "TOPLEFT", 0, partypetspacing);
end
end
end
else
-- should be hidden, and will correctly adjust later when needed
end
end
else
-- do nothing, no spacing required
end
else
local horizontalspacing;
if (partyspacing < 0) then
horizontalspacing = partyspacing - 195;
else
horizontalspacing = partyspacing + 195;
end
Perl_Party_MemberFrame2:SetPoint("TOPLEFT", "Perl_Party_MemberFrame1", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame3:SetPoint("TOPLEFT", "Perl_Party_MemberFrame2", "TOPLEFT", horizontalspacing, 0);
Perl_Party_MemberFrame4:SetPoint("TOPLEFT", "Perl_Party_MemberFrame3", "TOPLEFT", horizontalspacing, 0);
end
Perl_Party_UpdateVars();
end
function Perl_Party_Set_Hidden(newvalue)
if (newvalue ~= nil) then
partyhidden = newvalue;
Perl_Party_UpdateVars();
end
if (partyhidden == 1) then -- copied from below sort of, delete below when slash commands are removed
Perl_Party_MemberFrame1:Hide();
Perl_Party_MemberFrame2:Hide();
Perl_Party_MemberFrame3:Hide();
Perl_Party_MemberFrame4:Hide();
--DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Party Frame is now |cffffffffAlways Hidden|cffffff00.");
elseif (partyhidden == 2) then
if (UnitInRaid("player")) then
Perl_Party_MemberFrame1:Hide();
Perl_Party_MemberFrame2:Hide();
Perl_Party_MemberFrame3:Hide();
Perl_Party_MemberFrame4:Hide();
else
for partynum=1,4 do
local partyid = "party"..partynum;
local frame = getglobal("Perl_Party_MemberFrame"..partynum);
if (UnitName(partyid) ~= nil) then
frame:Show();
else
frame:Hide();
end
end
end
--DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Party Frame is now |cffffffffHidden in Raids|cffffff00.");
else
for partynum=1,4 do
local partyid = "party"..partynum;
local frame = getglobal("Perl_Party_MemberFrame"..partynum);
if (UnitName(partyid) ~= nil) then
frame:Show();
else
frame:Hide();
end
end
--DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Party Frame is now |cffffffffAlways Shown|cffffff00.");
end
end
function Perl_Party_Set_Compact(newvalue)
if (newvalue ~= nil) then
compactmode = newvalue;
Perl_Party_UpdateVars();
end
Perl_Party_Set_Text_Positions();
if (compactmode == 0) then
Perl_Party_MemberFrame1_StatsFrame:SetWidth(240);
Perl_Party_MemberFrame2_StatsFrame:SetWidth(240);
Perl_Party_MemberFrame3_StatsFrame:SetWidth(240);
Perl_Party_MemberFrame4_StatsFrame:SetWidth(240);
Perl_Party_MemberFrame1_StatsFrame_CastClickOverlay:SetWidth(240);
Perl_Party_MemberFrame2_StatsFrame_CastClickOverlay:SetWidth(240);
Perl_Party_MemberFrame3_StatsFrame_CastClickOverlay:SetWidth(240);
Perl_Party_MemberFrame4_StatsFrame_CastClickOverlay:SetWidth(240);
else
if (compactpercent == 0) then
Perl_Party_MemberFrame1_StatsFrame:SetWidth(170);
Perl_Party_MemberFrame2_StatsFrame:SetWidth(170);
Perl_Party_MemberFrame3_StatsFrame:SetWidth(170);
Perl_Party_MemberFrame4_StatsFrame:SetWidth(170);
Perl_Party_MemberFrame1_StatsFrame_CastClickOverlay:SetWidth(170);
Perl_Party_MemberFrame2_StatsFrame_CastClickOverlay:SetWidth(170);
Perl_Party_MemberFrame3_StatsFrame_CastClickOverlay:SetWidth(170);
Perl_Party_MemberFrame4_StatsFrame_CastClickOverlay:SetWidth(170);
else
Perl_Party_MemberFrame1_StatsFrame:SetWidth(205);
Perl_Party_MemberFrame2_StatsFrame:SetWidth(205);
Perl_Party_MemberFrame3_StatsFrame:SetWidth(205);
Perl_Party_MemberFrame4_StatsFrame:SetWidth(205);
Perl_Party_MemberFrame1_StatsFrame_CastClickOverlay:SetWidth(205);
Perl_Party_MemberFrame2_StatsFrame_CastClickOverlay:SetWidth(205);
Perl_Party_MemberFrame3_StatsFrame_CastClickOverlay:SetWidth(205);
Perl_Party_MemberFrame4_StatsFrame_CastClickOverlay:SetWidth(205);
end
end
Perl_Party_Update_Health_Mana();
Perl_Party_Update_Buffs();
end
function Perl_Party_Set_Healer(newvalue)
healermode = newvalue;
Perl_Party_UpdateVars();
Perl_Party_Set_Text_Positions();
Perl_Party_Update_Health_Mana();
end
function Perl_Party_Set_Pets(newvalue)
if (newvalue ~= nil) then
showpets = newvalue;
Perl_Party_UpdateVars();
end
if (showpets == 0) then -- copied from below sort of, delete below when slash commands are removed
Perl_Party_MemberFrame1_StatsFrame_PetHealthBar:Hide();
Perl_Party_MemberFrame1_StatsFrame_PetHealthBarBG:Hide();
Perl_Party_MemberFrame1_StatsFrame_PetHealthBar_CastClickOverlay:Hide();
Perl_Party_MemberFrame1_StatsFrame:SetHeight(42);
Perl_Party_MemberFrame1_StatsFrame_CastClickOverlay:SetHeight(42);
Perl_Party_MemberFrame2_StatsFrame_PetHealthBar:Hide();
Perl_Party_MemberFrame2_StatsFrame_PetHealthBarBG:Hide();
Perl_Party_MemberFrame2_StatsFrame_PetHealthBar_CastClickOverlay:Hide();
Perl_Party_MemberFrame2_StatsFrame:SetHeight(42);
Perl_Party_MemberFrame2_StatsFrame_CastClickOverlay:SetHeight(42);
Perl_Party_MemberFrame3_StatsFrame_PetHealthBar:Hide();
Perl_Party_MemberFrame3_StatsFrame_PetHealthBarBG:Hide();
Perl_Party_MemberFrame3_StatsFrame_PetHealthBar_CastClickOverlay:Hide();
Perl_Party_MemberFrame3_StatsFrame:SetHeight(42);
Perl_Party_MemberFrame3_StatsFrame_CastClickOverlay:SetHeight(42);
Perl_Party_MemberFrame4_StatsFrame_PetHealthBar:Hide();
Perl_Party_MemberFrame4_StatsFrame_PetHealthBarBG:Hide();
Perl_Party_MemberFrame4_StatsFrame_PetHealthBar_CastClickOverlay:Hide();
Perl_Party_MemberFrame4_StatsFrame:SetHeight(42);
Perl_Party_MemberFrame4_StatsFrame_CastClickOverlay:SetHeight(42);
--DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Party Frame is now |cffffffffHiding Pets|cffffff00.");
else
local partypethealth, partypethealthmax, partypethealthpercent;
for partynum=1,4 do
local partyid = "party"..partynum;
local frame = getglobal("Perl_Party_MemberFrame"..partynum);
if (UnitName(partyid) ~= nil) then
if (UnitIsConnected(partyid) and UnitExists("partypet"..partynum)) then
partypethealth = UnitHealth("partypet"..partynum);
partypethealthmax = UnitHealthMax("partypet"..partynum);
partypethealthpercent = floor(partypethealth/partypethealthmax*100+0.5);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar"):Show();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBarBG"):Show();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_CastClickOverlay"):Show();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame"):SetHeight(54);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_CastClickOverlay"):SetHeight(54);
if (partyspacing < 0) then -- Frames are normal
if (partynum == 1 or partynum == 2 or partynum == 3) then
local idspace = partynum + 1;
local partypetspacing;
partypetspacing = partyspacing - 12;
getglobal("Perl_Party_MemberFrame"..idspace):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..partynum, "TOPLEFT", 0, partypetspacing);
end
else -- Frames are inverted
if (partynum == 2 or partynum == 3 or partynum == 4) then
local idspace = partynum - 1;
local partypetspacing;
partypetspacing = partyspacing + 12;
getglobal("Perl_Party_MemberFrame"..partynum):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..idspace, "TOPLEFT", 0, partypetspacing);
end
end
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar"):SetMinMaxValues(0, partypethealthmax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar"):SetValue(partypethealth);
if (compactmode == 0) then
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText(partypethealth.."/"..partypethealthmax);
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText(partypethealthpercent.."%");
else
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarText"):SetText();
getglobal("Perl_Party_MemberFrame"..partynum.."_StatsFrame_PetHealthBar_PetHealthBarTextPercent"):SetText(partypethealth.."/"..partypethealthmax);
end
end
else
-- should be hidden, and will correctly adjust later when needed
end
end
--DEFAULT_CHAT_FRAME:AddMessage("|cffffff00Party Frame is now |cffffffffShowing Pets|cffffff00.");
end
Perl_Party_Set_Space();
Perl_Party_Update_Health_Mana();
Perl_Party_Update_Buffs();
end
function Perl_Party_Set_Lock(newvalue)
locked = newvalue;
Perl_Party_UpdateVars();
end
function Perl_Party_Set_VerticalAlign(newvalue)
verticalalign = newvalue;
Perl_Party_UpdateVars();
Perl_Party_Set_Space();
end
function Perl_Party_Set_Compact_Percent(newvalue)
compactpercent = newvalue;
Perl_Party_UpdateVars();
Perl_Party_Set_Compact();
end
function Perl_Party_Set_Portrait(newvalue)
showportrait = newvalue;
Perl_Party_UpdateVars();
Perl_Party_Update_Portrait(1);
Perl_Party_Update_Portrait(2);
Perl_Party_Update_Portrait(3);
Perl_Party_Update_Portrait(4);
end
function Perl_Party_Set_3D_Portrait(newvalue)
threedportrait = newvalue;
Perl_Party_UpdateVars();
Perl_Party_Update_Portrait(1);
Perl_Party_Update_Portrait(2);
Perl_Party_Update_Portrait(3);
Perl_Party_Update_Portrait(4);
end
function Perl_Party_Set_FKeys(newvalue)
showfkeys = newvalue;
Perl_Party_UpdateVars();
Perl_Party_Force_Update();
end
function Perl_Party_Set_Class_Buffs(newvalue)
if (newvalue ~= nil) then
displaycastablebuffs = newvalue;
end
Perl_Party_UpdateVars();
Perl_Party_Reset_Buffs(); -- Reset the buff icons and set size
Perl_Party_Update_Buffs(); -- Repopulate the buff icons
end
function Perl_Party_Set_Buff_Location(newvalue)
if (newvalue ~= nil) then
bufflocation = newvalue;
end
Perl_Party_UpdateVars();
Perl_Party_Reset_Buffs(); -- Reset the buff icons and set size
Perl_Party_Update_Buffs(); -- Repopulate the buff icons
end
function Perl_Party_Set_Debuff_Location(newvalue)
if (newvalue ~= nil) then
debufflocation = newvalue;
end
Perl_Party_UpdateVars();
Perl_Party_Reset_Buffs(); -- Reset the buff icons and set size
Perl_Party_Update_Buffs(); -- Repopulate the buff icons
end
function Perl_Party_Set_Buff_Size(newvalue)
if (newvalue ~= nil) then
buffsize = newvalue;
end
Perl_Party_UpdateVars();
Perl_Party_Reset_Buffs(); -- Reset the buff icons and set size
Perl_Party_Update_Buffs(); -- Repopulate the buff icons
end
function Perl_Party_Set_Debuff_Size(newvalue)
if (newvalue ~= nil) then
debuffsize = newvalue;
end
Perl_Party_UpdateVars();
Perl_Party_Reset_Buffs(); -- Reset the buff icons and set size
Perl_Party_Update_Buffs(); -- Repopulate the buff icons
end
function Perl_Party_Set_Scale(number)
local unsavedscale;
if (number ~= nil) then
scale = (number / 100);
end
unsavedscale = 1 - UIParent:GetEffectiveScale() + scale; -- run it through the scaling formula introduced in 1.9
Perl_Party_MemberFrame1:SetScale(unsavedscale);
Perl_Party_MemberFrame2:SetScale(unsavedscale);
Perl_Party_MemberFrame3:SetScale(unsavedscale);
Perl_Party_MemberFrame4:SetScale(unsavedscale);
Perl_Party_UpdateVars();
end
function Perl_Party_Set_Transparency(number)
if (number ~= nil) then
transparency = (number / 100);
end
Perl_Party_MemberFrame1:SetAlpha(transparency);
Perl_Party_MemberFrame2:SetAlpha(transparency);
Perl_Party_MemberFrame3:SetAlpha(transparency);
Perl_Party_MemberFrame4:SetAlpha(transparency);
Perl_Party_UpdateVars();
end
------------------------------
-- Saved Variable Functions --
------------------------------
function Perl_Party_GetVars()
locked = Perl_Party_Config[UnitName("player")]["Locked"];
compactmode = Perl_Party_Config[UnitName("player")]["CompactMode"];
partyhidden = Perl_Party_Config[UnitName("player")]["PartyHidden"];
partyspacing = Perl_Party_Config[UnitName("player")]["PartySpacing"];
scale = Perl_Party_Config[UnitName("player")]["Scale"];
showpets = Perl_Party_Config[UnitName("player")]["ShowPets"];
healermode = Perl_Party_Config[UnitName("player")]["HealerMode"];
transparency = Perl_Party_Config[UnitName("player")]["Transparency"];
bufflocation = Perl_Party_Config[UnitName("player")]["BuffLocation"];
debufflocation = Perl_Party_Config[UnitName("player")]["DebuffLocation"];
verticalalign = Perl_Party_Config[UnitName("player")]["VerticalAlign"];
compactpercent = Perl_Party_Config[UnitName("player")]["CompactPercent"];
showportrait = Perl_Party_Config[UnitName("player")]["ShowPortrait"];
showfkeys = Perl_Party_Config[UnitName("player")]["ShowFKeys"];
displaycastablebuffs = Perl_Party_Config[UnitName("player")]["DisplayCastableBuffs"];
threedportrait = Perl_Party_Config[UnitName("player")]["ThreeDPortrait"];
buffsize = Perl_Party_Config[UnitName("player")]["BuffSize"];
debuffsize = Perl_Party_Config[UnitName("player")]["DebuffSize"];
if (locked == nil) then
locked = 0;
end
if (compactmode == nil) then
compactmode = 0;
end
if (partyhidden == nil) then
partyhidden = 0;
end
if (partyspacing == nil) then
partyspacing = -80;
end
if (scale == nil) then
scale = 1;
end
if (showpets == nil) then
showpets = 1;
end
if (healermode == nil) then
healermode = 0;
end
if (transparency == nil) then
transparency = 1;
end
if (bufflocation == nil) then
bufflocation = 4;
end
if (debufflocation == nil) then
debufflocation = 1;
end
if (verticalalign == nil) then
verticalalign = 1;
end
if (compactpercent == nil) then
compactpercent = 0;
end
if (showportrait == nil) then
showportrait = 0;
end
if (showfkeys == nil) then
showfkeys = 0;
end
if (displaycastablebuffs == nil) then
displaycastablebuffs = 0;
end
if (threedportrait == nil) then
threedportrait = 0;
end
if (buffsize == nil) then
buffsize = 16;
end
if (debuffsize == nil) then
debuffsize = 16;
end
local vars = {
["locked"] = locked,
["compactmode"] = compactmode,
["partyhidden"] = partyhidden,
["partyspacing"] = partyspacing,
["scale"] = scale,
["showpets"] = showpets,
["healermode"] = healermode,
["transparency"] = transparency,
["bufflocation"] = bufflocation,
["debufflocation"] = debufflocation,
["verticalalign"] = verticalalign,
["compactpercent"] = compactpercent,
["showportrait"] = showportrait,
["showfkeys"] = showfkeys,
["displaycastablebuffs"] = displaycastablebuffs,
["threedportrait"] = threedportrait,
["buffsize"] = buffsize,
["debuffsize"] = debuffsize,
}
return vars;
end
function Perl_Party_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"]["CompactMode"] ~= nil) then
compactmode = vartable["Global Settings"]["CompactMode"];
else
compactmode = nil;
end
if (vartable["Global Settings"]["PartyHidden"] ~= nil) then
partyhidden = vartable["Global Settings"]["PartyHidden"];
else
partyhidden = nil;
end
if (vartable["Global Settings"]["PartySpacing"] ~= nil) then
partyspacing = vartable["Global Settings"]["PartySpacing"];
else
partyspacing = nil;
end
if (vartable["Global Settings"]["Scale"] ~= nil) then
scale = vartable["Global Settings"]["Scale"];
else
scale = nil;
end
if (vartable["Global Settings"]["ShowPets"] ~= nil) then
showpets = vartable["Global Settings"]["ShowPets"];
else
showpets = 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"]["BuffLocation"] ~= nil) then
bufflocation = vartable["Global Settings"]["BuffLocation"];
else
bufflocation = nil;
end
if (vartable["Global Settings"]["DebuffLocation"] ~= nil) then
debufflocation = vartable["Global Settings"]["DebuffLocation"];
else
debufflocation = nil;
end
if (vartable["Global Settings"]["VerticalAlign"] ~= nil) then
verticalalign = vartable["Global Settings"]["VerticalAlign"];
else
verticalalign = nil;
end
if (vartable["Global Settings"]["CompactPercent"] ~= nil) then
compactpercent = vartable["Global Settings"]["CompactPercent"];
else
compactpercent = nil;
end
if (vartable["Global Settings"]["ShowPortrait"] ~= nil) then
showportrait = vartable["Global Settings"]["ShowPortrait"];
else
showportrait = nil;
end
if (vartable["Global Settings"]["ShowFKeys"] ~= nil) then
showfkeys = vartable["Global Settings"]["ShowFKeys"];
else
showfkeys = nil;
end
if (vartable["Global Settings"]["DisplayCastableBuffs"] ~= nil) then
displaycastablebuffs = vartable["Global Settings"]["DisplayCastableBuffs"];
else
displaycastablebuffs = nil;
end
if (vartable["Global Settings"]["ThreeDPortrait"] ~= nil) then
threedportrait = vartable["Global Settings"]["ThreeDPortrait"];
else
threedportrait = nil;
end
if (vartable["Global Settings"]["BuffSize"] ~= nil) then
buffsize = vartable["Global Settings"]["BuffSize"];
else
buffsize = nil;
end
if (vartable["Global Settings"]["DebuffSize"] ~= nil) then
debuffsize = vartable["Global Settings"]["DebuffSize"];
else
debuffsize = 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 (compactmode == nil) then
compactmode = 0;
end
if (partyhidden == nil) then
partyhidden = 0;
end
if (partyspacing == nil) then
partyspacing = -80;
end
if (scale == nil) then
scale = 1;
end
if (showpets == nil) then
showpets = 1;
end
if (healermode == nil) then
healermode = 0;
end
if (transparency == nil) then
transparency = 1;
end
if (bufflocation == nil) then
bufflocation = 4;
end
if (debufflocation == nil) then
debufflocation = 1;
end
if (verticalalign == nil) then
verticalalign = 1;
end
if (compactpercent == nil) then
compactpercent = 0;
end
if (showportrait == nil) then
showportrait = 0;
end
if (showfkeys == nil) then
showfkeys = 0;
end
if (displaycastablebuffs == nil) then
displaycastablebuffs = 0;
end
if (threedportrait == nil) then
threedportrait = 0;
end
if (buffsize == nil) then
buffsize = 16;
end
if (debuffsize == nil) then
debuffsize = 16;
end
-- Call any code we need to activate them
Perl_Party_Set_Space(); -- This probably isn't needed, but one extra call for this won't matter
Perl_Party_Set_Hidden(partyhidden);
Perl_Party_Set_Compact(compactmode);
Perl_Party_Set_Healer(healermode);
Perl_Party_Set_Pets(showpets);
Perl_Party_Reset_Buffs(); -- Reset the buff icons and set sizes
Perl_Party_Update_Buffs(); -- Repopulate the buff icons
Perl_Party_Set_Scale();
Perl_Party_Set_Transparency();
end
Perl_Party_Config[UnitName("player")] = {
["Locked"] = locked,
["CompactMode"] = compactmode,
["PartyHidden"] = partyhidden,
["PartySpacing"] = partyspacing,
["Scale"] = scale,
["ShowPets"] = showpets,
["HealerMode"] = healermode,
["Transparency"] = transparency,
["BuffLocation"] = bufflocation,
["DebuffLocation"] = debufflocation,
["VerticalAlign"] = verticalalign,
["CompactPercent"] = compactpercent,
["ShowPortrait"] = showportrait,
["ShowFKeys"] = showfkeys,
["DisplayCastableBuffs"] = displaycastablebuffs,
["ThreeDPortrait"] = threedportrait,
["BuffSize"] = buffsize,
["DebuffSize"] = debuffsize,
};
end
--------------------
-- Buff Functions --
--------------------
function Perl_Party_Buff_UpdateAll(partymember)
local id, partyid;
if (partymember == nil) then
id = this:GetID();
partyid = "party"..id;
else
id = partymember;
partyid = "party"..id;
end
if (UnitName(partyid)) then
for buffnum=1,16 do
local button = getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Buff"..buffnum);
local icon = getglobal(button:GetName().."Icon");
local debuff = getglobal(button:GetName().."DebuffBorder");
if (UnitBuff(partyid, buffnum, displaycastablebuffs)) then
icon:SetTexture(UnitBuff(partyid, buffnum, displaycastablebuffs));
debuff:Hide();
button:Show();
else
button:Hide();
end
end
local debuffCount, debuffTexture, debuffApplications;
for buffnum=1,16 do
debuffTexture, debuffApplications = UnitDebuff(partyid, buffnum, displaycastablebuffs);
local button = getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Debuff"..buffnum);
local icon = getglobal(button:GetName().."Icon");
local debuff = getglobal(button:GetName().."DebuffBorder");
if (UnitDebuff(partyid, buffnum, displaycastablebuffs)) then
icon:SetTexture(UnitDebuff(partyid, buffnum, displaycastablebuffs));
debuff:Show();
button:Show();
debuffCount = getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Debuff"..(buffnum).."Count");
if (debuffApplications > 1) then
debuffCount:SetText(debuffApplications);
debuffCount:Show();
else
debuffCount:Hide();
end
else
button:Hide();
end
end
Perl_Party_Buff_Position_Update(id, partyid);
end
end
function Perl_Party_Update_Buffs()
Perl_Party_Buff_UpdateAll(1);
Perl_Party_Buff_UpdateAll(2);
Perl_Party_Buff_UpdateAll(3);
Perl_Party_Buff_UpdateAll(4);
end
function Perl_Party_Buff_Position_Update(id, partyid)
if (bufflocation == 1) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Buff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_NameFrame", "TOPRIGHT", 0, -3);
elseif (bufflocation == 2) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Buff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_StatsFrame", "TOPRIGHT", 0, -3);
elseif (bufflocation == 3) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Buff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_StatsFrame", "TOPRIGHT", 0, -23);
elseif (bufflocation == 4) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Buff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_StatsFrame", "BOTTOMLEFT", -27, 0);
elseif (bufflocation == 5) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Buff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_StatsFrame", "BOTTOMLEFT", -27, -20);
end
if (debufflocation == 1) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Debuff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_NameFrame", "TOPRIGHT", 0, -3);
elseif (debufflocation == 2) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Debuff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_StatsFrame", "TOPRIGHT", 0, -3);
elseif (debufflocation == 3) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Debuff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_StatsFrame", "TOPRIGHT", 0, -23);
elseif (debufflocation == 4) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Debuff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_StatsFrame", "BOTTOMLEFT", -27, 0);
elseif (debufflocation == 5) then
getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Debuff1"):SetPoint("TOPLEFT", "Perl_Party_MemberFrame"..id.."_StatsFrame", "BOTTOMLEFT", -27, -20);
end
end
function Perl_Party_Reset_Buffs()
local button, debuff, icon;
for id=1,4 do
for buffnum=1,16 do
button = getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Buff"..buffnum);
icon = getglobal(button:GetName().."Icon");
debuff = getglobal(button:GetName().."DebuffBorder");
button:SetHeight(buffsize);
button:SetWidth(buffsize);
icon:SetHeight(buffsize);
icon:SetWidth(buffsize);
debuff:SetHeight(buffsize);
debuff:SetWidth(buffsize);
button:Hide();
end
for buffnum=1,16 do
button = getglobal("Perl_Party_MemberFrame"..id.."_BuffFrame_Debuff"..buffnum);
icon = getglobal(button:GetName().."Icon");
debuff = getglobal(button:GetName().."DebuffBorder");
button:SetHeight(debuffsize);
button:SetWidth(debuffsize);
icon:SetHeight(debuffsize);
icon:SetWidth(debuffsize);
debuff:SetHeight(debuffsize);
debuff:SetWidth(debuffsize);
button:Hide();
end
end
end
function Perl_Party_SetBuffTooltip()
local partyid = "party"..this:GetParent():GetParent():GetID();
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT");
if (this:GetID() > 16) then
GameTooltip:SetUnitDebuff(partyid, this:GetID()-16); -- 16 being the number of buffs before debuffs in the xml
else
GameTooltip:SetUnitBuff(partyid, this:GetID());
end
end
--------------------
-- Click Handlers --
--------------------
function Perl_PartyDropDown_OnLoad()
UIDropDownMenu_Initialize(this, Perl_PartyDropDown_Initialize, "MENU");
end
function Perl_PartyDropDown_Initialize()
local dropdown;
local id = this:GetID();
if (UIDROPDOWNMENU_OPEN_MENU) then
dropdown = getglobal(UIDROPDOWNMENU_OPEN_MENU);
else
dropdown = this;
end
if (id == 0) then
local name = this:GetName();
id = string.sub(name, 23, 23);
end
UnitPopup_ShowMenu(dropdown, "PARTY", "party"..id);
end
function Perl_Party_MouseClick(button)
local id = this:GetID();
if (id == 0) then
local name = this:GetName();
id = string.sub(name, 23, 23);
end
if (CastPartyConfig and PCUF_CASTPARTYSUPPORT == 1) then
if (not string.find(GetMouseFocus():GetName(), "Name")) then
CastParty_OnClickByUnit(button, "party"..id);
end
elseif (Genesis_data and PCUF_CASTPARTYSUPPORT == 1) then
if (not string.find(GetMouseFocus():GetName(), "Name")) then
Genesis_MouseHeal("party"..id, button);
end
else
if (SpellIsTargeting() and button == "RightButton") then
SpellStopTargeting();
return;
end
if (button == "LeftButton") then
if (SpellIsTargeting()) then
SpellTargetUnit("party"..id);
elseif (CursorHasItem()) then
DropItemOnUnit("party"..id);
else
TargetUnit("party"..id);
end
end
end
end
function Perl_Party_MouseDown(button)
if (button == "LeftButton" and locked == 0) then
Perl_Party_Frame:StartMoving();
end
end
function Perl_Party_MouseUp(button)
local id = this:GetID();
if (id == 0) then
local name = this:GetName();
id = string.sub(name, 23, 23);
end
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, getglobal("Perl_Party_MemberFrame"..id.."_DropDown"), "Perl_Party_MemberFrame"..id, 0, 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, getglobal("Perl_Party_MemberFrame"..id.."_DropDown"), "Perl_Party_MemberFrame"..id, 0, 0);
end
end
end
Perl_Party_Frame:StopMovingOrSizing();
end
function Perl_Party_Pet_MouseClick(button)
local id = this:GetID();
if (id == 0) then
local name = this:GetName();
id = string.sub(name, 23, 23);
end
if (CastPartyConfig and PCUF_CASTPARTYSUPPORT == 1) then
if (not string.find(GetMouseFocus():GetName(), "Name")) then
CastParty_OnClickByUnit(button, "partypet"..id);
end
elseif (Genesis_data and PCUF_CASTPARTYSUPPORT == 1) then
if (not string.find(GetMouseFocus():GetName(), "Name")) then
Genesis_MouseHeal("partypet"..id, button);
end
else
if (SpellIsTargeting() and button == "RightButton") then
SpellStopTargeting();
return;
end
if (button == "LeftButton") then
if (SpellIsTargeting()) then
SpellTargetUnit("partypet"..id);
elseif (CursorHasItem()) then
DropItemOnUnit("partypet"..id);
else
TargetUnit("partypet"..id);
end
end
end
end
-------------
-- Tooltip --
-------------
function Perl_Party_Tip()
local id = this:GetID();
if (id == 0) then
local name=this:GetName();
id = string.sub(name, 23, 23);
end
UnitFrame_Initialize("party"..id)
end
function UnitFrame_Initialize(unit) -- Hopefully this doesn't break any mods
this.unit = unit;
end
----------------------
-- myAddOns Support --
----------------------
function Perl_Party_myAddOns_Support()
-- Register the addon in myAddOns
if (myAddOnsFrame_Register) then
local Perl_Party_myAddOns_Details = {
name = "Perl_Party",
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_Party_myAddOns_Help = {};
Perl_Party_myAddOns_Help[1] = "/perl";
myAddOnsFrame_Register(Perl_Party_myAddOns_Details, Perl_Party_myAddOns_Help);
end
end
Generated by GNU Enscript 1.6.5.90.