From: Markus Armbruster Date: Sun, 15 Feb 2015 13:25:39 +0000 (+0100) Subject: torpedo: Let torpedo hit land only when target is in range X-Git-Tag: v4.3.33~37 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=33497e4242d466daf52d168f2d22e70f0f44651f 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 --- diff --git a/src/lib/commands/torp.c b/src/lib/commands/torp.c index 7c0902dad..ee215ff08 100644 --- a/src/lib/commands/torp.c +++ b/src/lib/commands/torp.c @@ -161,19 +161,16 @@ torp(void) if (range <= erange) { pr("Hitchance = %d%%\n", (int)(hitchance * 100)); } - /* Now, can the torpedo even get there? */ - if (!line_of_sight(NULL, sub.shp_x, sub.shp_y, - vship.shp_x, vship.shp_y)) { + if (range > erange) + pr("Out of range\n"); + 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"); /* We only tell the victim if we were within range. */ - if (range <= erange) { - if (vshipown != 0) - wu(0, vshipown, "Torpedo sighted @ %s by %s\n", - xyas(sub.shp_x, sub.shp_y, vshipown), - prship(&vship)); - } - } else if (range > erange) { - pr("Out of range\n"); + if (vshipown != 0) + wu(0, vshipown, "Torpedo sighted @ %s by %s\n", + xyas(sub.shp_x, sub.shp_y, vshipown), + prship(&vship)); } else if (chance(hitchance)) { pr("BOOM!...\n"); if (vshipown != 0) diff --git a/tests/torpedo/journal.log b/tests/torpedo/journal.log index 0a5a2e542..b9022167d 100644 --- a/tests/torpedo/journal.log +++ b/tests/torpedo/journal.log @@ -95,7 +95,7 @@ Play#1 command 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 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 input torp 0 45 Play#1 command torpedo