]> git.pond.sub.org Git - empserver/blobdiff - src/lib/subs/unitsub.c
commands: Rename the command functions
[empserver] / src / lib / subs / unitsub.c
index b1ead5cad1999d2de8a90fe914baeffacf464ec8..21222eef295b9c6bd3823ea03d5efcedab3fc39a 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2015, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2021, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                Ken Stevens, Steve McClure, Markus Armbruster
  *
  *  Empire is free software: you can redistribute it and/or modify
@@ -34,7 +34,6 @@
 #include <config.h>
 
 #include <math.h>
-#include "file.h"
 #include "map.h"
 #include "optlist.h"
 #include "path.h"
@@ -255,7 +254,7 @@ unit_move_non_dir(struct emp_qelem *list, char *cp, int *map_shown)
        if (leader->ef_type != EF_SHIP)
            return NULL;
        cp = unit_move_parse(cp, leader_str);
-       sona();
+       c_sonar();
        player->btused++;       /* FIXME likewise */
        *map_shown = 1;
        break;
@@ -269,9 +268,9 @@ unit_move_non_dir(struct emp_qelem *list, char *cp, int *map_shown)
            player->argp[1] = leader_str;
        }
        if (leader->ef_type == EF_SHIP)
-           mine();
+           c_mine();
        else
-           landmine();
+           c_lmine();
        player->btused++;       /* FIXME likewise */
        *map_shown = 1;
        break;
@@ -406,8 +405,16 @@ unit_move(struct emp_qelem *list)
         */
        if (!*cp) {
            cp = unit_move_getpath(list, suppress_map, path);
-           if (!cp)
+           if (!cp) {
+               if (type == EF_SHIP) {
+                   shp_nav_stay_behind(list, player->cnum);
+                   shp_nav_put(list, player->cnum);
+               } else {
+                   lnd_mar_stay_behind(list, player->cnum);
+                   lnd_mar_put(list, player->cnum);
+               }
                return RET_FAIL;
+           }
            cp = unit_move_route(leader, path, sizeof(path));
            if (!cp || !*cp)
                cp = "h";
@@ -418,13 +425,17 @@ unit_move(struct emp_qelem *list)
                stopping = shp_nav_dir(list, dir, player->cnum)
                    || shp_nav_gauntlet(list, 1, player->cnum);
            else {
-               if (!moved && !lnd_abandon_askyn(list))
+               if (!moved && !lnd_abandon_askyn(list)) {
+                   lnd_mar_put(list, player->cnum);
                    return RET_FAIL;
+               }
                stopping = lnd_mar_dir(list, dir, player->cnum)
                    || lnd_mar_gauntlet(list, 1, player->cnum);
            }
-           if (dir == DIR_STOP)
+           if (dir == DIR_STOP) {
+               CANT_HAPPEN(!QEMPTY(list));
                return RET_OK;
+           }
            moved = 1;
            if (stopping)
                cp = "";
@@ -437,7 +448,7 @@ unit_move(struct emp_qelem *list)
                   type == EF_SHIP ? "flagship" : "leader");
                pr("`r' to radar, %s`l' to look, `M' to map, `B' to bmap,\n",
                   type == EF_SHIP ? "`s' to sonar, " : "");
-               pr("`d' to drop mines, and `m' to minesweep\n");
+               pr("`d' to drop mines, and `m' to sweep mines\n");
                cp = "";
            }
        }