Files
wow-weakauras/Complete Projects/BFA/TSU - Combat HP Bars.lua
2024-08-24 22:43:07 +02:00

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