(do_mob_land): Use excess mobility to fortify. Note that units

requiring fuel to gain mobility never get excess mobility.  Adapted
patch from from Marc Olzheim.  Closes #725457.
This commit is contained in:
Markus Armbruster 2004-01-28 17:00:29 +00:00
parent c4ae0d89eb
commit bf50c6e851

View file

@ -412,8 +412,11 @@ do_mob_land(register struct lndstr *lp, register int etus)
if (lp->lnd_mobil >= land_mob_max) { if (lp->lnd_mobil >= land_mob_max) {
lp->lnd_mobil = land_mob_max; lp->lnd_mobil = land_mob_max;
if (lp->lnd_harden >= land_mob_max) {
lp->lnd_harden = land_mob_max;
return; return;
} }
}
/* /*
* Give damaged units a break. When at low * Give damaged units a break. When at low
@ -440,8 +443,10 @@ do_mob_land(register struct lndstr *lp, register int etus)
} else { } else {
value = lp->lnd_mobil + ((float)etus * land_mob_scale); value = lp->lnd_mobil + ((float)etus * land_mob_scale);
} }
if (value > land_mob_max) if (value > land_mob_max) {
lnd_fortify(lp, value - land_mob_max);
value = land_mob_max; value = land_mob_max;
}
lp->lnd_mobil = value; lp->lnd_mobil = value;
return; /* Done! */ return; /* Done! */
@ -458,8 +463,10 @@ do_mob_land(register struct lndstr *lp, register int etus)
} else { } else {
value = lp->lnd_mobil + ((float)etus * land_mob_scale); value = lp->lnd_mobil + ((float)etus * land_mob_scale);
} }
if (value > land_mob_max) if (value > land_mob_max) {
lnd_fortify(lp, value - land_mob_max);
value = land_mob_max; value = land_mob_max;
}
lp->lnd_mobil = value; lp->lnd_mobil = value;
} else { } else {
@ -517,6 +524,7 @@ do_mob_land(register struct lndstr *lp, register int etus)
if (total_add + lp->lnd_mobil > land_mob_max) { if (total_add + lp->lnd_mobil > land_mob_max) {
total_add = land_mob_max - lp->lnd_mobil; total_add = land_mob_max - lp->lnd_mobil;
} }
/* no automatic fortification here, as it would cost fuel */
if (opt_MOB_ACCESS) { if (opt_MOB_ACCESS) {
if (lp->lnd_mobil < 0) if (lp->lnd_mobil < 0)