From 0dddf7623a1afcfb8b9390a02fdbe5e9574c5a27 Mon Sep 17 00:00:00 2001 From: toaster Date: Sun, 29 Jul 2018 23:07:10 +0100 Subject: [PATCH] Buggy netgame! Sorry yalls. * Fix free play on intermission. * Fix crash in killing/damaging mobj with null death/pain state. --- src/p_inter.c | 27 +++++++++++++++------------ src/y_inter.c | 21 ++------------------- 2 files changed, 17 insertions(+), 31 deletions(-) diff --git a/src/p_inter.c b/src/p_inter.c index 474cf148..6ca5e6c2 100644 --- a/src/p_inter.c +++ b/src/p_inter.c @@ -3492,22 +3492,25 @@ boolean P_DamageMobj(mobj_t *target, mobj_t *inflictor, mobj_t *source, INT32 da break; } - target->reactiontime = 0; // we're awake now... - - if (source && source != target) + if (!P_MobjWasRemoved(target)) { - // if not intent on another player, - // chase after this one - P_SetTarget(&target->target, source); - if (target->state == &states[target->info->spawnstate] && target->info->seestate != S_NULL) + target->reactiontime = 0; // we're awake now... + + if (source && source != target) { - if (player) + // if not intent on another player, + // chase after this one + P_SetTarget(&target->target, source); + if (target->state == &states[target->info->spawnstate] && target->info->seestate != S_NULL) { - if (!(player->powers[pw_super] && ALL7EMERALDS(player->powers[pw_emeralds]))) - P_SetPlayerMobjState(target, target->info->seestate); + if (player) + { + if (!(player->powers[pw_super] && ALL7EMERALDS(player->powers[pw_emeralds]))) + P_SetPlayerMobjState(target, target->info->seestate); + } + else + P_SetMobjState(target, target->info->seestate); } - else - P_SetMobjState(target, target->info->seestate); } } diff --git a/src/y_inter.c b/src/y_inter.c index a77c12a0..cb171ed9 100644 --- a/src/y_inter.c +++ b/src/y_inter.c @@ -493,25 +493,8 @@ void Y_IntermissionDrawer(void) dotimer: - if (netgame) // FREE PLAY? - { - i = MAXPLAYERS; - - if (!forcefreeplay) - { - // check to see if there's anyone else at all - for (i = 0; i < MAXPLAYERS; i++) - { - if (i == consoleplayer) - continue; - if (playeringame[i] && !stplyr->spectator) - break; - } - } - - if (i == MAXPLAYERS) - K_drawKartFreePlay(intertic); - } + if (netgame && forcefreeplay) // FREE PLAY? + K_drawKartFreePlay(intertic); if (timer) {