WARFRAME Wiki
Advertisement
WARFRAME Wiki
WARFRAME Wiki
Official wiki
9,073
pages

Damage Calculation[]

Photo-4
“It's taking longer than I calculated.”
This page is actively being worked on and may not be completely correct. Please assist in making this page accurate. See WARFRAME Wiki:Research on ways to perform research on this game. Click here to add more info.
Include a more nuanced look at damage when accounting for status chance and status effects that increase damage dealt and/or reduce target's armor

The following explains how a certain amount of damage of one type turns into actual inflicted damage to a target, considering type modifiers and armor. Faction modifiers, body part modifiers, critical hit and stealth modifiers, as well as Warframe debuffs, are disregarded for now, since all of these are independent of damage types.

Quantization[]

Dealing damage is quantized. Meaning, rather than the damage being applied smoothly, physical and elemental damages round to the nearest multiple of 1/16th of their attack's base damage, before being multiplied further.[1][2] By using this method of quantization, the precision of data is reduced, thereby saving storage space and improving the efficiency of computer operations. Rather than communicating a lengthy integer of each element's value, only one "Total" integer along with short representative multiples of 1/16th need to be communicated.

For each damage type that a weapon deals, the base damage for that damage type will first be divided by the scale, rounded to the nearest whole number, and finally multiplied by the scale. This quantized value will be used in the mission's damage calculations. The final damage seen by in-game damage pop-ups are further rounded to a whole number.

  1. For example, if you have a weapon with a listed damage distribution of 30 DmgImpactSmall64 Impact, 30 DmgPunctureSmall64 Puncture, and 40 DmgSlashSmall64 Slash, the total damage is 100.
  2. The value of a scale will then be 100 ÷ 16 = 6.25.
  3. The amount of DmgImpactSmall64 Impact damage dealt by the weapon will then be 30 ÷ 6.25 = 4.8 rounded to the nearest whole number, multiplied by the scale: 5 × 6.25 = 31.25. This process is applied to DmgPunctureSmall64 Puncture and DmgSlashSmall64 Slash as well, yielding 31.25 and 37.5 respectively.
  4. As such, when damaging a Charger, which has a +50% bonus to DmgSlashSmall64 Slash damage due to having Infested health, the total damage dealt to the Charger will then be 31.25 + 31.25 + 37.5 × (1 + 50%) = 118.75 (the game will display the rounded value of 119).
  • Note that while in this case the weapon's total damage after the conversion remained the same (at 100), mixed-type weapon damage is frequently gained or lost by the conversion.

Damage mods such as Mod TT 20px Hornet Strike, Faction mods such as Mod TT 20px Bane of Grineer, and any other multipliers only multiply final quantized values and do not affect the scale or damage composition.

If a physical or elemental mod is applied, their bonuses are also quantized.

  1. The value of the example scale will still be 100 / 16 = 6.25. Elemental and Physical bonuses do not affect the scale.
  2. If Mod TT 20px Maim was used, for example, the DmgSlashSmall64 Slash bonus calculates seperately using the base portion of slash, and adds to the total: round( 40 × 1.2 ÷ 6.25 ) × 6.25 = 50.
  3. The damage distribution would then be 31.25 DmgImpactSmall64 Impact, 31.25 DmgPunctureSmall64 Puncture, and 37.5 + 50 = 87.5 DmgSlashSmall64 Slash.
  4. Elemental bonuses calculate using the full base damage, are rounded to the nearest 1/16th of the base damage and added to the total.
  5. Elements formed by a sum of mods and bonuses quantize their sum alone. For example, if 90% DmgColdSmall64 Cold combined with 90% DmgToxinSmall64 Toxin, or 90% modded DmgRadiationSmall64 Radiation combined with 90% of Mod TT 20px Smite Infusion, these types would count seperately as a sum of their final element (180% DmgViralSmall64 Viral, or 180% DmgRadiationSmall64 Radiation), each rounded to the nearest 1/16th of base damage, and finally added to the quantized total.

Calculating damage with quantization can be simplified to the following steps.

  • Get Scale
  • Quantize Elements
  • Quantize IPS
  • Add above
  • Apply all other multipliers

Trivia[]

  • Hitscan weapons do not quantize against object health such as Nullifier Bubbles and Zephyr Tornadoes. Projectiles however will be quantized. This characteristic has been used to determine damage compositions not disclosed in-game, so they can be presented here in the wiki.

Unarmored Enemies[]

Against unarmored enemies or when applying DmgTrueSmall64 True damage, the formula is simply:

  • Inflicted Damage (ID) is the final damage result of a particular damage type.
  • Starting Damage (SD) is the initial damage value of a particular damage type, modded or not.
  • Health-type Modifier (HM) is the damage modifier against that health type (may be shields or health).

To make it independent from the amount of base damage:

  • Damage Modifier (DM) is the total damage modifier. An amount of damage of that type (SD) against that enemy will then always be multiplied with this factor (DM).

Armored Enemies[]

Against armored enemies, the formula is:

