]> git.pond.sub.org Git - empserver/commitdiff
(edit): Rewrite of undocumented and broken feature: if there are extra
authorMarkus Armbruster <armbru@pond.sub.org>
Tue, 25 Nov 2003 19:16:18 +0000 (19:16 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Tue, 25 Nov 2003 19:16:18 +0000 (19:16 +0000)
arguments, they are interpreted as key-value pairs, and edit does not
prompt for more.  From Ron Koenderink.
(player_coms): Document extended syntax.

info/Commands/edit.t
src/lib/commands/edit.c
src/lib/player/empmod.c

index b0a3687057fba9cfb789be0cb9d8054fd5d5d4f7..a5bb163fbc231b09013267db682adbcf9ca5049c 100644 (file)
@@ -1,7 +1,17 @@
 .TH Command EDIT
 .NA edit "Change stats of country, ship, land unit, or plane"
 .LV Expert
-.SY "edit <country|unit|ship|plane|nuke>"
-Once you specify what you want to edit, the server will tell you what
-to do.  Hit return to get out of the prompter.
+.SY "edit <country|land|unit|ship|plane|nuke> [<KEY> <VALUE>]..."
+The \*Qedit\*U command allows deities to edit properties of a country,
+sector (confusingly called <land> here), land unit, ship, plane or
+nuke.
+.s1
+If you don't specify any <KEY> <VALUE> pair, \*Qedit\*U enters
+interactive mode.  Editable properties are shown together with their
+keys and values.  Enter a key character and a value to change a
+property.  Hit return to finish the command.
+.s1
+You can also specify one or more <KEY> <VALUE> pairs as command
+arguments.  In this case, \*Qedit\*U just sets the properties, and
+does not enter interactive mode.
 .SA "setsector, setresource, give, Deity"
index 1994633d0c07c718cdf9a862c5f237702b5c1386..fb6bb22659e02d65cedbbe46c138a302e43a3767 100644 (file)
@@ -87,6 +87,7 @@ edit(void)
     int num;
     int arg;
     int err;
+    int arg_index = 3;
     coord x, y;
     float farg;
     natid nat;
@@ -158,34 +159,44 @@ edit(void)
            pr_land(&land);
            break;
        }
-    } else if (player->argp[4] != 0)
-       (void)strcat(player->argp[3], player->argp[4]);
+    }
     ptr = &buf[0];
     *ptr = 0;
     for (;;) {
-       if ((err = getin(&thing, &ptr, &arg, buf)) != RET_OK) {
-           if (err == END) {
-               switch (ewhat) {
-               case 'c':
-                   prnat(nat);
-                   break;
-               case 'l':
-                   prsect(&sect);
-                   break;
-               case 's':
-                   pr_ship(&ship);
-                   break;
-               case 'u':
-                   pr_land(&land);
-                   break;
-               case 'p':
-                   pr_plane(&plane);
-                   break;
-               }
-               break;
+       if (player->argp[arg_index] != 0) {
+           if (player->argp[arg_index+1] != 0) {
+               thing = player->argp[arg_index++];
+               ptr = player->argp[arg_index++];
+               arg = atoi(ptr);
            } else
-               return err;
+               return RET_SYN;
        }
+       else if (arg_index == 3) {
+           if ((err = getin(&thing, &ptr, &arg, buf)) != RET_OK) {
+               if (err == END) {
+                   switch (ewhat) {
+                   case 'c':
+                       prnat(nat);
+                       break;
+                   case 'l':
+                       prsect(&sect);
+                       break;
+                   case 's':
+                       pr_ship(&ship);
+                       break;
+                   case 'u':
+                       pr_land(&land);
+                       break;
+                   case 'p':
+                       pr_plane(&plane);
+                       break;
+                   }
+                   break;
+               } else
+                   return err;
+           }
+       } else
+           break;
        switch (ewhat) {
        case 'c':
            farg = atof(ptr);
@@ -206,7 +217,6 @@ edit(void)
                return RET_FAIL;
            break;
        case 'u':
-           farg = atof(ptr);
            if ((err = dounit(thing[0], arg, ptr, &land))
                != RET_OK)
                return err;
index 21874f3be1fde75f77afb8f32d06401bc61dcfc5..06ee64d2c3ed89d1878aa01f6bad32e4bad94a85 100644 (file)
@@ -287,7 +287,7 @@ struct cmndstr player_coms[] = {
     {"drop <cargo-PLANES> <fighter-PLANES> <ap-SECT> <PATH|DESTINATION> <COMM>", 1, drop, C_MOD, NORM + MONEY + CAP},
     {"dump <SECTS> [<fields>]", 0, dump, 0, NORM},
     {"echo [<string>]", 0, echo, 0, NORM},
-    {"edit <country|land|unit|ship|plane|nuke>", 0, edit, C_MOD, GOD},
+    {"edit <country|land|unit|ship|plane|nuke> [<KEY> <VALUE>]...", 0, edit, C_MOD, GOD},
     {"enable", 0, enab, C_MOD, GOD},
     {"enlist <SECTS> <NUM>", 2, enli, C_MOD, NORM + MONEY + CAP},
     {"execute <INPUT FILE>", 0, execute, 0, VIS},