work: Don't let embarked engineers work
authorMarkus Armbruster <armbru@pond.sub.org>
Fri, 15 Jan 2021 07:16:13 +0000 (08:16 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 23 Jan 2021 07:39:14 +0000 (08:39 +0100)
Engineers can work even when loaded on a ship or land unit.  They
happily raise sea sector efficiency.  That's just wrong.  It's
questionable even on land, because unloading need not be possible.
Has been that way since the command was added in Empire 2.

Add the missing check.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/lib/commands/work.c

index 85a2dfe12bed2304dc3c01964cf05ece9e93947c..77ff250a942c0c57ab7c979a2aa3d5a01dc077f6 100644 (file)
@@ -27,7 +27,7 @@
  *  work.c: Implementation of the work command
  *
  *  Known contributors to this file:
- *     Markus Armbruster, 2009-2016
+ *     Markus Armbruster, 2009-2021
  */
 
 #include <config.h>
@@ -67,6 +67,11 @@ work(void)
            continue;
        if (!(lchr[(int)land.lnd_type].l_flags & L_ENGINEER))
            continue;
+       if (land.lnd_ship >= 0 || land.lnd_land >= 0) {
+           pr("%s is on a %s\n",
+              prland(&land), land.lnd_ship >= 0 ? "ship" : "land unit");
+           continue;
+       }
        if (land.lnd_mobil <= 0) {
            pr("%s has no mobility!\n", prland(&land));
            continue;