Where in addition to the previous definitions, AM is the damage modifier against the armor type and AR is the target's armor after all reductions from debuffs (e.g. Mod TT 20px Corrosive Projection, DmgCorrosiveSmall64 Corrosive procs, and Terrify130xWhite Terrify).

Note that from the formula above damage type modifiers directly affect the value of the armor as well as damage. Positive armor modifiers will reduce the effective armor by the percentage value, which is commonly thought of as that damage type essentially ignoring some of the armor. Conversely, negative armor modifiers will increase the effective armor by the magnitude of the percent value. Because of this, damage values see larger changes from armor than intuition may lead one to think since both the damage itself is affected as well as the damage mitigation caused by armor. So in many cases, it is more important to consider armor modifiers before health modifiers.

It is important to emphasize that type modifiers against armor work in two ways here:

  • Mitigate or enhance a percentage of the target's armor (represented by AR(1 - AM) in the above equation)
  • Increase or decrease the damage dealt in the same way as a type modifier against the hit points would do (represented by (1 + AM))

Practically speaking, this means that DmgCorrosiveSmall64 Corrosive damage is only reduced by 25% of a target's whole Ferrite Armor and the base damage is increased by +75%. The formula also causes a massive difference between a medium and a large reduction: 75% reduction (¼ original armor) is essentially twice more than 50% reduction (½ original armor). Thus, having the damage type with the highest appropriate bonus is far more important against armored than unarmored targets.

Comparing Damage Type Modifiers on Armored Enemies[]

Since certain damage types can ignore armor while being reduced by them, a simple (1 + HM) × (1 + AM) calculation yields incorrect results. For example, the following damage type pairings deviate from that simplified calculation (ignoring status effects):

This just shows that one cannot easily compare damage type modifiers against an armor class to those against health classes, and those against armor are, at similar values, considerably more effective especially when fighting high-level enemies (since armor scales with enemy level).


Exact relative damage bonus (i.e. benefit) of a non-zero armor modifier at a given target net armor value.

The relative damage bonus due to a damage type's armor modifier against armored health compared to no modifier can be quantified using the above expression. This is only defined for armor values greater than 0 because at 0, the armor type of the target is lost, such that the effect of the damage type's armor modifier is lost as well. Hence, the benefit (relative damage bonus) of the armor modifier at 0 armor is always 0.

Limit for the benefit as armor approaches infinity (300/AR term resolves to 0).

An interesting property of this benefit function is that, while one would intuitively assume the benefit of the armor modifier gets always greater the greater the target's armor, this benefit actually converges against a limit as armor approaches infinity if the armor modifier is smaller than one (which is true for all damage types against all armor types with the sole exception of DmgTrueSmall64 True damage). Since this limit is only determined by the armor modifier of the damage type itself, it is a practical metric to gauge the relative effectiveness of damage types for long endless missions.

Below is a table of the actual values for all currently implemented armor modifiers, illustrating the growing returns of greater armor modifiers, which may be compared to the behavior of Mod TT 20px Corrosive Projection aura stacking.

Codex Label +++ ++ + + N/A - - --
AM +0.75 +0.5 +0.25 +0.15 +0 -0.15 -0.25 -0.5
lim as fraction +6 +2 +2/3 +6/17 +0 -6/23 -2/5 -2/3
lim in % +600 +200 +66.67 +35.29 +0 -26.09 -40 -66.67

Generalized Damage Modifier[]

A generalized version of the damage modifier formula is:

Generalized damage modifier formula for a specific damage type. The term following the capital pi operator (Π) simply means that this is a product, so all these bonuses stack multiplicatively. The notation replaces (1 + M1) × (1 + M2) × ... .

AR is still the target's armor after all debuffs (e.g. Mod TT 20px Corrosive Projection, DmgCorrosiveSmall64 Corrosive procs, and Terrify130xWhite Terrify) have been applied, how these debuffs work is explained on the Armor page. AM is the damage type modifier against the armor class for a specific damage type. Mi for all indices i are all independent modifiers that are active, stacking multiplicatively with each other and are relative increases in damage (e.g. 2.5x damage would be represented as +150% or +1.5x). These include, but not limited to:

In the case of enemies who have both shields and armor, damage to shields is not mitigated by armor. Lastly, when DmgToxinSmall64 Toxin damage is applied to a shielded target, generally the damage is applied directly to its health, not shields (i.e. it bypasses shields). Some special enemies like Treasurer or Hounds cannot have their shields bypassed with DmgToxinSmall64 Toxin damage however.

Final Calculations[]

Modded Stats[]

Basic formula for calculating modded stats (e.g. critical chance) with the exception of accuracy, reload time, and charge time.

Formula for calculating modded reload time and charge time.

Total Damage[]

The damage numbers displayed in the in-game arsenal calculate total weapon damage as such:

This arsenal damage is the average non-crit damage per shot, without Faction Damage Bonus.

For melee weapons, remove multishot from the equation. It does not include Stance damage multipliers.

