torpedo: Let torpedo hit land only when target is in range

Telling the player his torpedo "slams into land" can give a clue on
the direction to the target.  No good when the target is out of range,
because we shouldn't tell the player more than that then.

Screwed up in 4.2.2.  Fix by checking range before line of sight.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2015-02-15 14:25:39 +01:00
parent bb6c974ef2
commit 33497e4242
2 changed files with 9 additions and 12 deletions

View file

@ -161,19 +161,16 @@ torp(void)
if (range <= erange) { if (range <= erange) {
pr("Hitchance = %d%%\n", (int)(hitchance * 100)); pr("Hitchance = %d%%\n", (int)(hitchance * 100));
} }
/* Now, can the torpedo even get there? */ if (range > erange)
if (!line_of_sight(NULL, sub.shp_x, sub.shp_y, pr("Out of range\n");
vship.shp_x, vship.shp_y)) { else if (!line_of_sight(NULL, sub.shp_x, sub.shp_y,
vship.shp_x, vship.shp_y)) {
pr("BOOM!... Torpedo slams into land before reaching target.\n"); pr("BOOM!... Torpedo slams into land before reaching target.\n");
/* We only tell the victim if we were within range. */ /* We only tell the victim if we were within range. */
if (range <= erange) { if (vshipown != 0)
if (vshipown != 0) wu(0, vshipown, "Torpedo sighted @ %s by %s\n",
wu(0, vshipown, "Torpedo sighted @ %s by %s\n", xyas(sub.shp_x, sub.shp_y, vshipown),
xyas(sub.shp_x, sub.shp_y, vshipown), prship(&vship));
prship(&vship));
}
} else if (range > erange) {
pr("Out of range\n");
} else if (chance(hitchance)) { } else if (chance(hitchance)) {
pr("BOOM!...\n"); pr("BOOM!...\n");
if (vshipown != 0) if (vshipown != 0)

View file

@ -95,7 +95,7 @@
Play#1 command torpedo Play#1 command torpedo
Play#1 output Play#1 1 1 ships are eligible to torpedo Play#1 output Play#1 1 1 ships are eligible to torpedo
Play#1 output Play#1 1 Effective torpedo range is 3.0 Play#1 output Play#1 1 Effective torpedo range is 3.0
Play#1 output Play#1 1 Whooosh... BOOM!... Torpedo slams into land before reaching target. Play#1 output Play#1 1 Whooosh... Out of range
Play#1 output Play#1 6 0 595 Play#1 output Play#1 6 0 595
Play#1 input torp 0 45 Play#1 input torp 0 45
Play#1 command torpedo Play#1 command torpedo