Index: AE/Installer/trunk/source/installer.cpp
===================================================================
--- AE/Installer/trunk/source/installer.cpp	(revision 550)
+++ AE/Installer/trunk/source/installer.cpp	(revision 551)
@@ -598,35 +598,51 @@
 		directory_iterator end_iter;
 		
-		for ( directory_iterator dir_itr( vanilla_dir );
-			 dir_itr != end_iter;
-			 ++dir_itr )
-		{
-			if ( is_directory( dir_itr->status() ) )
-			{
+		
+		char levelnums[256] = {0};
+
+
+
+		for(int k = 0; k < 256; k++) {
+			if( exists( (path)("./VanillaDats/level" + lexical_cast<std::string>(k) + "_final/") ) ) {
+					levelnums[k] = 1;
+					
+			}
+		}
+	
+		for (int i = installedMods.size() - 1; i >= 0; i--) {							//Iterates through the installed mods (backwards :P)
+			for (unsigned int j = 0; j < globalPackages.size(); ++j) {				//looking in the global packages
+				if (globalPackages[j].modStringName == installedMods[i]) {	//for a mod that has BSL in it
+					for(int k = 0; k < 256; k++) {
+						if( globalPackages[j].hasOnis && 
+							exists( (path)("packages/" + globalPackages[j].modStringName + "/oni/level" + lexical_cast<std::string>(k) + "_final/") ) ) {
+							levelnums[k] = 1;
+							
+						}
+					}
+				}
+			}
+		}
+		for (int levelnum = 0; levelnum < 256; levelnum++) 
+			if (levelnums[levelnum])
 				numberOfDats++;
-			}
-		}
-		
+
 		out << numberOfDats;
 		datString = out.str();
-		
-		for ( directory_iterator dir_itr( vanilla_dir );
-			 dir_itr != end_iter;
-			 ++dir_itr )
-		{
+
+		for(int levelnum = 0; levelnum < 256; levelnum++) {
 			try
 			{
-				if ( is_directory( dir_itr->status() ) )
+				if ( levelnums[levelnum] )
 				{
-					importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + dir_itr->path().filename() + " ";
+					importCommand = strOniSplit + " " + strImportOption + " " + vanilla_dir.string() + "level" + lexical_cast<std::string>(levelnum) + "_Final ";
 					for (unsigned int i = 0; i < installedMods.size(); ++i) {
-						if (exists("packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename()  ))
-							importCommand += " packages/" + installedMods[i] + "/oni/" + dir_itr->path().filename();
+						if (exists((path)("packages/" + installedMods[i] + "/oni/level" + lexical_cast<std::string>(levelnum) + "_final") ))
+							importCommand += " packages/" + installedMods[i] + "/oni/level" + lexical_cast<std::string>(levelnum) + "_Final";
 					}
-					importCommand += " ../GameDataFolder/" + dir_itr->path().filename() + ".dat >> Install.log";
+					importCommand += " ../GameDataFolder/level" + lexical_cast<std::string>(levelnum) + "_Final.dat >> Install.log";
 					
 					setProgressBar( (int)(1000 * (float)(j-1) / (float)numberOfDats) ); //100% * dat we're on / total dats
 					setStatusArea("Step " + lexical_cast<std::string>(j) + '/' + lexical_cast<std::string>(numberOfDats)+ ": Importing " +
-								  dir_itr->path().filename() + " ");
+								  "level" + lexical_cast<std::string>(levelnum) + "_Final"+ " ");
 					system(importCommand.c_str());
 					j++;
