Thottbot > Comments > Misc > Formulas > mivvel > Incorrect
NEW! WotLK Guide   NEW! Project Lore-Soloing: My First Quests in Northrend, Part 2
Thottbot > Comments > Misc > Formulas > mivvel > Incorrect
  •   Report  Quote Reply Incorrect
    Score 3.7     Vote: [-] [+] by Garlicbreath, 2.7 years ago
    Last edit: 2.7 years ago
    You might think so. But this is not how it is calculated. A 10% chance to dodge means you get a 10% chance to dodge out of ALL attacks, not just the ones which didn't miss, weren't parried etc.

    What happens is more like this:

    (pseudo code)
    float x = random(1 to 100)
    if x < 10 parry()
    elsif x < 20 dodge()
    elsif x < 30 missed()
    elsif x < 40 block();
    elsif x < 95 hit();
    else crit();

    You can verify this quite easily by checking that parry, dodge and block chances do actually correspond to the listed values over all attacks for a same level mob.

    If you really did get a chance to be missed first, and then a chance to dodge on remaining attacks and then a chance to parry on remaining attacks and so on; you would see a bias against parry being applied because it is applied to less attacks than earlier checks. But I have never observed any bias in any of dodge block and parry.
    •   Report  Quote Reply ^_^
      Score 0.72     Vote: [-] [+] by nall44, 2.5 years ago
      /clap

      Impressive, and I know you were just writing psuedo code however I feel it would be abit more complicated then that. Great way to get your point out though. I liked it.
    •   Report  Quote Reply that cant be right... this is prolly how it is
      Score -3.8     Vote: [-] [+] by GKeebler, 2.3 years ago
      more likey, what they do is roll on each possibility, and it would probably be an order of what id call "armor"

      first on chance to hit you (dodge) theyd roll 1/100 or 1000 or something like that to be all inclusive to the detail of the %.

      so it'd prolly go something like this

      roll 1-1000, if less than 100 than missed, else continue
      roll 1-1000, if less than 100 then dodge, else continue
      roll 1-1000, if less than 100 then parry, else continue
      roll 1-1000, if less than 100 then block, else continue
      roll 1-1000, if less than 900 than hit, else continue
      otherwise crit... all the while the numbers above would change to a correct static number based on the 2 players stats. This way its not just one roll that desides your fate... it could be that way, just corrected to proportion the possibilities of each. But its just as simple to make the attacking process like this so that you can just edit one portion or anotehr out depending on class, gear, and if someone has parry.

      This post is faded because it has a negative score.
      •   Report  Quote Reply RE: that cant be right... this is prolly how it is
        Score 0.73     Vote: [-] [+] by JoloStuki, 1.8 years ago
        I think the original post was more accurate than yours. Although the actual percentages are skewed by smaller numbers, they can't just have everybody's computer pulling that many random numbers from the server every time they attack, and I'm certain that the random seeds come from the server, as they would want to avoid anybody being able to manually adjust their hit, dodge, parry, block, and crit rates on their own PC.
        •   Report  Quote Reply You clearly don't kn...
          Score 0.46     Vote: [-] [+] by metalzoa, 1.7 years ago
          You clearly don't know what you are saying. Just looking at both of them ... its obvious its 2 ways of doing the exact same thing.

          I dont know the formula myself but I doubt either of the above are correct.

          I believe theres a sequential order to the attacks. Not sure what it is, but each one is calculated and a next calculation takes place depending on the results.

          Something like:
          With 21% Dodge and 10% Parry:

          Upon Monster Attack:
          - inherrent chance to miss on you (lets assume its 30%)
          * if missed then attack nullifed. if not then*

          - character's chance to dodge (21%)
          * if dodged then attack nullified. if not then*

          - chance to parry (10%)
          * if parried .... (and so on)

          Makes logical sense because you cannot calculate a "miss rate" after your character's chance to negate an attack via dodge or parry. Its like saying:

          Ok ... I swing at you. if you dont stop the attack, I could miss. Why would you be parrying a hit that doesnt have a chance of touching you? Makes no sense.

          The real question is: In which order does the game calculate em? They ARE calculated separately. Thats fact.

          When a Rogue uses Evasion .. all of a sudden you dont see as many parries. Why?

          Because you are dodging so much you dont need to parry. Theres still occasional misses, but I barely see parries when I pop Evasion.

          Which leads me to believe the order is most likely:

          -Miss % Based on Monster
          -Dodge % Based on your Stats
          -Parry % Based on your Stats

          According to the first post ... you would be assuming you cannot parry or dodge a monster who inherrently has no chance of missin on you. On the contrary ... ive dodged / parried monsters that have never actually missed on me. So your formula is wrong. The 2nd one is closer to the real deal .. but those numbers are mad sketchy.


    •   Report  Quote Reply Re: Incorrect
      Score 0.49     Vote: [-] [+] by igindex, 1.5 years ago
      Last edit: 1.5 years ago
      I don't think this is quite how it works, say for example consider a world where you only have parry, dodge and hit. You have a 50% chance to parry and 60% chance to dodge,

      float x = random(1 to 100)
      if x < 50 parry()
      elsif x < 110 dodge()


      the random number doesn't even go up to 110!

      The important thing to realise is that the prior prob to parry (in this case 50% and 60%) is not the same as the measured or observed (which will be slightly lower).

      My guess is that the algorithm begins by assigning a prob to be hit, which is equal to the product of not parrying and not dodging, 0.5 * 0.4 = 0.2. Which means there is an 80% chance to dodge or parry.

      It is logical to see that given that there is no hit, the relative prob of dodging or parrying is related to the prior probabilities.

      Prob parry given not hit = 0.5/(0.5+0.6) = 5/11
      Prob dodge given not hit = 0.6/(0.5+0.6) = 6/11

      This weights the probs such that given a not hit, either a dodge or parry must follow. This adds up to one as would be expected.

      The probability of parrying and not hit is equal to the prob of parry given not hit * prob of not hit, similarly prob of dodge and not hit = prob of dodge given not hit * prob of not hit. This might seem a bit confusing but you just have to take my word for it or read up on Bayesian probabilites or just have a good think.

      Prob parry and not hit = (5/11)*0.8 = 20/55
      Prob dodge and not hit = (6/11)*0.8 = 24/55

      These are the probs that would actually be measured say if you have an addon that keeps track of dodge parry statistics. Adding these probs to the prob to be hit = 1.

      20/55 + 24/55 + 2/10 = 1.

      How this would look as an algorithm would be something like rand between 1 and 0, if greater than 0.8 then hit, if less than 20/55 then parry, else dodge.

      Implications of an algorithm like this suggest that having either a high parry or high dodge is better than having a medium parry and medium dodge.

      i.e consider a 80% parry chance an 0% dodge chance, the prob of being hit is simply 20%, now consider 40% parry and 40% dodge, the prob of being hit is now 0.6*0.6*100 = 36% which is a 16% increase.
    • BackTop
       
      Created by Thott - Thottbot 3.71 - Feedback