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:
parent
bb6c974ef2
commit
33497e4242
2 changed files with 9 additions and 12 deletions
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue