This post is just to clarify a mathematical misconception and to try to make it clear how PRR works.
The 600 doesn't matter. 6000, 200, or any other number, the result is the same.
It's not 68 damage, it's 67, rounded up from 66.666 (repeating).
- AKA: 200 damage / 3 is the simple math for multiples of 100 PRR.
- AKA: 200*(100/(100+200)), which is the same math that's actually being done by the code.
- The general formula is to multiply the damage by (100 / (100 + PRR))
I'm not sure where the 68 comes from in the quoted example. If this was tested in game, it's possible there's a slight numerical bug or some strange floating point issue, but the basic formula doesn't result in 68 damage.
So, given that it's mathematically 66.666, with no meaningful rounding:
50 / 66.666 => 75% (or -25% damage for going from 200->300).
I'll concede the number does still change slightly when it's 67, but only due to rounding.
The -25% damage reduction is constant from 200 PRR -> 300 PRR, which is an important feature of the formula we chose. There's no change here, as your example shows, though exact number may look slightly off due to rounding. The proportional math is the same.
Here's a few different examples, ignoring rounding errors:
Code:
PRR Damage % of previous line's damage
0 7634.0
100 3817.0 50%
200 2544.7 67%
300 1908.5 75%
400 1526.8 80%
500 1272.3 83%
PRR Damage % of previous line's damage
0 1000.0
100 500.0 50%
200 333.3 67%
300 250.0 75%
400 200.0 80%
500 166.7 83%
PRR Damage % of previous line's damage
0 42.0
100 21.0 50%
200 14.0 67%
300 10.5 75%
400 8.4 80%
500 7.0 83%
The percentage change based on PRR doesn't care how much the original damage was, except for small rounding errors. If you go from 200 PRR to 300 PRR, you are taking 25% less damage than before.