106 lines
2.8 KiB
Lua
106 lines
2.8 KiB
Lua
--UNIT_HEALTH NAME_PLATE_UNIT_REMOVED NAME_PLATE_UNIT_ADDED UNIT_THREAT_LIST_UPDATE PLAYER_TARGET_CHANGED
|
|
function(allstates, e, u)
|
|
if e == "PLAYER_TARGET_CHANGED" then
|
|
return true
|
|
elseif e == "UNIT_HEALTH" or e == "UNIT_THREAT_LIST_UPDATE" then
|
|
if u then
|
|
print(UnitDetailedThreatSituation("player", u))
|
|
if UnitExists(u) and u:match("nameplate") and UnitDetailedThreatSituation("player", u) then
|
|
local threat = select(5, UnitDetailedThreatSituation("player", u))
|
|
local tank = UnitDetailedThreatSituation("player", u)
|
|
local hp = UnitHealth(u)
|
|
local maxhp = UnitHealthMax(u)
|
|
local php = aura_env.round((hp / maxhp) * 100, 1)
|
|
local name = UnitName(u)
|
|
local target = false
|
|
if UnitIsUnit(u, "target") then target = true end
|
|
allstates[u] =
|
|
{
|
|
show = true,
|
|
changed = true,
|
|
name = name,
|
|
unit = u,
|
|
value = hp,
|
|
total = maxhp,
|
|
index = php,
|
|
shp = aura_env.shorten(hp),
|
|
tank = tank,
|
|
target = target,
|
|
resort = true,
|
|
progressType = "static",
|
|
}
|
|
return true
|
|
end
|
|
end
|
|
elseif e == "NAME_PLATE_UNIT_REMOVED" then
|
|
if allstates[u] then allstates[u].changed = true; allstates[u].show = false; return true end
|
|
elseif e == "NAME_PLATE_UNIT_ADDED" then
|
|
if not allstates[u] then
|
|
if u then
|
|
if UnitExists(u) and UnitDetailedThreatSituation("player", u) then
|
|
local threat = select(5, UnitDetailedThreatSituation("player", u))
|
|
local tank = UnitDetailedThreatSituation("player", u)
|
|
local hp = UnitHealth(u)
|
|
local maxhp = UnitHealthMax(u)
|
|
local php = aura_env.round((hp / maxhp) * 100, 1)
|
|
local name = UnitName(u)
|
|
local target = false
|
|
if UnitIsUnit(u, "target") then target = true end
|
|
allstates[u] =
|
|
{
|
|
show = true,
|
|
changed = true,
|
|
name = name,
|
|
unit = u,
|
|
value = hp,
|
|
total = maxhp,
|
|
index = php,
|
|
shp = aura_env.shorten(hp),
|
|
tank = tank,
|
|
target = target,
|
|
resort = true,
|
|
progressType = "static",
|
|
}
|
|
return true
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
--ADDITIONAL INFO
|
|
{
|
|
tank = "bool",
|
|
target = "bool",
|
|
index = "number",
|
|
}
|
|
|
|
--INIT
|
|
aura_env.round = function(var, n)
|
|
if (n) then
|
|
var = math.floor((var * 10^n) + 0.5) / (10^n)
|
|
else
|
|
var = math.floor(var+0.5)
|
|
end
|
|
return var
|
|
end
|
|
aura_env.shorten = function(val)
|
|
local function round(var, n)
|
|
if (n) then
|
|
var = math.floor((var * 10^n) + 0.5) / (10^n)
|
|
else
|
|
var = math.floor(var+0.5)
|
|
end
|
|
return var
|
|
end
|
|
local n = 2
|
|
if val < 1e3 then
|
|
return round(val, n)
|
|
elseif val > 1e3 and val < 1e6 then
|
|
return round(val / 1e3, n) .. "k"
|
|
elseif val > 1e6 and val < 1e9 then
|
|
return round(val / 1e6, n) .. "M"
|
|
elseif val > 1e9 then
|
|
return round(val / 1e9, n) .. "G"
|
|
end
|
|
end |