Research / formulas

Formula archive

Every combat expression currently safe to publish for Digimon UP, arranged in the order a player experiences it. Plain-language explanations come first; native method and RVA citations remain one click away.

28confirmed combat formulas
41confirmed formulas in the full archive
3combat gaps kept explicitly unresolved

Start here

How to read the notation

You do not need to know code. These conventions cover the archive.

80% → 0.80

Percent-style sheet stats enter combat math as fractions.

D

The damage entering the current step—not a separate hidden stat.

max(0, x)

Use x when positive; otherwise use zero. A bonus cannot become a penalty.

random(0, 1)

A roll from 0 to 1. A 0.25 rate is a 25% chance before subtraction.

damage *= value

Multiply the damage carried forward from the previous step.

trunc(value)

Drop the fractional part at that exact point in the formula.

Confirmed native order

One hit, from check to result

Branches only run when their stated condition is true. The game does not apply every box to every hit.

  1. Gate

    Evade

    Unless the incoming hit is already a Counter, Evasion is checked first. A successful evade stops the damage and later post-hit checks.

    (EvadeRate - EvadeRateDecrease) > random(0, 1)
  2. 01

    Start from final ATK

    The hit copies the attacker’s already-computed final ATK. Building that final sheet stat from every account source is still unresolved.

    initialDamage = finalAttack
  3. 02

    Defense

    Defense applies its curve to the incoming value D.

    afterDefense = D^2 / (D + Defense)
  4. 03

    Boss-attacker mitigation

    Only when the attacker’s character type is Boss, Boss Damage DOWN divides the post-Defense result.

    damage *= 1 / (1 + BossDamageReduction)
  5. 04

    Matching attack-type layers

    Normal, Skill, Combo, Counter, or Support/Pet Damage applies, followed by its separate Damage UP layer.

    damage *= 1 + max(0, typeDamage - typeDamageDown - DamageDown)damage *= 1 + max(0, typeDamageUp - typeDamageResist)
  6. 05

    Skill or Support/Pet branch

    Skills consume a positive coefficient. Support/Pet hits instead receive their extra Normal Attack Damage multiply.

    if skillCoefficient > 0: damage *= skillCoefficientpetDamage *= 1 + attackerNormalDamage
  7. 06

    Outgoing Boss Damage

    Non-Pet attackers multiply by Boss Damage when the target is a Boss or EpicMonster.

    damage *= 1 + BossDamage
  8. 07

    Critical damage

    Only after the matching critical-rate roll succeeds. SkillAttack and non-skill hits use different critical branches.

    (1.5 + max(0, CriticalDamage - CriticalDamageDown)) * (1 + max(0, CriticalDamageUp - CriticalDamageResist))1.5 + max(0, SkillCriticalDamage - SkillCriticalDamageDown)
  9. 08

    Round, shield, then HP

    The standard path floors positive damage, spends shield against it first, then subtracts the remainder from HP unless Ignore Damage is active.

    if damage != 0 and trunc(damage) == 0: damage = 1rounded = floor(damage); absorbed = min(shield, rounded); shieldAfter = shield - absorbed; hpLoss = IgnoreDamage ? 0 : rounded - absorbed
After a connected hit

Stun is attempted before Airborne. A successful Stun skips the Airborne attempt. The defender may then roll a separate Counter, and the attacker may roll on-hit HP Recovery. Combo is an eligible normal attacker’s separate follow-up roll.

Complete formula index

Browse confirmed formulas

Showing 12 of 41 matching formulas

Verified in client codeTM & Crests

Tactical Memory shown main stat

A Tactical Memory's displayed main stat scales from its rolled raw value, grade, and current enhancement level.

shown = raw * gradeRate * (level + 1)

Important: Use the value currently shown on an upgraded piece when checking its original roll; the inverse tool accounts for the current level.

Research evidence (3)
tp.RuneInfoParam.MakeOptionRVA 0xCD202C
tp.UIRuneInfoPopup.SetDataRVA 0x1026F00
AST literal extraction from existing shareable research output

Archive key: tactical-memory-main-stat

Verified in client codeTM & Crests

Tactical Memory XP transfer

A sacrificed Tactical Memory returns its accumulated level XP, current partial XP, and base feed value after one loss rate for its current level is applied to the whole amount.

(currentExp + sum(BaseExp + ExtraExp * levelStep) + SellBaseExp) * (1 - lossRateAtSourceLevel)

Important: The target rarity does not enter this calculation; it only determines how far the returned XP moves the target along its own BaseExp + ExtraExp * level curve. The server finalizes the reinforcement request.

Research evidence (3)
gd:RuneGradeOption+RuneLossExp
tp.DataInfoRuneGradeOption.GetExpRVA 0xD31BB8
tp.RuneInfoParam.GetTotalExpRVA 0xCD21B0

Archive key: tactical-memory-xp-transfer

Verified in client codeTM & Crests

Crest fixed base stat

A Crest fixed base stat multiplies the stored value by its rate and current level plus one.

statValue * rate * (curLevel + 1)
Research evidence (1)
Crest fixed-stat calculationRVA 0xD547B4

Archive key: crest-base-stat

Verified in client codeTM & Crests

Crest fixed additional stat

A Crest fixed additional stat scales by current level plus one without the extra rate term.

statValue * (curLevel + 1)
Research evidence (1)
Crest additional-stat calculationRVA 0xD547D8

Archive key: crest-additional-stat

Verified in client codeDamage core

A hit starts from final ATK

The combat object copies the attacker's already-computed ATK into the hit's starting damage value.

initialDamage = finalAttack

