Here's a few tables I calculated using excel and the functions listed below. (If you want to try this at home, from excel menu Tools -> Macros -> Visual Basic, then from Visual Basic menu, Insert-> Module,
and cut and paste these in, one per module. Then use just like a function in spreadsheet. You may need to set security to low to let them run).
All are for Lev20BAB = 20 (same for 19), which gives 7,5,4,4,3 attacks for iteration 3,4,5,6,7 weapons respectively. Also included the extra haste attack. Note that these are per round damage, and so not directly comparible to Funky's spread sheet (which is more of an average per attack).
In the spreadsheets below the Newcalc sheet has the actual per round values. To see how they compared to Funky's table I took the ratio of New/Funky, normalized to assassin dagger base (so could compare round to avg attack), then subtracted 1. Shown on the Ratio sheet. So Ratio shows a negative percent if the new calculation is less than Funky's, and is positive if new calculation is greater than Funky's.
Note that there's an extra parameter in the TwoHanded and DoubleWeapon functions to account for dualing penalty, should be either 2 or 4 to account for penalty.
One last comment, now that I have the double weapons in they seem really over the top with 12 attacks and some reasonble crit range and multipliers.
AC-AB = 15
spreadsheets.google.com/pub?key=pOivG2oeB17CkokbaU3VFeQAC-AB = 10
spreadsheets.google.com/pub?key=pOivG2oeB17COWcqfMsJ_agAC-AB = 0
spreadsheets.google.com/pub?key=pOivG2oeB17AieVXAu9EDFwAC-AB = -10
spreadsheets.google.com/pub?key=pOivG2oeB17BOJzd1R00PbAHere's the functions, hopefully no mistakes, but let me know if you see anything amiss.
Function HitDamage(CritMult, Range, ABdelta)
' ABdelta is AC-AB value
' compute Pcrit
CritRange = 21 - Range
Pcrit = CritRange / 20#
' compute Phit
tempmax = Application.WorksheetFunction.Max((20 - ABdelta) / 20#, 0.05)
PHit = Application.WorksheetFunction.Min(tempmax, 0.95)
' adjusted Pcrit, Pcrit cannot exceed Phit
Pcritadj = Application.WorksheetFunction.Min(PHit, Pcrit)
' compute damage
HitDamage = PHit * (Pcritadj * (CritMult - 1#) + 1#)
End Function
__________________________________________
Function OneHanded(iteration, Range, CritMult, ABdelta, Lev20BAB)
' haste attack
Temp1 = HitDamage(CritMult, Range, ABdelta)
' main attacks
temp2 = 0
For I = Lev20BAB To 1 Step -iteration
temp2 = temp2 + HitDamage(CritMult, Range, ABdelta + Lev20BAB - I)
Next I
OneHanded = Temp1 + temp2
End Function
____________________________________________________
Function DoubleWeap(iteration, Range, CritMult, ABdelta0, twoadj, Lev20BAB)
' twoadj to add twohanded penalty, either 2 or 4
ABdelta = ABdelta0 + twoadj
' haste attack, has no twohanded penalty
Temp1 = HitDamage(CritMult, Range, ABdelta0)
' main attacks
temp2 = 0
For I = Lev20BAB To 1 Step -iteration
ABmin = ABdelta + Lev20BAB - I
temp2 = temp2 + HitDamage(CritMult, Range, ABdelta + Lev20BAB - I)
Next I
' off-hand attack
temp3 = HitDamage(CritMult, Range, ABdelta) + HitDamage(CritMult, Range, ABdelta + iteration)
' The Bonus attacks start at highest AB, no twohanded penalty
temp4 = HitDamage(CritMult, Range, ABdelta0) + HitDamage(CritMult, Range, ABdelta0 + iteration)
DoubleWeap = Temp1 + temp2 + temp3 + temp4
End Function
___________________________________________________
Function TwoWeapon(iteration, Range, CritMult, ABdelta0, twoadj, Lev20BAB)
' twoadj to add twohanded penalty, either 2 or 4
ABdelta = ABdelta0 + twoadj
' haste attack, has no twohanded penalty
Temp1 = HitDamage(CritMult, Range, ABdelta0)
' main attacks
temp2 = 0
For I = Lev20BAB To 1 Step -iteration
temp2 = temp2 + HitDamage(CritMult, Range, ABdelta + Lev20BAB - I)
Next I
' off-hand attack
temp3 = HitDamage(CritMult, Range, ABdelta) + HitDamage(CritMult, Range, ABdelta + iteration)
TwoWeapon = Temp1 + temp2 + temp3
End Function
Edit: Renamed above TwoWeapon, it's for duel wielding, dont know what I was thinkin' to name it TwoHanded.