DLTimes field guide / Beyond the economy

Deadlock mechanics.
Card by card.

Damage, defenses, items, movement and the world around you. The non-economy systems in our collected research, explained one piece at a time.

Try the charts & mini-simulators →

12 chapters64 cards

64 of 64 cards · Choose a chapter or browse below.

Try the numbers / 23 mini-simulators

Small inputs. Clear curves.

Use one to three fields. Bonus fields also accept individual contributions such as 40 + 60. Read the result on the left and the curve on the right. The dot marks your inputs; the other inputs stay fixed along each curve.

+100% weapon damage → buy +80% → 40% more damage

In the same build-6698 weapon-increase pool, you move from 2× to 2.8× base damage: 2.8 ÷ 2 − 1 = 40%. You still gained 80 percentage points of bonus—not a hidden penalty. Keep the other damage group fixed and exclude post-scale flat damage. Adding 80 raw damage to a 100-damage shot is a different question: that is an 80% increase.

Read the label. Build 6698 rules are bounded executable reconstructions, not live gameplay tests or complete builds. Enter only active contributions; do not add consumed components again. Arithmetic models, Rift rules and September settings are labeled separately. Input ranges are calculator limits, not game caps unless a cap is explicitly stated.

Showing 23 of 23 charts.

Build 6698 rule

More weapon damage

The same extra damage bonus is a smaller percentage of a larger existing total. Its absolute contribution has not disappeared.

One value or individual contributions, e.g. 40 + 60. Adds in this pool. Total: 100%.

One value or individual contributions, e.g. 40 + 60. Adds in this pool. Total: 80%.

40 %more damage than before+100% → +180% total bonus. 2× → 2.8× the base.
Relative improvement (%)
More weapon damage: Relative improvement (%) against Existing bonus (%)The curve varies Existing bonus (%), keeping the other inputs fixed. Selected point: 100 → 40 %. Build 6698: eligible nonnegative weapon increases in the same pool. Base and later multiplier group stay fixed; no post-scale flat damage, range/NPC bonuses or inherited stats.0204060800100200300400Existing bonus (%)

Your inputs: 100 → 40 %

Build 6698: eligible nonnegative weapon increases in the same pool. Base and later multiplier group stay fixed; no post-scale flat damage, range/NPC bonuses or inherited stats.

Show the math

Relative gain = added bonus ÷ (100 + existing bonus) × 100%

Build 6698 rule

More fire rate

The same extra firing cycles per second bonus is a smaller percentage of a larger existing total. Its absolute contribution has not disappeared.

One value or individual contributions, e.g. 40 + 60. Adds in this pool. Total: 50%.

One value or individual contributions, e.g. 40 + 60. Adds in this pool. Total: 25%.

16.67 %more firing cycles per second than before+50% → +75% total bonus. 1.5× → 1.75× the base.
Relative improvement (%)
More fire rate: Relative improvement (%) against Existing bonus (%)The curve varies Existing bonus (%), keeping the other inputs fixed. Selected point: 50 → 16.67 %. Build 6698: positive fire-rate bonuses, no slows, cycle-percentage modifier or time scaling. Plain firing cycles only; burst spacing, reloads and sustained DPS are separate.07.51522.5300100200300400Existing bonus (%)

Your inputs: 50 → 16.67 %

Build 6698: positive fire-rate bonuses, no slows, cycle-percentage modifier or time scaling. Plain firing cycles only; burst spacing, reloads and sustained DPS are separate.

Show the math

Relative gain = added bonus ÷ (100 + existing bonus) × 100%

Build 6698 rule

Two weapon-damage groups

Weapon increases add together. All-damage and bullet-damage multipliers add in a later group; the two groups multiply each other.

One value or individual contributions, e.g. 40 + 60. Adds in this pool. Total: 60%.

One value or individual contributions, e.g. 40 + 60. Adds in this pool. Total: 30%.

208 damagebefore target processing100 × 1.6 × 1.3. Contributions add within each group, not across both.
Damage before mitigation
Two weapon-damage groups: Damage before mitigation against Increase group total (%)The curve varies Increase group total (%), keeping the other inputs fixed. Selected point: 60 → 208. Ordinary nonnegative build-6698 branch. Base includes level damage; excludes post-scale flat damage, inherited stats, range/NPC conditions, critical hits and mitigation. Enter active contributions only, never consumed components twice.0150300450600075150225300Increase group total (%)

Your inputs: 60 → 208

Ordinary nonnegative build-6698 branch. Base includes level damage; excludes post-scale flat damage, inherited stats, range/NPC conditions, critical hits and mitigation. Enter active contributions only, never consumed components twice.

Show the math

Damage = base × (1 + increase total / 100) × (1 + later multiplier total / 100)

Build 6698 rule

Fire-rate bonuses and slows

Slows combine through remaining fractions, then subtract from additive bonuses. A negative fire-rate stat uses a different interval formula.

One value or individual contributions, e.g. 40 + 60. Adds in this pool. Total: 0%.

One value or individual contributions, e.g. 30 + 20. Combines remaining fractions, not a sum. Total: 50%.

0.67 ×the baseline firing cycle rateNet stat -50%; interval 1.5× base. −50 means 1.5× interval, not half speed.
Firing cycle rate / base
Fire-rate bonuses and slows: Firing cycle rate / base against Fire-rate bonus total (%)The curve varies Fire-rate bonus total (%), keeping the other inputs fixed. Selected point: 0 → 0.67 ×. Build 6698 normal state, default minimum stat −50, no inherited stats, cycle-percentage modifier or time scaling. The minimum is configurable; this is not a sustained-DPS simulation.00.751.52.253050100150200Fire-rate bonus total (%)

Your inputs: 0 → 0.67 ×

Build 6698 normal state, default minimum stat −50, no inherited stats, cycle-percentage modifier or time scaling. The minimum is configurable; this is not a sustained-DPS simulation.

Show the math

q = max(−50, bonuses − combined slow); interval = 1/(1+q/100) if q>0, otherwise 1−q/100

Arithmetic model

Linear Spirit scaling

See how a base value and a Spirit coefficient contribute to one ability property.

180 damagebefore target mitigation100 base + 80 from Spirit. 80% above the base.
Damage before mitigation
Linear Spirit scaling: Damage before mitigation against Spirit PowerThe curve varies Spirit Power, keeping the other inputs fixed. Selected point: 100 → 180. Only for a property known to scale linearly. This does not infer a formula from an unresolved scale-function name.0100200300400075150225300Spirit Power

Your inputs: 100 → 180

Only for a property known to scale linearly. This does not infer a formula from an unresolved scale-function name.

Show the math

Value = base value + coefficient × Spirit Power

Arithmetic model

Reloading lowers sustained DPS

A high firing DPS is not your long-run DPS when part of each cycle is spent reloading.

71.43 DPSover repeated clips7s per cycle; 71.43% of time spent firing.
Sustained DPS
Reloading lowers sustained DPS: Sustained DPS against Firing time per clip (s)The curve varies Firing time per clip (s), keeping the other inputs fixed. Selected point: 5 → 71.43. Continuous fire then reload; constant firing DPS. No misses, burst ramp-up, procs or animation overlap.02550751000.15.0710.0515.0220Firing time per clip (s)

