Add new code snippets
This commit is contained in:
694
Complete Projects/Legion/EHP.lua
Normal file
694
Complete Projects/Legion/EHP.lua
Normal file
@@ -0,0 +1,694 @@
|
||||
--DISPLAY EVERY FRAME SMH
|
||||
function()
|
||||
--- CPU benchmarking ---
|
||||
local start
|
||||
local aura_env = aura_env
|
||||
local Debug = aura_env.Debug
|
||||
if Debug then
|
||||
aura_env.count = aura_env.count or 1
|
||||
aura_env.count = (aura_env.count + 1) % 600
|
||||
start = debugprofilestop()
|
||||
end
|
||||
|
||||
-- Setting some aura_env to local variables to improve performance --
|
||||
local ClassID = aura_env.ClassID
|
||||
local SpecID = aura_env.SpecID
|
||||
local AoE = aura_env.AoE
|
||||
local Mode = aura_env.Mode
|
||||
local ColorFunction = aura_env.Color
|
||||
local Threshold = aura_env.Threshold
|
||||
local BasicReductions = aura_env.BasicReductions
|
||||
|
||||
-- Armor calulation // Armor scales differently depending on the enemy level, this makes sure is stays accurate --
|
||||
local Armor = select(2, UnitArmor("player"))
|
||||
Armor = 1 - C_PaperDollInfo.GetArmorEffectiveness(Armor, aura_env.TargetLevel) -- Gets the reduction percentage and makes it usable
|
||||
|
||||
-- All Classes
|
||||
local CurrentHealth = UnitHealth("player")
|
||||
local MaxHealth = UnitHealthMax("player")
|
||||
local Vers = 1 - (GetCombatRatingBonus(31) / 100)
|
||||
local Avoid = 1
|
||||
local ScanTarget = false
|
||||
if AoE then
|
||||
Avoid = 1 - (GetAvoidance() / 100)
|
||||
end
|
||||
local Elusive = 1
|
||||
local StaggerP, StaggerM = 1, 1
|
||||
local Absorbs = UnitGetTotalAbsorbs("player")
|
||||
local AbsorbsP, AbsorbsM = Absorbs, Absorbs
|
||||
|
||||
-- Initialize some variables --
|
||||
local ClassDRP, ClassDRM = 1, 1
|
||||
local PImmunity, MImmunity = 0, 0
|
||||
|
||||
----- General damage reduction buffs -----
|
||||
local n = 1
|
||||
local BuffID = select(10, UnitBuff("player", n))
|
||||
while BuffID do
|
||||
local Reduction = 1
|
||||
local PhysicalReduction = 1
|
||||
local MagicReduction = 1
|
||||
|
||||
if BasicReductions[BuffID] then
|
||||
ClassDRP = ClassDRP * BasicReductions[BuffID][1]
|
||||
ClassDRM = ClassDRM * BasicReductions[BuffID][2]
|
||||
end
|
||||
|
||||
---- More complex tracking ----
|
||||
|
||||
local AMS, BloodS = 0, 0
|
||||
|
||||
--- Death Knight ---
|
||||
if BuffID == 48792 then
|
||||
Reduction = 1 + (tonumber(select(18, UnitBuff("player", n)) or 0)) / 100 -- Icebound Fortitude // using plus since the tooltip returns a negative value
|
||||
|
||||
elseif BuffID == 48707 then
|
||||
AMS = (select(16, UnitBuff("player", n)) or 0) -- Anti-Magic Shell
|
||||
|
||||
elseif BuffID == 77535 then
|
||||
BloodS = (select(16, UnitBuff("player", n)) or 0) -- Blood Shield
|
||||
|
||||
--- Demon Hunter ---
|
||||
elseif BuffID == 212800 then
|
||||
if IsPlayerSpell(205411) then Reduction = 0.50 -- Blur
|
||||
else Reduction = 0.65 end
|
||||
|
||||
elseif BuffID == 196555 then PImmunity = 1 -- Netherwalk
|
||||
|
||||
--- Druid ---
|
||||
elseif BuffID == 102342 then
|
||||
Reduction = 1 + (tonumber(select(16, UnitBuff("player", n)) or 0)) / 100 -- Ironbark // using plus since the tooltip returns a negative value
|
||||
|
||||
--- Hunter ---
|
||||
elseif BuffID == 186265 then -- Aspect of the Turtle
|
||||
PImmunity = 1
|
||||
MImmunity = 1
|
||||
|
||||
--- Mage ---
|
||||
elseif BuffID == 45438 then -- Ice Block
|
||||
PImmunity = 1
|
||||
MImmunity = 1
|
||||
|
||||
--- Monk ---
|
||||
elseif BuffID == 261769 then
|
||||
Reduction = 1 + (select(16, UnitBuff("player", n)) or 0) / 100 -- Inner Strength // using plus since the tooltip returns a negative value
|
||||
|
||||
elseif BuffID == 115295 then
|
||||
Absorbs = Absorbs - select(16, UnitBuff("player", n)) -- Guard // prevents Guard from counting as a normal absorb
|
||||
|
||||
--- Paladin ---
|
||||
elseif BuffID == 210320 then
|
||||
Reduction = 1 + (tonumber(select(16, UnitBuff("player", n)) or 0)) / 100 -- Devotion Aura // using plus since the tooltip returns a negative value
|
||||
|
||||
elseif BuffID == 1022 then PImmunity = 1 -- Blessing of Protection
|
||||
elseif BuffID == 204018 then MImmunity = 1 -- Blessing of Spellwarding
|
||||
|
||||
elseif BuffID == 188370 then
|
||||
Reduction = 1 - (GetMasteryEffect() / 2.85) / 100 -- Consecration // May not be 100% accurate, but it's good enough for now
|
||||
if IsEquippedItem(137047) then Reduction = Reduction * 0.96 end -- Consecration (Legendary Ring)
|
||||
|
||||
elseif BuffID == 642 then -- Divine Shield
|
||||
PImmunity = 1
|
||||
MImmunity = 1
|
||||
|
||||
--- Priest ---
|
||||
elseif BuffID == 45242 then
|
||||
Reduction = 1 - (select(3, UnitBuff("player", n)) or 0) * 15 / 100 -- Focused Will
|
||||
|
||||
elseif BuffID == 139 then
|
||||
if IsPlayerSpell(235189) and UnitBuff("player", n, nil, "player") then
|
||||
Reduction = 0.90 -- Perseverance - Talent
|
||||
end
|
||||
|
||||
--- Rogue ---
|
||||
elseif BuffID == 1966 then
|
||||
if not AoE and IsPlayerSpell(79008)
|
||||
then Elusive = 0.70 -- Elusiveness
|
||||
else -- Feint
|
||||
if AoE then Avoid = Avoid * 0.50 end
|
||||
end
|
||||
elseif BuffID == 31224 then MImmunity = 1 -- Cloak of Shadows
|
||||
|
||||
--- Shaman ---
|
||||
elseif BuffID == 260881 then
|
||||
Reduction = 1 - (tonumber(select(3, UnitBuff("player", n)) or 0)) * 5 / 100 -- Ghost in the Mist - Talent
|
||||
|
||||
--- Warlock ---
|
||||
|
||||
--- Warrior ---
|
||||
elseif BuffID == 184362 and IsPlayerSpell(208154) then -- Enrage
|
||||
Reduction = 0.90 -- War Paint - Talent
|
||||
|
||||
end
|
||||
|
||||
AbsorbsP = Absorbs - AMS
|
||||
AbsorbsM = Absorbs - BloodS
|
||||
|
||||
ClassDRP = ClassDRP * Reduction * PhysicalReduction
|
||||
ClassDRM = ClassDRM * Reduction * MagicReduction
|
||||
n = n + 1
|
||||
BuffID = select(10, UnitBuff("player", n))
|
||||
end
|
||||
|
||||
----- Damage reductions with special calculations -----
|
||||
|
||||
--- Death Knight ---
|
||||
if ClassID == 6 then
|
||||
local Necropolis = 1
|
||||
if IsPlayerSpell(206967) then -- Will of the Necropolis - Talent
|
||||
if CurrentHealth / MaxHealth < 0.35 then Necropolis = 0.65
|
||||
end
|
||||
end
|
||||
ClassDRP = ClassDRP * Necropolis
|
||||
ClassDRM = ClassDRM * Necropolis
|
||||
end
|
||||
|
||||
--- Demon Hunter ---
|
||||
if ClassID == 12 then
|
||||
local HavocDemWards = 1
|
||||
local VengDemWards = 1
|
||||
if SpecID == 1 then
|
||||
HavocDemWards = 0.90 -- Demonic Wards - Passive
|
||||
elseif SpecID == 2 then
|
||||
VengDemWards = 0.90 -- Demonic Wards - Passive
|
||||
ScanTarget = true
|
||||
end
|
||||
|
||||
ClassDRP = ClassDRP * VengDemWards
|
||||
ClassDRM = ClassDRM * VengDemWards * HavocDemWards
|
||||
end
|
||||
|
||||
--- Druid ---
|
||||
if ClassID == 11 then
|
||||
local GuardA = 1
|
||||
if IsEquippedItem(137015) and IsPlayerSpell(16931) then
|
||||
GuardA = 0.895 -- Legendary chest
|
||||
elseif IsPlayerSpell(16931) then
|
||||
GuardA = 0.94 -- Thick Hide (Guardian Affinity)
|
||||
end
|
||||
if SpecID == 3 then
|
||||
if IsPlayerSpell(204053) then
|
||||
ScanTarget = true
|
||||
end
|
||||
end
|
||||
|
||||
ClassDRP = ClassDRP * GuardA
|
||||
ClassDRM = ClassDRM * GuardA
|
||||
end
|
||||
|
||||
--- Hunter ---
|
||||
if ClassID == 3 then
|
||||
end
|
||||
|
||||
--- Mage ---
|
||||
if ClassID == 8 then
|
||||
end
|
||||
|
||||
--- Monk ---
|
||||
if ClassID == 10 then
|
||||
if SpecID == 1 then
|
||||
ScanTarget = true
|
||||
-- Gets stagger agaist current target, if no target is found use base --
|
||||
local StaggerBase, StaggerTarget = C_PaperDollInfo.GetStaggerPercentage("player")
|
||||
if not StaggerTarget then StaggerTarget = StaggerBase end
|
||||
StaggerM = StaggerTarget * 0.35
|
||||
StaggerP = 1 - StaggerTarget / 100
|
||||
StaggerM = 1 - StaggerM / 100
|
||||
|
||||
-- Stagger cap --
|
||||
local Stagger = UnitStagger("player") or 0 -- Calculate MaxHealth effective reduction for Stagger
|
||||
local StaggerCapP = (CurrentHealth + AbsorbsP) / (CurrentHealth + AbsorbsP + 100 * MaxHealth - Stagger * 10)
|
||||
local StaggerCapM = (CurrentHealth + AbsorbsM) / (CurrentHealth + AbsorbsM + 100 * MaxHealth - Stagger * 10)
|
||||
if StaggerCapP < 0.01 then StaggerCapP = 0.01 end -- Stagger caps at 99%
|
||||
if StaggerCapM < 0.01 then StaggerCapM = 0.01 end
|
||||
if StaggerP < StaggerCapP then StaggerP = StaggerCapP end
|
||||
if StaggerM < StaggerCapM then StaggerM = StaggerCapM end
|
||||
end
|
||||
if SpecID == 3 then
|
||||
local Karma = 0
|
||||
aura_env.GoodKarma = IsPlayerSpell(280195) -- Talent
|
||||
Karma = aura_env.TouchOfKarma
|
||||
Absorbs = Absorbs + Karma
|
||||
AbsorbsP = AbsorbsP + Karma
|
||||
AbsorbsM = AbsorbsM + Karma
|
||||
end
|
||||
|
||||
ClassDRP = ClassDRP * StaggerP
|
||||
ClassDRM = ClassDRM * StaggerM
|
||||
end
|
||||
|
||||
--- Paladin ---
|
||||
if ClassID == 2 then
|
||||
local LastDefender = 1
|
||||
if SpecID == 2 then -- Protection
|
||||
LastDefender = 1 - (1 - 0.97 ^ aura_env.NameplateCounter)
|
||||
end
|
||||
ClassDRP = ClassDRP * LastDefender
|
||||
ClassDRM = ClassDRM * LastDefender
|
||||
end
|
||||
|
||||
--- Priest ---
|
||||
if ClassID == 5 then
|
||||
end
|
||||
|
||||
--- Rogue ---
|
||||
if ClassID == 4 then
|
||||
end
|
||||
|
||||
--- Shaman ---
|
||||
if ClassID == 7 then
|
||||
end
|
||||
|
||||
--- Warlock ---
|
||||
if ClassID == 9 then
|
||||
local SoulLink = 1
|
||||
local DestructionMastery = 1
|
||||
if SpecID == 2 then -- Soul Link passive for Demonology Warlocks
|
||||
if UnitExists("pet") then
|
||||
SoulLink = 0.80
|
||||
end
|
||||
elseif SpecID == 3 then
|
||||
DestructionMastery = 1 - ((GetMasteryEffect() / 9) / 100) -- Destruction mastery effect
|
||||
end
|
||||
|
||||
ClassDRP = ClassDRP * SoulLink * DestructionMastery
|
||||
ClassDRM = ClassDRM * SoulLink * DestructionMastery
|
||||
end
|
||||
|
||||
--- Warrior ---
|
||||
if ClassID == 1 then
|
||||
if SpecID == 3 then
|
||||
ScanTarget = true
|
||||
end
|
||||
|
||||
ClassDRP = ClassDRP
|
||||
ClassDRM = ClassDRM
|
||||
end
|
||||
|
||||
--- Miscellaneous ---
|
||||
if aura_env.HighmountainTauren then
|
||||
local Stamina = UnitStat("player", 3)
|
||||
local RuggedTenacity = floor((Stamina * 0.0003 * 20) + 0.5)
|
||||
Absorbs = Absorbs + RuggedTenacity
|
||||
end
|
||||
|
||||
--- Checking debuffs on target if needed ---
|
||||
if ScanTarget then
|
||||
local TD = 1
|
||||
local DebuffID = select(10, UnitDebuff("target", TD))
|
||||
while DebuffID do
|
||||
local DebuffTarget = 1
|
||||
local DebuffTargetP = 1
|
||||
local DebuffTargetM = 1
|
||||
|
||||
--- Demon Hunter ---
|
||||
if DebuffID == 207744 and select(3, UnitDebuff("target", TD, nil, "player")) then
|
||||
DebuffTarget = 0.60 -- Fiery Brand
|
||||
|
||||
elseif DebuffID == 268178 and select(3, UnitDebuff("target", TD, nil, "player")) then
|
||||
DebuffTarget = 0.94 -- Void Reaver -- Talent
|
||||
|
||||
--- Druid ---
|
||||
elseif DebuffID == 192090 and select(3, UnitDebuff("target", TD, nil, "player")) then
|
||||
DebuffTarget = 1 - 0.02 * (select(3, UnitDebuff("target", TD, nil, "player")) or 0) -- Rend and Tear - Talent
|
||||
|
||||
--- Monk ---
|
||||
elseif DebuffID == 123725 then
|
||||
DebuffTarget = 1 + 0.01 * (select(17, UnitDebuff("target", TD, nil, "player")) or 0) -- Breath of Fire // using plus since the tooltip returns a negative value
|
||||
|
||||
--- Warrior ---
|
||||
elseif DebuffID == 1160 and select(7, UnitDebuff("target", TD)) == "player" then
|
||||
DebuffTarget = 0.80 -- Demoralizing Shout
|
||||
end
|
||||
|
||||
ClassDRP = ClassDRP * DebuffTarget * DebuffTargetP
|
||||
ClassDRM = ClassDRM * DebuffTarget * DebuffTargetM
|
||||
TD = TD + 1
|
||||
DebuffID = select(10, UnitDebuff("target", TD))
|
||||
end
|
||||
end
|
||||
|
||||
-- Damage taken modifiers --
|
||||
local ReductionP = Vers * Avoid * ClassDRP * Armor * Elusive
|
||||
local ReductionM = Vers * Avoid * ClassDRM * Elusive
|
||||
-- CurrentHealth health and shields --
|
||||
local EHP = (CurrentHealth + AbsorbsP) / ReductionP
|
||||
local EHM = (CurrentHealth + AbsorbsM) / ReductionM
|
||||
|
||||
-- Export pre-avoidance EHP, EHM and immunity status as global variables --
|
||||
if aura_env.GlobalExport then
|
||||
-- Calculate max effective health (no absorbs) --
|
||||
local EHPMaxHealth = (MaxHealth + AbsorbsP) / ReductionP
|
||||
local EHMMaxHealth = (MaxHealth + AbsorbsM) / ReductionM
|
||||
-- Export to globals --
|
||||
local Export = WA_ZELER_EH
|
||||
Export.EHPMAX, Export.EHMMAX = EHPMaxHealth * Avoid * Elusive, EHMMaxHealth * Avoid * Elusive
|
||||
Export.EHP, Export.EHM = EHP * Avoid * Elusive, EHM * Avoid * Elusive
|
||||
|
||||
Export.REDP, Export.REDM = ReductionP / Avoid / Elusive, ReductionM / Avoid / Elusive
|
||||
Export.ABS, Export.ABSP, Export.ABSM = Absorbs, AbsorbsP, AbsorbsM
|
||||
Export.EHPIMMUNITY, Export.EHMIMMUNITY = PImmunity, MImmunity
|
||||
Export.EHARMOR = Armor
|
||||
Export.STAGGERP, Export.STAGGERM = StaggerP, StaggerM
|
||||
end
|
||||
|
||||
-- Formatting numbers --
|
||||
local DivideP, DivideM = 1, 1
|
||||
local ImportDecimal = aura_env.DisplayDecimals
|
||||
local EHPdecimal, EHMdecimal = ImportDecimal, ImportDecimal
|
||||
local letterP, letterM = "", ""
|
||||
if EHP > 10 ^ 9 then
|
||||
EHP = EHP / 10 ^ 9
|
||||
DivideP = 10 ^ 9
|
||||
letterP = "b"
|
||||
EHPdecimal = 2
|
||||
elseif EHP > 10 ^ 8 then
|
||||
EHP = EHP / 10 ^ 6
|
||||
DivideP = 10 ^ 6
|
||||
letterP = "m"
|
||||
EHPdecimal = 0
|
||||
elseif EHP > 10 ^ 7 then
|
||||
EHP = EHP / 10 ^ 6
|
||||
DivideP = 10 ^ 6
|
||||
letterP = "m"
|
||||
elseif EHP > 10 ^ 6 then
|
||||
EHP = EHP / 10 ^ 6
|
||||
DivideP = 10 ^ 6
|
||||
letterP = "m"
|
||||
EHPdecimal = 2
|
||||
elseif EHP > 10 ^ 5 then
|
||||
EHP = EHP / 10 ^ 3
|
||||
DivideP = 10 ^ 3
|
||||
letterP = "k"
|
||||
EHPdecimal = 0
|
||||
elseif EHP > 10 ^ 4 then
|
||||
EHP = EHP / 10 ^ 3
|
||||
DivideP = 10 ^ 3
|
||||
letterP = "k"
|
||||
elseif EHP > 10 ^ 3 then
|
||||
EHP = EHP / 10 ^ 3
|
||||
DivideP = 10 ^ 3
|
||||
letterP = "k"
|
||||
EHPdecimal = 2
|
||||
elseif EHP > -1 then
|
||||
EHP = EHP / 1
|
||||
DivideP = 1
|
||||
EHPdecimal = 0
|
||||
end
|
||||
|
||||
if EHM > 10 ^ 9 then
|
||||
EHM = EHM / 10 ^ 9
|
||||
DivideM = 10 ^ 9
|
||||
letterM = "b"
|
||||
EHMdecimal = 2
|
||||
elseif EHM > 10 ^ 8 then
|
||||
EHM = EHM / 10 ^ 6
|
||||
DivideM = 10 ^ 6
|
||||
letterM = "m"
|
||||
EHMdecimal = 0
|
||||
elseif EHM > 10 ^ 7 then
|
||||
EHM = EHM / 10 ^ 6
|
||||
DivideM = 10 ^ 6
|
||||
letterM = "m"
|
||||
elseif EHM > 10 ^ 6 then
|
||||
EHM = EHM / 10 ^ 6
|
||||
DivideM = 10 ^ 6
|
||||
letterM = "m"
|
||||
EHMdecimal = 2
|
||||
elseif EHM > 10 ^ 5 then
|
||||
EHM = EHM / 10 ^ 3
|
||||
DivideM = 10 ^ 3
|
||||
letterM = "k"
|
||||
EHMdecimal = 0
|
||||
elseif EHM > 10 ^ 4 then
|
||||
EHM = EHM / 10 ^ 3
|
||||
DivideM = 10 ^ 3
|
||||
letterM = "k"
|
||||
elseif EHM > 10 ^ 3 then
|
||||
EHM = EHM / 10 ^ 3
|
||||
DivideM = 10 ^ 3
|
||||
letterM = "k"
|
||||
EHMdecimal = 2
|
||||
elseif EHM > -1 then
|
||||
EHM = EHM / 1
|
||||
DivideM = 1
|
||||
EHMdecimal = 0
|
||||
end
|
||||
|
||||
-- Format displayed text with appropriate colors --
|
||||
local Color = ""
|
||||
if Mode ~= "magic" then
|
||||
for i = 1, 6 do
|
||||
if EHP >= Threshold[1][i] / DivideP then Color = ColorFunction[i] end
|
||||
end
|
||||
if PImmunity == 1 then Color = ColorFunction[7] end
|
||||
EHP = string.format("P:|c%s%." .. EHPdecimal .. "f" .. letterP .. "|r", Color, EHP)
|
||||
else EHP = ""
|
||||
end
|
||||
|
||||
if Mode ~= "physical" then
|
||||
for i = 1, 6 do
|
||||
if EHM >= Threshold[2][i] / DivideM then Color = ColorFunction[i] end
|
||||
end
|
||||
if MImmunity == 1 then Color = ColorFunction[7] end
|
||||
EHM = string.format("M:|c%s%." .. EHMdecimal .. "f" .. letterM .. "|r", Color, EHM)
|
||||
else EHM = ""
|
||||
end
|
||||
|
||||
local separator = ""
|
||||
if Mode == "both" and aura_env.Align == "horizontal" then separator = " | "
|
||||
elseif Mode == "both" and aura_env.Align == "vertical" then separator = "\n" end
|
||||
|
||||
--- CPU Benchmarking ---
|
||||
if Debug then
|
||||
aura_env.time = (aura_env.time or 0) + debugprofilestop() - start
|
||||
if aura_env.count == 0 then
|
||||
print(aura_env.time)
|
||||
aura_env.time = 0
|
||||
end
|
||||
return "P: " .. ReductionP .. "\n" .. "M: " .. ReductionM
|
||||
end
|
||||
|
||||
return EHP .. separator .. EHM
|
||||
end
|
||||
|
||||
--CUSTOM TRIGGER
|
||||
function(t)
|
||||
return t[1]
|
||||
end
|
||||
|
||||
--TRIGGER 1 - ALIVE
|
||||
|
||||
--ACTIVE_TALENT_GROUP_CHANGED
|
||||
function()
|
||||
aura_env.SpecID = GetSpecialization()
|
||||
end
|
||||
|
||||
--COMBAT_LOG_EVENT_UNFILTERED
|
||||
function(event)
|
||||
-- Original code from https://wago.io/B1M5OqeFb
|
||||
if aura_env.ClassID == 10 and aura_env.SpecID == 3 then
|
||||
local CLEU = {CombatLogGetCurrentEventInfo()}
|
||||
local message = CLEU[2]
|
||||
local destName = CLEU[9]
|
||||
local Multiplier = 0.5
|
||||
if aura_env.GoodKarma then
|
||||
Multiplier = 1
|
||||
end
|
||||
if destName and UnitIsUnit("player", destName) then
|
||||
if message == "SPELL_ABSORBED" then
|
||||
local chk = CLEU[9]
|
||||
local spellID, absorbed = 0, 0
|
||||
if type(chk) == "number" then -- Spell
|
||||
spellID = CLEU[19]
|
||||
absorbed = CLEU[22]
|
||||
else -- Swing
|
||||
spellID = CLEU[16]
|
||||
absorbed = CLEU[19]
|
||||
end
|
||||
if spellID == 122470 then
|
||||
aura_env.TouchOfKarma = math.max(aura_env.TouchOfKarma - absorbed, 0)
|
||||
end
|
||||
elseif message == "SPELL_AURA_APPLIED" then
|
||||
local spellID = CLEU[12]
|
||||
if spellID == 122470 then
|
||||
aura_env.maxValue = UnitHealthMax("player") * Multiplier
|
||||
aura_env.TouchOfKarma = aura_env.maxValue
|
||||
end
|
||||
elseif message == "SPELL_AURA_REMOVED" then
|
||||
local spellID = CLEU[12]
|
||||
if spellID == 122470 then
|
||||
aura_env.TouchOfKarma = 0
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--PLAYER_TARGET_CHANGED,ENCOUNTER_START,INSTANCE_ENCOUNTER_ENGAGE_UNIT
|
||||
function()
|
||||
local PlayerLevel = aura_env.PlayerLevel
|
||||
local TargetLevel = PlayerLevel
|
||||
if UnitExists("boss1") then
|
||||
TargetLevel = UnitLevel("boss1")
|
||||
elseif UnitExists("target") then
|
||||
TargetLevel = UnitLevel("target")
|
||||
end
|
||||
if TargetLevel == -1 then -- Raid boss
|
||||
TargetLevel = PlayerLevel + 3
|
||||
-- elseif TargetLevel < aura_env.PlayerLevel then
|
||||
-- TargetLevel = PlayerLevel -- Prevents the armor scaling from looking too strange. Currently disabled
|
||||
end
|
||||
aura_env.TargetLevel = TargetLevel
|
||||
end
|
||||
|
||||
--PLAYER_LEVEL_UP
|
||||
function(event, NewLevel)
|
||||
aura_env.PlayerLevel = NewLevel
|
||||
end
|
||||
|
||||
--EVERY FRAME?? (For last defender - delet?)
|
||||
function()
|
||||
if aura_env.ClassID == 2 and aura_env.SpecID == 2 then -- Enable for Protection Paladins only
|
||||
if IsPlayerSpell(203791) then -- Last Defender - talent
|
||||
local now = GetTime()
|
||||
if now - aura_env.NameplateCheck >= 0.1 then -- Throttle
|
||||
aura_env.NameplateCheck = now
|
||||
local counter = 0
|
||||
local i
|
||||
for i = 1, 40 do
|
||||
local unit = "nameplate" .. i
|
||||
if UnitExists(unit) and not UnitIsFriend("player", unit) then
|
||||
if WeakAuras.GetRange(unit) < 8 then -- 8y range check
|
||||
counter = counter + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
aura_env.NameplateCounter = counter
|
||||
end
|
||||
else aura_env.NameplateCounter = 0 -- Reset counter if the talent is not selected
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--INIT-- Made by Zeler-Ravencrest EU, with great help from Stryer-Ravencrest EU
|
||||
aura_env.Mode = "both" -- Choose from "physical", "magic", "both" to change the value(s) displayed
|
||||
aura_env.Align = "vertical" -- Choose which alignment you want. "vertical" for vertical alignment, "horizontal" for horizontal alignment
|
||||
aura_env.AoE = true -- Enable avoidance with true and disable it with false
|
||||
aura_env.GlobalExport = true -- Enable export of certain variables as global variables for use in other weakauras
|
||||
aura_env.Debug = false -- Enable debug with true. It will then return the damage reduction multipliers
|
||||
local text = true -- Disable the 'P:' and the 'M:' with false
|
||||
aura_env.DisplayDecimals = 1 -- The number of decimals displayed
|
||||
|
||||
aura_env.PlayerLevel = UnitLevel("player")
|
||||
aura_env.TargetLevel = aura_env.PlayerLevel
|
||||
aura_env.TouchOfKarma = 0
|
||||
aura_env.GoodKarma = IsPlayerSpell(280195) -- Wind Walker Monk - Talent
|
||||
aura_env.HighmountainTauren = IsPlayerSpell(255659) -- Rugged Tenacity - Passive
|
||||
aura_env.NameplateCheck = 0 -- Protection Paladin - Last Defender - talent
|
||||
aura_env.NameplateCounter = 0 -- Protection Paladin - Last Defender - talent
|
||||
|
||||
-- Color values, the accepted values are from 0 to 255
|
||||
-- {red, green, blue}
|
||||
aura_env.Color = {
|
||||
{0, 255, 0}, -- Lowest HP
|
||||
{0, 255, 0},
|
||||
{0, 255, 0},
|
||||
{0, 255, 0},
|
||||
{0, 255, 0},
|
||||
{0, 255, 0}, -- Highest HP
|
||||
{0, 255, 0}, -- Immunity color
|
||||
}
|
||||
|
||||
-- Thresholds at which the color changes (leave the first 0)
|
||||
aura_env.Threshold = {
|
||||
{0, 1, 2, 3, 4, 5}, -- Physical EH
|
||||
{0, 1, 2, 3, 4, 5}, -- Magic EH
|
||||
}
|
||||
|
||||
local function RGBtoHex(rgb)
|
||||
return string.format("ff%02x%02x%02x", rgb[1], rgb[2], rgb[3])
|
||||
end
|
||||
|
||||
for i = 1, #aura_env.Color do
|
||||
aura_env.Color[i] = RGBtoHex(aura_env.Color[i])
|
||||
end
|
||||
|
||||
-- Check player class and spec
|
||||
aura_env.ClassID = select(3, UnitClass("player"))
|
||||
aura_env.SpecID = GetSpecialization()
|
||||
|
||||
-- Class self-buffs: [Spell ID] = {Phys Reduction, Magic Reduction}
|
||||
aura_env.BasicReductions = {
|
||||
|
||||
--- Death Knight ---
|
||||
[194679] = {0.70, 0.70}, -- Rune Tap
|
||||
|
||||
--- Demon Hunter ---
|
||||
|
||||
--- Druid ---
|
||||
[158792] = {0.91, 0.91}, -- Pulverize
|
||||
[22812] = {0.80, 0.80}, -- Barkskin
|
||||
[61336] = {0.50, 0.50}, -- Survival Instincts
|
||||
|
||||
--- Hunter ---
|
||||
[186265] = {0.70, 0.70}, -- Aspect of the Turtle
|
||||
[264735] = {0.80, 0.80}, -- Survival of the Fittest
|
||||
|
||||
--- Mage ---
|
||||
[113862] = {0.40, 0.40}, -- Greater Invisibility
|
||||
[235450] = {1, 0.85}, -- Prismatic Barrier
|
||||
|
||||
--- Monk ---
|
||||
[120954] = {0.80, 0.80}, -- Fortifying Brew (BrM)
|
||||
[243435] = {0.80, 0.80}, -- Fortifying Brew (MW)
|
||||
[122278] = {0.80, 0.80}, -- Dampen Harm, assumed at minimum reduction
|
||||
[122783] = {1, 0.40}, -- Diffuse Magic
|
||||
[115176] = {0.40, 0.40}, -- Zen Meditation
|
||||
|
||||
--- Paladin ---
|
||||
[498] = {0.80, 0.80}, -- Divine Protection
|
||||
[31850] = {0.80, 0.80}, -- Ardent Defender
|
||||
[205191] = {0.65, 1}, -- Eye for an Eye - talent
|
||||
[86659] = {0.50, 0.50}, -- Guardian of Ancient Kings
|
||||
[212641] = {0.50, 0.50}, -- Guardian of Ancient Kings - Glyph of the Queen
|
||||
[183436] = {0.70, 0.70}, -- Retribution - passive
|
||||
[6940] = {0.70, 0.70}, -- Blessing of Sacrifice
|
||||
[204335] = {0.80, 0.80}, -- Aegis of Light - talent
|
||||
|
||||
--- Priest ---
|
||||
[47585] = {0.40, 0.40}, -- Dispersion
|
||||
[193065] = {0.90, 0.90}, -- Masochism - talent
|
||||
[232698] = {0.90, 1}, -- Shadowform
|
||||
[33206] = {0.60, 0.60}, -- Pain Suppression
|
||||
-- [194384] = {0.97, 0.97}, -- Leniece - talent -- Currently disabled due to being unable to track if the casting priest has the talent or not
|
||||
[81782] = {0.75, 0.75}, -- Power Word: Barrier
|
||||
|
||||
--- Rogue ---
|
||||
[45182] = {0.15, 0.15}, -- Cheating Death - Cheat Death talent
|
||||
|
||||
--- Shaman ---
|
||||
[108271] = {0.60, 0.60}, -- Astral Shift
|
||||
[98007] = {0.90, 0.90}, -- Spirit Link Totem
|
||||
|
||||
--- Warlock ---
|
||||
[104773] = {0.60, 0.60}, -- Unending Resolve
|
||||
|
||||
--- Warrior ---
|
||||
[197690] = {0.80, 0.80}, -- Defensive Stance
|
||||
[118038] = {0.70, 0.70}, -- Die by the Sword
|
||||
[184364] = {0.70, 0.70}, -- Enraged Regeneration
|
||||
[871] = {0.60, 0.60}, -- Shield Wall
|
||||
[23920] = {1, 0.80}, -- Spell Reflection
|
||||
[223658] = {0.70, 0.70}, -- Safeguard
|
||||
|
||||
--- Miscellaneous ---
|
||||
[241836] = {0.95, 0.95}, -- Shadow of Celumbra
|
||||
[65116] = {0.90, 1}, -- Stoneform
|
||||
[211080] = {0.90, 0.90}, -- Comforting light (Court of Stars)
|
||||
[273809] = {1.30, 1.30} -- Idol of Rage
|
||||
}
|
||||
|
||||
if aura_env.GlobalExport then
|
||||
WA_ZELER_EH = {}
|
||||
end
|
||||
Reference in New Issue
Block a user