Important: This confirms the start of a hit, not the account-wide formula that builds final ATK from levels, bonuses, gear, and buffs.

Research evidence (1)
tp.SimulateDamageInfo.SetAttackerStatRVA 0x10610D8

Archive key: initial-damage-from-attack

Verified in client codeDamage core

Base character stat by level

For each of the 54 stats, the base row is added once, the level-growth row is added for every level after the first, and the result is scaled by statRatio.

level 0: 0; level >= 1: (previousStat + baseStat + levelStat * (level - 1)) * statRatio

Important: previousStat is the value already present in the output array. This confirms the base/level calculation, not the later account-wide merge of equipment, collections, buffs, and bonus stats.

Research evidence (2)
tp.DataFormula.getStatRVA 0xCB5758
tp.DataFormula.ComputeStatRVA 0xCB0B34

Archive key: base-stat-at-level

Verified in client codeDamage core

Attack and Defense after Bonus

Attack and Defense multiply their raw value by one plus the matching Attack Bonus or Defense Bonus stat.

max(0, rawStat * (1 + matchingBonus))

Important: This confirms the final matching-Bonus step inside StatsInfo.GetStat. It does not fill in the still-unresolved account-wide merge that supplies the raw player stat.

Research evidence (1)
tp.StatsInfo.GetStatRVA 0xCAF99C

Archive key: core-stat-with-bonus

Verified in client codeEncounter levels

Normal Stage enemy level

The normal Stage banner displays the global sector count; the Stage combat branch gives enemies one level above that displayed number.

enemyLevel = displayedStageNumber + 1

Important: Example: Stage 4000 uses enemy level 4001.

Research evidence (2)
tp.UIStageInfo.SetDataRVA 0x10CF54C
tp.DataUtil.GetMobLevelRVA 0x11926C0

Archive key: stage-enemy-level

Verified in client codeEncounter levels

Crest floor enemy level

The Crest screen passes its displayed one-based floor into the enemy-level formula, using the confirmed base level 180 and increase of 10.

enemyLevel = 180 + floor * 10

Important: Example: Crest floor 23 uses enemy level 410.

Research evidence (3)
gd:SpawnData:crest-levels
Crest floor launch handlerRVA 0x103DB54
tp.DataUtil.GetMobLevelRVA 0x11926C0

Archive key: crest-enemy-level

Verified in client codeTM & Crests

Hologram equipment fixed stat

Each fixed stat on Hologram equipment starts at its ItemStat base value at level 1, then adds the linked per-level value for every level after the first.

level 0: 0; level >= 1: baseValue + levelValue * (level - 1)

Important: The item stores its own level, with a client-configured maximum of 500. Hologram Device level controls the separate 30-level unlock/probability table.

Research evidence (3)
tp.ItemInfoBase.GetStatStringRVA 0xD02B44
tp.DataFormula.getStatRVA 0xCB5758
gd:OtherDataOne:equipment-levels

Archive key: hologram-equipment-fixed-stat

Verified in client codeTM & Crests

Hologram equipment bonus roll

A rolled bonus stat uses its OptionSet base value plus its per-level value multiplied by the item's level.

optionValue = BaseValue + LevelValue * itemLevel

Important: Every v1.0.4 Hologram OptionSet row has LevelValue 0, so each bonus roll is constant across item levels in this version. Rarity still changes the value.

Research evidence (2)
tp.DataInfoOptionSet.GetValueRVA 0xD2AC38
tp.ItemInfoParam.GenerateItemOptionRVA 0xCD0474

Archive key: hologram-equipment-option-value

Verified in client codeTM & Crests

Digivice part stat by level

An equipped Digivice part starts at its BuffStat base value at level 1 and adds the linked growth value for each later level.

level 0: 0; level >= 1: baseValue + levelValue * (level - 1)

Important: The site models only the selectable Gear Effect equipped in each of the six sockets.

Research evidence (3)
tp.UIDigivicePartsInfo.SetInfoRVA 0xFE87F8
tp.BuffTextStat.GetValuesRVA 0x115F810
tp.DataFormula.getStatRVA 0xCB5758

Archive key: digivice-part-stat

Publication boundary

What is still unknown

Incomplete layers stay visible so they are never silently treated as zero.

unresolved

How the account builds final ATK

Hit initialization from the final ATK stat is confirmed, but the complete level, equipment, bonus, collection, and buff aggregation that produces final ATK is not recovered as one safe closed form.

unresolved

Damage reduction maximum

The metadata field exists but no confirmed table value/native fallback is published here.

unresolved

Combo Chance DOWN at the proc check

ComboRateDecrease exists as a stat, but the confirmed normal-attack combo roll reads ComboRate only. No separate runtime subtraction site has been proven, so the archive does not claim that Combo Chance DOWN changes this roll.

server-authority

server reward resolution

Server reward selection and account state cannot be established from client tables.

unresolved

farm growing bonus duration

GrowingBonus is ConvertPercent'd on FarmBuilding load and shown in tables, but no client GetValue(GrowingBonus) call site was found; planted duration appears server-set.

derived

farm bonus reward payout

FarmBonusRewardRate = 50 is confirmed and shown on TimeReward FarmBonusReward (GetTimeRewardDesc). GetFarmHarvestAmount does not apply it; the Farm Lab applies +50% after building HarvestBonus when the pass toggle is on.

Digimon UP Data Lab

Unofficial community resource. Not affiliated with or endorsed by Bandai Namco Entertainment. Game names and trademarks belong to their respective owners. Builds stay on your device until you create a share link; anyone with that link can view the build, so avoid personal information in build names.