Your inputs: 5 → 71.43

Continuous fire then reload; constant firing DPS. No misses, burst ramp-up, procs or animation overlap.

Show the math

Sustained DPS = firing DPS × firing time ÷ (firing time + reload time)

Arithmetic model

Whole ticks, not partial ticks

A little extra duration only adds damage when it reaches another complete tick.

100 damagefrom complete ticks5 ticks × 20 damage. No fractional final tick.
Total damage before mitigation
Whole ticks, not partial ticks: Total damage before mitigation against Effect duration (s)The curve varies Effect duration (s), keeping the other inputs fixed. Selected point: 5 → 100. First tick after one interval; a tick exactly at the end is included. Real effects can have different first-tick and expiry rules.075150225300036912Effect duration (s)

Your inputs: 5 → 100

First tick after one interval; a tick exactly at the end is included. Real effects can have different first-tick and expiry rules.

Show the math

Total = damage per tick × floor(duration ÷ interval)

Historical model

Fractional damage can accumulate

Small fractions can eventually become a whole point of health lost instead of being discarded on every hit.

1 HPremoved after these hits0.2 damage retained as a fractional remainder.
Integer health removed
Fractional damage can accumulate: Integer health removed against Number of hitsThe curve varies Number of hits, keeping the other inputs fixed. Selected point: 3 → 1. Earlier-build float32 carry illustration, starting at zero carry. Positive processed damage only; not September runtime validation.0246805101520Number of hits

Your inputs: 3 → 1

Earlier-build float32 carry illustration, starting at zero carry. Positive processed damage only; not September runtime validation.

Show the math

Each hit: apply whole damage, retain fraction, carry one point when remainder ≥ 1

Arithmetic model

More health on a bigger health pool

A flat health bonus adds the same HP, but becomes a smaller relative increase as your current health pool grows.

25 %more maximum health1,000 → 1,250 HP. The extra 250 HP is unchanged.
Relative health gain (%)
More health on a bigger health pool: Relative health gain (%) against Current maximum health (HP)The curve varies Current maximum health (HP), keeping the other inputs fixed. Selected point: 1,000 → 25 %. Enter the actual HP added after any scaling. No resistance, barriers, healing or percentage-health interactions.0751502253001001,0752,0503,0254,000Current maximum health (HP)

Your inputs: 1,000 → 25 %

Enter the actual HP added after any scaling. No resistance, barriers, healing or percentage-health interactions.

Show the math

Relative gain = extra health ÷ current maximum health × 100%

Build 6698 rule

Damage after a final resistance

Compare the resistance stage for the same Bullet or Spirit hit. Negative resistance increases its damage.

60 damageafter the resistance stage70 → 60 damage: 14.29% less than before.
Damage after resistance
Damage after a final resistance: Damage after resistance against Final resistance (%)The curve varies Final resistance (%), keeping the other inputs fixed. Selected point: 40 → 60. Build 6698 ordinary resistance stage: enter final resistance, not individual item values. No amplification, other reduction, absorption, bypass or special states. This is processed damage, before integer health rounding.050100150200-100-55-103580Final resistance (%)

Your inputs: 40 → 60

Build 6698 ordinary resistance stage: enter final resistance, not individual item values. No amplification, other reduction, absorption, bypass or special states. This is processed damage, before integer health rounding.

Show the math

Damage after resistance = max(0, incoming hit × (1 − final resistance ÷ 100))

Arithmetic model

Resistance and effective health

Effective health measures how much raw damage one health pool can withstand against one damage category.

1,666.67 EHPagainst this damage category1,428.57 → 1,666.67 EHP; 16.67% change.
Effective health (raw damage)
Resistance and effective health: Effective health (raw damage) against Final resistance (%)The curve varies Final resistance (%), keeping the other inputs fixed. Selected point: 40 → 1,666.67. Derived from the build-6698 ordinary resistance multiplier. No mixed damage, healing, barriers, other reductions, bypass or invulnerability; a continuous estimate, not exact integer health loss.01,5003,0004,5006,000-100-55-103580Final resistance (%)

Your inputs: 40 → 1,666.67

Derived from the build-6698 ordinary resistance multiplier. No mixed damage, healing, barriers, other reductions, bypass or invulnerability; a continuous estimate, not exact integer health loss.

Show the math

Effective health = health ÷ (1 − final resistance ÷ 100)

Build 6698 rule

Combining resistance sources

A new resistance contribution applies to the unprotected fraction. 30% and 20% combine to 44%, not 50%.

One value or individual contributions, e.g. 30 + 20. Combines remaining fractions, not a sum. Total: 30%.

One value or individual contributions, e.g. 30 + 20. Combines remaining fractions, not a sum. Total: 20%.

44 %combined in this model+14 percentage points, but still 20% less of the remaining amount.
Extra percentage points
Combining resistance sources: Extra percentage points against Current resistance pool (%)The curve varies Current resistance pool (%), keeping the other inputs fixed. Selected point: 30 → 14 pp. Build 6698 Bullet/Spirit positive resistance pool, zero innate/inherited stats, no reduction or NPC branch. Not a universal anti-heal or cooldown rule; each contribution must actually be active.05101520022.54567.590Current resistance pool (%)

Your inputs: 30 → 14 pp

Build 6698 Bullet/Spirit positive resistance pool, zero innate/inherited stats, no reduction or NPC branch. Not a universal anti-heal or cooldown rule; each contribution must actually be active.

Show the math

Combined = 100 × [1 − (1 − current ÷ 100) × (1 − added ÷ 100)]

Build 6698 rule

Resistance versus resistance reduction

Combine resistance sources in one pool and reduction magnitudes in another, then subtract the pools. Do not make one mixed-sign product.

One value or individual contributions, e.g. 30 + 20. Combines remaining fractions, not a sum. Total: 44%.

One value or individual contributions, e.g. 30 + 20. Combines remaining fractions, not a sum. Total: 28%.

16 %net resistance44% resistance − 28% reduction. 100 incoming → 84 damage after resistance.
Damage after resistance
Resistance versus resistance reduction: Damage after resistance against Resistance pool (%)The curve varies Resistance pool (%), keeping the other inputs fixed. Selected point: 44 → 84. Build 6698 Bullet/Spirit path, zero innate/inherited stats and no NPC branch. Eligible contributions only; no absorption, amplification, other reductions, bypass or special states. Result precedes integer health rounding.0501001502000255075100Resistance pool (%)

Your inputs: 44 → 84

Build 6698 Bullet/Spirit path, zero innate/inherited stats and no NPC branch. Eligible contributions only; no absorption, amplification, other reductions, bypass or special states. Result precedes integer health rounding.

Show the math

Each pool = 100 × [1 − product(1 − contribution/100)]; net resistance = resistance pool − reduction pool; damage = hit × (1 − net/100)

Arithmetic model

Healing and healing reduction

Keep the size of the base heal separate from the final amplification and reduction applied to it.

