From 9e5b29249a10d1f75c7e036d8ee2d4a84b35668f Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Sat, 27 Jul 2024 02:48:31 +0300
Subject: [PATCH 14/14] Rename "Conquer City" as "Conquer City Shrink"

See RM #765

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 ai/default/daitools.c               |  24 +++---
 client/gui-qt/dialogs.cpp           |  16 ++--
 client/packhand.c                   |   4 +-
 common/actions.c                    | 112 +++++++++++++++-------------
 data/alien/actions.ruleset          |  14 ++--
 data/civ1/actions.ruleset           |  14 ++--
 data/civ2/actions.ruleset           |  16 ++--
 data/civ2civ3/actions.ruleset       |  34 ++++-----
 data/civ2civ3/effects.ruleset       |   2 +-
 data/classic/actions.ruleset        |  30 ++++----
 data/classic/effects.ruleset        |   2 +-
 data/goldkeep/actions.ruleset       |  30 ++++----
 data/goldkeep/effects.ruleset       |   2 +-
 data/granularity/actions.ruleset    |  12 +--
 data/multiplayer/actions.ruleset    |  30 ++++----
 data/multiplayer/effects.ruleset    |   2 +-
 data/sandbox/actions.ruleset        |  40 +++++-----
 data/sandbox/effects.ruleset        |  14 ++--
 data/webperimental/actions.ruleset  |  16 ++--
 doc/README.actions                  |  40 +++++-----
 gen_headers/enums/actions_enums.def |   8 +-
 server/ruleset/rscompat.c           |  42 +++++++++++
 server/ruleset/rscompat.h           |   3 +
 server/ruleset/ruleload.c           |  61 ++++++++++++---
 24 files changed, 329 insertions(+), 239 deletions(-)

