Incap Headshot Bug
Summary
The 1-second damage-reduction window that fires when an enemy enters incap (the "overkill" / spillover protection that stops your trailing shots from finishing an enemy before you can execute) is inverted for headshots on most enemies. Instead of enemies taking less damage for the first second of the Incap state, a headshot during the first second of incap deals 1.6x damage compared to a headshot when that enemy is not Incapped. Body shots are correctly reduced to 0.4x, but a headshot with a bolt weapon, heavy bolter, melta, or las weapon lands at 0.4 x 4 = 1.6x enemy-side for that same first second.
So the mechanic meant to preserve your execute opportunity is exactly when a headshot punches hardest, and trailing headshots routinely overkill enemies out of incap and rob you of the execute (and the armor it returns).
This is a Patch 13 regression that has persisted through Patch 14. In Patch 13 the developers moved the headshot multiplier off the enemy (removing the enemy-side head bone bonus, head = 2 -> 1) and onto the weapons (headshotMult roughly doubled). The incap body-state rule kept its own private copy of the old head multiplier (head = 4) and was never updated, so it now over-recovers the incap damage reduction on any headshot.
Root Cause
Enemy-side headshot damage in this engine is damageTypeSensitivity(type) x damageBoneSensitivity(head), where the head bone factor only applies if the damage type is not in that rule's bone-ignore list. The head factor lives per damage-sensitivity rule, so the normal state (the default rule) and the incap window (the incap body-state rule) each carry their own head value.
Before Patch 13, the two were tuned to work together. In Patch 13 only one of them was updated:
Head bone factor | P12 | P13 | What happened |
|---|---|---|---|
Normal state ( |
| removed -> engine fallback | The whole |
Incap window ( |
|
| Left stale |
Incap type reduction ( |
|
| - |
The incap head = 4 was never a bug on its own. Paired with the old normal head = 2, it produced an incap headshot of 0.4 x 4 = 1.6x that sat below a normal-state headshot of 1.0 x 2 = 2.0x - so the incap window still reduced headshot damage, exactly as a protection window should. The instant the normal head dropped to 1.0, that relationship flipped:
Incap-vs-normal headshot ratio (base-rule enemy) | P12 | P13.1+ |
|---|---|---|
|
|
|
Effect of the incap window on a headshot | 0.8x - reduced (protection held) | 1.6x - amplified (inverted) |
The weapon multiplier is common to both states within a patch, so it cancels out of this ratio - the flip is purely the enemy-side migration. To have preserved the P12 behavior, the incap head should have been lowered to about 2.5 alongside the normal head (0.4 x 2.5 = 1.0, keeping incap headshots at or below normal). It was left at 4.
Where It Lives
Base rule: ssl/characters/ai_character/npc_server.cls, the incap entry under damageProcessor.damageSensitivityRules. A DamageSensitivityRuleBodyState keyed to the INCAP body state, priority = 1, autoDeactivationDelay = 1 (expires 1s after incap entry), useBoneSensScale = True.
incap = {
autoDeactivationDelay = 1
damageSensitivity = {
useBoneSensScale = True
damageTypeSensitivity = { # all reduced to 0.4x
dmg_type_bullet = 0.4, dmg_type_heavybullet = 0.4, dmg_type_melta = 0.4,
dmg_type_laser = 0.4, dmg_type_volkite = 0.4, dmg_type_volkite_exp = 0.4,
dmg_type_melee = 0.4, dmg_type_plasma = 0.4, dmg_type_charged_plasma = 0.4,
dmg_type_fire = 0.4, dmg_type_pyro = 0.4
}
damageBoneSensitivity = { head = 4 } # <-- the stale P12 value
damageTypesIngoreBoneSensitivity = [ # types that skip the 4x head
dmg_type_melee, dmg_type_melee_push, dmg_type_zombie_hit,
dmg_type_charged_plasma, dmg_type_plasma_contact, dmg_type_plasma,
dmg_type_gunstrike, dmg_type_electro, dmg_type_fire, dmg_type_pyro
]
}
}Six of the eleven reduced types are missing from the bone-ignore list, so a head hit multiplies them by 4 on top of the 0.4 reduction. (The field name really is misspelled Ingore in the data.)
The Math
For an enemy that inherits the base rule, during the first 1.0s of incap:
Damage type | Reduced by rule? | Ignores head bone? | Body-shot mult | Headshot mult |
|---|---|---|---|---|
| 0.4 | No | 0.4x | 1.6x |
| 0.4 | No | 0.4x | 1.6x |
| 0.4 | No | 0.4x | 1.6x (see melta note) |
| 0.4 | No | 0.4x | 1.6x |
| 0.4 | No | 0.4x | 1.6x |
| 0.4 | Yes | 0.4x | 0.4x |
| 0.4 | Yes | 0.4x | 0.4x |
| 0.4 | Yes | 0.4x | 0.4x |
| not in rule | n/a | full (default rule) | full |
The three enemy-independent facts that make this a bug (true for every base-rule enemy, regardless of that enemy's normal-state head softness):
A headshot removes 4x the incap HP that a body shot removes in the same window (
1.6xvs0.4x) - the head factor4more than cancels the0.4reduction.1.6xenemy-side is more than a completely unmitigated hit (1.0x), so the "protection" window is when these headshots hit hardest relative to the intended reduction.Plasma is the clean exception: it is in the bone-ignore list, so a plasma headshot stays at
0.4x. Plasma also ignores headshots normally (via the separate weapon-sidedamageTypesToIgnoreHeadshotModifiergate), so it behaves consistently. Same for gunstrike (execute/gunstrike finishes are lethal-by-design) and pyro.
Melta note. Melta is in the normal rule's bone-ignore list (melta never gets an enemy-side head bonus in normal play) but is absent from the incap rule's list, so it uniquely picks up the 4x head only during incap. This asymmetry predates P13 - it has been in the files since at least P12 - so melta's incap head bonus is a separate, older quirk rather than part of the P13.1 regression. It matters less in practice because melta has no weapon-side headshotMult, but the enemy-side bone factor still applies to a head-bone hit during the window.
Affected Enemies
The incap head factor is 4 for every enemy that inherits the base incap rule. Three bosses override it to 1 and are unaffected. The normal-state head column shows how soft each enemy's head is in the current build (context for how the window compares to that enemy's own normal headshot).
Enemy | Incap head | Normal head P12 -> P13.2 | Headshot in first 1s |
|---|---|---|---|
Termagant | 4 (base) | 8 -> 6 (still soft) | 1.6x - inverted vs body/unmitigated |
Tyranid Warrior (all 5 variants) | 4 (base) | 1.0 (base) | 1.6x - BUGGED |
Ravener | 4 (base) | 1.0 (base) | 1.6x - BUGGED |
Lictor | 4 (base) | 1.0 (base) | 1.6x - BUGGED |
Biovore | 4 (base) | 1.0 (base) | 1.6x - BUGGED |
Zoanthrope | 4 (base) | 1 -> 0.5 | 1.6x - BUGGED (well above its 0.5 normal head) |
Tzaangor (Spearman) | 4 (base) | 2.5 -> 1.5 | 1.6x - BUGGED |
Occult Terminator (Melee) | 4 (base) | 1.0 (base) | 1.6x - BUGGED |
Occult Terminator (Ranged) | 4 (base) | 1.5 -> removed (1.0) | 1.6x - BUGGED |
Chaos Spawn | 4 (base) | 1.0 (base) | 1.6x - BUGGED |
Lesser Sorcerer | 4 (base) | 2 -> removed (1.0) | 1.6x - BUGGED |
Helbrute | 1 (own override) | 1.2 -> removed (1.0) | 0.8x - correct |
Hive Tyrant | 1 (own override) | 1.3 -> removed (1.0) | 0.8x - correct |
Tyranid Prime | 1 (own override) | 1.3 -> removed (1.0) | 0.8x - correct |
Carnifex | override, no bone block | 1.5 -> removed (1.0) | ambiguous (see below) |
Neurothrope | override, no bone block | 1 -> removed (1.0) | ambiguous |
Rubric Marine / (Flamer) | override, no bone block | 1.0 (base) | ambiguous |
Source Files
ssl/characters/ai_character/npc_server.clsssl/damage/damagable/damage_processing/damage_sensitivity_rule_base.ssossl/damage/damagable/damage_processing/server_damage_processor.ssossl/weapons/creator/firearm_library_pve.ssossl/weapons/ui/ui_firearms_library.ssossl/damage/damagable/damage_processing/damage_attribute_modifier.ssodamageTypesToIgnoreHeadshotModifierssl/characters/chaos/npc_helbrute_server.clsssl/characters/tyranids/hive_tyrant/npc_hive_tyrant_server.clsssl/characters/tyranids/tyranid_prime/npc_tyranid_prime_server.clsssl/characters/tyranids/carnifex/npc_carnifex_server.clsssl/characters/tyranids/npc_neurothrope_server.clsssl/characters/chaos/npc_rubric_marine_server.clsssl/characters/tyranids/npc_termagant_server.clsssl/characters/tyranids/npc_zoanthrope_server.clsssl/characters/chaos/tzaangor_spearman/npc_tzaangor_spearman_server.cls