Refuse to auto-scuttle where it doesn't pay

When called from the scuttle command, scuttle_tradeship() asks for
confirmation when scuttling doesn't pay.  When called from the autonav
code, it can't ask.  Change it to fail then, and use that in
nav_ship() to avoid scuttle where it doesn't pay.  Also simplify some.
This commit is contained in:
Markus Armbruster 2008-09-13 15:57:36 -04:00
parent 693c1a64c3
commit faca0eeac5
2 changed files with 20 additions and 26 deletions

View file

@ -169,13 +169,8 @@ scuttle_tradeship(struct shpstr *sp, int interactive)
dist = mapdist(sp->shp_x, sp->shp_y,
sp->shp_orig_x, sp->shp_orig_y);
/* Don't disclose distance to to pirates */
if (sp->shp_own == sp->shp_orig_own) {
if (interactive)
pr("%s has gone %d sects\n", prship(sp), dist);
else
wu(0, sp->shp_own, "%s has gone %d sects\n",
prship(sp), dist);
}
if (sp->shp_own == sp->shp_orig_own)
mpr(sp->shp_own, "%s has gone %d sects\n", prship(sp), dist);
if (dist < trade_1_dist)
cash = 0;
else if (dist < trade_2_dist)
@ -193,20 +188,23 @@ scuttle_tradeship(struct shpstr *sp, int interactive)
}
}
if (!interactive && cash) {
if (!cash && (dist < 0 || sp->shp_own == sp->shp_orig_own)) {
if (interactive) {
pr("You won't get any money if you scuttle in %s!",
xyas(sp->shp_x, sp->shp_y, player->cnum));
sprintf(buf, "Are you sure you want to scuttle %s? ", prship(sp));
return confirm(buf);
} else
return 0;
}
if (interactive) {
player->dolcost -= cash;
} else {
natp = getnatp(sp->shp_own);
natp->nat_money += cash;
putnat(natp);
wu(0, sp->shp_own, "You just made $%d.\n", (int)cash);
} else if (!cash && !interactive) {
wu(0, sp->shp_own, "Unfortunately, you make $0 on this trade.\n");
} else if (cash && interactive) {
player->dolcost -= cash;
} else if (interactive && (dist < 0 || sp->shp_own == sp->shp_orig_own)) {
pr("You won't get any money if you scuttle in %s!",
xyas(sp->shp_x, sp->shp_y, player->cnum));
sprintf(buf, "Are you sure you want to scuttle %s? ", prship(sp));
return confirm(buf);
}
if (ally_cash) {