Units that can't build roads should not have connect roads automation. (#10760)

This commit is contained in:
Will Allen
2023-12-17 14:02:59 -06:00
committed by GitHub
parent 1316271ac6
commit 51e444df6d

View File

@ -271,7 +271,20 @@ object UnitActionsFromUniques {
fun getConnectRoadActions(unit: MapUnit, tile: Tile) = sequence {
if (!unit.hasUnique(UniqueType.BuildImprovements)) return@sequence
if (unit.civ.tech.getBestRoadAvailable() == RoadStatus.None) return@sequence
val unitCivBestRoad = unit.civ.tech.getBestRoadAvailable()
if (unitCivBestRoad == RoadStatus.None) return@sequence
var unitCanBuildRoad = false
val uniquesToCheck = UnitActionModifiers.getUsableUnitActionUniques(unit, UniqueType.BuildImprovements)
// If a unit has terrainFilter "Land" or improvementFilter "All", then we may proceed.
// If a unit only had improvement filter "Road" or "Railroad", then we need to also check if that tech is unlocked
unitCanBuildRoad = uniquesToCheck.any { it.params[0] == "Land" || it.params[0] == "All" }
|| uniquesToCheck.any {it.params[0] == "Road" } && (unitCivBestRoad == RoadStatus.Road || unitCivBestRoad == RoadStatus.Railroad)
|| uniquesToCheck.any {it.params[0] == "Railroad"} && (unitCivBestRoad == RoadStatus.Railroad)
if(!unitCanBuildRoad) return@sequence
val worldScreen = GUI.getWorldScreen()
yield(UnitAction(UnitActionType.ConnectRoad,
isCurrentAction = unit.isAutomatingRoadConnection(),