From 26cb93d24f1753ed61d70bf867f9c2377981845c Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 30 Apr 2017 16:25:19 +0000 Subject: [PATCH] Preserve killer_objnum when a dead player takes additional damage --- similar/main/collide.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/similar/main/collide.cpp b/similar/main/collide.cpp index e375efa40..fbee9941d 100644 --- a/similar/main/collide.cpp +++ b/similar/main/collide.cpp @@ -2087,6 +2087,15 @@ void apply_damage_to_player(object &playerobj, const cobjptridx_t killer, fix da if (get_player_id(playerobj) == Player_num) { //is this the local player? PALETTE_FLASH_ADD(f2i(damage)*4,-f2i(damage/2),-f2i(damage/2)); //flash red + if (playerobj.shields < 0) + { + /* + * If player is already dead (but Player_dead_state has not + * caught up yet), preserve the original killer data. + */ + assert(playerobj.flags & OF_SHOULD_BE_DEAD); + return; + } const auto shields = (playerobj.shields -= damage); if (shields < 0)