]> git.pond.sub.org Git - empserver/blobdiff - src/lib/subs/plane.c
Update copyright notice
[empserver] / src / lib / subs / plane.c
index d644267d963fe082989dac3d23768018f3dde294..0cddce20b271894f16614e4ae6990a4137e89928 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2000, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *  Copyright (C) 1986-2008, Dave Pare, Jeff Bailey, Thomas Ruschak,
  *                           Ken Stevens, Steve McClure
  *
  *  This program is free software; you can redistribute it and/or modify
@@ -19,9 +19,9 @@
  *
  *  ---
  *
- *  See the "LEGAL", "LICENSE", "CREDITS" and "README" files for all the
- *  related information and legal notices. It is expected that any future
- *  projects/authors will amend these files as needed.
+ *  See files README, COPYING and CREDITS in the root of the source
+ *  tree for related information and legal notices.  It is expected
+ *  that future projects/authors will amend these files as needed.
  *
  *  ---
  *
  *     Steve McClure, 1996
  */
 
+#include <config.h>
+
+#include "file.h"
+#include "land.h"
+#include "lost.h"
 #include "misc.h"
-#include "player.h"
-#include "var.h"
+#include "nuke.h"
+#include "optlist.h"
 #include "plane.h"
-#include "ship.h"
-#include "land.h"
-#include "xy.h"
-#include "file.h"
-#include "nat.h"
+#include "player.h"
 #include "prototypes.h"
-#include "optlist.h"
+#include "ship.h"
 
 int
-pln_postread(int n, s_char *ptr)
+pln_postread(int n, void *ptr)
 {
-    struct plnstr *pp = (struct plnstr *)ptr;
+    struct plnstr *pp = ptr;
     struct shpstr theship;
     struct lndstr theland;
 
     if (pp->pln_uid != n) {
-       logerror("pln_postread: Error - %d != %d, zeroing.\n", pp->pln_uid,
-                n);
+       logerror("pln_postread: Error - %d != %d, zeroing.\n",
+                pp->pln_uid, n);
        memset(pp, 0, sizeof(struct plnstr));
     }
 
@@ -107,19 +108,28 @@ pln_postread(int n, s_char *ptr)
     return 1;
 }
 
-/*ARGSUSED*/
 int
-pln_prewrite(int n, s_char *ptr)
+pln_prewrite(int n, void *ptr)
 {
-    struct plnstr *pp = (struct plnstr *)ptr;
+    struct plnstr *pp = ptr;
     struct plnstr plane;
+    struct nukstr *np;
+    int i;
 
     if (pp->pln_effic < PLANE_MINEFF) {
        if (pp->pln_own)
-           makelost(EF_PLANE, pp->pln_own, pp->pln_uid, pp->pln_x,
-                    pp->pln_y);
+           makelost(EF_PLANE, pp->pln_own, pp->pln_uid,
+                    pp->pln_x, pp->pln_y);
        pp->pln_own = 0;
        pp->pln_effic = 0;
+       for (i = 0; NULL != (np = getnukep(i)); i++) {
+           if (np->nuk_own && np->nuk_plane == n) {
+               mpr(np->nuk_own, "%s lost!\n", prnuke(np));
+               np->nuk_effic = 0;
+               np->nuk_plane = -1;
+               putnuke(np->nuk_uid, np);
+           }
+       }
     }
     pp->ef_type = EF_PLANE;
     pp->pln_uid = n;
@@ -132,16 +142,16 @@ pln_prewrite(int n, s_char *ptr)
 }
 
 void
-pln_init(int n, s_char *ptr)
+pln_init(int n, void *ptr)
 {
-    struct plnstr *pp = (struct plnstr *)ptr;
+    struct plnstr *pp = ptr;
 
     pp->ef_type = EF_PLANE;
     pp->pln_uid = n;
     pp->pln_own = 0;
 }
 
-s_char *
+char *
 prplane(struct plnstr *pp)
 {
     return prbuf("%s #%d", plchr[(int)pp->pln_type].pl_name, pp->pln_uid);