Resolved #8766 - gifting cities no longer causes crash

This commit is contained in:
Yair Morgenstern
2023-02-27 17:07:06 +02:00
parent 8f7fcb2e3e
commit c20c05a446

View File

@ -133,6 +133,12 @@ class TradeLogic(val ourCivilization:Civilization, val otherCivilization: Civili
}
}
if (currentTrade.ourOffers.isEmpty()){ // Must evaluate before moving, or else cities have already moved and we get an exception
val goldValueOfTrade = TradeEvaluation().getTradeAcceptability(currentTrade, ourCivilization, otherCivilization)
val diplomaticValueOfTrade = CityStateFunctions(ourCivilization).influenceGainedByGift(otherCivilization, goldValueOfTrade) / 10
ourCivilization.getDiplomacyManager(otherCivilization).addModifier(DiplomaticModifiers.GaveUsGifts, diplomaticValueOfTrade.toFloat())
}
// Transfer of cities needs to happen before peace treaty, to avoid our units teleporting out of areas that soon will be ours
for (offer in currentTrade.theirOffers.filterNot { it.type == TradeType.Treaty })
transferTrade(otherCivilization, ourCivilization, offer)
@ -144,12 +150,6 @@ class TradeLogic(val ourCivilization:Civilization, val otherCivilization: Civili
for (offer in currentTrade.ourOffers.filter { it.type == TradeType.Treaty })
transferTrade(ourCivilization, otherCivilization, offer)
if (currentTrade.ourOffers.isEmpty()){
val goldValueOfTrade = TradeEvaluation().getTradeAcceptability(currentTrade, ourCivilization, otherCivilization)
val diplomaticValueOfTrade = CityStateFunctions(ourCivilization).influenceGainedByGift(otherCivilization, goldValueOfTrade) / 10
ourCivilization.getDiplomacyManager(otherCivilization).addModifier(DiplomaticModifiers.GaveUsGifts, diplomaticValueOfTrade.toFloat())
}
ourCivilization.cache.updateCivResources()
ourCivilization.updateStatsForNextTurn()