In Factorio, entities have health, can die/be destroyed, and have resistances. Damage is defined as the concept of lowering an entity's health by using an attack, such as a gun firing at it, or a biter chewing on it. An entity's resistances will define exactly how much damage the entity will take off of an arbitrary attack.
The player's maximum health is 250 (without energy shields). Other entities' health values are listed in their individual entries.
The concept of damage is directly connected to the following achievements:
|Run Forrest, run|
Destroy 100 trees by impact.
Destroy 10k trees with fire.
Destroy 10 spawners by impact.
Survive a hit of 500 damage or more.
|Watch your step|
Get killed by a moving locomotive.
|Damage type||Used by|
|Physical||Bullets (regular/piercing/uranium), shotgun shells (regular/piercing), biters, defender robots|
|Impact||Collision (of train/car/tank)|
|Fire||Flamethrower, Flamethrower turret|
|Explosion||Rockets, Explosive Rockets, Grenade, Cluster grenade, Artillery shell, Land mine|
|Laser||Laser turrets, distractor robots, personal laser defense|
|Electric||Discharge defense, destroyer robots|
Piercing power is present with tank ammunition. It determines how much HP of enemies can a projectile damage before it is no longer able to travel further. To penetrate an enemy, the enemy has to be killed by the projectile, and the damage dealt for the kill must be less than current piercing power. The damage dealt also decreases piercing power. For example, shooting medium biters with 75 health with a cannon shell of 300 piercing power means that the shell will pierce through 4 medium biters, killing them, and still destroy/damage one more target.
Resistance has two aspects:
Decrease, or "flat" resistance
Decrease resistance decreases the damage by specified number as long as the resulting damage wouldn't be less than 1. If the result damage would be less than 1, an alternate formula is used. Let R denote the flat resistance value, D the incoming damage, and M the modified damage, after accounting for flat resistance. Then
otherwise if D>1
If flat resistance matches or exceeds the raw damage, then modified damage is asymptotic towards 0, as shown by following example table:
|Damage||Flat Resistance||Modified damage (with 0% resistance)|
Percentage resistance reduces the damage by the specified percent. It is applied after flat/decrease resistances when both are present and thus changes the 'modified damage' value above, decreasing it by the specified percentage. If the value is 100%, the entity is immune to the damage. This is the only way to have an entity immune to a type of damage, as flat reduction cannot reduce damage beneath 1.
As an example, an entity with 25% resistance to physical damage hit with a bullet dealing 100 physical damage would take 75 damage instead of 100.
The formula used for percentage resistance to damage is as follows:
Let M denote the flat-resistance-modified starter damage, and let P denote the percentage resistance (in decimal form, so 25%=0.25), and let F denote final damage.
F = M * (1 - P)
In Factorio, resistances are displayed in the UI as follows:
Decrease resistance/Percentage resistance (Damage type)
So, an entity that displays 10/20% resistance to fire has 10 flat resistance and 20% percent resistance to fire. If the aforementioned entity were to take 30 fire damage, they would instead take 16 damage, after resistances were applied.
The formula used for the above:
16final damage = (30initial raw damage - 10flat resist) * 0.820% resistance
Let D denote the raw incoming damage (of applicable type), R denoted the flat resistance value (against damage of the applicable type), P the percentage resistance (against damage of the same type) in decimal form (e.g. 20%=0.2), and let F denote the final damage (of applicable type) dealt to the target.
F = (D - R) * (1 - P)
otherwise if D>1
F = (1 - P) / (R-D+2)
F = (1 - P) / (R+1)