diff --git a/src/command.c b/src/command.c index 399714bd0d65758489634477a8bf84b2444ff659..8f9166361d35f9893160d6a2ca54f88e40b1147a 100644 --- a/src/command.c +++ b/src/command.c @@ -1988,7 +1988,7 @@ static void CV_SetCVar(consvar_t *var, const char *value, boolean stealth) if (!var->string) I_Error("CV_Set: %s no string set!\n", var->name); #endif - if (!var || !var->string || !value || !stricmp(var->string, value)) + if (!var || !var->string || !value || (var->can_change == NULL && !stricmp(var->string, value))) return; // no changes if (var->flags & CV_NETVAR) diff --git a/src/netcode/d_netcmd.c b/src/netcode/d_netcmd.c index 64feeeda314e6423354fbca9635fa30d6769db51..961de44c2dd8a5987f6f0e0bdd37032d8ec41ce1 100644 --- a/src/netcode/d_netcmd.c +++ b/src/netcode/d_netcmd.c @@ -4910,14 +4910,16 @@ static void Name2_OnChange(void) static boolean Skin_CanChange(const char *valstr) { - (void)valstr; - if (!Playing()) return true; // do whatever you want if (!(multiplayer || netgame)) // In single player. return true; + // You already are that skin. + if (stricmp(skins[players[consoleplayer].skin]->name, valstr) == 0) + return false; + if (CanChangeSkin(consoleplayer) && !P_PlayerMoving(consoleplayer)) return true; else @@ -4929,11 +4931,13 @@ static boolean Skin_CanChange(const char *valstr) static boolean Skin2_CanChange(const char *valstr) { - (void)valstr; - if (!Playing() || !splitscreen) return true; // do whatever you want + // You already are that skin. + if (stricmp(skins[players[secondarydisplayplayer].skin]->name, valstr) == 0) + return false; + if (CanChangeSkin(secondarydisplayplayer) && !P_PlayerMoving(secondarydisplayplayer)) return true; else