mirror of
https://github.com/yairm210/Unciv.git
synced 2025-07-06 16:28:40 +07:00
counteroffer fixes (#5749)
This commit is contained in:
@ -90,17 +90,12 @@ object NextTurnAutomation {
|
|||||||
tradeLogic.acceptTrade()
|
tradeLogic.acceptTrade()
|
||||||
otherCiv.addNotification("[${civInfo.civName}] has accepted your trade request", NotificationIcon.Trade, civInfo.civName)
|
otherCiv.addNotification("[${civInfo.civName}] has accepted your trade request", NotificationIcon.Trade, civInfo.civName)
|
||||||
} else {
|
} else {
|
||||||
tradeRequest.decline(civInfo)
|
|
||||||
/* Currently disabled until we solve the problems in https://github.com/yairm210/Unciv/issues/5728
|
|
||||||
|
|
||||||
val counteroffer = getCounteroffer(civInfo, tradeRequest)
|
val counteroffer = getCounteroffer(civInfo, tradeRequest)
|
||||||
if (counteroffer != null) {
|
if (counteroffer != null) {
|
||||||
otherCiv.addNotification("[${civInfo.civName}] has made a counteroffer to your trade request", NotificationIcon.Trade, civInfo.civName)
|
otherCiv.addNotification("[${civInfo.civName}] has made a counteroffer to your trade request", NotificationIcon.Trade, civInfo.civName)
|
||||||
otherCiv.tradeRequests.add(counteroffer)
|
otherCiv.tradeRequests.add(counteroffer)
|
||||||
} else
|
} else
|
||||||
otherCiv.addNotification("[${civInfo.civName}] has denied your trade request", NotificationIcon.Trade, civInfo.civName)
|
tradeRequest.decline(civInfo)
|
||||||
|
|
||||||
*/
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
civInfo.tradeRequests.clear()
|
civInfo.tradeRequests.clear()
|
||||||
@ -111,6 +106,9 @@ object NextTurnAutomation {
|
|||||||
* guaranteed to find the best or closest one. */
|
* guaranteed to find the best or closest one. */
|
||||||
private fun getCounteroffer(civInfo: CivilizationInfo, tradeRequest: TradeRequest): TradeRequest? {
|
private fun getCounteroffer(civInfo: CivilizationInfo, tradeRequest: TradeRequest): TradeRequest? {
|
||||||
val otherCiv = civInfo.gameInfo.getCivilization(tradeRequest.requestingCiv)
|
val otherCiv = civInfo.gameInfo.getCivilization(tradeRequest.requestingCiv)
|
||||||
|
// AIs counteroffering each other is problematic as they tend to ping-pong back and forth forever
|
||||||
|
if (otherCiv.playerType == PlayerType.AI)
|
||||||
|
return null
|
||||||
val evaluation = TradeEvaluation()
|
val evaluation = TradeEvaluation()
|
||||||
var delta = evaluation.getTradeAcceptability(tradeRequest.trade, civInfo, otherCiv)
|
var delta = evaluation.getTradeAcceptability(tradeRequest.trade, civInfo, otherCiv)
|
||||||
if (delta < 0) delta = (delta * 1.1f).toInt() // They seem very interested in this deal, let's push it a bit.
|
if (delta < 0) delta = (delta * 1.1f).toInt() // They seem very interested in this deal, let's push it a bit.
|
||||||
@ -128,6 +126,8 @@ object NextTurnAutomation {
|
|||||||
continue // Don't want to counteroffer straight gold for gold, that's silly
|
continue // Don't want to counteroffer straight gold for gold, that's silly
|
||||||
if (offer.amount == 0)
|
if (offer.amount == 0)
|
||||||
continue // For example resources gained by trade or CS
|
continue // For example resources gained by trade or CS
|
||||||
|
if (offer.type == TradeType.City)
|
||||||
|
continue // Players generally don't want to give up their cities, and they might misclick
|
||||||
val value = evaluation.evaluateBuyCost(offer, civInfo, otherCiv)
|
val value = evaluation.evaluateBuyCost(offer, civInfo, otherCiv)
|
||||||
if (value > 0)
|
if (value > 0)
|
||||||
potentialAsks[offer] = value
|
potentialAsks[offer] = value
|
||||||
|
Reference in New Issue
Block a user