Fix rayofhope

This commit is contained in:
2025-05-15 20:37:58 +02:00
parent 69d1f9fd93
commit 49543bd75a
6 changed files with 204 additions and 0 deletions

View File

@@ -0,0 +1,19 @@
function()
local net = aura_env.totalHealAbsorb * 1.5 - aura_env.totalDmgAbsorb;
-- Use player HP to gauge the limits of the progress bar.
-- Seems reasonable for now. Maybe want to stick some multipliers on.
local hp = UnitHealth("player")
if WeakAuras.IsOptionsOpen() then
aura_env.region:SetDurationInfo(0, hp, true)
return
end
if (net < 0 ) then
aura_env.region:SetDurationInfo(-net, hp, true)
return
else
aura_env.region:SetDurationInfo(0, hp, true)
return
end
end

View File

@@ -0,0 +1,22 @@
function()
local net = aura_env.totalHealAbsorb * 1.5 - aura_env.totalDmgAbsorb;
-- Use player HP to gauge the limits of the progress bar.
-- Seems reasonable for now. Maybe want to stick some multipliers on.
local hp = UnitHealth("player")
if WeakAuras.IsOptionsOpen() then
aura_env.region:SetDurationInfo(0.25*hp, hp, true)
return "25K"
end
-- AbbreviateNumbers sucks for negative numbers so handle it
if net < 0 then
net = -net
aura_env.region:SetDurationInfo(0, hp, true)
return "-" .. AbbreviateNumbers(net)
else
aura_env.region:SetDurationInfo(net, hp, true)
return AbbreviateNumbers(net)
end
end

View File