312 HPbefore the missing-health cap480 before reduction; 35% of that amount removed.
Healing before health cap (HP)
Healing and healing reduction: Healing before health cap (HP) against Final healing reduction (%)The curve varies Final healing reduction (%), keeping the other inputs fixed. Selected point: 35 → 312. Illustrates the two supplied final multipliers. Does not establish real healing-channel eligibility, modifier stacking or health-cap behavior.01252503755000255075100Final healing reduction (%)

Your inputs: 35 → 312

Illustrates the two supplied final multipliers. Does not establish real healing-channel eligibility, modifier stacking or health-cap behavior.

Show the math

Heal = base × (1 + bonus ÷ 100) × (1 − reduction ÷ 100)

September settings

Restorative Locket's base heal

The captured definition has 16 healing per stack and a maximum of 25 stacks.

160 HPunmodified healing10 × 16 HP; maximum base heal is 400 HP at 25 stacks.
Unmodified healing (HP)
Restorative Locket's base heal: Unmodified healing (HP) against Stored stacksThe curve varies Stored stacks, keeping the other inputs fixed. Selected point: 10 → 160. Builds 6697/6698 configuration. Base arithmetic only: no healing modifiers, missing-health cap or charge-earning simulation.010020030040006.2512.518.7525Stored stacks

Your inputs: 10 → 160

Builds 6697/6698 configuration. Base arithmetic only: no healing modifiers, missing-health cap or charge-earning simulation.

Show the math

Base heal = 16 × stored stacks; stored stacks ≤ 25

Arithmetic model

Shorter cooldowns, more uses

A percentage cut in seconds and a percentage increase in long-run cast frequency are not the same number.

21 sbetween uses in this model24s → 21s. Long-run use rate changes by 14.29%.
Cooldown (seconds)
Shorter cooldowns, more uses: Cooldown (seconds) against Final cooldown reduction (%)The curve varies Final cooldown reduction (%), keeping the other inputs fixed. Selected point: 30 → 21 s. Enter final reduction values. Assumes base × (1 − reduction), immediate recasting and no cast/channel time; not an item-stacking formula.07.51522.530020406080Final cooldown reduction (%)

Your inputs: 30 → 21 s

Enter final reduction values. Assumes base × (1 − reduction), immediate recasting and no cast/channel time; not an item-stacking formula.

Show the math

Cooldown = base × (1 − reduction ÷ 100); use rate ∝ 1 ÷ cooldown

Arithmetic model

Ability duration

Turn a final duration bonus into seconds before considering ticks, refreshes or interruptions.

10 stotal duration2 extra seconds. Tick count is a separate question.
Duration (seconds)
Ability duration: Duration (seconds) against Final duration bonus (%)The curve varies Final duration bonus (%), keeping the other inputs fixed. Selected point: 25 → 10 s. Only when the property uses base × (1 + bonus). This does not resolve individual duration scale functions or bonus stacking.051015200255075100Final duration bonus (%)

Your inputs: 25 → 10 s

Only when the property uses base × (1 + bonus). This does not resolve individual duration scale functions or bonus stacking.

Show the math

Duration = base duration × (1 + final bonus ÷ 100)

Arithmetic model

Radius grows area faster

A 20% larger radius covers 44% more circular ground area—not just 20% more.

44 %change in covered area314.16 → 452.39 m². Radius changes by 20%.
Circular area (m²)
Radius grows area faster: Circular area (m²) against Radius after (m)The curve varies Radius after (m), keeping the other inputs fixed. Selected point: 12 → 452.39. Perfect flat circle only. No walls, vertical bounds, target filters or assumption that every ability uses a circle.05001,0001,5002,0000.16.3212.5518.7825Radius after (m)

Your inputs: 12 → 452.39

Perfect flat circle only. No walls, vertical bounds, target filters or assumption that every ability uses a circle.

Show the math

Area = π × radius²; relative area gain = (new radius ÷ old radius)² − 1

Arithmetic model

Movement speed versus travel time

Adding the same speed saves fewer seconds when you are already moving quickly.

14.29 sto travel this distance16.67s → 14.29s; 2.38s saved.
Travel time (seconds)
Movement speed versus travel time: Travel time (seconds) against Speed after (m/s)The curve varies Speed after (m/s), keeping the other inputs fixed. Selected point: 7 → 14.29 s. Constant straight-line speeds. No acceleration, terrain, stamina, combat slow, dash or zipline behavior.025507510015.7510.515.2520Speed after (m/s)

Your inputs: 7 → 14.29 s

Constant straight-line speeds. No acceleration, terrain, stamina, combat slow, dash or zipline behavior.

Show the math

Travel time = distance ÷ speed

Arithmetic model

A simple stamina refill

Calculate the waiting time for a chosen number of points at a constant recovery pace.

15 sfor this simple refill3 points × 5 seconds each.
Wait (seconds)
A simple stamina refill: Wait (seconds) against Points to recoverThe curve varies Points to recover, keeping the other inputs fixed. Selected point: 3 → 15 s. Points recover sequentially with no initial delay or temporary recovery penalties. Not a reconstruction of Deadlock's full stamina system.01020304002468Points to recover

Your inputs: 3 → 15 s

Points recover sequentially with no initial delay or temporary recovery penalties. Not a reconstruction of Deadlock's full stamina system.

Show the math

Wait = missing points × seconds per point

Rift rule

The Rift resistance ceiling

The maximum contribution rises by one percentage point per minute, then stops growing.

30 %maximum Rift resistance10 minutes until the 40% ceiling.
Maximum Rift contribution (%)
The Rift resistance ceiling: Maximum Rift contribution (%) against Elapsed match time (minutes)The curve varies Elapsed match time (minutes), keeping the other inputs fixed. Selected point: 20 → 30 %. Reconstructed September Rift path at full bias. This is an aura contribution, not total resistance or an Urn effect.010203040011.2522.533.7545Elapsed match time (minutes)

Your inputs: 20 → 30 %

Reconstructed September Rift path at full bias. This is an aura contribution, not total resistance or an Urn effect.

Show the math

Maximum resistance = min(10 + elapsed minutes, 40)%

Rift rule

The Rift's live deficit scaling

The eligible team receives a fraction of the time-based maximum, reaching full strength at a 15% relative deficit.

15 %Bullet, Spirit and Status contribution50% of the 30% time-based maximum.
Rift resistance contribution (%)
The Rift's live deficit scaling: Rift resistance contribution (%) against Live relative deficit (%)The curve varies Live relative deficit (%), keeping the other inputs fixed. Selected point: 7.5 → 15 %. Deficit = 100 × (1 − own team net worth ÷ opposing net worth). Team eligibility was fixed at spawn; catching up changes strength, not team selection.07.51522.53007.51522.530Live relative deficit (%)

Your inputs: 7.5 → 15 %

Deficit = 100 × (1 − own team net worth ÷ opposing net worth). Team eligibility was fixed at spawn; catching up changes strength, not team selection.

Show the math

Resistance = clamp(deficit ÷ 15, 0, 1) × min(10 + minutes, 40)%

Rift rule

Rift Troopers arrive in whole numbers

The count climbs in steps from five to fourteen as the stored spawn bias increases.

