No escaping that, now isn't it.
Moving on to the next iteration of our hypothesis:
1) Read current base damage
B .
2) Multiply base damage by skill percent
S (the % listed in the skill description). Let's call it 'skill damage'
D .
3) Feed it to a function
F (D) that produces minimum and maximum values for a roll.
4) Roll for damage.
5) Roll for each effect (crit, shock, freeze, etc).
6/7) Round the number to an integer (down, up, to nearest - we don't know yet).
6/7) Apply damage and effects to target.
Does that look a bit vague to you? Well, it's going to get even more vague below. With only this sample pool to rely on, we'll have to fall back to statistical characteristics. Only two of them matter here.
First and most important is our good old friend - mean value, or average damage per shot (6.325).
Second is standard deviation (0.865), which is a square root of sample variation. Variation, in layman's terms, is how random the RNG is. Large variation means we'll often see very low and very high damage results.
Standard deviation is a bit trickier. Chebyshev's inequality can guarantee this:
68% of all damage roll results will fall within 6.325 +/- 0.865 (one standard deviation), or 5.46 -- 7.19
95% of all damage roll results will fall within 6.325 +/- 1.730 (two standard deviations), or 4.59 -- 8.06
99.7% of all damage roll results will fall within 6.325 +/- 2.596 (three standard deviations), or 3.73 -- 8.92
Mind you, that doesn't mean that 0.3% of shots will yield 3 or 9 damage. It means they can , in theory, go that low/high. In reality there's most definitely a hard cap of min/max damage programmed in, statistical functions just don't know that.
One skill isn't enough to do any reverse-engineering, though. Ideally we'd want 100-point or larger pool for each of Double Tap, FMJ and Suppressive Fire.
I know SF is a pain to track, and you'll probably need to record it first and pause/play a lot, but FMJ samples are absolutely necessary if we are to progress.
Another potential source would be samples taken at level 2 in the first 90 seconds. If damage works how I think it works, the distribution curve should retain its shape, with only the mean value shifting along the X axis (damage) by 3 per level.
Click to expand...