A destroyed vehicle's killer is the attacker the server can corroborate
Status: Accepted (2026-10-25)
Context
Only the player controlling a vehicle blows it up (VehicleExplode). Its occupants die from the explosion itself, not from a damage report, and the other copies of the vehicle have no author. Without more, vehicle_death, the deaths of the occupants, and the damage of the explosion and of the burning wreck all reach the gamemode with no killer.
This extends ADR 0033: the same journal of causes and the same death attribution of ADR 0029.
Decision
- The controlling player names in
VehicleExplodethe player its copy holds as the last to damage the vehicle (itself or a remote player). Ramming never names an attacker: the server cannot check it. - The server credits that attacker only by correlation: the same player of the same generation, in the same scope, has an accepted action that explains the explosion within a window before it — a shot whose ray passed near this generation of the vehicle, or a cause of ADR 0033 within reach. The windows and distances are in
VehicleExplode. An explosion of a remote-controlled vehicle detonated by its driver is credited to that driver. - The credited killer goes into
VehicleDeathandvehicle_death(vehicle, cause, killer), and the vehicle's explosion and fire become the killer's cause for damage 51 and 37. - Each occupant alive at the explosion gets
{killer, weapon 51}as a separate record for 5 s, not as its open-ended last damage. Later accepted damage from a player and the occupant's ownVehicleExitclear it (a dead client sends no exit); environmental damage does not (ADR 0029). Otherwise a survivor whose exit arrived after the accepted explosion (on another reliable lane) would inherit the vehicle's killer for any later death. The server counts the death of the occupants itself and commits it if their clients do not (ADR 0045); with friendly fire off, the killer's teammates inside are spared and get no killer (ADR 0039). - The weapon of the occupants'
player_deathand of the cause is 51, the explosion. - Explosion damage exists only after the accepted explosion: every copy, the controlling player's included, blows up only on
VehicleDeath, so the cause always precedes the damage it explains. Each client blows up its copy with the killer's remote player as the author, and the unowned fires a burning explosion starts around it inherit that author, like spreading fire in ADR 0033.
Consequences
- A kill feed shows who destroyed a vehicle and who killed its occupants.
- Ramming, an explosion with no player behind it, and vehicle damage without an explosion give no killer.
Alternatives considered
- Only a lifecycle check of the named attacker. The controlling player could credit the explosion to any player nearby.
- The weapon of the cause (a rifle, a rocket, a molotov) for the occupants' death. A kill feed would show what the vehicle was shot with, not what killed the occupants.
- The server tracks the vehicle's last attacker from vehicle damage reports. Needs a stream of vehicle damage with attackers on the wire; the controlling copy already knows the attacker, and correlation stops a forged one.
