Implementation status of every effect that translates into damage the player deals, in the theoretical DPS calculator (Character Stats) and in Combat History. Generated from damage-sources-status.md.
Combat History numbers carry a provenance tag: SelfComputed (every hit resolved client-side), SelfPartial (some hits unresolved), SelfPending (no hit resolvable, count only), SelfEstimated, SelfReconciled / SelfServerReconciled (solo-kill reconciliation), Observed / PartiallyObserved (remote players, from server packets). Definitions: combat/types.rs.
Every row stands on its own: notes name the effect and the affected items, and never refer to another row, so a row filtered on its own still reads completely.
| Column | Meaning |
|---|---|
| Damage source | Player or Pet. |
| Effect name | The effect identifier as used in the code or the asset XML (WeaponProc-style Rust names where one exists, otherwise the game's own tag/effect name). |
| Effect type | Native (from the item or ability definition), Enchantment, Consumable (the effect comes from using a consumable item rather than from equipped gear), or Seasonal (a modifier the game applies to the character from the season's rules, not from any item: Exaltation mastery, the Crucible's damage multiplier, the Blood Ritual tier). |
| Class | Classes that can reach the effect. all when the effect is on equipment every class can wear. |
| Equipment type | Weapon, Ability, Armor, Accessory (or - for account-wide bonuses), with the item category in parentheses where the game restricts it. |
| Items | Item count, with full lists in the appendix. Items are written as Name (0x<object type>), the type id being what RealmHound resolves into the item's sprite. |
| Theoretical DPS | Yes = counted in the Character Stats calculator. Partial = visible but not folded into the DPS total. No = absent. |
| Combat History | Yes = every hit is attributed to this source, whether self-computed locally or resolved from the server's own packet (ServerPlayerShoot for a volley, DamagePacket for a poison tick) against the target's live defense. Partial = part of the effect's damage is unattributable, or lands on a generic row. No = not attributed. |
| Has packet | Yes = the server sends the damage figure in a packet RealmHound reads: ServerPlayerShoot carries each bullet's pre-defense damage and names the firing item (ability volleys, side procs, summoned-creature shots), and DamagePacket carries the amount for damage the server applies itself (nova waves, poison ticks, hex detonations, bleeding, pet and summon hits). The target's defense is still applied locally, but the number is never simulated. No = no damage figure arrives: a weapon's PlayerShoot reports only the shot, so the damage is rolled here, and an effect that only changes stats or multipliers has no damage of its own. - = the effect deals no damage to observe. |
| Notes | Implementation caveats. |
| Damage source | Effect name | Effect type | Class | Equipment type | Items | Theoretical DPS | Has packet | Combat History | Notes |
|---|---|---|---|---|---|---|---|---|---|
| Player | WeaponProjectile (primary attack) | Native | all | Weapon | 715 weapons A1 | Yes | No | Yes | Damage rolled from the map seed plus ATT. Weapons only: abilities, armor and rings also carry <Projectile> blocks, but their projectiles belong to their own effects and rows. Combat History needs the seed and a seen ATT, otherwise every hit on that map degrades to SelfPending. Both sides scale the weapon's whole range by the same mastery and seasonal multipliers before the ATT term (see the exaltation, Crucible and Blood Ritual rows), which is what keeps the calculator's range and Combat History's roll on the same numbers. |
| Player | WeaponProjectile (extra projectile types) | Native | all | Weapon | 180 weapons A2 | Yes | No | Yes | Weapons with more than one projectile type (e.g. Fractal Blades, 6 types): each type rolls and resolves separately. |
| Player | Bleeding (projectile condition) | Native | all | Weapon, Ability (projectile condition) | 17 items A3 | Yes | Yes | Partial | Modeled as a stacking armor-piercing DoT (dmg/s x stacks), one source per item. The bleeding ticks arrive as player-credited DamagePackets and are counted in the fight total, but nothing in the packet names the weapon or condition and there is no server-applied window, so they stay on the generic packet_damage row rather than the weapon's row. Not exercised in the stored captures: the two recorded Chain Dagger (0xC21F) fights had no packet damage. The item's own projectile applies it: gear whose Bleeding comes from a raised creature instead is listed with the summons (A18), for example Barnacle Shell (0xBC0F), heavy armor that raises a barnacle. |
| Player | ProcEffect::Poison (OnPlayerShootActivate PoisonGrenade) | Native | Ninja, Samurai, Kensei, Rogue, Assassin, Trickster | Weapon | 7 weapons A4 | Yes | Yes | Partial | Only unconditional procs count; requiredConditions / mustWear procs are excluded from steady-state DPS by design. |
| Damage source | Effect name | Effect type | Class | Equipment type | Items | Theoretical DPS | Has packet | Combat History | Notes |
|---|---|---|---|---|---|---|---|---|---|
| Player | ProcEffect::Poison (OnPlayerHitActivate PoisonGrenade) | Native | Assassin, others | Accessory (ring), Ability (poison) | 6 items A19 | No | Yes | Partial | On-hit poison grenades carried by rings and by the poison ability: the trigger element is not read at all, so they are invisible to the calculator, and Combat History only sees them if the server reports the resulting damage. |
| Player | BulletCreate procs (other cases: shoot / ability / hit / enemy hit / hex detonate) | Native | all | Weapon, Ability, Armor, Accessory | 101 items A17 | No | Yes | Partial | Extra projectiles spawned by a proc on shooting, using an ability, being hit, hitting an enemy or detonating hex. LethalStrike-gated on-shoot entries are counted as Lethal Strike side procs instead, so nearly every cloak lands in A29 rather than here; the two that do land here are Cloak of the Deep (0x5193, shiny 0xCFE4), whose shots are gated on Stasis Immune instead, and Eggshell Cowl (0x47B6), whose shot is ungated. Per-item attributes available: type, numShots, proc, cooldown, damageThreshold, minDistance / maxDistance. |
| Player | SpawnCreep / RaiseDead procs | Native | all | Weapon, Ability, Armor, Accessory | 39 items A18 | No | Yes | Partial | Summoned creatures raised by a proc rather than by an ability's own <Activate>, so any damage they deal belongs to the raised creature and is only seen if the server reports that creature's shots or hits; the calculator counts none of them. 28 items trigger on ability use, 15 across on-hit, on-enemy-hit, weapon-switch and hex-detonate triggers (two of them appear in more than one group). The two RaiseDead items are Barnacle Shell (0xBC0F), heavy armor that raises a barnacle whose projectiles apply 40 Bleeding, and Fossilized Skull (0xBC01). |
| Player | Damage actives as procs (DamageNova, EffectBlast, VampireBlast, GenericActivate, DamageMultAura) | Native | all | Weapon, Ability, Armor, Accessory | 32 items A20 | No | Yes | Partial | DamageNova, EffectBlast, VampireBlast, GenericActivate and DamageMultAura are all modeled as ability effects, but their proc form on weapons, abilities and gear is not counted, so those items read low. Combat History catches the result only when the server sends the damage packets. |
| Damage source | Effect name | Effect type | Class | Equipment type | Items | Theoretical DPS | Has packet | Combat History | Notes |
|---|---|---|---|---|---|---|---|---|---|
| Player | StatBoostSelf / StatBoostAura | Native | all | Weapon, Ability, Armor, Accessory | 200 items + procs A22 | No | No | Yes | Buffs granted by an equipped ability or proc, for example the Damaging / Berserk / DEX / ATT lines shown in the ability readout. The calculator never folds them into its own DPS total, but Combat History picks up the server's boosted values (Attack stat 20 plus AttackBoost stat 48) for every hit it resolves, and the extra shots a fire-rate boost produces are counted from the shots themselves. |
| Player | ConditionEffectSelf / ConditionEffectAura | Native | all | Weapon, Ability, Armor, Accessory | 222 items + procs A27 | No | No | Partial | Conditions applied by an equipped ability or proc. Combat History reads them from the primary condition bitmask (stat 29) that the server sends, folding in Weak (x0.5) and Damaging (x1.25) on every resolved hit, but it has no path for other damage-relevant conditions such as Berserk, so those hits are undercounted. The calculator models none of them. |
| Player | IncrementStat (ActivateOnEquip) | Native | all | Weapon, Ability, Armor, Accessory | all equippable items | Yes | No | Yes | Flat stats granted by equipped gear. The calculator adds them to the gear bonus before relative bonuses are computed; Combat History takes the resulting stat values from the server's stat updates. |
| Damage source | Effect name | Effect type | Class | Equipment type | Items | Theoretical DPS | Has packet | Combat History | Notes |
|---|---|---|---|---|---|---|---|---|---|
| Player | AbilityEffect::ProjectileBurst (Shoot / BulletNova) | Native | Archer, Huntress, Knight, Kensei, Samurai, Bard, Warrior, Wizard, Priest | Ability | 171 abilities A6 | Yes | Yes | Yes | Damage per use from the item's projectile range plus a stat-mod bonus; for orbs it is gated on consumed hex stacks. The server fires these volleys, so Combat History does not roll them: ServerPlayerShoot names the item and carries each bolt's pre-defense damage, which is resolved against the target's live defense and conditions (armor-piercing read from the item's own projectile data) and credited hit by hit to that ability's activation -- never to whichever ability was cast most recently (2026-10-16; re-checked 2026-10-17 against Wizard solos, where the volley accounts for every point of the fight). A bolt landing more than 2s after its activation, or a server-fired bullet with no observed activation (a weapon proc, an ability held across a map change), is filed under the equipped weapon instead; a bullet whose firing item has no projectile data is counted unresolved and makes the fight SelfPartial rather than being given a guessed value. |
| Player | AbilityEffect::PoisonGrenade | Native | Assassin, Huntress, Mystic | Ability | 39 items A5 | Yes | Yes | Yes | Guaranteed on every use (armor-piercing impact plus DoT). Reported per use, not as a rate. The impact and every DoT tick arrive as player-credited DamagePackets, which Combat History credits to the activation of the item whose own XML declares the poison duration (AbilityEffects::server_applied_damage_window_ms, duration plus a 600 ms grace). Verified on the Command Cornea solo of Totalia the Malevolent at 2026-10-16 13:52: all 48 packet hits and 48,391 packet damage in the fight were credited to ability activations (47 hits / 47,398 damage to Command Cornea, the rest to an orb swapped in at the end), and the fight's 80,000 damage / 182 hits remained self_computed. The packet names no effect, so when two server-applied windows overlap the latest activation claims the packet; inside this effect's own window the attribution is complete. |
| Player | HexThresholdPoison | Native | Mystic | Ability (Orb) | 1 item (Command Cornea) A5 | Yes | Yes | Yes | Per-threshold poison bursts keyed to the hex count consumed by DetonateHex. They fire on the detonation activation, so their player-credited DamagePackets land inside the declared window and are credited to that activation. On Command Cornea the same activation also carries the on-use poison and the hex blast, so the row shares the activation's total rather than being separable from it tick by tick. |
| Player | AbilityEffect::DetonateHex | Native | Mystic | Ability (Orb) | 30 orbs A15 | Yes | Yes | Yes | Blast is (base + per-stack x stacks), needs weapon hits to build hex. The blast is server-applied on the activation, so its player-credited DamagePackets fall inside the item's declared window (600 ms grace) and are credited to that activation; the row aggregates with any poison the same item fires, since a packet carries no effect id. |
| Player | AbilityEffect::Lightning | Native | Sorcerer, Summoner (1 mace) | Ability (Scepter, Mace), Weapon | 38 items A7 | Yes | Yes | Partial | WIS-scaled AoE with a per-target bonus. The chain and Shockblast damage arrives as player-credited DamagePackets, but nothing in the packet names the scepter and the item declares no server-applied window, so no activation is credited: across the 59 UseItem casts in the 2026-09-09 capture (Scepter of Rust 0xC21D, Scepter of Fulmination 0x0C30, Scepter of Devastation 0x07B9) every activation stayed at 0 damage / 0 hits while those fights recorded 4,584 / 3,575 / 2,539 / 1,265 packet damage. The damage is counted in the fight total on the generic packet_damage row, not attributed to the scepter. |
| Player | AbilityEffect::VampireBlast | Native | Necromancer, Bard, Trickster | Ability (Skull, Lute, Prism) | 8 items A8 | Yes | Yes | Partial | Lifedrain blast: damages enemies around the caster and returns a share as healing. Counted per use in the calculator. The blast is server-applied; its player-credited DamagePackets are counted in the fight total, but nothing in the packet names the skull, lute or prism and the item declares no server-applied window, so they stay on the generic packet_damage row. Not exercised in the stored captures (none of the six parsed items was used in a recorded fight), so the status follows the same packet path as Lightning and Trap. |
| Player | AbilityEffect::DamageNova | Native | Priest, Wizard | Ability (Tome, Spell) | 23 items A9 | Yes | Yes | Partial | Radial burst around the caster, scaled by the ability's damage stat mod. Counted per use in the calculator. Combat History reads it from the server's volley for the local player and credits it to the casting item: verified on Sporous Spray Spell (0x4B3), whose ServerPlayerShoot carries 18 bolts per wave with their damage and repeats for the effect's whole life, after which the outgoing EnemyHits resolve against the target's defense. The 2026-10-16 attribution pass exists because those waves used to be pinned on whatever ability was cast next instead. |
| Player | AbilityEffect::EffectBlast | Native | Mystic | Ability (Orb) | 33 items A10 | Partial | - | No | Orb-only condition blast (e.g. Stasis Orb's Curse); it deals no damage of its own, so there is no damage packet to read and nothing for Combat History to attribute. The hex-consuming variant is DetonateHex. The calculator shows the condition, duration and radius as an info line but does not fold them into the DPS total, hence Partial rather than Yes. |
| Player | AbilityEffect::Trap | Native | Huntress, Samurai | Ability (Trap, Wakizashi) | 35 items A11 | Yes | Yes | Partial | Placed trap that damages enemies entering its radius, scaled by the ability's damage stat mod. Counted per use in the calculator. The trap's hits arrive as player-credited DamagePackets when it triggers, but the item declares no server-applied window and nothing names the trap, so no activation is credited: in the 2026-09-03 capture the Dragonstalker Trap (0x0AB6) was used 3 times for 0 credited damage while that fight recorded 3,255 packet damage / 6 hits. The damage is counted in the fight total on the generic packet_damage row, not attributed to the trap. |
| Player | AbilityEffect::SpawnCreep / RaiseDead | Native | Summoner, Necromancer, Samurai, Rogue, Mystic, Wizard, Warrior, Archer | Ability | 108 items A12 | Yes | Yes | Yes | Summon damage is credited to the local player from the summon's own server shots: not rolled client-side, armor-piercing forced off, and it needs those shots to be observed. |
| Player | AbilityEffect::Shuriken | Native | Ninja | Ability (Star) | 34 items A13 | Yes | Yes | Partial | Hold-and-release; damage scales with the charged time. The star's damage arrives as player-credited DamagePackets; with no declared window and no item name in the packet it stays on the generic packet_damage row. Not exercised in the stored captures (the Ninja sessions in the captures contain no reconstructed boss fight), so the status follows the same packet path as Lightning and Trap. |
| Player | AbilityEffect::DashTrail | Native | Kensei, Knight | Ability (Sheath, Shield) | 34 items A14 | Yes | Yes | Partial | Kensei sheath dash trail damage. The trail's ticks are bulletless DamagePackets with no declared window, so they stay on the generic packet_damage row. The sheath's own projectile volley is credited to the activation instead, which is why the row is not No: in the 2026-09-04 capture the Quartermaster Scabbard (0x39E4) fired 14 server shots / 7,000 pre-defense damage, 968 damage / 2 hits were credited to its activation, while the fight's 3,936 packet damage / 4 trail hits stayed generic. |
| Player | LethalStrike (extra shots plus per-shot bonus) | Native | Rogue, Paladin | Ability (Cloak, Seal) | 33 items A16 | Yes | Yes | Yes | Snapshot taken at shoot time; bonus applied per resolved hit, the two extra shots once per trigger, only on the primary projectile. Cloaks open the window when their own condition ends (for example Cloak of the Darkened Sun, whose Invisible expiry starts a 2.4s Lethal Strike), while Sharktooth Sigil opens it on weapon switch. |
| Player | BulletCreate side procs gated on LethalStrike | Native | Rogue, Assassin, Trickster | Ability (Cloak), Weapon (Dagger) | 24 items A29 | Yes | Yes | Yes | The two on-shoot projectiles the game spawns while a Lethal Strike window is open, each dealing the same per-hit bonus. The calculator adds two extra Lethal Strike shots per trigger (taken from the window-opening cloak's own entries), and Combat History credits them from the shot geometry, counting only the procs whose path reaches the target. |
| Player | ObjectToss | Native | Assassin, Bard, Wizard, Priest, Trickster, Huntress, Ninja, Kensei, Samurai | Ability, Weapon, Armor | 145 items A21 | No | No | No | Damage comes from the deployed object, which is not modeled. |
| Player | Create / CreateObject | Native | Trickster, others | Ability | 145 objects A21 | No | No | No | Spawns objects or monsters; their damage is not modeled. |
| Player | DamageMultAura | Native | Knight, Archer, Bard | Ability, Armor | 145 items A21 | No | No | No | Multiplies nearby minion / ally damage; whether it also affects the player is unverified. |
| Player | Totem | Native | (armor item) | Armor | 1 item (Basilisk Hide Armor) A21 | No | No | No | The only item using it is the Basilisk Hide Armor, which deploys a totem object that damages nearby enemies. Damage dealt by the deployed object is not modeled in either place. |
| Player | GenericActivate | Native | Paladin, Warrior, Archer, Mystic, Knight | Ability, Armor, Accessory | 145 items A21 | No | No | Partial | Delegates to the activated object's own behavior. |
| Damage source | Effect name | Effect type | Class | Equipment type | Items | Theoretical DPS | Has packet | Combat History | Notes |
|---|---|---|---|---|---|---|---|---|---|
| Pet | PetAbility Attack Close (404) | Native | all | Pet | all pets | Yes | Yes | Yes | Power and frequency interpolated at levels 1, 30, 50, 70, 90, 100 from the Attack Close power table (7 to 200 damage per use). Pet hits and their damage are credited to the owner: the tracker learns the owner from the summoner_id carried on the pet's own shots (tracker.rs:2302-2306), which is also what registers those shots for local resolution, and falls back to proximity association only for pets that have not shot (tracker.rs:186-202); the pet's own hits are then resolved locally (tracker.rs:2510-2512), so a fight where the pet dealt everything still shows the owner's hits and damage, tagged Self-computed. |
| Pet | PetAbility Attack Mid (405) | Native | all | Pet | all pets | Yes | Yes | Yes | Power and frequency interpolated at levels 1, 30, 50, 70, 90, 100 from the Attack Mid power table (5 to 150 damage per use). Pet hits and their damage are credited to the owner: the tracker learns the owner from the summoner_id carried on the pet's own shots (tracker.rs:2302-2306), which is also what registers those shots for local resolution, and falls back to proximity association only for pets that have not shot (tracker.rs:186-202); the pet's own hits are then resolved locally (tracker.rs:2510-2512), so a fight where the pet dealt everything still shows the owner's hits and damage, tagged Self-computed. |
| Pet | PetAbility Attack Far (409) | Native | all | Pet | all pets | Yes | Yes | Yes | Power and frequency interpolated at levels 1, 30, 50, 70, 90, 100 from the Attack Far power table (3 to 100 damage per use, the lowest of the three attack families). Pet hits and their damage are credited to the owner: the tracker learns the owner from the summoner_id carried on the pet's own shots (tracker.rs:2302-2306), which is also what registers those shots for local resolution, and falls back to proximity association only for pets that have not shot (tracker.rs:186-202); the pet's own hits are then resolved locally (tracker.rs:2510-2512), so a fight where the pet dealt everything still shows the owner's hits and damage, tagged Self-computed. |
| Pet | PetAbility Electric (406) | Native | all | Pet | all pets | Yes | Yes | Yes | Power above level 70 is approximate (the wiki table used is truncated). Pet hits and their damage are credited to the owner: the tracker learns the owner from the summoner_id carried on the pet's own shots (tracker.rs:2302-2306), which is also what registers those shots for local resolution, and falls back to proximity association only for pets that have not shot (tracker.rs:186-202); the pet's own hits are then resolved locally (tracker.rs:2510-2512), so a fight where the pet dealt everything still shows the owner's hits and damage, tagged Self-computed. |
| Pet | PetAbility Rising Fury | Native | all | Pet | pets with Rising Fury as first ability | No | Yes | Yes | A pet damage family the calculator does not model. Pet hits and their damage are credited to the owner: the tracker learns the owner from the summoner_id carried on the pet's own shots (tracker.rs:2302-2306), which is also what registers those shots for local resolution, and falls back to proximity association only for pets that have not shot (tracker.rs:186-202); the pet's own hits are then resolved locally (tracker.rs:2510-2512), so a fight where the pet dealt everything still shows the owner's hits and damage, tagged Self-computed. |
| Pet | PetAbility Heal (407) / Magic Heal (408) | Native | all | Pet | all pets | Yes (regen, not DPS) | - | n/a | Listed for completeness: no damage contribution. |
| Pet | Pet attack damage attribution | Native | all | Pet | all pets | n/a | Yes | Yes | Pet hits are credited to their owner: a pet's own ServerPlayerShoot carries the per-bullet damage and the summoner_id that names its owner, so a pet-only fight still lists the owner with hits and damage; a pet that damages a boss with no shot in view sends a DamagePacket keyed to the pet's object id, which is mapped back to the owner the same way. Which creature counts as your pet is not inferred from proximity: it is the pet the character cache names (PetType), and a creature the engine cannot place is not credited, so a teammate's nearby pet (a Great Jelly, a Mermaid) cannot claim the hits. Ownership is decided at the shoot, not by the bullet: your own shots resolve through the correlated shot and pending_server_shots, while anything fired by the pet resolves only against pending_summon_shots keyed by (pet id, bullet id), with no fallback to the player's weapon, so the two per-shot values never mix (tracker.rs:2504-2515). Both are credited to the owner's row. One caveat: if a pet's shoot packet is missed, its hit is counted but left unvalued (tracker.rs:2568-2571), and at finalize every unvalued hit on the owner's row is estimated at accum.damage / resolved_hits (tracker.rs:3389-3393), tagging the row SelfEstimated. That average blends the owner's own resolved hits with the pet's resolved ones, and the counter does not separate them (unresolved_local_hits is a single figure), so a missed pet hit is valued closer to the player's per-hit damage than to the pet's whenever the player's hits are the larger share. Pet hits are also bucketed into the owner's current equipment for the per-equipment breakdown (tracker.rs:2573-2578). |
| Damage source | Effect name | Effect type | Class | Equipment type | Items | Theoretical DPS | Has packet | Combat History | Notes |
|---|---|---|---|---|---|---|---|---|---|
| Player | MultiplyMinDamage / MultiplyMaxDamage | Enchantment | all | Weapon | 31 + 31 enchantments B1 | Yes | No | Partial | Applied to the weapon's damage range. Combat History uses the weapon damage enchant multiplier only when the weapon is in slot 0. |
| Player | MultiplyRateOfFire | Enchantment | all | Weapon | 23 enchantments B2 | Yes (added 2026-10-13) | No | No | Scales shots_per_sec, so it moves DPS directly. All 23 use subAttackIndex="-1" (primary attack); a sub-attack index above -1 is ignored because shot patterns are not modeled. |
| Player | AddOnPlayerShootActivate procs | Enchantment | all | Weapon | 67 enchantments (74 mutators) B3 | No | Yes | No | Parsed only so it can be classified as cosmetic; contributes nothing. Includes BulletCreate, Lightning, Heal and Magic mutators. |
| Player | AddOnPlayerHitActivate procs | Enchantment | all | Weapon | 71 enchantments (83 mutators) B3 | No | Yes | No | Tag is not matched by the parser at all. Includes 6 BulletCreate (retaliation) and 38 ConditionEffectSelf. |
| Player | AddOnPlayerAbilityActivate procs | Enchantment | all | Weapon | 37 enchantments (39 mutators) B3 | No | Yes | No | Includes 2 Lightning and 4 Pet mutators. |
| Player | AddOnEnemyHitActivate procs | Enchantment | all | Weapon | 4 enchantments (4 mutators) B3 | No | Yes | No | On-hit weapon procs: Bubbling Scourge, Corrupting Scourge, Eggsposing Shot and N.O.V.A. The parser does not match this tag at all, so these four enchants contribute nothing anywhere. |
| Player | AddSubAttack / SetSubAttack | Enchantment | all | Weapon | 40 + 40 enchantments (46 + 54 mutators) B4 | No | No | No | Injects sub-attack objects (subAttackObject) into the shot pattern, i.e. extra or altered weapon shots. Material DPS that is invisible today. |
| Player | MultiplyLifetimeMS / MultiplySpeed / MultiplySize / MultiplyMPCost | Enchantment | all | Weapon | 17 / 16 / 12 / 9 enchantments B4 | No | - | No | Range, projectile speed, hitbox and cost: no direct DPS effect. |
| Player | IncrementStat / BonusStatRelative / FlatRegen / PercentageRegen / LootBonus / XPBonus / DustBonus | Enchantment | all | Weapon, Ability, Armor, Accessory | all enchantments | Yes (stats and regen) | No | Partial | Only the stat-affecting mutators change damage, and Combat History depends on the server sending the resulting stat values. |
<Consumable />): stat potions, temporary boosts, summoned creatures and combat windows. They are listed apart from the equipment tables because nothing here belongs to an equipped item, and none of them is modeled as its own damage term: the calculator reads the stats the character already has, while Combat History works from the server's stat values and the shots and hits it actually sees, so a boost the server reports does appear in its numbers. Each row states which of the two that amounts to.
Appendix numbering here is not contiguous: A27 and A29 are equipment lists (see the tables above), because each consumable list is numbered next to the equipment list for the same effect. Consumable lists are A23, A24, A25, A26 and A28.
| Damage source | Effect name | Effect type | Class | Equipment type | Items | Theoretical DPS | Has packet | Combat History | Notes |
|---|---|---|---|---|---|---|---|---|---|
| Player | IncrementStat (on use) | Consumable | all | Consumable | 64 consumables A23 | No | No | No | Permanent stat increases (stat potions, stat candies and every (SB) variant), capped at the character's base stat maximum. This is not a gap: consuming one raises the character's own stats, which the calculator and Combat History already read, so there is no separate damage term to model and no DPS beyond reaching the cap. |
| Player | StatBoostSelf / StatBoostAura (on use) | Consumable | all | Consumable | 117 consumables A24 | No | No | Yes | Temporary stat boosts granted by drinking or using an item, for example the effusion-style boosters. The calculator never consumes a potion, so no boosted DPS figure is shown there, but Combat History does use the boost: the server reports the boosted total as Attack (stat 20) plus AttackBoost (stat 48), and every hit resolved after the buff is computed from those values (combat/damage.rs), so a buffed fight reads the boosted damage. |
| Player | ConditionEffectSelf / ConditionEffectAura (on use) | Consumable | all | Consumable | 31 consumables A25 | No | No | Partial | Temporary conditions applied by consumables, including damage-relevant ones. Combat History reads them from the primary condition bitmask (stat 29) that the server sends, so Weak (x0.5) and Damaging (x1.25) are folded into every resolved hit, but nothing else is applied, so hits taken under other damage-relevant conditions such as Berserk are undercounted. The calculator models none of them. |
| Player | SpawnCreep / Pet (on use) | Consumable | all | Consumable | 12 consumables A26 | No | Yes | Yes | Consumables that summon a creature: the Pocket Rat family (0x4684-0x4688, one item type per stack size, every one of them summoning Summon Pocket Rat 0x4683 for 45 s), Giant Pocket Rat (0x468A, summoning Summon Giant Pocket Rat 0x4689), and the six drake eggs (0xAA9, 0xAEF-0xAF3) that spawn a vanity drake pet which deals no damage. Combat History credits the spawned creature's damage to its owner from the creature's own server shots, whose summoner_id names the owner. Measured on a solo Sprite World kill (2026-10-14, fight 22137 in the local combat database): three Pocket Rats summoned by the local player landed 123 hits for 4182 damage, all counted in that player's total; the item that produced them is not named anywhere in the UI. The calculator does not add a summoned creature's damage. |
| Player | LethalStrike (on use) | Consumable | all | Consumable | 1 consumable A28 | No | Yes | No | Malogia Consumable (0xBC1E, displayed in game as Horned Fruit) opens a 20 s Lethal Strike window with ignoreFlat=40; the same item also heals 100 and applies a -10 ATT StatBoostSelf. Neither the calculator nor Combat History models a consumable-granted Lethal Strike. |
| Damage source | Effect name | Effect type | Class | Equipment type | Items | Theoretical DPS | Has packet | Combat History | Notes |
|---|---|---|---|---|---|---|---|---|---|
| Player | ST set bonus (ActivateOnEquipAll / 3 / 2 IncrementStat) | Native (set) | all | Weapon, Ability, Armor, Accessory | 130 sets, 1132 stat entries (equipmentsets.xml) | No | No | No | equipmentsets.xml is extracted but never loaded. Bonuses are stats only, no procs or abilities, so the DPS effect is indirect. All means a piece in every slot the set defines (98 sets cover 4 slots, 28 cover 3, 4 cover 1); 42 sets have alternative pieces per slot, so counting must use distinct covered slots. |
| Player | ST set ChangeSkin (ActivateOnEquipAll / Custom) | Native (set) | all | Weapon, Ability, Armor, Accessory | 99 entries | n/a | - | n/a | Skin, bullet and color cosmetics; no damage. |
| Player | Exaltation Mastery (weapon damage %) | Seasonal | all | - | - | Yes | No | Yes | mastery_pct from the class's minimum stat exalt level (0-10%), multiplying the weapon's whole damage range. Both sides now read it from the same helper: the calculator via stats/derived.rs::shot_damage_bonus, Combat History via CombatTracker::set_shot_damage_bonus onto combat/damage.rs::roll_base_damage. The processor resolves it from the character cache (exaltation_stats for the class) and re-pushes it on character load and whenever exaltations change. Before 2026-10-16 the live roll carried no mastery term, so every self-computed hit was short by the mastery percentage (10% for a fully-exalted class). |
| Player | Exaltation BonusDamage (server stat 113) | Native | all | - | - | Yes | No | Yes | Folded into the attack multiplier; treated as neutral (1000/1000) when unknown. |
| Player | Crucible damage multiplier (damage_mult) | Seasonal | all | - | - | Yes | No | Yes | The season's Crucible definition (parsed from CrucibleDefinitionsReceived, e.g. S31 Crucible) carries its own damage multiplier; S31's is 1.0, but the term is applied whenever it is not. Read through the same ShotDamageBonus as mastery, and only for a character that carries the Crucible marker. |
| Player | Crucible flat stat mods | Seasonal | all | - | - | Yes | No | Yes | Applied to effective stats when the character carries a crucible marker. Both inputs are packet-derived: the marker comes from the character state (CrucibleStatusReceived) and the season definitions arrive in CrucibleDefinitionsReceived. The calculator adds the mods to its effective stats and Combat History reads the resulting stat values from the server's stat updates, so the two agree without a separate Combat History term. |
| Player | Blood Ritual tier damage multiplier (damage_mult) | Seasonal | all | - | - | Yes | No | Yes | The active tier, chosen in Nexus and reported as the player's BloodRitual string stat (155), multiplies damage by 0.78-1.24 depending on the tier (tier 1 is +24%, the penalty tiers are below 1.0); it also changes max HP and loot. Combat History applies the damage factor through the same ShotDamageBonus and reads the HP factor from the server's stats. The tier is per character, so the tracker is re-pushed when the stat changes. |
| Player | Base stats and gear stats | Native | all | all | all | Yes | No | Yes | Base class stats plus the flat stats from equipped gear: the calculator derives effective stats from them, and Combat History uses the server's stat updates (including conditions such as Weak or Damaging) wherever a stat value is needed. |
BulletCreate procs (128 items, A17/A29), the enchantment proc groups that add shots or effects (AddOnPlayerShootActivate 67, AddOnPlayerHitActivate 71, AddOnPlayerAbilityActivate 37) and the shot-pattern rewrites (AddSubAttack / SetSubAttack, 40 + 40 enchantments, B4). A weapon's extra projectiles are rolled client-side exactly like its main shot, so Combat History never sees them and the calculator counts none of them: every fight with such an item is short by their damage, and B4 lists which weapons are affected. The mechanism already exists for the two Lethal Strike side procs (A29), which are resolved from shot geometry and counted once per trigger, so the work is generalising that path and letting each proc declare its own projectile and trigger. Worth checking first is the failure mode this shares: a shot whose projectile has no data for its weapon currently disables self-computed damage for the rest of the map (tracker.rs, "unknown projectile data"), and a sub-attack projectile is exactly that case. Replaying the four most recent captures (2026-10-14 and 2026-10-16) found no such shot, so the cliff is not being hit today -- it is one gear swap away, and an instrumented check for it belongs with this work. 2. Non-projectile ability damage with no declared window: Lightning, Trap, VampireBlast, Shuriken and DashTrail are counted by the calculator but not source-attributed by Combat History. Their damage numbers do arrive -- they are player-credited DamagePackets (see Has packet) -- but nothing in the packet names the effect, and their items declare no server-applied window, so the packets remain in the fight's generic packet_damage figure instead of an ability row (hence their Combat History: Partial). EffectBlast is condition-only and deals no damage of its own, so it is not part of this list. Effects whose item declares a window are credited to the activation, which is what the poison, threshold-poison and hex-detonation rows record: DamageNova waves (activationCount x time), a PoisonGrenade's duration, and a DetonateHex / on-detonate blast (600 ms grace). Which of the other effects fire a local volley as well is measurable rather than guessable -- combat_replay prints every ServerPlayerShoot and the damage each one resolves to, which is how ProjectileBurst and DamageNova were confirmed and credited to their source. 3. ST set bonuses (130 sets, equipmentsets.xml): pure stats, so the work is mechanical (parse, count distinct covered slots, add to the gear bonus before relative bonuses). Only the calculator is affected; Combat History already reads the server's stat values. 4. Conditions and buffs that change damage: a damage-relevant condition reaches Combat History only through the server's own stat and condition values (Weak x0.5 and Damaging x1.25 are folded into every resolved hit, Armor Broken zeroes defense, Cursed/Petrified scale the result), and the calculator models none of them. What is missing is the provenance: the 38 ConditionEffectSelf enchant mutators and the 71 AddOnPlayerHitActivate proc mutators are not parsed, so a Berserk or Damaging window opened by an enchant appears in the damage of a fight without being visible as a window in the breakdown. 5. Pet and summon systems: Rising Fury is missing from the calculator, and Combat History stores a credited creature's damage and hits but not the creature's own object type, so its row reads "Summon" with no identity. The Pocket Rat measurement above shows the type is known at credit time (0x4683), so this is a data-plumbing gap rather than a packet gap; the type is now stored (2026-10-16), which leaves naming the source item. That mapping is static game data and nearly clean: 247 items declare a summon effect (Activate 235 rows, plus 86 on ability use, 20 on hex detonate, 14 on shoot, 14 on switch, 11 on being hit and 3 on hitting), producing 271 distinct summoned entities (SpawnCreep 228, Pet 92, RaiseDead 63 rows), and 253 of those entities are spawned by exactly one item. The 18 that are not are almost all variants of the same item -- base + (SB) or shiny, the five Fishing Rod tiers sharing Summon Fishing Rod Blank (0x8712), the five Pocket Rat stack types sharing Summon Pocket Rat (0x4683) -- with only a few genuinely shared by different items (Summon Cat 0x89ae from Specialist Mace and Yarn Ball, the Necrotic Undead 0x16aa from Necrotic and Sacrilege Skulls). Ability and skull summons resolve from objectId / undeadId (skulls are 1:1, e.g. Bloodsucker Skull -> Bloodsucker Undead 0x16b0), while the proc-spawned ones (Flowering Kimono -> MV Kimono Summon 0x500a, Soul's Guidance -> Guided Forgotten Soul 0x6101) are exactly the proc forms the parser does not read yet, so naming those needs the same proc parse item 1 asks for. 6. On-hit proc triggers on equipment: the OnPlayerHitActivate and OnEnemyHitActivate tags are not matched by the parser, which hides 71 + 4 enchantments and the six ring/ability poison grenades (A19) from both sides.
No or Partial row in the tables above applies to its whole list. The counts cited in the tables (101 items [A17]) are the sizes of these lists, and the per-list status badge under each heading repeats how that effect is implemented. To find actual gaps, filter the tables above for No or Partial rather than scanning these lists.
Player-visible equippable items only, formatted as Item Name (0x<object type>). Internal spawner / proc objects (no <Description>, <BagType>, <feedPower> or <EnchantmentSlots>) are excluded, since their ids are never shown in game, and so are two other groups: unreleased content that cannot be obtained on production (currently T8 abilities, which is everything above the T7 maximum live abilities), and utility or legacy items whose effect cannot damage enemies (the stone, iron, emerald and diamond pickaxes, which only ever damaged event crates and are now vanity accessories). The type id is what RealmHound resolves into the item's sprite. An item that carries several effects appears once per list, and clicking any icon searches the page for it. Items listed as a bare type id have no display name anywhere in the game data; their sprite is still shown, and hovering says so.
<Projectile>)RealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Yes
weapons:with_projectile (715)
RealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Yes
weapons:multi_projectile (180)
BleedingRealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Partial
projectile:Bleeding (17)
PoisonGrenade as a weapon procRealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Partial
OnPlayerShootActivate:PoisonGrenade (7)
PoisonGrenade / hex-threshold poison on abilitiesRealmHound status for this effect, from the tables above: Theoretical DPS Yes ×2 · Combat History Yes ×2
ability:PoisonGrenade (39)
OnDetonateHexActivate:PoisonGrenade (1)
Shoot / BulletNova ability volleys (ProjectileBurst)RealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Yes
Attribution is packet-borne and complete: on_ally_shot registers the local player's
ServerPlayerShoot, and on_local_hit resolves each landed bolt against the target's defense before crediting it to that item's activation row (ability_activations_for). No local roll is involved.
ABILITY_ATTRIBUTION_WINDOW_MS (2s) is what bounds a bolt to the activation that fired
volley_hit_is_credited_to_the_ability_that_fired_it.
ability:Shoot (135)
ability:BulletNova (36)
Lightning abilitiesRealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Partial
ability:Lightning (38)
VampireBlast abilitiesRealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Partial
ability:VampireBlast (8)
DamageNova abilitiesRealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Partial
ability:DamageNova (23)
EffectBlast abilitiesRealmHound status for this effect, from the tables above: Theoretical DPS Partial · Combat History No
ability:EffectBlast (33)
Trap abilitiesRealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Partial
ability:Trap (35)
SpawnCreep / RaiseDead summons on abilitiesRealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Yes
ability:SpawnCreep (68)
ability:RaiseDead (42)
ShurikenAbility (Ninja star)RealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Partial
ability:ShurikenAbility (34)
ChannelDash (dash trail damage)RealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Partial
ability:ChannelDash (34)
DetonateHex (orb hex blast)RealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Yes
ability:DetonateHex (30)
LethalStrike (cloaks and other items that grant it)RealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Yes
OnConditionEndActivate:LethalStrike (29)
OnPlayerShootActivate:LethalStrike (2)
OnSwitchAbilityActivate:LethalStrike (2)
BulletCreate side procs gated on LethalStrike (the two extra Lethal Strike shots)RealmHound status for this effect, from the tables above: Theoretical DPS Yes · Combat History Yes
lsgate:BulletCreate (24)
BulletCreate procs, excluding the Lethal-Strike-gated side procs (see A29)RealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History Partial
bc:other (101)
SpawnCreep / RaiseDead, all triggers)RealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History Partial
OnPlayerAbilityActivate:SpawnCreep (24)
OnPlayerHitActivate:SpawnCreep (4)
OnEnemyHitActivate:SpawnCreep (3)
OnSwitchAbilityActivate:SpawnCreep (4)
OnDetonateHexActivate:SpawnCreep (4)
OnPlayerAbilityActivate:RaiseDead (2)
RealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History Partial
OnPlayerHitActivate:PoisonGrenade (6)
RealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History Partial
OnPlayerAbilityActivate:DamageNova (2)
OnPlayerAbilityActivate:EffectBlast (3)
OnPlayerHitActivate:EffectBlast (4)
OnPlayerAbilityActivate:GenericActivate (3)
OnPlayerHitActivate:GenericActivate (18)
OnPlayerHitActivate:DamageMultAura (2)
ObjectToss / Create / CreateObject / DamageMultAura / Totem / GenericActivate abilities and procsRealmHound status for this effect, from the tables above: Theoretical DPS No ×5 · Combat History No ×4 / Partial ×1
ability:ObjectToss (44)
OnPlayerShootActivate:ObjectToss (26)
OnPlayerAbilityActivate:ObjectToss (18)
OnPlayerHitActivate:ObjectToss (4)
ability:Create (3)
ability:DamageMultAura (18)
ability:Totem (1)
ability:GenericActivate (13)
OnPlayerAbilityActivate:GenericActivate (3)
OnPlayerHitActivate:GenericActivate (18)
StatBoostSelf / StatBoostAura abilities and procsRealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History Yes
ability:StatBoostSelf (41)
ability:StatBoostAura (49)
OnConditionEndActivate:StatBoostSelf (3)
OnPlayerShootActivate:StatBoostSelf (37)
OnPlayerAbilityActivate:StatBoostSelf (27)
OnPlayerHitActivate:StatBoostSelf (17)
OnSwitchAbilityActivate:StatBoostSelf (31)
OnEnemyHitActivate:StatBoostSelf (1)
ConditionEffectSelf / ConditionEffectAura abilities and procsRealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History Partial
ability:ConditionEffectSelf (75)
ability:ConditionEffectAura (95)
OnPlayerShootActivate:ConditionEffectSelf (30)
OnPlayerAbilityActivate:ConditionEffectSelf (27)
OnPlayerHitActivate:ConditionEffectSelf (36)
OnEnemyHitActivate:ConditionEffectSelf (1)
OnSwitchAbilityActivate:ConditionEffectSelf (1)
<Consumable />), listed separately because they are temporary boosts or one-shot effects rather than equipment procs. They are excluded from the equipment lists above.
Numbering note: these lists are not contiguous. A27 (ConditionEffectSelf / ConditionEffectAura on equipment) and A29 (BulletCreate side procs gated on LethalStrike) are equipment lists and appear in the equipment part of this appendix, because each consumable list is numbered next to the equipment list for the same effect (A16 / A28 for LethalStrike, A22 / A24 for StatBoostSelf, A12 / A26 for SpawnCreep).
Activate IncrementStat)RealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History No This is not a gap: a consumed stat potion permanently raises the character's own base stats (capped at the character's maximum), which both systems already read, so there is no separate damage term to model.
activate:IncrementStat (64)
StatBoostSelf / StatBoostAura on use)RealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History Yes
activate:StatBoostSelf (59)
activate:StatBoostAura (58)
ConditionEffectSelf / ConditionEffectAura on use)RealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History Partial
activate:ConditionEffectSelf (26)
activate:ConditionEffectAura (5)
Activate SpawnCreep / Activate Pet)RealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History Yes
activate:SpawnCreep (6)
activate:Pet (6)
Activate LethalStrike)RealmHound status for this effect, from the tables above: Theoretical DPS No · Combat History No
activate:LethalStrike (1)
enchantments.xml. Several entries can share one display name (per-item variants of the same enchantment), so the distinct-name count is lower than the entry count.
MultiplyMinDamage / MultiplyMaxDamage (31 enchantments, 31 mutators, 21 distinct names)MultiplyRateOfFire (23 enchantments, 23 mutators, 18 distinct names)AddOnPlayerShootActivate (67 enchantments, 74 mutators, 53 distinct names)
AddOnPlayerHitActivate (71 enchantments, 83 mutators, 69 distinct names)
AddOnPlayerAbilityActivate (37 enchantments, 39 mutators, 37 distinct names)
AddOnEnemyHitActivate (4 enchantments, 4 mutators, 4 distinct names)
AddSubAttack / SetSubAttack (40 enchantments, 46 mutators, 14 distinct names)SetSubAttack (40 enchantments, 54 mutators, 18 distinct names)
MultiplyLifetimeMS (17 enchantments, 17 mutators, 7 distinct names)
MultiplySpeed (16 enchantments, 16 mutators, 6 distinct names)
MultiplySize (12 enchantments, 12 mutators, 2 distinct names)
MultiplyMPCost (9 enchantments, 9 mutators, 9 distinct names)