Resolved #8281 - Modding: allow roads/railroads with no required tech

This commit is contained in:
Yair Morgenstern 2023-01-25 21:04:54 +02:00
parent 18c6c9c91a
commit d91c10cb50
2 changed files with 12 additions and 7 deletions

View File

@ -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 {

View File

@ -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")