9 Troopersfrom this Rift4 above the five-Trooper minimum. Spawn interval: 0.5 seconds.
Trooper count
Rift Troopers arrive in whole numbers: Trooper count against Stored spawn bias (%)The curve varies Stored spawn bias (%), keeping the other inputs fixed. Selected point: 50 → 9. Ordinary reconstructed branch. Use stored spawn bias, not the changing live deficit used by the resistance aura.051015200255075100Stored spawn bias (%)

Your inputs: 50 → 9

Ordinary reconstructed branch. Use stored spawn bias, not the changing live deficit used by the resistance aura.

Show the math

Troopers = floor(5 + 9 × spawn bias ÷ 100)

No numeric simulator is invented for unresolved collision, targeting, cleanse or immunity rules. These remain explained in the reference cards below.

01

Damage & resistance

Start with the damage category. Resistance, reduced resistance, absorption and immunity are different mechanisms—not interchangeable names for one defensive stat.

A hit has several stages

Incoming → processed → health

The build-6698 Bullet/Spirit resistance stage multiplies damage by 1 − net resistance/100, then clamps negative damage to zero. Negative resistance increases damage. Amplification, other reductions, absorption and special states are separate stages; the processed floating-point amount is not necessarily the integer health loss.

In context

A 100-damage hit with 16% net resistance leaves 84 damage at this stage. That is not a guarantee of 84 HP lost through every shield or damage hook.

Still open. Complete effect-specific shield, bypass and penetration behavior remains unresolved.

Source note

Build 6698 combat reconstruction: ordinary damage consumer

Bullet, Spirit & melee

Match the effect to the category

Weapon damage, Spirit damage and melee have separately named properties and reporting categories. An ability's animation does not tell you which protection applies: a projectile is a delivery method, not a damage type. Read the effect and its damage category separately.

In context

Rift Trooper data specifies Spirit and melee resistance separately.

Source note

Modifier property categories; Rift Trooper tier arrays

Resistance contributions

30% and 20% → 44%, not 50%

In build 6698, ordinary Bullet and Spirit resistance contributions combine through their remaining fractions: 1 − (1 − 0.30)(1 − 0.20) = 44%. Eligible resistance-reduction magnitudes combine in a separate pool, which is subtracted afterward. Item ownership alone does not establish which contributions are active.

In context

30 and 20 resistance give 44%; 10 and 20 reduction give 28%. Net resistance is 16%. Without resistance, it is −28%.

Still open. This shortcut excludes innate/inherited stats and the NPC branch; component replacement and activation still need item-specific rules.

Source note

Resistance stat helpers; modifiers 32/33 and 34/35

Resistance reduction & penetration

Debuff the target ≠ alter a shot

The item data has target-side armor reduction, while the bullet-processing survey also identifies a penetration field. These are distinct inputs. The name of a field does not establish whether it subtracts percentage points, multiplies a value, affects a surface, or runs before another modifier.

In context

The armor-reduction aura definition contains −10 Bullet Armor Reduction and a separate single-target player multiplier of 2.

Still open. The aura's complete evaluator and the penetration field's meaning are not established by those numbers.

Source note

upgrade_bullet_armor_reduction_aura; earlier bullet-origin server-authority research

Conditional defense

A threshold is part of the effect

Some protection is conditional rather than permanently active. Keep its trigger, its bonus and any duration together when comparing items. In particular, a low-health bonus is not automatically an extra bonus at full health, and a post-cast buff is not an always-on resistance.

In context

Improved Bullet Armor declares a health threshold of 50 and a below-threshold Bullet Resist value of 15. Warp Stone declares a 6-second caster buff.

Source note

upgrade_improved_bullet_armor; upgrade_warp_stone

The Rift's three resistances

R = q × min(10 + minutes, 40)%

The Rift aura contributes Bullet, Spirit and Status Resistance to its eligible team's nearby heroes. Here q is the team's current relative deficit, scaled from zero to full strength at a 15% deficit. The team is chosen when the Rift spawns; its resistance strength follows the live gap.

In context

At minute 20, the maximum is 30%. Half-strength bias gives 15%; catching up can reduce the contribution to zero.

Still open. This is the Rift contribution—not total resistance, and not an Urn buff.

Source note

Comeback research §4: live deficit remap and three modifier callbacks

02

Health, healing & survival

Separate your health pool from how damage arrives, how health returns, and which temporary effect is protecting you.

Small hits can retain a remainder

0.4 + 0.4 + 0.4 → 1, carry 0.2

The earlier health-mutation path uses integer health but retains fractional damage between applications. It floors the processed damage, combines the fraction with the stored remainder and carries a whole point when that sum reaches one. Rounding every hit independently would describe a different system.

In context

The illustration assumes three positive 0.4-damage applications, an initial remainder of zero and no intervening modifiers or lethal clamps.

Still open. This is an earlier-build code finding, not a fresh September measurement.

Source note

TakeDamageOld fractional accumulator

Healing, regeneration & lifesteal

Three routes back to health

Direct healing, regeneration over time and damage-linked lifesteal have separate properties. A bonus to one should not be treated as a blanket multiplier to all three. Cast-side healing amplification, received healing and regeneration also have distinct fields.

In context

Healing Booster declares 20 for cast healing amplification and regeneration amplification, with separate regeneration bonuses.

Source note

upgrade_healing_booster; healing scale-function families

Anti-heal has scope and duration

What is reduced—and for how long?

Healing reduction is not damage and is not a reduction to maximum health. Keep the affected healing channel and the debuff duration beside the percentage. The captured settings can describe both received-healing and regeneration penalties without proving how several anti-heal sources combine.

In context

Healbane declares −35 received-healing and regeneration penalties, an 8-second duration and a separate heal-on-kill value of 275.

Still open. The combined anti-heal cap and stacking order remain unresolved.

Source note

upgrade_healbane

Stored healing stacks

16 per stack · cap 25

A charge-based heal has at least three questions: how charges are earned, how many can be stored and what a charge is worth. Do not confuse the storage cap with the amount healed by one activation. Other healing modifiers may still affect the result.

In context

Restorative Locket declares 16 healing per stack and a maximum of 25 stacks: 400 is the unmodified arithmetic product, not a guaranteed final heal.

Source note

upgrade_restorative_locket: HealPerStack, MaxStacks, AbilityCooldown

Barriers, immunity & evasion

Absorb ≠ avoid ≠ forbid

Absorption tracks damage taken by a protective layer; evasion describes an avoided hit; immunity or a damageability gate can prevent an eligible damage application. None is simply extra maximum health. Their exact interaction with resistance and damage categories needs effect-specific rules.

In context

The captured result schema has separate absorbed-damage and evaded fields.

Still open. A universal barrier-versus-resistance order is not established.

Source note

CTakeDamageResult; unresolved mitigation virtual path

Reflection & deferred damage

Where—and when—damage lands

Reflection creates a separate question about damage returned to the attacker. Deferral moves some damage into a later process. Neither means that the original hit was automatically erased. Source attribution and timing matter when interpreting these effects or a death recap.

In context

Return Fire declares 65% bullet reflection and 25% Spirit reflection, with a 6.5-second duration. Those are separate configured channels.

