How does armor currently work here?

Discussion in 'General Discussion' started by Cerebro, Oct 28, 2015.

  1. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    Hm, yeah Illicit's data raise a couple of red flags on TAKP dodge/parry/riposte/block code. I'd like to dig into it a little further, but can't make much headway without knowing
    1. What were the SK dodge/riposte/parry skill caps at level 65 on AK?
    2. How confident are we that defensive skills should get evaluated in the TAKP order, riposte > parry > (block >) dodge? Illicit thought (and his data perhaps suggest) that the order was parry > riposte > dodge.
     
  2. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    (fun fact, btw: as the code's currently written, the 15% riposte mod on bloodfrenzy should let a warrior with 225 unmodified skill riposte 9% of all incoming attacks, up from 7% unmodified. as if that sword needed to get any better!)
     
    Last edited: Oct 10, 2017
  3. Ravenwing

    Ravenwing I Feel Loved

    Messages:
    3,166
    The answer to the correct order of the checks is apparently contained in our client's source code, and someone gave us the answer several years back. It's block, parry, riposte, dodge, shieldblock, avoidance, mitigation.

    (I don't think shieldblock is actually a thing for us, but apparently there's a lot of weird superfluous stuff like that in the client source.)
     
    Pithy likes this.
  4. Darchon

    Darchon I Feel Loved

    Messages:
    3,627
    1. Block check
    2. Parry check
    3. Riposte check
    4. Dodge check
    5. Shield Block check
    6. Avoidance check

    It was commonly noted that swarming knights on Live didn't want Improved Parry modifiers because it reduced the number of riposte rolls they would get, thus reducing their DPS/Healing.

    This is the order on Live and has been for some time. I sort of just assumed it's been that way forever and Shield Block AA was just tossed in at the end there when that AA was added in OoW.

    And yes, Bloodfrenzy is OP. It's probably best in slot offhand even in PoTime because of that modifier.
     
    Pithy and lurari like this.
  5. lurari

    lurari People Like Me

    Messages:
    646
    The way the order of operations was done on Live was confirmed by discing.

    Example: A ranger with Weaponshield on will parry everything. However, if an incoming attack was something-besides-parried, then it was assumed that something-besides-parry had to have rolled before parry.

    If this was in doubt, we could check old AK logs to confirm AKuracy:

    Deftdance gives 100% dodge, Weaponshield gives 100% parry, and Furious gives 100% riposte

    Check what happens when each of those discs are active. If warriors under furious don't parry or dodge, then riposte is first. If rangers never riposte while under weaponshield, then parry is first. If bards don't parry or riposte, then dodge is first.
     
  6. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    Aha! That fits Illicit's data better. I believe it also means that TAKP's combat routines are out of order - or at least they were in the last open source version - and that mobs and players are riposting a bit too often atm.
     
  7. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    Here are Illicit's data, with 99% Gaussian confidence intervals. (The estimates themselves depend on the data, so they're noisy and random. The confidence interval is the range in which, with approximately 99% probability, the true AK parry/riposte/dodge chance lies.) Although the parses were probably 10+ hours long, the sample size is actually still too small to draw really strong conclusions. Basing decisions on short parses is a bad idea!

    Anyhoo. No mods:
    • parry: 6.32 +/- 0.51 percent (likely 6% true chance)
    • riposte: 5.93 +/- 0.51 percent (likely 6% true chance)
    • dodge: 5.58 +/- 0.51 percent (could be 5% or 6% true chance)
    With mods:
    • parry: 7.11 +/- 0.41 percent (likely 7% true chance)
    • riposte: 6.15 +/- 0.40 percent (likely 6% true chance)
    • dodge: 6.22 +/- 0.41 percent (likely 6% true chance)
    The data are actually consistent with integer parry/riposte/dodge chances, like TAKP currently uses. I think that part is okay. What's weird is that the riposte chance appeared not to have been changed by the 12% riposte mod. The TAKP riposte chance function,
    Code:
    [ Only registered users can see the bbcode. Click Here To Register... ]
    suggests that at 200 unmodified skill, the 12% mod should have bumped the riposte chance from 6% to 7%. The others - 6% to 7% parry, no change to dodge - agree with the TAKP function and the AK knight skills of 205 parry, 170 dodge.

    (If you want to fiddle with that function, btw, the floor of a number is just the number rounded down to the nearest integer. So floor(2.38) = 2, floor(1.937) = 1, floor (328348.432) = 328348, etc.)
     
    Last edited: Jan 8, 2018
  8. Jugo!

    Jugo! People Like Me

    Messages:
    470
    Did Bragon, the Spider King keep logs of the numerous things he tanked on AK? If so, did he share?
     
  9. Torven

    Torven I Feel Loved

    Messages:
    2,742
    Our code currently does: Rip, Block, Parry, Dodge; because: https://forums.daybreakgames.com/eq...st-update-06-10-15.223510/page-2#post-3261772

    Parse results from my 2016 logs seem to agree with Dzarn, but I didn't use discs. Riposte/swing rate matches skill + 100 / 50, and parry/swing rate is noticeably less than skill + 100 / 45. Also parry rate went up with a fire beetle eye equipped (parry does not require a weapon).

    If there is hard evidence that AK was different (I wouldn't be surprised) then it needs to be changed.
     
  10. Jugo!

    Jugo! People Like Me

    Messages:
    470
    Testing if @Bragon works
    And it does! ding a ling, Bragon /grin
     
  11. Torven

    Torven I Feel Loved

    Messages:
    2,742
    I've found such evidence. Frankly I should have looked at this more closely a lot sooner.

    Avoidance skill order will soon change to what Darchon posted. Also riposte and parry rates will be reduced. Seems Sony couldn't stop making the game easier time and time again.
     
    Videri-Tala and Lenas like this.
  12. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    ** picks up the Torv-phone **

    Big T, question for you! Back in the November 3 patch notes, we read
    Are you open to sharing how you changed the formulas? I don't doubt that the new ones are more accurate, I'm just curious about how dodge/parry/riposte/block mods are handled now.

    In the old code, the integer arithmetic gave some counterintuitive behavior. (Not inAKurate, just counterintuitive.) For example, knights saw no benefit from 1-5% dodge mods, but big benefit from mods of 6% or higher. I'm curious if the new code changes that kind of conclusion.
     
  13. Torven

    Torven I Feel Loved

    Messages:
    2,742
    I just increased the divisor by 5. Parry is / 50 now, and Riposte is / 55.

    While going over pet skills, I did notice that when Sony applies the skill multipliers from items, that it includes the +100 in the multiplication; that's why the percentiles are so low. Of course this still makes the gains all-or-nothing with integer arithmetic. (seems silly for them to have used ints here)
     
    Pithy likes this.
  14. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    Heh, yeah, using integer math but expressing dodge mods as percentages was pretty misleading. It seems like it would've been more natural to combine integer math with the tiered dodge mod system they used in later expansions (Improved Dodge I-II-III, etc.). The Luclin/PoP system is also tiered, but sneakily!

    Here's my best guess at the 'sneaky tiers' we'll see in Luclin. tldr: Knights, go for 10% riposte mod. Don't worry about parry or dodge; they're unachievable. Warriors, go for 7% parry mod and 3% riposte mod. Don't worry about dodge; it's unachievable. Casters, go for 3% dodge mod.

    Code for calculating dodge/parry/riposte chance from your base skill and worn mod:
    Code:
    [ Only registered users can see the bbcode. Click Here To Register... ]
    (Does that look about right, Torv? I'm not sure exactly what you meant about Sony including the +100 in the multiplication.)

    knights
    parry (205 skill) - 6% chance for mod < 15%, 7% chance above
    riposte (200 skill) - 5% chance for mod < 10%, 6% chance above
    dodge (170 skill) - 6% chance for mod < 17%, 7% chance above

    warriors
    parry (230 skill) - 6% chance for mod < 7%, 7% chance above
    riposte (225 skill) - 5% chance for mod < 2%, 6% chance above
    dodge (190 skill) - 6% chance for mod < 9%, 7% chance above

    casters
    dodge (75 skill) - 3% chance for mod < 3%, 4% chance above
     
    Last edited: Jan 10, 2018
    Cadsuane likes this.
  15. Loraen

    Loraen Well-Known Member

    Messages:
    266
    I thought some Temerity SK on AK parsed and found that the lower mods worked. Are you sure the code shouldn't be:

    Code:
    [ Only registered users can see the bbcode. Click Here To Register... ]
     
    Pithy likes this.
  16. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    Yeah, sorry, I edited a bit. I had the divisor wrong for dodge and parry in the first draft. I initially used /50 for all three. I updated the last post. I'll check agreement with Illicit's data.
     
  17. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    So to recap, Illicit parsed AK defense skills with (a) no mods and (b) 12% parry/10% riposte/8% dodge mods. Let's assume that the AK skill caps for level 65 SKs were 205 parry, 200 riposte, 170 dodge. Then the formula
    Code:
    [ Only registered users can see the bbcode. Click Here To Register... ]
    predicts that without mods, Illicit's evasion rates should've been 6% parry, 5% riposte, 6% dodge. With the mods, it predicts 6% parry, 6% riposte, 6% dodge. Only the riposte mod should've mattered.

    That's inconsistent with Illicit's data, which suggest with fair confidence that the parry mod mattered, the dodge mod might've mattered, but the riposte mod probably did nothing. (His evasion rates with confidence intervals are a few posts up.)
     
  18. Torven

    Torven I Feel Loved

    Messages:
    2,742
    Yes.

    The +100 is right in your formula here. I.e. it's (skill+100)*mult, not skill*mult.

    The second floor() you're doing here would still result in 0 for small mod vlaues.

    Regardless, the random roll done is with ints. Live parses confirm that, on Live at least, the roll is an int.

    I should make very clear that it's certain that Sony changed their function and the way I modified it to better fit the data I was seeing is an educated guess. Also VERY long parses would be required to parse differences of a fraction of a percent in the rate change of avoidance skills.
     
    Pithy likes this.
  19. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    Cool, thanks for clarifying. Do we care that the current formula may not be consistent with Illicit's data? You're totally right about the huge number of swings needed to detect a 1% difference; although Illicit did 15k swings in the no mods case and 26k with mods, his evasion rate estimates are only accurate to about half a percent.
     
  20. Torven

    Torven I Feel Loved

    Messages:
    2,742
    Also you need to keep in mind the avoidance order. Parry and block results will most closely match the expected rate, but skills after that will parse slightly lower due to the avoidance skills before them triggering first.
     
  21. Loraen

    Loraen Well-Known Member

    Messages:
    266
    Hmm, I was thinking that might help the rounding error but I actually might have made that worse.

    Also, are you sure Verant wasn't pulling some mult/shift tricks to get better precision? Tough to say of course but even for Verant adding in a bunch of completely dysfunctional items seems a bit improbable somehow.
     
  22. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    Yeah, sample sizes get progressively smaller for the skills that get checked later. I took that into account when I processed Illicit's data. Here's the code for the no mods case. The mods case looks similar. It's vectorized Matlab code, so apologies if it's not the world's most readable thing.

    Code:
    [ Only registered users can see the bbcode. Click Here To Register... ]
    That resulted in the following 99% confidence intervals:

    No mods:
    • parry: 6.32 +/- 0.51 percent (likely 6% true chance)
    • riposte: 5.93 +/- 0.51 percent (likely 6% true chance)
    • dodge: 5.58 +/- 0.51 percent (could be 5% or 6% true chance)
    With mods:
    • parry: 7.11 +/- 0.41 percent (likely 7% true chance)
    • riposte: 6.15 +/- 0.40 percent (likely 6% true chance)
    • dodge: 6.22 +/- 0.41 percent (likely 6% true chance)
    I could do a formal hypothesis test thingy, but just eyeballing it, +0.8% from the parry mod looks significant. The +0.6% from the dodge mod, ehh, maybe. The riposte mod probably did nothing.
     
    Last edited: Jan 8, 2018
  23. Torven

    Torven I Feel Loved

    Messages:
    2,742
    To be honest that's not a whole lot when parsing fractions of a percent. It required logs with 500k+ to parse crit rates of a tenth of a percent. But of course we don't have the luxury of a server to parse on anymore, so we have to use what we have. I would like to parse those logs myself if they are still available.

    It's entirely possible that the old logs I was looking at simply parsed low due to how short they were, and that the divisors were the same back then.

    I made these logs in 2003, which were the most influential in my decision:

    Level 65 Monk w/ Ton Po Chestwrap defending vs Defender Filorou (Shadowhaven Guard), Oct 30 2003:
    Total Swings: 3381; Landed Blows: 1139 (33.688%); Avoided Swings: 2242 (66.311%)
    - Blocks: 500 (14.788%)
    - Parried: 0 (0%)
    - Riposted: 152 (4.495%)
    - Dodged: 196 (5.797%)
    - Misses: 1394 (41.23%)

    Level 65 Warrior w/ Raex BP defending vs Defender Kealren (Shadowhaven Guard), Oct 30 2003:
    Total Swings: 3373; Landed Blows: 1340 (39.727%); Avoided Swings: 2033 (60.272%)
    - Parried: 184 (5.455%)
    - Riposted: 178 (5.277%)
    - Dodged: 172 (5.099%)
    - Misses: 1499 (44.441%)

    Using the modern EQ formulae, expected avoidance rates would be:
    Monk block: (100+230)*1.08/25 = 14%
    Monk riposte: (100+225)/50 = 6%
    Monk dodge: (100+230)/45 = 7%
    Warrior parry: (100+230)/45 = 7%
    Warrior riposte: (100+225)*1.08/50 = 7%
    Warrior dodge: (100+190)/45 = 6%

    I also checked some other logs (which were even shorter) and they all seemed to agree that parry and rip were lower. Again, the RNG could have been deceiving me. I'm certainly willing to make more changes or revert my modifications if the data demands.
     
  24. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    Sadly, Illicit didn't post his raw logs, just the following summary:

    Base case (Bloodmaw, no mods):

    Total Attacks: 15,320
    Hits: 4,533
    Misses: 8,214
    Defensed: 2,573
    Parried: 968
    Riposted: 851
    Dodged: 754

    Modded case (same mob, 10% parry mod, 12% riposte mod, 8% dodge mod):

    Total Attacks: 26,328
    Hits: 7,547
    Misses: 13,978
    Defensed: 4,803
    Parried: 1,871
    Riposted: 1,504
    Dodged: 1,428
     
    Last edited: Jan 8, 2018
  25. Bum

    Bum I Feel Loved

    Messages:
    2,647
     
    Pithy likes this.
  26. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    lulz
     
    lurari likes this.
  27. showstring

    showstring I Feel Loved

    Messages:
    3,332
    Sorry for thread necro. I've re-read the above findings many times, and I'm still unclear on the things:


    1. Do we get decimal point benefits here, or just full percentage points?
    I can see some conflicting info from Illicit's data parses. Has this been disregarded from being implemented in our code due to insufficient data parsing?


    2. What's the definitive list of mods that work. Is this it?

    Where do the Monks fall in this equation?

    I'd love a definitive list of which mods work (aka, able to reach the next breakpoint) for Riposte/Dodge/Parry mods

    What's the best way to document it some kind of a table so we can put it on the wiki?


    Is it by Skill caps definitions https://www.takproject.net/SkillCaps
    Or by this AC by Class table http://wiki.takp.info/index.php?title=AC_Softcaps_by_Class
    Or something else? Some other table based on some % formula that differs than the above options?


    Option 1 - Table by skill cap definitions

    Dodge skill cap at 65
    230 - Monk - need %? mod to reach next breakpoint
    210 - Rogue - need %? mod to reach next breakpoint
    190 - Warrior - need %? mod to reach next breakpoint
    170 - Pal/Rng/SK/Bard/Bst - need %? mod to reach next breakpoint
    75 - Clr/Dru/Shm/Nec/Wiz/Mag/Enc - need %? mod to reach next breakpoint

    Parry skill cap at 65
    230 - Warrior / Rogue - need %? mod to reach next breakpoint
    220 - Ranger - need %? mod to reach next breakpoint
    205 - Pal / SK - need %? mod to reach next breakpoint
    185 - Bard - need %? mod to reach next breakpoint

    Riposte skill cap at 65
    225 - Warrior / Monk / Rogue - need %? mod to reach next breakpoint
    200 - Pal / SK - need %? mod to reach next breakpoint
    150 - Ranger - need %? mod to reach next breakpoint
    75 - Bard - need %? mod to reach next breakpoint



    Option 2 - Table by AC Soft Cap by class

    Warrior - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint
    Pal, Sk, Clr, Brd - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint
    Rng, Shm - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint
    Dru, Bst, Rog, Casters - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint
    Monk - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint


    Option 3 - Table by OverCap Returns by class

    Warrior - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint
    Knights - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint
    Bard - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint
    Rng, Bst - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint
    Mnk, Rog - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint
    Others (priest and silk casters) - need %? mod for Dodge, %? mod for Parry, %? mod for Riposte to reach next breakpoint



    Sorry to be pedantic about it, it keeps coming up in our guild discussions, and only reference I have is this thread which is quite ambiguous.
    Would be really good to have a definitive list of working mods in our era. Thanks to anyone who can help!
     
  28. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    AFAIK, this is the current TAKP formula for dodge, riposte, parry and block chances:
    Code:
    [ Only registered users can see the bbcode. Click Here To Register... ]
    In that formula, floor(X) is the largest integer below X. For example, floor(1.2) = 1 and floor(3.99) = 3.

    Here's what that formula gives for the skill caps at level 60 in the table you linked, Rimi. (Caveat: I don't know if that table is accurate.)

    Block skill cap at 60
    230 - Monk - need 7% mod to reach next breakpoint
    200 - Bst - need 9% mod to reach next breakpoint

    Dodge skill cap at 60
    230 - Monk - need 10% mod to reach next breakpoint
    210 - Rogue - need 2% mod to reach next breakpoint
    190 - Warrior - need 9% mod to reach next breakpoint
    170 - Pal/Rng/SK/Bard/Bst - need 17% mod to reach next breakpoint
    75 - Clr/Dru/Shm/Nec/Wiz/Mag/Enc - need 3% mod to reach next breakpoint

    Parry skill cap at 60
    230 - Warrior / Rogue - need 7% mod to reach next breakpoint
    220 - Ranger - need 10% mod to reach next breakpoint
    205 - Pal / SK - need 15% mod to reach next breakpoint
    185 - Bard - need 6% mod to reach next breakpoint

    Riposte skill cap at 60
    225 - Warrior / Monk / Rogue - need 2% mod to reach next breakpoint
    200 - Pal / SK - need 10% mod to reach next breakpoint
    185 - Bst - need 16% mod to reach next breakpoint
    150 - Ranger - need 10% mod to reach next breakpoint
    75 - Bard - need 26% mod to reach next breakpoint

    So in Luclin, almost nothing matters. The only exceptions are Laminate Bracer for monks/BLs, a few dodge mods for rogues/priests/casters, Ring of Reflex for warriors/rogues/bards, Bloodfrenzy for warriors, and Mask of Resiliance or Crystal Shadow Cloak for monks/rogues (and warriors without Bloodfrenzy).

    I think there's a problem with the skill cap table. The data appear to be identical at 60 and 65.
     
    Last edited: May 23, 2020
  29. showstring

    showstring I Feel Loved

    Messages:
    3,332
    Last edited: May 24, 2020
    Mokli and Devour_Souls like this.
  30. Pithy

    Pithy I Feel Loved

    Messages:
    2,620
    No problemo! I can run the numbers for level 65, too, if the skill cap table gets updated. I'm curious m'self whether the 8% dodge mod on the melee AG earring will do anything, whether knights should bother farming the 12% riposte mod mace from PoFire, etc.
     
    Last edited: May 24, 2020
    Manstache likes this.