← Random Incap Headshot Bug

Incap Headshot Bug

Author:IncognitoIncognito

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 (default rule)

head = 2

removed -> engine fallback 1.0

The whole damageBoneSensitivity block was deleted from the base default rule

Incap window (incap rule, first 1s)

head = 4

head = 4 (unchanged)

Left stale

Incap type reduction (dmg_type_bullet)

0.4

0.4 (unchanged)

-

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+

(incap head x incap reduction) / (normal head x 1.0)

(4 x 0.4) / (2 x 1.0) = 0.8

(4 x 0.4) / (1 x 1.0) = 1.6

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

dmg_type_bullet (bolters, pistols, carbines)

0.4

No

0.4x

1.6x

dmg_type_heavybullet (heavy bolters)

0.4

No

0.4x

1.6x

dmg_type_melta (melta rifle, multi-melta, heavy meltagun)

0.4

No

0.4x

1.6x (see melta note)

dmg_type_laser (Las Fusil / las weapons)

0.4

No

0.4x

1.6x

dmg_type_volkite / dmg_type_volkite_exp

0.4

No

0.4x

1.6x

dmg_type_plasma / dmg_type_charged_plasma

0.4

Yes

0.4x

0.4x

dmg_type_melee

0.4

Yes

0.4x

0.4x

dmg_type_pyro (flamers)

0.4

Yes

0.4x

0.4x

dmg_type_explosive, dmg_type_gunstrike, dmg_type_redirect, dmg_type_player_perk

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.6x vs 0.4x) - the head factor 4 more than cancels the 0.4 reduction.

  • 1.6x enemy-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-side damageTypesToIgnoreHeadshotModifier gate), 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.cls

  • ssl/damage/damagable/damage_processing/damage_sensitivity_rule_base.sso

  • ssl/damage/damagable/damage_processing/server_damage_processor.sso

  • ssl/weapons/creator/firearm_library_pve.sso

  • ssl/weapons/ui/ui_firearms_library.sso

  • ssl/damage/damagable/damage_processing/damage_attribute_modifier.sso

  • damageTypesToIgnoreHeadshotModifier

  • ssl/characters/chaos/npc_helbrute_server.cls

  • ssl/characters/tyranids/hive_tyrant/npc_hive_tyrant_server.cls

  • ssl/characters/tyranids/tyranid_prime/npc_tyranid_prime_server.cls

  • ssl/characters/tyranids/carnifex/npc_carnifex_server.cls

  • ssl/characters/tyranids/npc_neurothrope_server.cls

  • ssl/characters/chaos/npc_rubric_marine_server.cls

  • ssl/characters/tyranids/npc_termagant_server.cls

  • ssl/characters/tyranids/npc_zoanthrope_server.cls

  • ssl/characters/chaos/tzaangor_spearman/npc_tzaangor_spearman_server.cls

SM2 Melee Calculator Calculate exact damage for any weapon, variant, and perk combination against any enemy on any difficulty.
Open Calculator →