xdy / xdy-pf2e-workbench

Random assortment of possibly useful doodads, thingumabobs and whatchamacallits for the foundry vtt pf2e system.
Other
22 stars 37 forks source link

Scale to Level damage calculations inconsistent #1354

Open S-North opened 5 months ago

S-North commented 5 months ago

Hi, I use the Scale to Level feature extensivly to buff creatures in an adventure path my players started 2 levels higher. I've noticed a lot of inconsistency with the item damages the feature outputs, in some cases it returns damages lower than the original damage

e.g. Will-o'-wisp from level 6 > level 8 changed the Shock damage from 2d8+4 (average 13, range 6-20) to 2d6+5 (average 12, range 7-17).

I've stepped through the getDamageData() and constructRelativeDamage() functions to the best of my mediocre ability. I think the issue may be occuring somewhere in the approach to matching the damage category (in this case it's matching "low"), and the effort to correct the bonus damage in constructRelativeDamage() line 151;

In the case of the Will-o'-wisp the original damage 2d8+4 (average 13, range 6-20) matches level 6 "low" average 12 with a delta of 1. The "low" category for level 8 is 2d6+8 (average 15). But after NPCScalerUtil.ts line 151, the stdDamage.bonus is deducted from the sum of oldDamage.bonus and newDamage.bonus (4 + 8 - 7). This is where the average and max damage are reduced too much, because the stdDamage.bonus for level 6 "low" is reletively high. Deducting 7 reduces the max and average damage below the original damage for level 6 creature.

I've given it a bit of thought and see it's not trivial to use the bonus to keep the min/average/max in the correct region. I realise you probably have a lot on your plate with the transition to v12 atm, so would you mind if I attempt to figure out a more robust way to do this?

S-North commented 5 months ago

I've analysed the Table 2–10: Strike Damage and found the way bonus damage scales is the lumpiest of all the metrics. Maybe using the average and maximum somehow might be better for correcting at the end.

low moderate high extreme