← Random Pyre Weapons vs Heldrake Open Calculator →

Pyre Weapons vs Heldrake

Author:IncognitoIncognito

The Problem

During the Heldrake's vulnerability windows (the 6-second fire phase and the 6-second stun phase when the wing shield drops) the Pyreblaster (23m cap) and Pyrecannon Heavy Stance (20m cap) range to where the Heldrake is positioned. We also know that at least some part of the Heldrake's hitbox sits inside 20m because the Power Fist's charged-heavy attacks with the Tide of Battle perk (PveMeleePowerFistHeavyStrikesDistanceIncreased) extend the cone damager from 10m to 20m and land clean, visible damage in those same windows. So damageable geometry is reachable from the player position. Yet pyre weapons still do zero damage.

Players assume the Heldrake has hidden pyre resistance. He doesn't, in any direct sense. dmg_type_pyro is not listed in his damage sensitivity rules and defaults to 1.0, the same as bullets. The reason pyre fails is two completely separate problems, one per damage type the weapon delivers:

  1. Direct damage (per-projectile pyro hit damage) is wasted by an interaction between the cone of flame projectiles and the Heldrake's hitbox geometry - either because pyre projectiles only reach the wings (the wings extend further out toward the player than the body / head do), or because the wings absorb projectiles before they can reach further-back bones, or some mix of both. Either way, the damage that does land all lands on bones with 0x sensitivity.

  2. Damage over time (the on-fire status that triggers from heat buildup) is rejected outright by an explicit allowlist on the Heldrake that doesn't include the burn status.

These are independent, and they have different origins.

Why Direct Damage Doesn't Work

How pyre flames actually deliver damage

This is more mechanical than people assume. There is no pulse, no spray, no "flame zone" damage shape. From firearm_library_pve.sso:16349 (Pyreblaster) and :16696 (Pyrecannon) plus firearm_describer.sso:662 (pyroblaster_projectile):

  • Each hold of the trigger fires 450 "flame" projectiles per minute, or 7.5 projectiles per second.

  • Each projectile is a small sphere with collision radius nonStaticCdtRadius = 0.8m and travels straight forward at bulletSpeed = 30 m/s, with gravity = 0 and zero acceleration.

  • Each projectile registers a single-bone hit per enemy on contact via the pyroblaster_hit_plr damager (dmg_type_pyro, dmg_point damage type). Hit detection is per-projectile, per-enemy: the projectile resolves against the first bone collider it touches and applies damage to that bone alone.

So the first part of an enemies body that the flame's damage cone collides with is where the damage registers, and will determine the sensitivity applied to the damage of the projectile when determining how much of that damage is absorbed to the enemies health.

The Heldrake's wing bones are 0x sensitivity

All six wing bones have 0x damage multiplier. The bone multiplier is applied multiplicatively to incoming damage. Anything hitting a wing bone deals zero damage regardless of damage type.

This zero-out is present in two of the Heldrake's three damage sensitivity rules: the default rule (active during stun) and the AttackFlag = True rule (active during the 6s fire window). Both vulnerability windows that pyre weapons could theoretically exploit have the wing-bone immunity active.

The cone meets the wings

The Heldrake's wings dominate his frontal silhouette even when the shield is technically "down" during the fire and stun windows - they fall back and to the sides, but the wing bone colliders remain in the model and extend further out toward the player than the body / head do. We don't know the exact placement of every bone collider relative to the player's firing position in the boss arena, but we can bracket the situation from what we do know:

  • Tide of Battle Power Fist (20m cone) lands clean damage on the Heldrake during vulnerability windows. So some damageable part of the Heldrake's hitbox is within 20m.

  • Power Fist cone hits don't care which bone they land on (isBoneSelectionEnabled = False, see the Power Fist section below). So the part of the hitbox that's within 20m could be a wing bone, a body bone, or any combination - we can't tell which from the fact that the strike connects.

  • Pyreblaster reaches 23m and Pyrecannon Heavy Stance reaches 20m, but pyre projectiles use bone-selecting hit detection, so we can only confirm that something with a collider is within 23m. We can't confirm whether any non-wing bone is within that radius.

So the actual mechanism is one of two scenarios, and the data alone doesn't let us cleanly distinguish:

  • Scenario A: Body and head bones are out of reach. The wings are the only Heldrake colliders inside 23m, so every pyre projectile that connects connects with a wing.

  • Scenario B: Body and head bones are in reach, but the wings physically sit between the player and those further-back bones, so projectiles intercept on a wing collider first and resolve there.

Either scenario produces the same observable outcome via the same damage math:

  1. Player fires pyre weapon during a vulnerability window, aiming at the Heldrake.

  2. ~7.5 single projectiles per second leave the muzzle.

  3. Every projectile that connects with the Heldrake at all connects with a wing bone collider.

  4. Each wing-bone hit registers as: damage type 1.0x (no pyro resistance) × bone sensitivity 0x = 0 damage.

