From a99bc3be7383f1fbc7536b1f9f5ad123c9a12b8b Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 31 Jan 2004 10:03:49 +0000 Subject: [PATCH] (payo, scuttle_tradeship, sdump): Disclose construction site only to original owner and deities. Closes #815197. --- info/Commands/payoff.t | 6 ++++-- src/lib/commands/payo.c | 9 +++++++-- src/lib/commands/scut.c | 14 +++++++++----- src/lib/commands/sdump.c | 17 +++++++++++++++-- 4 files changed, 35 insertions(+), 11 deletions(-) diff --git a/info/Commands/payoff.t b/info/Commands/payoff.t index 134371c8b..a20ecb431 100644 --- a/info/Commands/payoff.t +++ b/info/Commands/payoff.t @@ -2,8 +2,10 @@ .NA payoff "Find out the current payoff of a trade ship" .LV Expert .SY "payoff [ | ]" -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 and arguments are provided in case you only wish to look at one ship diff --git a/src/lib/commands/payo.c b/src/lib/commands/payo.c index 9b1c8c532..357154d0c 100644 --- a/src/lib/commands/payo.c +++ b/src/lib/commands/payo.c @@ -92,11 +92,16 @@ payo(void) 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); diff --git a/src/lib/commands/scut.c b/src/lib/commands/scut.c index 870dce735..24f799d1e 100644 --- a/src/lib/commands/scut.c +++ b/src/lib/commands/scut.c @@ -80,10 +80,14 @@ scuttle_tradeship(struct shpstr *sp, int interactive) 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) @@ -110,7 +114,7 @@ scuttle_tradeship(struct shpstr *sp, int interactive) 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)); diff --git a/src/lib/commands/sdump.c b/src/lib/commands/sdump.c index 97ca3708d..d1145d4b7 100644 --- a/src/lib/commands/sdump.c +++ b/src/lib/commands/sdump.c @@ -384,10 +384,23 @@ sdump(void) 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, '"'); -- 2.43.0