Weapon Damage Scaling
Some weapons have the damage scaling bonus for one of three character attributes (Strength, Faith and Agility). This means that each point of this character attribute enhances damage for this weapon according to this percentage and the other two remaining character attributes have no effect on this weapon.
Each weapon has its base damage which you can calculate when you substract bonus (blue + number) or add penalty (red - number) to white damage number for "Physical Damage" in your inventory.
Let's say that you want to calculate the bonus damage for a weapon. There are four things that are affecting it:
- Required minimum attribute value for that weapon (reqMin)
- Base weapon damage (baseDmg)
- Attribute scale percentage (scale)
- Actual character attribute value used by the weapon
Bonus for each point of attribute is fully added until you get to 5 points above reqMin of the weapon. After that point, there will be diminishing effect applied to each next point and the weapon damage will not be enhanced so effectively.
To calculate bonus damage when reaching reqMin for the weapon we can use an equation:
baseDmg * scale / 100 * (reqMin - 8)
Here you can see that we have used reqMin - 8 number of attribute points so far and they all count toward the bonus damage (8 is the minimum for each of character attributes except for Luck which can start at 0) and each of these points increased the damage by baseDmg * scale / 100.
Now we have 5 points that will still fully contribute to the bonus damage and each one of these will add:
baseDmg * scale / 100
Next two points will be affected by diminishing effect and their bonus will be halved:
baseDmg * scale / 100 * (1/2)
Another two points will be affected even more and their bonus will be set to one third:
baseDmg * scale / 100 * (1/3)
Next two points are going to get only one quarter of the bonus:
baseDmg * scale / 100 * (1/4)
... and so on. So each two points will be affected more and more by the diminishing effect.
Game is doing calculations with real numbers and it shows them in GUI rounded to integer numbers, so you need to do the calculations in the same fashion and add bonuses as real numbers to actually accumulated bonus.
Let's take a Persistence Greatsword which has baseDmg = 50, reqMin = 15 and scale = 4:
- Str 15 -> 50 * 4 / 100 * (15 - 8 ) = 14
- Str 16 -> 14 + 50 * 4 / 100 = 16
- Str 17 -> 16 + 2 = 18
- Str 18 -> 18 + 2 = 20
- Str 19 -> 20 + 2 = 22
- Str 20 -> 22 + 2 = 24
- Str 21 -> 24 + 2 * (1 / 2) = 25
- Str 22 -> 25 + 2 * (1 / 2) = 26
- Str 23 -> 26 + 2 * (1 / 3) = 26.66666667
- Str 24 -> 26.66666667 + 2 * (1 / 3) = 27.33333333
- Str 25 -> 27.33333333 + 2 * (1 / 4) = 27.83333333
- Str 26 -> 27.83333333 + 2 * (1 / 4) = 28.33333333
- Str 27 -> 28.33333333 + 2 * (1 / 5) = 28.83333333