diff --git a/core/src/com/unciv/logic/trade/TradeLogic.kt b/core/src/com/unciv/logic/trade/TradeLogic.kt index b55446bd9b..97bd523c00 100644 --- a/core/src/com/unciv/logic/trade/TradeLogic.kt +++ b/core/src/com/unciv/logic/trade/TradeLogic.kt @@ -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()