diff --git a/src/m_menu.c b/src/m_menu.c
index 5f0390749408f8658f7b3ffb1b2719825e54515f..7975dd992d1e585a65c0a975d9cec4234fa176c9 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -1343,7 +1343,7 @@ static menuitem_t OP_NetgameOptionsMenu[] =
 	{IT_STRING | IT_CVAR, NULL, "Sudden Death",          &cv_suddendeath,      90},
 	{IT_STRING | IT_CVAR, NULL, "Player respawn delay",  &cv_respawntime,      98},
 
-	{IT_STRING | IT_CVAR, NULL, "Force Skin #",          &cv_forceskin,          114},
+	{IT_STRING | IT_CVAR, NULL, "Force Skin",            &cv_forceskin,          114},
 	{IT_STRING | IT_CVAR, NULL, "Restrict skin changes", &cv_restrictskinchange, 122},
 
 	{IT_STRING | IT_CVAR, NULL, "Autobalance Teams",            &cv_autobalance,      138},
diff --git a/src/r_things.c b/src/r_things.c
index ca183d8f8dfac6d739eb965875c96764ee80df0b..6c47f0a1f60ce95ac7c31e89651942291f892f94 100644
--- a/src/r_things.c
+++ b/src/r_things.c
@@ -2308,7 +2308,7 @@ static void Sk_SetDefaultValue(skin_t *skin)
 
 	skin->thokitem = -1;
 	skin->spinitem = -1;
-	skin->revitem = -1;
+	skin->revitem = 0;
 
 	skin->highresscale = FRACUNIT>>1;
 
@@ -2345,7 +2345,8 @@ boolean R_SkinUnlock(INT32 skinnum)
 	return ((skinnum == -1) // Simplifies things elsewhere, since there's already plenty of checks for less-than-0...
 		|| (skins[skinnum].availability)
 		|| (modeattacking) // If you have someone else's run you might as well take a look
-		|| ((netgame) && (cv_forceskin.value == skinnum)) // Forceskin is weak
+		|| (Playing() && (R_SkinAvailable(mapheaderinfo[gamemap-1]->forcecharacter) == skinnum)) // Force 1.
+		|| ((netgame) && (cv_forceskin.value == skinnum)) // Force 2.
 		);
 }