X-Git-Url: http://git.pond.sub.org/?p=empserver;a=blobdiff_plain;f=src%2Flib%2Fcommands%2Fscra.c;h=ffddde7ab0ddec56e8162109b274ca62a20b6f3c;hp=d3e4eac42aef354a1cf0a9dd4d6590d5b222a551;hb=6c927dc3c3ca478af65f1cadeab2fcd374ebcc16;hpb=8b7c78b5fa46de70eefc0ac54feee436d381917d diff --git a/src/lib/commands/scra.c b/src/lib/commands/scra.c index d3e4eac42..ffddde7ab 100644 --- a/src/lib/commands/scra.c +++ b/src/lib/commands/scra.c @@ -28,7 +28,7 @@ * * Known contributors to this file: * Steve McClure, 2000 - * Markus Armbruster, 2004-2011 + * Markus Armbruster, 2004-2012 */ #include @@ -43,7 +43,7 @@ scra(void) { struct nstr_item ni; union empobj_storage item; - int type; + int type, n; struct sctstr sect; struct mchrstr *mp; struct plchrstr *pp; @@ -70,55 +70,21 @@ scra(void) pr("Ships, land units, or planes only! (s, l, p)\n"); return RET_SYN; } - sprintf(prompt, "%s(s)? ", ef_nameof(type)); - if (!(p = getstarg(player->argp[2], prompt, buf))) - return RET_SYN; - if (!snxtitem(&ni, type, p, NULL)) - return RET_SYN; - if (p && (isalpha(*p) || (*p == '*') || (*p == '~') || issector(p) - || islist(p))) { - char y_or_n[80], bbuf[80]; - - memset(y_or_n, 0, sizeof(y_or_n)); - if (type == EF_SHIP) { - if (*p == '*') - sprintf(bbuf, "all ships"); - else if (*p == '~') - sprintf(bbuf, "all unassigned ships"); - else if (issector(p)) - sprintf(bbuf, "all ships in %s", p); - else if (isalpha(*p)) - sprintf(bbuf, "fleet %c", *p); - else - sprintf(bbuf, "ships %s", p); - } else if (type == EF_LAND) { - if (*p == '*') - sprintf(bbuf, "all land units"); - else if (*p == '~') - sprintf(bbuf, "all unassigned land units"); - else if (issector(p)) - sprintf(bbuf, "all units in %s", p); - else if (isalpha(*p)) - sprintf(bbuf, "army %c", *p); - else - sprintf(bbuf, "units %s", p); - } else { - if (*p == '*') - sprintf(bbuf, "all planes"); - else if (*p == '~') - sprintf(bbuf, "all unassigned planes"); - else if (issector(p)) - sprintf(bbuf, "all planes in %s", p); - else if (isalpha(*p)) - sprintf(bbuf, "wing %c", *p); - else - sprintf(bbuf, "planes %s", p); - } - sprintf(y_or_n, "Really scrap %s [n]? ", bbuf); - if (!confirm(y_or_n)) - return RET_FAIL; + if (!snxtitem(&ni, type, player->argp[2], NULL)) + return RET_SYN; + n = 0; + while (nxtitem(&ni, &item)) { + if (!player->owner) + continue; + n++; } + snprintf(prompt, sizeof(prompt), "Really scrap %d %s%s [n]? ", + n, ef_nameof(type), splur(n)); + if (!confirm(prompt)) + return RET_FAIL; + + snxtitem_rewind(&ni); while (nxtitem(&ni, &item)) { if (!player->owner) continue;