The conclusion to take away: the Heldrake is not technically immune to dmg_type_pyro, the damage type itself is unresisted (1.0x). But the Heldrake's geometry plus the way pyre weapons deliver their damage interact such that the only bones pyre projectiles can land on, in practice, are the 0x wing bones. Pyre's direct damage isn't being resisted; it's being eaten by hitbox geometry that's specifically immune.

Damage Over Time: Why the Heldrake Never Catches Fire

Pyre weapons deliver a second damage layer alongside the per-projectile direct hit: a BURNING side effect (value = 10 for Pyreblaster and Pyrecannon Heavy Stance, value = 12 for Pyrecannon hipfire). When a pyre projectile lands on an enemy, the BURNING side effect tries to add that flat heat amount to the enemy's HeatUntilBurning energy pool. Once the pool fills past the per-class threshold, the engine swaps the pool out for the actual Burning status effect: the on-fire DoT.

The DoT itself (pyroblaster_burning_damager) deals damageAmount = 5 of dmg_type_pyro per tick (scales with difficulty). Side effect application is independent of damage sensitivity - the DamageSideEffect schema is just {type, value}, with no multiplier and no gating on damage being non-zero - so the BURNING heat would apply on every pyre projectile that connects with the Heldrake regardless of which bone it touched (wings included). Heat would accumulate, the Heldrake would ignite at 100 heat, and the burn DoT would tick on him - if any of that were allowed to happen.

It isn't, because of an explicit gate at the status-effect application stage. The Heldrake provides his own vulnerableTo array. The vulnerableTo array form is restrictive: it replaces the inherited matrix entirely, and the only status effects that can be applied to the actor are the ones explicitly on the list. The Heldrake's list contains exactly three entries:

  • AuspexMark (the auspex scan debuff)

  • DamageSensivityDebuff (the generic damage-sensitivity debuff applied by various perks and ally abilities),

  • UltramarDamage (the Ultramar Banner buff trigger).

    Everything else is blocked.

When a pyre projectile lands and tries to apply its BURNING side effect, the engine routes through the HeatSideEffectHitReaction. The application stage checks the target's vulnerability = "HeatUntilBurning" flag. The Heldrake's restrictive allowlist doesn't include HeatUntilBurning, so the application is silently rejected. No heat ever lands on the Heldrake from any source - not from wing hits, not from body hits, not from sustained fire of any duration. The pool never fills, the Burning status never triggers, and the on-fire DoT never starts. Pyre's second damage layer is gated off entirely.

Why Power Fist and Melta Bomb Can Deal Damage

The Power Fist's charged-heavy attacks - Thrust Jab and Backfist - and the Melta Bomb all reach the Heldrake at boss-arena distances and land real damage during his vulnerability windows. The reason is the same in all three cases: these attacks don't pick a bone. They check whether the attack volume overlaps the enemy's hitbox, and if it does, damage applies based on the enemy's damage-type sensitivity alone - bone sensitivity is never consulted, so the wing 0x doesn't enter the math.

There are two ways the engine resolves a hit against an enemy:

  • Bone-selecting: The hit connects with a specific bone (head, torso, wing, etc.) and applies that bone's sensitivity multiplier on top of the damage-type multiplier. This is what most ranged projectiles, including pyre projectiles, do (dmg_point damage with bone selection enabled by default). On the Heldrake, this is what makes the wing 0x bones reachable but ineffective.

  • Actor-collider: The hit ignores the bone hierarchy and applies damage to the actor as a whole, using its melee collider (a single capsule/box around the entire enemy). Bone sensitivities never apply because no specific bone is being chosen. Damage uses only the enemy's type sensitivity, default sensitivity, and any active body-state rules. This is what Powerfist's charged attacks (Thrust Jab, Backfist, etc) and Melta Bomb do.

In both modes, the enemy's damage-type sensitivity (e.g. dmg_type_explosive = 0.45x on the Heldrake) and default sensitivity still apply - so an actor-collider hit isn't immune to resistances, it's just immune to bone-sensitivity filtering. As long as the attack's volume overlaps the enemy hitbox, the hit registers and damage is applied based on type/default sensitivity. The wing 0x trap never enters the calculation.

Game Files

  • {SERVER}/ssl/characters/chaos/npc_heldrake_server.cls

  • {SERVER}/ssl/characters/ai_character/npc_server.cls

  • {CLIENT}/ssl/weapons/creator/firearm_library_pve.sso

  • {CLIENT}/ssl/weapons/creator/firearm_describer.sso

  • {SERVER}/ssl/damage/damager/damager_descriptions_library.sso

  • {SERVER}/ssl/status_effects/status_effect_descriptions/status_effects.sso

  • {SERVER}/ssl/weapons/melee/weapon_descriptions/melee_weapon_descs/melee_power_fist_desc.sso

  • {SERVER}/ssl/weapons/throwable/melta_charge/melta_charge_server.cls

  • scripts/extract_ranged_weapons.py

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