diff --git a/core/src/com/unciv/logic/automation/unit/SpecificUnitAutomation.kt b/core/src/com/unciv/logic/automation/unit/SpecificUnitAutomation.kt index b110bc3060..74a2243c75 100644 --- a/core/src/com/unciv/logic/automation/unit/SpecificUnitAutomation.kt +++ b/core/src/com/unciv/logic/automation/unit/SpecificUnitAutomation.kt @@ -259,7 +259,10 @@ object SpecificUnitAutomation { val closestCityStateTile = unit.civ.gameInfo.civilizations .filter { - !unit.civ.isAtWarWith(it) && it.isCityState() && it.cities.isNotEmpty() + it != unit.civ + && !unit.civ.isAtWarWith(it) + && it.isCityState() + && it.cities.isNotEmpty() } .flatMap { it.cities[0].getTiles() } .filter { unit.civ.hasExplored(it) } diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyFunctions.kt b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyFunctions.kt index 94dbf55429..79dfc5dd9f 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyFunctions.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyFunctions.kt @@ -6,8 +6,8 @@ import com.unciv.logic.civilization.Civilization import com.unciv.logic.civilization.NotificationCategory import com.unciv.logic.civilization.NotificationIcon import com.unciv.logic.civilization.PopupAlert -import com.unciv.logic.map.tile.Tile import com.unciv.logic.map.mapunit.UnitMovement +import com.unciv.logic.map.tile.Tile import com.unciv.models.ruleset.unique.UniqueType import com.unciv.models.stats.Stat import com.unciv.models.stats.Stats @@ -37,7 +37,7 @@ class DiplomacyFunctions(val civInfo:Civilization){ otherCiv.diplomacyFunctions.meetCiv(civInfo, warOnContact) } - fun meetCiv(otherCiv: Civilization, warOnContact: Boolean = false) { + private fun meetCiv(otherCiv: Civilization, warOnContact: Boolean = false) { civInfo.diplomacy[otherCiv.civName] = DiplomacyManager(civInfo, otherCiv.civName) .apply { diplomaticStatus = DiplomaticStatus.Peace } diff --git a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsGreatPerson.kt b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsGreatPerson.kt index 160eda4b77..30f27e1b4d 100644 --- a/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsGreatPerson.kt +++ b/core/src/com/unciv/ui/screens/worldscreen/unit/actions/UnitActionsGreatPerson.kt @@ -88,7 +88,8 @@ object UnitActionsGreatPerson { } UniqueType.CanTradeWithCityStateForGoldAndInfluence -> { val canConductTradeMission = tile.owningCity?.civ?.isCityState() == true - && tile.owningCity?.civ?.isAtWarWith(unit.civ) == false + && tile.owningCity?.civ != unit.civ + && tile.owningCity?.civ?.isAtWarWith(unit.civ) == false val influenceEarned = unique.params[0].toFloat() actionList += UnitAction( UnitActionType.ConductTradeMission, @@ -98,9 +99,11 @@ object UnitActionsGreatPerson { for (goldUnique in unit.civ.getMatchingUniques(UniqueType.PercentGoldFromTradeMissions)) goldEarned *= goldUnique.params[0].toPercent() unit.civ.addGold(goldEarned.toInt()) - tile.owningCity!!.civ.getDiplomacyManager(unit.civ).addInfluence(influenceEarned) - unit.civ.addNotification("Your trade mission to [${tile.owningCity!!.civ}] has earned you [${goldEarned}] gold and [$influenceEarned] influence!", - NotificationCategory.General, tile.owningCity!!.civ.civName, NotificationIcon.Gold, NotificationIcon.Culture) + val tileOwningCiv = tile.owningCity!!.civ + + tileOwningCiv.getDiplomacyManager(unit.civ).addInfluence(influenceEarned) + unit.civ.addNotification("Your trade mission to [$tileOwningCiv] has earned you [$goldEarned] gold and [$influenceEarned] influence!", + NotificationCategory.General, tileOwningCiv.civName, NotificationIcon.Gold, NotificationIcon.Culture) unit.consume() }.takeIf { canConductTradeMission } )