Incorrect DPS Shown for Single-Shot Primaries (Doorman, Paige) Due to Stray m_flIntraBurstCycleTime

mywip

New member

TL;DR

  • In-game weapon DPS tooltips for Doorman and Paige are too low.
  • Community wiki values are too low in the same way (they match the tooltip).
  • Actual DPS measured in the client with hud_damagemeter is higher, and matches a model that does not apply m_flIntraBurstCycleTime when m_iBurstShotCount == 1.
  • Root cause is likely a DPS/BPS display path that computes the shot period as m_flIntraBurstCycleTime + m_flCycleTime even when there is only one bullet per trigger.

What the data shows

Relevant fields from WeaponInfo in shipped vdata:
citadel_weapon_doorman_set (Doorman primary):

  • m_iBurstShotCount: 1
  • m_flCycleTime: 0.63 s
  • m_flIntraBurstCycleTime: 0.05 s
  • m_flBulletDamage: 29.26
citadel_weapon_bookworm_set2 (Paige primary):
  • m_iBurstShotCount: 1
  • m_flCycleTime: 0.5 s
  • m_flIntraBurstCycleTime: 0.1 s
  • m_flBulletDamage: 35.0
Both weapons are single shot per trigger (m_iBurstShotCount == 1), yet both carry a non-zero m_flIntraBurstCycleTime. With only one bullet per shot, there is no “between-bullets” gap for that value to represent; the time between shots is just m_flCycleTime.

How the three numbers line up

Using base bullet damage, no falloff, no headshot, no reload.

Suspected incorrect single shot model (matches in-game tooltip + wiki):


period = m_flIntraBurstCycleTime + m_flCycleTime
BPS = 1 / period
DPS = m_flBulletDamage * BPS

Corrected single shot model (matches hud_damagemeter primary DPS on a practice dummy):

period = m_flCycleTime
BPS = 1 / period
DPS = m_flBulletDamage * BPS

HeroPeriod (wrong)Period (right)BPS (wrong)BPS (right)DPS (wrong, ~ tooltip + wiki)DPS (right, ~ hud_damagemeter)Delta
Doorman0.05 + 0.63 = 0.68 s0.63 s~ 1.47~ 1.59~ 43.0 DPS~ 46.4 DPS+3.4 DPS (~+7.9%)
Paige0.10 + 0.50 = 0.60 s0.50 s~ 1.672.00~ 58.3 DPS70.0 DPS+11.7 DPS (~+20%)

So the tooltip/wiki value is strictly below the value you get from actually firing into a dummy in the client.

Repro

  1. Enter Sandbox and pick Doorman (or Paige).
    • No Reload
    • No Death
  2. Note the weapon DPS and Bullets per sec shown in the in-game tooltip and on the Deadlock wiki. Confirm they agree.
  3. In the console, run hud_damagemeter 1
  4. Fire the primary continuously into a practice dummy at point-blank, body shots, no items, no boons
  5. Compare measured DPS from hud_damagemeter to the tooltip/wiki number.
Expected: all three values agree.
Observed: tooltip = wiki < measured.


Suspected fix

The display path for weapon DPS is likely treating the shot period as:

period = m_flIntraBurstCycleTime + m_flCycleTime

for every weapon, including those with m_iBurstShotCount == 1. Intra-burst time is only meaningful between bullets inside a burst; when the burst is one bullet long, it should be ignored:

period = (m_iBurstShotCount > 1)
? m_iBurstShotCount * m_flIntraBurstCycleTime + m_flCycleTime
: m_flCycleTime

Or sanitize vdata so m_flIntraBurstCycleTime = 0 whenever m_iBurstShotCount == 1

Scope

At the moment, Doorman and Paige — though it will affect any future primary where m_iBurstShotCount == 1 and m_flIntraBurstCycleTime > 0.
 
Last edited:
Sorry, this seems to be a duplicate of this:


Please close!
 
Back
Top