Freehugs, over on the sithwarrior forums, has done some excellent reverse-engineering work which represents the current most accurate formulas for calculating a variety of combat values in the current build of Star Wars: The Old Republic. Unfortunately, they’re all in one big block of text that’s not exactly easy to read. It’s not Freehugs’ fault, really, forums just don’t (usually) offer the kind of markup needed to beautifully express mathematical concepts… But MathJax does – and as it happens I’ve got MathJax installed on this blog, so let’s have a (prettier) look at the math behind the game, shall we?
Ability Damage:
\[ (M+1) \times H_m + (M+1) \times M_o \times 0.3 + C \times D + H_{sp} \times H_s \]
Ability Healing
\[ C \times H_b + H_{sp} \times H_s \]
Strength/Willpower/Aim/Cunning Damage Bonus
\[ 0.2 ( \mbox{Attribute} ) \]
Force/Tech Power Damage Bonus
\[ 0.23 ( \mbox{Attribute} ) \]
Willpower/Aim/Cunning Healing Bonus
\[ 0.14 ( \mbox{Attribute} ) \]
Force/Tech Power Healing Bonus
\[ 0.17 ( \mbox{Attribute} ) \]
Crit Chance (%)
\[ 5+30(1-(1-( \frac { 0.01 }{ 0.3 } ))^{ \frac { \frac { S_1 }{ \mbox{max(level,20)} } }{ 2.5 } })+30(1-(1-(\frac { 0.01 }{ 0.3 } ))^{\frac { \frac { R_c }{ \mbox{max(level,20)} } }{ 0.45 } }) \]
Crit Damage Bonus
\[ 50+50(1-(1-(\frac { 0.01 }{ 0.5 } ))^{ \frac{ \frac { R_s }{ \mbox{max(level,20)} } }{0.1} }) \]
Accuracy (%)
\[ 90+30(1-(1-(\frac { 0.01 }{ 0.3 } ))^{ \frac{\frac{R_a}{\mbox{max(level,20)}}}{0.55} }) \]
Off-Hand Accuracy (%)
\[ 57+30(1-(1-(\frac { 0.01 }{ 0.3 } ))^{ \frac{\frac{R_a}{\mbox{max(level,20)}}}{0.55} ) } \]
Special/Force/Tech Attack Accuracy
\[ 100+30(1-(1-(\frac { 0.01 }{ 0.3 } ))^{ \frac{\frac{R_a}{\mbox{max(level,20)}}}{0.55} ) } \]
Special/Force/Tech Attack Off-Hand Accuracy
\[ 67+30(1-(1-(\frac { 0.01 }{ 0.3 } ))^{ \frac{\frac{R_a}{\mbox{max(level,20)}}}{0.55} }) \]
Activation Speed
\[ \frac { T_{ c } }{ 1+0.3(1-(1-(\frac { 0.01 }{ 0.3 } ))} ^{ \frac { \frac { R_{al} }{ { max(level,20) } } }{ 0.55 } }) \]
Damage Reduction From Armor (%)
\[ \frac{R_{ar}}{R_{ar}+200 \times \mbox{level}+800} \]
Defense Chance (%)
\[ 5+30(1-(1-(\frac { 0.01 }{ 0.3 } ))^{ \frac { \frac { R_{d} }{ { max(level,20) } } }{ 0.55 } }) \]
Shield/Glance Chance (%)
\[ B_s+30(1-(1-(\frac { 0.01 }{ 0.3 } ))^{ \frac{\frac{R_d}{\mbox{max(level,20)}}}{0.55} }) \]
Shield/Glance Absorption (%)
\[ B_s+30(1-(1-(\frac { 0.01 }{ 0.3 } ))^{ \frac{\frac{R_{ab}}{\mbox{max(level,20)}}}{0.55} }) \]
Max Health
\[ H+10E \]
Health Regen
\[ x + 0.03E \]
Bonus Companion Health
\[ 5P \]
Bonus Companion Damage
\[ 0.2P \]
Bonus Companion Healing
\[ 0.14P \]
Base Stats
\[S_1= 50+\mbox{level} \times 4 \]
\[S_2= 20+\mbox{level} \times 1.6 \]
\[S_4= 10+\mbox{level} \times 0.8 \]
\[ E=45+\mbox{level} \times 3.6 \]
Notes:
There are, of course, a lot of special cases to cover, such as accuracy > 100% reducing the defense of the target and certain of these formulas cap out at a given max value. These formulas are also in a constant state of flux and I can’t guarantee that my formulas will always be up-to-date compared to those on the forum, nor can I guarantee that those on the forum are up-to-date with reality. For these reasons I refer you to always double-check against the forum before using any of these formulas. Finally, the above won’t look very pretty if MathJax doesn’t run properly, such as within an RSS reader or in older browsers or browsers with JavaScript disabled.
Glossary of Terms:
- M = weapon damage modifier for min and max values and all ranks of the ability
- C = force/tech/melee/ranged damage bonus modifier for min and max values and all ranks of the ability
- Hsp = base damage modifier, which can vary for the min and max values of the ability
- E = endurance
- H = base health
- Hs = standard health (see table)
- Hb = healing bonus
- Rc = crit rating
- Rs = surge rating
- Ra = accuracy rating
- Tc = base cast time
- Ral = alacrity rating
- Rar = armor rating
- Rd = defense rating
- Rg = glance rating
- Rab = absorbtion rating
- Bs = shield generator bonus
- P = presence
- S1 = primary class stat (i.e. Cunning for the Smuggler)
- S2 = secondary class stat (i.e. Willpower for the Sith Warrior)
- S3 = tertiary class stat (i.e. Strength for the Trooper)
- x = currently unknown (but probably constant) value
Standard Health Lookup Table:
level damage health level damage health
1 180 375 26 975 3205
2 210 430 27 1005 3300
3 240 505 28 1050 3425
4 270 585 29 1085 3535
5 305 675 30 1130 3670
6 340 770 31 1175 3915
7 380 880 32 1215 4165
8 420 1000 33 1220 4355
9 465 1140 34 1255 4590
10 500 1290 35 1280 4830
11 540 1405 36 1305 5055
12 580 1535 37 1320 5265
13 620 1665 38 1335 5530
14 655 1790 39 1350 5715
15 690 1915 40 1380 5945
16 720 2060 41 1400 6080
17 725 2150 42 1430 6225
18 750 2285 43 1440 6320
19 780 2435 44 1480 6485
20 790 2560 45 1490 6565
21 830 2680 46 1540 6735
22 870 2795 47 1545 6785
23 910 2915 48 1560 6920
24 945 3040 49 1575 6970
25 960 3105 50 1610 7085





