From 31112b0a872e3ffd30a621240d6e1e2076fe4f81 Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Fri, 5 Jan 2024 07:29:16 +0200
Subject: [PATCH 24/24] Generate actions specenum with generate_enums.py

See RM #129

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 common/actions.h                    | 266 +---------------------------
 gen_headers/enums/Makefile.am       |   4 +-
 gen_headers/enums/actions_enums.def | 140 +++++++++++++++
 meson.build                         |   1 +
 4 files changed, 145 insertions(+), 266 deletions(-)
 create mode 100644 gen_headers/enums/actions_enums.def

diff --git a/common/actions.h b/common/actions.h
index f7d3a41630..12b42b2708 100644
--- a/common/actions.h
+++ b/common/actions.h
@@ -45,271 +45,7 @@ extern "C" {
 
 const char *gen_action_name_update_cb(const char *old_name);
 
-/* Values used in the network protocol. */
-/* Names used in file formats but not normally shown to users. */
-#define SPECENUM_NAME gen_action
-#define SPECENUM_VALUE0 ACTION_ESTABLISH_EMBASSY
-#define SPECENUM_VALUE0NAME "Establish Embassy"
-#define SPECENUM_VALUE1 ACTION_ESTABLISH_EMBASSY_STAY
-#define SPECENUM_VALUE1NAME "Establish Embassy Stay"
-#define SPECENUM_VALUE2 ACTION_SPY_INVESTIGATE_CITY
-#define SPECENUM_VALUE2NAME "Investigate City"
-#define SPECENUM_VALUE3 ACTION_INV_CITY_SPEND
-#define SPECENUM_VALUE3NAME "Investigate City Spend Unit"
-#define SPECENUM_VALUE4 ACTION_SPY_POISON
-#define SPECENUM_VALUE4NAME "Poison City"
-#define SPECENUM_VALUE5 ACTION_SPY_POISON_ESC
-#define SPECENUM_VALUE5NAME "Poison City Escape"
-#define SPECENUM_VALUE6 ACTION_SPY_STEAL_GOLD
-#define SPECENUM_VALUE6NAME "Steal Gold"
-#define SPECENUM_VALUE7 ACTION_SPY_STEAL_GOLD_ESC
-#define SPECENUM_VALUE7NAME "Steal Gold Escape"
-#define SPECENUM_VALUE8 ACTION_SPY_SABOTAGE_CITY
-#define SPECENUM_VALUE8NAME "Sabotage City"
-#define SPECENUM_VALUE9 ACTION_SPY_SABOTAGE_CITY_ESC
-#define SPECENUM_VALUE9NAME "Sabotage City Escape"
-#define SPECENUM_VALUE10 ACTION_SPY_TARGETED_SABOTAGE_CITY
-#define SPECENUM_VALUE10NAME "Targeted Sabotage City"
-#define SPECENUM_VALUE11 ACTION_SPY_TARGETED_SABOTAGE_CITY_ESC
-#define SPECENUM_VALUE11NAME "Targeted Sabotage City Escape"
-#define SPECENUM_VALUE12 ACTION_SPY_SABOTAGE_CITY_PRODUCTION
-#define SPECENUM_VALUE12NAME "Sabotage City Production"
-#define SPECENUM_VALUE13 ACTION_SPY_SABOTAGE_CITY_PRODUCTION_ESC
-#define SPECENUM_VALUE13NAME "Sabotage City Production Escape"
-#define SPECENUM_VALUE14 ACTION_SPY_STEAL_TECH
-#define SPECENUM_VALUE14NAME "Steal Tech"
-#define SPECENUM_VALUE15 ACTION_SPY_STEAL_TECH_ESC
-#define SPECENUM_VALUE15NAME "Steal Tech Escape Expected"
-#define SPECENUM_VALUE16 ACTION_SPY_TARGETED_STEAL_TECH
-#define SPECENUM_VALUE16NAME "Targeted Steal Tech"
-#define SPECENUM_VALUE17 ACTION_SPY_TARGETED_STEAL_TECH_ESC
-#define SPECENUM_VALUE17NAME "Targeted Steal Tech Escape Expected"
-#define SPECENUM_VALUE18 ACTION_SPY_INCITE_CITY
-#define SPECENUM_VALUE18NAME "Incite City"
-#define SPECENUM_VALUE19 ACTION_SPY_INCITE_CITY_ESC
-#define SPECENUM_VALUE19NAME "Incite City Escape"
-#define SPECENUM_VALUE20 ACTION_TRADE_ROUTE
-#define SPECENUM_VALUE20NAME "Establish Trade Route"
-#define SPECENUM_VALUE21 ACTION_MARKETPLACE
-#define SPECENUM_VALUE21NAME "Enter Marketplace"
-#define SPECENUM_VALUE22 ACTION_HELP_WONDER
-#define SPECENUM_VALUE22NAME "Help Wonder"
-#define SPECENUM_VALUE23 ACTION_SPY_BRIBE_UNIT
-#define SPECENUM_VALUE23NAME "Bribe Unit"
-#define SPECENUM_VALUE24 ACTION_CAPTURE_UNITS
-#define SPECENUM_VALUE24NAME "Capture Units"
-#define SPECENUM_VALUE25 ACTION_SPY_SABOTAGE_UNIT
-#define SPECENUM_VALUE25NAME "Sabotage Unit"
-#define SPECENUM_VALUE26 ACTION_SPY_SABOTAGE_UNIT_ESC
-#define SPECENUM_VALUE26NAME "Sabotage Unit Escape"
-#define SPECENUM_VALUE27 ACTION_FOUND_CITY
-#define SPECENUM_VALUE27NAME "Found City"
-#define SPECENUM_VALUE28 ACTION_JOIN_CITY
-#define SPECENUM_VALUE28NAME "Join City"
-#define SPECENUM_VALUE29 ACTION_STEAL_MAPS
-#define SPECENUM_VALUE29NAME "Steal Maps"
-#define SPECENUM_VALUE30 ACTION_STEAL_MAPS_ESC
-#define SPECENUM_VALUE30NAME "Steal Maps Escape"
-#define SPECENUM_VALUE31 ACTION_SPY_NUKE
-#define SPECENUM_VALUE31NAME "Suitcase Nuke"
-#define SPECENUM_VALUE32 ACTION_SPY_NUKE_ESC
-#define SPECENUM_VALUE32NAME "Suitcase Nuke Escape"
-#define SPECENUM_VALUE33 ACTION_NUKE
-#define SPECENUM_VALUE33NAME "Explode Nuclear"
-#define SPECENUM_VALUE34 ACTION_NUKE_CITY
-#define SPECENUM_VALUE34NAME "Nuke City"
-#define SPECENUM_VALUE35 ACTION_NUKE_UNITS
-#define SPECENUM_VALUE35NAME "Nuke Units"
-#define SPECENUM_VALUE36 ACTION_DESTROY_CITY
-#define SPECENUM_VALUE36NAME "Destroy City"
-#define SPECENUM_VALUE37 ACTION_EXPEL_UNIT
-#define SPECENUM_VALUE37NAME "Expel Unit"
-#define SPECENUM_VALUE38 ACTION_DISBAND_UNIT_RECOVER
-#define SPECENUM_VALUE38NAME "Disband Unit Recover"
-#define SPECENUM_VALUE39 ACTION_DISBAND_UNIT
-#define SPECENUM_VALUE39NAME "Disband Unit"
-#define SPECENUM_VALUE40 ACTION_HOME_CITY
-#define SPECENUM_VALUE40NAME "Home City"
-#define SPECENUM_VALUE41 ACTION_HOMELESS
-#define SPECENUM_VALUE41NAME "Unit Make Homeless"
-#define SPECENUM_VALUE42 ACTION_UPGRADE_UNIT
-#define SPECENUM_VALUE42NAME "Upgrade Unit"
-#define SPECENUM_VALUE43 ACTION_CONVERT
-#define SPECENUM_VALUE43NAME "Convert Unit"
-#define SPECENUM_VALUE44 ACTION_AIRLIFT
-#define SPECENUM_VALUE44NAME "Airlift Unit"
-#define SPECENUM_VALUE45 ACTION_ATTACK
-#define SPECENUM_VALUE45NAME "Attack"
-#define SPECENUM_VALUE46 ACTION_ATTACK2
-#define SPECENUM_VALUE46NAME "Attack 2"
-#define SPECENUM_VALUE47 ACTION_SUICIDE_ATTACK
-#define SPECENUM_VALUE47NAME "Suicide Attack"
-#define SPECENUM_VALUE48 ACTION_SUICIDE_ATTACK2
-#define SPECENUM_VALUE48NAME "Suicide Attack 2"
-#define SPECENUM_VALUE49 ACTION_STRIKE_BUILDING
-#define SPECENUM_VALUE49NAME "Surgical Strike Building"
-#define SPECENUM_VALUE50 ACTION_STRIKE_PRODUCTION
-#define SPECENUM_VALUE50NAME "Surgical Strike Production"
-#define SPECENUM_VALUE51 ACTION_CONQUER_CITY
-#define SPECENUM_VALUE51NAME "Conquer City"
-#define SPECENUM_VALUE52 ACTION_CONQUER_CITY2
-#define SPECENUM_VALUE52NAME "Conquer City 2"
-#define SPECENUM_VALUE53 ACTION_CONQUER_CITY3
-#define SPECENUM_VALUE53NAME "Conquer City 3"
-#define SPECENUM_VALUE54 ACTION_CONQUER_CITY4
-#define SPECENUM_VALUE54NAME "Conquer City 4"
-#define SPECENUM_VALUE55 ACTION_BOMBARD
-#define SPECENUM_VALUE55NAME "Bombard"
-#define SPECENUM_VALUE56 ACTION_BOMBARD2
-#define SPECENUM_VALUE56NAME "Bombard 2"
-#define SPECENUM_VALUE57 ACTION_BOMBARD3
-#define SPECENUM_VALUE57NAME "Bombard 3"
-#define SPECENUM_VALUE58 ACTION_BOMBARD_LETHAL
-#define SPECENUM_VALUE58NAME "Bombard Lethal"
-#define SPECENUM_VALUE59 ACTION_BOMBARD_LETHAL2
-#define SPECENUM_VALUE59NAME "Bombard Lethal 2"
-#define SPECENUM_VALUE60 ACTION_ROAD
-#define SPECENUM_VALUE60NAME "Build Road"
-#define SPECENUM_VALUE61 ACTION_ROAD2
-#define SPECENUM_VALUE61NAME "Build Road 2"
-#define SPECENUM_VALUE62 ACTION_IRRIGATE
-#define SPECENUM_VALUE62NAME "Build Irrigation"
-#define SPECENUM_VALUE63 ACTION_IRRIGATE2
-#define SPECENUM_VALUE63NAME "Build Irrigation 2"
-#define SPECENUM_VALUE64 ACTION_MINE
-#define SPECENUM_VALUE64NAME "Build Mine"
-#define SPECENUM_VALUE65 ACTION_MINE2
-#define SPECENUM_VALUE65NAME "Build Mine 2"
-#define SPECENUM_VALUE66 ACTION_BASE
-#define SPECENUM_VALUE66NAME "Build Base"
-#define SPECENUM_VALUE67 ACTION_BASE2
-#define SPECENUM_VALUE67NAME "Build Base 2"
-#define SPECENUM_VALUE68 ACTION_PILLAGE
-#define SPECENUM_VALUE68NAME "Pillage"
-#define SPECENUM_VALUE69 ACTION_TRANSPORT_BOARD
-#define SPECENUM_VALUE69NAME "Transport Board"
-#define SPECENUM_VALUE70 ACTION_TRANSPORT_BOARD2
-#define SPECENUM_VALUE70NAME "Transport Board 2"
-#define SPECENUM_VALUE71 ACTION_TRANSPORT_BOARD3
-#define SPECENUM_VALUE71NAME "Transport Board_3"
-#define SPECENUM_VALUE72 ACTION_TRANSPORT_DEBOARD
-#define SPECENUM_VALUE72NAME "Transport Deboard"
-#define SPECENUM_VALUE73 ACTION_TRANSPORT_EMBARK
-#define SPECENUM_VALUE73NAME "Transport Embark"
-#define SPECENUM_VALUE74 ACTION_TRANSPORT_EMBARK2
-#define SPECENUM_VALUE74NAME "Transport Embark 2"
-#define SPECENUM_VALUE75 ACTION_TRANSPORT_EMBARK3
-#define SPECENUM_VALUE75NAME "Transport Embark 3"
-#define SPECENUM_VALUE76 ACTION_TRANSPORT_EMBARK4
-#define SPECENUM_VALUE76NAME "Transport Embark 4"
-#define SPECENUM_VALUE77 ACTION_TRANSPORT_DISEMBARK1
-#define SPECENUM_VALUE77NAME "Transport Disembark"
-#define SPECENUM_VALUE78 ACTION_TRANSPORT_DISEMBARK2
-#define SPECENUM_VALUE78NAME "Transport Disembark 2"
-#define SPECENUM_VALUE79 ACTION_TRANSPORT_DISEMBARK3
-#define SPECENUM_VALUE79NAME "Transport Disembark 3"
-#define SPECENUM_VALUE80 ACTION_TRANSPORT_DISEMBARK4
-#define SPECENUM_VALUE80NAME "Transport Disembark 4"
-#define SPECENUM_VALUE81 ACTION_TRANSPORT_LOAD
-#define SPECENUM_VALUE81NAME "Transport Load"
-#define SPECENUM_VALUE82 ACTION_TRANSPORT_LOAD2
-#define SPECENUM_VALUE82NAME "Transport Load 2"
-#define SPECENUM_VALUE83 ACTION_TRANSPORT_LOAD3
-#define SPECENUM_VALUE83NAME "Transport Load 3"
-#define SPECENUM_VALUE84 ACTION_TRANSPORT_UNLOAD
-#define SPECENUM_VALUE84NAME "Transport Unload"
-#define SPECENUM_VALUE85 ACTION_SPY_SPREAD_PLAGUE
-#define SPECENUM_VALUE85NAME "Spread Plague"
-#define SPECENUM_VALUE86 ACTION_SPY_ATTACK
-#define SPECENUM_VALUE86NAME "Spy Attack"
-#define SPECENUM_VALUE87 ACTION_CONQUER_EXTRAS
-#define SPECENUM_VALUE87NAME "Conquer Extras"
-#define SPECENUM_VALUE88 ACTION_CONQUER_EXTRAS2
-#define SPECENUM_VALUE88NAME "Conquer Extras 2"
-#define SPECENUM_VALUE89 ACTION_CONQUER_EXTRAS3
-#define SPECENUM_VALUE89NAME "Conquer Extras 3"
-#define SPECENUM_VALUE90 ACTION_CONQUER_EXTRAS4
-#define SPECENUM_VALUE90NAME "Conquer Extras 4"
-#define SPECENUM_VALUE91 ACTION_HUT_ENTER
-#define SPECENUM_VALUE91NAME "Enter Hut"
-#define SPECENUM_VALUE92 ACTION_HUT_ENTER2
-#define SPECENUM_VALUE92NAME "Enter Hut 2"
-#define SPECENUM_VALUE93 ACTION_HUT_ENTER3
-#define SPECENUM_VALUE93NAME "Enter Hut 3"
-#define SPECENUM_VALUE94 ACTION_HUT_ENTER4
-#define SPECENUM_VALUE94NAME "Enter Hut 4"
-#define SPECENUM_VALUE95 ACTION_HUT_FRIGHTEN
-#define SPECENUM_VALUE95NAME "Frighten Hut"
-#define SPECENUM_VALUE96 ACTION_HUT_FRIGHTEN2
-#define SPECENUM_VALUE96NAME "Frighten Hut 2"
-#define SPECENUM_VALUE97 ACTION_HUT_FRIGHTEN3
-#define SPECENUM_VALUE97NAME "Frighten Hut 3"
-#define SPECENUM_VALUE98 ACTION_HUT_FRIGHTEN4
-#define SPECENUM_VALUE98NAME "Frighten Hut 4"
-#define SPECENUM_VALUE99 ACTION_HEAL_UNIT
-#define SPECENUM_VALUE99NAME "Heal Unit"
-#define SPECENUM_VALUE100 ACTION_HEAL_UNIT2
-#define SPECENUM_VALUE100NAME "Heal Unit 2"
-#define SPECENUM_VALUE101 ACTION_PARADROP
-#define SPECENUM_VALUE101NAME "Paradrop Unit"
-#define SPECENUM_VALUE102 ACTION_PARADROP_CONQUER
-#define SPECENUM_VALUE102NAME "Paradrop Unit Conquer"
-#define SPECENUM_VALUE103 ACTION_PARADROP_FRIGHTEN
-#define SPECENUM_VALUE103NAME "Paradrop Unit Frighten"
-#define SPECENUM_VALUE104 ACTION_PARADROP_FRIGHTEN_CONQUER
-#define SPECENUM_VALUE104NAME "Paradrop Unit Frighten Conquer"
-#define SPECENUM_VALUE105 ACTION_PARADROP_ENTER
-#define SPECENUM_VALUE105NAME "Paradrop Unit Enter"
-#define SPECENUM_VALUE106 ACTION_PARADROP_ENTER_CONQUER
-#define SPECENUM_VALUE106NAME "Paradrop Unit Enter Conquer"
-#define SPECENUM_VALUE107 ACTION_WIPE_UNITS
-#define SPECENUM_VALUE107NAME "Wipe Units"
-#define SPECENUM_VALUE108 ACTION_SPY_ESCAPE
-#define SPECENUM_VALUE108NAME "Spy Escape"
-#define SPECENUM_VALUE109 ACTION_UNIT_MOVE
-#define SPECENUM_VALUE109NAME "Unit Move"
-#define SPECENUM_VALUE110 ACTION_UNIT_MOVE2
-#define SPECENUM_VALUE110NAME "Unit Move 2"
-#define SPECENUM_VALUE111 ACTION_UNIT_MOVE3
-#define SPECENUM_VALUE111NAME "Unit Move 3"
-#define SPECENUM_VALUE112 ACTION_TELEPORT
-#define SPECENUM_VALUE112NAME "Teleport"
-#define SPECENUM_VALUE113 ACTION_TELEPORT2
-#define SPECENUM_VALUE113NAME "Teleport2"
-#define SPECENUM_VALUE114 ACTION_TELEPORT3
-#define SPECENUM_VALUE114NAME "Teleport3"
-#define SPECENUM_VALUE115 ACTION_TELEPORT_CONQUER
-#define SPECENUM_VALUE115NAME "Teleport Conquer"
-#define SPECENUM_VALUE116 ACTION_CLEAN
-#define SPECENUM_VALUE116NAME "Clean"
-#define SPECENUM_VALUE117 ACTION_COLLECT_RANSOM
-#define SPECENUM_VALUE117NAME "Collect Ransom"
-#define SPECENUM_VALUE118 ACTION_FORTIFY
-#define SPECENUM_VALUE118NAME "Fortify"
-#define SPECENUM_VALUE119 ACTION_CULTIVATE
-#define SPECENUM_VALUE119NAME "Cultivate"
-#define SPECENUM_VALUE120 ACTION_PLANT
-#define SPECENUM_VALUE120NAME "Plant"
-#define SPECENUM_VALUE121 ACTION_TRANSFORM_TERRAIN
-#define SPECENUM_VALUE121NAME "Transform Terrain"
-
-/* Enabler checks only */
-#define SPECENUM_VALUE122 ACTION_GAIN_VETERANCY
-#define SPECENUM_VALUE122NAME "Gain Veterancy"
-
-/* User actions */
-#define SPECENUM_VALUE123 ACTION_USER_ACTION1
-#define SPECENUM_VALUE123NAME "User Action 1"
-#define SPECENUM_VALUE124 ACTION_USER_ACTION2
-#define SPECENUM_VALUE124NAME "User Action 2"
-#define SPECENUM_VALUE125 ACTION_USER_ACTION3
-#define SPECENUM_VALUE125NAME "User Action 3"
-#define SPECENUM_VALUE126 ACTION_USER_ACTION4
-#define SPECENUM_VALUE126NAME "User Action 4"
-#define SPECENUM_BITVECTOR bv_actions
-#define SPECENUM_COUNT ACTION_COUNT
-#define SPECENUM_NAME_UPDATER
-#include "specenum_gen.h"
+#include "actions_enums_gen.h"
 
 /* Fake action id used in searches to signal "any action at all". */
 #define ACTION_ANY ACTION_COUNT
diff --git a/gen_headers/enums/Makefile.am b/gen_headers/enums/Makefile.am
index 600456fa47..1e9d6a66ad 100644
--- a/gen_headers/enums/Makefile.am
+++ b/gen_headers/enums/Makefile.am
@@ -1,10 +1,12 @@
 ## Process this file with automake to produce Makefile.in
 
 ENUMS_GEN = \
-		manual_enums_gen.h \
+		actions_enums_gen.h	\
+		manual_enums_gen.h	\
 		terrain_enums_gen.h
 
 EXTRA_DIST = \
+		actions_enums.def	\
 		manual_enums.def	\
 		terrain_enums.def	\
 		$(ENUMS_GEN)
diff --git a/gen_headers/enums/actions_enums.def b/gen_headers/enums/actions_enums.def
new file mode 100644
index 0000000000..19a6745e52
--- /dev/null
+++ b/gen_headers/enums/actions_enums.def
@@ -0,0 +1,140 @@
+# Specenum definitions for common/actions.h
+# See gen_headers/generate_enums.py for syntax
+
+enum gen_action
+  count ACTION_COUNT
+  bitvector bv_actions
+  name-updater
+values
+  ACTION_ESTABLISH_EMBASSY                "Establish Embassy"
+  ACTION_ESTABLISH_EMBASSY_STAY           "Establish Embassy Stay"
+  ACTION_SPY_INVESTIGATE_CITY             "Investigate City"
+  ACTION_INV_CITY_SPEND                   "Investigate City Spend Unit"
+  ACTION_SPY_POISON                       "Poison City"
+  ACTION_SPY_POISON_ESC                   "Poison City Escape"
+  ACTION_SPY_STEAL_GOLD                   "Steal Gold"
+  ACTION_SPY_STEAL_GOLD_ESC               "Steal Gold Escape"
+  ACTION_SPY_SABOTAGE_CITY                "Sabotage City"
+  ACTION_SPY_SABOTAGE_CITY_ESC            "Sabotage City Escape"
+  ACTION_SPY_TARGETED_SABOTAGE_CITY       "Targeted Sabotage City"
+  ACTION_SPY_TARGETED_SABOTAGE_CITY_ESC   "Targeted Sabotage City Escape"
+  ACTION_SPY_SABOTAGE_CITY_PRODUCTION     "Sabotage City Production"
+  ACTION_SPY_SABOTAGE_CITY_PRODUCTION_ESC "Sabotage City Production Escape"
+  ACTION_SPY_STEAL_TECH                   "Steal Tech"
+  ACTION_SPY_STEAL_TECH_ESC               "Steal Tech Escape Expected"
+  ACTION_SPY_TARGETED_STEAL_TECH          "Targeted Steal Tech"
+  ACTION_SPY_TARGETED_STEAL_TECH_ESC      "Targeted Steal Tech Escape Expected"
+  ACTION_SPY_INCITE_CITY                  "Incite City"
+  ACTION_SPY_INCITE_CITY_ESC              "Incite City Escape"
+  ACTION_TRADE_ROUTE                      "Establish Trade Route"
+  ACTION_MARKETPLACE                      "Enter Marketplace"
+  ACTION_HELP_WONDER                      "Help Wonder"
+  ACTION_SPY_BRIBE_UNIT                   "Bribe Unit"
+  ACTION_CAPTURE_UNITS                    "Capture Units"
+  ACTION_SPY_SABOTAGE_UNIT                "Sabotage Unit"
+  ACTION_SPY_SABOTAGE_UNIT_ESC            "Sabotage Unit Escape"
+  ACTION_FOUND_CITY                       "Found City"
+  ACTION_JOIN_CITY                        "Join City"
+  ACTION_STEAL_MAPS                       "Steal Maps"
+  ACTION_STEAL_MAPS_ESC                   "Steal Maps Escape"
+  ACTION_SPY_NUKE                         "Suitcase Nuke"
+  ACTION_SPY_NUKE_ESC                     "Suitcase Nuke Escape"
+  ACTION_NUKE                             "Explode Nuclear"
+  ACTION_NUKE_CITY                        "Nuke City"
+  ACTION_NUKE_UNITS                       "Nuke Units"
+  ACTION_DESTROY_CITY                     "Destroy City"
+  ACTION_EXPEL_UNIT                       "Expel Unit"
+  ACTION_DISBAND_UNIT_RECOVER             "Disband Unit Recover"
+  ACTION_DISBAND_UNIT                     "Disband Unit"
+  ACTION_HOME_CITY                        "Home City"
+  ACTION_HOMELESS                         "Unit Make Homeless"
+  ACTION_UPGRADE_UNIT                     "Upgrade Unit"
+  ACTION_CONVERT                          "Convert Unit"
+  ACTION_AIRLIFT                          "Airlift Unit"
+  ACTION_ATTACK                           "Attack"
+  ACTION_ATTACK2                          "Attack 2"
+  ACTION_SUICIDE_ATTACK                   "Suicide Attack"
+  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_BOMBARD                          "Bombard"
+  ACTION_BOMBARD2                         "Bombard 2"
+  ACTION_BOMBARD3                         "Bombard 3"
+  ACTION_BOMBARD_LETHAL                   "Bombard Lethal"
+  ACTION_BOMBARD_LETHAL2                  "Bombard Lethal 2"
+  ACTION_ROAD                             "Build Road"
+  ACTION_ROAD2                            "Build Road 2"
+  ACTION_IRRIGATE                         "Build Irrigation"
+  ACTION_IRRIGATE2                        "Build Irrigation 2"
+  ACTION_MINE                             "Build Mine"
+  ACTION_MINE2                            "Build Mine 2"
+  ACTION_BASE                             "Build Base"
+  ACTION_BASE2                            "Build Base 2"
+  ACTION_PILLAGE                          "Pillage"
+  ACTION_TRANSPORT_BOARD                  "Transport Board"
+  ACTION_TRANSPORT_BOARD2                 "Transport Board 2"
+  ACTION_TRANSPORT_BOARD3                 "Transport Board_3"
+  ACTION_TRANSPORT_DEBOARD                "Transport Deboard"
+  ACTION_TRANSPORT_EMBARK                 "Transport Embark"
+  ACTION_TRANSPORT_EMBARK2                "Transport Embark 2"
+  ACTION_TRANSPORT_EMBARK3                "Transport Embark 3"
+  ACTION_TRANSPORT_EMBARK4                "Transport Embark 4"
+  ACTION_TRANSPORT_DISEMBARK1             "Transport Disembark"
+  ACTION_TRANSPORT_DISEMBARK2             "Transport Disembark 2"
+  ACTION_TRANSPORT_DISEMBARK3             "Transport Disembark 3"
+  ACTION_TRANSPORT_DISEMBARK4             "Transport Disembark 4"
+  ACTION_TRANSPORT_LOAD                   "Transport Load"
+  ACTION_TRANSPORT_LOAD2                  "Transport Load 2"
+  ACTION_TRANSPORT_LOAD3                  "Transport Load 3"
+  ACTION_TRANSPORT_UNLOAD                 "Transport Unload"
+  ACTION_SPY_SPREAD_PLAGUE                "Spread Plague"
+  ACTION_SPY_ATTACK                       "Spy Attack"
+  ACTION_CONQUER_EXTRAS                   "Conquer Extras"
+  ACTION_CONQUER_EXTRAS2                  "Conquer Extras 2"
+  ACTION_CONQUER_EXTRAS3                  "Conquer Extras 3"
+  ACTION_CONQUER_EXTRAS4                  "Conquer Extras 4"
+  ACTION_HUT_ENTER                        "Enter Hut"
+  ACTION_HUT_ENTER2                       "Enter Hut 2"
+  ACTION_HUT_ENTER3                       "Enter Hut 3"
+  ACTION_HUT_ENTER4                       "Enter Hut 4"
+  ACTION_HUT_FRIGHTEN                     "Frighten Hut"
+  ACTION_HUT_FRIGHTEN2                    "Frighten Hut 2"
+  ACTION_HUT_FRIGHTEN3                    "Frighten Hut 3"
+  ACTION_HUT_FRIGHTEN4                    "Frighten Hut 4"
+  ACTION_HEAL_UNIT                        "Heal Unit"
+  ACTION_HEAL_UNIT2                       "Heal Unit 2"
+  ACTION_PARADROP                         "Paradrop Unit"
+  ACTION_PARADROP_CONQUER                 "Paradrop Unit Conquer"
+  ACTION_PARADROP_FRIGHTEN                "Paradrop Unit Frighten"
+  ACTION_PARADROP_FRIGHTEN_CONQUER        "Paradrop Unit Frighten Conquer"
+  ACTION_PARADROP_ENTER                   "Paradrop Unit Enter"
+  ACTION_PARADROP_ENTER_CONQUER           "Paradrop Unit Enter Conquer"
+  ACTION_WIPE_UNITS                       "Wipe Units"
+  ACTION_SPY_ESCAPE                       "Spy Escape"
+  ACTION_UNIT_MOVE                        "Unit Move"
+  ACTION_UNIT_MOVE2                       "Unit Move 2"
+  ACTION_UNIT_MOVE3                       "Unit Move 3"
+  ACTION_TELEPORT                         "Teleport"
+  ACTION_TELEPORT2                        "Teleport2"
+  ACTION_TELEPORT3                        "Teleport3"
+  ACTION_TELEPORT_CONQUER                 "Teleport Conquer"
+  ACTION_CLEAN                            "Clean"
+  ACTION_COLLECT_RANSOM                   "Collect Ransom"
+  ACTION_FORTIFY                          "Fortify"
+  ACTION_CULTIVATE                        "Cultivate"
+  ACTION_PLANT                            "Plant"
+  ACTION_TRANSFORM_TERRAIN                "Transform Terrain"
+
+  # Enabler checks only
+  ACTION_GAIN_VETERANCY                   "Gain Veterancy"
+
+  # User actions
+  ACTION_USER_ACTION1                     "User Action 1"
+  ACTION_USER_ACTION2                     "User Action 2"
+  ACTION_USER_ACTION3                     "User Action 3"
+  ACTION_USER_ACTION4                     "User Action 4"
+end
diff --git a/meson.build b/meson.build
index 3a28980cb2..72375963bd 100644
--- a/meson.build
+++ b/meson.build
@@ -1112,6 +1112,7 @@ specenum = custom_target('specenum_gen.h', output: 'specenum_gen.h',
 
 enum_defs = {
   'common': {
+    'actions_enums': ['actions_enums.def', 'actions_enums_gen.h'],
     'terrain_enums': ['terrain_enums.def', 'terrain_enums_gen.h'],
   },
   'manual': {
-- 
2.43.0