Theoretical total inflicted damage against an enemy can be calculated as such (ignoring quantization for simplification):

Where SD represents the modded value of a particular damage type and DM represents the damage modifier for a particular damage type using the generalized damage modifier formula.

Gun Damage Per Second[]

Photo-4
“It's taking longer than I calculated.”
This page is actively being worked on and may not be completely correct. Please assist in making this page accurate. See WARFRAME Wiki:Research on ways to perform research on this game. Click here to add more info.
Burst-fire and mag-burst attacks (not simultaneous burst like Quartakk Quartakk which can be treated like semi-auto weapons) have a more complicated DPS calculation

When comparing the performance of non-melee weapons, it may be useful to calculate their theoretical damage per second (DPS) (without accounting for status effects) using the following formulas:

Average Shot/Hit[]

Average shot or hit is the theoretical average damage dealt on a single button input if all projectiles hit the target.

In the case where modded critical chance is over 100%, the lowest crit tier possible will be considered a normal shot. (e.g. if a weapon has 250% crit chance, the 100% for an orange crit will be considered a normal shot)
Note that denotes a flooring function (rounding down)

In the case where modded critical chance is over 100%, the next crit tier possible will be considered a critical shot (e.g. if a weapon has 250% crit chance, the 50% for a red crit will be considered a critical shot)
Note that denotes a ceiling function (rounding up)

The average damage dealt on a single button input if all projectiles hit the target.

Average Burst DPS[]

Average burst DPS is the theoretical damage a player does in a very short burst of time, or an extended period of time if ignoring time spent reloading/not firing their weapon.

The lower the Fire Rate, the more delay between charge shots. If attack is not a charge trigger type (charge time is 0), then effective fire rate equals modded fire rate.

Not all weapons consume one ammo per shot; this is to account for cases such as Continuous Weapons

Average Sustained DPS[]

Average sustained DPS is the theoretical damage a player does over an extended period of time, accounting time spent reloading/not firing their weapon.

For the Vectis Vectis and VectisPrime Vectis Prime specifically, one (1) should be subtracted from the denominator to account for their lack of a reload delay.
For Epitaph Epitaph specifically, ignore Modded Reload Time since it draws ammo directly from the full ammo pool similar to bows, but does not "reload" between shots like them.
Assumes that damage ramp up is at max for Continuous Weapons.
Reload time is in seconds.
Reload time includes reload delay which is more prevalent for Battery Weapons. Reload delay for most weapons are negligible if not non-existent.

Melee Damage Per Second[]

When comparing the performance of melee weapons, it may be useful to calculate their theoretical damage per second (DPS) (without accounting for status effects) using the following formulas:

In the case where modded critical chance is over 100%, the lowest crit tier possible will be considered a normal hit. (e.g. if a weapon has 250% crit chance, the 100% for an orange crit will be considered a normal shot)
Note that denotes a flooring function (rounding down)

In the case where modded critical chance is over 100%, the next crit tier possible will be considered a critical hit (e.g. if a weapon has 250% crit chance, the 50% for a red crit will be considered a critical shot)
Note that denotes a ceiling function (rounding up)

The average damage dealt on the first enemy hit by melee attack, not accounting Follow Through
See individual stance pages for average combo damage multipliers or go to Stance#Comparison


See individual stance pages for average base combo lengths or go to Stance#Comparison

Damage Over Time[]

Total modded damage calculations used for DoT ignores elemental and physical damage bonuses.


Without accounting multipliers of specific DoT.

Individual calculations for each DoT proc. Keep in mind Slash DoT deals Cinematic damage, ignoring armor.


Multiply each DoT with the respective damage distribution (i.e. damage type / total damage) and add them together

In the case where modded critical chance is over 100%, the lowest crit tier possible will be considered a normal shot. (e.g. if a weapon has 250% crit chance, the 100% for an orange crit will be considered a normal shot)
Note that denotes a flooring function (rounding down)

In the case where modded critical chance is over 100%, the next crit tier possible will be considered a critical shot (e.g. if a weapon has 250% crit chance, the 50% for a red crit will be considered a critical shot)
Note that denotes a ceiling function (rounding up)

Accounting for critical hits, non-crits, and status chance for an average of total DoT averages.

Lifetime Damage[]

Lifetime damage is a derived damage stat that is based on the total amount of damage that a weapon can deal before it depletes its ammo reserve. Melee weapons, Battery Weapons or rechargable weapons, and Exalted Weapons (assuming Energy is always restored) will deal infinite damage over their in-game use since they are always available and are not reliant on ammo pickups or Squad Ammo Restores.

The average total damage dealt by a weapon without switching weapons or replenishing ammo.

References[]

  1. Theroxenes (2018, March 2). Internal rounding leading to unintended applied damage. Warframe Forums. Accessed 2022-09-19. Archived from the original on 2022-09-19.
  2. Theroxenes (2018, February 28). Internal damage quantization or: Another way the arsenal is lying to you.. Reddit. Accessed 2022-09-19. Archived from the original on 2021-11-24.

See Also[]



Advertisement