From 0f26671bcf87e27f60f8dee25efdec45e4c31ecd Mon Sep 17 00:00:00 2001 From: Yair Morgenstern Date: Mon, 3 Feb 2020 16:24:10 +0200 Subject: [PATCH] Resolved #1835 - game no longer crashes when losing alliance with a city-state due to it being captured --- core/src/com/unciv/logic/civilization/CivilizationInfo.kt | 8 ++++++-- .../logic/civilization/diplomacy/DiplomacyManager.kt | 5 +++-- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt index ff9b7356be..a28a0ee71b 100644 --- a/core/src/com/unciv/logic/civilization/CivilizationInfo.kt +++ b/core/src/com/unciv/logic/civilization/CivilizationInfo.kt @@ -542,15 +542,19 @@ class CivilizationInfo { val oldAllyName = allyCivName allyCivName = newAllyName + // If the city-state is captured by a civ, it stops being the ally of the civ it was previously an ally of. + // This means that it will NOT HAVE a capital at that time, so if we run getCapital we'll get a crash! + val capitalLocation = if(cities.isNotEmpty()) getCapital().location else null + if (newAllyName != "") { val newAllyCiv = gameInfo.getCivilization(newAllyName) - newAllyCiv.addNotification("We have allied with [${civName}].", getCapital().location, Color.GREEN) + newAllyCiv.addNotification("We have allied with [${civName}].", capitalLocation, Color.GREEN) newAllyCiv.updateViewableTiles() newAllyCiv.updateDetailedCivResources() } if (oldAllyName != "") { val oldAllyCiv = gameInfo.getCivilization(oldAllyName) - oldAllyCiv.addNotification("We have lost alliance with [${civName}].", getCapital().location, Color.RED) + oldAllyCiv.addNotification("We have lost alliance with [${civName}].", capitalLocation, Color.RED) oldAllyCiv.updateViewableTiles() oldAllyCiv.updateDetailedCivResources() } diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt index 2e6beb9811..bb4f8166de 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyManager.kt @@ -226,8 +226,9 @@ class DiplomacyManager() { * This includes friendly and allied city-states and the open border treaties. */ fun isConsideredAllyTerritory(): Boolean { - return (hasOpenBorders) - || (civInfo.isCityState() && relationshipLevel() >= RelationshipLevel.Friend) + if(civInfo.isCityState() && relationshipLevel() >= RelationshipLevel.Friend) + return true + return hasOpenBorders } //endregion