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);
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) {
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))
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;
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)