Let's Do Another Math Thread: Dex-and-a-half to-hit


Prerelease Discussion


9 people marked this as a favorite.

Bardarok had an interesting suggestion in the Dex to Damage thread: instead of giving Dex to damage, what if you could instead get 1.5xDex to-hit? That would make Dex-based fighting have better accuracy and more crits with fewer fumbles, but lower damage per hit. Dex-based fighting would "look and feel" different than Str-based, something that's not accomplished by just replacing Str with Dex.

Since Dex is used for AC, it's probably best if Dex-based fighting does less DPR than Str-based fighting, but it should still do a viable amount of damage. As luck would have it, the math seems to work really well for that design goal!

Here are the plots for DPR, crits per round, hits per round, and fumbles per round for three fighting styles: Power Attack, Normal Attack, and Dex-based "Finesse Attack". (Assumptions are in the spoiler below for how these were calculated.)

Takeaways include:

  • Finesse fighting does less damage than normal fighting regardless of the opponent's AC. Power attack does the most damage.

  • Finesse fighting gets a lot more crits than the other fighting styles.

  • Finesse fighting gets significantly more hits than the other fighting styles.

  • Power attacking has the least fumbles (due to making fewer attacks and not taking a second iterative,) but finesse fighting has significantly fewer fumbles than normal fighting.

Assumptions:
Natural 20s always crit.

Two-handed weapons do not get 1.5xStr to damage like in PF1, they only get Str to damage (do we have confirmation of whether this has changed or not?)

Numbers are calculated at level 1, and magic weapons aren't considered.

The "Power Attack" first attack is at +5 (4 for Str, 1 for proficiency) for 2d12+4 damage (3d12+8 on a crit), and the second attack is at +0 for 1d12+4 (2d12+8 on a crit.)

The "Normal Attack" first attack is at +5 (4 for Str, 1 for proficiency) for 1d12+4 damage (2d12+8 on a crit), the second attack is at +0 for the same damage, and the third is at -5 for the same damage.

The "Finesse Attack" is assumed to be with a weapon with both the Agile and Deadly qualities, so the iteratives are at -4/-8 and on a crit it does an extra 1d10 of damage. The attack bonus is 1.5xDex + proficiency, and the damage is the die + Str. I'm assuming 14 Str and 18 Dex. So, the first attack is at +7 (6 for 1.5xDex and 1 for proficiency) for 1d6+2 (2d6+4+1d10 on a crit), the second attack is at +3 for the same damage, and the third attack is at -1 for the same damage.

(If people have other cases they'd like me to run, I can try to accommodate requests.)

My super-janky Python code:
import pandas as pd
import numpy as np

# For each attack routine, define each attack bonus, normal damage, and crit damage

# Level 1 character with 18 Str and Power Attack
Bonus = 5
DiceDamage = 6.5
BonusDamage = 4
PowerAttack18Str = [[Bonus, (DiceDamage*2)+BonusDamage, (DiceDamage*3)+2*BonusDamage], [Bonus-5, DiceDamage+BonusDamage, (DiceDamage*2)+BonusDamage]]

Bonus = 5
DiceDamage = 6.5
BonusDamage = 4
Str18 = [[Bonus, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2],[Bonus-5, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2],[Bonus-10, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2]]

# Level 1 character with 18 Dex and 12 Str, attacking three times with a 1d6 agile deadly weapon with an attack bonus of 1.5xDex
Bonus = 7
DiceDamage = 3.5
BonusDamage = 2
BonusCritDamage = 5.5
DexNimbleDeadly = [[Bonus, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2+BonusCritDamage], [Bonus-4, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2+BonusCritDamage], [Bonus-8, DiceDamage+BonusDamage, (DiceDamage+BonusDamage)*2+BonusCritDamage]]

Routines = [PowerAttack18Str, Str18, DexNimbleDeadly]

ACs = range(10,26)

Damage = np.zeros((len(ACs),len(Routines)))
Crits = np.zeros((len(ACs),len(Routines)))
Hits = np.zeros((len(ACs),len(Routines)))
Fumbles = np.zeros((len(ACs),len(Routines)))

index = 0
for routine in Routines:
RoutineDamage = np.zeros((20,len(ACs)))
RoutineCrits = np.zeros((20,len(ACs)))
RoutineHits = np.zeros((20,len(ACs)))
RoutineFumbles = np.zeros((20,len(ACs)))
for attack in routine:
AttackDamage = np.zeros((20,len(ACs)))
AttackCrits = np.zeros((20,len(ACs)))
AttackHits = np.zeros((20,len(ACs)))
AttackFumbles = np.zeros((20,len(ACs)))
for roll in range(1,21):
for AC in ACs:
Result = roll + attack[0]
if (Result >= AC+10) or (roll==20):
AttackDamage[roll-1,AC-ACs[0]] = attack[2]
AttackCrits[roll-1,AC-ACs[0]] = 1
elif Result >= AC:
AttackDamage[roll-1,AC-ACs[0]] = attack[1]
AttackHits[roll-1,AC-ACs[0]] = 1
elif Result <= AC-10:
AttackFumbles[roll-1,AC-ACs[0]] = 1
RoutineDamage = RoutineDamage + AttackDamage
RoutineCrits = RoutineCrits + AttackCrits
RoutineHits = RoutineHits + AttackHits
RoutineFumbles = RoutineFumbles + AttackFumbles
Damage[:,index] = np.sum(RoutineDamage, axis=0)/20
Crits[:,index] = np.sum(RoutineCrits, axis=0)/20
Hits[:,index] = np.sum(RoutineHits, axis=0)/20
Fumbles[:,index] = np.sum(RoutineFumbles, axis=0)/20

index = index+1

np.savetxt("Damage.csv", Damage, delimiter=",")
np.savetxt("Crits.csv", Crits, delimiter=",")
np.savetxt("Hits.csv", Hits, delimiter=",")
np.savetxt("Fumbles.csv", Fumbles, delimiter=",")

Could this be a viable option to differentiate Dex-based fighting from Str-based fighting, and give each its own "look and feel" while keeping them on a similar power curve?


Wow, this is a really cool idea! And so obvious in hindsight, but I don't think I've ever seen it proposed before. I hope the paizo devs take a look at this thread.

One thing that might throw the math way off, unfortunately, is that sneak attack dice are multiplied on a critical hit now.


I really really like this idea. I’ve got a different idea about how to implement it. If a feat (or whatever) allowed you to reduce iterative attack penalties by your dex mod then it would really be interesting. Your first hit gains no benefit but the subsequent ones are strengthened. I think that plays a bit closer to your thinking of the fighting style. It also has the benefit of capping the effective value.

However I think that mathing these ideas is probably of dubious value until we can see the full play test document.


+bonuses to hit need to be on the same scale to prevent growing differences. The same reason they removed bab scaling based on class.

This works at a set level but doesn't work with leveling up.


citricking wrote:

+bonuses to hit need to be on the same scale to prevent growing differences. The same reason they removed bab scaling based on class.

This works at a set level but doesn't work with leveling up.

This ability doesn't really scale much at all. AFAIK, ability score increases are every 5 levels like in Starfinder, and stat-boosting items have been removed from the game. If both those things are true, if you started at 18 (or 14) Dex, you would have to reach level 20 before you saw any scaling for Dex-and-a-half to-hit. So if you have 18 Dex with no stat boosting items, it's a flat +2 across your whole career with another bonus +1 at level 20.


Too fiddly.

Just make it a +2 to hit for a more accuracy based combat style.


1 person marked this as a favorite.
kyrt-ryder wrote:

Too fiddly.

Just make it a +2 to hit for a more accuracy based combat style.

A flat +2 might be preferable to avoid "18 or bust" point-buys... but I wouldn't call it fiddly. You calculate it once and use the exact same bonus throughout your entire career, is that really "fiddly"?

It's less fiddly than getting Str-and-a-half to damage when swinging a longsword two-handed, but getting 1xStr to damage when swinging the longsword one-handed.


Pathfinder Adventure Path Subscriber

After learning about the new critical mechanics, I was really hoping that the rogue's sneak attack ability was going to be something like this, with a massive situational accuracy increase + the ability to do nasty things on critical hits, instead of just trying to keep up other characters on raw damage output--because it would be such an interesting and more unique take on the classic role, but it doesn't seem like this is the direction that they have decided to go. Maybe they will eventually have some kind of "unchained" or "advanced" splat book that will have optional rules for expanding play and something like this could be easily introduced as a house rule.


Until you're hit with cat's grace or ray of clumsiness.

Or haste if +2 dex brings your modifier to a multiple of 2.

Or entangled or fatigued or exhausted


kyrt-ryder wrote:

Until you're hit with cat's grace or ray of clumsiness.

Or haste if +2 dex brings your modifier to a multiple of 2.

Or entangled or fatigued or exhausted

Dex damage doesn't exist in PF2, so no Touch of Gracelessness. We don't know if Cat's Grace exists, but if it does and gives a +4, it just means you get a +3 to-hit instead of a +2. That doesn't sound any harder to calculate.


I think y'all just circled around to what Paizo's actually doing.
By making the finesse weapons agile, they're increasing the attack bonuses for the secondary & tertiary attacks by +1 & +2 respectively.
This effectively increases the chances to crit, at least against lower AC opponents (minions). It's enough of a bonus that even Valeros is built to take advantage of this in minion fights (and is getting good feedback).
I'm not sure how well increasing the attack roll of primary attacks would balance because Sneak Attack is now doubled on a crit (which also means Rogues might actually be the best martial vs. minions.) I suspect Paizo runs numbers constantly for their target balance. I kinda' wish I knew what that was...


1 person marked this as a favorite.
kyrt-ryder wrote:

Until you're hit with cat's grace or ray of clumsiness.

Or haste if +2 dex brings your modifier to a multiple of 2.

Or entangled or fatigued or exhausted

I don't understand; are you opposed to 1.5x STR to damage too? Because that isn't any "easier" to calculate (not that either number is that hard...).


Arachnofiend wrote:
kyrt-ryder wrote:

Until you're hit with cat's grace or ray of clumsiness.

Or haste if +2 dex brings your modifier to a multiple of 2.

Or entangled or fatigued or exhausted

I don't understand; are you opposed to 1.5x STR to damage too? Because that isn't any "easier" to calculate (not that either number is that hard...).

I wouldn't describe myself as 'opposed' but I'm not exactly a fan either.

It's yet one more calculation piled on a calculation (modifier from ability score)

Granted in my own games I don't even use stat to hit or damage. That's a function of BAB, abilities and equipment (and equipment that impacts to-hit is damn rare)


kyrt-ryder wrote:
Granted in my own games I don't even use stat to hit or damage. That's a function of BAB, abilities and equipment (and equipment that impacts to-hit is damn rare)

So you don't even utilize 1x Strength bonus to damage, it's not surprising that you're not a fan of 1.5x Strength or Dex being added on those.


3 people marked this as a favorite.
kyrt-ryder wrote:
Arachnofiend wrote:
kyrt-ryder wrote:

Until you're hit with cat's grace or ray of clumsiness.

Or haste if +2 dex brings your modifier to a multiple of 2.

Or entangled or fatigued or exhausted

I don't understand; are you opposed to 1.5x STR to damage too? Because that isn't any "easier" to calculate (not that either number is that hard...).

I wouldn't describe myself as 'opposed' but I'm not exactly a fan either.

It's yet one more calculation piled on a calculation (modifier from ability score)

Granted in my own games I don't even use stat to hit or damage. That's a function of BAB, abilities and equipment (and equipment that impacts to-hit is damn rare)

I think you might be playing the wrong game if you hate math this much...


1 person marked this as a favorite.

Ok, I've added Sneak Attack. I've also added in allowing two-handed weapons to do 1.5xStr instead of just 1xStr.

Results are here.

Cases considered:
1) "Power1.5xStr" = Power Attacking with 1.5xStr to damage.

2) "Normal1.5xStr" = Normal full-attack with 1.5xStr to damage.

3) "Finesse" = Dex-and-a-half to hit with an agile deadly weapon.

4) "Sneak2xCrit" = Finesse + 1d6 Sneak Attack damage, with sneak attack damage doubled on a crit.

5) "Sneak1xCrit" = Finesse + 1d6 Sneak Attack damage, with sneak attack damage not doubled on a crit.

6) "Power1xStr" = Power Attacking with 1xStr to damage.

Takeaways:

  • Sneak attacking does more damage than Power Attacking - but not by much. (I think this is good, since Sneak Attack is situational, when you do get it you shouldn't still be outshone by the fighter.)

  • Overall, Sneak Attack, normal attack, and power attack all do similar levels of DPR.

  • If you assume you get Sneak Attack 50% of the time, and so you average Finesse and Sneak2xCrit, you are doing less DPR overall than Power1.5xStr, and about the same DPR as Power1xStr.

So I think that says that even with Sneak Attacking being multiplied on a crit, that still doesn't make 1.5xDex to-hit overpowered. Also keep in mind I'm still assuming a weapon with both the Agile and Deadly qualities, and assuming that the Deadly quality will give it 1d10 bonus damage on a crit. If such a weapon were not available, the damage on all the Dex-based curves would come down.


How about TWF. if it gives -2 to hit and one extra attack per act.


Since having, well, armour kinda messes up the otherwise universal scaling, I brought up in another thread that there's a possibility that weapons can give bonuses to attack rolls to counteract armour bonuses. If this is the case, then simply having higher attack bonuses for finesse weapons can have a similar effect to this idea.


This thread pleases me. I also hope the devs are taking notes.


An interesting idea, I like that it feels different from the brute strength approach.


Cool! Good job on the math. I love math.


Now that we know details on how nat 1s and nat 20s are treated, I've redone the math.

(I'd been assuming nat 20 is auto-crit, now I'm checking if a nat 20 check beats the AC, and treating it as a crit if it passes and a hit if it fails. I also wasn't treating nat 1s as a special case, now I treat them as a fumble if it fails, and a miss if it passes.)

Results are here.

Main take-away is that Dex-based fighting now gets significantly more crits against high-AC opponents than the alternative styles. In my initial post, each fighting style quickly reached a "nat 20 floor" in the crit probabilities equal to (# attacks)/20, and then plateaued there over the entire range of ACs. These new numbers better reflect that more of those nat 20s won't be crits for Str-based fighting, while Dex-based ekes out a few more crits vs high-AC opponents.

Community / Forums / Archive / Pathfinder / Playtests & Prerelease Discussions / Pathfinder Playtest / Pathfinder Playtest Prerelease Discussion / Let's Do Another Math Thread: Dex-and-a-half to-hit All Messageboards
Recent threads in Pathfinder Playtest Prerelease Discussion