From 1e4ecab1c30a42d1464e897dc722eb033f7a00eb Mon Sep 17 00:00:00 2001 From: metablaster <44481081+metablaster@users.noreply.github.com> Date: Thu, 24 Jul 2025 08:46:52 +0200 Subject: [PATCH] Fix for null pointer in embassy trade (#13699) * G&K feature - Embassy * fix spotted errors * add icon and gameplay test * fix invalid trade logic * make embassies work for G&K only * remove introduced bug * trade evaluation and decline embassy * update civilopedia for embassies * cleanup * diplomatic modifiers * fix embassies unique * make embassies unique global and bugfix * fix AI can not trade with cs * add embassies unique for mods * mods require uniques to enable embassies * fix mods require uniques to enable embassies * update uniques.md * apply reviewed changes * apply reviewed change 2 * bugfix and cleanup * remove obsolete import * null pointer bugfix * remove toList() and function rename * fix for null pointer --- .../logic/civilization/diplomacy/DiplomacyFunctions.kt | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyFunctions.kt b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyFunctions.kt index 6caf5fc157..eda1b73efd 100644 --- a/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyFunctions.kt +++ b/core/src/com/unciv/logic/civilization/diplomacy/DiplomacyFunctions.kt @@ -113,7 +113,9 @@ class DiplomacyFunctions(val civInfo: Civilization) { */ @Readonly fun canOfferEmbassyTo(otherCiv: Civilization): Boolean { - if (!canTradeEmbassies() || !otherCiv.isMajorCiv()) return false + if (!canTradeEmbassies() || !otherCiv.isMajorCiv() || civInfo.getCapital() == null) + return false + val theirDiploManager = otherCiv.getDiplomacyManager(civInfo)!! return !civInfo.isAtWarWith(otherCiv) && !isDenouncedThisTurn(theirDiploManager) && !theirDiploManager.hasModifier(DiplomaticModifiers.EstablishedEmbassy) @@ -125,7 +127,9 @@ class DiplomacyFunctions(val civInfo: Civilization) { */ @Readonly fun canEstablishEmbassyWith(otherCiv: Civilization): Boolean { - if (!canTradeEmbassies() || !otherCiv.isMajorCiv()) return false + if (!canTradeEmbassies() || !otherCiv.isMajorCiv() || otherCiv.getCapital() == null) + return false + val ourDiploManager = civInfo.getDiplomacyManager(otherCiv)!! return !civInfo.isAtWarWith(otherCiv) && !isDenouncedThisTurn(ourDiploManager) && !ourDiploManager.hasModifier(DiplomaticModifiers.EstablishedEmbassy)