From b95118a86240d23b928597ffbffc8238b4b6e18f Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Wed, 23 Sep 2026 18:12:53 +0300
Subject: [PATCH 72/72] Qt: Support "Surgical Strike Production" at the choice
 dialog

See RM #2198

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

diff --git a/client/gui-qt/dialogs.cpp b/client/gui-qt/dialogs.cpp
index f87aa5b671..0a2e18679f 100644
--- a/client/gui-qt/dialogs.cpp
+++ b/client/gui-qt/dialogs.cpp
@@ -81,6 +81,7 @@ extern void popdown_city_report();
 extern void popdown_endgame_report();
 
 static void spy_request_strike_bld_list(QVariant data1, QVariant data2);
+static void spy_request_strike_production(QVariant data1, QVariant data2);
 static void diplomat_incite(QVariant data1, QVariant data2);
 static void diplomat_incite_escape(QVariant data1, QVariant data2);
 static void spy_request_sabotage_list(QVariant data1, QVariant data2);
@@ -275,6 +276,7 @@ static const QHash<action_id, pfcn_void> af_map_init(void)
   action_function[ACTION_CONQUER_CITY_SHRINK3] = conquer_city_shrink3;
   action_function[ACTION_CONQUER_CITY_SHRINK4] = conquer_city_shrink4;
   action_function[ACTION_STRIKE_BUILDING] = spy_request_strike_bld_list;
+  action_function[ACTION_STRIKE_PRODUCTION] = spy_request_strike_production;
   action_function[ACTION_NUKE_CITY] = nuke_city;
 
   // Unit acting against a unit target.
@@ -3668,7 +3670,22 @@ static void spy_request_strike_bld_list(QVariant data1, QVariant data2)
 }
 
 /***********************************************************************//**
-  Action  request sabotage list for choice dialog
+  Action request "Surgical Strike Production" for choice dialog
+***************************************************************************/
+static void spy_request_strike_production(QVariant data1, QVariant data2)
+{
+  int actor_id = data1.toInt();
+  int target_id = data2.toInt();
+
+  if (game_unit_by_number(actor_id) != nullptr
+      && game_city_by_number(target_id) != nullptr) {
+    request_do_action(ACTION_STRIKE_PRODUCTION,
+                      actor_id, target_id, 0, "");
+  }
+}
+
+/***********************************************************************//**
+  Action request sabotage list for choice dialog
 ***************************************************************************/
 static void spy_request_sabotage_list(QVariant data1, QVariant data2)
 {
-- 
2.53.0

