diff --git a/libs/libhealth.lua b/libs/libhealth.lua deleted file mode 100644 index df89876..0000000 --- a/libs/libhealth.lua +++ /dev/null @@ -1,108 +0,0 @@ -local _G = ShaguTweaks.GetGlobalEnv() -local L = ShaguTweaks.L -local GetExpansion = ShaguTweaks.GetExpansion - -local mobdb = {} -local target, dmg, perc, diff = nil, 0, 0, 0, 0 -local UnitHealth, UnitHealthMax -local libhealth = CreateFrame("Frame") -libhealth.enabled = true -libhealth.reqhit = 4 -libhealth.reqdmg = 5 -libhealth:RegisterEvent("UNIT_HEALTH") -libhealth:RegisterEvent("UNIT_COMBAT") -libhealth:RegisterEvent("PLAYER_TARGET_CHANGED") -libhealth:RegisterEvent("PLAYER_ENTERING_WORLD") -libhealth:SetScript("OnEvent", function() - if event == "PLAYER_ENTERING_WORLD" then - -- create initial health cache tables - ShaguTweaks_cache = ShaguTweaks_cache or {} - ShaguTweaks_cache["libhealth"] = ShaguTweaks_cache["libhealth"] or {} - mobdb = ShaguTweaks_cache["libhealth"] - - -- load enable state and set functions - libhealth.enabled = true - libhealth.reqhit = 2 - libhealth.reqdmg = 10 - end - - -- return as we're not supposed to be here - if not libhealth.enabled then this:UnregisterAllEvents() return end - - -- try to estimate mob health based on combat and health events - if event == "PLAYER_TARGET_CHANGED" then - dmg, perc = 0, _G.UnitHealth("target") - if UnitName("target") and UnitLevel("target") and _G.UnitHealthMax("target") == 100 then - target = string.format("%s:%d",UnitName("target"), UnitLevel("target")) - else - target = nil - end - elseif target and event == "UNIT_COMBAT" and arg1 == "target" then - if arg2 and arg2 == "HEAL" then return end - dmg = dmg + arg4 - elseif target and event == "UNIT_HEALTH" and arg1 == "target" then - diff = perc-_G.UnitHealth("target") - if dmg > 0 and diff > 0 then - mobdb[target] = mobdb[target] or {} - if not mobdb[target][2] or diff > mobdb[target][2] then - mobdb[target][1] = ceil(dmg / diff * 100) - mobdb[target][2] = diff - mobdb[target][3] = mobdb[target][3] and mobdb[target][3] + 1 or 1 - end - end - end -end) - --- core function to query the generated database -local unit, level, cur, max, dbstring -local function GetUnitHealth(self, unitstr) - unit = UnitName(unitstr) - level = UnitLevel(unitstr) - cur = _G.UnitHealth(unitstr) - max = _G.UnitHealthMax(unitstr) - - -- return raw values if another addon is replacing global API calls - if cur > 100 or max > 100 or max < 100 then - return cur, max, true - end - - -- return raw values if no unit data could be found (unlikely but happened...) - if not unit or not level then - return cur, max - end - - -- query the database for known values - dbstring = string.format("%s:%s", unit, level) - if mobdb[dbstring] and mobdb[dbstring][1] and mobdb[dbstring][2] > libhealth.reqdmg and (not mobdb[dbstring][3] or mobdb[dbstring][3] > libhealth.reqhit) then - return ceil(mobdb[dbstring][1]/100*cur), mobdb[dbstring][1], true - end - - -- return raw values as fallback - return cur, max -end - -local function GetUnitHealthByName(self, unit, level, cur, max) - -- return raw values if another addon is replacing global API calls - if cur > 100 or max > 100 or max < 100 then - return cur, max, true - end - - -- return raw values if no unit data could be found (unlikely but happened...) - if not unit or not level then - return cur, max - end - - -- query the database for known values - dbstring = string.format("%s:%s", unit, level) - if mobdb[dbstring] and mobdb[dbstring][1] and mobdb[dbstring][2] > libhealth.reqdmg and (not mobdb[dbstring][3] or mobdb[dbstring][3] > libhealth.reqhit) then - return ceil(mobdb[dbstring][1]/100*cur), mobdb[dbstring][1], true - end - - -- return raw values as fallback - return cur, max -end - --- add api calls to global tree -ShaguTweaks.libhealth = libhealth -ShaguTweaks.libhealth.GetUnitHealth = GetUnitHealth -ShaguTweaks.libhealth.GetUnitHealthByName = GetUnitHealthByName