Difference between revisions of "Formulas"
m (Add Berserk chain effect accuracies) |
(Update damage formula) |
||
Line 10: | Line 10: | ||
PDEF = VIT * 1.1 + STR * 0.5 + 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 | MDEF = VIT * 1.1 + MAG * 0.5 + LVL * 5.6 + 50 | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
HEALING FORMULA = (MATK * (HEAL POWER * (1 + % HEALING MODIFIERS FROM SKILL LEVELS) / 100) * HEALING_CONST + MIN_HEAL_VAL) * RANDOM_HEA_VAR * (1 + % HEAL MODIFIERS) | HEALING FORMULA = (MATK * (HEAL POWER * (1 + % HEALING MODIFIERS FROM SKILL LEVELS) / 100) * HEALING_CONST + MIN_HEAL_VAL) * RANDOM_HEA_VAR * (1 + % HEAL MODIFIERS) | ||
Line 55: | Line 49: | ||
PARTY SPEED TOTAL = INDIVIDUAL DEMON SPEED TOTAL / PARTY COUNT (It's an average) | PARTY SPEED TOTAL = INDIVIDUAL DEMON SPEED TOTAL / PARTY COUNT (It's an average) | ||
− | =Ailment Recovery Chance ( | + | =Damage= |
+ | DAMAGE BOOSTS = BOOSTS FROM PASSIVES + BOOSTS FROM SKILL LEVELS + BOOSTS FROM Dx2 SKILLS | ||
+ | CHARGE_CONC MODIFIER = CHARGE/CONC VALUE + CHARGE/CONC INCREASE FROM Dx2 SKILLS | ||
+ | CRIT MODIFIER = 1 OR 1.5 IF A CRIT OCCURS | ||
+ | TEMP STAT VALUE = USER PHYATK * SKILL PHYATK COEFF + USER MAGATK * SKILL MAGATK COEFF | ||
+ | STAT VALUE = max(TEMP STAT VALUE - (ENEMY DEF * 0.5), 0) * (1 + TARUNDA/TARUKAJA - RAKUNDA/RAKUKAJA) | ||
+ | MIN STAT VALUE = TEMP STAT VALUE * 0.25 | ||
+ | FINAL STAT VALUE = max(STAT VALUE, MIN STAT VALUE) | ||
+ | DAMAGE VARIANCE RATIO = random value between 0.95 and 1.05 | ||
+ | RESISTANCE MODIFIER = 1.5 if hitting a weakness, | ||
+ | 0.7 if hitting a resist, | ||
+ | 0 for Null, | ||
+ | 1 otherwise | ||
+ | FINAL DAMAGE = FINAL STAT VALUE * BASE SKILL POWER * CRIT MODIFIER * RESISTANCE MODIFIER * 0.4 * DAMAGE VARIANCE RATIO * ((100 + DAMAGE BOOSTS)/100) * ((100 + CHARGE_CONC MODIFIER)/100) | ||
+ | |||
+ | SKILL ATK coefficients are generally 1 for the attack type and 0 for the other but exceptions exist for skills such as Gomorrah (B). | ||
+ | |||
+ | =Ailment Recovery Chance (Unverified)= | ||
These values do not account for ailment recovery passives such as [[Fast Recovery]] and [[Epic Recovery]], ailment panels and Dx2 ailment recovery modifiers.<br> | These values do not account for ailment recovery passives such as [[Fast Recovery]] and [[Epic Recovery]], ailment panels and Dx2 ailment recovery modifiers.<br> | ||
Note: Curse and Weak recovery chances need verification | Note: Curse and Weak recovery chances need verification |
Revision as of 06:41, 3 June 2020
Contents
Datamined Formulas
All results are floored (rounded down to nearest INT).
The constants included in the following formulas are subject to change.
All chance based results are clamped to lie between 0 <= CHANCE <= 100.
Some formulas have not been updated yet and as such should be taken with a grain of salt. (Currently updated: Crit chance, Accuracy, Ailment Chance)
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
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
USER INFLICTION BOOST = AILMENT INFLICT PASSIVES + BRAND AILMENT INFLICT + AILMENT INFLICT FROM SKILL LEVELS + AILMENT INFLICT PANELS ENEMY AILMENT RESISTS = AILMENT RESIST PASSIVES + BRAND AILMENT RESISTS + AILMENT RESISTS PANELS + Dx2 AILMENT RESISTS SKILLS + CURRENT AILMENT RESIST BUFFS MINIMUM AILMENT CHANCE = floor(SKILL AILMENT RATE * 0.3) AILMENT CHANCE = floor(SKILL AILMENT RATE + ((USER LUCK - ENEMY LUCK) * 0.3)) + USER INFLICTION BOOST - ENEMY AILMENT RESISTS Some demons may have some innate ailment resistances (likely PvE only), modifying the above AILMENT CHANCE: AILMENT CHANCE = floor(AILMENT CHANCE * ((100 - DEMON AILMENT RESISTS) / 100)) It will use the greater of either MINIMUM AILMENT CHANCE or AILMENT CHANCE to determine the chance of an ailment being successful.
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 MINIMUM ACCURACY = 100 * BASE SKILL ACCURACY * 0.2 There is a minimum hit chance, and it will take either MINIMUM ACCURACY or FINAL ACCURACY depending on what's higher.
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 < 0 CRIT CHANCE = CRIT LUK VALUE + BASE SKILL CRIT CHANCE + PASSIVE SKILLS/PANEL CRIT CHANCE + CRIT BRANDS - ENEMY CRIT REDUC SKILLS/PANEL + Dx2 CRIT SKILL 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)
Damage
DAMAGE BOOSTS = BOOSTS FROM PASSIVES + BOOSTS FROM SKILL LEVELS + BOOSTS FROM Dx2 SKILLS CHARGE_CONC MODIFIER = CHARGE/CONC VALUE + CHARGE/CONC INCREASE FROM Dx2 SKILLS CRIT MODIFIER = 1 OR 1.5 IF A CRIT OCCURS TEMP STAT VALUE = USER PHYATK * SKILL PHYATK COEFF + USER MAGATK * SKILL MAGATK COEFF STAT VALUE = max(TEMP STAT VALUE - (ENEMY DEF * 0.5), 0) * (1 + TARUNDA/TARUKAJA - RAKUNDA/RAKUKAJA) MIN STAT VALUE = TEMP STAT VALUE * 0.25 FINAL STAT VALUE = max(STAT VALUE, MIN STAT VALUE) DAMAGE VARIANCE RATIO = random value between 0.95 and 1.05 RESISTANCE MODIFIER = 1.5 if hitting a weakness, 0.7 if hitting a resist, 0 for Null, 1 otherwise FINAL DAMAGE = FINAL STAT VALUE * BASE SKILL POWER * CRIT MODIFIER * RESISTANCE MODIFIER * 0.4 * DAMAGE VARIANCE RATIO * ((100 + DAMAGE BOOSTS)/100) * ((100 + CHARGE_CONC MODIFIER)/100)
SKILL ATK coefficients are generally 1 for the attack type and 0 for the other but exceptions exist for skills such as Gomorrah (B).
Ailment Recovery Chance (Unverified)
These values do not account for ailment recovery passives such as Fast Recovery and Epic Recovery, ailment panels and Dx2 ailment recovery modifiers.
Note: Curse and Weak recovery chances need verification
-
Poison Turn 1 0% Turn 2 0% Turn 3 25% Turn >= 4 50% -
Bind Turn 1 25% Turn 2 50% Turn 3 70% Turn >=4 100% -
Charm Turn 1 25% Turn 2 50% Turn 3 70% Turn >=4 100% -
Mute Turn 1 0% Turn 2 15% Turn 3 50% Turn >=4 75% -
Curse Turn 1 0% Turn 2 0% Turn 3 0% Turn >=4 Recovered (100%) -
Weak Turn 1 0% Turn 2 0% Turn >=3 Recovered (100%)
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):
- Amakusa Uprising: 1
- Barbed Spear: 1.1
- Slaughter All: 1
- Sword of Actuation: 1
- Third Eye: 1
- Vengeful Frost Fist: 1
PHYS SKILLS WITH IRREGULAR ACC (non 1):
- Beloved Slash: 0.9
- Blight: 0.9
- Deathbound: 0.9
- Dragon Slayer: 0.9
- Earthquake: 0.9
- Gigantomachia: 0.9
- Gomorrah (J): 0.9
- Gungnir: 1.3
- Hades Blast: 0.9
- Heat Wave: 0.85
- Hell Claw: 0.9
- Herculean Strike: 0.9
- Herculean Strike L: 0.9
- Lunge: 0.95
- Madness Nails: 0.9
- Megaton Press: 0.85
- Mortal Jihad: 0.95
- Mow Down: 0.9
- Million Stab: 0.9
- Myriad Arrows: 0.9
- Nihil Claw: 0.9
- Oni-Kagura: 0.95
- Rampage: 0.9
- Tempest Slash: 0.9
- Titanomachia: 0.85
- Violent Slash: 0.95
- Vorpal Blade: 0.9
Chain Effect/Passives:
- Bloodshed: 0.9
- Dragon Blade's chain effect: 1.0
- Enemy Annihilation: 0.9
- God 1000 Fist Cannon: 1.0
- Heavenly Valor: 0.85
- Spirit: Cannon: 0.9
- Terror of London: 0.9
- Yaksha Claw: 0.9
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.)
Verification
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.
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 |
Analysis
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).
It may only be some statistical error. Either way if you ever do some experiments to test the different hypothesis, please feel free to post them on this wiki, on the sub-reddit or on the Dx2 Discord.