pin_bomb() computed the number of foreign subs as number of ships less
number of foreign surface ships. This counted own surface ships as
subs.
Change it to count foreign subs directly. Closes #906040.
However, shipsatxy(), the function for counting foreign ships, also
lists them. Add a parameter to suppress that, and change its callers.
extern double fortrange(struct sctstr *);
extern int roundrange(double);
/* list.c */
extern double fortrange(struct sctstr *);
extern int roundrange(double);
/* list.c */
-extern int shipsatxy(coord, coord, int, int);
+extern int shipsatxy(coord, coord, int, int, int);
extern int carriersatxy(coord, coord, natid);
extern int unitsatxy(coord, coord, int, int);
extern int planesatxy(coord, coord, int, int);
extern int carriersatxy(coord, coord, natid);
extern int unitsatxy(coord, coord, int, int);
extern int planesatxy(coord, coord, int, int);
effadv((int)target->sct_effic), dcp->d_name);
nsubs = 0;
plp = (struct plist *)list->q_forw;
effadv((int)target->sct_effic), dcp->d_name);
nsubs = 0;
plp = (struct plist *)list->q_forw;
+ nships = shipsatxy(target->sct_x, target->sct_y, 0, M_SUB, 0);
if (plp->pcp->pl_flags & P_A) {
if (plp->pcp->pl_flags & P_A) {
- nships = num_shipsatxy(target->sct_x, target->sct_y, 0, 0);
- nsubs = nships - shipsatxy(target->sct_x, target->sct_y, 0, M_SUB);
+ nsubs = shipsatxy(target->sct_x, target->sct_y, M_SUB, 0, 1);
if (nsubs > 0)
pr("Some subs are present in the sector.\n");
if (nsubs > 0)
pr("Some subs are present in the sector.\n");
- } else {
- nships = shipsatxy(target->sct_x, target->sct_y, 0, M_SUB);
}
nplanes = planesatxy(target->sct_x, target->sct_y, 0, 0);
nunits = unitsatxy(target->sct_x, target->sct_y, 0, 0);
}
nplanes = planesatxy(target->sct_x, target->sct_y, 0, 0);
nunits = unitsatxy(target->sct_x, target->sct_y, 0, 0);
nships = asw_shipsatxy(target->sct_x, target->sct_y, 0, 0,
&plp->plane, &head);
else
nships = asw_shipsatxy(target->sct_x, target->sct_y, 0, 0,
&plp->plane, &head);
else
- nships = shipsatxy(target->sct_x, target->sct_y, 0, M_SUB);
+ nships = shipsatxy(target->sct_x, target->sct_y, 0, M_SUB, 0);
if (nships == 0) {
pr("%s could not find any ships!\n", prplane(&plp->plane));
continue;
if (nships == 0) {
pr("%s could not find any ships!\n", prplane(&plp->plane));
continue;
if (plp->pcp->pl_flags & P_A)
print_shiplist(head);
else
if (plp->pcp->pl_flags & P_A)
print_shiplist(head);
else
- shipsatxy(target->sct_x, target->sct_y, 0, M_SUB);
+ shipsatxy(target->sct_x, target->sct_y, 0, M_SUB, 0);
continue;
}
if (*q == 'd')
continue;
}
if (*q == 'd')
-shipsatxy(coord x, coord y, int wantflags, int nowantflags)
+shipsatxy(coord x, coord y, int wantflags, int nowantflags, int only_count)
if (mp->m_flags & nowantflags)
continue;
}
if (mp->m_flags & nowantflags)
continue;
}
- if (first) {
- pr(" # owner eff type\n");
- first = 0;
+ if (!only_count) {
+ if (first) {
+ pr(" # owner eff type\n");
+ first = 0;
+ }
+ pr("(#%3d) %10.10s %12.12s %s\n", ni.cur,
+ cname(ship.shp_own), effadv(ship.shp_effic), prship(&ship));
- pr("(#%3d) %10.10s %12.12s %s\n", ni.cur,
- cname(ship.shp_own), effadv(ship.shp_effic), prship(&ship));