What follows is a whole pile of calculated values for the expected damage of tearing attacks, your chances of getting a Righteous Fury trigger, etc. I've taken into account up to two tearing dice, up to three base damage dice, and the possibility of RF triggering on 8, 9 or 10.
The full data is below, followed by the perl script used to generate it, in case anyone wishes to dispute methodology. I'll pull some interesting and useful numbers out of the data shortly.
== Rolling 1 dice, keeping the top 1. Reroll if below 5.5. ==
Single roll average: (55 / 10) = 5.500
Average total if reroll below threshold: 6.750
Without reroll, chance of RF: RF10: %10.000. RF9: %20.000. RF8: %30.000.
With reroll, fishing for RF: RF10: %19.000. RF9: %36.000. RF8: %51.000.
== Rolling 2 dice, keeping the top 1. Reroll if below 7.15. ==
Single roll average: (715 / 100) = 7.150
Average total if reroll below threshold: 8.133
Without reroll, chance of RF: RF10: %19.000. RF9: %36.000. RF8: %51.000.
With reroll, fishing for RF: RF10: %34.390. RF9: %59.040. RF8: %75.990.
== Rolling 3 dice, keeping the top 1. Reroll if below 7.975. ==
Single roll average: (7975 / 1000) = 7.975
Average total if reroll below threshold: 8.750
Without reroll, chance of RF: RF10: %27.100. RF9: %48.800. RF8: %65.700.
With reroll, fishing for RF: RF10: %46.856. RF9: %73.786. RF8: %88.235.
== Rolling 2 dice, keeping the top 2. Reroll if below 11.0. ==
Single roll average: (1100 / 100) = 11.000
Average total if reroll below threshold: 12.650
Without reroll, chance of RF: RF10: %19.000. RF9: %36.000. RF8: %51.000.
With reroll, fishing for RF: RF10: %34.390. RF9: %59.040. RF8: %75.990.
== Rolling 3 dice, keeping the top 2. Reroll if below 13.475. ==
Single roll average: (13475 / 1000) = 13.475
Average total if reroll below threshold: 14.993
Without reroll, chance of RF: RF10: %27.100. RF9: %48.800. RF8: %65.700.
With reroll, fishing for RF: RF10: %46.856. RF9: %73.786. RF8: %88.235.
== Rolling 4 dice, keeping the top 2. Reroll if below 14.9675. ==
Single roll average: (149666 / 10000) = 14.967
Average total if reroll below threshold: 16.279
Without reroll, chance of RF: RF10: %34.390. RF9: %59.040. RF8: %75.990.
With reroll, fishing for RF: RF10: %56.953. RF9: %83.223. RF8: %94.235.
== Rolling 3 dice, keeping the top 3. Reroll if below 16.5. ==
Single roll average: (16500 / 1000) = 16.500
Average total if reroll below threshold: 18.525
Without reroll, chance of RF: RF10: %27.100. RF9: %48.800. RF8: %65.700.
With reroll, fishing for RF: RF10: %46.856. RF9: %73.786. RF8: %88.235.
== Rolling 4 dice, keeping the top 3. Reroll if below 19.467. ==
Single roll average: (194667 / 10000) = 19.467
Average total if reroll below threshold: 21.404
Without reroll, chance of RF: RF10: %34.390. RF9: %59.040. RF8: %75.990.
With reroll, fishing for RF: RF10: %56.953. RF9: %83.223. RF8: %94.235.
== Rolling 5 dice, keeping the top 3. Reroll if below 21.458. ==
Single roll average: (2145825 / 100000) = 21.458
Average total if reroll below threshold: 23.225
Without reroll, chance of RF: RF10: %40.951. RF9: %67.232. RF8: %83.193.
With reroll, fishing for RF: RF10: %65.132. RF9: %89.263. RF8: %97.175.
Perl script that generated above:
#! /usr/bin/perl
my $roll = shift @ARGV;
my $keep = shift @ARGV;
my $threshold = shift @ARGV;
my $total;
my $count;
my $totalth;
my $countth;
my $rfcount;
my $rfcount9;
my $rfcount8;
for (my $ii = 0; $ii < 10 ** $roll; $ii++) {
my @scores;
for (my $jj = 0; $jj < $roll; $jj++) {
$scores[$jj] = ($ii / (10 ** $jj)) % 10;
if (!$scores[$jj]) {
$scores[$jj] = 10;
}
}
@scores = sort {$b <=> $a} @scores;
if ($scores[0] == 10) {
$rfcount++;
}
if ($scores[0] >= 9) {
$rfcount9++;
}
if ($scores[0] >= 8) {
$rfcount8++;
}
my $thisscore = 0;
for (my $jj = 0; $jj < $keep; $jj++) {
$thisscore += $scores[$jj];
}
$total += $thisscore;
$count++;
if (!$threshold || ($thisscore >= $threshold)) {
$totalth += $thisscore;
$countth++;
}
}
print "== Rolling $roll dice, keeping the top $keep. Reroll if below $threshold. ==";
print "Single roll average: ($total / $count) = ".sprintf("%.3f",$total/$count);
my $thavg = ($totalth / $countth);
if ($threshold) {
# print "First roll with threshold: ($totalth / $countth) = ".sprintf("%.3f",$thavg);
print "Average total if reroll below threshold: ".sprintf("%.3f",($totalth + $total*($count - $countth)/$count)/$count);
}
printf("Without reroll, chance of RF: RF10: %%%.3f. RF9: %%%.3f. RF8: %%%.3f.",(100*$rfcount/$count), (100*$rfcount9/$count), (100*$rfcount8/$count));
printf("With reroll, fishing for RF: RF10: %%%.3f. RF9: %%%.3f. RF8: %%%.3f.", 100*(1-(1-$rfcount/$count)**2), 100*(1-(1-$rfcount9/$count)**2), 100*(1-(1-$rfcount8/$count)**2));