all of the (1-(1-0.01/0.3)^x) brackets seem to be missing the last closing bracket, apart from that very nice list. thank you.
Good eye! Should all be fixed now. That's what I get for reusing a common snippet I guess :P
Now you have written (1-(1-(0.01/.3)))^x , instead of (1-(1-(0.01/0.3))^x) Also the shield generator formular is still lacking the last bracket.
;)
Argh! This last week has just not been my best work :P
It should be fixed, so now it's time for the SWTOR devs to get under the hood and change all the math on us…
Currently there's a stat under crit called Sp. That doesn't appear under the glossary – should that be S1?
Sp is the "primary stat" for your class, such as Strength for the Knight. I believe I started with Sp and then changed it to S1 when it became evident that I'd have more than a primary and secondary to deal with. Should be fixed now.
Also, isn't (1−(1−(0.01/0.3))) simply (0.01/0.3)?
The formulas are not fully simplified. My understanding is that they're in expanded form to give a better idea of what's actually happening under the hood. 0.01 and 0.3 aren't likely to be actual constants, but variables which could change at some point in the future or which may be derived from other math that we aren't yet aware of.
oh, no, I see… it should be (1-(1-(0.01/0.3))^x). The way it's written, it looks like it's (1-(1-(0.01/0.3)))^x, which would be entirely different :)
whats all the "max lvl 20"
max(level, 20) means "your current level or the number 20, whatever is highest." In other terms, certain stats will be calculated exactly the same for a level 5 as for a level 12 but begin to scale differently after level 20.
There is no "D" in your legend and how is attribute and S1 S2 or S3 dependent? It doesnt make sense to use only in the critchance% the S1. Im little bit confused.
D is whatever random number the server chooses for base damage (uniformally distributed random number within a range as shown on the ability tooltip).
S1 S2 and S3 are the primary, secondary and tertiary stat for your class. S1 is the only stat factored into critchance% in pretty much every game – In WoW, Dexterity would be S1 for a rogue and it's factored into crit % whereas strength, although helpful in other areas, is not.
nice, thanks a lot.
another question. Hm and Mo are in the formula but there are no explanations to them.
Attributes are also mentioned, but dont exactly understand which attributes you mean.
H is the base health and a variable in max health. but the standart health Hs from table isnt a variable in max health, but in the ability damage. What is the difference between base and standart health.
Maybe you can write some example values behind the explanation of the variable for example for a lvl 20 or lvl 40 char to get a feeling about the variables.
Thanks a lot for everything
I have been looking myself for a table of base health in order to calculate this. To my surprise, there were no formulas or information listed on how base health is found. From what I've quickly gathered through a little research, is that base health increases by a set amount each level that changes every few levels. Level 1 base health is 130. From level 1-7, it increases by 10. From level 7-10 it increases by 20, from 10-13, by 25, From 13-17, by 30. This continues in a trend that I haven't fully finished, yet. However, there is no formula for it. The max health then gives you what you see when you start the game.
Standard health, as far as I know, is the health a healing ability trained at that level will heal with no added bonuses. I may be wrong there.
these are great and im a math nerd enough to know these types of games are really math games that do the math for you…you just pick the variables values. but i dont see power listed anywhere in these and power affects attacks and healing abilities. along with that is expertise and being a level 50 pvper myself expertise is a rather important one to include in these equations. otherwise great page ill be referencing to it for quite a while if nothing changes too drastically
Hello! I know this is kinda off topic but I was wondering if you knew
where I could get a captcha plugin for my comment form?
I’m using the same blog platform as yours and I’m having trouble finding one?
Thanks a lot!