]> git.pond.sub.org Git - empserver/commitdiff
Change capital to take a single sector as argument
authorMarkus Armbruster <armbru@pond.sub.org>
Tue, 8 Jan 2013 13:26:19 +0000 (14:26 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Sat, 12 Jan 2013 16:51:22 +0000 (17:51 +0100)
Capital takes a <SECTS> argument, and picks the first suitable sector
it finds there.  It fails if none can be found, or if the first one
found already is the capital (even when more suitable sectors follow).
Has always worked that way, but never documented.

I don't think the search feature is really useful, and documenting it
isn't worth my while.  Change the command to take a <SECT> argument
instead, as documented.

src/lib/commands/capi.c

index d0fc6d929ce9f22300f0b4408e09f9a14387da9e..9f9c5828f0cad90de6928d9f3b576ec3a13bf2f6 100644 (file)
@@ -29,6 +29,7 @@
  *  Known contributors to this file:
  *     Dave Pare, 1986
  *     Steve McClure, 2000
+ *     Markus Armbruster, 2013
  */
 
 #include <config.h>
 int
 capi(void)
 {
+    char buf[1024];
+    char *p;
+    coord x, y;
     struct sctstr sect;
     struct natstr *np;
-    struct nstr_sect nstr;
-    int found;
 
-    if (!snxtsct(&nstr, player->argp[1]))
+    if (!(p = getstarg(player->argp[1], "Sector? ", buf)) ||
+       !sarg_xy(p, &x, &y) || !getsect(x, y, &sect))
        return RET_SYN;
-    np = getnatp(player->cnum);
-    found = 0;
-    while (!found && nxtsct(&nstr, &sect)) {
-       if (player->owner && (sect.sct_type == SCT_CAPIT ||
-                             sect.sct_type == SCT_MOUNT))
-           found++;
-    }
-    if (!found)
+    if (!player->owner
+       || (sect.sct_type != SCT_CAPIT && sect.sct_type != SCT_MOUNT)) {
        return RET_FAIL;
+    }
+    np = getnatp(player->cnum);
     if (!(np->nat_flags & NF_SACKED) &&
        sect.sct_x == np->nat_xcap && sect.sct_y == np->nat_ycap) {
        pr("%s is already your capital.\n",