+ Reply to Thread
Results 1 to 8 of 8

Thread: Absorb Resolution

  1. #1
    Shadowlander
    Join Date
    Mar 2011
    Posts
    29

    Default Absorb Resolution

    I am curious if someone could explain what the priority is for resolution of multiple absorbs. For example, in the common case, World of Warcraft tends to resolve multiple absorbs by using the absorb with the least amount of time remaining first.

    I am recording and studying absorb values in Rift using an in-game add-on right now, and I can't for the life of me figure out what the rules are. I see evidence of multiple absorbs being partially depleted when both are active.

    In some cases the depletion doesn't even match the amount of a single damage event, implying that a single damage event can actually split its damage across multiple active absorbs without fully depleting any of them!

    If anyone has figured out the rules, can someone post a brief explanation?

    Thanks!
    Last edited by Dahri; 02-10-2016 at 02:26 PM.

  2. #2
    Sword of Telara
    Join Date
    Sep 2014
    Posts
    888

    Default

    Incidentally I've been working on something to track them myself. I've worked on the assumption that the first applied absorb always takes the hits first, regardless of which has the most time left on it. I only spent a few minutes messing around with purifier to reach that conclusion, though.

    Most player abilities absorb 85% of damage now. The first exceptions that come to mind are husk of indifference (absorbs damage from links only) and ward of flame (100%). Exactly what happens with the damage being divided up in such cases I don't know: maybe 85% hits the first shield and the remaining 15% hits ward of flame? That would be easy enough to test, given a damage source that breaks shields quickly.

    There are enough inaccuracies involved in trying to track them anyway that I've always assumed that these abilities messing things up introduce far less error than what is involved inherently in tracking them in the first place. There's so much stuff that happens that makes life very difficult, and my library is a complete and utter mess as a result. I've no doubt that you've discovered the joys of attempting to track them already yourself. I'm curious as to whether I'm missing something obvious, to be honest.

    Still, plugging my events into RiftMeter with a few little tweaks to add new filters and seeing things that nobody else is has been rather eye-opening.
    Last edited by Foolio; 02-10-2016 at 02:31 PM.
    Spellbook@Greybriar
    Rejuvenation@Greybriar

  3. #3
    Shadowlander
    Join Date
    Mar 2011
    Posts
    29

    Default

    Quote Originally Posted by Foolio
    Incidentally I've been working on something to track them myself. I've worked on the assumption that the first applied absorb always takes the hits first, regardless of which has the most time left on it. I only spent a few minutes messing around with purifier to reach that conclusion, though.
    It's definitely more complicated than that. Just testing with a low level Cleric and the two abilities "Caregiver's Blessing" and "Symbol of the Torch".... the former gives 20 absorb and the latter gives 250 absorb in the tests I did.

    Events:

    00:00:21.564 Shahdi gains Caregiver's Blessing from Shahdi
    00:00:21.568 Shahdi gains Symbol of the Torch from Shahdi

    Player now has 270 absorb.

    00:00:24.120 Wanton Destroyer Primal Strike Shahdi 1 (A: 10)
    00:00:25.771 Wanton Destroyer Twilight Force Shahdi 1 (A: 11)

    You would think at this point Caregiver's Blessing would be depleted, but it's not. It requires a third event.

    00:00:27.583 Wanton Destroyer Primal Strike Shahdi 2 (A: 9)

    Now Caregiver's Blessing is depleted, and the resulting value of the absorb for the player is 240.

    00:00:27.767 Shahdi gains Caregiver's Blessing from Shahdi

    The buff goes back up and we're back up at 260.

    00:00:29.177 Wanton Destroyer Primal Strike Shahdi 1 (A: 10)
    00:00:30.764 Wanton Destroyer Blazing Strike Shahdi 1 (A: 28)
    00:00:34.497 Wanton Destroyer Twilight Force Shahdi 1 (A: 11)

    Now we're at 211. This lines up with the damage taken perfectly. Caregiver's Blessing then expires, running its full 10 second duration. You'd think that it would not have absorbed any of the above damage, but when it expires, the reported absorb value, rather than being 191, is actually 197!

    00:00:43.479 Wanton Destroyer Twilight Force Shahdi *2* (A: 11)

    186. Then the buff goes back up again, and we're back at 206.

    I just can't figure out how to reconcile these numbers. How did Caregiver's Blessing only absorb 6 points, and if it was FIFO resolution, shouldn't it have absorbed nothing during the :27-:37 period?

  4. #4
    Shadowlander
    Join Date
    Mar 2011
    Posts
    29

    Default

    Ah, I think I see the formula. It's a FIFO resolution, but they stack multiplicatively. For N points of damage, the oldest absorb absorbs

    A = floor(0.85 * N) points of damage.

    You then take the remaining N' = N - A points of damage and pass it to the next absorb in the list. That absorb then absorbs:

    A' = floor(0.85 * N') points of damage.

    I haven't tested past two absorbs, but I assume it just keeps reducing multiplicatively like that. The above formulas explain the results I am seeing.

  5. #5
    Fia
    Fia is offline
    Champion of Telara Fia's Avatar
    Join Date
    Apr 2012
    Posts
    1,348

    Default

    Quote Originally Posted by Dahri View Post
    It's definitely more complicated than that. Just testing with a low level Cleric and the two abilities "Caregiver's Blessing" and "Symbol of the Torch".... the former gives 20 absorb and the latter gives 250 absorb in the tests I did.

    Events:

    00:00:21.564 Shahdi gains Caregiver's Blessing from Shahdi
    00:00:21.568 Shahdi gains Symbol of the Torch from Shahdi

    Player now has 270 absorb.

    00:00:24.120 Wanton Destroyer Primal Strike Shahdi 1 (A: 10)
    00:00:25.771 Wanton Destroyer Twilight Force Shahdi 1 (A: 11)

    You would think at this point Caregiver's Blessing would be depleted, but it's not. It requires a third event.

    00:00:27.583 Wanton Destroyer Primal Strike Shahdi 2 (A: 9)

    Now Caregiver's Blessing is depleted, and the resulting value of the absorb for the player is 240.

    00:00:27.767 Shahdi gains Caregiver's Blessing from Shahdi

    The buff goes back up and we're back up at 260.

    00:00:29.177 Wanton Destroyer Primal Strike Shahdi 1 (A: 10)
    00:00:30.764 Wanton Destroyer Blazing Strike Shahdi 1 (A: 28)
    00:00:34.497 Wanton Destroyer Twilight Force Shahdi 1 (A: 11)

    Now we're at 211. This lines up with the damage taken perfectly. Caregiver's Blessing then expires, running its full 10 second duration. You'd think that it would not have absorbed any of the above damage, but when it expires, the reported absorb value, rather than being 191, is actually 197!

    00:00:43.479 Wanton Destroyer Twilight Force Shahdi *2* (A: 11)

    186. Then the buff goes back up again, and we're back at 206.

    I just can't figure out how to reconcile these numbers. How did Caregiver's Blessing only absorb 6 points, and if it was FIFO resolution, shouldn't it have absorbed nothing during the :27-:37 period?
    Can you maybe post the full combatlog for this event and/or maybe make a small video? This would help a lot. :)

    I'm guessing you're just missing buffs expiring or something, but I can't be sure without seeing the full log.

    Thanks. :)
    Last edited by Fia; 02-10-2016 at 02:53 PM.
    Fiia@Typhiria | Asthea@Hailol
    Cleric-Heal/Tank/DD | Lvl70

    Now with new Prime Content! -> http://youtube.com/astheatv


  6. #6
    Sword of Telara
    Join Date
    Sep 2014
    Posts
    888

    Default

    Hmm. It's like some percentage goes through and hits Torch through Caregivers. Far more thorough than what I did: I just applied shields in different orders and looked to see what broke first. In retrospect that might have been rather overly optimistic, just like trying to pin X absorb onto Y buff is without reading the tooltip as they lie too much for my taste.

    I might mess around myself and see if I can figure out pattern(s) to it. It'd be nice to get the breakdowns more accurate on my tracker, even if I am still having problems with missing some shielding buffs.

    Edit: 85% doesn't work, I tried it on your example:

    260 total shielding, 49 damage is applied. The difference between caregiver's being 100% of the absorption (my assumption) and your observation is 6, which means the "bleed-through" factor would be closer to 12.5%. If it were 15%, the difference would be 7 instead. Unless of course the game tracks fractions of damage points, in which case we could be looking at rounding error.

    Edit2: I'm being too simplistic, should've read your full post. Too tired for this, urghghghghg.
    Last edited by Foolio; 02-10-2016 at 03:00 PM.
    Spellbook@Greybriar
    Rejuvenation@Greybriar

  7. #7
    Sword of Telara
    Join Date
    Sep 2014
    Posts
    888

    Default

    I've replicated the results, too. I also hooked up a load of messages to my tracker to make sure the addon API isn't doing something it shouldn't:

    Code:
    23:22:11: [Absorb Events] 4627.052734375| Rejuvenation gained Rejuvenation's Gathering of Flames.
    23:22:11: [Absorb Events] 4627.7514648438| Weird Pixie did 15 damage to Rejuvenation (79 absorbed); 84 remains.
    23:22:12: [Absorb Events] 4628.3916015625| Rejuvenation gained Rejuvenation's Symbol of the Torch.
    23:22:14: [Absorb Events] 4629.8959960938| Weird Pixie did 3 damage to Rejuvenation (86 absorbed); 471 remains.
    23:22:15: [Absorb Events] 4631.86328125| Rejuvenation's Gathering of Flames faded from Rejuvenation.
    23:22:15: [Absorb Events] 4631.86328125| Weird Pixie did 12 damage to Rejuvenation (77 absorbed); 394 remains.
    23:22:17: [Absorb Events] 4633.5341796875| Weird Pixie did 27 damage to Rejuvenation (148 absorbed); 246 remains.
    23:22:20: [Absorb Events] 4636.0107421875| Weird Pixie did 14 damage to Rejuvenation (75 absorbed); 171 remains.
    23:22:22: [Absorb Events] 4638.0024414063| Weird Pixie did 14 damage to Rejuvenation (75 absorbed); 96 remains.
    23:22:23: [Absorb Events] 4639.6044921875| Rejuvenation's Symbol of the Torch faded from Rejuvenation.
    23:22:23: [Absorb Events] 4639.6044921875| Weird Pixie did 19 damage to Rejuvenation (96 absorbed); 0 remains.
    23:22:26: [Absorb Events] 4641.9711914063| Weird Pixie did 89 damage to Rejuvenation (0 absorbed); 0 remains.
    GoF applied 163 shielding.
    GoF takes 79 damage, as there were no other sources of shielding on me.
    SoTT is applied, adding lots of shielding.
    86 damage is absorbed. If 100% went to GoF then it would have broken on that swing. But it takes the next hit to break it.

    (And the "buff removed" event always triggers right before the damage packet that does the actual breaking. The timestamps on the above copypasta show that nicely.)

    Edit: Ward of flame is a 100% shield. I'm not sure how to explain this. My print-logging shows that the 23:43:43 lines all occured in the same frame.
    Last edited by Foolio; 02-10-2016 at 03:55 PM.
    Spellbook@Greybriar
    Rejuvenation@Greybriar

  8. #8
    Sword of Telara
    Join Date
    Sep 2014
    Posts
    888

    Default

    Now I'm not half asleep, my interpretation of the screenshot is that the 85% shield must be taking priority despite being applied after the 100% one. That was easy enough to test by doing a similar experiment by allowing ward of flame to be mostly destroyed before throwing the symbol on top.

    I then thought it might be a good idea to run a more complicated experiment with two 85% shields and the 100% to make sure the interaction between them is as was expected. But this is even more confusing: the combat log is actually lying about the amount of shielding SoTT did here, probably to do with the shielding cap. But once you deal with that, only one weird thing remains: the first hit. Everything else is as the previous 100%/85% stack.

    85% of this, rounded down (52) should be directed to caregiver's and torch. Yet if caregiver's takes 85% of the damage and torch takes 15%, then it would be hit by 44 and not break. But instead it breaks immediately: so I assume that the 62 damage goes 49 into caregivers, 3 into torch and 10 into ward of flame. I don't see any other way that could be, but I don't understand why it is that way either...

    Also, I'm an idiot and didn't realise that Event.Unit.Detail.Absorb was a thing. Life is still messy as that can fire either before or after Event.Buff.Add depending on how the game is feeling (or rather, on self = it fires before, on others = it fires after).
    Spellbook@Greybriar
    Rejuvenation@Greybriar

+ Reply to Thread

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts