diff --git a/lib/mapObjects/CGTownInstance.cpp b/lib/mapObjects/CGTownInstance.cpp index e9ca3c9cd..819d15723 100644 --- a/lib/mapObjects/CGTownInstance.cpp +++ b/lib/mapObjects/CGTownInstance.cpp @@ -1247,6 +1247,14 @@ void CGTownInstance::postDeserialize() setNodeType(CBonusSystemNode::TOWN); for(auto & building : rewardableBuildings) building.second->town = this; + + if (getFactionID().hasValue()) + { + vstd::erase_if(builtBuildings, [this](const BuildingID & buildID) + { + return getTown()->buildings.count(buildID) == 0; + }); + } } std::map CGTownInstance::convertOldBuildings(std::vector oldVector)