From d0719ef5ba86a1da32fed171d74eb76c7254f4f6 Mon Sep 17 00:00:00 2001 From: James R Date: Mon, 20 Mar 2023 19:42:07 -0700 Subject: [PATCH] Fix mobj reference management of player->mo Thanks to toaster --- src/g_game.c | 2 ++ src/p_mobj.c | 4 +++- src/p_user.c | 2 +- 3 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/g_game.c b/src/g_game.c index b2d7b933c..9e72cbaa1 100644 --- a/src/g_game.c +++ b/src/g_game.c @@ -3139,8 +3139,10 @@ void G_DoReborn(INT32 playernum) if (player->mo) { oldmo = player->mo; + // Don't leave your carcass stuck 10-billion feet in the ground! P_RemoveMobj(player->mo); + P_SetTarget(&player->mo, NULL); } G_SpawnPlayer(playernum); diff --git a/src/p_mobj.c b/src/p_mobj.c index b910f4a3d..e6ad9ae71 100644 --- a/src/p_mobj.c +++ b/src/p_mobj.c @@ -11769,7 +11769,9 @@ void P_SpawnPlayer(INT32 playernum) p->flashing = K_GetKartFlashing(p); // Babysitting deterrent mobj = P_SpawnMobj(0, 0, 0, MT_PLAYER); - (mobj->player = p)->mo = mobj; + + mobj->player = p; + P_SetTarget(&p->mo, mobj); mobj->angle = mobj->old_angle = 0; diff --git a/src/p_user.c b/src/p_user.c index 7e7e3ef85..98e5b92c2 100644 --- a/src/p_user.c +++ b/src/p_user.c @@ -3643,7 +3643,7 @@ boolean P_SpectatorJoinGame(player_t *player) if (player->mo) { P_RemoveMobj(player->mo); - player->mo = NULL; + P_SetTarget(&player->mo, NULL); } player->spectator = false; player->pflags &= ~PF_WANTSTOJOIN;