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 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 val uniqueTypes = HashSet<UniqueType>() // We look through these to determine what kinds of city states we have
for (cityStateType in ruleset.cityStateTypes.values){ val nation = ruleset.nations[civInfo.civName]!!
uniqueTypes.addAll(cityStateType.friendBonusUniqueMap.getAllUniques().mapNotNull { it.type }) val cityStateType = ruleset.cityStateTypes[nation.cityStateType]!!
uniqueTypes.addAll(cityStateType.allyBonusUniqueMap.getAllUniques().mapNotNull { it.type }) uniqueTypes.addAll(cityStateType.friendBonusUniqueMap.getAllUniques().mapNotNull { it.type })
} uniqueTypes.addAll(cityStateType.allyBonusUniqueMap.getAllUniques().mapNotNull { it.type })
// CS Personality // CS Personality
civInfo.cityStatePersonality = CityStatePersonality.values().random() civInfo.cityStatePersonality = CityStatePersonality.values().random()
// Mercantile bonus resources // Mercantile bonus resources
if (uniqueTypes.contains(UniqueType.CityStateUniqueLuxury)) { // Fallback for badly defined Eras.json if (uniqueTypes.contains(UniqueType.CityStateUniqueLuxury)) {
civInfo.cityStateResource = allMercantileResources.randomOrNull() civInfo.cityStateResource = allMercantileResources.randomOrNull()
} }
// Unique unit for militaristic city-states // Unique unit for militaristic city-states
if (uniqueTypes.contains(UniqueType.CityStateMilitaryUnits)) { if (uniqueTypes.contains(UniqueType.CityStateMilitaryUnits)) {
val possibleUnits = ruleset.units.values.filter { it.requiredTech != null 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 && 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 && it.uniqueTo != null && it.uniqueTo in unusedMajorCivs // Must be from a major civ not in the game