vanilla-wow-addons – Rev 1
?pathlinks?
if (not Nurfed_Units) then
local framelib = Nurfed_Frames:New();
Nurfed_Units = {};
Nurfed_Units.class = {
DRUID = { right = 0.75, left = 1, top = 0, bottom = 0.25, color = "|cffff8a00" },
HUNTER = { right = 0, left = 0.25, top = 0.25, bottom = 0.5, color = "|cff00ff00" },
MAGE = { right = 0.25, left = 0.5, top = 0, bottom = 0.25, color = "|cff00ffff" },
PALADIN = { right = 0, left = 0.25, top = 0.5, bottom = 0.75, color = "|cffff71a8" },
PRIEST = { right = 0.5, left = 0.75, top = 0.25, bottom = 0.5, color = "|cffffffff" },
ROGUE = { right = 0.5, left = 0.75, top = 0, bottom = 0.25, color = "|cffffff00" },
SHAMAN = { right = 0.25, left = 0.5, top = 0.25, bottom = 0.5, color = "|cffff71a8" },
WARLOCK = { right = 0.75, left = 1, top = 0.25, bottom = 0.5, color = "|cff8d54fb" },
WARRIOR = { right = 0, left = 0.25, top = 0, bottom = 0.25, color = "|cffb39442" },
};
Nurfed_Units.classification = {
["worldboss"] = BOSS,
["rareelite"] = ITEM_QUALITY3_DESC.."-"..ELITE,
["rare"] = ITEM_QUALITY3_DESC,
["elite"] = ELITE,
};
Nurfed_Units.unitlist = {};
function Nurfed_Units:New ()
local object = {};
setmetatable(object, self);
self.__index = self;
return object;
end
function Nurfed_Units:UpdateUnits()
local i;
self.unitlist = nil;
self.unitlist = {};
if (GetNumPartyMembers() > 0) then
for i = 1, GetNumPartyMembers() do
self.unitlist[UnitName("party"..i)] = { t = "Party", c = UnitClass("party"..i) };
end
end
if (GetNumRaidMembers() > 0) then
for i = 1, GetNumRaidMembers() do
local name, rank, subgroup, _, class, _, _, _, _ = GetRaidRosterInfo(i);
if (name and rank and subgroup and class) then
if (self.unitlist[name]) then
self.unitlist[name].g = subgroup;
self.unitlist[name].r = rank;
else
self.unitlist[name] = { t = "Raid", c = class, g = subgroup, r = rank };
end
end
end
end
end
function Nurfed_Units:GetUnit(name)
if (self.unitlist[name]) then
return self.unitlist[name];
end
return nil;
end
function Nurfed_Units:GetHealth(unit)
local currhp, maxhp = UnitHealth(unit), UnitHealthMax(unit);
if (maxhp == 100 and (IsAddOnLoaded("MobHealth") or IsAddOnLoaded ("MobInfo2")) and unit == "target") then
local check = MobHealth_GetTargetMaxHP();
if (check and check > 0) then
maxhp = check;
currhp = MobHealth_GetTargetCurHP();
else
currhp = UnitHealth(unit);
end
else
currhp = UnitHealth(unit);
end
if (not UnitIsConnected(unit)) then
currhp = 0;
end
local perc = currhp/maxhp;
local color = {};
if(perc > 0.5) then
color.r = (1.0 - perc) * 2;
color.g = 1.0;
else
color.r = 1.0;
color.g = perc * 2;
end
color.b = 0.0;
perc = format("%.0f", floor(perc * 100));
return currhp, maxhp, perc, color;
end
function Nurfed_Units:GetMana(unit)
local currmp, maxmp = UnitMana(unit), UnitManaMax(unit);
if (not UnitIsConnected(unit)) then
currmp = 0;
end
local perc = format("%.0f", (currmp / maxmp) * 100);
return currmp, maxmp, perc;
end
function Nurfed_Units:GetXP(unit)
if (not UnitExists(unit)) then
return 0, 0, 0;
end
local name, reaction, min, max, value = GetWatchedFactionInfo();
local currxp, maxxp, perc;
if (name) then
currxp = value - min;
maxxp = max - min;
else
currxp = UnitXP(unit);
maxxp = UnitXPMax(unit);
end
local perc = format("%.0f", (currxp / maxxp) * 100);
return currxp, maxxp, perc;
end
function Nurfed_Units:GetReaction(unit)
local info = {};
if (UnitPlayerControlled(unit)) then
if (UnitCanAttack(unit, "player")) then
-- Hostile players are red
if (not UnitCanAttack("player", unit)) then
info.r = 0.0;
info.g = 0.0;
info.b = 1.0;
else
info.r = UnitReactionColor[2].r;
info.g = UnitReactionColor[2].g;
info.b = UnitReactionColor[2].b;
end
elseif (UnitCanAttack("player", unit)) then
-- Players we can attack but which are not hostile are yellow
info.r = UnitReactionColor[4].r;
info.g = UnitReactionColor[4].g;
info.b = UnitReactionColor[4].b;
elseif (UnitIsPVP(unit)) then
-- Players we can assist but are PvP flagged are green
info.r = UnitReactionColor[6].r;
info.g = UnitReactionColor[6].g;
info.b = UnitReactionColor[6].b;
else
-- All other players are blue (the usual state on the "blue" server)
info.r = 0.0;
info.g = 1.0;
info.b = 1.0;
end
elseif (UnitIsTapped(unit) and not UnitIsTappedByPlayer(unit)) then
info.r = 0.5;
info.g = 0.5;
info.b = 0.5;
else
local reaction = UnitReaction(unit, "player");
if (reaction) then
info.r = UnitReactionColor[reaction].r;
info.g = UnitReactionColor[reaction].g;
info.b = UnitReactionColor[reaction].b;
else
info.r = 0.0;
info.g = 1.0;
info.b = 1.0;
end
end
return info;
end
function Nurfed_Units:StatusBarUpdate(arg1)
if (this.fade < 1) then
this.fade = this.fade + arg1;
if this.fade > 1 then
this.fade = 1;
end
local delta = this.endvalue - this.startvalue;
local diff = delta * (this.fade / 1);
this.startvalue = this.startvalue + diff;
this:SetValue(this.startvalue);
end
end
function Nurfed_Units:Fade(arg1)
this.update = this.update + arg1;
if (this.update > 0.04) then
this.update = 0;
local now = GetTime();
local frame, texture, p;
if (now - this.flashtime > 0.3) then
this.flashdct = this.flashdct * (-1);
this.flashtime = now;
end
if (this.flashdct == 1) then
p = (1 - (now - this.flashtime + 0.001) / 0.3 * 0.7);
else
p = ( (now - this.flashtime + 0.001) / 0.3 * 0.7 + 0.3);
end
this:SetAlpha(p);
end
end
local tbl = {
type = "Frame",
OnEvent = function() Nurfed_Units:UpdateUnits() end,
events = {
"PLAYER_ENTERING_WORLD",
"PARTY_MEMBERS_CHANGED",
"RAID_ROSTER_UPDATE",
},
};
framelib:ObjectInit("Nurfed_UnitsFrame", tbl, UIParent);
tbl = nil;
end
function Nurfed_RaidFrameDropDown_Initialize()
UnitPopup_ShowMenu(getglobal(UIDROPDOWNMENU_OPEN_MENU), "RAID", this.unit, this.name, this.id);
end
function Nurfed_Unit_OnClick(arg1)
local name, dropdown;
if (SpellIsTargeting() and arg1 == "RightButton") then
SpellStopTargeting();
return;
end
if (arg1 == "LeftButton") then
if (SpellIsTargeting() and SpellCanTargetUnit(this.unit)) then
SpellTargetUnit(this.unit);
elseif (CursorHasItem()) then
if (this.unit == "player") then
AutoEquipCursorItem();
else
DropItemOnUnit(this.unit);
end
else
TargetUnit(this.unit);
end
else
if (string.find(this.unit, "party[1-4]")) then
name = "PartyMemberFrame"..this:GetID();
dropdown = getglobal(name.."DropDown");
elseif (string.find(this.unit, "^raid")) then
FriendsDropDown.initialize = Nurfed_RaidFrameDropDown_Initialize;
FriendsDropDown.displayMode = "MENU";
dropdown = FriendsDropDown;
else
name = string.gsub(this.unit, "^%l", string.upper);
dropdown = getglobal(name.."FrameDropDown");
end
if (dropdown) then
ToggleDropDownMenu(1, nil, dropdown, "cursor");
end
return;
end
end
function Nurfed_SetAuraTooltip()
if (not this:IsVisible()) then return; end
GameTooltip:SetOwner(this, "ANCHOR_BOTTOMRIGHT");
local unit = this:GetParent().unit;
if (this.isdebuff) then
GameTooltip:SetUnitDebuff(unit, this.id);
else
GameTooltip:SetUnitBuff(unit, this.id);
end
end
Generated by GNU Enscript 1.6.5.90.