diff --git a/ai/default/daitools.c b/ai/default/daitools.c
index 77664f022e..e882e2db5c 100644
--- a/ai/default/daitools.c
+++ b/ai/default/daitools.c
@@ -896,29 +896,29 @@ bool dai_unit_attack(struct ai_type *ait, struct unit *punit, struct tile *ptile
     unit_do_action(unit_owner(punit), punit->id, tile_index(ptile),
                    0, "", ACTION_SUICIDE_ATTACK);
   } else if ((tcity = tile_city(ptile))
-             && is_action_enabled_unit_on_city(nmap, ACTION_CONQUER_CITY,
+             && is_action_enabled_unit_on_city(nmap, ACTION_CONQUER_CITY_SHRINK,
                                                punit, tcity)) {
-    /* Choose "Conquer City". */
+    /* Choose "Conquer City Shrink". */
     unit_do_action(unit_owner(punit), punit->id, tcity->id,
-                   0, "", ACTION_CONQUER_CITY);
+                   0, "", ACTION_CONQUER_CITY_SHRINK);
   } else if ((tcity = tile_city(ptile))
-             && is_action_enabled_unit_on_city(nmap, ACTION_CONQUER_CITY2,
+             && is_action_enabled_unit_on_city(nmap, ACTION_CONQUER_CITY_SHRINK2,
                                                punit, tcity)) {
-    /* Choose "Conquer City 2". */
+    /* Choose "Conquer City Shrink 2". */
     unit_do_action(unit_owner(punit), punit->id, tcity->id,
-                   0, "", ACTION_CONQUER_CITY2);
+                   0, "", ACTION_CONQUER_CITY_SHRINK2);
   } else if ((tcity = tile_city(ptile))
-             && is_action_enabled_unit_on_city(nmap, ACTION_CONQUER_CITY3,
+             && is_action_enabled_unit_on_city(nmap, ACTION_CONQUER_CITY_SHRINK3,
                                                punit, tcity)) {
-    /* Choose "Conquer City 3". */
+    /* Choose "Conquer City Shrink 3". */
     unit_do_action(unit_owner(punit), punit->id, tcity->id,
-                   0, "", ACTION_CONQUER_CITY3);
+                   0, "", ACTION_CONQUER_CITY_SHRINK3);
   } else if ((tcity = tile_city(ptile))
-             && is_action_enabled_unit_on_city(nmap, ACTION_CONQUER_CITY4,
+             && is_action_enabled_unit_on_city(nmap, ACTION_CONQUER_CITY_SHRINK4,
                                                punit, tcity)) {
-    /* Choose "Conquer City 4". */
+    /* Choose "Conquer City Shrink 4". */
     unit_do_action(unit_owner(punit), punit->id, tcity->id,
-                   0, "", ACTION_CONQUER_CITY4);
+                   0, "", ACTION_CONQUER_CITY_SHRINK4);
   } else if (!can_unit_survive_at_tile(nmap, punit, ptile)
              && ((ptrans = transporter_for_unit_at(punit, ptile)))
              && is_action_enabled_unit_on_unit(nmap, ACTION_TRANSPORT_EMBARK,
diff --git a/client/gui-qt/dialogs.cpp b/client/gui-qt/dialogs.cpp
index 484a776bda..dbf5065240 100644
--- a/client/gui-qt/dialogs.cpp
+++ b/client/gui-qt/dialogs.cpp
@@ -157,8 +157,8 @@ static void join_city(QVariant data1, QVariant data2);
 static void unit_home_city(QVariant data1, QVariant data2);
 static void unit_upgrade(QVariant data1, QVariant data2);
 static void airlift(QVariant data1, QVariant data2);
-static void conquer_city(QVariant data1, QVariant data2);
-static void conquer_city2(QVariant data1, QVariant data2);
+static void conquer_city_shrink(QVariant data1, QVariant data2);
+static void conquer_city_shrink2(QVariant data1, QVariant data2);
 static void conquer_extras(QVariant data1, QVariant data2);
 static void conquer_extras2(QVariant data1, QVariant data2);
 static void heal_unit(QVariant data1, QVariant data2);
@@ -243,8 +243,8 @@ static const QHash<action_id, pfcn_void> af_map_init(void)
   action_function[ACTION_HOME_CITY] = unit_home_city;
   action_function[ACTION_UPGRADE_UNIT] = unit_upgrade;
   action_function[ACTION_AIRLIFT] = airlift;
-  action_function[ACTION_CONQUER_CITY] = conquer_city;
-  action_function[ACTION_CONQUER_CITY2] = conquer_city2;
+  action_function[ACTION_CONQUER_CITY_SHRINK] = conquer_city_shrink;
+  action_function[ACTION_CONQUER_CITY_SHRINK2] = conquer_city_shrink2;
   action_function[ACTION_STRIKE_BUILDING] = spy_request_strike_bld_list;
   action_function[ACTION_NUKE_CITY] = nuke_city;
 
@@ -1851,14 +1851,14 @@ static void airlift(QVariant data1, QVariant data2)
 /***********************************************************************//**
   Action "Conquer City" for choice dialog
 ***************************************************************************/
-static void conquer_city(QVariant data1, QVariant data2)
+static void conquer_city_shrink(QVariant data1, QVariant data2)
 {
   int actor_id = data1.toInt();
   int tgt_city_id = data2.toInt();
 
   if (game_unit_by_number(actor_id) != nullptr
       && game_city_by_number(tgt_city_id) != nullptr) {
-    request_do_action(ACTION_CONQUER_CITY,
+    request_do_action(ACTION_CONQUER_CITY_SHRINK,
                       actor_id, tgt_city_id, 0, "");
   }
 }
@@ -1866,14 +1866,14 @@ static void conquer_city(QVariant data1, QVariant data2)
 /***********************************************************************//**
   Action "Conquer City 2" for choice dialog
 ***************************************************************************/
-static void conquer_city2(QVariant data1, QVariant data2)
+static void conquer_city_shrink2(QVariant data1, QVariant data2)
 {
   int actor_id = data1.toInt();
   int tgt_city_id = data2.toInt();
 
   if (game_unit_by_number(actor_id) != nullptr
       && game_city_by_number(tgt_city_id) != nullptr) {
-    request_do_action(ACTION_CONQUER_CITY2,
+    request_do_action(ACTION_CONQUER_CITY_SHRINK2,
                       actor_id, tgt_city_id, 0, "");
   }
 }
diff --git a/client/packhand.c b/client/packhand.c
index 1a6f847a96..82cdbcdf12 100644
--- a/client/packhand.c
+++ b/client/packhand.c
@@ -149,8 +149,8 @@ const action_id auto_attack_actions[] = {
   ACTION_NUKE, ACTION_NUKE_CITY, ACTION_NUKE_UNITS,
   ACTION_ATTACK, ACTION_SUICIDE_ATTACK,
   ACTION_WIPE_UNITS,
-  ACTION_CONQUER_CITY, ACTION_CONQUER_CITY2,
-  ACTION_CONQUER_CITY3, ACTION_CONQUER_CITY4,
+  ACTION_CONQUER_CITY_SHRINK, ACTION_CONQUER_CITY_SHRINK2,
+  ACTION_CONQUER_CITY_SHRINK3, ACTION_CONQUER_CITY_SHRINK4,
   ACTION_STRIKE_PRODUCTION,
   ACTION_CONQUER_EXTRAS, ACTION_CONQUER_EXTRAS2,
   ACTION_CONQUER_EXTRAS3, ACTION_CONQUER_EXTRAS4,
diff --git a/common/actions.c b/common/actions.c
index 8403f38d53..f5d07da7aa 100644
--- a/common/actions.c
+++ b/common/actions.c
@@ -490,20 +490,20 @@ static void hard_code_actions(void)
       unit_action_new(ACTION_STRIKE_PRODUCTION, ACTRES_STRIKE_PRODUCTION,
                       FALSE, FALSE,
                       MAK_STAYS, 1, 1, FALSE);
-  actions[ACTION_CONQUER_CITY] =
-      unit_action_new(ACTION_CONQUER_CITY, ACTRES_CONQUER_CITY,
+  actions[ACTION_CONQUER_CITY_SHRINK] =
+      unit_action_new(ACTION_CONQUER_CITY_SHRINK, ACTRES_CONQUER_CITY,
                       FALSE, TRUE,
                       MAK_REGULAR, 1, 1, FALSE);
-  actions[ACTION_CONQUER_CITY2] =
-      unit_action_new(ACTION_CONQUER_CITY2, ACTRES_CONQUER_CITY,
+  actions[ACTION_CONQUER_CITY_SHRINK2] =
+      unit_action_new(ACTION_CONQUER_CITY_SHRINK2, ACTRES_CONQUER_CITY,
                       FALSE, TRUE,
                       MAK_REGULAR, 1, 1, FALSE);
-  actions[ACTION_CONQUER_CITY3] =
-      unit_action_new(ACTION_CONQUER_CITY3, ACTRES_CONQUER_CITY,
+  actions[ACTION_CONQUER_CITY_SHRINK3] =
+      unit_action_new(ACTION_CONQUER_CITY_SHRINK3, ACTRES_CONQUER_CITY,
                       FALSE, TRUE,
                       MAK_REGULAR, 1, 1, FALSE);
-  actions[ACTION_CONQUER_CITY4] =
-      unit_action_new(ACTION_CONQUER_CITY4, ACTRES_CONQUER_CITY,
+  actions[ACTION_CONQUER_CITY_SHRINK4] =
+      unit_action_new(ACTION_CONQUER_CITY_SHRINK4, ACTRES_CONQUER_CITY,
                       FALSE, TRUE,
                       MAK_REGULAR, 1, 1, FALSE);
   actions[ACTION_CONQUER_EXTRAS] =
@@ -5886,14 +5886,14 @@ const char *action_ui_name_ruleset_var_name(int act)
     return "ui_name_surgical_strike_building";
   case ACTION_STRIKE_PRODUCTION:
     return "ui_name_surgical_strike_production";
-  case ACTION_CONQUER_CITY:
-    return "ui_name_conquer_city";
-  case ACTION_CONQUER_CITY2:
-    return "ui_name_conquer_city_2";
-  case ACTION_CONQUER_CITY3:
-    return "ui_name_conquer_city_3";
-  case ACTION_CONQUER_CITY4:
-    return "ui_name_conquer_city_4";
+  case ACTION_CONQUER_CITY_SHRINK:
+    return "ui_name_conquer_city_shrink";
+  case ACTION_CONQUER_CITY_SHRINK2:
+    return "ui_name_conquer_city_shrink2";
+  case ACTION_CONQUER_CITY_SHRINK3:
+    return "ui_name_conquer_city_shrink3";
+  case ACTION_CONQUER_CITY_SHRINK4:
+    return "ui_name_conquer_city_shrink4";
   case ACTION_CONQUER_EXTRAS:
     return "ui_name_conquer_extras";
   case ACTION_CONQUER_EXTRAS2:
@@ -6241,12 +6241,12 @@ const char *action_ui_name_default(int act)
   case ACTION_STRIKE_PRODUCTION:
     /* TRANS: Surgical Str_ike Production (100% chance of success). */
     return N_("Surgical Str%sike Production%s");
-  case ACTION_CONQUER_CITY:
-  case ACTION_CONQUER_CITY3:
-  case ACTION_CONQUER_CITY4:
+  case ACTION_CONQUER_CITY_SHRINK:
+  case ACTION_CONQUER_CITY_SHRINK3:
+  case ACTION_CONQUER_CITY_SHRINK4:
     /* TRANS: _Conquer City (100% chance of success). */
     return N_("%sConquer City%s");
-  case ACTION_CONQUER_CITY2:
+  case ACTION_CONQUER_CITY_SHRINK2:
     /* TRANS: _Conquer City 2 (100% chance of success). */
     return N_("%sConquer City 2%s");
   case ACTION_CONQUER_EXTRAS:
@@ -6466,10 +6466,10 @@ const char *action_min_range_ruleset_var_name(int act)
   case ACTION_COLLECT_RANSOM:
   case ACTION_STRIKE_BUILDING:
   case ACTION_STRIKE_PRODUCTION:
-  case ACTION_CONQUER_CITY:
-  case ACTION_CONQUER_CITY2:
-  case ACTION_CONQUER_CITY3:
-  case ACTION_CONQUER_CITY4:
+  case ACTION_CONQUER_CITY_SHRINK:
+  case ACTION_CONQUER_CITY_SHRINK2:
+  case ACTION_CONQUER_CITY_SHRINK3:
+  case ACTION_CONQUER_CITY_SHRINK4:
   case ACTION_HEAL_UNIT:
   case ACTION_HEAL_UNIT2:
   case ACTION_TRANSFORM_TERRAIN:
@@ -6639,10 +6639,10 @@ const char *action_max_range_ruleset_var_name(int act)
   case ACTION_COLLECT_RANSOM:
   case ACTION_STRIKE_BUILDING:
   case ACTION_STRIKE_PRODUCTION:
-  case ACTION_CONQUER_CITY:
-  case ACTION_CONQUER_CITY2:
-  case ACTION_CONQUER_CITY3:
-  case ACTION_CONQUER_CITY4:
+  case ACTION_CONQUER_CITY_SHRINK:
+  case ACTION_CONQUER_CITY_SHRINK2:
+  case ACTION_CONQUER_CITY_SHRINK3:
+  case ACTION_CONQUER_CITY_SHRINK4:
   case ACTION_HEAL_UNIT:
   case ACTION_HEAL_UNIT2:
   case ACTION_TRANSFORM_TERRAIN:
@@ -6828,10 +6828,10 @@ const char *action_target_kind_ruleset_var_name(int act)
   case ACTION_COLLECT_RANSOM:
   case ACTION_STRIKE_BUILDING:
   case ACTION_STRIKE_PRODUCTION:
-  case ACTION_CONQUER_CITY:
-  case ACTION_CONQUER_CITY2:
-  case ACTION_CONQUER_CITY3:
-  case ACTION_CONQUER_CITY4:
+  case ACTION_CONQUER_CITY_SHRINK:
+  case ACTION_CONQUER_CITY_SHRINK2:
+  case ACTION_CONQUER_CITY_SHRINK3:
+  case ACTION_CONQUER_CITY_SHRINK4:
   case ACTION_HEAL_UNIT:
   case ACTION_HEAL_UNIT2:
   case ACTION_TRANSFORM_TERRAIN:
@@ -6995,10 +6995,10 @@ const char *action_actor_consuming_always_ruleset_var_name(action_id act)
   case ACTION_COLLECT_RANSOM:
   case ACTION_STRIKE_BUILDING:
   case ACTION_STRIKE_PRODUCTION:
-  case ACTION_CONQUER_CITY:
-  case ACTION_CONQUER_CITY2:
-  case ACTION_CONQUER_CITY3:
-  case ACTION_CONQUER_CITY4:
+  case ACTION_CONQUER_CITY_SHRINK:
+  case ACTION_CONQUER_CITY_SHRINK2:
+  case ACTION_CONQUER_CITY_SHRINK3:
+  case ACTION_CONQUER_CITY_SHRINK4:
   case ACTION_HEAL_UNIT:
   case ACTION_HEAL_UNIT2:
   case ACTION_TRANSFORM_TERRAIN:
@@ -7146,14 +7146,14 @@ const char *action_blocked_by_ruleset_var_name(const struct action *act)
     return "wipe_units_blocked_by";
   case ACTION_COLLECT_RANSOM:
     return "collect_ransom_blocked_by";
-  case ACTION_CONQUER_CITY:
-    return "conquer_city_blocked_by";
-  case ACTION_CONQUER_CITY2:
-    return "conquer_city_2_blocked_by";
-  case ACTION_CONQUER_CITY3:
-    return "conquer_city_3_blocked_by";
-  case ACTION_CONQUER_CITY4:
-    return "conquer_city_4_blocked_by";
+  case ACTION_CONQUER_CITY_SHRINK:
+    return "conquer_city_shrink_blocked_by";
+  case ACTION_CONQUER_CITY_SHRINK2:
+    return "conquer_city_shrink_2_blocked_by";
+  case ACTION_CONQUER_CITY_SHRINK3:
+    return "conquer_city_shrink_3_blocked_by";
+  case ACTION_CONQUER_CITY_SHRINK4:
+    return "conquer_city_shrink_4_blocked_by";
   case ACTION_UNIT_MOVE:
     return "move_blocked_by";
   case ACTION_UNIT_MOVE2:
@@ -7336,10 +7336,10 @@ action_post_success_forced_ruleset_var_name(const struct action *act)
   case ACTION_NUKE_UNITS:
   case ACTION_SUICIDE_ATTACK:
   case ACTION_SUICIDE_ATTACK2:
-  case ACTION_CONQUER_CITY:
-  case ACTION_CONQUER_CITY2:
-  case ACTION_CONQUER_CITY3:
-  case ACTION_CONQUER_CITY4:
+  case ACTION_CONQUER_CITY_SHRINK:
+  case ACTION_CONQUER_CITY_SHRINK2:
+  case ACTION_CONQUER_CITY_SHRINK3:
+  case ACTION_CONQUER_CITY_SHRINK4:
   case ACTION_SPY_POISON:
   case ACTION_SPY_POISON_ESC:
   case ACTION_SPY_SABOTAGE_UNIT:
@@ -7484,12 +7484,20 @@ bool action_ever_possible(action_id action)
 **************************************************************************/
 const char *gen_action_name_update_cb(const char *old_name)
 {
-  /* Uncomment and fill implementation, if compat mode
-   * action name conversions needed. */
-#if 0
   if (is_ruleset_compat_mode()) {
+    if (fc_strcasecmp("Conquer City", old_name)) {
+      return "Conquer City Shrink";
+    }
+    if (fc_strcasecmp("Conquer City 2", old_name)) {
+      return "Conquer City Shrink 2";
+    }
+    if (fc_strcasecmp("Conquer City 3", old_name)) {
+      return "Conquer City Shrink 3";
+    }
+    if (fc_strcasecmp("Conquer City 4", old_name)) {
+      return "Conquer City Shrink 4";
+    }
   }
-#endif
 
   return old_name;
 }
diff --git a/data/alien/actions.ruleset b/data/alien/actions.ruleset
index bb848d59e9..a6db6ac944 100644
--- a/data/alien/actions.ruleset
+++ b/data/alien/actions.ruleset
@@ -46,9 +46,9 @@ attack_blocked_by = "Collect Ransom", "Capture Units", "Bombard"
 ; Forbid "Suicide Attack" if any one of the listed actions are legal.
 suicide_attack_blocked_by = "Collect Ransom", "Capture Units", "Bombard"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Capture Units", "Bombard", "Attack",
-                          "Suicide Attack"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Capture Units", "Bombard", "Attack",
+                                 "Suicide Attack"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Transport Disembark 2",
@@ -68,7 +68,7 @@ bribe_unit_post_success_forced_actions = "Transport Embark",
 ; Actor units will - under certain circumstances - be forced to try
 ; performing the following actions in the specified order after successfully
 ; performing "Attack".
-attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
+attack_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -79,7 +79,7 @@ attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
 ; performing the following actions in the specified order after successfully
 ; performing "Collect Ransom".
 collect_ransom_post_success_forced_actions =
-                                     "Conquer City", "Conquer City 2",
+                                     "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -281,7 +281,7 @@ ui_name_attack = _("%sAttack%s")
 ui_name_suicide_attack = _("%sExplode Missile%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; /* TRANS: _Transform Terrain (3% chance of success). */
 ui_name_transform_terrain = _("%sTransform Terrain%s")
@@ -631,7 +631,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_native]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
diff --git a/data/civ1/actions.ruleset b/data/civ1/actions.ruleset
index 10aa34a5f6..c5a3a01824 100644
--- a/data/civ1/actions.ruleset
+++ b/data/civ1/actions.ruleset
@@ -45,9 +45,9 @@ attack_blocked_by = "Collect Ransom", "Explode Nuclear", "Nuke City",
 suicide_attack_blocked_by = "Collect Ransom", "Explode Nuclear",
                             "Nuke City", "Nuke Units"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
-                          "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
+                                 "Attack", "Suicide Attack"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Enter Hut", "Enter Hut 2"
@@ -66,7 +66,7 @@ bribe_unit_post_success_forced_actions = "Transport Embark",
 ; Actor units will - under certain circumstances - be forced to try
 ; performing the following actions in the specified order after successfully
 ; performing "Attack".
-attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
+attack_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -77,7 +77,7 @@ attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
 ; performing the following actions in the specified order after successfully
 ; performing "Collect Ransom".
 collect_ransom_post_success_forced_actions =
-                                     "Conquer City", "Conquer City 2",
+                                     "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -266,7 +266,7 @@ ui_name_attack = _("%sAttack%s")
 ui_name_suicide_attack = _("%sExplode Missile%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; /* TRANS: _Transform Terrain (3% chance of success). */
 ui_name_transform_terrain = _("%sTransform Terrain%s")
@@ -620,7 +620,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_native]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
diff --git a/data/civ2/actions.ruleset b/data/civ2/actions.ruleset
index 78ac0d8f73..6048401481 100644
--- a/data/civ2/actions.ruleset
+++ b/data/civ2/actions.ruleset
@@ -45,9 +45,9 @@ attack_blocked_by = "Collect Ransom", "Explode Nuclear",
 suicide_attack_blocked_by = "Collect Ransom", "Explode Nuclear",
                             "Nuke City", "Nuke Units"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
-                          "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
+                                 "Attack", "Suicide Attack"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Enter Hut", "Frighten Hut"
@@ -67,7 +67,7 @@ bribe_unit_post_success_forced_actions = "Transport Embark",
 ; Actor units will - under certain circumstances - be forced to try
 ; performing the following actions in the specified order after successfully
 ; performing "Attack".
-attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
+attack_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -79,7 +79,7 @@ attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
 ; performing the following actions in the specified order after successfully
 ; performing "Collect Ransom".
 collect_ransom_post_success_forced_actions =
-                                     "Conquer City", "Conquer City 2",
+                                     "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -319,7 +319,7 @@ ui_name_attack = _("%sAttack%s")
 ui_name_suicide_attack = _("%sExplode Missile%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; /* TRANS: _Transform Terrain (3% chance of success). */
 ui_name_transform_terrain = _("%sTransform Terrain%s")
@@ -823,7 +823,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_native]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
@@ -838,7 +838,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_marines]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
diff --git a/data/civ2civ3/actions.ruleset b/data/civ2civ3/actions.ruleset
index 87f949b7c1..2fcd04a18a 100644
--- a/data/civ2civ3/actions.ruleset
+++ b/data/civ2civ3/actions.ruleset
@@ -55,15 +55,15 @@ attack_blocked_by = "Collect Ransom", "Capture Units", "Bombard",
 suicide_attack_blocked_by = "Collect Ransom", "Capture Units", "Bombard",
                             "Explode Nuclear", "Nuke City", "Nuke Units"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Capture Units", "Bombard", "Explode Nuclear",
-                          "Nuke City", "Nuke Units",
-                          "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Capture Units", "Bombard", "Explode Nuclear",
+                                 "Nuke City", "Nuke Units",
+                                 "Attack", "Suicide Attack"
 
-; Forbid "Conquer City 2" if any one of the listed actions are legal.
-conquer_city_2_blocked_by = "Capture Units", "Bombard", "Explode Nuclear",
-                            "Nuke City", "Nuke Units",
-                            "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink 2" if any one of the listed actions are legal.
+conquer_city_shrink_2_blocked_by = "Capture Units", "Bombard", "Explode Nuclear",
+                                   "Nuke City", "Nuke Units",
+                                   "Attack", "Suicide Attack"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Transport Disembark 2",
@@ -85,7 +85,7 @@ bribe_unit_post_success_forced_actions = "Transport Embark",
 ; Actor units will - under certain circumstances - be forced to try
 ; performing the following actions in the specified order after successfully
 ; performing "Attack".
-attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
+attack_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -97,7 +97,7 @@ attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
 ; performing the following actions in the specified order after successfully
 ; performing "Collect Ransom".
 collect_ransom_post_success_forced_actions =
-                                     "Conquer City", "Conquer City 2",
+                                     "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -344,10 +344,10 @@ ui_name_attack = _("%sAttack%s")
 ui_name_suicide_attack = _("%sExplode Missile%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; /* TRANS: _Conquer City from non native (100% chance of success). */
-ui_name_conquer_city_2 = _("%sConquer City from non native%s")
+ui_name_conquer_city_shrink_2 = _("%sConquer City from non native%s")
 
 ; /* TRANS: _Transform Terrain (3% chance of success). */
 ui_name_transform_terrain = _("%sTransform Terrain%s")
@@ -442,12 +442,12 @@ diplchance_initial_odds = "Sabotage City", "Sabotage City Escape",
 ; Can make the help text less redundant when you document it your self.
 
 ; "Transport Disembark 2" is "Transport Disembark" but from a non native
-; tile. "Conquer City 2" has the same relation to "Conquer City". So is
-; "Enter Hut 2" for "Enter Hut" and "Frighten Hut 2" for "Frighten Hut".
+; tile. "Conquer City Shrink 2" has the same relation to "Conquer City Shrink".
+; So is "Enter Hut 2" for "Enter Hut" and "Frighten Hut 2" for "Frighten Hut".
 ; The version from the non native tile and the native tile version won`t
 ; appear in the same action selection dialog given their opposite
 ; requirements. Avoid double entries in the auto help by silencing it.
-quiet_actions = "Transport Disembark 2", "Conquer City 2", "Enter Hut 2",
+quiet_actions = "Transport Disembark 2", "Conquer City Shrink 2", "Enter Hut 2",
                 "Frighten Hut 2", "Unit Move"
 
 ; /* <-- avoid gettext warnings
@@ -970,7 +970,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_native]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",           "range",  "present"
       "UnitClassFlag",  "CanOccupyCity",  "Local",  TRUE
@@ -986,7 +986,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_marines]
-action        = "Conquer City 2"
+action        = "Conquer City Shrink 2"
 actor_reqs    =
     { "type",           "name",           "range",  "present"
       "UnitClassFlag",  "CanOccupyCity",  "Local",  TRUE
diff --git a/data/civ2civ3/effects.ruleset b/data/civ2civ3/effects.ruleset
index 9b19277d3f..f21562b195 100644
--- a/data/civ2civ3/effects.ruleset
+++ b/data/civ2civ3/effects.ruleset
@@ -4544,7 +4544,7 @@ type    = "Action_Success_Actor_Move_Cost"
 value   = 65535
 reqs    =
     { "type",          "name",                  "range", "present"
-      "Action",        "Conquer City 2",        "Local", TRUE
+      "Action",        "Conquer City Shrink 2", "Local", TRUE
       "UnitState",     "OnNativeTile",          "Local", TRUE
       "UnitClassFlag", "TerrainSpeed",          "Local", TRUE
     }
diff --git a/data/classic/actions.ruleset b/data/classic/actions.ruleset
index 6b91195212..b75dbb56a1 100644
--- a/data/classic/actions.ruleset
+++ b/data/classic/actions.ruleset
@@ -46,13 +46,13 @@ attack_blocked_by = "Collect Ransom", "Explode Nuclear", "Nuke City",
 suicide_attack_blocked_by = "Collect Ransom", "Explode Nuclear",
                             "Nuke City", "Nuke Units"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
-                          "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
+                                 "Attack", "Suicide Attack"
 
-; Forbid "Conquer City 2" if any one of the listed actions are legal.
-conquer_city_2_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
-                            "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink 2" if any one of the listed actions are legal.
+conquer_city_shrink_2_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
+                                   "Attack", "Suicide Attack"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Transport Disembark 2",
@@ -75,7 +75,7 @@ bribe_unit_post_success_forced_actions = "Transport Embark",
 ; Actor units will - under certain circumstances - be forced to try
 ; performing the following actions in the specified order after successfully
 ; performing "Attack".
-attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
+attack_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -87,7 +87,7 @@ attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
 ; performing the following actions in the specified order after successfully
 ; performing "Collect Ransom".
 collect_ransom_post_success_forced_actions =
-                                     "Conquer City", "Conquer City 2",
+                                     "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -329,10 +329,10 @@ ui_name_attack = _("%sAttack%s")
 ui_name_suicide_attack = _("%sExplode Missile%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; /* TRANS: _Conquer City from non native (100% chance of success). */
-ui_name_conquer_city_2 = _("%sConquer City from non native%s")
+ui_name_conquer_city_shrink_2 = _("%sConquer City from non native%s")
 
 ; /* TRANS: _Conquer Fortress (100% chance of success). */
 ui_name_conquer_extras = _("%sConquer Fortress%s")
@@ -433,13 +433,13 @@ diplchance_initial_odds = "Sabotage City", "Sabotage City Escape",
 ; Can make the help text less redundant when you document it your self.
 
 ; "Transport Disembark 2" is "Transport Disembark" but from a non native
-; tile. "Conquer City 2" has the same relation to "Conquer City". So is
-; "Enter Hut 2" for "Enter Hut", "Frighten Hut 2" for "Frighten Hut" and
+; tile. "Conquer City Shrink 2" has the same relation to "Conquer City Shrink".
+; So is "Enter Hut 2" for "Enter Hut", "Frighten Hut 2" for "Frighten Hut" and
 ; "Conquer Extras" for "Conquer Extras 2".
 ; The version from the non native tile and the native tile version won`t
 ; appear in the same action selection dialog given their opposite
 ; requirements. Avoid double entries in the auto help by silencing it.
-quiet_actions = "Transport Disembark 2", "Conquer City 2", "Enter Hut 2",
+quiet_actions = "Transport Disembark 2", "Conquer City Shrink 2", "Enter Hut 2",
                 "Frighten Hut 2", "Conquer Extras 2", "Unit Move"
 
 ; /* <-- avoid gettext warnings
@@ -896,7 +896,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_native]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
@@ -911,7 +911,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_marines]
-action        = "Conquer City 2"
+action        = "Conquer City Shrink 2"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
diff --git a/data/classic/effects.ruleset b/data/classic/effects.ruleset
index 5adfef3eca..4bd6d53151 100644
--- a/data/classic/effects.ruleset
+++ b/data/classic/effects.ruleset
@@ -2649,7 +2649,7 @@ type    = "Action_Success_Actor_Move_Cost"
 value   = 65535
 reqs    =
     { "type",          "name",                  "range", "present"
-      "Action",        "Conquer City 2",        "Local", TRUE
+      "Action",        "Conquer City Shrink 2", "Local", TRUE
       "UnitState",     "OnNativeTile",          "Local", TRUE
       "UnitClassFlag", "TerrainSpeed",          "Local", TRUE
     }
diff --git a/data/goldkeep/actions.ruleset b/data/goldkeep/actions.ruleset
index 4e28d0dafb..433c9f2a2d 100644
--- a/data/goldkeep/actions.ruleset
+++ b/data/goldkeep/actions.ruleset
@@ -46,13 +46,13 @@ attack_blocked_by = "Collect Ransom", "Explode Nuclear", "Nuke City",
 suicide_attack_blocked_by = "Collect Ransom", "Explode Nuclear",
                             "Nuke City", "Nuke Units"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
-                          "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
+                                 "Attack", "Suicide Attack"
 
-; Forbid "Conquer City 2" if any one of the listed actions are legal.
-conquer_city_2_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
-                            "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink 2" if any one of the listed actions are legal.
+conquer_city_shrink_2_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
+                                   "Attack", "Suicide Attack"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Transport Disembark 2",
@@ -75,7 +75,7 @@ bribe_unit_post_success_forced_actions = "Transport Embark",
 ; Actor units will - under certain circumstances - be forced to try
 ; performing the following actions in the specified order after successfully
 ; performing "Attack".
-attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
+attack_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -87,7 +87,7 @@ attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
 ; performing the following actions in the specified order after successfully
 ; performing "Collect Ransom".
 collect_ransom_post_success_forced_actions =
-                                     "Conquer City", "Conquer City 2",
+                                     "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -329,10 +329,10 @@ ui_name_attack = _("%sAttack%s")
 ui_name_suicide_attack = _("%sExplode Missile%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; /* TRANS: _Conquer City from non native (100% chance of success). */
-ui_name_conquer_city_2 = _("%sConquer City from non native%s")
+ui_name_conquer_city_shrink_2 = _("%sConquer City from non native%s")
 
 ; /* TRANS: _Conquer Fortress (100% chance of success). */
 ui_name_conquer_extras = _("%sConquer Fortress%s")
@@ -433,13 +433,13 @@ diplchance_initial_odds = "Sabotage City", "Sabotage City Escape",
 ; Can make the help text less redundant when you document it your self.
 
 ; "Transport Disembark 2" is "Transport Disembark" but from a non native
-; tile. "Conquer City 2" has the same relation to "Conquer City". So is
-; "Enter Hut 2" for "Enter Hut" and "Frighten Hut 2" for "Frighten Hut" and
+; tile. "Conquer City Shrink 2" has the same relation to "Conquer City Shrink".
+; So is "Enter Hut 2" for "Enter Hut" and "Frighten Hut 2" for "Frighten Hut" and
 ; "Conquer Extras" for "Conquer Extras 2".
 ; The version from the non native tile and the native tile version won`t
 ; appear in the same action selection dialog given their opposite
 ; requirements. Avoid double entries in the auto help by silencing it.
-quiet_actions = "Transport Disembark 2", "Conquer City 2", "Enter Hut 2",
+quiet_actions = "Transport Disembark 2", "Conquer City Shrink 2", "Enter Hut 2",
                 "Frighten Hut 2", "Conquer Extras 2", "Unit Move"
 
 ; /* <-- avoid gettext warnings
@@ -910,7 +910,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_native]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
@@ -925,7 +925,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_marines]
-action        = "Conquer City 2"
+action        = "Conquer City Shrink 2"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
diff --git a/data/goldkeep/effects.ruleset b/data/goldkeep/effects.ruleset
index 52d87bda01..c83e52903c 100644
--- a/data/goldkeep/effects.ruleset
+++ b/data/goldkeep/effects.ruleset
@@ -2918,7 +2918,7 @@ type    = "Action_Success_Actor_Move_Cost"
 value   = 65535
 reqs    =
     { "type",          "name",                  "range", "present"
-      "Action",        "Conquer City 2",        "Local", TRUE
+      "Action",        "Conquer City Shrink 2", "Local", TRUE
       "UnitState",     "OnNativeTile",          "Local", TRUE
       "UnitClassFlag", "TerrainSpeed",          "Local", TRUE
     }
diff --git a/data/granularity/actions.ruleset b/data/granularity/actions.ruleset
index 2eb2585c67..9ea2b01100 100644
--- a/data/granularity/actions.ruleset
+++ b/data/granularity/actions.ruleset
@@ -37,8 +37,8 @@ format_version = 40
 ; Forbid "Attack" if any one of the listed actions are legal.
 attack_blocked_by = "Capture Units", "Bombard", "Bombard 2"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Attack", "Bombard", "Bombard 2"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Attack", "Bombard", "Bombard 2"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Transport Disembark 2"
@@ -205,7 +205,7 @@ ui_name_fortify = _("%sFortify%s")
 ui_name_bombard_2 = _("%sBombard%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; Blank ruleset defined user actions.
 ; See the section "Ruleset defined actions" in doc/README.actions
@@ -475,7 +475,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_tribal]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",          "name",          "range",  "present"
       "UnitClassFlag", "CanOccupyCity", "Local",  TRUE
@@ -491,7 +491,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_despotism]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",          "name",          "range",  "present"
       "UnitClassFlag", "CanOccupyCity", "Local",  TRUE
@@ -507,7 +507,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_monarchy]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",          "name",          "range",  "present"
       "UnitClassFlag", "CanOccupyCity", "Local",  TRUE
diff --git a/data/multiplayer/actions.ruleset b/data/multiplayer/actions.ruleset
index 6b9c6adb5f..243d39d1cc 100644
--- a/data/multiplayer/actions.ruleset
+++ b/data/multiplayer/actions.ruleset
@@ -43,13 +43,13 @@ attack_blocked_by = "Collect Ransom", "Explode Nuclear", "Nuke City",
 suicide_attack_blocked_by = "Collect Ransom", "Explode Nuclear",
                             "Nuke City", "Nuke Units"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
-                          "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
+                                 "Attack", "Suicide Attack"
 
-; Forbid "Conquer City 2" if any one of the listed actions are legal.
-conquer_city_2_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
-                            "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink 2" if any one of the listed actions are legal.
+conquer_city_shrink_2_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
+                                   "Attack", "Suicide Attack"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Transport Disembark 2",
@@ -72,7 +72,7 @@ bribe_unit_post_success_forced_actions = "Transport Embark",
 ; Actor units will - under certain circumstances - be forced to try
 ; performing the following actions in the specified order after successfully
 ; performing "Attack".
-attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
+attack_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -84,7 +84,7 @@ attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
 ; performing the following actions in the specified order after successfully
 ; performing "Collect Ransom".
 collect_ransom_post_success_forced_actions =
-                                     "Conquer City", "Conquer City 2",
+                                     "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -320,10 +320,10 @@ ui_name_attack = _("%sAttack%s")
 ui_name_suicide_attack = _("%sExplode Missile%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; /* TRANS: _Conquer City from non native (100% chance of success). */
-ui_name_conquer_city_2 = _("%sConquer City from non native%s")
+ui_name_conquer_city_shrink_2 = _("%sConquer City from non native%s")
 
 ; /* TRANS: _Conquer Fortress (100% chance of success). */
 ui_name_conquer_extras = _("%sConquer Fortress%s")
@@ -424,13 +424,13 @@ diplchance_initial_odds = "Sabotage City", "Sabotage City Escape",
 ; Can make the help text less redundant when you document it your self.
 
 ; "Transport Disembark 2" is "Transport Disembark" but from a non native
-; tile. "Conquer City 2" has the same relation to "Conquer City". So is
-; "Enter Hut 2" for "Enter Hut", "Frighten Hut 2" for "Frighten Hut" and
+; tile. "Conquer City Shrink 2" has the same relation to "Conquer City Shrink".
+; So is "Enter Hut 2" for "Enter Hut", "Frighten Hut 2" for "Frighten Hut" and
 ; "Conquer Extras" for "Conquer Extras 2".
 ; The version from the non native tile and the native tile version won`t
 ; appear in the same action selection dialog given their opposite
 ; requirements. Avoid double entries in the auto help by silencing it.
-quiet_actions = "Transport Disembark 2", "Conquer City 2", "Enter Hut 2",
+quiet_actions = "Transport Disembark 2", "Conquer City Shrink 2", "Enter Hut 2",
                 "Frighten Hut 2", "Conquer Extras 2", "Unit Move"
 
 ; /* <-- avoid gettext warnings
@@ -884,7 +884,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_native]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
@@ -899,7 +899,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_marines]
-action        = "Conquer City 2"
+action        = "Conquer City Shrink 2"
 actor_reqs    =
     { "type",           "name",          "range", "present"
       "UnitClassFlag",  "CanOccupyCity", "Local", TRUE
diff --git a/data/multiplayer/effects.ruleset b/data/multiplayer/effects.ruleset
index cfa8abef16..46347d262a 100644
--- a/data/multiplayer/effects.ruleset
+++ b/data/multiplayer/effects.ruleset
@@ -2616,7 +2616,7 @@ type    = "Action_Success_Actor_Move_Cost"
 value   = 65535
 reqs    =
     { "type",          "name",                  "range", "present"
-      "Action",        "Conquer City 2",        "Local", TRUE
+      "Action",        "Conquer City Shrink 2", "Local", TRUE
       "UnitState",     "OnNativeTile",          "Local", TRUE
       "UnitClassFlag", "TerrainSpeed",          "Local", TRUE
     }
diff --git a/data/sandbox/actions.ruleset b/data/sandbox/actions.ruleset
index 0c06530c12..b208b02a53 100644
--- a/data/sandbox/actions.ruleset
+++ b/data/sandbox/actions.ruleset
@@ -58,15 +58,15 @@ attack_blocked_by = "Collect Ransom", "Capture Units", "Bombard",
 suicide_attack_blocked_by = "Collect Ransom", "Capture Units", "Bombard",
                             "Explode Nuclear", "Nuke City", "Nuke Units"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Capture Units", "Bombard",
-                          "Explode Nuclear", "Nuke City", "Nuke Units",
-                          "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Capture Units", "Bombard",
+                                 "Explode Nuclear", "Nuke City", "Nuke Units",
+                                 "Attack", "Suicide Attack"
 
-; Forbid "Conquer City 2" if any one of the listed actions are legal.
-conquer_city_2_blocked_by = "Capture Units", "Bombard",
-                            "Explode Nuclear", "Nuke City", "Nuke Units",
-                            "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink 2" if any one of the listed actions are legal.
+conquer_city_shrink_2_blocked_by = "Capture Units", "Bombard",
+                                   "Explode Nuclear", "Nuke City", "Nuke Units",
+                                   "Attack", "Suicide Attack"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Transport Disembark 2",
@@ -89,7 +89,7 @@ bribe_unit_post_success_forced_actions = "Transport Embark",
 ; Actor units will - under certain circumstances - be forced to try
 ; performing the following actions in the specified order after successfully
 ; performing "Attack".
-attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
+attack_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -101,7 +101,7 @@ attack_post_success_forced_actions = "Conquer City", "Conquer City 2",
 ; performing the following actions in the specified order after successfully
 ; performing "Collect Ransom".
 collect_ransom_post_success_forced_actions =
-                                     "Conquer City", "Conquer City 2",
+                                     "Conquer City Shrink", "Conquer City Shrink 2",
                                      "Transport Disembark",
                                      "Transport Disembark 2",
                                      "Conquer Extras", "Conquer Extras 2",
@@ -111,7 +111,7 @@ collect_ransom_post_success_forced_actions =
 
 ; Actor units will be forced to try performing the following actions
 ; in the specified order after successfully performing "Wipe Units".
-wipe_units_post_success_forced_actions = "Conquer City", "Conquer City 2",
+wipe_units_post_success_forced_actions = "Conquer City Shrink", "Conquer City Shrink 2",
                                          "Transport Disembark",
                                          "Transport Disembark 2",
                                          "Conquer Extras", "Conquer Extras 2",
@@ -370,10 +370,10 @@ ui_name_attack = _("%sAttack%s")
 ui_name_suicide_attack = _("%sExplode Missile%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; /* TRANS: _Conquer City from non native (100% chance of success). */
-ui_name_conquer_city_2 = _("%sConquer City from non native%s")
+ui_name_conquer_city_shrink_2 = _("%sConquer City from non native%s")
 
 ; /* TRANS: _Storm the Castle (100% chance of success). */
 ui_name_conquer_extras = _("%sStorm the Castle%s")
@@ -505,13 +505,13 @@ diplchance_initial_odds = "Sabotage City", "Sabotage City Escape",
 ; Can make the help text less redundant when you document it your self.
 
 ; "Transport Disembark 2" is "Transport Disembark" but from a non native
-; tile. "Conquer City 2" has the same relation to "Conquer City". So is
-; "Enter Hut 2" for "Enter Hut", "Frighten Hut 2" for "Frighten Hut" and
+; tile. "Conquer City Shrink 2" has the same relation to "Conquer City Shrink".
+; So is "Enter Hut 2" for "Enter Hut", "Frighten Hut 2" for "Frighten Hut" and
 ; "Conquer Extras" for "Conquer Extras 2".
 ; The version from the non native tile and the native tile version won`t
 ; appear in the same action selection dialog given their opposite
 ; requirements. Avoid double entries in the auto help by silencing it.
-quiet_actions = "Transport Disembark 2", "Conquer City 2", "Enter Hut 2",
+quiet_actions = "Transport Disembark 2", "Conquer City Shrink 2", "Enter Hut 2",
                 "Frighten Hut 2", "Conquer Extras 2", "Unit Move"
 
 ; /* <-- avoid gettext warnings
@@ -1683,7 +1683,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_native]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",           "range",  "present"
       "UnitClassFlag",  "CanOccupyCity",  "Local",  TRUE
@@ -1700,7 +1700,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_native_despite_treuga_dei]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",           "name",           "range",  "present", "survives"
       "UnitClassFlag",  "CanOccupyCity",  "Local",  TRUE,      FALSE
@@ -1717,7 +1717,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_marines]
-action        = "Conquer City 2"
+action        = "Conquer City Shrink 2"
 actor_reqs    =
     { "type",           "name",           "range",  "present"
       "UnitClassFlag",  "CanOccupyCity",  "Local",  TRUE
@@ -1735,7 +1735,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_marines_despite_treuga_dei]
-action        = "Conquer City 2"
+action        = "Conquer City Shrink 2"
 actor_reqs    =
     { "type",           "name",           "range",  "present", "survives"
       "UnitClassFlag",  "CanOccupyCity",  "Local",  TRUE,      FALSE
diff --git a/data/sandbox/effects.ruleset b/data/sandbox/effects.ruleset
index cba611fb40..a9a1006e4c 100644
--- a/data/sandbox/effects.ruleset
+++ b/data/sandbox/effects.ruleset
@@ -4947,7 +4947,7 @@ type    = "Action_Success_Actor_Move_Cost"
 value   = 65535
 reqs    =
     { "type",          "name",                  "range", "present"
-      "Action",        "Conquer City 2",        "Local", TRUE
+      "Action",        "Conquer City Shrink 2", "Local", TRUE
       "UnitState",     "OnNativeTile",          "Local", TRUE
       "UnitClassFlag", "TerrainSpeed",          "Local", TRUE
     }
@@ -5235,9 +5235,9 @@ reqs    =
 type    = "Casus_Belli_Success"
 value   = 1000
 reqs    =
-    { "type",     "name",                 "range", "survives"
-      "Action",   "Conquer City",         "Local", FALSE
-      "Building", "Treuga Dei",           "World", TRUE
+    { "type",     "name",                "range", "survives"
+      "Action",   "Conquer City Shrink", "Local", FALSE
+      "Building", "Treuga Dei",          "World", TRUE
     }
 
 ; Treuga Dei Casus Belli
@@ -5245,9 +5245,9 @@ reqs    =
 type    = "Casus_Belli_Success"
 value   = 1000
 reqs    =
-    { "type",     "name",                 "range", "survives"
-      "Action",   "Conquer City 2",       "Local", FALSE
-      "Building", "Treuga Dei",           "World", TRUE
+    { "type",     "name",                  "range", "survives"
+      "Action",   "Conquer City Shrink 2", "Local", FALSE
+      "Building", "Treuga Dei",            "World", TRUE
     }
 
 ; Treuga Dei Casus Belli
diff --git a/data/webperimental/actions.ruleset b/data/webperimental/actions.ruleset
index fe360b6036..e896cd3de7 100644
--- a/data/webperimental/actions.ruleset
+++ b/data/webperimental/actions.ruleset
@@ -46,9 +46,9 @@ attack_blocked_by = "Collect Ransom", "Explode Nuclear", "Nuke City",
 suicide_attack_blocked_by = "Collect Ransom", "Explode Nuclear",
                             "Nuke City", "Nuke Units"
 
-; Forbid "Conquer City" if any one of the listed actions are legal.
-conquer_city_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
-                          "Attack", "Suicide Attack"
+; Forbid "Conquer City Shrink" if any one of the listed actions are legal.
+conquer_city_shrink_blocked_by = "Explode Nuclear", "Nuke City", "Nuke Units",
+                                 "Attack", "Suicide Attack"
 
 ; Forbid regular unit move if one of the actions below is legal.
 move_blocked_by = "Transport Disembark", "Conquer Extras", "Enter Hut",
@@ -66,7 +66,7 @@ bribe_unit_post_success_forced_actions = "Transport Embark",
 ; Actor units will - under certain circumstances - be forced to try
 ; performing the following actions in the specified order after successfully
 ; performing "Attack".
-attack_post_success_forced_actions = "Conquer City", "Transport Disembark",
+attack_post_success_forced_actions = "Conquer City Shrink", "Transport Disembark",
                                      "Conquer Extras",
                                      "Enter Hut","Frighten Hut",
                                      "Unit Move"
@@ -74,7 +74,7 @@ attack_post_success_forced_actions = "Conquer City", "Transport Disembark",
 ; performing the following actions in the specified order after successfully
 ; performing "Collect Ransom".
 collect_ransom_post_success_forced_actions =
-                                     "Conquer City", "Transport Disembark",
+                                     "Conquer City Shrink", "Transport Disembark",
                                      "Conquer Extras",
                                      "Enter Hut","Frighten Hut",
                                      "Unit Move"
@@ -310,7 +310,7 @@ ui_name_attack = _("%sAttack%s")
 ui_name_suicide_attack = _("%sExplode Missile%s")
 
 ; /* TRANS: _Conquer City (100% chance of success). */
-ui_name_conquer_city = _("%sConquer City%s")
+ui_name_conquer_city_shrink = _("%sConquer City%s")
 
 ; /* TRANS: _Conquer Fortress (100% chance of success). */
 ui_name_conquer_extras = _("%sConquer Fortress%s")
@@ -1163,7 +1163,7 @@ actor_reqs    =
     }
 
 [enabler_conquer_city_native]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",          "name",          "range", "present"
       "UnitClassFlag", "CanOccupyCity", "Local", TRUE
@@ -1178,7 +1178,7 @@ target_reqs   =
     }
 
 [enabler_conquer_city_marines]
-action        = "Conquer City"
+action        = "Conquer City Shrink"
 actor_reqs    =
     { "type",          "name",          "range", "present"
       "UnitClassFlag", "CanOccupyCity", "Local", TRUE
diff --git a/doc/README.actions b/doc/README.actions
index 5feb6b088c..f41f3d687c 100644
--- a/doc/README.actions
+++ b/doc/README.actions
@@ -535,10 +535,10 @@ Actions done by a unit against a city
  * the target city is domestic or, if airliftingstyle permits it, allied
  * the target city has Airlift
 
-"Conquer City" - Conquer the target city.
- * UI name can be set using ui_name_conquer_city
+"Conquer City Shrink" - Shrink target city by one and conquer it.
+ * UI name can be set using ui_name_conquer_city_shrink
  * actor must be aware that the target exists
- * any action listed in conquer_city_blocked_by must be impossible
+ * any action listed in conquer_city_shrink_blocked_by must be impossible
  * "Attack" must be impossible
  * the actor unit must be on a tile next to the target.
  * the actor player's nation can't be an animal barbarian. (!)
@@ -561,23 +561,23 @@ Actions done by a unit against a city
  * the target must be foreign (!)
  * the target city contains 0 units (!)
 
-"Conquer City 2" - Conquer the target city.
-* UI name can be set using ui_name_conquer_city_2
-* any action listed in conquer_city_2_blocked_by must be impossible
-* A copy of "Conquer City".
-* See "Conquer City" for everything else.
-
-"Conquer City 3" - Conquer the target city.
-* UI name can be set using ui_name_conquer_city_3
-* any action listed in conquer_city_3_blocked_by must be impossible
-* A copy of "Conquer City".
-* See "Conquer City" for everything else.
-
-"Conquer City 4" - Conquer the target city.
-* UI name can be set using ui_name_conquer_city_4
-* any action listed in conquer_city_4_blocked_by must be impossible
-* A copy of "Conquer City".
-* See "Conquer City" for everything else.
+"Conquer City Shrink 2" - Shrink target city by one and conquer it.
+* UI name can be set using ui_name_conquer_city_shrink_2
+* any action listed in conquer_city_shrink_2_blocked_by must be impossible
+* A copy of "Conquer City Shrink".
+* See "Conquer City Shrink" for everything else.
+
+"Conquer City Shrink 3" - Shrink target city by one and conquer it.
+* UI name can be set using ui_name_conquer_city_shrink_3
+* any action listed in conquer_city_shrink_3_blocked_by must be impossible
+* A copy of "Conquer City Shrink".
+* See "Conquer City Shrink" for everything else.
+
+"Conquer City Shrink 4" - Shrink target city by one and conquer it.
+* UI name can be set using ui_name_conquer_city_shrink_4
+* any action listed in conquer_city_shrink_4_blocked_by must be impossible
+* A copy of "Conquer City Shrink".
+* See "Conquer City Shrink" for everything else.
 
 "Surgical Strike Building" - Destroy a specific building.
  * UI name can be set using ui_name_surgical_strike_building
diff --git a/gen_headers/enums/actions_enums.def b/gen_headers/enums/actions_enums.def
index 7e71b25035..284837f954 100644
--- a/gen_headers/enums/actions_enums.def
+++ b/gen_headers/enums/actions_enums.def
@@ -57,10 +57,10 @@ values
   ACTION_SUICIDE_ATTACK2                  "Suicide Attack 2"
   ACTION_STRIKE_BUILDING                  "Surgical Strike Building"
   ACTION_STRIKE_PRODUCTION                "Surgical Strike Production"
-  ACTION_CONQUER_CITY                     "Conquer City"
-  ACTION_CONQUER_CITY2                    "Conquer City 2"
-  ACTION_CONQUER_CITY3                    "Conquer City 3"
-  ACTION_CONQUER_CITY4                    "Conquer City 4"
+  ACTION_CONQUER_CITY_SHRINK              "Conquer City Shrink"
+  ACTION_CONQUER_CITY_SHRINK2             "Conquer City Shrink 2"
+  ACTION_CONQUER_CITY_SHRINK3             "Conquer City Shrink 3"
+  ACTION_CONQUER_CITY_SHRINK4             "Conquer City Shrink 4"
   ACTION_BOMBARD                          "Bombard"
   ACTION_BOMBARD2                         "Bombard 2"
   ACTION_BOMBARD3                         "Bombard 3"
diff --git a/server/ruleset/rscompat.c b/server/ruleset/rscompat.c
index 9789b5d95f..095fb61bc1 100644
--- a/server/ruleset/rscompat.c
+++ b/server/ruleset/rscompat.c
@@ -646,3 +646,45 @@ const char *rscompat_universal_name_3_3(const char *old_name)
 
   return old_name;
 }
+
+/**********************************************************************//**
+  Tell 3.2 blocked_by name matching 3.3 one
+**************************************************************************/
+const char *blocked_by_old_name_3_3(const char *new_name)
+{
+  if (fc_strcasecmp("conquer_city_shrink_blocked_by", new_name)) {
+    return "conquer_city_blocked_by";
+  }
+  if (fc_strcasecmp("conquer_city_shrink_2_blocked_by", new_name)) {
+    return "conquer_city_2_blocked_by";
+  }
+  if (fc_strcasecmp("conquer_city_shrink_3_blocked_by", new_name)) {
+    return "conquer_city_3_blocked_by";
+  }
+  if (fc_strcasecmp("conquer_city_shrink_4_blocked_by", new_name)) {
+    return "conquer_city_4_blocked_by";
+  }
+
+  return nullptr;
+}
+
+/**********************************************************************//**
+  Tell 3.2 ui_name matching 3.3 one
+**************************************************************************/
+const char *ui_name_old_name_3_3(const char *new_name)
+{
+  if (fc_strcasecmp("ui_name_conquer_city", new_name)) {
+    return "ui_name_conquer_city_shrink";
+  }
+  if (fc_strcasecmp("ui_name_conquer_city_2", new_name)) {
+    return "ui_name_conquer_city_shrink_2";
+  }
+  if (fc_strcasecmp("ui_name_conquer_city_3", new_name)) {
+    return "ui_name_conquer_city_shrink_3";
+  }
+  if (fc_strcasecmp("ui_name_conquer_city_4", new_name)) {
+    return "ui_name_conquer_city_shrink_4";
+  }
+  
+  return nullptr;
+}
diff --git a/server/ruleset/rscompat.h b/server/ruleset/rscompat.h
index aa7179adbf..5bb37deb6c 100644
--- a/server/ruleset/rscompat.h
+++ b/server/ruleset/rscompat.h
@@ -60,6 +60,9 @@ struct requirement_vector *lookup_req_list(struct section_file *file,
 const char *rscompat_utype_flag_name_3_3(const char *old_name);
 const char *rscompat_universal_name_3_3(const char *old_name);
 
+const char *blocked_by_old_name_3_3(const char *new_name);
+const char *ui_name_old_name_3_3(const char *new_name);
+
 #ifdef __cplusplus
 }
 #endif /* __cplusplus */
diff --git a/server/ruleset/ruleload.c b/server/ruleset/ruleload.c
index 7ca83666b6..4a552cf5e6 100644
--- a/server/ruleset/ruleload.c
+++ b/server/ruleset/ruleload.c
@@ -6272,16 +6272,26 @@ static int secfile_lookup_int_default_min_max(struct section_file *file,
   Load ui_name of one action
 **************************************************************************/
 static bool load_action_ui_name(struct section_file *file, int act,
-                                const char *entry_name)
+                                const char *entry_name,
+                                struct rscompat_info *compat)
 {
   const char *text;
   const char *def = action_ui_name_default(act);
 
-  if (entry_name == NULL) {
+  if (entry_name == nullptr) {
     text = def;
   } else {
-    text = secfile_lookup_str_default(file, def,
+    text = secfile_lookup_str_default(file, nullptr,
                                       "actions.%s", entry_name);
+
+    if (text == nullptr && compat->compat_mode && compat->version < RSFORMAT_3_3) {
+      text = secfile_lookup_str_default(file, nullptr,
+                                        "actions.%s", ui_name_old_name_3_3(entry_name));
+    }
+
+    if (text == nullptr) {
+      text = def;
+    }
   }
 
   sz_strlcpy(action_by_number(act)->ui_name, text);
@@ -6399,23 +6409,24 @@ static bool load_action_actor_consuming_always(struct section_file *file,
 **************************************************************************/
 static bool load_action_blocked_by_list(struct section_file *file,
                                         const char *filename,
-                                        struct action *paction)
+                                        struct action *paction,
+                                        struct rscompat_info *compat)
 {
-  if (action_blocked_by_ruleset_var_name(paction) != NULL) {
-    /* Action blocking can be loaded from the ruleset. */
+  const char *var_name = action_blocked_by_ruleset_var_name(paction);
 
+  if (var_name != nullptr) {
+    /* Action blocking can be loaded from the ruleset. */
     char fullpath[1024];
 
-    fc_snprintf(fullpath, sizeof(fullpath), "actions.%s",
-                action_blocked_by_ruleset_var_name(paction));
+    fc_snprintf(fullpath, sizeof(fullpath), "actions.%s", var_name);
 
     if (secfile_entry_by_path(file, fullpath)) {
       enum gen_action *blocking_actions;
       size_t asize;
       int j;
 
-      blocking_actions =
-          secfile_lookup_enum_vec(file, &asize, gen_action, "%s", fullpath);
+      blocking_actions
+        = secfile_lookup_enum_vec(file, &asize, gen_action, "%s", fullpath);
 
       if (!blocking_actions) {
         /* Entity exists but couldn't read it. */
@@ -6431,6 +6442,32 @@ static bool load_action_blocked_by_list(struct section_file *file,
       }
 
       free(blocking_actions);
+    } else if (compat->compat_mode && compat->version < RSFORMAT_3_3) {
+      fc_snprintf(fullpath, sizeof(fullpath), "actions.%s", blocked_by_old_name_3_3(var_name));
+
+      if (secfile_entry_by_path(file, fullpath)) {
+        enum gen_action *blocking_actions;
+        size_t asize;
+        int j;
+
+        blocking_actions
+          = secfile_lookup_enum_vec(file, &asize, gen_action, "%s", fullpath);
+
+        if (!blocking_actions) {
+          /* Entity exists but couldn't read it. */
+          ruleset_error(NULL, LOG_ERROR,
+                        "\"%s\": %s: bad action list",
+                        filename, fullpath);
+
+          return FALSE;
+        }
+
+        for (j = 0; j < asize; j++) {
+          BV_SET(paction->blocked_by, blocking_actions[j]);
+        }
+
+        free(blocking_actions);
+      }
     }
   }
 
@@ -7619,7 +7656,7 @@ static bool load_ruleset_actions(struct section_file *file,
     action_iterate(act_id) {
       struct action *paction = action_by_number(act_id);
 
-      if (!load_action_blocked_by_list(file, filename, paction)) {
+      if (!load_action_blocked_by_list(file, filename, paction, compat)) {
         ok = FALSE;
         break;
       }
@@ -7666,7 +7703,7 @@ static bool load_ruleset_actions(struct section_file *file,
             entry_name = action_ui_name_ruleset_var_name(act_id);
           }
 
-          load_action_ui_name(file, act_id, entry_name);
+          load_action_ui_name(file, act_id, entry_name, compat);
         }
 
         if (!ok) {
-- 
2.43.0

