diff --git a/include/prototypes.h b/include/prototypes.h index 91cbdd08..ddb6ce39 100644 --- a/include/prototypes.h +++ b/include/prototypes.h @@ -551,7 +551,7 @@ extern int pln_onewaymission(struct sctstr *, int *, int *); extern int pln_oneway_to_carrier_ok(struct emp_qelem *, struct emp_qelem *, int); extern void pln_newlanding(struct emp_qelem *, coord, coord, int); -extern int can_be_on_ship(int, int); +extern int could_be_on_ship(struct plnstr *, struct shpstr *); extern int put_plane_on_ship(struct plnstr *, struct shpstr *); extern void pln_dropoff(struct emp_qelem *, struct ichrstr *, coord, coord, void *, int); diff --git a/src/lib/commands/load.c b/src/lib/commands/load.c index 58b8e917..5dc22be1 100644 --- a/src/lib/commands/load.c +++ b/src/lib/commands/load.c @@ -414,7 +414,7 @@ load_plane_ship(struct sctstr *sectp, struct shpstr *sp, int noisy, continue; /* ship to (plane or missle) sanity */ - if (!can_be_on_ship(pln.pln_uid, sp->shp_uid)) { + if (!could_be_on_ship(&pln, sp)) { if (plchr[(int)pln.pln_type].pl_flags & P_L) { strcpy(buf, "planes"); } else if (plchr[(int)pln.pln_type].pl_flags & P_K) { diff --git a/src/lib/subs/mission.c b/src/lib/subs/mission.c index 4def9a1b..da8a2c6f 100644 --- a/src/lib/subs/mission.c +++ b/src/lib/subs/mission.c @@ -1012,7 +1012,7 @@ mission_pln_sel(struct emp_qelem *list, int wantflags, int nowantflags, free(qp); continue; } - if (!can_be_on_ship(pp->pln_uid, ship.shp_uid)) { + if (!could_be_on_ship(pp, &ship)) { goto shipsunk; } if (ship.shp_effic < SHIP_MINEFF) { diff --git a/src/lib/subs/plnsub.c b/src/lib/subs/plnsub.c index 89b9594b..1b74bd9d 100644 --- a/src/lib/subs/plnsub.c +++ b/src/lib/subs/plnsub.c @@ -217,7 +217,7 @@ pln_newlanding(struct emp_qelem *list, coord tx, coord ty, int cno) plp = (struct plist *)qp; if (cno >= 0) { count_planes(&ship); - if (!can_be_on_ship(plp->plane.pln_uid, ship.shp_uid)) + if (!could_be_on_ship(&plp->plane, &ship)) pr("\t%s cannot land on ship #%d! %s aborts!\n", prplane(&plp->plane), cno, prplane(&plp->plane)); else if (!put_plane_on_ship(&plp->plane, &ship)) @@ -458,7 +458,7 @@ pln_sel(struct nstr_item *ni, struct emp_qelem *list, struct sctstr *ap, putplane(plane.pln_uid, &plane); continue; } - if (!can_be_on_ship(plane.pln_uid, ship.shp_uid)) + if (!could_be_on_ship(&plane, &ship)) goto shipsunk; if (ship.shp_effic < SHIP_MINEFF) goto shipsunk; @@ -951,19 +951,14 @@ take_plane_off_land(struct plnstr *plane, struct lndstr *land) putplane(plane->pln_uid, plane); } +/* + * Could a plane of PP's type be on on a ship of SP's type? + */ int -can_be_on_ship(int p, int s) +could_be_on_ship(struct plnstr *pp, struct shpstr *sp) { - struct plnstr plane; - struct shpstr ship; - struct plchrstr *pcp; - struct mchrstr *mcp; - - getplane(p, &plane); - getship(s, &ship); - - pcp = &plchr[(int)plane.pln_type]; - mcp = &mchr[(int)ship.shp_type]; + struct plchrstr *pcp = plchr + pp->pln_type; + struct mchrstr *mcp = mchr + sp->shp_type; if (pcp->pl_flags & P_L) if (mcp->m_flags & M_FLY)