From 12eb1fee30c82928b6b43a45ef2ff7ca07cb041f Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Sun, 26 Jul 2026 08:30:45 +0300
Subject: [PATCH 28/28] Replace aarea req is_server() check by aarea existence
 check

See RM #2089

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 common/requirements.c | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/common/requirements.c b/common/requirements.c
index d8a29fceab..7d9d3f076b 100644
--- a/common/requirements.c
+++ b/common/requirements.c
@@ -3384,11 +3384,6 @@ is_tiledef_conn_req_active(const struct civ_map *nmap,
 {
   IS_REQ_ACTIVE_VARIANT_ASSERT(VUT_TILEDEF_CONNECTED);
 
-  if (!is_server()) {
-    /* Client does not know about access areas */
-    return TRI_MAYBE;
-  }
-
   if (req->range == REQ_RANGE_CITY) {
     if (context->city == nullptr
         || context->city->aarea == nullptr) {
@@ -6168,15 +6163,12 @@ is_citystatus_req_active(const struct civ_map *nmap,
     return TRI_MAYBE;
 
   case CITYS_CAPITALCONNECTED:
-    if (!is_server()) {
-      /* Client has no idea. */
-      return TRI_MAYBE;
-    }
-
     switch (req->range) {
     case REQ_RANGE_CITY:
-      return BOOL_TO_TRISTATE(context->city->aarea != nullptr
-                              && context->city->aarea->capital);
+      if (context->city->aarea == nullptr) {
+        return TRI_MAYBE;
+      }
+      return BOOL_TO_TRISTATE(context->city->aarea->capital);
     case REQ_RANGE_TRADE_ROUTE:
       {
         enum fc_tristate ret;
@@ -6186,12 +6178,16 @@ is_citystatus_req_active(const struct civ_map *nmap,
           return TRI_YES;
         }
 
-        ret = TRI_NO;
+        if (context->city->aarea == nullptr) {
+          ret = TRI_MAYBE;
+        } else {
+          ret = TRI_NO;
+        }
         trade_partners_iterate(context->city, trade_partner) {
-          if (trade_partner == nullptr) {
+          if (trade_partner == nullptr
+              || trade_partner->aarea == nullptr) {
             ret = TRI_MAYBE;
-          } else if (trade_partner->aarea != nullptr
-                     && trade_partner->aarea->capital) {
+          } else if (trade_partner->aarea->capital) {
             return TRI_YES;
           }
         } trade_partners_iterate_end;
-- 
2.53.0

