Spell damage calculations
I was hoping to figure out exactly how spell damage calculations are done in this game. I have spent multiple days collecting data and testing hypotheses. The formula as detailed on uoguide or here on the uo.com wiki is very close, but it can't tell anything about which numbers specifically will be dealt in the range, and occasionally the range is off.
What UOGuide and UO.com and EC say the formula is is:
6 to 7.2 as base damage and then multiple by eval bonus and then sdi bonus
base*(eval*3/100)*(sdi+trunc(int/10))
but there are cases where this doesn't match the in game damage.
e.g.:
72 eval
10 int
0 sdi
mouse over fireball spell in game (EC) or use the above formula, to get 19-22 damage
However, you can do 18 damage
@Parallax - Is there any way someone could take a bit of time to look at the source code and find the exact formula?
optional further reading for context:
my spreadsheet with test formulas and damage experiments:
https://docs.google.com/spreadsheets/d/1e9IDLcxF6_CqGAHpfxkv-XpbnlpQO931NQpmW4LSmHk/edit?usp=sharing
This includes a fully working damage calculator for fighter damage, with exactly the 5 numbers that you will be able to deal, given the base weapon range.
I have a formula I'm pretty confident in for fireball with only 10 int and no sdi, it works for every value of eval, but already its pretty ... arcane.
Strange things seem to happen when combing sdi and eval, such as 100 eval, 150 int, 10 sdi.
that gives the damages [30,31,32,33,36], and an expected simple multiplier of 5x
another set with 5x multiplier: 50 eval, 150 int, 85 sdi -> [30,31,33,34,36]
as is standard with uo, it must be multiplying by your damage mod, flooring, then doing it again for another source, then flooring. It's not that simple here. eval is flooring to .2 (or calculations are performed where base damage is 30, and then at almost the end divide by 5)
What UOGuide and UO.com and EC say the formula is is:
6 to 7.2 as base damage and then multiple by eval bonus and then sdi bonus
base*(eval*3/100)*(sdi+trunc(int/10))
but there are cases where this doesn't match the in game damage.
e.g.:
72 eval
10 int
0 sdi
mouse over fireball spell in game (EC) or use the above formula, to get 19-22 damage
However, you can do 18 damage
@Parallax - Is there any way someone could take a bit of time to look at the source code and find the exact formula?
optional further reading for context:
my spreadsheet with test formulas and damage experiments:
https://docs.google.com/spreadsheets/d/1e9IDLcxF6_CqGAHpfxkv-XpbnlpQO931NQpmW4LSmHk/edit?usp=sharing
This includes a fully working damage calculator for fighter damage, with exactly the 5 numbers that you will be able to deal, given the base weapon range.
I have a formula I'm pretty confident in for fireball with only 10 int and no sdi, it works for every value of eval, but already its pretty ... arcane.
Strange things seem to happen when combing sdi and eval, such as 100 eval, 150 int, 10 sdi.
that gives the damages [30,31,32,33,36], and an expected simple multiplier of 5x
another set with 5x multiplier: 50 eval, 150 int, 85 sdi -> [30,31,33,34,36]
as is standard with uo, it must be multiplying by your damage mod, flooring, then doing it again for another source, then flooring. It's not that simple here. eval is flooring to .2 (or calculations are performed where base damage is 30, and then at almost the end divide by 5)
Tagged:
Comments