From 8d56a4d32ec84a9d68f6a52519c9e07da5ee266b Mon Sep 17 00:00:00 2001
From: Lactozilla <jp6781615@gmail.com>
Date: Tue, 15 Aug 2023 12:37:18 -0300
Subject: [PATCH] Move splitscreen code path out of SetSkinLocal and into
 SendNameAndColor

---
 src/d_main.c   |  3 +++
 src/d_netcmd.c | 20 ++++++++++----------
 2 files changed, 13 insertions(+), 10 deletions(-)

diff --git a/src/d_main.c b/src/d_main.c
index 22a6762554..5c6db2e299 100644
--- a/src/d_main.c
+++ b/src/d_main.c
@@ -981,6 +981,7 @@ void D_StartTitle(void)
 	emeralds = 0;
 	memset(&luabanks, 0, sizeof(luabanks));
 	lastmaploaded = 0;
+	pickedchar = R_SkinAvailable(cv_defaultskin.string);
 
 	// In case someone exits out at the same time they start a time attack run,
 	// reset modeattacking
@@ -1626,6 +1627,8 @@ void D_SRB2Main(void)
 		autostart = true;
 	}
 
+	pickedchar = R_SkinAvailable(cv_defaultskin.string);
+
 	// user settings come before "+" parameters.
 	if (dedicated)
 		COM_ImmedExecute(va("exec \"%s"PATHSEP"adedserv.cfg\"\n", srb2home));
diff --git a/src/d_netcmd.c b/src/d_netcmd.c
index 9ad0b0ab08..8fdb73af4b 100644
--- a/src/d_netcmd.c
+++ b/src/d_netcmd.c
@@ -1230,17 +1230,13 @@ static void SetSkinLocal(INT32 skinnum)
 	{
 		// Starring Metal Sonic as themselves, obviously.
 		SetPlayerSkinByNum(consoleplayer, 5);
+		return;
 	}
-	else if (splitscreen)
-	{
-		INT32 foundskin = R_SkinAvailable(cv_skin.string);
-		if (foundskin != -1 && R_SkinUsable(consoleplayer, foundskin))
-			SetPlayerSkinByNum(consoleplayer, foundskin);
-		else
-			SetPlayerSkinByNum(consoleplayer, GetPlayerDefaultSkin(consoleplayer));
-	}
-	else
+
+	if (skinnum != -1 && R_SkinUsable(consoleplayer, skinnum))
 		SetPlayerSkinByNum(consoleplayer, skinnum);
+	else
+		SetPlayerSkinByNum(consoleplayer, GetPlayerDefaultSkin(consoleplayer));
 }
 
 static void SetColorLocal(void)
@@ -1294,7 +1290,11 @@ static void SendNameAndColor(void)
 		strcpy(player_names[consoleplayer], cv_playername.zstring);
 
 		SetColorLocal();
-		SetSkinLocal(pickedchar);
+
+		if (splitscreen)
+			SetSkinLocal(R_SkinAvailable(cv_skin.string));
+		else
+			SetSkinLocal(pickedchar);
 		return;
 	}
 
-- 
GitLab