Still open. Reflection mitigation and deferred-damage settlement are not fully mapped.

Source note

upgrade_return_fire; citadel_ability_shiv_defer_damage

03

Items & stat bonuses

Read an item as a bundle: base stats, conditional effects, active behavior, targeting and timing. The captured catalog includes old and inactive definitions as well as usable items.

An item's parts

Stats + trigger + active + target

An item can grant an intrinsic modifier, listen for a trigger and expose an active ability. Tier, shop filters and tooltip grouping describe it, but do not themselves execute the effect. A passive stat and an active buff on the same item may have different lifetimes.

In context

Warp Stone combines an 11m cast range, a 16-second cooldown, a 6-second caster buff and a Bullet Resist property of 30.

Source note

upgrade_warp_stone

Components & upgrades

An upgrade is a relationship

A component link connects item definitions; it is not permission to add every stat of every linked record together. To evaluate a finished build, distinguish the item actually owned from its components and any consumed-component state. Tier is a classification, not a universal stat multiplier.

In context

The inventory schema tracks consumed components separately from purchased items.

Still open. Full component-consumption and duplicate-item rules are outside the reconstructed scope.

Source note

ConsumedComponentState_t; purchase and upgrade survey

Weapon bonuses use two groups

Base × increase group × later group

Ordinary weapon and bullet increases add within one group. All-damage and bullet-damage multipliers add within a later group; the groups multiply each other. Flat level damage comes before scaling, while a separate flat bullet modifier comes afterward. Different activation conditions do not automatically create separate arithmetic pools.

In context

Glass Cannon declares +80 weapon increase. Adding it to an active +100 pool gives +180: 2× → 2.8× base, or 40% more with other factors fixed and no post-scale flat damage.

Still open. Range/NPC branches, inherited values and upgrade replacement are excluded from the simple calculator.

Source note

Build 6698 weapon constructor; upgrade_glass_cannon.BaseAttackDamagePercent binding

Active duration versus cooldown

Active window ≠ reuse timer

Duration describes an effect's window; cooldown describes its reuse constraint. There may also be a cast delay or a separate buff duration. Dividing duration by cooldown does not establish real uptime when cast timing, interruptions or recharge rules are unknown.

In context

Metal Skin declares a 5-second ability duration and a 24-second cooldown. Its movement penalties are separate properties.

Source note

upgrade_metal_skin

Ability and item cooldown bonuses

Separate properties, separate scope

The captured items distinguish ability-cooldown reduction from item-cooldown reduction. A number on one channel cannot automatically be applied to the other. Charges and the gap between uses add another timing layer, so one generic haste equation would leave out important behavior.

In context

Cooldown Reduction declares 20; Transcendent Cooldown declares 25 for ability cooldowns and 25 for item cooldowns.

Still open. The universal combination formula, limits and final rounding are not established.

Source note

upgrade_cooldown_reduction; upgrade_transcendent_cooldown

Range, radius & duration bonuses

Longer-lived is not larger

Cast range limits where an effect can be placed or targeted. Radius describes its area. Duration describes how long it lasts. These have separate properties, even when an item affects more than one. Imbued or selected-ability effects also require the correct recipient.

In context

Magic Reach declares 20 for both range and radius multipliers; Duration Extender declares 20 for ability duration.

Still open. These are configured bonuses, not proof that every ability scales or combines them identically.

Source note

upgrade_magic_reach; upgrade_duration_extender; upgrade_imbued_duration_extender

04

Weapons, bullets & melee

Damage per shot is only one part of a weapon. Delivery, spread, hit location, range, ammunition and recovery all matter.

Shots, bursts & sustained fire

Fire-rate bonus ≠ sustained DPS

Build-6698 fire-rate bonuses add; slows combine through remaining fractions and subtract from them. Positive stats shorten the firing interval reciprocally, but negative stats lengthen it linearly. The ordinary default minimum stat is −50. Burst spacing, magazines, reloads and missed pellets still affect sustained damage.

In context

20% and 30% slows combine to 44%. At a −50 fire-rate stat, the interval is 1.5× base: two-thirds of the original cycle rate, not half.

Still open. The minimum is configurable. The shortcut excludes cycle-percentage modifiers, inherited stats and gameplay-time scaling.

Source note

Build 6698 fire-rate stat and piecewise cycle-interval conversion

Falloff & critical hits

Distance and hit location are inputs

Weapon data distinguishes damage-falloff start and end ranges and critical-hit parameters. Range is therefore more than whether a crosshair can point at a target. A headshot indicator or a range warning is useful feedback, but not a complete calculation of final damage.

In context

Compare range endpoints and critical parameters per weapon rather than borrowing one curve for every hero.

Still open. Interpolation, per-weapon critical rules and their order with mitigation remain incomplete.

Source note

Shooting/aiming inventory; weapon schema

Spread, recoil & aim

Where you aim ≠ every bullet's path

Aiming, bullet spread, recoil and projectile origin are separate parts of firing. Zoom state and weapon-specific settings can change the presentation or firing context. A tidier crosshair is not evidence that server-side spread has changed.

In context

The survey identifies zoom state, zoom timing, custom crosshair settings and server-side bullet work separately.

Source note

Shooting/aiming and crosshair inventories; bullet-origin reconstruction

Projectile delivery & collision

Travel, collision, then an effect

A projectile can carry damage, apply a modifier or create an area effect. Travel speed, collision and targeting are distinct from the damage type and amount. A visible impact is not enough to tell whether direct damage, a later tick, or both caused the health change.

In context

In the earlier Shiv investigation, dagger impact damage was configured as zero while a bleeding modifier produced the damaging ticks.

Still open. That historical example is not a claim about every September projectile.

Source note

Shiv thrown-dagger investigation

Ricochet & secondary targets

A bounce has its own rules

A bounced shot needs target eligibility, a search radius and a damage setting. The original target and a secondary target are not interchangeable. The captured Ricochet definition excludes invisible targets and allows small deployables; other chaining effects may use different filters.

In context

Ricochet declares a 13m radius and 65% damage. Its displayed target count is 2 in a tooltip-only property.

Still open. The tooltip-only count is not independent proof of the runtime target-selection loop.

Source note

upgrade_ricochet: RicochetRadius, RicochetDamagePercent, target flags

Melee & parry are distinct actions

Wind-up → contact → recovery

Heroes bind a melee ability separately from their primary weapon. Melee damage, reach, timing and a parry interaction must be read from the appropriate action, not inferred from gun damage. Movement also has separate settings for a parry-cancel transition.

In context

The dash definition contains separate 0.4-second parry-cancel slide and air-glide settings.

Still open. These transition settings are not the parry hit window or a universal melee timing formula.

Source note

Hero melee-slot bindings; citadel_ability_dash parry-cancel fields

05

Abilities & scaling

Base values are the beginning of an ability calculation. Upgrades, scaling, timing, targeting and the active modifier determine what those values can mean.

Use the ability actually equipped

Hero → slot → ability

A hero's slot binding identifies which definition belongs to that slot. Internal names, alternate versions and unused abilities can coexist in the files. Finding a definition with an impressive effect does not establish that the playable hero uses it.

