From bc624ab65413dd618dc37a4ba7b2e9375cd85e9c Mon Sep 17 00:00:00 2001 From: Ivan Savenko Date: Thu, 2 Jan 2025 13:46:49 +0000 Subject: [PATCH] Do not add non-existing buildings to H3 towns Such as Mages Guild 4-5 to Fortress, or all 4 special buildings to towns without them --- lib/entities/faction/CTownHandler.cpp | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/lib/entities/faction/CTownHandler.cpp b/lib/entities/faction/CTownHandler.cpp index 91d05852b..4d3bc5476 100644 --- a/lib/entities/faction/CTownHandler.cpp +++ b/lib/entities/faction/CTownHandler.cpp @@ -389,13 +389,10 @@ void CTownHandler::loadBuilding(CTown * town, const std::string & stringID, cons void CTownHandler::loadBuildings(CTown * town, const JsonNode & source) { - if(source.isStruct()) + for(const auto & node : source.Struct()) { - for(const auto & node : source.Struct()) - { - if (!node.second.isNull()) - loadBuilding(town, node.first, node.second); - } + if (!node.second.isNull()) + loadBuilding(town, node.first, node.second); } } @@ -874,6 +871,9 @@ void CTownHandler::beforeValidate(JsonNode & object) for (auto & building : object["town"]["buildings"].Struct()) { + if (building.second.isNull()) + continue; + inheritBuilding(building.first, building.second); if (building.second.Struct().count("type")) inheritBuilding(building.second["type"].String(), building.second);