Fix bdes and designate to always write updated bmap to disk

bdes() failed to do that when the player aborted at the prompt for the
new designation.

desi() failed to do it when it failed the command because the new
designation was bad.
This commit is contained in:
Markus Armbruster 2008-07-19 10:05:25 -04:00
parent 90a4864c17
commit d000bf9296
2 changed files with 11 additions and 6 deletions

View file

@ -47,18 +47,21 @@ bdes(void)
char prompt[128];
char buf[1024];
int changed = 0;
int rc = RET_OK;
if (!snxtsct(&nstr, player->argp[1]))
return RET_SYN;
while (!player->aborted && nxtsct(&nstr, &sect)) {
while (nxtsct(&nstr, &sect)) {
if ((nstr.ncond > 0) && (sect.sct_own != player->cnum))
continue;
d = player->map[sect.sct_uid];
sprintf(prompt, "%s '%c' desig? ",
xyas(nstr.x, nstr.y, player->cnum),
d ? d : ' ');
if ((p = getstarg(player->argp[2], prompt, buf)) == 0)
continue;
if ((p = getstarg(player->argp[2], prompt, buf)) == 0) {
rc = RET_SYN;
break;
}
if (!isprint(*p)) {
if (*p)
pr("Bad character. Must be printable!\n");
@ -68,5 +71,5 @@ bdes(void)
}
if (changed)
writebmap(player->cnum);
return RET_OK;
return rc;
}