diff --git a/src/lib/update/land.c b/src/lib/update/land.c index 9c25137f..0d9bd9b1 100644 --- a/src/lib/update/land.c +++ b/src/lib/update/land.c @@ -194,28 +194,27 @@ upd_land(struct lndstr *lp, int etus, static void landrepair(struct lndstr *land, struct natstr *np, struct bp *bp, int etus) { + struct lchrstr *lp = &lchr[(int)land->lnd_type]; int delta; struct sctstr *sp; - struct lchrstr *lp; int build; int avail; int mult; - lp = &lchr[(int)land->lnd_type]; + if (land->lnd_effic == 100) + return; + sp = getsectp(land->lnd_x, land->lnd_y); if (sp->sct_off) return; + + if (relations_with(sp->sct_own, land->lnd_own) != ALLIED) + return; + mult = 1; if (np->nat_level[NAT_TLEV] < land->lnd_tech * 0.85) mult = 2; - if (land->lnd_effic == 100) { - /* land is ok; no repairs needed */ - return; - } - if (relations_with(sp->sct_own, land->lnd_own) != ALLIED) - return; - if (!player->simulation) avail = sp->sct_avail * 100; else diff --git a/src/lib/update/plane.c b/src/lib/update/plane.c index 74ad33e2..713676df 100644 --- a/src/lib/update/plane.c +++ b/src/lib/update/plane.c @@ -123,15 +123,22 @@ upd_plane(struct plnstr *pp, int etus, static void planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus) { + struct plchrstr *pcp = &plchr[(int)pp->pln_type]; int build; struct shpstr *carrier; - struct plchrstr *pcp = &plchr[(int)pp->pln_type]; - struct sctstr *sp = getsectp(pp->pln_x, pp->pln_y); + struct sctstr *sp; int delta; int mult; int avail; int used; + if (pp->pln_effic == 100) + return; + + sp = getsectp(pp->pln_x, pp->pln_y); + if (sp->sct_off) + return; + carrier = NULL; if (pp->pln_ship >= 0) { if (pp->pln_effic >= 80) @@ -148,15 +155,10 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus) return; } - if (sp->sct_off) - return; mult = 1; if (np->nat_level[NAT_TLEV] < pp->pln_tech * 0.85) mult = 2; - if (pp->pln_effic == 100) - return; - if (!player->simulation) avail = sp->sct_avail * 100; else diff --git a/src/lib/update/ship.c b/src/lib/update/ship.c index 0768decc..132d0161 100644 --- a/src/lib/update/ship.c +++ b/src/lib/update/ship.c @@ -241,21 +241,29 @@ upd_ship(struct shpstr *sp, int etus, static void shiprepair(struct shpstr *ship, struct natstr *np, struct bp *bp, int etus) { + struct mchrstr *mp = &mchr[(int)ship->shp_type]; int delta; struct sctstr *sp; - struct mchrstr *mp; int build; int wf; int avail; int mult; - mp = &mchr[(int)ship->shp_type]; + if (ship->shp_effic == 100) + return; + sp = getsectp(ship->shp_x, ship->shp_y); + if ((sp->sct_off) && (sp->sct_own == ship->shp_own)) + return; if (sp->sct_own != 0 && relations_with(sp->sct_own, ship->shp_own) < FRIENDLY) return; + mult = 1; + if (np->nat_level[NAT_TLEV] < ship->shp_tech * 0.85) + mult = 2; + /* only military can work on a military boat */ if (mp->m_glim != 0) wf = etus * ship->shp_item[I_MILIT] / 2; @@ -265,24 +273,10 @@ shiprepair(struct shpstr *ship, struct natstr *np, struct bp *bp, int etus) if (sp->sct_type != SCT_HARBR) { wf /= 3; avail = wf; - } else { - if (!player->simulation) - avail = wf + sp->sct_avail * 100; - else - avail = wf + bp_get_avail(bp, sp) * 100; - } - - if ((sp->sct_off) && (sp->sct_own == ship->shp_own)) - return; - - mult = 1; - if (np->nat_level[NAT_TLEV] < ship->shp_tech * 0.85) - mult = 2; - - if (ship->shp_effic == 100) { - /* ship is ok; no repairs needed */ - return; - } + } else if (!player->simulation) + avail = wf + sp->sct_avail * 100; + else + avail = wf + bp_get_avail(bp, sp) * 100; delta = roundavg((double)avail / mp->m_bwork); if (delta <= 0)