@@ -0,0 +1 @@
!TV1cZjUrY)Vlu1wNjNnlGFSjBUCvHTXRj)Tbog8UBYLdyqAaMyHezKW24kfF2)398qpabiZ6lBDjQCcR0OPNPN(XVPhPU7vPx3Ee)EKQLQCwPJ7rM2JyJ)h06yH3J9ix3QtJFUvZU1UPhzONWMjoNADVTWBwpcXZHd9(r6yVgx2J4EX7U(zRfTFUhHopyINO1SaUNRpmyb9ilAnAKplOxZJlxgMsprW1lgk42DPdDyQUOg)l8C8eqdnR0Rz5EnRk)9y5VNGncD0Fg1IHTqMlC6rMeemZ)9V9TiJuI792qg5TNbSILHji(burGAQgXD5(tuxdxQAfUoqWhpMj8vZF3WgWlTzdNpAu3fZyGyP(nTV6oqMeiVLoxqRI8fZXPHTEf7pFi7bMBabOI)ups)lQr62N0TwNUrpSTGjFiPD9BGHZLoLPjx(yyMyuNGjWkf5sYmh6cGBcW7JyTafZB55mFQlrjCQ0JiO285(GieL4ux(ukkkIljimQpdwJm3XWCasz96X1Zf(1gwvif9vn6ZS8CHfNKOUr9dM5PuU7R4WfQDELgqyiPo8XU9ixuVz36DKcaPSdTHEa03OCP5zs1sh24iRwhpQ0zyUpRVLd13V3qGhOoOQbAE6CNaUX2b0(wR1OIO16k)z2QnIoaAxR4UavKUavKUavKUaLXUcoNrkALULH82O5ooxWfwGp15W8ybSQYwWlqP9XvSYrd7G6Q62JbHf53MtfSLdUcgILd(0eomIeHuAOKM2laZtUfammFMHucUsaoK4WNcgOnpfKviOaz6fpx3E0KMvxGEybmHl15Jgj9Pvm03WvckubXBaWa5805s0w2f0rUbxb(VGSG0P2LnUJ0J8KbgjCzyAa9)ytbLzpsLsLlbmsGNvOU9DLL4oiR1HUy5aVrlhCT3my5EPAvTCWhuRlKp(e3gT3GXyKa8iblqAavlQTaKTRWwvml5Io1R3eNBNrT94OlRXidwdJ4J1GbaGNXULkSUXyrFwzZyUoX28y4NC3rEIqp4aPj5nsz(qPDwiIfaokUxVaQGlzyKiEZfAeZuGMT5(iUsx2tWnVzwmS6nXCY5OtCtQDdeJ8bAHI)BFRTAHlb5VNXMvd9Pc6GtdsAmz85T62T1TOlJyDVL12WWM5Bb0a69pdi0C)LdoA5GZDa3TjuxB96rTO)j5YX43ZDvw7R6aVbiGqVDFGqWZJ0UtJ6Ky9Y0W5Q()mypG7xquimY9pU317rPGYMd7BybeUyT5r45Sg(bzKARU1AF2dZIyxnJ1SY3g1l8MZJVUQUrSnd5vJrDvdXcepAxqDqVcy2apHWpYRbqhxkEx4f6Nk9wo3aoccOA2)6CFGcM9TCPiko6eUhmynaRbWoEUGfgFYZEEtbLkgEdy87HJCkiduNztuU4sJHl2TbQ2TPbAx3SYjNCA1J)UEGNwGdh9YBDx3BA0SEcJRplnUsjGPm4pyblDVPkN0rZDL66dkU8hxoq9NJha2VCGlly5GFy5auC0N5(qPaWn1bJIO2qaeA4YbFZYbvkDQ0fizNUC6yvF((Or9iOx35dWKQipaqZ2lhe4TCWy68XqZbtGFKy)(kqvzdZeEJfmFOjqJucgNeJhHXMcpsa7t75IH)TCaGTbSU3JqFVLUyi0YJa4VAM8d4w3d)J3uOzPz0mhoO9G5ZnXyRLatMjfa3bbmPcE6GckMVqrtpJOj6koW8FIrVVgit8l1Wxdr2AgdfZ46Yngz6)cfGklX3tybxQJkPbayFq5dr(b(jqmNvCD6fmWun24YCT3eVDGuZ(pwoO8Yb7n)CemiVuwYbu)FPl8vL6Bz5hU4vYc4p09WZXgGfjpYNjdSjYz4Uz2yOpMWLn9ugsZWThqVkSr1qHbuRhcjir6r7BI4Sh5SWz8IjuqVClyTtXOOseNE845nZd6bCrRBpVw3(306d9R)ryp1(318Qg3aBTw)YL)yOZDm5covhgDFahg2a60zhUsFWLuS2MWTzxqbitrSg9fwF4UgxMSLMaJMSLRCOJ9t2uhk3E1MT9dwz0Gwwz0GwsHS0gn1jOaHW6aBc6IAGC5bws4TOMt4Te(Cupow7USYymIIM2j95qTZmbeIXb(GLI74sQOUoOqiPVF5G3aSCK8w2qb0u3trZbH9Ty8wdjOyXIjzwxVGe8gfDdc7oWRaZwqEcX(1URtT(1A3(Mg1VSWMqb2SaWiFXLFLV7Dvp7BxfZj2qe15y9wYBAti1tqGw8U4WSPZx7M)uI(cYq0PZqCEBC4mqbBy8sXyaxGi0Z2id11Dy(iS6duN5mFT2G9OuBa3bTybUpzyMxBx2FabQZiDHB8gs2gjuJyAwBR80eQs5nYFw9ntinTGOo3cm0gFdfB9TAOW40Nh3GiRAdHIaixa4YE1xFri0yAH1KCbhUNq0FYOdBwDRy7PcMVcGFcEhaxdyZ1BTKbu)m(6C2Lm)lzpcQJJKR9p8VG7BuQuP)y2ZqAgM0pdjDvW7d2a695KwDoxICJb8MENUUETy9CJGP6LOgK(q9vkjO6AcCYDph4okXO6KxQ7tF9)tjHdH6s9Zv3eBqWBRn1dCDvOvm7dvHLpCoy7nHlJS0t4ZWRrP1grXKQRnSGmM2GUgvdG)SCtbM4GI7XokBKIvfJbcP(n5U(7MCZFfK6stSbH(zPhSWHX9WmTODVIDlQhm3QDxIDB8NQncsC7ApxPjnnLM6mS7X0PHmSrXAc3jZIMKbavCFOmuEwCVNxzGx7d1rAQ9ICTADFPf1I7fTAdM9L29EE1MI7pTFzZSYiFVOpnpI9JrI5(SFMCgFTI7M4m0LWZZSL(M6HasTrzuZY4Z1YiaBaI7n9oQTGLqRTvVbPu7N2It2VoExVCqxQymlyddASdXi7C4PgtR3MD8KDVwipJXQdbzjDS3eHXMNvjKS9PCDlj5OypFY3N(zTYsOa7)XQY8X(sC8VDDip1rbt7qIzBR3xW(7F57Z)kVFF4((R81KICkEJ)FZx5ACOElu5l58n2LEjBEggDpzTyTZoPrb1TNeVIPCMhLIzVRzbKkjU0o72wpC(MF4FFFx1B)S5zaPnlyT2thVBOwMlB6IxzKwPijoq4wrDd3kpDALpz3W1BBlJeWZBFBGndW(kGTMGpYm4Q5iz7aDn2GNdVMc8QnDkDm71aG1FVXx9ZHxx7DyUXN91dCn9fxicl7PzCXMEHqVG3nFN6326JBbqj5RTrkSs9TH815fWNXZsOClfSPEpWa3TIzNoeNgJjc8DdO3ZCFpi9oCZ7g)chzCZXTmUH2HfZI9nAAi)q5c2mbZhF9T6pV9PLFZYbt9S5J44Neh)i161eWkEQpEqwFXtVgFV(SSA0tNmrdisuz50wOq22vqYM)t5hF(LTHWQt4kFwTF3A0OYLX))n2)UavzWmLfmQu)Q0FbmbYcVyMW1oZ2NnzbABYymZopq(l9tEP(KM773fYAcZ6(WpXXw)spj)m3)H8nEWeU5xLu)qSpTJotaut0nEJ5wXMJG0MK)DL)JCsu5g8dmnT36bmFZJQuwLTDPKXI)fpfA3yEYQtSI4zHvFmtSc)SCQXE(qWFJH5tNlAEaSs8NH5(A0Zor(m2tb9L)OCu7pRpAB1hqJT4kwPsk9YxFHzng2bvYnkV1Fc127XmKQ5QEhL3H1URBlDR4NneThSujBjPM8ZiQ4e(tmtsKE2jMKO8NILwLYUHzZgF0IO8QuMLUmvoE1SfM8yHYh1cytIe9koCKZq(KPhf5IYYc8CDdWniAdB1H3yTyZZMorG7hmb68ephByvwoHKnCPEuLeT)zt7MMF0ty)jbf0lFk8QqotzbgMiDkPE88rTrZM170)M6xLM1IBA2bpagodvjhD40OZH5q90NxvpLueygvdoxZt7L5PxBgA9NbZWxMn2vc(Zlh8VMtTXCPE5GUD3HbtgSmAgjytXSOtJpCD3TB9fP9RuDJAFJjdMN1a2hoKCR77dn5A3FkURbP2LxgxgXXDrLDkE6QlBWM5tdqqxz2PfQ767OWNpx3TGjWVUmFFzQ2kBYA3wjyoeBY(1HAYGTOTytbNBdRg0MjSKBWN859igEmmbABG7cocE(VGVNCiELZPIF5UghfD3rem5w10f33cVFXQlEhZMqMgMYfcyrz414fPGClNjm(4jbkcKPr75Oq)2izEYKcM(KuOU9k(jmYbvQfA71x3WWyfduyN2ECwREgQyrG9J4XhA4YJLCrYxpHoRHJr7gsDODKIqX5CD(xNSebi8XUW(T60yTogjxDuA7l7UsC29LRPLPVVVmqpTdMCKKPNF8QcqRKK4uYhCDmDz0M9Bh7dlJdv67hZPjeUsH7VsrF8OPYhmMmxZTHTZaWI6FeX2sPcqAYgtvbvM5Q9WKMPOa8sUpMeZ2iVfVKp4UyetswoomGNGJB1QsOOOYRRFJMa)rQVELFyMlCGK1wJL9Vn(NjN1rC7DHXy9x6Q(OCSXQCPYFB1JpT63DsLkV7StExL8QajVkqYRcK8Qa5RzvGuQ6PFJSAiYqHxmOq1t))kSZscbfH1gouWEGdUpnNpDOuy4p36EtOgU691GRcFm(QkbWouAZd2JcmXyyHfsY)1khMbfoQa(AXtzfEqY3m3(vCkzUiy208VM2yfLuEPRKx6k5LUsEPRKx6k5LUsEPRKx6k5LUsEPRKx6k5LUsEPRKx6k5LUsEPRKx6k5LUsEPRKx6k5LUsEPRKx6k5LUsEPRKx6k5LUsEPRKx6k5LUsEPRKx6k5LUYF2kDL8Qbi7vCYxqfbSZAf5fvuaBPKqIY19WcajVOaYlkG8IcqNu()VEnb02ZN)vVMaYqTau7Zhx9u(c(XNCIERomlKRIE(9()d

View File

@@ -0,0 +1,6 @@
aura_env.rayActive = false
aura_env.debug = false
-- Init values for display
aura_env.totalHealAbsorb = 0
aura_env.totalDmgAbsorb = 0

View File

@@ -0,0 +1,34 @@
-- COMBAT_LOG_EVENT_UNFILTERED
function(
event,
timestamp,
eventtype,
hideCaster,
srcGUID,
srcName,
srcFlags,
srcRaidFlags,
dstGUID,
dstName,
dstFlags,
dstRaidFlags,
spellID
)
local rayActive = aura_env.rayActive
if aura_env.debug then rayActive = false end
-- print(string.format("rayActive: %s, eventtype: %s", tostring(rayActive), tostring(eventtype)))
if not rayActive and eventtype == "SPELL_AURA_APPLIED" then
if aura_env.debug then spellID = 197268 end
if spellID == 197268 and srcGUID == UnitGUID("player") then
if aura_env.debug then print("Ray applied") end
aura_env.rayActive = true
-- Reset values if new ray is cast
aura_env.totalHealAbsorb = 0
aura_env.totalDmgAbsorb = 0
return true
end
end
end

View File

@@ -0,0 +1,122 @@
-- COMBAT_LOG_EVENT_UNFILTERED
function(
allstates,
event,
timestamp,
eventtype,
hideCaster,
srcGUID,
srcName,
srcFlags,
srcRaidFlags,
dstGUID,
dstName,
dstFlags,
dstRaidFlags,
...
)
local rayActive = aura_env.rayActive
if aura_env.debug then rayActive = true end
if rayActive and (eventtype == "SPELL_ABSORBED" or eventtype == "SPELL_HEAL_ABSORBED") then
local spellID, spellName, spellSchool, aSrcGUID, aSrcName, _, _, aSpellID, aSpellName, aSpellSchool, aSpellAmountAbsorbed, somebullshit, horseshit =
...
local function debuggerprinter()
if aura_env.debug then
local str = string.format(
"event: %s, timestamp: %s, eventtype: %s, hideCaster: %s, srcGUID: %s, srcName: %s, dstGUID: %s, dstName: %s, spellID: %s, spellName: %s, spellSchool: %s, aSpellAmountAbsorbed: %s, somebullshit: %s, horseshit: %s",
tostring(event),
tostring(timestamp),
tostring(eventtype),
tostring(hideCaster),
tostring(srcGUID),
tostring(srcName),
tostring(dstGUID),
tostring(dstName),
tostring(spellID),
tostring(spellName),
tostring(spellSchool),
tostring(aSpellAmountAbsorbed),
tostring(somebullshit),
tostring(horseshit)
)
print(str)
end
end
-- Ray absorbed heal
-- srcName = Player
-- dstName = RoH Target
-- spellID = RoH spellID
-- aSrcName = Absorbed Heal Caster
-- aSpellID = Absorbed Heal SpellID
-- aSpellAmountAbsorbed = duh;
if eventtype == "SPELL_HEAL_ABSORBED" then
if aura_env.debug then spellID = 197268 end
if srcGUID == UnitGUID("player") and spellID == 197268 then
debuggerprinter()
if aura_env.debug then
local str = string.format(
"Ray of Hope absorbed %s's heal, %s, for %d.",
aSrcName,
aSpellName,
aSpellAmountAbsorbed
)
print(str)
end
aura_env.totalHealAbsorb = aura_env.totalHealAbsorb + aSpellAmountAbsorbed
return true
end
end
-- Ray absorbed dmg
-- srcName = enemy
-- dstName = RoH Target
-- spellID = Spell Absorbed spellID
-- spellName = Spell Absorbed Name
-- aSrcName = Player
-- aSpellID = RoH spellID
if eventtype == "SPELL_ABSORBED" then
if aura_env.debug then aSpellID = 197268 end
if aSrcGUID == UnitGUID("player") and aSpellID == 197268 then
debuggerprinter()
if aura_env.debug then
local str = string.format(
"Ray of Hope absorbed %s's damage, %s, for %d.",
srcName,
spellName,
aSpellAmountAbsorbed
)
print(str)
end
aura_env.totalDmgAbsorb = aura_env.totalDmgAbsorb + aSpellAmountAbsorbed
return true
end
end
end
-- Ray expire
if aura_env.rayActive and eventtype == "SPELL_AURA_REMOVED" then
local spellID = ...
if spellID == 197268 and srcGUID == UnitGUID("player") then
if aura_env.debug then
print("Ray removed.")
print("RoH heals taken: ", aura_env.totalHealAbsorb)
print("RoH dmg taken: ", aura_env.totalDmgAbsorb)
-- 1.5 represents the 50% modifier to heals into ray
local net = aura_env.totalHealAbsorb * 1.5 - aura_env.totalDmgAbsorb
local colorString = ""
if net > 0 then
colorString = string.format("|cff00ff00%d|r", net)
else
colorString = string.format("|cffff0000%d|r", net)
end
print("Net: ", colorString)
end
aura_env.rayActive = false
end
end
end