diff --git a/src/lib/update/land.c b/src/lib/update/land.c index 49649ae4..b4b4a3d2 100644 --- a/src/lib/update/land.c +++ b/src/lib/update/land.c @@ -283,37 +283,33 @@ landrepair(struct lndstr *land, struct natstr *np, int *bp, int etus) mvec[I_GUN] = gun_needed = 0; mvec[I_MILIT] = mil_needed = 0; mvec[I_SHELL] = shell_needed = 0; - get_materials(sp, bp, mvec, 0); - if (mvec[I_MILIT] >= mil_needed) - buildp = leftp; - else - buildp = ((float)mvec[I_MILIT] / (float)lp->l_mil); + buildp = leftp; + if (mvec[I_MILIT] < mil_needed) + buildp = MIN(buildp, (float)mvec[I_MILIT] / (float)lp->l_mil); if (mvec[I_LCM] < lcm_needed) - buildp = MIN(buildp, ((float)mvec[I_LCM] / (float)lp->l_lcm)); + buildp = MIN(buildp, (float)mvec[I_LCM] / (float)lp->l_lcm); if (mvec[I_HCM] < hcm_needed) - buildp = MIN(buildp, ((float)mvec[I_HCM] / (float)lp->l_hcm)); + buildp = MIN(buildp, (float)mvec[I_HCM] / (float)lp->l_hcm); if (mvec[I_GUN] < gun_needed) - buildp = MIN(buildp, ((float)mvec[I_GUN] / (float)lp->l_gun)); + buildp = MIN(buildp, (float)mvec[I_GUN] / (float)lp->l_gun); if (mvec[I_SHELL] < shell_needed) - buildp = MIN(buildp, ((float)mvec[I_SHELL] / (float)lp->l_shell)); + buildp = MIN(buildp, (float)mvec[I_SHELL] / (float)lp->l_shell); build = ldround(buildp * 100.0, 1); - memset(mvec, 0, sizeof(mvec)); - mvec[I_LCM] = lcm_needed = roundavg(lp->l_lcm * buildp); - mvec[I_HCM] = hcm_needed = roundavg(lp->l_hcm * buildp); + mvec[I_LCM] = roundavg(lp->l_lcm * buildp); + mvec[I_HCM] = roundavg(lp->l_hcm * buildp); /* - mvec[I_GUN] = gun_needed = roundavg(lp->l_gun * buildp); - mvec[I_MILIT] = mil_needed = roundavg(lp->l_mil * buildp); - mvec[I_SHELL] = shell_needed = roundavg(lp->l_shell *buildp); + mvec[I_GUN] = roundavg(lp->l_gun * buildp); + mvec[I_MILIT] = roundavg(lp->l_mil * buildp); + mvec[I_SHELL] = roundavg(lp->l_shell *buildp); */ - mvec[I_GUN] = gun_needed = 0; - mvec[I_MILIT] = mil_needed = 0; - mvec[I_SHELL] = shell_needed = 0; - mil_dbl_pay += mil_needed; - + mvec[I_GUN] = 0; + mvec[I_MILIT] = 0; + mvec[I_SHELL] = 0; + mil_dbl_pay += mvec[I_MILIT]; get_materials(sp, bp, mvec, 1); if ((sp->sct_type != SCT_HEADQ) && (sp->sct_type != SCT_FORTR)) diff --git a/src/lib/update/plane.c b/src/lib/update/plane.c index de6031a9..c01fd01e 100644 --- a/src/lib/update/plane.c +++ b/src/lib/update/plane.c @@ -190,24 +190,21 @@ planerepair(struct plnstr *pp, struct natstr *np, int *bp, int etus) mvec[I_MILIT] = mil_needed = ldround(pcp->pl_crew * leftp, 1); mvec[I_LCM] = lcm_needed = ldround(pcp->pl_lcm * leftp, 1); mvec[I_HCM] = hcm_needed = ldround(pcp->pl_hcm * leftp, 1); - get_materials(sp, bp, mvec, 0); - if (mvec[I_MILIT] >= mil_needed) - buildp = leftp; - else - buildp = ((float)mvec[I_MILIT] / (float)pcp->pl_crew); + buildp = leftp; + if (mvec[I_MILIT] < mil_needed) + buildp = MIN(buildp, (float)mvec[I_MILIT] / (float)pcp->pl_crew); if (mvec[I_LCM] < lcm_needed) - buildp = MIN(buildp, ((float)mvec[I_LCM] / (float)pcp->pl_lcm)); + buildp = MIN(buildp, (float)mvec[I_LCM] / (float)pcp->pl_lcm); if (mvec[I_HCM] < hcm_needed) - buildp = MIN(buildp, ((float)mvec[I_HCM] / (float)pcp->pl_hcm)); + buildp = MIN(buildp, (float)mvec[I_HCM] / (float)pcp->pl_hcm); build = ldround(buildp * 100.0, 1); memset(mvec, 0, sizeof(mvec)); - mvec[I_MILIT] = mil_needed = roundavg(pcp->pl_crew * buildp); - mvec[I_LCM] = lcm_needed = roundavg(pcp->pl_lcm * buildp); - mvec[I_HCM] = hcm_needed = roundavg(pcp->pl_hcm * buildp); - + mvec[I_MILIT] = roundavg(pcp->pl_crew * buildp); + mvec[I_LCM] = roundavg(pcp->pl_lcm * buildp); + mvec[I_HCM] = roundavg(pcp->pl_hcm * buildp); get_materials(sp, bp, mvec, 1); if (carrier) diff --git a/src/lib/update/ship.c b/src/lib/update/ship.c index 70c3e425..3f3a1755 100644 --- a/src/lib/update/ship.c +++ b/src/lib/update/ship.c @@ -348,21 +348,18 @@ shiprepair(struct shpstr *ship, struct natstr *np, int *bp, int etus) memset(mvec, 0, sizeof(mvec)); mvec[I_LCM] = lcm_needed = ldround(mp->m_lcm * leftp, 1); mvec[I_HCM] = hcm_needed = ldround(mp->m_hcm * leftp, 1); - get_materials(sp, bp, mvec, 0); - if (mvec[I_LCM] >= lcm_needed) - buildp = leftp; - else - buildp = ((float)mvec[I_LCM] / (float)mp->m_lcm); + buildp = leftp; + if (mvec[I_LCM] < lcm_needed) + buildp = MIN(buildp, (float)mvec[I_LCM] / (float)mp->m_lcm); if (mvec[I_HCM] < hcm_needed) - buildp = MIN(buildp, ((float)mvec[I_HCM] / (float)mp->m_hcm)); + buildp = MIN(buildp, (float)mvec[I_HCM] / (float)mp->m_hcm); build = ldround(buildp * 100.0, 1); memset(mvec, 0, sizeof(mvec)); - mvec[I_LCM] = lcm_needed = roundavg(mp->m_lcm * buildp); - mvec[I_HCM] = hcm_needed = roundavg(mp->m_hcm * buildp); - + mvec[I_LCM] = roundavg(mp->m_lcm * buildp); + mvec[I_HCM] = roundavg(mp->m_hcm * buildp); get_materials(sp, bp, mvec, 1); if (sp->sct_type != SCT_HARBR)