From 7688aed77a275b598ccfa21377209de8577329b2 Mon Sep 17 00:00:00 2001 From: Markus Armbruster Date: Sat, 14 May 2016 22:15:21 +0200 Subject: [PATCH] bomb: Disallow bombing spy units When bombing land units, the bombers get a chance to spot spies. They can target one even when it wasn't spotted. This makes no sense. Screwed up when spy units were added in 4.0.0. Hide them completely. They can still be killed via collateral damage. Signed-off-by: Markus Armbruster --- src/lib/commands/bomb.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/lib/commands/bomb.c b/src/lib/commands/bomb.c index 900283d8..a1dc3685 100644 --- a/src/lib/commands/bomb.c +++ b/src/lib/commands/bomb.c @@ -30,7 +30,7 @@ * Dave Pare, 1986 * Ken Stevens, 1995 * Steve McClure, 1998-2000 - * Markus Armbruster, 2004-2015 + * Markus Armbruster, 2004-2016 */ #include @@ -194,7 +194,7 @@ pin_bomb(struct emp_qelem *list, struct sctstr *target) pr("Some subs are present in the sector.\n"); } nplanes = planesatxy(target->sct_x, target->sct_y, 0, 0); - nunits = unitsatxy(target->sct_x, target->sct_y, 0, 0); + nunits = unitsatxy(target->sct_x, target->sct_y, 0, L_SPY); retry: p = getstring("Bomb what? (ship, plane, land unit, efficiency, commodities) ", buf); @@ -599,7 +599,7 @@ land_bomb(struct emp_qelem *list, struct sctstr *target) plp = (struct plist *)qp; if (changed_plane_aborts(plp)) continue; - nunits = unitsatxy(target->sct_x, target->sct_y, 0, 0); + nunits = unitsatxy(target->sct_x, target->sct_y, 0, L_SPY); if (nunits == 0) { pr("%s could not find any units!\n", prplane(&plp->plane)); continue; @@ -615,7 +615,7 @@ land_bomb(struct emp_qelem *list, struct sctstr *target) if (*q == '~') break; if (*q == '?') { - unitsatxy(target->sct_x, target->sct_y, 0, 0); + unitsatxy(target->sct_x, target->sct_y, 0, L_SPY); continue; } n = atoi(q); @@ -623,6 +623,7 @@ land_bomb(struct emp_qelem *list, struct sctstr *target) continue; if (getland(n, &land) && land.lnd_own && land.lnd_ship < 0 && land.lnd_land < 0 && + !(lchr[land.lnd_type].l_flags & L_SPY) && land.lnd_x == target->sct_x && land.lnd_y == target->sct_y) unitno = n; else