In context

The September catalog resolves 900 hero-slot bindings to 361 distinct ability definitions, including shared actions and development entries.

Source note

Hero-slot binding catalog

A coefficient is not the whole formula

Base + scaling needs an evaluator

Scaling can reference one stat, several stats, a curve, healing rules or a specialized ability function. A coefficient alone does not settle the operation order, limits or rounding. The general scale-function implementations have not all been reconstructed, so this guide does not turn every coefficient into a damage formula.

In context

The snapshot has 5,947 property rows with scale functions; their evaluator semantics remain unresolved in the catalog.

Source note

Formula-property catalog and unresolved scale-function coverage

Upgrade bonuses have a target

Which property changes?

An upgrade can change damage, charges, duration or another property rather than multiplying the whole ability. It may change a coefficient as well as a base value. Read the upgraded property and its operation before applying the bonus to an entire tooltip.

In context

The earlier Shiv analysis distinguished a base bleed value from an upgrade to both that value and its Spirit coefficient.

Still open. The historical coefficients should not be reused as current balance values.

Source note

Shiv dagger property and upgrade analysis

Charges, recharge & use spacing

Stock ≠ refill ≠ minimum gap

Charge count describes how many uses can be stored. Recharge describes how uses return. A separate between-charge cooldown can limit consecutive activations. A full stock therefore does not necessarily allow every use at once, and a recharge bonus is not the same as adding a charge.

In context

The data has distinct ability-charge, recharge-function and between-charge timing properties.

Source note

AbilityCharges; AbilityCooldownBetweenCharge; recharge scale-function family

Cast delay, channel & interruption

Before casting / while channeling / after

Abilities can enable different states before, during and after a cast, and declare states that interrupt them. A channel does not automatically grant immunity. Movement permissions, shooting restrictions and interruption rules need to be checked independently.

In context

Dash lists immobilized, stunned, asleep and movement-ability-restricted states as interrupters.

Source note

citadel_ability_dash state masks; ability behavior fields

Damage over time

Tick amount × actual tick count

A ticked effect has an amount, a cadence, a lifetime and sometimes stacks. Those are separate variables. In the earlier Shiv code path, a tick multiplies evaluated bleed DPS per stack by the tick scalar and stack count, then sends that amount through the damage pipeline.

In context

A longer effect may produce more ticks, but boundary timing and refresh behavior still need to be known.

Still open. Do not assume every effect applies an immediate first tick or shares Shiv's refresh behavior.

Source note

ThrownShivDamageDebuff tick path

06

Movement & traversal

Movement is a collection of states and transitions. A speed bonus, an extra stamina point and a shorter recovery timer solve different problems.

Speed and stamina are separate

Travel rate / action budget / recovery

Movement speed changes travel; stamina supplies a resource for movement actions; stamina recovery governs replenishment. Air-movement bonuses are another property. Combining all of these into one mobility number hides their different uses and conditions.

In context

Superior Stamina declares +2 stamina, 18 stamina-cooldown reduction and 23 for air-movement increase.

Source note

upgrade_superior_stamina

Ground dash versus air dash

Different movement contexts

Dash data separates ground and air behavior, including acceleration, drag, end velocity and interruption. The velocity left after an action matters as well as its starting speed. A distance seen in one context does not establish the distance in another.

In context

Air-dash end-velocity scale and ground-dash airborne drag are separate settings in the captured definition.

Source note

citadel_ability_dash movement fields

Dash-jump timing

Configured window: 0.30–0.55s

The jump definition has separate start and end timing parameters for a dash-jump, plus a distance parameter. These describe an intended transition window, not a promise that every input at those times succeeds regardless of state, collision or latency.

In context

The same definition declares a 19m dash-jump distance parameter.

Still open. These are configuration values, not measured travel distances.

Source note

citadel_ability_jump: m_flDashJumpStartTime, m_flDashJumpEndTime, m_flDashJumpDistanceInMeters

Slides, wall jumps & recovery

A transition can carry a cost

Slide entry and exit have their own timing settings. Jump data also declares a hidden wall-jump stamina-regeneration modifier. The action and its temporary recovery effect should be considered separately; a hidden modifier can matter without being a visible ability icon.

In context

That modifier references a −25 stamina-regeneration property and a 5-second duration property.

Still open. The complete application and stacking behavior is not established by the declaration.

Source note

citadel_ability_jump: wall-jump modifier and stamina-regeneration properties

Ziplines, boosts & teleporters

Attach, travel, leave

Zipline traversal, boosts and teleporters have their own world and movement settings. Camera-facing direction and movement direction are distinct attachment inputs in the earlier survey. Travel effects and the camera that follows them should not be treated as the same mechanic.

In context

The September data separates no-lane zipline and teleporter parameters; the survey also records a zipline-boost modifier.

Still open. Static route placements do not prove when a route is active in a live match.

Source note

m_NoLaneZip; m_TeleporterParams; earlier camera and zipline survey

07

Status effects & stacks

A status can change what you may do, modify a stat, or both. Duration, repeated applications and removal are separate rules.

Stun, sleep, immobilize & silence

Different restrictions, not one lock

The data names separate control states rather than one universal crowd-control switch. An action's interrupting-state mask determines which restrictions it checks. Preventing movement, interrupting an ability and preventing shooting are different questions—even when one effect does several of them.

In context

Warp Stone lists immobilized, stunned and asleep as interrupting states. Dash includes an additional movement-ability restriction.

Source note

upgrade_warp_stone; citadel_ability_dash interrupting-state masks

Status Resistance

Debuff protection is not Bullet Resist

Status Resistance is a separate modifier property from Bullet and Spirit Resistance. An effect can grant one, several or none of them. Its presence does not by itself provide a complete duration-reduction equation for every stun, slow or other debuff.

In context

The Debuff Reducer definition declares 25 Status Resistance. The Rift supplies all three resistance categories through separate callbacks.

Still open. Universal duration scaling, caps and stacking are not established.

Source note

upgrade_debuff_reducer; Rift resistance callbacks

Stacks versus separate instances

One counter ≠ several effects

A modifier can have a stack counter, a maximum and attributes allowing multiple instances. These describe different ways an effect may accumulate. A visible stack count alone does not prove whether repeated applications refresh one timer, add another instance or extend a shared duration.

In context

Restorative Locket has a declared maximum of 25; that limit is not a cap for unrelated modifiers.

Source note

CBaseModifier stack fields; modifier attributes; upgrade_restorative_locket

Refresh, expiration & cleanup

Applied → refreshed → expired

A short-lived child modifier can be kept alive by an aura refreshing it. Leaving the area stops eligibility for refresh, rather than necessarily deleting the effect on the exact boundary-crossing frame. Persistent and timed modifiers require different lifetime handling.

In context

The Rift's child aura modifier has a one-second provided duration and is refreshed while eligible.

Source note

Rift comeback aura lifecycle

Cleanse, suppression & prevention

Remove now ≠ prevent next

Removing an existing debuff, suppressing an effect while a state lasts and preventing a new application are different operations. An active item can also grant a heal or a movement buff independently of its removal behavior. An item's name is not a complete list of what it removes.

