From: Markus Armbruster Date: Sun, 2 May 2010 16:27:33 +0000 (+0200) Subject: Fix loading x-light missiles on ships without capability plane X-Git-Tag: v4.3.26~9 X-Git-Url: http://git.pond.sub.org/?p=empserver;a=commitdiff_plain;h=162158fd4a67a04dab55374225d16295d2aecfac Fix loading x-light missiles on ships without capability plane These ships could only use their x-light slots for x-light planes, not their plane slots. For instance, agc (30 x-light slots, 32 plane slots) could load only 30 sams, and mb (0 x-light slots, 10 plane slots) could not load any sams. Culprit is could_be_on_ship(). Broken in commit 3e370da5, v4.3.17. --- diff --git a/src/lib/subs/plnsub.c b/src/lib/subs/plnsub.c index 0367d77d6..924f59c23 100644 --- a/src/lib/subs/plnsub.c +++ b/src/lib/subs/plnsub.c @@ -827,6 +827,7 @@ could_be_on_ship(struct plnstr *pp, struct shpstr *sp, { struct plchrstr *pcp = &plchr[pp->pln_type]; struct mchrstr *mcp = &mchr[sp->shp_type]; + int nfw; if (pcp->pl_flags & P_K) nch++; @@ -837,14 +838,17 @@ could_be_on_ship(struct plnstr *pp, struct shpstr *sp, else if (pcp->pl_flags & P_M) nmsl++; n++; + nfw = n - nch - nxl - nmsl; - n -= MIN(nch, mcp->m_nchoppers); - n -= MIN(nxl, mcp->m_nxlight); + if (nch > mcp->m_nchoppers) /* overflow into fixed-wing slots */ + nfw += nch - mcp->m_nchoppers; + if (nxl > mcp->m_nxlight) /* overflow into missile slots */ + nmsl += nxl - mcp->m_nxlight; if (nmsl && !(mcp->m_flags & (M_MSL | M_FLY))) return 0; /* missile slots wanted */ - if (nmsl < n && !(mcp->m_flags & M_FLY)) + if (nfw && !(mcp->m_flags & M_FLY)) return 0; /* fixed-wing slots wanted */ - return n <= mcp->m_nplanes; + return nfw + nmsl <= mcp->m_nplanes; } /*