| 
														
															@@ -556,16 +556,9 @@ void CMap::eraseArtifactInstance(CArtifactInstance * art) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	artInstances[art->id.getNum()].dellNull();
 
														 | 
														
														 | 
														
															 	artInstances[art->id.getNum()].dellNull();
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 }
 
														 | 
														
														 | 
														
															 }
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-void CMap::addQuest(CGObjectInstance * quest)
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-{
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	auto q = dynamic_cast<IQuestObject *>(quest);
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	q->quest->qid = quests.size();
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	quests.push_back(q->quest);
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-}
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 void CMap::addNewObject(CGObjectInstance * obj)
 
														 | 
														
														 | 
														
															 void CMap::addNewObject(CGObjectInstance * obj)
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 {
 
														 | 
														
														 | 
														
															 {
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    if(obj->id != ObjectInstanceID(objects.size()))
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	if(obj->id != ObjectInstanceID(objects.size()))
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		throw std::runtime_error("Invalid object instance id");
 
														 | 
														
														 | 
														
															 		throw std::runtime_error("Invalid object instance id");
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if(obj->instanceName == "")
 
														 | 
														
														 | 
														
															 	if(obj->instanceName == "")
 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -573,19 +566,33 @@ void CMap::addNewObject(CGObjectInstance * obj) 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	auto it = instanceNames.find(obj->instanceName);
 
														 | 
														
														 | 
														
															 	auto it = instanceNames.find(obj->instanceName);
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	if(it != instanceNames.end())
 
														 | 
														
														 | 
														
															 	if(it != instanceNames.end())
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-		throw std::runtime_error("Object instance name duplicated:"+obj->instanceName);
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		throw std::runtime_error("Object instance name duplicated: "+obj->instanceName);
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    objects.push_back(obj);
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    instanceNames[obj->instanceName] = obj;
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-    addBlockVisTiles(obj);
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	objects.push_back(obj);
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	instanceNames[obj->instanceName] = obj;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	addBlockVisTiles(obj);
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	if(obj->ID == Obj::TOWN)
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	//todo: make this virtual method of CGObjectInstance
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	switch (obj->ID)
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	{
 
														 | 
														
														 | 
														
															 	{
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	case Obj::TOWN:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		towns.push_back(static_cast<CGTownInstance *>(obj));
 
														 | 
														
														 | 
														
															 		towns.push_back(static_cast<CGTownInstance *>(obj));
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	}
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	if(obj->ID == Obj::HERO)
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-	{
 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		break;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	case Obj::HERO:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		heroesOnMap.push_back(static_cast<CGHeroInstance*>(obj));
 
														 | 
														
														 | 
														
															 		heroesOnMap.push_back(static_cast<CGHeroInstance*>(obj));
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		break;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	case Obj::SEER_HUT:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	case Obj::QUEST_GUARD:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	case Obj::BORDERGUARD:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	case Obj::BORDER_GATE:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		{
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			auto q = dynamic_cast<IQuestObject *>(obj);
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			q->quest->qid = quests.size();
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			quests.push_back(q->quest);
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		}
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		break;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	default:
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		break;
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	}
 
														 | 
														
														 | 
														
															 	}
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 }
 
														 | 
														
														 | 
														
															 }
 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
 
														 | 
														
														 | 
														
															 
 
														 |