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
|
||||
val civPersonality = civInfo.getPersonality()
|
||||
|
||||
val bonuses = cityState.cityStateFunctions
|
||||
.getCityStateBonuses(civInfo.cityStateType, RelationshipLevel.Ally).toList()
|
||||
val bonuses = CityStateFunctions.getCityStateBonuses(cityState.cityStateType, RelationshipLevel.Ally).toList()
|
||||
|
||||
// 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 }
|
||||
|
@ -815,15 +815,20 @@ class CityStateFunctions(val civInfo: Civilization) {
|
||||
.flatMap { it.getMultiplied(gameContext) }
|
||||
}
|
||||
|
||||
|
||||
@Readonly
|
||||
fun getCityStateBonuses(cityStateType: CityStateType, relationshipLevel: RelationshipLevel, uniqueType: UniqueType? = null): Sequence<Unique> {
|
||||
val cityStateUniqueMap = when (relationshipLevel) {
|
||||
RelationshipLevel.Ally -> cityStateType.allyBonusUniqueMap
|
||||
RelationshipLevel.Friend -> cityStateType.friendBonusUniqueMap
|
||||
else -> return emptySequence()
|
||||
companion object {
|
||||
@Readonly
|
||||
fun getCityStateBonuses(
|
||||
cityStateType: CityStateType,
|
||||
relationshipLevel: RelationshipLevel,
|
||||
uniqueType: UniqueType? = null
|
||||
): 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 provideMilitaryUnitUniques = civInfo.cityStateFunctions
|
||||
val provideMilitaryUnitUniques = CityStateFunctions
|
||||
.getCityStateBonuses(otherCiv().cityStateType, relationshipIgnoreAfraid(), UniqueType.CityStateMilitaryUnits)
|
||||
.filter { it.conditionalsApply(civInfo.state) }.toList()
|
||||
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.Civilization
|
||||
import com.unciv.logic.civilization.PopupAlert
|
||||
import com.unciv.logic.civilization.diplomacy.DiplomacyFlags
|
||||
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.diplomacy.*
|
||||
import com.unciv.logic.civilization.managers.AssignedQuest
|
||||
import com.unciv.logic.trade.TradeLogic
|
||||
import com.unciv.logic.trade.TradeOffer
|
||||
@ -177,7 +174,7 @@ class CityStateDiplomacyTable(private val diplomacyScreen: DiplomacyScreen) {
|
||||
|
||||
fun addBonusLabels(header: String, bonusLevel: RelationshipLevel, currentRelationLevel: RelationshipLevel) {
|
||||
|
||||
val bonuses = viewingCiv.cityStateFunctions
|
||||
val bonuses = CityStateFunctions
|
||||
.getCityStateBonuses(otherCiv.cityStateType, bonusLevel)
|
||||
.filterNot { it.isHiddenToUsers() }
|
||||
if (bonuses.none()) return
|
||||
|
Loading…
x
Reference in New Issue
Block a user