Just want to say this again, there is no actual table lookup. The actual code could be like this:
jCode:r = random(1); r = r - missrate; if (r<0) then { //miss } else { r = r - critrate; if (r<0) then { //crit } else { r = r - blockrate; if (r<0) then { //block } else { r = r - parryrate; if (r<0) then { //parry } else { //regular hit } } } }
There is no table to calculate. While the concept is a table, we don't go mindlessly implement a table lookup. The effect of this implementation is the attack table. When you activate Awareness, the buff management code sets that critrate at 0 and the above code runs happily with no additional checks and magically results in 0 crits. When Awareness wears off, the buff management code puts that critrate back to what it should be, and viola you will eat crits again. Since the buff management code is outside of the combat resolution loop, it is more efficient than checking on every attack whether you have Awareness up or not.
The various rates are the exact same rates you would roll against in their own seperate roll. To change that code to a multi-roll model, you just replace all the subtractions with "r = random(1);", and replace all the if conditions with "if (r<___rate)":
Code:r = random(1); // roll a number between 0 and 100% if (r<missrate) then { //miss } else { r = random(1); if (r<critrate) then { //crit } else { r = random(1); if (r<blockrate) then { //block } else { r = random(1); if (r<parryrate) then { //parry } else { //regular hit } } } }
----
In any case, now that we have the priority list, we will need to find the miss/crit/block rates before we can actually calculate a constant "parry -> parry rate" conversion at level 60. Although we can just look at the real rates, that real rate will change depending on our miss/crit/block. For WAR/DRK it doesn't change because of zero block, but for the PLD, every time we upgrade a shield, our real parry rate per point of parry drops.
At 322 block and 530 parry, we're looking at real rates of about 18.5% block and 11% parry.
I'm starting to think data collection should be more complete with total swings, crits, blocks, parries all recorded. Otherwise we may not notice anomalies that may point to more intricacies of the system.