diff --git a/src/m_menu.c b/src/m_menu.c
index e44c4f84011610f0c8d05fd7328826b1a6ba7f98..afa01b4e3319114754b0d8010969fdec6ba7712b 100644
--- a/src/m_menu.c
+++ b/src/m_menu.c
@@ -5168,21 +5168,21 @@ static void M_DrawChecklist(void)
 {
 	UINT32 i, line = 0, c;
 	INT32 lastid;
+	boolean secret = false;
 
 	for (i = 0; i < MAXUNLOCKABLES; i++)
 	{
 		const char *secretname;
-		boolean secret = false;
+
+		secret = (!M_Achieved(unlockables[i].showconditionset - 1) && !unlockables[i].unlocked);
 
 		if (unlockables[i].name[0] == 0 || unlockables[i].nochecklist
 		|| !unlockables[i].conditionset || unlockables[i].conditionset > MAXCONDITIONSETS
-		|| (unlockables[i].type == SECRET_HELLATTACK // TODO: turn this into an unlockable setting instead of tying it to this unlockable
-		&& !M_Achieved(unlockables[i].showconditionset - 1) && !unlockables[i].unlocked))
+		|| (unlockables[i].type == SECRET_HELLATTACK && secret)) // TODO: turn this into an unlockable setting instead of tying it to Hell Attack
 			continue;
 
 		++line;
 		secretname = M_CreateSecretMenuOption(unlockables[i].name);
-		secret = (!M_Achieved(unlockables[i].showconditionset - 1) && !unlockables[i].unlocked);
 
 		V_DrawString(8, (line*8), V_RETURN8|(unlockables[i].unlocked ? recommendedflags : warningflags), (secret ? secretname : unlockables[i].name));