extern int shp_dchrg(struct shpstr *);
extern int shp_fire(struct shpstr *);
extern int shp_torp(struct shpstr *, int);
+extern double shp_fire_range(struct shpstr *);
#endif
fshipno, fship.shp_effic);
continue;
}
- range = effrange(fship.shp_frnge, fship.shp_tech);
+ range = shp_fire_range(&fship);
range2 = roundrange(range);
pr("range is %d.00 (%.2f)\n", range2, range);
if (target == targ_sub
continue;
dam += dam2;
} else {
- erange = effrange(ship.shp_frnge, ship.shp_tech);
+ erange = shp_fire_range(&ship);
if (roundrange(erange) < ni.curdist)
continue;
dam2 = shp_fire(&ship);
{
int range, erange, dam;
- erange = roundrange(effrange(sp->shp_frnge, sp->shp_tech));
+ erange = roundrange(shp_fire_range(sp));
range = mapdist(sp->shp_x, sp->shp_y, targ->shp_x, targ->shp_y);
if (range > erange)
return;
continue;
if ((mchr[(int)ship.shp_type].m_flags & M_SUB) && !usesubs)
continue;
- range = roundrange(effrange(ship.shp_frnge, ship.shp_tech));
+ range = roundrange(shp_fire_range(&ship));
if (range < ni.curdist)
continue;
dam = shp_fire(&ship);
return rng;
}
+/*
+ * Return firing range for ship SP.
+ */
+double
+shp_fire_range(struct shpstr *sp)
+{
+ return effrange(sp->shp_frnge, sp->shp_tech);
+}
+
int
roundrange(double r)
{
"Incoming torpedo sighted @ %s hits and does %d damage!\n",
xyas(x, y, victim), dam2);
} else {
- range = roundrange(effrange(sp->shp_frnge, sp->shp_tech));
+ range = roundrange(shp_fire_range(sp));
if (md > range)
continue;
if (mission == MI_SINTERDICT)
switch (gp->ef_type) {
case EF_SHIP:
- range = ldround(effrange(((struct shpstr *)gp)->shp_frnge,
- ((struct shpstr *)gp)->shp_tech), 1);
+ range = ldround(shp_fire_range((struct shpstr *)gp), 1);
break;
case EF_LAND:
range = ldround(effrange(((struct lndstr *)gp)->lnd_frg,