mirror of
https://github.com/yairm210/Unciv.git
synced 2025-09-23 11:34:54 -04:00
Resolved #13810 - Fixed city state alliance valuation
This commit is contained in:
parent
9585cd8b44
commit
ca44be05d5
@ -143,8 +143,7 @@ object NextTurnAutomation {
|
|||||||
var value = 0
|
var value = 0
|
||||||
val civPersonality = civInfo.getPersonality()
|
val civPersonality = civInfo.getPersonality()
|
||||||
|
|
||||||
val bonuses = cityState.cityStateFunctions
|
val bonuses = CityStateFunctions.getCityStateBonuses(cityState.cityStateType, RelationshipLevel.Ally).toList()
|
||||||
.getCityStateBonuses(civInfo.cityStateType, RelationshipLevel.Ally).toList()
|
|
||||||
|
|
||||||
// Optimized version of canProvideStat so we don't need to fetch bonuses multiple times
|
// Optimized version of canProvideStat so we don't need to fetch bonuses multiple times
|
||||||
@Readonly fun canProvideStat(stat: Stat) = bonuses.any { it.stats[stat] > 0 }
|
@Readonly fun canProvideStat(stat: Stat) = bonuses.any { it.stats[stat] > 0 }
|
||||||
|
@ -815,15 +815,20 @@ class CityStateFunctions(val civInfo: Civilization) {
|
|||||||
.flatMap { it.getMultiplied(gameContext) }
|
.flatMap { it.getMultiplied(gameContext) }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
companion object {
|
||||||
@Readonly
|
@Readonly
|
||||||
fun getCityStateBonuses(cityStateType: CityStateType, relationshipLevel: RelationshipLevel, uniqueType: UniqueType? = null): Sequence<Unique> {
|
fun getCityStateBonuses(
|
||||||
val cityStateUniqueMap = when (relationshipLevel) {
|
cityStateType: CityStateType,
|
||||||
RelationshipLevel.Ally -> cityStateType.allyBonusUniqueMap
|
relationshipLevel: RelationshipLevel,
|
||||||
RelationshipLevel.Friend -> cityStateType.friendBonusUniqueMap
|
uniqueType: UniqueType? = null
|
||||||
else -> return emptySequence()
|
): Sequence<Unique> {
|
||||||
|
val cityStateUniqueMap = when (relationshipLevel) {
|
||||||
|
RelationshipLevel.Ally -> cityStateType.allyBonusUniqueMap
|
||||||
|
RelationshipLevel.Friend -> cityStateType.friendBonusUniqueMap
|
||||||
|
else -> return emptySequence()
|
||||||
|
}
|
||||||
|
return if (uniqueType == null) cityStateUniqueMap.getAllUniques()
|
||||||
|
else cityStateUniqueMap.getUniques(uniqueType)
|
||||||
}
|
}
|
||||||
return if (uniqueType == null) cityStateUniqueMap.getAllUniques()
|
|
||||||
else cityStateUniqueMap.getUniques(uniqueType)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -340,7 +340,7 @@ object DiplomacyTurnManager {
|
|||||||
|
|
||||||
val variance = listOf(-1, 0, 1).random()
|
val variance = listOf(-1, 0, 1).random()
|
||||||
|
|
||||||
val provideMilitaryUnitUniques = civInfo.cityStateFunctions
|
val provideMilitaryUnitUniques = CityStateFunctions
|
||||||
.getCityStateBonuses(otherCiv().cityStateType, relationshipIgnoreAfraid(), UniqueType.CityStateMilitaryUnits)
|
.getCityStateBonuses(otherCiv().cityStateType, relationshipIgnoreAfraid(), UniqueType.CityStateMilitaryUnits)
|
||||||
.filter { it.conditionalsApply(civInfo.state) }.toList()
|
.filter { it.conditionalsApply(civInfo.state) }.toList()
|
||||||
if (provideMilitaryUnitUniques.isEmpty()) removeFlag(DiplomacyFlags.ProvideMilitaryUnit)
|
if (provideMilitaryUnitUniques.isEmpty()) removeFlag(DiplomacyFlags.ProvideMilitaryUnit)
|
||||||
|
@ -10,10 +10,7 @@ import com.unciv.UncivGame
|
|||||||
import com.unciv.logic.civilization.AlertType
|
import com.unciv.logic.civilization.AlertType
|
||||||
import com.unciv.logic.civilization.Civilization
|
import com.unciv.logic.civilization.Civilization
|
||||||
import com.unciv.logic.civilization.PopupAlert
|
import com.unciv.logic.civilization.PopupAlert
|
||||||
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
import com.unciv.logic.civilization.diplomacy.*
|
||||||
import com.unciv.logic.civilization.diplomacy.DiplomacyManager
|
|
||||||
import com.unciv.logic.civilization.diplomacy.DiplomaticStatus
|
|
||||||
import com.unciv.logic.civilization.diplomacy.RelationshipLevel
|
|
||||||
import com.unciv.logic.civilization.managers.AssignedQuest
|
import com.unciv.logic.civilization.managers.AssignedQuest
|
||||||
import com.unciv.logic.trade.TradeLogic
|
import com.unciv.logic.trade.TradeLogic
|
||||||
import com.unciv.logic.trade.TradeOffer
|
import com.unciv.logic.trade.TradeOffer
|
||||||
@ -177,7 +174,7 @@ class CityStateDiplomacyTable(private val diplomacyScreen: DiplomacyScreen) {
|
|||||||
|
|
||||||
fun addBonusLabels(header: String, bonusLevel: RelationshipLevel, currentRelationLevel: RelationshipLevel) {
|
fun addBonusLabels(header: String, bonusLevel: RelationshipLevel, currentRelationLevel: RelationshipLevel) {
|
||||||
|
|
||||||
val bonuses = viewingCiv.cityStateFunctions
|
val bonuses = CityStateFunctions
|
||||||
.getCityStateBonuses(otherCiv.cityStateType, bonusLevel)
|
.getCityStateBonuses(otherCiv.cityStateType, bonusLevel)
|
||||||
.filterNot { it.isHiddenToUsers() }
|
.filterNot { it.isHiddenToUsers() }
|
||||||
if (bonuses.none()) return
|
if (bonuses.none()) return
|
||||||
|
Loading…
x
Reference in New Issue
Block a user