]> git.pond.sub.org Git - empserver/blobdiff - src/lib/update/plane.c
Update copyright notice
[empserver] / src / lib / update / plane.c
index 82e2d91b9edfa101efcd1146f0dbe565aecf0257..ec26e1922d803bbf234f60ffccae8eec7f00e40c 100644 (file)
@@ -1,11 +1,11 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2007, Dave Pare, Jeff Bailey, Thomas Ruschak,
- *                           Ken Stevens, Steve McClure
+ *  Copyright (C) 1986-2012, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *                Ken Stevens, Steve McClure, Markus Armbruster
  *
- *  This program is free software; you can redistribute it and/or modify
+ *  Empire is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
+ *  the Free Software Foundation, either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  This program is distributed in the hope that it will be useful,
@@ -14,8 +14,7 @@
  *  GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  *  ---
  *
  *  ---
  *
  *  plane.c: Do production for planes
- * 
+ *
  *  Known contributors to this file:
  *     Dave Pare, 1986
  *     Steve McClure, 1998
- *     Markus Armbruster, 2006
+ *     Markus Armbruster, 2006-2011
  */
 
 #include <config.h>
@@ -66,7 +65,7 @@ prod_plane(int etus, int natnum, struct bp *bp, int buildem)
            continue;
        }
 
-       if (pp->pln_flags & PLN_LAUNCHED) {
+       if (pln_is_in_orbit(pp)) {
            if (!player->simulation && buildem == 0
                && !(pp->pln_flags & PLN_SYNCHRONOUS))
                move_sat(pp);
@@ -91,7 +90,7 @@ upd_plane(struct plnstr *pp, int etus,
          struct natstr *np, struct bp *bp, int build)
 {
     struct plchrstr *pcp = &plchr[(int)pp->pln_type];
-    int mult, cost, eff;
+    int mult, cost, eff_lost;
 
     if (build == 1) {
        if (!pp->pln_off && np->nat_money >= 0)
@@ -104,18 +103,14 @@ upd_plane(struct plnstr *pp, int etus,
            mult = 2;
        cost = -(mult * etus * MIN(0.0, pcp->pl_cost * money_plane));
        if (np->nat_money < cost && !player->simulation) {
-           if ((eff = pp->pln_effic - etus / 5) < PLANE_MINEFF) {
-               wu(0, pp->pln_own,
-                  "%s lost to lack of maintenance\n", prplane(pp));
-               makelost(EF_PLANE, pp->pln_own, pp->pln_uid,
-                        pp->pln_x, pp->pln_y);
-               pp->pln_own = 0;
-               return;
+           eff_lost = etus / 5;
+           if (pp->pln_effic - eff_lost < PLANE_MINEFF)
+               eff_lost = pp->pln_effic - PLANE_MINEFF;
+           if (eff_lost > 0) {
+               wu(0, pp->pln_own, "%s lost %d%% to lack of maintenance\n",
+                  prplane(pp), eff_lost);
+               pp->pln_effic -= eff_lost;
            }
-           wu(0, pp->pln_own,
-              "%s lost %d%% to lack of maintenance\n",
-              prplane(pp), pp->pln_effic - eff);
-           pp->pln_effic = eff;
        } else {
            np->nat_money -= cost;
        }
@@ -147,12 +142,10 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
            return;
        if (carrier->shp_off)
            return;
-       if ((carrier->shp_own != pp->pln_own) &&
-           (getrel(getnatp(carrier->shp_own), pp->pln_own) != ALLIED))
+       if (relations_with(carrier->shp_own, pp->pln_own) != ALLIED)
            return;
     } else {
-       if ((sp->sct_own != pp->pln_own) &&
-           (getrel(getnatp(sp->sct_own), pp->pln_own) != ALLIED))
+       if (relations_with(sp->sct_own, pp->pln_own) != ALLIED)
            return;
     }
 
@@ -168,7 +161,7 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
     if (!player->simulation)
        avail = sp->sct_avail * 100;
     else
-       avail = gt_bg_nmbr(bp, sp, I_MAX + 1) * 100;
+       avail = bp_get_avail(bp, sp) * 100;
     if (carrier)
        avail += etus * carrier->shp_item[I_MILIT] / 2;
 
@@ -182,8 +175,8 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
        delta = 100 - pp->pln_effic;
 
     memset(mvec, 0, sizeof(mvec));
-    mvec[I_MILIT] =  pcp->pl_crew;
-    mvec[I_LCM] =  pcp->pl_lcm;
+    mvec[I_MILIT] = pcp->pl_crew;
+    mvec[I_LCM] = pcp->pl_lcm;
     mvec[I_HCM] = pcp->pl_hcm;
     build = get_materials(sp, bp, mvec, delta);
 
@@ -198,14 +191,14 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
     if (!player->simulation)
        avail = (sp->sct_avail * 100 - used) / 100;
     else
-       avail = (gt_bg_nmbr(bp, sp, I_MAX + 1) * 100 - used) / 100;
+       avail = (bp_get_avail(bp, sp) * 100 - used) / 100;
 
     if (avail < 0)
        avail = 0;
     if (!player->simulation)
        sp->sct_avail = avail;
     else
-       pt_bg_nmbr(bp, sp, I_MAX + 1, avail);
+       bp_put_avail(bp, sp, avail);
 
     if (sp->sct_type != SCT_AIRPT)
        build /= 3;