extern void pln_dropoff(struct emp_qelem *, struct ichrstr *,
coord, coord, void *, int);
extern void pln_mine(struct emp_qelem *list, struct sctstr *sectp);
+extern int pln_wanted(struct plnstr *, int, int);
extern void pln_sel(struct nstr_item *, struct emp_qelem *,
struct sctstr *, int, int, int, int);
extern int pln_arm(struct emp_qelem *, int, char, struct ichrstr *,
return range;
}
-static int
-mission_pln_wanted(struct plnstr *pp, int wantflags, int nowantflags)
-{
- int y, bad, bad1;
- unsigned x;
- struct plchrstr *pcp = plchr + pp->pln_type;
-
- bad = 0;
- bad1 = 0;
- if (wantflags) {
- for (x = 0; x < sizeof(wantflags) * 8; x++) {
- y = (1 << x);
- if ((wantflags & y) == y)
- if ((pcp->pl_flags & y) != y) {
- switch (y) {
- case P_F:
- case P_ESC:
- bad1 = 2;
- break;
- case P_E:
- case P_L:
- case P_K:
- bad1 = 1;
- break;
- default:
- bad = 1;
- }
- }
- }
- if (bad) {
- return 0;
- }
- if (bad1 == 2) {
- if ((pcp->pl_flags & P_ESC) || (pcp->pl_flags & P_F))
- bad1 = 0;
- }
- if (bad1 == 1) {
- if ((pcp->pl_flags & P_E) ||
- (pcp->pl_flags & P_K) || (pcp->pl_flags & P_L))
- bad1 = 0;
- }
- if (bad1) {
- return 0;
- }
- }
- bad = 0;
- bad1 = 0;
- if (nowantflags) {
- for (x = 0; x < sizeof(nowantflags) * 8; x++) {
- y = (1 << x);
- if ((nowantflags & y) == y)
- if ((pcp->pl_flags & y) == y)
- bad = 1;
- }
- if (bad) {
- return 0;
- }
- }
- return 1;
-}
-
/*
* Remove all planes who cannot go on
* the mission from the plane list.
}
}
- if (!mission_pln_wanted(pp, wantflags, nowantflags)) {
+ if (!pln_wanted(pp, wantflags, nowantflags)) {
emp_remque(qp);
free(qp);
continue;
* - it lacks any of the other flags in wantflags, or
* - it has any of the flags in nowantflags.
*/
-static int
+int
pln_wanted(struct plnstr *pp, int wantflags, int nowantflags)
{
int flags = plchr[(int)pp->pln_type].pl_flags;