From d91c10cb50fc603684c708d417f420072c97786e Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Wed, 25 Jan 2023 21:04:54 +0200 Subject: [PATCH] Resolved #8281 - Modding: allow roads/railroads with no required tech --- .../unciv/logic/civilization/managers/TechManager.kt | 12 +++++++----- .../transients/CapitalConnectionsFinder.kt | 7 +++++-- 2 files changed, 12 insertions(+), 7 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/managers/TechManager.kt b/core/src/com/unciv/logic/civilization/managers/TechManager.kt index 00a8cf4f43..3d294644b8 100644 --- a/core/src/com/unciv/logic/civilization/managers/TechManager.kt +++ b/core/src/com/unciv/logic/civilization/managers/TechManager.kt @@ -478,13 +478,15 @@ class TechManager : IsPartOfGameInfoSerialization { } fun getBestRoadAvailable(): RoadStatus { - val roadImprovement = RoadStatus.Road.improvement(getRuleset()) // May not exist in mods - if (roadImprovement == null || !isResearched(roadImprovement.techRequired!!)) return RoadStatus.None + val railroadImprovement = RoadStatus.Railroad.improvement(getRuleset()) // May not exist in mods + if (railroadImprovement != null && (railroadImprovement.techRequired==null || isResearched(railroadImprovement.techRequired!!))) + return RoadStatus.Railroad - val railroadImprovement = RoadStatus.Railroad.improvement(getRuleset()) - val canBuildRailroad = railroadImprovement != null && isResearched(railroadImprovement.techRequired!!) + val roadImprovement = RoadStatus.Road.improvement(getRuleset()) + if (roadImprovement != null && (roadImprovement.techRequired==null || isResearched(roadImprovement.techRequired!!))) + return RoadStatus.Road - return if (canBuildRailroad) RoadStatus.Railroad else RoadStatus.Road + return RoadStatus.None } fun canResearchTech(): Boolean { diff --git a/core/src/com/unciv/logic/civilization/transients/CapitalConnectionsFinder.kt b/core/src/com/unciv/logic/civilization/transients/CapitalConnectionsFinder.kt index 8b203d971d..da09197271 100644 --- a/core/src/com/unciv/logic/civilization/transients/CapitalConnectionsFinder.kt +++ b/core/src/com/unciv/logic/civilization/transients/CapitalConnectionsFinder.kt @@ -23,8 +23,11 @@ class CapitalConnectionsFinder(private val civInfo: Civilization) { private val harborFromRailroad = "$harbor-$railroad" private val ruleset = civInfo.gameInfo.ruleSet - private val roadIsResearched = ruleset.tileImprovements.containsKey(road) && civInfo.tech.isResearched(ruleset.tileImprovements[road]!!.techRequired!!) - private val railroadIsResearched = ruleset.tileImprovements.containsKey(railroad) && civInfo.tech.isResearched(ruleset.tileImprovements[railroad]!!.techRequired!!) + private val roadIsResearched = ruleset.tileImprovements[road].let { + it != null && (it.techRequired==null || civInfo.tech.isResearched(it.techRequired!!)) } + + private val railroadIsResearched = ruleset.tileImprovements[railroad].let { + it != null && (it.techRequired==null || civInfo.tech.isResearched(it.techRequired!!)) } init { citiesReachedToMediums[civInfo.getCapital()!!] = hashSetOf("Start")