Don't store land unit stats in struct lndstr, part 1

New lnd_att(), lnd_def(), lnd_vul(), lnd_spd(), lnd_vis(), lnd_frg(),
lnd_acc(), lnd_dam(), lnd_aaf() replace the struct lndstr members with
the same names.

Make land unit selectors att, def, vul, spd, vis, frg, acc, dam, aaf
virtual.
This commit is contained in:
Markus Armbruster 2008-03-04 21:20:23 +01:00
parent f86d726406
commit cdf1bcfa22
13 changed files with 185 additions and 68 deletions

View file

@ -712,7 +712,7 @@ land_bomb(struct emp_qelem *list, struct sctstr *target)
struct lndstr land;
struct emp_qelem *qp;
int unitno;
int ignore, flak, hitchance;
int ignore, aaf, flak, hitchance;
struct plist *plp;
int nukedam;
int nunits;
@ -755,11 +755,12 @@ land_bomb(struct emp_qelem *list, struct sctstr *target)
if (unitno < 0)
continue;
flak = (int)(techfact(land.lnd_tech, land.lnd_aaf) * 3.0);
aaf = lnd_aaf(&land);
flak = (int)(techfact(land.lnd_tech, aaf) * 3.0);
if (flak) {
PR(land.lnd_own,
"Flak! Firing flak guns from unit %s (aa rating %d)\n",
prland(&land), land.lnd_aaf);
prland(&land), aaf);
if (pinflak_planedamage(&plp->plane, plp->pcp, land.lnd_own, flak))
continue;
}

View file

@ -394,19 +394,19 @@ ldump(void)
pr(" %d", land.lnd_item[I_RAD]);
break;
case 28:
pr(" %1.2f", land.lnd_att);
pr(" %1.2f", lnd_att(&land));
break;
case 29:
pr(" %1.2f", land.lnd_def);
pr(" %1.2f", lnd_def(&land));
break;
case 30:
pr(" %d", land.lnd_vul);
pr(" %d", lnd_vul(&land));
break;
case 31:
pr(" %d", land.lnd_spd);
pr(" %d", lnd_spd(&land));
break;
case 32:
pr(" %d", land.lnd_vis);
pr(" %d", lnd_vis(&land));
break;
case 33:
pr(" %d", land.lnd_spy);
@ -415,19 +415,19 @@ ldump(void)
pr(" %d", land.lnd_rad);
break;
case 35:
pr(" %d", land.lnd_frg);
pr(" %d", lnd_frg(&land));
break;
case 36:
pr(" %d", land.lnd_acc);
pr(" %d", lnd_acc(&land));
break;
case 37:
pr(" %d", land.lnd_dam);
pr(" %d", lnd_dam(&land));
break;
case 38:
pr(" %d", land.lnd_ammo);
break;
case 39:
pr(" %d", land.lnd_aaf);
pr(" %d", lnd_aaf(&land));
break;
case 40:
pr(" %d", land.lnd_item[I_UW]);

View file

@ -228,7 +228,7 @@ look_land(struct lndstr *lookland)
if (!(chance(LND_SPY_DETECT_CHANCE(lp->lnd_effic))))
continue;
}
vrange = ldround((lp->lnd_vis * range) / 20.0, 1);
vrange = ldround((lnd_vis(lp) * range) / 20.0, 1);
dist = mapdist(lp->lnd_x, lp->lnd_y,
lookland->lnd_x, lookland->lnd_y);
if (dist > vrange)

View file

@ -60,13 +60,13 @@ lsta(void)
pr("%4d %-16.16s ", land.lnd_uid, lchr[(int)land.lnd_type].l_name);
prxy("%4d,%-4d", land.lnd_x, land.lnd_y, player->cnum);
pr(" %3d%% %3d %1.1f %1.1f %3d ",
land.lnd_effic, land.lnd_tech, land.lnd_att, land.lnd_def,
land.lnd_vul);
land.lnd_effic, land.lnd_tech, lnd_att(&land), lnd_def(&land),
lnd_vul(&land));
pr("%2d %2d %2d %2d ",
land.lnd_spd, land.lnd_vis, land.lnd_spy, land.lnd_rad);
lnd_spd(&land), lnd_vis(&land), land.lnd_spy, land.lnd_rad);
pr("%2d %2d %2d %2d %2d ",
land.lnd_frg,
land.lnd_acc, land.lnd_dam, land.lnd_ammo, land.lnd_aaf);
lnd_frg(&land),
lnd_acc(&land), lnd_dam(&land), land.lnd_ammo, lnd_aaf(&land));
pr("\n");
}
if (nunits == 0) {

View file

@ -146,7 +146,7 @@ multifire(void)
if (item.land.lnd_own != player->cnum)
continue;
if (fland.lnd_dam == 0) {
if (lchr[fland.lnd_type].l_dam == 0) {
pr("Unit %d cannot fire!\n", fland.lnd_uid);
continue;
}
@ -352,7 +352,7 @@ multifire(void)
fx = fland.lnd_x;
fy = fland.lnd_y;
if (fland.lnd_dam == 0) {
if (lchr[fland.lnd_type].l_dam == 0) {
pr("Unit %d cannot fire!\n", fland.lnd_uid);
continue;
}
@ -376,7 +376,7 @@ multifire(void)
continue;
}
if (target == targ_ship) {
if (chance(fland.lnd_acc / 100.0))
if (chance(lnd_acc(&fland) / 100.0))
dam = ldround(dam / 2.0, 1);
}
} else {