diff --git a/src/deh_soc.c b/src/deh_soc.c
index e508c8d495a6bc02cf78b31f35a4f2c9db5709f0..849d9a0ace5eb4eb2047b7309f67dcf1c2e8d790 100644
--- a/src/deh_soc.c
+++ b/src/deh_soc.c
@@ -4087,14 +4087,28 @@ void readcupheader(MYFILE *f, cupheader_t *cup)
 			}
 			else if (fastcmp(word, "EMERALDNUM"))
 			{
-				if (i >= 0 && i <= 14)
-					cup->emeraldnum = (UINT8)i;
+				if (!mainwads || (refreshdirmenu & REFRESHDIR_GAMEDATA))
+				{
+					if (i >= 0 && i <= 14)
+						cup->emeraldnum = (UINT8)i;
+					else
+						deh_warning("%s Cup: invalid emerald number %d", cup->name, i);
+				}
 				else
-					deh_warning("%s Cup: invalid emerald number %d", cup->name, i);
+				{
+					deh_warning("You must define a custom gamedata to use \"%s\"", word);
+				}
 			}
 			else if (fastcmp(word, "PLAYCREDITS"))
 			{
-				cup->playcredits = (i != 0 || word2[0] == 'T' || word2[0] == 'Y');
+				if (!mainwads || (refreshdirmenu & REFRESHDIR_GAMEDATA))
+				{
+					cup->playcredits = (i != 0 || word2[0] == 'T' || word2[0] == 'Y');
+				}
+				else
+				{
+					deh_warning("You must define a custom gamedata to use \"%s\"", word);
+				}
 			}
 			else
 				deh_warning("%s Cup: unknown word '%s'", cup->name, word);