## FANDOM

3,581 Pages

This page is the documentation of research completed by Rmosley753 and Mad5cout regarding the order of operations of a full damage calculation.  It is loosely organized in the order that the findings were done.  Most of these are written as excel codes because they will eventually be used in the Damage Calculator.

## Full Damage Calculation

The end result of this research produced the following as the only possible (and thoroughly confirmed) order of operations for a full damage calculation:

FINALBaseDamage = ROUNDDOWN(ROUNDDOWN(ROUNDDOWN(ROUND(ROUNDDOWN(ROUNDDOWN(BaseDmg * DmgMP, 0) * BodyPartMP, 0) * FactMP , 0) * TypeMP, 0) * ArmorMitigation, 0)

FINALElementalDamage =ROUNDDOWN(ROUNDDOWN(ROUNDDOWN(ROUND(ROUNDDOWN(ROUND(ROUNDDOWN(BaseDmg * DmgMP, 0) * EleMP, 0) * BodyPartMP, 0) * FactMP , 0) * TypeMP * ArmorMitigation, 0)

Written in English rather than Excel code (Note: all rounding is done to whole numbers):

### Base Damage Calculation

1. Base Weapon Damage * (1 + Damage Mods) = Modded Base Damage round down
2. Modded Base Damage * Body Part MP = Part Damage  round to the nearest
3. Part Damage * (1 + Faction Mod) = Faction Damage round down
4. Faction Damage * Damage Type MP = Faction Type Damage round down
5. Faction Type Damage * Armor Mitigation (see Armor page for formula) = Final Base Damage round down

### Elemental Mod Damage Calculation

1. Base Weapon Damage * (1 + Damage Mods) = Modded Base Damage round down
2. Modded Base Damage * Elemental Mods = Elemental Damage round to nearest
3. Elemental Damage * Body Part MP = Elemental Damage to Part round to the nearest
4. Elemental  Part Damage  * (1 + Faction Mod) = Faction Elemental Damage round down
5. Faction Elemental Damage * Damage Type MP = Faction Elemental-Type Damage round down
6. Faction Elemental-Type Damage * Armor Mitigation (see Armor page for formula) = Final Elemental Damage round down

## Base Damage

This was largely a known factor and was not tested by us extensively but the basic calculation by itself is:

Modded Base Damage = ROUNDDOWN(BaseDamage * (1+Mod%), 0)

## Elemental Damage

Also a known factor from previous tests done by multiple community members:

Modded Elemental Damage = ROUND(ROUNDDOWN(BaseDamage * (1+Mod%), 0) * ElementalMOD%, 0)

## Faction Damage

Current understanding of Faction Mods isolated from armor, Body Part MPs, and Damage Type MPS

Faction Base Damage = ROUNDDOWN(ROUNDDOWN(BaseDamage * (1+Mod%), 0) * (1+FactionMOD), 0)

Faction Elemental Damage = ROUNDDOWN(ROUND(ROUNDDOWN(BaseDamage * (1+Mod%), 0) * ElementalMOD%, 0) * (1+FactionMOD), 0)

### FactionMOD Research

Hind - 15% Serration, 5% Faction vs. Infested Runner: Body = 35, Head = 71

• Confirms FactionMODs are after Base Damage MODs, as having them together would have returned, Body = 36.
• Secondary confirmation of placement of Body Part MPs discussed below.

Hikou - 0%Dmg, 5%Faction, 90%Freeze vs. Infested Runner:  Freeze = Head=48, Body=24

• Confirms that Faction mods are not placed with the ElementalMODs, because this would return a 23.

Hikou - 20%Dmg, 5%Faction, 50%Freeze vs. Infested Runner:  Freeze = Head=31 & Body=15

Hikou - 20%Dmg, 30%Faction, 10%Freeze vs. Infested Runner:  Freeze = Head=7 & Body=3

• All three data points confirm FactionMODs placement after Elemental MODs.
• This also serves as a confirmation that it is applied after Base Damage MODs as the order of operations will not all of a sudden change simply because a mod was added.

## Body Part MPs

Placement of Body MPs:

BaseDamage = ROUNDDOWN(ROUND(ROUNDDOWN(BaseDmg * DmgMP, 0) * BodyPartMP, 0) * FactMP, 0)......

ElementalDamage =ROUNDDOWN(ROUND(ROUND(ROUNDDOWN(BaseDmg * DmgMP, 0) * EleMP, 0) * BodyPartMP, 0) * FactMP , 0).....

### BodyMPs Research Findings

Hikou unmodded vs. Corpus MOA:  Gun (.5 MP) = 13

• Confirms that BodyMPs are rounded to the nearest integer, not rounded down.

Hikou w/ 20%Dmg + 5%Fact + 50%Freeze on Infested Runner:  Head=31 & Body=15

• Confirms that BodyPartMPs happen prior to FactionsMODs, otherwise Head would be 30.

Hikou - 0% Damage, 10% Expel Corpus, 20% Deep Freeze vs. Corpus MOA after shields depeleted. Gun (.5 MP) = Weapon = 14, Freeze = 3

• Secondary confirmation of both BodyMPs being rounded and not rounded down and their placement before faction mods.  Also confirms faction mod placement from above.

## Damage Type MPs

Adding Damage Type MPs, yielded the following equation.  TypeMPs relationship to armor calcs was not tested in this round of research so that we could isolate TypeMPs and determine its relationship to known factors tested above.

BaseDamage = ROUNDDOWN(ROUNDDOWN(ROUND(ROUNDDOWN(BaseDmg * DmgMP, 0) * BodyPartMP, 0) * FactMP , 0) * TypeMP, 0)

ElementalDamage = ROUNDDOWN(ROUNDDOWN(ROUND(ROUND(ROUNDDOWN(BaseDmg * DmgMP, 0) * EleMP, 0) * BodyPartMP, 0) * FactMP , 0) * TypeMP, 0)

### TypeMP Research

Unmodded Despair vs. Infested Runner:  Body = 27, Head = 55

• Confirms TypeMPs are rounded down.
• Secondary confirmation that TypeMP and BodyMPs are not together AND that BodyMPs are first as putting it after would have returned, 54 for the head.

Hikou - 0%Dmg, 30%Faction,  50%Freeze vs Infested Runner:  Weapon: Head=195, Body=96 & Freeze: Head=33, Body=16

• Confirms that Type MPs are after faction mods but does not confirm their relation to armor.

## Armor

Test of order of order of TypeMP and Armor and rounding direction of armor.

BaseDamage = ROUNDDOWN(ROUNDDOWN(ROUNDDOWN(ROUND(ROUNDDOWN(ROUNDDOWN(BaseDmg * DmgMP, 0) * BodyPartMP, 0) * FactMP , 0) * TypeMP, 0) * ArmorMitigation, 0)

ElementalDamage =ROUNDDOWN(ROUNDDOWN(ROUNDDOWN(ROUND(ROUNDDOWN(ROUND(ROUNDDOWN(BaseDmg * DmgMP, 0) * EleMP, 0) * BodyPartMP, 0) * FactMP , 0) * TypeMP * ArmorMitigation, 0)

### Armor Research

Hind - 45% Hellfire vs. Level 20 Grineer Trooper:  Fire Damage: Body = 4

• Confirms in isolation that armor is applied after TypeMPs.  If armor was first, it would return a 3.

Tests of order of Type MPs and Armor with other known factors:

Test #1: Braton Prime +150%Dmg +30%Fact vs Shield Lancer (lv12)

Actual Result: 72 damage (2x head, 1.5x bullet)

Test #2: Braton Prime +60%Dmg + 30%Fact vs Shield Lancer (lv13)

Actual Result: 46 damage (2x head, 1.5x bullet)

Armor and TypeMP together:

ROUNDDOWN Type and Armor = Fail (73, 46)

ROUND Type and Armor = Fail (73, 46)

Armor after TypeMP:

ROUNDDOWN Armor & ROUNDDOWN TypeMP = Pass both (72, 46)

ROUNDDOWN Armor & ROUND TypeMP = Fail #1 (73, 46)

ROUND Armor & ROUNDDOWN TypeMP = Fail #1 (73, 46)

ROUND Armor & ROUND TypeMP = Fail #1 (73, 46)

TypeMP after Armor:

ROUNDDOWN Armor & ROUNDDOWN TypeMP = Fail #2 (72, 45)

ROUNDDOWN Armor & ROUND TypeMP = Fail #2 (72, 45)

ROUND Armor & ROUNDDOWN TypeMP = Fail #1 (73, 46)

ROUND Armor & ROUND TypeMP = Fail both (47, 74)

• Confirms armor is rounded down and placed after Damage Type MPS.

## Rate of Fire for DPS Calcs

Known working DPS multipliers.  All are currently accurate except for melee attack speeds.

Melee (Until we get it sorted):

= AverageDamage * ROF

Regular guns:

= AverageDamage * ClipSize / (Reload time + ClipSize/ROF)

Spin-up Weapons (alterations to regular guns in italics):

= AverageDamage * ClipSize / ((BulletsToSpin-up * 2)/(ROF+ROF * Spin-upModifier) + Reload time + (ClipSize - BulletsToSpin-up)/ROF)

• Displacement during constant acceleration: d = 1/2(vf + vi)t
• Displacement (d) in this case is bullets fired.
• Final Velocity (vf) is modded ROF.
• Initial Velocity (vi) is the ROF * the first MP in the spin up range.
• Thus:  Spin-upTime = (BulletsToSpin-up * 2)/(ROF+ROF * Spin-upModifier)
• (ClipSize - BulletsToSpin-up)/ROF) modification is made because we already account for the Spin-up bullets in the spin-up time portion and the only part that operates at max ROF is everything after that.

Burst Weapons:

= AverageDamage * Clip Size /  ((((ROUNDDOWN(ClipSize/ShotsPerBurst, 0) * (ShotsPerBurst-1)) + MAX(MOD(Clipsize,ShotsPerBurst) - 1), 0))  *  BurstDelay) + Reload Time + ROUNDUP(ClipSize/ShotsPerBurst, 0) / ROF)