From 17b8a5d6031282e119f8035ff02d11d6ffdea7ed Mon Sep 17 00:00:00 2001 From: Sally Coolatta Date: Sat, 26 Sep 2020 05:40:01 -0400 Subject: [PATCH] Shrink when dying post-finish I started this in another commit and forgot to fully finish it. Also allows attacking bot-controlled players who won --- src/k_bot.c | 3 ++- src/p_inter.c | 10 ++++------ src/p_mobj.c | 2 +- 3 files changed, 7 insertions(+), 8 deletions(-) diff --git a/src/k_bot.c b/src/k_bot.c index fa17caa24..1f3585402 100644 --- a/src/k_bot.c +++ b/src/k_bot.c @@ -683,7 +683,8 @@ void K_BuildBotTiccmd(player_t *player, ticcmd_t *cmd) // Remove any existing controls memset(cmd, 0, sizeof(ticcmd_t)); - if (gamestate != GS_LEVEL) + if (gamestate != GS_LEVEL + || player->mo->scale == 0) // funny post-finish death { // No need to do anything else. return; diff --git a/src/p_inter.c b/src/p_inter.c index ca2735ca5..dd021c6b4 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -1650,7 +1650,8 @@ static boolean P_KillPlayer(player_t *player, UINT8 type) { if (player->exiting) { - player->mo->destscale = 1; + player->mo->destscale = 0; + player->mo->flags |= MF_NOCLIPTHING; return false; } @@ -1818,9 +1819,6 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da if (!force) { - if (player->exiting) - return false; - // Player hits another player if (source && source->player) { @@ -1832,7 +1830,8 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da // Instant-Death if ((damagetype & DMG_DEATHMASK)) { - P_KillPlayer(player, damagetype); + if (!P_KillPlayer(player, damagetype)) + return false; } else if (LUAh_MobjDamage(target, inflictor, source, damage, damagetype)) { @@ -1840,7 +1839,6 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da } else { - // Check if the player is allowed to be damaged! // If not, then spawn the instashield effect instead. if (!force) diff --git a/src/p_mobj.c b/src/p_mobj.c index b17a97be1..43eb411c7 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -4674,7 +4674,7 @@ static void P_MobjScaleThink(mobj_t *mobj) switch (mobj->type) { default: - if (mobj->scale == 0) + if (mobj->player == NULL && mobj->scale == 0) { P_RemoveMobj(mobj); return;