Exclude Light of the Martyr from heal-absorbs status
FvonY opened this issue ยท 7 comments
Holy Paladins now have the Light of the Martyr talent that places a small heal absorb on them when they heal with Holy Shock. The absorb is quite small and they cast Holy Shock every few seconds, so the heal-absorbs status turns on and off rapidly for a debuff that is pretty inconsequential. I find it to be distracting.
I had a look at the code for the heal-absorbs status and found, that you can substract the Light of the Martyr absorb from UnitGetTotalHealAbsorbs. Maybe that is something other people would be interested in as well (as an option) in Grid2.
I used AuraUtil.FindAuraByName(which is probably iterating over everything...). I thought about a minimum absorb threshold as well, but something like this would be very dangerous on heal absorb mechanics like in Raszageth Mythic Intermission 1.
If something like this breaks Grid2's goal of being very efficient, then I can totally understand why you wouldn't put this in.
I don't know a fast/efficient way to do that without iterating over the unit auras, and maybe another people want to know even the small absorbs.
But a more simple and general fix could be to add a minimum-absorb amount in the configuration (like in heals), so absorbs below a minimum value will not be displayed.
Can the Light of the martyr aura be applied several times by different paladins ?
Do you know the aura spellID and the index of the absorb value in the aura data "points" table ?
The Light of the Martyr debuff is a single aura on the casting Paladin. The absorb value updates when you cast more Holy Shocks. The SpellID is 448005. The absorb value should be index 16.
I modified the heal-absorbs status with this code and tested it today in a raid. Everything was working as I expected it to.
function Shields:GetText(unit) -- Light of the Martyr local lotm_absorb = 0 if select(3, UnitClass(unit)) == 2 then lotm_absorb = select(16, AuraUtil.FindAuraByName("Light of the Martyr", unit, "HARMFUL")) or 0 end return fmt("%.1fk", ((UnitGetTotalHealAbsorbs(unit)-lotm_absorb) or 0) / 1000 ) end
Try out version 2.8.46-beta. Not well tested, only with a non-max level paladin in a group/raid of two players.