]> git.pond.sub.org Git - empserver/commitdiff
(mission_pln_wanted): Broken like its cousin pln_wanted() was, only
authorMarkus Armbruster <armbru@pond.sub.org>
Thu, 1 Nov 2007 19:50:37 +0000 (19:50 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 1 Nov 2007 19:50:37 +0000 (19:50 +0000)
more so: additionally, any of P_E, P_K, P_L satisfied any subset of
P_E, P_K, P_L.  Chainsaw fixed this one in plnsub.c, but not here.
Remove, use the fixed pln_wanted() instead.
(pln_wanted): External linkage.

include/prototypes.h
src/lib/subs/mission.c
src/lib/subs/plnsub.c

index ddb6ce39acc2ac1535a0f3edf9b73c5f31d0cae8..f9f869c00b8fd3d0e3609a9812300cdfbaf3f2d6 100644 (file)
@@ -556,6 +556,7 @@ extern int put_plane_on_ship(struct plnstr *, struct shpstr *);
 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 *,
index 018b03f5fbae502cd862639171db6d97e58ef951..44fc6b10c20b9d20b7989f973eb460ccfc826f5f 100644 (file)
@@ -902,67 +902,6 @@ oprange(struct empobj *gp, int *radius)
     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.
@@ -1007,7 +946,7 @@ mission_pln_sel(struct emp_qelem *list, int wantflags, int nowantflags,
            }
        }
 
-       if (!mission_pln_wanted(pp, wantflags, nowantflags)) {
+       if (!pln_wanted(pp, wantflags, nowantflags)) {
            emp_remque(qp);
            free(qp);
            continue;
index e358708b61107c4e3f67f9fa7ef7971301d5b3fb..50a2092a749ff0099f366bfdb821e9fc4f408c24 100644 (file)
@@ -359,7 +359,7 @@ pln_mine(struct emp_qelem *list, struct sctstr *sectp)
  * - 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;