From 6d10e7891d7624e09852f7376573a4ab72f3fa6f Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Mon, 21 Sep 2026 21:25:19 +0300
Subject: [PATCH 63/63] Qt: Support "Spread Plague" at the choice dialog

See RM #2199

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 client/gui-qt/dialogs.cpp | 17 +++++++++++++++++
 1 file changed, 17 insertions(+)

diff --git a/client/gui-qt/dialogs.cpp b/client/gui-qt/dialogs.cpp
index f257a39906..f87aa5b671 100644
--- a/client/gui-qt/dialogs.cpp
+++ b/client/gui-qt/dialogs.cpp
@@ -93,6 +93,7 @@ static void diplomat_steal(QVariant data1, QVariant data2);
 static void diplomat_steal_esc(QVariant data1, QVariant data2);
 static void spy_poison(QVariant data1, QVariant data2);
 static void spy_poison_esc(QVariant data1, QVariant data2);
+static void spy_spread_plague(QVariant data1, QVariant data2);
 static void spy_steal_gold(QVariant data1, QVariant data2);
 static void spy_steal_gold_esc(QVariant data1, QVariant data2);
 static void spy_steal_maps(QVariant data1, QVariant data2);
@@ -240,6 +241,7 @@ static const QHash<action_id, pfcn_void> af_map_init(void)
   action_function[ACTION_INV_CITY_SPEND] = diplomat_investigate;
   action_function[ACTION_SPY_POISON] = spy_poison;
   action_function[ACTION_SPY_POISON_ESC] = spy_poison_esc;
+  action_function[ACTION_SPY_SPREAD_PLAGUE] = spy_spread_plague;
   action_function[ACTION_SPY_STEAL_GOLD] = spy_steal_gold;
   action_function[ACTION_SPY_STEAL_GOLD_ESC] = spy_steal_gold_esc;
   action_function[ACTION_SPY_SABOTAGE_CITY] = diplomat_sabotage;
@@ -3732,6 +3734,21 @@ static void spy_poison_esc(QVariant data1, QVariant data2)
   }
 }
 
+/***********************************************************************//**
+  Action Spread Plague for choice dialog
+***************************************************************************/
+static void spy_spread_plague(QVariant data1, QVariant data2)
+{
+  int diplomat_id = data1.toInt();
+  int diplomat_target_id = data2.toInt();
+
+  if (game_unit_by_number(diplomat_id) != nullptr
+      && game_city_by_number(diplomat_target_id) != nullptr) {
+    request_do_action(ACTION_SPY_SPREAD_PLAGUE,
+                      diplomat_id, diplomat_target_id, 0, "");
+  }
+}
+
 /***********************************************************************//**
   Action suitcase nuke for choice dialog
 ***************************************************************************/
-- 
2.53.0

