From c2183a626c63d12eb578d67ce4be649813d35bec Mon Sep 17 00:00:00 2001 From: toaster Date: Wed, 23 Nov 2022 18:03:27 +0000 Subject: [PATCH] Actually track lastfakeskin! Tremendous whoopsie: turns out there's no code that actually saves it outside of netsync. This is now fixed. Also now allows you to roll Eggman as your first skin, and doesn't cause immediate characterswaps for midgame joiners. --- src/d_clisrv.c | 1 + src/g_demo.c | 8 ++++++++ src/r_skins.c | 7 ++++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/d_clisrv.c b/src/d_clisrv.c index f826519a2..6ce85db27 100644 --- a/src/d_clisrv.c +++ b/src/d_clisrv.c @@ -2551,6 +2551,7 @@ void CL_ClearPlayer(INT32 playernum) memset(&players[playernum], 0, sizeof (player_t)); players[playernum].followerskin = -1; // don't have a ghost follower + players[playernum].fakeskin = players[playernum].lastfakeskin = MAXSKINS; // don't avoid eggman RemoveAdminPlayer(playernum); // don't stay admin after you're gone } diff --git a/src/g_demo.c b/src/g_demo.c index dc816856f..8566a4c22 100644 --- a/src/g_demo.c +++ b/src/g_demo.c @@ -1185,6 +1185,14 @@ void G_ConsGhostTic(INT32 playernum) players[playernum].kartweight = ghostext[playernum].kartweight; players[playernum].charflags = ghostext[playernum].charflags; + if (demo.skinlist[demo.currentskinid[playernum]].flags & SF_IRONMAN) + { + players[playernum].lastfakeskin = players[playernum].fakeskin; + players[playernum].fakeskin = + (ghostext[playernum].skinid == demo.currentskinid[playernum]) + ? MAXSKINS + : ghostext[playernum].skinid; + } } } diff --git a/src/r_skins.c b/src/r_skins.c index db1e81345..9779fdcfc 100644 --- a/src/r_skins.c +++ b/src/r_skins.c @@ -339,7 +339,12 @@ void SetPlayerSkinByNum(INT32 playernum, INT32 skinnum) // Set mo skin but not player_t skin, for ironman void SetFakePlayerSkin(player_t* player, INT32 skinid) { - player->fakeskin = skinid; + if (player->fakeskin != skinid) + { + if (player->fakeskin != MAXSKINS) + player->lastfakeskin = player->fakeskin; + player->fakeskin = skinid; + } if (demo.playback) {