# 데미지 계산 (롱 워 리밸런스)

## Terms

**Weapon Damage**: This is each weapon damage stat configurable in DefaultGameCore.ini file.

**Barrel Modifiers**: These are effects that modifies damage as it leaves the barrel of the weapon.

**Target Modifiers**: These are effects that modify the damage when it hits the target.

**Crit Dmg (or Critical Damage)**: This is how much the damage is increased during a critical hit. The base value is 1.5, and a non-crit is 1.0.

**DR (or Damage Resistance)**: This is how much of the damage received is resisted. It involves __ Flat Damage Resistance__,

__, and__

*Percent Damage Resistance*__.__

*Penetration*

**Barrel Damage**: This is the __ Weapon Damage__ modified by

__.__

*Barrel Modifiers***Travel Damage**: This is the __ Barrel Damage__ modified by

__and then__

*Crit Dmg*__.__

*Randomized***Damage Dealt**: This is the damage that a target receives from a damage dealer. It is __ Barrel Damage__ modified by

__.__

*Target Modifiers***Damage Taken**: This is how much damage the unit actually takes. It is the __ Damage Dealt__ minus the

__.__

*Damage Resistance*## Damage Calculation

The complete damage formula is:

**Damage Taken** = (([(((**Weapon Damage** + **Barrel Modifiers**) * **Crit Dmg**) * Randomization ) + **Target Modifiers**] - **Flat DR**) * (1 - **Percent DR**) + **Penetration**)

### Barrel Damage

Damage from the barrel is: **Weapon Damage** + **Barrel Modifiers** (e.g. ranger, alloy-jacketed rounds, holo, etc.). It is truncated after calculation.

**Barrel Damage** = ((**Weapon Damage** + **Barrel Modifiers**)

### Travel Damage

After it leaves the barrel and is travelling towards the target, **Crit Dmg** of anywhere from 1.0x to 2.0x damage is applied (there is a minimum boost that affects low damage crits) and then the damage is **Randomized**.

For all damage 1-9, the damage is randomized from -1 to +1, with an even chance of being -1, 0, or +1.

For all damage 10-19, the damage is randomized from -2 to +2, with an even chance of being -2, -1, 0, +1, or +2.

The same occurs for damage of 20-29, 30-39, etc.

The minimum damage is always at least 1.

The actual formula is:
`Randomized Damage = Max(1, Damage + Rand[1 + (2 * (1 + Damage / 10))] - (1 + Damage / 10))`

The randomization works in integer values so all values are constantly truncated (e.g. If x is 6 then x/10 = 0).

**Travel Damage** = (**Barrel Damage** * **Crit Dmg**) <-- Randomization

### Damage Dealt

Once it reaches the targets, **Target Modifiers** are applied (In this order: Shredder-> VPT -> CST -> Fragmentation -> Distortion). It is truncated after each calculation.

**Damage Dealt** = **Travel Damage** + **Target Modifiers**

### Damage Taken

Then **Damage Resistance (DR)** is calculated.

**Flat DR** is applied first, then **Percent DR**, then **Penetration**. It is truncated only after all **DR** has been removed from the **Damage Dealt**.

**Damage Taken** = (**Damage Dealt** - **Flat DR**) * (1 - **Percent DR**) + **Penetration**

## Exceptions

### Low Damage Crits

A special exception for critical hits, is that a crit with low **Barrel Damage** (1, 2, or 3 damage) will crit for at least 3, 4, or 5 damage, respectively. This is an artificial boost to ensure that even if a player rolls on the randomization, the crit is always at least as much as the max roll on a non-crit.

### Mins and Maxes

The **Damage Taken** cannot be reduced below 1 by **Damage Resistance (DR)**.

The **Damage Taken** can never go higher than the **Damage Dealt**.

For example, someone with a high amount of penetration could calculate finalDamage Takennumbers higher thanDamage Dealt, but this would be capped at the initialDamage Dealt.

**Randomization** will always set the damage to a minimum of 1.

### Truncation

All damage is stored in an integer form, thus it is always being truncated during each step. This means 5.6 becomes 5, 9.1 becomes 9, and 9.9 becomes 9.

The exception to this is that **Damage Resistance** is not truncated and is removed from damage after both **Flat DR** and **Percent DR** is calculated.

So **Damage Dealt** is truncated only after all **DR** is removed.

Having **DR** not truncated means that you can have non-integer forms of **DR** be effective.

Example: a 10 damage shot against a unit with 0.1 **Flat DR** will have a **Damage Taken** of 9. Having both **Flat DR** and **Percent DR** calculated as total DR before truncation means that minor amounts of both DR will not end up reducing DR by 2. Example: a 10 damage shot against a unit with 0.1 **Flat DR** and 1 **Percent DR** will have a **Damage Taken** of 9 (it would be 8 if the damage was truncated individually between **Flat DR** and **Percent DR**).

### Explosive Damage

Each unit damaged by explosive damage has the **Travel Damage** reduced based on distance from the center. Damage falls as half the square of the radius plus 0.5, down to 50% plus 0.5 at the periphery.

Note: The 0.5 damage is added on explosive fall-off to accommodate for truncation.

Explosive Travel Damage = 0.50 + Travel Damage * (1.0 - FMin[0.50, 0.50 * Square(Distance/Radius)])

## Example Calculations

### Mental In-Game Calculation

A soldier with a 3 damage assault carbine and ranger (+1 damage) fires at a drone who has 1 flat DR and 30% DR.

You'd expect it to do 4 damage (range 3-5), minus 1 flat DR down to 3 damage, minus 30% DR down to 2 damage.

### Detailed Calculation

A soldier with an **Assault Carbine** and the **Ranger** perk fires at a **Drone**

The **Assault Carbine** has 4 **Weapon Damage**, receives +1 damage as a **Barrel Modifier** from **Ranger**, and has no innate **Penetration**.

The **Drone** has 1 **Flat DR** and is **Hardened** (30 **Percent DR**).

The **Drone** is not **Shredded** and does not have **Distortion**. The soldier does not have **VPT** or **CST**, and **Fragmentation** does not apply to rifles, so there are no **Target Modifiers** to the damage.

The shot does not 'Crit' so **Crit Dmg** is 1.0 and the Randomization does not change the value.

**Damage Dealt** = (([(((**Weapon Damage** + **Barrel Modifiers**) * **Crit Dmg**) <-- Randomization ) + **Target Modifiers**] - **Flat DR**) * (1 - **Percent DR**) + **Penetration**)

**Damage Dealt** = ((((((4 + 1) * 1.0) <-- No Randomization Change) + 0 - 1) * (1 - 0.3) + 0) = 2.8 = 2 **Damage Taken**