Explosion and fire damage is credited to an accepted cause
Status: Accepted (2026-10-25)
Context
The victim's client sees who caused an explosion (damage 51) or a fire (37) that hurt it, but unlike a bullet there is no WeaponShot to check that claim against. Trusting the named attacker as is would let a victim credit its death to any player, for example to hand a kill to a teammate. Unchecked, deaths from grenades, rockets, satchels, molotovs and flamethrowers could only reach the gamemode with no killer.
This extends ADR 0029: the same DamageReport, last damage and events.
Decision
- The victim reports explosion and fire damage in a
DamageReportwithshot_order = 0and the attacker it saw. Fire, spray and extinguisher damage is continuous: the victim sums it per attacker and weapon and sends it at most every 250 ms; a lethal tick goes at once. - The server keeps a journal of each player's accepted causes: a thrown or launched grenade, rocket or molotov, a satchel detonation, frames firing a flamethrower, spraycan or extinguisher, and the server-side causes credited to that player (a vehicle explosion of ADR 0034, a gamemode explosion or fire with that creator, a Rhino cannon shot). A report is credited by the freshest cause of its class within a time window and a distance from the victim. The table of windows and distances is in
DamageReport. player_damage, the last damage andplayer_deathget the weapon of the cause (16, 19, 20, 39, 18, 37, or 51 for a vehicle explosion, a cannon shot and a gamemode explosion), not the damage class.- The attacker must be of the same generation but need not be alive: a grenade outlives its thrower. The cause and the victim must be in the same scope.
- A cause is not reused without limit. One explosion hits a victim at most twice in the game, so it is credited to a victim at most twice and only within 1 s of the first accepted hit. Fire and spray reports from one attacker with the same weapon are accepted at most every 200 ms, except the first lethal one of the life.
- Fire that spreads inherits the author of the fire it came from. The fire window is 65 s from the cause; a death in fire after that has no author.
Consequences
- A kill feed tells a grenade from a rocket and a molotov from a flamethrower.
- A victim can still credit its damage to a player who really caused an explosion or fire nearby within the window; it cannot name a player who did not.
- Teargas (17) deals no damage. Fire or explosions with no player author are environmental damage (ADR 0029).
Alternatives considered
- Only a lifecycle check (the attacker exists, is alive, is not the victim). Simpler, but the victim could credit its death to any player.
- The damage class as the weapon (51 / 37). A kill feed could not tell a grenade from a rocket, or a molotov from a flamethrower.
- The exact explosion point on the wire. Needs a new field and trust in the client's point; coarse windows and distances are enough to stop crediting a player who was not involved.
