double eff;
struct shpstr ship;
struct nstr_item ni;
- int vec[I_MAX + 1];
+ int shell;
int dam, rel, rel2;
if (own == 0)
if (range < ni.curdist)
continue;
/* must have gun, shell, and milit to fire */
- if (getvec(VT_ITEM, vec, (caddr_t)&ship, EF_SHIP) < 3)
- continue;
- if (vec[I_SHELL] < ship.shp_glim)
- vec[I_SHELL] += supply_commod(ship.shp_own, ship.shp_x,
- ship.shp_y, I_SHELL,
- vec[I_SHELL] - ship.shp_glim);
- nshot = min(min(vec[I_GUN], vec[I_SHELL]), vec[I_MILIT]);
+ shell = ship.shp_item[I_SHELL];
+ if (shell < ship.shp_glim)
+ shell += supply_commod(ship.shp_own, ship.shp_x, ship.shp_y,
+ I_SHELL, shell - ship.shp_glim);
+ nshot = min(min(ship.shp_item[I_GUN], shell), ship.shp_item[I_MILIT]);
nshot = min(nshot, ship.shp_glim);
if (nshot <= 0)
continue;
- ship.shp_item[I_SHELL] = vec[I_SHELL] - nshot;
+ ship.shp_item[I_SHELL] = shell - nshot;
putship(ship.shp_uid, &ship);
if (defending)
nreport(ship.shp_own, N_FIRE_BACK, att, 1);
double range;
struct sctstr firing;
struct nstr_sect ns;
- int vec[I_MAX + 1];
if (opt_NO_FORT_FIRE) /* Forts can't fire! */
return 0;
if ((firing.sct_own != def_own) &&
((rel != ALLIED) || (rel2 != AT_WAR)))
continue;
- if (getvec(VT_ITEM, vec, (caddr_t)&firing, EF_SECTOR) < 0)
- continue;
range = tfactfire(def_own, 7.0);
if (firing.sct_effic > 59)
struct nstr_item ni;
struct shpstr ship;
int hitchance;
- int vec[I_MAX + 1];
+ int shell;
double gun, eff, teff;
snxtitem_dist(&ni, EF_SHIP, dx, dy, 1);
if (ship.shp_effic < 60)
continue;
- if (getvec(VT_ITEM, vec, (caddr_t)&ship, EF_SHIP) < 0)
+ shell = ship.shp_item[I_SHELL];
+ if (ship.shp_item[I_MILIT] < 1) /* do we have mil? */
continue;
- if (vec[I_MILIT] < 1) /* do we have mil? */
- continue;
- if (vec[I_SHELL] < 2) { /* do we need shells */
- vec[I_SHELL] += supply_commod(ship.shp_own,
- ship.shp_x, ship.shp_y,
- I_SHELL, 2);
- if (vec[I_SHELL] < 2)
+ if (shell < 2) { /* do we need shells */
+ shell += supply_commod(ship.shp_own, ship.shp_x, ship.shp_y,
+ I_SHELL, 2);
+ if (shell < 2)
continue;
}
- if (vec[I_GUN] < 1) /* we need at least 1 gun */
+ if (ship.shp_item[I_GUN] < 1) /* we need at least 1 gun */
continue;
/* now calculate the odds */
- gun = ((double)min(vec[I_GUN], ship.shp_glim));
+ gun = min(ship.shp_item[I_GUN], ship.shp_glim);
eff = (double)ship.shp_effic / 100.0;
teff =
(((double)ship.shp_tech) / (((double)ship.shp_tech) + 200.0));
ship.shp_uid);
mpr(ship.shp_own, "%d%% hitchance...", hitchance);
/* use ammo */
- ship.shp_item[I_SHELL] = vec[I_SHELL] - 2;
+ ship.shp_item[I_SHELL] = shell - 2;
putship(ship.shp_uid, &ship);
if (roll(100) <= hitchance) {