Difference between revisions of "Formulas"

From SMT: Dx2 Wiki
Jump to: navigation, search
(counter)
(Speed: missing term)
Line 37: Line 37:
 
===Speed===
 
===Speed===
 
Party speed is calculated first at an individual demon level, then at a party level.
 
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)
+
  INDIVIDUAL DEMON SPEED = 100 * (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)
 
  PARTY SPEED TOTAL = INDIVIDUAL DEMON SPEED TOTAL / PARTY COUNT (It's an average)
  

Revision as of 22:04, 22 July 2023

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: Damage, Crit chance, Accuracy, Ailment Chance)

Derived Stats

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

When using Brands or Panels, % boosts are applied first, and flat + boosts are applied last.

Healing

HEALING FORMULA = (MATK * (HEAL POWER * (1 + % HEALING MODIFIERS FROM SKILL LEVELS) / 100) * HEALING_CONST + MIN_HEAL_VAL) * RANDOM_HEA_VAR * (1 + % HEAL MODIFIERS)

Buff Ratio

-kaja/-kunda ratio (see damage formula)
Rakukaja: 0.8 = 0.8x damage taken
Tarunda: 0.8 = 0.8x damage taken
Rakukaja + Tarunda: 0.6 = 0.6x damage taken
Tarukaja: 1.2 = 1.2x damage dealt
Rakunda: 1.2 =  1.2x damage dealt
Tarukaja + Rakunda: 1.4 = 1.4x damage dealt

Counter

Counter Chance is rolled sequentially and separately, starting from the highest tier Counter first, regardless of slot order.

Speed

Party speed is calculated first at an individual demon level, then at a party level.

INDIVIDUAL DEMON SPEED = 100 * (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 = 0 + BOOSTS FROM PASSIVES + BOOSTS FROM SKILL LEVELS + BOOSTS FROM Dx2 SKILLS
CHARGE_CONC MODIFIER = 0 + CHARGE/CONC VALUE + CHARGE/CONC INCREASE FROM Dx2 SKILLS
CRIT MODIFIER = 1 OR 1.5 IF A CRIT OCCURS
TEMP STAT VALUE = USER ATK * SKILL ATK COEFF + USER OTHER STAT VALUE * SKILL OTHER STAT COEEF
STAT VALUE = max(TEMP STAT VALUE - (ENEMY DEF * 0.5), 0) * (1 + USER ATK RATIO - ENEMY DEF RATIO)
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
DAMAGE REDUCTION = REDUCTION FROM PASSIVES + REVERSE REDUCTION FROM PASSIVES
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) * ((100 + DAMAGE REDUCTION)/100)
  • Conditional damage boost passives such as Death Blow and Merciless Blow apply additively to DAMAGE BOOSTS and do not apply to CRIT MODIFIER or RESISTANCE MODIFIER (verified as of v3.2.10).
  • Damage from berserk levels (AG2) apply additively to DAMAGE BOOSTS.
  • (In TEMP STAT VALUE) SKILL ATK coefficients are generally 1 for the attack type and 0 for the other, but exceptions exist for skills such as Gomorrah (B) and Ragnarok.
  • USER ATK RATIO refers to buffs/debuffs such as Tarukaja/Tarunda, resulting in ratios such as 0.8, 1.0 or 1.2. The same applies for ENEMY DEF RATIO.
  • (In DAMAGE REDUCTION) REDUCTION FROM PASSIVES refers to passives from the enemy that reduce damage taken, such as Supreme Might.
  • (In DAMAGE REDUCTION) REVERSE REDUCTION FROM PASSIVES refers to passives on the team that increase the damage taken by the enemy, such as Covenant Bless.


Critical Chance

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 critical rate in their description

Base Skill Crit

Physical skills that don't list their crit rate in description are either 0% or 10% base crit; but NEARLY ALL OF THEM are 10% with only a few exception being 0%.

We will list only the 0% crit rate attacks (the other attacks including chain effects must be assumed to be 10% if no mention on their in-game description):

Active skills with 0% base crit rate:

Passive skill/chain effect with 0% crit rate:

Ailments

Ailment Chance

If the target is currently inflicted with Icon Weak.png Weak, AILMENT CHANCE is 100%.

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.

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

  • Icon Bind.png Bind
    Turn 1 25%
    Turn 2 50%
    Turn 3 70%
    Turn >=4 100%
  • Icon Charm.png Charm
    Turn 1 25%
    Turn 2 50%
    Turn 3 70%
    Turn >=4 100%
  • Icon Curse.png Curse
    Turn 1 0%
    Turn 2 0%
    Turn 3 0%
    Turn >=4 Recovered (100%)
  • Icon Mute.png Mute
    Turn 1 0%
    Turn 2 15%
    Turn 3 50%
    Turn >=4 75%
  • Icon Poison.png Poison
    Turn 1 0%
    Turn 2 0%
    Turn 3 25%
    Turn >= 4 50%
  • Icon Weak.png Weak
    Turn 1 0%
    Turn 2 0%
    Turn >=3 Recovered (100%)

Accuracy

TEMP ACCURACY = BASE SKILL ACCURACY * (FUNCTION1(USER AGI - ENEMY AGI) + FUNCTION2(USER LUCK - ENEMY LUCK)) * (1 + USER AGI RATIO - ENEMY AGI RATIO)
FINAL ACCURACY = TEMP ACCURACY + USER ACC BRANDS + USER ACC SKILLS - ENEMY EVASION BRANDS - ENEMY 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.
  • USER/ENEMY AGI RATIO refers to buffs/debuffs such as Sukukaja/Sukunda, resulting in ratios such as 0.8, 1.0 or 1.2.

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 < -60

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 < -30

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):

Element Skill Accuracy
Light Light Amakusa Uprising 1
Force Force Barbed Spear 1.1
Almighty Almighty Slaughter All 1
Almighty Almighty Sword of Actuation 1
Almighty Almighty Third Eye 1
Ice Ice Vengeful Frost Fist 1
Almighty Almighty Blade of the Absolute 1.5

Phys PHYS SKILLS WITH IRREGULAR ACC (non 1):

Skill Accuracy
Beloved Slash 0.9
Blight 0.9
Deathbound 0.9
Dragon Slayer 0.9
Earthquake 0.9
Flames of Gomorrah 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:

Skill Accuracy
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 (Guts) 0.9
Terror of London 0.9
Yaksha Claw 0.9

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

Skill Accuracy
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 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.

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

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.

Game Mechanics
Resources ItemsTalkMagnetite/Fusion (Fusible Demons) • KarmaSummoning (Demon Summoning Pool, Skill Summoning Pool, Choice File) • Event Reward DemonsSeason Pass
Team Building Battle SpeedTeam restrictionsLiberatorsArmamentsDemonite
Upgrading Leveling/EvolvingAwakeningSpirit MergeTranscend
Customization ArchetypesSkill TransferBrandsMitamaSin InfusionDevil Connector
Misc FormulasAR ScannerDeviconAlignment