Difference between revisions of "Formulas"

From SMT: Dx2 Wiki
Jump to: navigation, search
m (Undo revision 32052 by Forgotten password (talk))
(Tag: Undo)
m (Functions)
Line 66: Line 66:
 
*76 if DIFF_AGI >= -256
 
*76 if DIFF_AGI >= -256
  
FUNCTION1(DIFF_LUK) is:
+
FUNCTION2(DIFF_LUK) is:
 
*13 if DIFF_LUK >= 256
 
*13 if DIFF_LUK >= 256
 
*11 if DIFF_LUK >= 30
 
*11 if DIFF_LUK >= 30

Revision as of 08:44, 17 May 2020

Datamined Formulas

All results are floored (rounded down to nearest INT). Many formulas have been Datamined long time ago and as such should be taken with a grain of salt (the game is currently much harder to datamine)

HP = VIT * 4.7 + LVL * 7.4
PATK = STR * 2.1 + LVL * 5.6 + 50
MATK = MAG * 2.1 + LVL * 5.6 + 50
PDEF = VIT * 1.1 + STR * 0.5 + LVL * 5.6 + 50
MDEF = VIT * 1.1 + MAG * 0.5 + LVL * 5.6 + 50
DAMAGE FORMULA = (ATK * 1 - DEF * 0.5) * 0.4  * (SKILL POWER * (1 + % SKILL DAMAGE MODIFIERS FROM SKILL LEVELS) / 100) * (1 + % DAMAGE MODIFIERS) * (1 + TARUNDA/TARUKAJA - RAKUNDA/RAKUKAJA) * (CHARGE / CONCENTRATE: 2.25 or 2.75 w/ Templar Dragon) * (CRIT/WEAKNESS/RESIST)
10% variance in final damage. 
Critical hit multiplier is 1.5x
Weakness hit multiplier is 1.5x
Resistance hit multiplier is 0.7x
HEALING FORMULA = (MATK * (HEAL POWER * (1 + % HEALING MODIFIERS FROM SKILL LEVELS) / 100) * HEALING_CONST + MIN_HEAL_VAL) * RANDOM_HEA_VAR * (1 + % HEAL MODIFIERS)
-kaja/-kunda effects (applied at end of formula) 
Rakukaja: -0.17 = 0.83x damage taken
Tarunda: -0.2 = 0.8x damage taken
Rakukaja + Tarunda: -0.37 = 0.64x damage taken
Tarukaja: +1.2 = 1.2x damage dealt
Rakunda: +1.25 =  1.25x damage dealt
Tarukaja + Rakunda: 1.45 = 1.45x damage dealt
STATUS CHANCE = BASE STATUS CHANCE + BRAND STATUS CHANCE + STATUS CHANCE PASSIVES - ENEMY STATUS RESIST + (USER LUCK - ENEMY LUCK) * 0.5
MINIMUM STATUS CHANCE = SKILL_ADD_RATE * UNKNOWN CONSTANT
It will take the higher result of the two formulas above.
TEMP ACCURACY = BASE SKILL ACCURACY * (FUNCTION1(USER AGI - ENEMY AGI) + FUNCTION2(USER LUCK - ENEMY LUCK)) * (1 * SUKUNDA/SUKUKAJA)
FINAL ACCURACY = TEMP ACCURACY + ACC BRANDS + ACC SKILLS - EVASION BRANDS - EVASION SKILLS 
There is a minimum hit chance, and it will take either that or the accuracy depending on what's higher.
MIN ACCURACY = 100 * BASE SKILL ACCURACY * CONSTANT
CONSTANT has been datamined as being probably 0.2
LUCK DIFF = USER LUCK - ENEMY LUCK
CRIT LUK VALUE = 20 if LUCK DIFF >= 30, 
                 15 if LUCK DIFF >= 20, 
                 10 if LUCK DIFF >= 10,
                 0 if LUCK DIFF >= 0,
                 -10 if LUCK DIFF >= -256
