From a7407661b339688d90af965c81288105a453ecbc Mon Sep 17 00:00:00 2001
From: Marko Lindqvist <cazfi74@gmail.com>
Date: Sat, 29 Aug 2026 07:53:52 +0300
Subject: [PATCH 62/62] random_movements(): Consider fake generalized attack
 actions

See RM #2118

Signed-off-by: Marko Lindqvist <cazfi74@gmail.com>
---
 server/unittools.c | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/server/unittools.c b/server/unittools.c
index a19cebc807..4137571c12 100644
--- a/server/unittools.c
+++ b/server/unittools.c
@@ -5109,7 +5109,7 @@ bool unit_can_be_retired(struct unit *punit)
 **************************************************************************/
 void random_movements(struct player *pplayer)
 {
-  const struct civ_map *nmap = &(wld.map);
+  struct civ_map *nmap = &(wld.map);
 
   game.server.random_move_time = pplayer;
 
@@ -5136,9 +5136,12 @@ void random_movements(struct player *pplayer)
           struct tile *dest = mapstep(&(wld.map), curtile, dirs[choice]);
 
           if (dest != nullptr) {
-            if (is_action_enabled_unit_on_stack(nmap, ACTION_ATTACK, punit, dest)) {
+            enum gen_action act
+              = select_actres_action_unit_on_stack(nmap, ACTRES_ATTACK, punit, dest);
+
+            if (act != ACTION_NONE) {
               if (unit_perform_action(pplayer, id, tile_index(dest), NO_TARGET,
-                                      "", ACTION_ATTACK, ACT_REQ_RULES)) {
+                                      "", act, ACT_REQ_RULES)) {
                 moved = TRUE;
                 break;
               }
-- 
2.53.0

