original owner and deities. Closes #815197.
.NA payoff "Find out the current payoff of a trade ship"
.LV Expert
.SY "payoff [<SHIP/FLEET> | <SECTS>]"
-The payoff command gives a census of your trade ships, and lists
-the payoff they would give if scuttled at the current sector.
+The payoff command gives a census of your trade ships, and lists the
+payoff they would give if scuttled at the current sector. Payoff can
+only be calculated for trade ships you built yourself, not for ships
+you `acquired' from somebody else.
.s1
The <SHIP/FLEET> and <SECTS> arguments are provided in case you only
wish to look at one ship
pr("%3d ", ship.shp_own);
pr("%4d ", ni.cur);
pr("%-16.16s ", mchr[(int)ship.shp_type].m_name);
+ if (ship.shp_own != ship.shp_orig_own && !player->god) {
+ /* Don't disclose construction site to pirates! */
+ pr(" ? ");
+ prxy("%4d,%-4d ", ship.shp_x, ship.shp_y, player->cnum);
+ pr(" ? $ ?\n");
+ continue;
+ }
prxy("%4d,%-4d ", ship.shp_orig_x, ship.shp_orig_y, player->cnum);
prxy("%4d,%-4d ", ship.shp_x, ship.shp_y, player->cnum);
- getsect(ship.shp_x, ship.shp_y, §);
-
dist = mapdist(ship.shp_x, ship.shp_y,
ship.shp_orig_x, ship.shp_orig_y);
pr("%4d ", dist);
if (sect.sct_own && sect.sct_type == SCT_HARBR) {
dist = mapdist(sp->shp_x, sp->shp_y,
sp->shp_orig_x, sp->shp_orig_y);
- 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);
+ /* 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 (dist < trade_1_dist)
cash = 0;
else if (dist < trade_2_dist)
wu(0, sp->shp_own, "Unfortunately, you make $0 on this trade.\n");
} else if (cash && interactive) {
player->dolcost -= cash;
- } else if (interactive) {
+ } else if (interactive && 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));
pr(" %d", ship.shp_glim);
break;
case 32:
- pr(" %d", xrel(np, ship.shp_orig_x));
+ /*
+ * Disclosing construction site allows pirates to find
+ * harbors. Disclose it only to the original owner
+ * and to deities. Else dump illegal coordinates
+ * 1,0
+ */
+ if (ship.shp_own == ship.shp_orig_own || player->god)
+ pr(" %d", xrel(np, ship.shp_orig_x));
+ else
+ pr(" 1");
break;
case 33:
- pr(" %d", yrel(np, ship.shp_orig_y));
+ /* see case 32 */
+ if (ship.shp_own == ship.shp_orig_own || player->god)
+ pr(" %d", yrel(np, ship.shp_orig_y));
+ else
+ pr(" 0");
break;
case 34:
pr(" %c%s%c", '"', ship.shp_name, '"');