CRIT CHANCE = CRIT LUK VALUE + BASE SKILL CRIT CHANCE + PASSIVE SKILLS/PANEL CRIT CHANCE + CRIT BRANDS - ENEMY CRIT REDUC SKILLS/PANEL + Dx2 CRIT SKILL
Crit chance is clamped to lie between 0 and 100 inclusive.
BASE SKILL CRIT chance seems to be 0 or 10 on phys skills which don’t list their crit rate in their description
Counter Chance is rolled sequentially and separately, starting from the highest tier Counter first (Death Counter>Retaliate>Counter) regardless of slot order.
Party speed is calculated first at an individual demon level then at a party level.
INDIVIDUAL DEMON SPEED = (DEMON AGILITY + SKILL AGILITY + MITAMA AGILITY) * ((SKILL SPEED PERCENT + BRAND SPEED PERCENT + PANEL PERCENT) / 100)
PARTY SPEED TOTAL = INDIVIDUAL DEMON SPEED TOTAL / PARTY COUNT (It's an average)

More On Accuracy

Functions

As written above Accuracy uses some FUNCTION 1 and 2 which respectively takes the difference between the AGI and the difference between LUK. (Notation: DIFF_AGI and DIFF_LUK)

FUNCTION1(DIFF_AGI) is:

  • 102 if DIFF_AGI >= 256
  • 100 if DIFF_AGI >= 40
  • 98 if DIFF_AGI >= 30
  • 96 if DIFF_AGI >= 20
  • 94 if DIFF_AGI >= 10
  • 92 if DIFF_AGI >= 0
  • 88 if DIFF_AGI >= -20
  • 84 if DIFF_AGI >= -40
  • 80 if DIFF_AGI >= -60
  • 76 if DIFF_AGI >= -256

FUNCTION2(DIFF_LUK) is:

  • 13 if DIFF_LUK >= 256
  • 11 if DIFF_LUK >= 30
  • 9 if DIFF_LUK >= 20
  • 7 if DIFF_LUK >= 10
  • 5 if DIFF_LUK >= 0
  • 0 if DIFF_LUK >= -30
  • -5 if DIFF_LUK >= -256

In a nutshell, every 10 AGI or LUCK points are worth 2% Accuracy/Evasion on average (i.e. 1 point = 0.2%). But we have some cap on AGI and LUCK impact on Accuracy. Beyond a difference of 30 LUCK points or 60 AGI points between the attacker and defender, you will not be getting better return.

And the base Accuracy when DIFF_LUCK and DIFF_AGI are near 0 is 88 to 97, depending if DIFF_LUCK/AGI >=0.

Base Skill Accuracy

As shown in the Formula, skills have base accuracy. Normal Attack is 1.0 base accuracy (i.e 100%).

NON-PHYS SKILLS WITH IRREGULAR ACC (non 0):

PHYS SKILLS WITH IRREGULAR ACC (non 1):

Chain Effect/Passives:

Enemy Exclusive Skills (non 1 for phys or non 0 for elemental):

  • Dragon Flare: 1
  • End Realm: 1.5
  • Mad Ice Sword: 1.1
  • Maragidyne (Physical): 1
  • Dragon Tooth: 0.8
  • Megaton Press+: 1.1
  • Mutilation: 1.2

Basically, phys skills get -10% accuracy for being AOE or Random Target and -5% for having increased crit rate (-15% if both). Unique skills do not necessarily follow this pattern (Ouas is 1 despite high crit, Gungnir is 1.3 etc.)

Updated Formulas?

Experimental Data

Someone tried to experimentally determine the formula in March 2019 https://game-burio.hatenablog.com/entry/2019/03/01/014016

The formula he got are not very good, but he did publish the experiments: 6 of them

Each experiment is just 1 Brandless Demon using Normal Attack on another Brandless Demon 200 times, then calculating the Hit Rate in %. We can use the results and compare them with our own Formulas.

He does this for 6 different pairs of Demons.

Experiments
USER AGI ENEMY AGI USER LUK ENEMY LUK DIFF AGI DIFF LUK FUNCTION1 FUNCTION2 EXPERIM(%) THEORY(%)
EXP1 153 208 169 188 -55 -19 80 0 81 80
EXP2 152 208 132 188 -56 -56 80 -5 71 75
EXP3 61 208 166 188 -147 -22 76 0 75 76
EXP4 94 208 64 188 -114 -124 76 -5 65 71
EXP5 94 112 64 138 -18 -74 88 -5 80 83
EXP6 153 112 132 138 41 -6 100 0 100 100

Updated Formula?

There are quite a few problems already with the Formulas:

The highest and lowest bounds used are 256 and -256 which used to be the highest AGI in the game (Garuda). This is not true anymore especially with crazy bosses like Celestial Long. Moreover the Formula seem to predict a bug would occur if DIFF < -256, and we definitely do not see such bugs right now.

So the 256 is probably wrong.


Now we have a second problem. Related to the experiments. (Take into account that the Standard Deviation should be about 2% to 3%.) We can see whenever DIFF LUK is very low our prediction is too high by quite a large margin EXP2, EXP4 and EXP5. The fact it is systematically overpredicting may mean there are more Low Bounds in FUNCTION2 than in the old Datamined Formulas.