]> git.pond.sub.org Git - empserver/commitdiff
Check build's first argument before asking for the second
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 23 Apr 2011 05:19:55 +0000 (07:19 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 23 Apr 2011 16:09:05 +0000 (18:09 +0200)
src/lib/commands/buil.c

index d3ca2f99c28d1c70d5143cf2478f4435206ea9ce..f3ca5b1dbdca61fa79088e39bc459558eff16ce0 100644 (file)
@@ -91,6 +91,38 @@ buil(void)
     if (!p)
        return RET_SYN;
     what = *p;
+    switch (what) {
+    case 'b':
+       if (natp->nat_level[NAT_TLEV] + 0.005 < buil_bt) {
+           pr("Building a span requires a tech of %.0f\n", buil_bt);
+           return RET_FAIL;
+       }
+       break;
+    case 't':
+       if (!opt_BRIDGETOWERS) {
+           pr("Bridge tower building is disabled.\n");
+           return RET_FAIL;
+       }
+       if (natp->nat_level[NAT_TLEV] + 0.005 < buil_tower_bt) {
+           pr("Building a tower requires a tech of %.0f\n",
+              buil_tower_bt);
+           return RET_FAIL;
+       }
+       break;
+    case 's':
+    case 'p':
+    case 'l':
+       break;
+    case 'n':
+       if (!ef_nelem(EF_NUKE_CHR)) {
+           pr("There are no nukes in this game.\n");
+           return RET_FAIL;
+       }
+       break;
+    default:
+       pr("You can't build that!\n");
+       return RET_SYN;
+    }
 
     if (!snxtsct(&nstr, player->argp[2]))
        return RET_SYN;
@@ -157,27 +189,9 @@ buil(void)
        }
        break;
     case 'b':
-       if (natp->nat_level[NAT_TLEV] + 0.005 < buil_bt) {
-           pr("Building a span requires a tech of %.0f\n", buil_bt);
-           return RET_FAIL;
-       }
-       break;
     case 't':
-       if (!opt_BRIDGETOWERS) {
-           pr("Bridge tower building is disabled.\n");
-           return RET_FAIL;
-       }
-       if (natp->nat_level[NAT_TLEV] + 0.005 < buil_tower_bt) {
-           pr("Building a tower requires a tech of %.0f\n",
-              buil_tower_bt);
-           return RET_FAIL;
-       }
        break;
     case 'n':
-       if (!ef_nelem(EF_NUKE_CHR)) {
-           pr("There are no nukes in this game.\n");
-           return RET_FAIL;
-       }
        p = getstarg(player->argp[3], "Nuke type? ", buf);
        if (!p || !*p)
            return RET_SYN;
@@ -202,8 +216,8 @@ buil(void)
        }
        break;
     default:
-       pr("You can't build that!\n");
-       return RET_SYN;
+       CANT_REACH();
+       return RET_FAIL;
     }
 
     number = 1;