]> git.pond.sub.org Git - empserver/blobdiff - src/lib/update/nat.c
Update copyright notice
[empserver] / src / lib / update / nat.c
index 0780746f6fff0fa121368fa37741690a136309a2..6bf09c85ab2c4632546fc8cb087038c71fc12bdc 100644 (file)
@@ -1,6 +1,6 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1986-2006, 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.
  *
  *  ---
  *
 #include <config.h>
 
 #include <math.h>
-#include "misc.h"
-#include "sect.h"
-#include "nat.h"
+#include "budg.h"
+#include "game.h"
 #include "item.h"
-#include "file.h"
-#include "xy.h"
-#include "optlist.h"
 #include "update.h"
-#include "subs.h"
-#include "budg.h"
 
 /*
  * hap and edu avg mean that the weight on current happiness is
@@ -72,8 +66,8 @@ static void share_incr(double *, double *);
  * They are changed later in the limit_level routine.
  */
                        /*tech   res   edu   hap */
-float level_easy[4] = { 0.75, 0.75, 5.00, 5.00 };
-float level_log[4] = { 1.75, 2.00, 4.00, 6.00 };
+static float level_easy[4] = { 0.75, 0.75, 5.00, 5.00 };
+static float level_log[4] = { 1.75, 2.00, 4.00, 6.00 };
 
 float levels[MAXNOC][4];
 
@@ -140,6 +134,7 @@ prod_nat(int etu)
     struct natstr *cnp;
 
     for (n = 0; NULL != (np = getnatp(n)); n++) {
+       grant_btus(np, game_reset_tick(&np->nat_access));
        if (np->nat_stat < STAT_ACTIVE)
            continue;
        /*
@@ -180,7 +175,7 @@ prod_nat(int etu)
        levels[n][NAT_RLEV] =
            limit_level(levels[n][NAT_RLEV] / 1, NAT_RLEV, 0) * 1;
        wu((natid)0, n,
-          "total pop is %ld, yielding %4.2f hap, %4.2f edu\n",
+          "total pop was %ld, yielding %4.2f hap, %4.2f edu\n",
           pop - 1, hap, edu);
     }
     if (ally_factor > 0.0)
@@ -241,21 +236,13 @@ share_incr(double *res, double *tech)
 
     for (i = 0; NULL != (np = getnatp(i)); i++) {
        res[i] = tech[i] = 0.0;
-       if (np->nat_stat == STAT_UNUSED)
-           continue;
-       if (np->nat_stat == STAT_GOD)
-           continue;
-       if (np->nat_stat == STAT_VIS)
+       if (np->nat_stat < STAT_SANCT || np->nat_stat == STAT_GOD)
            continue;
        rnc = tnc = 0;
        for (j = 0; NULL != (other = getnatp(j)); j++) {
            if (j == i)
                continue;
-           if (other->nat_stat == STAT_GOD)
-               continue;
-           if (other->nat_stat == STAT_VIS)
-               continue;
-           if (other->nat_stat == STAT_UNUSED)
+           if (other->nat_stat != STAT_ACTIVE)
                continue;
            if (opt_HIDDEN) {
                if (!getcontact(np, j))
@@ -281,8 +268,6 @@ share_incr(double *res, double *tech)
                }
            }
        }
-       if (rnc == 0 && tnc == 0)
-           continue;
        if (rnc > 0) {
            res[i] /= rnc * ally_factor;
        }