mirror of
https://github.com/Bluewhale1337/ElvUIModernized.git
synced 2026-07-27 08:24:44 +00:00
71 lines
1.9 KiB
Lua
71 lines
1.9 KiB
Lua
local E, L, V, P, G = unpack(ElvUI); --Import: Engine, Locales, PrivateDB, ProfileDB, GlobalDB
|
|
local DT = E:GetModule("DataTexts");
|
|
|
|
--Cache global variables
|
|
--Lua functions
|
|
local format = string.format
|
|
local join = string.join
|
|
--WoW API / Variables
|
|
local UnitArmor = UnitArmor
|
|
local UnitLevel = UnitLevel
|
|
local ARMOR = ARMOR
|
|
|
|
local lastPanel
|
|
local chanceString = "%.2f%%"
|
|
local displayString = ""
|
|
local _, effectiveArmor
|
|
|
|
local function PaperDollFrame_GetArmorReduction(armor, attackerLevel)
|
|
local levelModifier = attackerLevel
|
|
if levelModifier > 59 then
|
|
levelModifier = levelModifier + (4.5 * (levelModifier - 59))
|
|
end
|
|
local temp = 0.1 * armor/(8.5 * levelModifier + 40)
|
|
temp = temp/(1 + temp)
|
|
|
|
if temp > 0.75 then return 75 end
|
|
if temp < 0 then return 0 end
|
|
|
|
return temp*100
|
|
end
|
|
|
|
local function OnEvent(self)
|
|
_, effectiveArmor = UnitArmor("player")
|
|
|
|
self.text:SetText(format(displayString, ARMOR, effectiveArmor))
|
|
lastPanel = self
|
|
end
|
|
|
|
local function OnEnter(self)
|
|
DT:SetupTooltip(self)
|
|
|
|
DT.tooltip:AddLine(L["Mitigation By Level: "])
|
|
DT.tooltip:AddLine(" ")
|
|
|
|
local playerLevel = UnitLevel("player") + 3
|
|
for i = 1, 4 do
|
|
local armorReduction = PaperDollFrame_GetArmorReduction(effectiveArmor, playerLevel)
|
|
DT.tooltip:AddDoubleLine(playerLevel, format(chanceString, armorReduction), 1, 1, 1)
|
|
playerLevel = playerLevel - 1
|
|
end
|
|
|
|
local targetLevel = UnitLevel("target")
|
|
if targetLevel and targetLevel > 0 and (targetLevel > playerLevel + 3 or targetLevel < playerLevel) then
|
|
local armorReduction = PaperDollFrame_GetArmorReduction(effectiveArmor, targetLevel)
|
|
DT.tooltip:AddDoubleLine(targetLevel, format(chanceString, armorReduction), 1, 1, 1)
|
|
end
|
|
|
|
DT.tooltip:Show()
|
|
end
|
|
|
|
local function ValueColorUpdate(hex)
|
|
displayString = join("", "%s: ", hex, "%d|r")
|
|
|
|
if lastPanel ~= nil then
|
|
OnEvent(lastPanel)
|
|
end
|
|
end
|
|
E.valueColorUpdateFuncs[ValueColorUpdate] = true
|
|
|
|
DT:RegisterDatatext("Armor", {"UNIT_RESISTANCES"}, OnEvent, nil, nil, OnEnter, nil, ARMOR)
|