Resolved #3331 - resources for city-state quests are taken from resources on the map, to avoid unfinishable quests

This commit is contained in:
Yair Morgenstern
2020-12-28 22:23:20 +02:00
parent d0a59889c4
commit 03ddd3c410
3 changed files with 7 additions and 8 deletions

View File

@ -190,10 +190,6 @@ class CivilizationInfo {
return newResourceSupplyList
}
fun getViewableResources(): List<TileResource> =
gameInfo.ruleSet.tileResources.values
.filter { it.revealedBy == null || tech.isResearched(it.revealedBy!!) }
fun isCapitalConnectedToCity(city: CityInfo): Boolean = citiesConnectedToCapitalToMediums.keys.contains(city)

View File

@ -12,7 +12,6 @@ import com.unciv.models.ruleset.QuestName
import com.unciv.models.ruleset.tile.ResourceType
import com.unciv.models.ruleset.tile.TileResource
import com.unciv.models.ruleset.unit.BaseUnit
import com.unciv.models.translations.equalsPlaceholderText
import com.unciv.models.translations.fillPlaceholders
import com.unciv.ui.utils.randomWeighted
import kotlin.math.max
@ -453,11 +452,15 @@ class QuestManager {
val ownedByCityStateResources = civInfo.detailedCivResources.map { it.resource }
val ownedByMajorResources = challenger.detailedCivResources.map { it.resource }
val notOwnedResources = challenger.getViewableResources().filter {
val resourcesOnMap = civInfo.gameInfo.tileMap.values.asSequence().mapNotNull { it.resource }.distinct()
val viewableResourcesForChallenger = resourcesOnMap.map { civInfo.gameInfo.ruleSet.tileResources[it]!! }
.filter { it.revealedBy == null || challenger.tech.isResearched(it.revealedBy!!) }
val notOwnedResources = viewableResourcesForChallenger.filter {
it.resourceType != ResourceType.Bonus &&
!ownedByCityStateResources.contains(it) &&
!ownedByMajorResources.contains(it)
}
}.toList()
if (notOwnedResources.isNotEmpty())
return notOwnedResources.random()

View File

@ -279,7 +279,7 @@ object UnitActions {
val canConstruct = !tile.isCityCenter()
&& unit.civInfo.gameInfo.ruleSet.tileImprovements.values
.any { tile.canBuildImprovement(it, unit.civInfo) }
.any { tile.canBuildImprovement(it, unit.civInfo) }
actionList += UnitAction(
type = UnitActionType.ConstructImprovement,
isCurrentAction = unit.currentTile.hasImprovementInProgress(),