The Witcher 3: Wild Hunt

Dark Souls 3 Resistance Calculus Formula

Hello Community,

I'm working on a DS3 app just for leaning purposes and I found a better formula for the calculus of Def Resistances: BLEED, FROST, POISON and CURSE.

Maybe it will be included in MugenApp (cause mine is not ready and will not be online).

Here is a small data with which I've tested it:

Stat Points (ALL) In Game Value Formula Value ------------------------------------------------------------- 15 116 116 20 150 150 25 170 170 30 176 176 35 192 192 40 209 209 45 214 215 (+1) 50 218 219 (+1) 55 222 223 (+1) 60 226 227 (+1) 65 229 231 (+2) 70 232 234 (+2) 75 235 236 (+1) 80 238 238 85 241 241 90 244 243 (-1) 95 247 247 99 250 250 

I've also tested the formula with other values which are not so simetric and I did not find a error lager than (+3) yet. Although I think it will be fixed as soon as I add 3 more conditions to fix the current errors.

Anyways, all resistances in this game are governed by LVL and a few stats which are more special for a specific def/res value. The formula I will post here will abide only for the resistances mentioned above. The rest I did not manage to resolve yet.

So the formula has two parts:

1) The Level Part:

 if (level <= 60) { level_res = level * 0.2; } else if (60 < level && level <= 101) { level_res = 61 * 0.2 + (level - 60) * 1; } else if (101< level && level <= 151) { level_res = 61 * 0.2 + 41 * 1 + (level - 101) * 0.31; } else if (151 < level && level <= 400) { level_res = 61 * 0.2 + 41 * 1 + 50 * 0.31 + (level - 151) * 0.0325; } else if (400 < level && level <= 700) { level_res = 61 * 0.2 + 41 * 1 + 50 * 0.31 + 250 * 0.0325 + (level - 400) * 0.033; } else if (700 < level ) { level_res = 61 * 0.2 + 41 * 1 + 50 * 0.31 + 250 * 0.0325 + 301 * 0.033 + (level - 700) * 0.07; } 

2) The Special Stat Part:

 public static double StatMod(Stat_OBJ stats) { double mod = 0; if (30 < Int32.Parse(stats.txt_Box.Text) && Int32.Parse(stats.txt_Box.Text) <= 41) { mod = (Int32.Parse(stats.txt_Box.Text) - 30) * 3; } else if (41 < Int32.Parse(stats.txt_Box.Text) && Int32.Parse(stats.txt_Box.Text) <= 66) { mod = (Int32.Parse(stats.txt_Box.Text) - 41) * 0.5 + 11 * 3; } else if (66 < Int32.Parse(stats.txt_Box.Text)) { mod = (Int32.Parse(stats.txt_Box.Text) - 66) * 0.14 + 25 * 0.5 + 11 * 3 ; } return mod; } Where stats.txt_Box.Text is Endurance for Bleed, Vitality for Poison, Vigor for Frost and Luck for Curse. 

The end result will look like this:

 switch (item.name) { case Defense.FROST: defStat2 = 106.8 + level_res + StatMod(vigor_stat); break; case Defense.BLEED: defStat2 = 106.8 + level_res + StatMod(endurance_stat); break; case Defense.POISON: defStat2 = 106.8 + level_res + StatMod(vitality_stat); break; case Defense.CURSE: defStat2 = 106.8 + level_res + StatMod(luck_stat); break; default: defStat2 = GeneralConst.ELEM_RES; break; } 

Observations:

We can see that the resistances are greatly increased between character level 60 to 101. With 1 point per stat (41 in total). This does not matter what stat it is.

Endurance, Vigor, Vitality and Luck increase resistances(1 for every resistance) with 3 point form stat level 31 to 41; and with 0.5 points from STAT level 41 to 66.

That is all I guess 😀


Original link

You Might Also Like

Leave a Reply

Your email address will not be published. Required fields are marked *