fix(combat): Die never claims a client death

Live sent client_death=false on every Die, players included (19,428 in
the live captures, 452 of them player deaths); DLU sent true for
players. The client only uses the flag to match a death it already
predicted locally (LWODestroyableComponent::msgDie): with it set, a
Die that arrives while a post-death respawn is pending is dropped.

Check: die to an enemy, to falling and to a quickbuild trap; the death
animation, coin loss and respawn prompt all still appear, and other
players see you die.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Aaron Kimbrell
2026-09-29 02:37:25 -05:00
parent d7833bd4c6
commit 65acc19978
2 changed files with 64 additions and 1 deletions

View File

@@ -746,7 +746,9 @@ void DestroyableComponent::Smash(const LWOOBJID source, const eKillType killType
GameMessages::Die die;
die.target = m_Parent->GetObjectID();
die.bClientDeath = isPlayer;
// Live never set client_death, players included (19,428 Die in the live captures). The client only uses it to
// match a death it already predicted locally (LWODestroyableComponent::msgDie).
die.bClientDeath = false;
die.bSpawnLoot = true;
die.deathType = deathType;
die.killType = killType;