diff --git a/src/d_netcmd.c b/src/d_netcmd.c index 2cd300895..a3e9cab44 100644 --- a/src/d_netcmd.c +++ b/src/d_netcmd.c @@ -1382,7 +1382,7 @@ UINT8 CanChangeSkin(INT32 playernum) return true; // Not in game, so you can change - if (players[playernum].spectator || players[playernum].playerstate == PST_DEAD || players[playernum].playerstate == PST_REBORN) + if (players[playernum].spectator) return true; // Check for freeeplay @@ -1405,6 +1405,26 @@ UINT8 CanChangeSkin(INT32 playernum) return true; } +boolean CanChangeSkinWhilePlaying(INT32 playernum) +{ + INT32 i; + + // Force skin in effect. + if ((cv_forceskin.value != -1)) + return false; + + for (i = 0; i < MAXPLAYERS; ++i) + { + if (D_IsPlayerHumanAndGaming(i) && + !P_IsLocalPlayer(&players[i])) + { + return CanChangeSkin(playernum); + } + } + + return true; +} + static void ForceAllSkins(INT32 forcedskin) { INT32 i, j; @@ -6070,7 +6090,7 @@ static void Skin_OnChange(void) return; } - if (CanChangeSkin(consoleplayer)) + if (CanChangeSkinWhilePlaying(consoleplayer)) SendNameAndColor(0); else { @@ -6089,7 +6109,7 @@ static void Skin2_OnChange(void) if (!Playing() || !splitscreen) return; // do whatever you want - if (CanChangeSkin(g_localplayers[1])) + if (CanChangeSkinWhilePlaying(g_localplayers[1])) SendNameAndColor(1); else { @@ -6103,7 +6123,7 @@ static void Skin3_OnChange(void) if (!Playing() || splitscreen < 2) return; // do whatever you want - if (CanChangeSkin(g_localplayers[2])) + if (CanChangeSkinWhilePlaying(g_localplayers[2])) SendNameAndColor(2); else { @@ -6117,7 +6137,7 @@ static void Skin4_OnChange(void) if (!Playing() || splitscreen < 3) return; // do whatever you want - if (CanChangeSkin(g_localplayers[3])) + if (CanChangeSkinWhilePlaying(g_localplayers[3])) SendNameAndColor(3); else { diff --git a/src/d_netcmd.h b/src/d_netcmd.h index 0f6b50ad8..6851163cb 100644 --- a/src/d_netcmd.h +++ b/src/d_netcmd.h @@ -282,5 +282,6 @@ void LiveStudioAudience(void); // used for the player setup menu UINT8 CanChangeSkin(INT32 playernum); +boolean CanChangeSkinWhilePlaying(INT32 playernum); #endif