diff --git a/src/w_wad.c b/src/w_wad.c
index 54d5e2075e87463b857fddbff66fba99acff6fa0..04f6a3e15dcbed38467f07ac328f0ac6e3ffff61 100644
--- a/src/w_wad.c
+++ b/src/w_wad.c
@@ -1753,24 +1753,21 @@ static int W_VerifyFile(const char *filename, lumpchecklist_t *checklist,
 	FILE *handle;
 	size_t i, j;
 	int goodfile = false;
+	int type;
 
 	if (!checklist)
 		I_Error("No checklist for %s\n", filename);
-	// open wad file
-	if ((handle = W_OpenWadFile(&filename, false)) == NULL)
-		return -1;
-
-	// detect wad file by the absence of the other supported extensions
-	if (stricmp(&filename[strlen(filename) - 4], ".soc")
-#ifdef HAVE_BLUA
-	&& stricmp(&filename[strlen(filename) - 4], ".lua")
-#endif
-	&& stricmp(&filename[strlen(filename) - 4], ".pk3"))
+	type = ResourceFileDetect(filename);
+	if (type == RET_WAD)
 	{
 		// assume wad file
 		wadinfo_t header;
 		filelump_t lumpinfo;
 
+		// open wad file
+		if ((handle = W_OpenWadFile(&filename, false)) == NULL)
+			return -1;
+
 		// read the header
 		if (fread(&header, 1, sizeof header, handle) == sizeof header
 			&& header.numlumps < INT16_MAX
@@ -1821,8 +1818,12 @@ static int W_VerifyFile(const char *filename, lumpchecklist_t *checklist,
 			if (!goodfile)
 				break;
 		}
+
+		fclose(handle);
 	}
-	fclose(handle);
+	else if (type == RET_UNKNOWN)
+		goodfile = true;
+
 	return goodfile;
 }