Fixed all CSs getting unique units and unique luxuries

This commit is contained in:
Yair Morgenstern 2022-12-05 20:26:47 +02:00
parent faf1b66a88
commit b351d4a4e2

View File

@ -31,23 +31,22 @@ class CityStateFunctions(val civInfo: CivilizationInfo) {
val allMercantileResources = ruleset.tileResources.values.filter { it.hasUnique(UniqueType.CityStateOnlyResource) }.map { it.name }
val uniqueTypes = HashSet<UniqueType>() // We look through these to determine what kinds of city states we have
for (cityStateType in ruleset.cityStateTypes.values){
uniqueTypes.addAll(cityStateType.friendBonusUniqueMap.getAllUniques().mapNotNull { it.type })
uniqueTypes.addAll(cityStateType.allyBonusUniqueMap.getAllUniques().mapNotNull { it.type })
}
val nation = ruleset.nations[civInfo.civName]!!
val cityStateType = ruleset.cityStateTypes[nation.cityStateType]!!
uniqueTypes.addAll(cityStateType.friendBonusUniqueMap.getAllUniques().mapNotNull { it.type })
uniqueTypes.addAll(cityStateType.allyBonusUniqueMap.getAllUniques().mapNotNull { it.type })
// CS Personality
civInfo.cityStatePersonality = CityStatePersonality.values().random()
// Mercantile bonus resources
if (uniqueTypes.contains(UniqueType.CityStateUniqueLuxury)) { // Fallback for badly defined Eras.json
if (uniqueTypes.contains(UniqueType.CityStateUniqueLuxury)) {
civInfo.cityStateResource = allMercantileResources.randomOrNull()
}
// Unique unit for militaristic city-states
if (uniqueTypes.contains(UniqueType.CityStateMilitaryUnits)) {
val possibleUnits = ruleset.units.values.filter { it.requiredTech != null
&& ruleset.eras[ruleset.technologies[it.requiredTech!!]!!.era()]!!.eraNumber > ruleset.eras[startingEra]!!.eraNumber // Not from the start era or before
&& it.uniqueTo != null && it.uniqueTo in unusedMajorCivs // Must be from a major civ not in the game