Przeglądaj źródła

Fixes for loading 1.5 mods in vcmi 1.6

Ivan Savenko 1 rok temu
rodzic
commit
a22de74323

+ 2 - 2
lib/entities/faction/CTownHandler.cpp

@@ -883,8 +883,8 @@ void CTownHandler::beforeValidate(JsonNode & object)
 		if (building.second.Struct().count("onVisitBonuses"))
 		{
 			building.second["configuration"]["visitMode"] = JsonNode("bonus");
-			building.second["configuration"]["visitMode"]["rewards"][0]["message"] = building.second["description"];
-			building.second["configuration"]["visitMode"]["rewards"][0]["bonuses"] = building.second["onVisitBonuses"];
+			building.second["configuration"]["rewards"][0]["message"] = building.second["description"];
+			building.second["configuration"]["rewards"][0]["bonuses"] = building.second["onVisitBonuses"];
 		}
 	}
 }

+ 7 - 2
lib/mapObjectConstructors/CObjectClassesHandler.cpp

@@ -207,8 +207,13 @@ TObjectTypeHandler CObjectClassesHandler::loadSubObjectFromJson(const std::strin
 
 	// Compatibility with 1.5 mods for 1.6. To be removed in 1.7
 	// Detect banks that use old format and load them using old bank hander
-	if (baseObject->id == Obj::CREATURE_BANK && entry.Struct().count("levels") && !entry.Struct().count("rewards"))
-		handler = "bank";
+	if (baseObject->id == Obj::CREATURE_BANK)
+	{
+		if (entry.Struct().count("levels") && !entry.Struct().count("rewards"))
+			handler = "bank";
+		else
+			handler = "configurable";
+	}
 
 	auto createdObject = handlerConstructors.at(handler)();