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:
parent
f86d726406
commit
cdf1bcfa22
13 changed files with 185 additions and 68 deletions
|
@ -79,18 +79,9 @@ struct lndstr {
|
|||
short lnd_land; /* pointer to transporting unit */
|
||||
unsigned char lnd_nland;
|
||||
short lnd_access; /* Last tick mob was updated (MOB_ACCESS) */
|
||||
float lnd_att; /* attack multiplier */
|
||||
float lnd_def; /* defense multiplier */
|
||||
int lnd_vul; /* vulnerability (0-100) */
|
||||
int lnd_spd; /* speed */
|
||||
int lnd_vis; /* visibility */
|
||||
int lnd_spy; /* Seeing distance */
|
||||
int lnd_rad; /* reaction radius */
|
||||
int lnd_frg; /* firing range */
|
||||
int lnd_acc; /* firing accuracy */
|
||||
int lnd_dam; /* # of guns firing */
|
||||
int lnd_ammo; /* firing ammu used per shot */
|
||||
int lnd_aaf; /* aa fire */
|
||||
unsigned char lnd_fuelc; /* fuel capacity */
|
||||
unsigned char lnd_fuelu; /* fuel used per 10 mob */
|
||||
unsigned char lnd_maxlight; /* maximum number of xlight planes */
|
||||
|
@ -166,6 +157,15 @@ extern int l_frg(struct lchrstr *, int);
|
|||
extern int l_acc(struct lchrstr *, int);
|
||||
extern int l_dam(struct lchrstr *, int);
|
||||
extern int l_aaf(struct lchrstr *, int);
|
||||
extern float lnd_att(struct lndstr *);
|
||||
extern float lnd_def(struct lndstr *);
|
||||
extern int lnd_vul(struct lndstr *);
|
||||
extern int lnd_spd(struct lndstr *);
|
||||
extern int lnd_vis(struct lndstr *);
|
||||
extern int lnd_frg(struct lndstr *);
|
||||
extern int lnd_acc(struct lndstr *);
|
||||
extern int lnd_dam(struct lndstr *);
|
||||
extern int lnd_aaf(struct lndstr *);
|
||||
|
||||
extern int lnd_fire(struct lndstr *);
|
||||
extern double lnd_fire_range(struct lndstr *);
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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]);
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -120,3 +120,57 @@ l_aaf(struct lchrstr *lcp, int tech)
|
|||
{
|
||||
return LND_AAF(lcp->l_aaf, MAX(0, tech - lcp->l_tech));
|
||||
}
|
||||
|
||||
float
|
||||
lnd_att(struct lndstr *lp)
|
||||
{
|
||||
return l_att(lchr + lp->lnd_type, lp->lnd_tech);
|
||||
}
|
||||
|
||||
float
|
||||
lnd_def(struct lndstr *lp)
|
||||
{
|
||||
return l_def(lchr + lp->lnd_type, lp->lnd_tech);
|
||||
}
|
||||
|
||||
int
|
||||
lnd_vul(struct lndstr *lp)
|
||||
{
|
||||
return l_vul(lchr + lp->lnd_type, lp->lnd_tech);
|
||||
}
|
||||
|
||||
int
|
||||
lnd_spd(struct lndstr *lp)
|
||||
{
|
||||
return l_spd(lchr + lp->lnd_type, lp->lnd_tech);
|
||||
}
|
||||
|
||||
int
|
||||
lnd_vis(struct lndstr *lp)
|
||||
{
|
||||
return lchr[lp->lnd_type].l_vis;
|
||||
}
|
||||
|
||||
int
|
||||
lnd_frg(struct lndstr *lp)
|
||||
{
|
||||
return l_frg(lchr + lp->lnd_type, lp->lnd_tech);
|
||||
}
|
||||
|
||||
int
|
||||
lnd_acc(struct lndstr *lp)
|
||||
{
|
||||
return l_acc(lchr + lp->lnd_type, lp->lnd_tech);
|
||||
}
|
||||
|
||||
int
|
||||
lnd_dam(struct lndstr *lp)
|
||||
{
|
||||
return l_dam(lchr + lp->lnd_type, lp->lnd_tech);
|
||||
}
|
||||
|
||||
int
|
||||
lnd_aaf(struct lndstr *lp)
|
||||
{
|
||||
return l_aaf(lchr + lp->lnd_type, lp->lnd_tech);
|
||||
}
|
||||
|
|
|
@ -48,6 +48,15 @@
|
|||
static void *nsc_ver(struct valstr *, natid, void *);
|
||||
static void *nsc_pln_att(struct valstr *, natid, void *);
|
||||
static void *nsc_pln_def(struct valstr *, natid, void *);
|
||||
static void *nsc_lnd_att(struct valstr *, natid, void *);
|
||||
static void *nsc_lnd_def(struct valstr *, natid, void *);
|
||||
static void *nsc_lnd_vul(struct valstr *, natid, void *);
|
||||
static void *nsc_lnd_spd(struct valstr *, natid, void *);
|
||||
static void *nsc_lnd_vis(struct valstr *, natid, void *);
|
||||
static void *nsc_lnd_frg(struct valstr *, natid, void *);
|
||||
static void *nsc_lnd_acc(struct valstr *, natid, void *);
|
||||
static void *nsc_lnd_dam(struct valstr *, natid, void *);
|
||||
static void *nsc_lnd_aaf(struct valstr *, natid, void *);
|
||||
|
||||
/* Ugly hack to improve legibility by avoid long lines */
|
||||
#define fldoff(fld) offsetof(CURSTR, fld)
|
||||
|
@ -341,24 +350,24 @@ struct castr land_ca[] = {
|
|||
{"land", fldoff(lnd_land), NSC_SHORT, 0, NULL, EF_BAD, 0},
|
||||
{"nland", fldoff(lnd_nland), NSC_UCHAR, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"access", fldoff(lnd_access), NSC_SHORT, 0, NULL, EF_BAD, 0},
|
||||
{"att", fldoff(lnd_att), NSC_FLOAT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"def", fldoff(lnd_def), NSC_FLOAT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"vul", fldoff(lnd_vul), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"spd", fldoff(lnd_spd), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"vis", fldoff(lnd_vis), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"spy", fldoff(lnd_spy), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"rmax", fldoff(lnd_rad), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"frg", fldoff(lnd_frg), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"acc", fldoff(lnd_acc), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"dam", fldoff(lnd_dam), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"ammo", fldoff(lnd_ammo), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"aaf", fldoff(lnd_aaf), NSC_INT, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"fuelc", fldoff(lnd_fuelc), NSC_UCHAR, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"fuelu", fldoff(lnd_fuelu), NSC_UCHAR, 0, NULL, EF_BAD, NSC_EXTRA},
|
||||
{"maxlight", fldoff(lnd_maxlight), NSC_UCHAR, 0, NULL,
|
||||
EF_BAD, NSC_EXTRA},
|
||||
{"timestamp", fldoff(lnd_timestamp), NSC_TIME, 0, NULL,
|
||||
EF_BAD, NSC_EXTRA},
|
||||
{"att", 0, NSC_DOUBLE, 0, nsc_lnd_att, EF_BAD, NSC_EXTRA},
|
||||
{"def", 0, NSC_DOUBLE, 0, nsc_lnd_def, EF_BAD, NSC_EXTRA},
|
||||
{"vul", 0, NSC_LONG, 0, nsc_lnd_vul, EF_BAD, NSC_EXTRA},
|
||||
{"spd", 0, NSC_LONG, 0, nsc_lnd_spd, EF_BAD, NSC_EXTRA},
|
||||
{"vis", 0, NSC_LONG, 0, nsc_lnd_vis, EF_BAD, NSC_EXTRA},
|
||||
{"frg", 0, NSC_LONG, 0, nsc_lnd_frg, EF_BAD, NSC_EXTRA},
|
||||
{"acc", 0, NSC_LONG, 0, nsc_lnd_acc, EF_BAD, NSC_EXTRA},
|
||||
{"dam", 0, NSC_LONG, 0, nsc_lnd_dam, EF_BAD, NSC_EXTRA},
|
||||
{"aaf", 0, NSC_LONG, 0, nsc_lnd_aaf, EF_BAD, NSC_EXTRA},
|
||||
{NULL, 0, NSC_NOTYPE, 0, NULL, EF_BAD, 0}
|
||||
#undef CURSTR
|
||||
};
|
||||
|
@ -741,3 +750,66 @@ nsc_pln_att(struct valstr *val, natid cnum, void *ptr)
|
|||
val->val_as.lng = pln_att(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
nsc_lnd_att(struct valstr *val, natid cnum, void *ptr)
|
||||
{
|
||||
val->val_as.dbl = lnd_att(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
nsc_lnd_def(struct valstr *val, natid cnum, void *ptr)
|
||||
{
|
||||
val->val_as.dbl = lnd_def(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
nsc_lnd_vul(struct valstr *val, natid cnum, void *ptr)
|
||||
{
|
||||
val->val_as.lng = lnd_vul(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
nsc_lnd_spd(struct valstr *val, natid cnum, void *ptr)
|
||||
{
|
||||
val->val_as.lng = lnd_spd(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
nsc_lnd_vis(struct valstr *val, natid cnum, void *ptr)
|
||||
{
|
||||
val->val_as.lng = lnd_vis(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
nsc_lnd_frg(struct valstr *val, natid cnum, void *ptr)
|
||||
{
|
||||
val->val_as.lng = lnd_frg(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
nsc_lnd_acc(struct valstr *val, natid cnum, void *ptr)
|
||||
{
|
||||
val->val_as.lng = lnd_acc(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
nsc_lnd_dam(struct valstr *val, natid cnum, void *ptr)
|
||||
{
|
||||
val->val_as.lng = lnd_dam(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static void *
|
||||
nsc_lnd_aaf(struct valstr *val, natid cnum, void *ptr)
|
||||
{
|
||||
val->val_as.lng = lnd_aaf(ptr);
|
||||
return NULL;
|
||||
}
|
||||
|
|
|
@ -883,7 +883,7 @@ ac_landflak(struct emp_qelem *list, coord x, coord y)
|
|||
struct lndstr land;
|
||||
struct lchrstr *lcp;
|
||||
double flak, total, ngun;
|
||||
int gun;
|
||||
int aaf, gun;
|
||||
int rel;
|
||||
struct plist *plp;
|
||||
natid plane_owner;
|
||||
|
@ -900,14 +900,15 @@ ac_landflak(struct emp_qelem *list, coord x, coord y)
|
|||
if (land.lnd_own == 0 || land.lnd_own == plane_owner)
|
||||
continue;
|
||||
lcp = &lchr[(int)land.lnd_type];
|
||||
if ((lcp->l_flags & L_FLAK) == 0 || land.lnd_aaf == 0)
|
||||
aaf = lnd_aaf(&land);
|
||||
if ((lcp->l_flags & L_FLAK) == 0 || aaf == 0)
|
||||
continue;
|
||||
if (land.lnd_ship >= 0 || land.lnd_land >= 0)
|
||||
continue;
|
||||
rel = getrel(getnatp(land.lnd_own), plane_owner);
|
||||
if (rel > HOSTILE)
|
||||
continue;
|
||||
flak = land.lnd_aaf * 1.5 * land.lnd_effic / 100.0;
|
||||
flak = aaf * 1.5 * land.lnd_effic / 100.0;
|
||||
ngun += flak;
|
||||
total += techfact(land.lnd_tech, flak * 2.0);
|
||||
|
||||
|
@ -920,7 +921,7 @@ ac_landflak(struct emp_qelem *list, coord x, coord y)
|
|||
nats[land.lnd_own] = 1;
|
||||
}
|
||||
PR(land.lnd_own, "firing flak guns from unit %s (aa rating %d)\n",
|
||||
prland(&land), land.lnd_aaf);
|
||||
prland(&land), aaf);
|
||||
from = land.lnd_own;
|
||||
}
|
||||
|
||||
|
|
|
@ -118,7 +118,7 @@ landdamage(struct lndstr *lp, int dam)
|
|||
damage_factor = m / (m + lp->lnd_harden);
|
||||
|
||||
/* vulnerable units take more damage */
|
||||
damage_factor *= lp->lnd_vul / 100.0;
|
||||
damage_factor *= lnd_vul(lp) / 100.0;
|
||||
|
||||
land_damage(lp, ldround(damage_factor * dam, 1));
|
||||
}
|
||||
|
|
|
@ -198,7 +198,7 @@ lnd_fire(struct lndstr *lp)
|
|||
return -1;
|
||||
if (lp->lnd_item[I_MILIT] == 0)
|
||||
return -1;
|
||||
guns = lp->lnd_dam;
|
||||
guns = lnd_dam(lp);
|
||||
guns = MIN(guns, lp->lnd_item[I_GUN]);
|
||||
if (guns == 0)
|
||||
return -1;
|
||||
|
@ -287,7 +287,7 @@ shp_torp_hitchance(struct shpstr *sp, int range)
|
|||
double
|
||||
lnd_fire_range(struct lndstr *lp)
|
||||
{
|
||||
return effrange(lp->lnd_frg, lp->lnd_tech);
|
||||
return effrange(lnd_frg(lp), lp->lnd_tech);
|
||||
}
|
||||
|
||||
int
|
||||
|
|
|
@ -76,7 +76,7 @@ attack_val(int combat_mode, struct lndstr *lp)
|
|||
return 1;
|
||||
|
||||
men = lp->lnd_item[I_MILIT];
|
||||
value = men * lp->lnd_att * lp->lnd_effic / 100.0;
|
||||
value = men * lnd_att(lp) * lp->lnd_effic / 100.0;
|
||||
|
||||
switch (combat_mode) {
|
||||
case A_ATTACK:
|
||||
|
@ -113,7 +113,7 @@ defense_val(struct lndstr *lp)
|
|||
!(lcp->l_flags & L_MARINE))
|
||||
return men;
|
||||
|
||||
value = men * lp->lnd_def * lp->lnd_effic / 100.0;
|
||||
value = men * lnd_def(lp) * lp->lnd_effic / 100.0;
|
||||
value *= ((double)land_mob_max + lp->lnd_harden) / land_mob_max;
|
||||
|
||||
/* If there are military on the unit, you get at least a 1
|
||||
|
@ -331,7 +331,7 @@ void
|
|||
intelligence_report(int destination, struct lndstr *lp, int spy,
|
||||
char *mess)
|
||||
{
|
||||
struct lchrstr *lcp;
|
||||
int vis = lnd_vis(lp);
|
||||
char buf1[80], buf2[80], buf3[80];
|
||||
|
||||
if (destination == 0)
|
||||
|
@ -340,18 +340,16 @@ intelligence_report(int destination, struct lndstr *lp, int spy,
|
|||
if (lp->lnd_own == 0)
|
||||
return;
|
||||
|
||||
lcp = &lchr[(int)lp->lnd_type];
|
||||
|
||||
memset(buf1, 0, sizeof(buf1));
|
||||
memset(buf2, 0, sizeof(buf2));
|
||||
memset(buf3, 0, sizeof(buf3));
|
||||
if (chance((spy + lp->lnd_vis) / 10.0)) {
|
||||
if (chance((spy + vis) / 10.0)) {
|
||||
if (destination == player->cnum)
|
||||
pr("%s %s", mess, prland(lp));
|
||||
else
|
||||
sprintf(buf1, "%s %s", mess, prland(lp));
|
||||
|
||||
if (chance((spy + lp->lnd_vis) / 20.0)) {
|
||||
if (chance((spy + vis) / 20.0)) {
|
||||
if (destination == player->cnum)
|
||||
pr(" (eff %d, mil %d",
|
||||
roundintby(lp->lnd_effic, 5),
|
||||
|
@ -361,7 +359,7 @@ intelligence_report(int destination, struct lndstr *lp, int spy,
|
|||
roundintby(lp->lnd_effic, 5),
|
||||
roundintby(lp->lnd_item[I_MILIT], 10));
|
||||
|
||||
if (chance((spy + lp->lnd_vis) / 20.0)) {
|
||||
if (chance((spy + vis) / 20.0)) {
|
||||
int t;
|
||||
t = lp->lnd_tech - 20 + roll(40);
|
||||
t = MAX(t, 0);
|
||||
|
@ -890,8 +888,8 @@ lnd_hardtarget(struct lndstr *lp)
|
|||
|
||||
getsect(lp->lnd_x, lp->lnd_y, §);
|
||||
return (int)((lp->lnd_effic / 100.0) *
|
||||
(10 + dchr[sect.sct_type].d_dstr * 2 + lp->lnd_spd / 2.0
|
||||
- lp->lnd_vis));
|
||||
(10 + dchr[sect.sct_type].d_dstr * 2 + lnd_spd(lp) / 2.0
|
||||
- lnd_vis(lp)));
|
||||
}
|
||||
|
||||
static int
|
||||
|
@ -917,7 +915,7 @@ lnd_pathcost(struct lndstr *lp, double pathcost)
|
|||
{
|
||||
double effspd;
|
||||
|
||||
effspd = lp->lnd_spd;
|
||||
effspd = lnd_spd(lp);
|
||||
if (lchr[(int)lp->lnd_type].l_flags & L_SUPPLY)
|
||||
effspd *= lp->lnd_effic * 0.01;
|
||||
|
||||
|
@ -1150,7 +1148,7 @@ lnd_support(natid victim, natid attacker, coord x, coord y, int defending)
|
|||
nreport(land.lnd_own, N_FIRE_BACK, victim, 1);
|
||||
else
|
||||
nreport(land.lnd_own, N_FIRE_L_ATTACK, victim, 1);
|
||||
if (roll(100) < land.lnd_acc)
|
||||
if (roll(100) < lnd_acc(&land))
|
||||
dam2 /= 2;
|
||||
dam += dam2;
|
||||
if (land.lnd_own != attacker)
|
||||
|
@ -1238,18 +1236,9 @@ lnd_set_tech(struct lndstr *lp, int tlev)
|
|||
tlev = 0;
|
||||
|
||||
lp->lnd_tech = tlev;
|
||||
lp->lnd_att = l_att(lcp, tlev);
|
||||
lp->lnd_def = l_def(lcp, tlev);
|
||||
lp->lnd_vul = l_vul(lcp, tlev);
|
||||
lp->lnd_spd = l_spd(lcp, tlev);
|
||||
lp->lnd_vis = lcp->l_vis;
|
||||
lp->lnd_spy = lcp->l_spy;
|
||||
lp->lnd_rad = lcp->l_rad;
|
||||
lp->lnd_frg = l_frg(lcp, tlev);
|
||||
lp->lnd_acc = l_acc(lcp, tlev);
|
||||
lp->lnd_dam = l_dam(lcp, tlev);
|
||||
lp->lnd_ammo = lcp->l_ammo;
|
||||
lp->lnd_aaf = lcp->l_aaf;
|
||||
lp->lnd_fuelc = lcp->l_fuelc;
|
||||
lp->lnd_fuelu = lcp->l_fuelu;
|
||||
lp->lnd_maxlight = lcp->l_nxlight;
|
||||
|
|
|
@ -446,7 +446,7 @@ perform_mission(coord x, coord y, natid victim, struct emp_qelem *list,
|
|||
continue;
|
||||
|
||||
if (sect.sct_type == SCT_WATER) {
|
||||
if (chance(lp->lnd_acc / 100.0))
|
||||
if (chance(lnd_acc(lp) / 100.0))
|
||||
dam2 = ldround(dam2 / 2.0, 1);
|
||||
}
|
||||
dam += dam2;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue