I had two problems and decided to make them fight each other. First, I needed code to parse dice expression syntax (stuff like 1d8+3+1d6). Second, I was really sick of manually calculating DPR. The result was a new DPR Calculator.
I’m pretty happy with it. It accounts for accuracy, critical hit range, and a variety of damage sources. This is going to be very useful for weighing the benefits of various build options.
For example: Imagine that you’re considering what to do with your level 4 Ability Score Increase for your longbow-using fighter. Do you increase Dexterity by 2? Or do you take Sharpshooter? Well, it turns out that Sharpshooter increases your DPR compared to that Dexterity increase by 0.60 damage per round. That doesn’t account for Sharpshooter’s other benefits or the benefits of +1 AC from the Dexterity increase, but it took me about 30 seconds to make that comparison and that single data point can still be very informative when you’re optimizing a build.