In context

The Reduce Debuff Duration item definition declares a 250 activation heal and a separate 3-second movement buff.

Still open. A complete dispel eligibility and immunity interaction matrix is not available.

Source note

upgrade_reduce_debuff_duration

08

Vision & targeting

Seeing something, selecting it, reaching it and being allowed to affect it are four different questions.

Visible does not mean targetable

Seen ≠ selected ≠ damageable

Visibility state, target filters, line-of-sight checks and damageability gates belong to different systems. An entity can be drawn by the client without satisfying an ability's target rules. Conversely, a legal target still has to pass the relevant damage or effect application checks.

In context

The captured targeting and visibility survey tracks these fields separately from the health-mutation path.

Source note

Targetability/visibility inventory; damage pipeline gates

Friendly, enemy & unit filters

Each ability chooses its audience

Targeting distinguishes team relationships and unit classes such as heroes, troopers, bosses, minions, props and neutrals. A hero-targeted heal and a bouncing weapon effect therefore need different candidate sets. Being inside the area is not enough when the type filter excludes you.

In context

Restorative Locket specifies friendly heroes; Ricochet lists several enemy unit classes and neutrals.

Source note

upgrade_restorative_locket; upgrade_ricochet target types

Invisibility & detection exceptions

Read the exception on the effect

An explicit no-invisible-target flag is evidence about that effect's targeting rules. It is not a global statement that invisible entities cannot be damaged, revealed or affected by an area. Detection and application rules must be checked independently.

In context

Ricochet's captured target flags include no invisible targets and allow small deployables.

Source note

upgrade_ricochet target flags

Range, radius, cone & height

An area is more than a circle

A range chooses reach; a radius chooses spread; cones add angle; cylinders add vertical bounds. Ground previews can omit information that matters in a three-dimensional fight. The effect's actual target shape should be kept separate from the artwork that illustrates it.

In context

Restorative Locket declares a 45-degree targeting cone. The Rift aura uses a cylinder with a vertical offset and half-height.

Source note

upgrade_restorative_locket targeting; Rift aura geometry

Collision & line of sight

The camera is not the damage trace

Camera occlusion checks, projectile collision and target visibility serve different purposes. A camera repositioning around an obstacle does not establish a clear firing path. Likewise, a targeting preview is not proof that a later projectile will avoid world geometry.

In context

The interface survey identifies a dedicated cylinder trace for hard camera occlusion.

Source note

Camera hard-occlusion trace setting; targetability and shooting surveys

09

Objectives & the world

These cards cover non-Soul behavior. Reward amounts and comeback payouts remain in the separate economy guide.

Rift capture speed

12s nominal · 6s / 18s at the extremes

The reconstructed Rift capture path uses spawn-selected bias to favor one side and hinder the other. Its capture timing is separate from the live-gap resistance calculation: changing the current gap does not mean every spawn-time decision is recomputed.

In context

The documented endpoints are 6 seconds for a fully favored side and 18 seconds for an unfavored side at zero bias.

Source note

Rift capture lifecycle and spawn snapshots

Rift Trooper count & cadence

floor(5 + 9q) · one every 0.5s

The stored spawn bias determines the ordinary Rift Trooper count, from five to fourteen. Spawning is paced rather than treated as one simultaneous award. A Rift modifier and a stored Rift identity connect the Troopers to the event that produced them.

In context

At q = 0.5, the count is floor(9.5) = 9. This q is the stored spawn bias, not the aura's live resistance bias.

Still open. This is the reconstructed ordinary branch; alternative selector behavior is discussed in the economy guide.

Source note

Rift Trooper count, interval and modifier assignment

Rift Troopers have tiered stats

Spirit: 30 / 35 / 40 / 45

The captured Rift modifier has tier arrays rather than one stat package for every wave. Health and damage settings, resistance and model scale are separate fields. A larger model is not a formula for health or collision size.

In context

The four Spirit-resistance values are 30/35/40/45; melee resistance is 25 at each tier. Health and damage arrays are 100/120/140/160.

Still open. Array values alone do not establish the final health or damage evaluator.

Source note

Authored Rift Trooper tier arrays

Rejuvenator lifetime & respawn settings

180s buff · tiered respawn factors

The Rejuvenator has separate drop, warning, buff and respawn settings. Its buff lifetime is not the same as the time needed for the object to drop. Respawn modifiers also need to be distinguished from the underlying respawn timer.

In context

The captured settings declare a 180-second buff, a 30-second expiration warning and respawn factors of 0.5/0.4/0.3.

Still open. These settings do not by themselves settle tier selection or full respawn-timer arithmetic.

Source note

generic_data.vdata: m_RejuvParams

Troopers, neutrals & structures

Each unit has its own definition

Lane units, neutral camps, bosses and defensive structures should not share an assumed health, attack, targeting or lifecycle rule. The world catalog separates NPC units from other entities. A definition is evidence of a configured unit, not a guarantee that it spawns in every mode.

In context

The September catalog contains 58 NPC-unit definitions and 97 miscellaneous entity definitions.

Source note

npc_units.vdata; misc.vdata

Breakables, explosions & loot

Object → interaction → possible outcome

Props, explosion types and loot tables are separate data families. Breaking a prop does not make every listed loot entry certain; an explosion's visual presentation is not its entire damage or targeting rule. Conditions, selection and runtime activation still matter.

In context

The catalog includes 82 prop-data definitions, 16 explosion types and 18 loot tables. Soul amounts are covered separately.

Still open. Loot probabilities and complete runtime interaction rules are not reconstructed.

Source note

propdata.vdata; explosion_types.vdata; loot_tables.vdata

Game modes, death & respawn

Mode-specific data stays mode-specific

A lethal-damage path and a respawn schedule are separate systems. Mode-specific timing arrays should not be applied to every queue. Likewise, an objective or route found in map data does not prove that its activation conditions are met in a particular match.

In context

Street Brawl has its own respawn and overtime arrays; those are not Normal-match respawn rules.

Still open. The complete Normal-match respawn formula and objective lifecycle coverage remain open.

Source note

generic_data.vdata: m_StreetBrawl; static map inventory

10

Heroes, summons & special cases

Shared systems explain the vocabulary. Individual heroes and summoned entities still need their own bindings and rules.

Hero stats & progression

Base stats + the correct growth rules

Hero definitions contain their own base statistics, weapon links and ability slots. Growth, ability upgrades and purchased stats are different sources of change. An internal hero entry can be a template or development character, so the file count is not the playable roster count.

In context

The September catalog has 59 hero definitions and one hero template. The earlier 63-record catalog is a different snapshot.

Source note

heroes.vdata; versioned hero-binding coverage

Summons & deployables

Owner, entity and target are distinct

A summoned unit or deployable is an entity with its own lifetime and targeting category. Ownership connects it to a hero but does not imply that it inherits every hero stat, item proc or protection. Small-deployable exceptions can be explicitly allowed by an effect.

In context

Ricochet's target flags specifically allow small deployables.

Still open. Universal summon inheritance, proc sharing and despawn rules are not established.

Source note

NPC and ability bindings; upgrade_ricochet target flags

