diff --git a/lib/map.cpp b/lib/map.cpp
index afc14d870..7f16fdcf5 100644
--- a/lib/map.cpp
+++ b/lib/map.cpp
@@ -454,6 +454,11 @@ void Mapa::initFromBytes(const unsigned char * bufor)
 	readHeader(bufor, i);
 	tlog0<<"\tReading header: "<<th.getDif()<<std::endl;
 
+	if (victoryCondition.condition == artifact || victoryCondition.condition == transportItem)
+	{ //messy, but needed
+		allowedArtifact[victoryCondition.ID] = false;
+	}
+
 	readRumors(bufor, i);
 	tlog0<<"\tReading rumors: "<<th.getDif()<<std::endl;
 
@@ -2065,6 +2070,7 @@ void Mapa::loadQuest(CQuest * guard, const unsigned char * bufor, int & i)
 			for(int yy=0; yy<artNumber; ++yy)
 			{
 				guard->m5arts.push_back(readNormalNr(bufor,i, 2)); i+=2;
+				allowedArtifact[artNumber] = false; //these are unavaliable for random generation
 			}
 			break;
 		}