How weapon damage is resolved
A hit in Helldivers 2 is not resolved from a single damage number. The game builds a damage packet from the weapon and the part that was hit, blends normal and durable damage, selects penetration from impact angle, and then evaluates that packet against the target's armor.
- Status
- Confirmed in current-build code
- Build examined
- game.dll SHA-256 1e2d062d…cdfbc
- Evidence
- Static mapping + runtime validation
Normal damage and durable damage are stored separately.
The selected lane depends on the impact angle.
The current build scans these thresholds during penetration selection.
The pipeline
What happens when a projectile hits
- 01
Read weapon damage data
The weapon's damage information contains separate normal and durable damage values plus four penetration-lane values.
- 02
Read the hit zone
The selected damageable zone contributes its armor value and durability fraction to the runtime damage packet.
- 03
Blend normal and durable damage
The common packet builder combines the two weapon damage values using the hit zone's durability fraction, then stores the blended result in the packet before penetration scaling.
- 04
Select penetration from impact angle
A dedicated helper derives the impact angle from packet vectors, checks the authored angle thresholds, and selects one of the weapon's four penetration lanes.
- 05
Evaluate the packet
The damage dispatcher routes the packet to the appropriate evaluator, where penetration and target armor participate in the final damage result.
Durable damage
The target part changes which damage value matters
Weapons carry both normal damage and durable damage. Damageable zones carry a durability fraction. The packet builder uses that fraction to produce a durability-weighted damage value before the armor and penetration stage.
This is why the headline damage number alone cannot tell you how much damage a weapon will deal to every enemy part. Two weapons with similar normal damage can perform very differently against highly durable zones.
Armor penetration
Penetration is not necessarily one fixed weapon value
Four penetration lanes are present in DamageInfo.
The current-build impact helper selects among those lanes using impact angle. Both mapped angle-threshold paths use authored values of 25°, 60°, 80°, and 90°.
This matters because an oblique hit can enter damage evaluation with a different penetration value than a more direct hit from the same weapon. The public-facing weapon AP value is therefore not enough to describe every impact without also understanding which lane is selected.
These marks show the confirmed authored thresholds. This page deliberately does not assign player-facing names to each lane until that mapping is documented to the same standard.
Evidence
What is directly confirmed
| Finding | Evidence | Status |
|---|---|---|
| Normal and durable damage are separate DamageInfo fields. | Structure mapping backed by recorder/code evidence. | Code confirmed |
| Damageable zones expose armor and a durability fraction. | Mapped fields consumed by the runtime packet builder/evaluator. | Code confirmed |
| The packet builder stores a durability-weighted blended damage value. | Common builder path before evaluator penetration scaling. | Code confirmed |
| DamageInfo contains four penetration lanes. | Four mapped u32 fields selected by the impact-angle helper. | Code confirmed |
| Penetration selection uses 25/60/80/90-degree authored thresholds. | Current-build code plus decoded threshold data. | Code confirmed |
| Exact player-facing meaning of every lane/threshold pairing. | Not asserted on this page without an equally strong mapping. | Unresolved |
Technical reference
Current-build anchors
These are included so the public explanation remains traceable without forcing every reader through the reverse-engineering details.
game.dll + 0x00FFB680game.dll + 0x00FFCAF0+0x04 · i32+0x08 · i32+0xCC · f32+0xD8 · u32