Grey Talon's guided bird

Control, camera, flight and impact

The Talon survey separates the bird-related ability and entity evidence from camera and steering controls. That distinction matters when reading a replay: following a guided entity is not the same as observing the hero's ordinary weapon view.

In context

The collected bird material is a bounded topic survey, not a complete steering or impact formula.

Source note

Grey Talon / archer / bird topic inventory

A dramatic ultimate is not immunity

Animation does not define defense

In the earlier Mina investigation, the bound Batswarm channel listed movement and shooting restrictions but no declared defensive state of the kinds inspected. That was not a proof that every possible incoming-damage interaction had been eliminated or that a later patch could not change the ability.

In context

Use the bound ability and its actual modifiers, not an alternate ultimate left in the files.

Still open. Absence of a defensive declaration is not a complete runtime proof of vulnerability.

Source note

Mina Batswarm binding and channel-state investigation

11

Camera, aim & feedback

What the game shows helps you act, but presentation should not be mistaken for the authoritative combat calculation.

Zoom, field of view & sensitivity

View geometry is its own system

Zoom state, zoom timing, field of view and zoom sensitivity are separately represented. Camera changes can alter how fast motion appears or how much of the world is visible without themselves proving a change to weapon damage, projectile spread or target eligibility.

In context

The earlier survey distinguishes absolute and relative zoom-FOV settings.

Source note

Camera and crosshair surveys; primary-weapon zoom fields

Movement and ability cameras

One action can change the view

Dash, zipline boost and individual abilities can declare camera sequences or overrides. These control presentation during a state or action. A change in camera angle or distance should not be used on its own to infer an equivalent change in the hero's hitbox or speed.

In context

Ground and air dash have separately named camera sequences.

Source note

CAbilityDashVData; zipline-boost and ability camera sequences

Crosshairs & hit markers

Feedback is not a damage ledger

The crosshair has customization, clipping, range-warning and hit-marker settings. These describe visual feedback and can be weapon-specific. They do not expose the complete resistance calculation or prove the exact amount of health removed by an individual hit.

In context

Out-of-range distance and hit-marker duration are distinct settings in the survey.

Source note

Crosshair UI topic inventory

Previews, effects & audio cues

An indicator communicates a state

Ability previews, damage indicators, healing sounds and other feedback help communicate events. Their assets and timing are not the underlying combat rule. Cosmetic definitions, sound tags, decals and lighting were catalogued too, but are not counted as additional damage or movement mechanics.

In context

The global data separates damage-indicator, damage-received and healing-received sound groups.

Source note

generic_data.vdata sound groups; preview and presentation inventories

12

Communication & spectating

The final layer is how positions and events are communicated—and which viewpoint you are actually watching.

Pings & position communication

A message has context

Ping-wheel messages, target information and position-related communication are represented separately from aiming and damage. A map marker communicates a location or request; it is not itself proof that a unit remains there or is currently visible and targetable.

In context

The captured data includes 53 ping-wheel message definitions.

Source note

ping_wheel_messages.vdata; player-position communication survey

Four spectator viewpoints

Directed · Free · Chase · PlayerView

The earlier client survey names four spectator modes: directed viewing, free camera, hero chase and player view. The viewpoint changes what the camera follows; it does not make a spectator camera interchangeable with the player's exact input or the server's hit calculation.

In context

The surveyed mode control labels them 0, 1, 2 and 3 respectively.

Source note

Spectator mode setting and observer-service fields

Observer targets & camera behavior

Who you follow ≠ where you look

Observer state tracks a target separately from camera parameters and the currently observed team. Automatic camera alignment, roaming speed and chase distance concern how the view is presented. A camera motion in a replay should not automatically be attributed to a player's aim input.

In context

The survey records target locking, automatic target-view alignment and separate spectator distance/FOV settings.

Source note

CPlayer_ObserverServices; spectator camera controls

Replays are observations, not omniscience

State seen ≠ cause established

A replay or broadcast can expose an entity state without revealing the complete decision that produced it. Missing updates are not zero values. A partial broadcast is also different from a complete demo, and a displayed build number is not an attestation of the remote executable.

In context

Use observations to check a specific question; do not infer an unseen item proc or damage source from a health change alone.

Source note

Replay field survey; bounded observation methodology

The boundaries of the guide

Coverage without guesswork.

This guide covers the captured non-economy families, not every solved interaction or a tooltip for every individual item. The full September inventory contains 1,882 definitions across 77 parsed data files. Repeated properties, templates, unused content and presentation data are not thousands of independently proven mechanics.

414
Ability definitions
282
Item definitions
88
Weapon definitions
80
Modifier definitions

Hero bindings, global rules, NPCs, props, explosions, loot, map placements and the interface survey supply the remaining families. Sounds, decals, lighting and development-tool data are accounted for as support data, not extra player-facing rules. Static map placement does not establish live spawning or activation.

September configuration

Item, ability, hero, modifier and world settings captured for builds 6697 and 6698. Their script data is identical. Numbers describe these definitions, including inactive and development entries; they are not a current shop list or proof of every in-match interaction.

Reference material

abilities.vdata, heroes.vdata, modifiers.vdata, npc_units.vdata, misc.vdata and generic_data.vdata; resolved property and hero-slot catalogs.

Build 6698 combat reconstruction

Frozen-server reconstruction of weapon-damage groups, fire-rate bonuses and slows, resistance pools and the ordinary Bullet/Spirit resistance stage. These are bounded code paths, not live gameplay tests or a complete item-build simulation. Identical 6697/6698 scripts do not prove identical executables.

Reference material

deadlock_combat_stat_formulas_6698.md: weapon constructor, stat dispatch, cycle conversion and damage processor. Other reductions, absorption, bypass flags and special states remain separate stages.

September Rift reconstruction

The Unstable Rift's resistance, aura and capture paths were reconstructed separately from its Soul rewards. These rules belong to the Rift, not the Urn. A resistance contribution is not the complete damage-mitigation calculation.

Reference material

September 17 comeback-system research, sections 4 and 8; versioned comparison with the September 18 build.

Earlier combat reconstruction

The June damage-pipeline and Shiv/Mina investigation establishes bounded code behavior in that earlier snapshot. Those findings are dated here rather than silently promoted to verified September combat rules.

Reference material

June 12 damage-pipeline refresh; damage pipeline + Shiv/Mina first pass. The general resistance, shield and barrier calculation remains incompletely mapped.

Earlier interface survey

The shooting, camera, crosshair, communication, spectator and targetability survey identifies settings, fields and controls. It is a bounded survey, not a complete explanation of every client or server decision.

Reference material

Broad mechanics evidence and seven topic inventories: shooting/aiming, crosshair, camera, spectator, player-position communication, targetability and Grey Talon.

What we cannot yet give you as a universal formula

Complete shield and penetration behavior; healing and anti-heal stacking; cooldown stacking; every scaling evaluator; all cleanse and immunity interactions; summon inheritance; and complete objective or respawn lifecycles. The bounded combat rules above do not settle these other systems or every item's activation and replacement rules.

Build 6698 combat formulas & boundaries ↗

Public schema snapshot ↗