]> git.pond.sub.org Git - empserver/blobdiff - src/lib/player/init_nats.c
Use the new Empire clock for generating BTUs:
[empserver] / src / lib / player / init_nats.c
index dd681a2c72227d8c5403041459b72640320ac990..6fd2c97887aeacb235ed41bd97e721a4baf00487 100644 (file)
  *  Known contributors to this file:
  *     Dave Pare, 1994
  *     Steve McClure, 2000
+ *     Markus Armbruster, 2007
  */
 
 #include <config.h>
 
 #include "file.h"
+#include "game.h"
 #include "misc.h"
 #include "nat.h"
 #include "optlist.h"
@@ -42,8 +44,6 @@
 #include "prototypes.h"
 #include "sect.h"
 
-static int nat_cap(int);
-
 int
 init_nats(void)
 {
@@ -69,51 +69,8 @@ init_nats(void)
        player->nstat |= MONEY;
        player->broke = 0;
     }
-    if (nat_cap(np->nat_btu) < 0)
-       return -1;
-    return 0;
-}
-
-static int
-nat_cap(int btu)
-{
-    struct sctstr sect;
-    struct natstr *np;
-    double d, eff;
-    double civ;
-    int delta;
-
-    np = getnatp(player->cnum);
-    if (!getsect(np->nat_xcap, np->nat_ycap, &sect)) {
-       CANT_HAPPEN("read cap");
-       return -1;
-    }
-    if (np->nat_stat >= STAT_ACTIVE) {
-       if (influx(np))
-           player->nstat &= ~CAP;
-       else
-           player->nstat |= CAP;
-    }
-    delta = 0;
-    if ((player->nstat & CAP) || player->god) {
-       d = (double)(player->curup - np->nat_last_login) / s_p_etu;
-       if (d > 336.0)
-           d = 336.0;
-       civ = sect.sct_item[I_CIVIL];
-       if (civ > 999)
-           civ = 999;
-       eff = sect.sct_effic * sect.sct_work / 100.0;
-       if (eff < 0.5 || sect.sct_type == SCT_MOUNT)
-           eff = 0.5;
-       delta = roundavg(d * civ * eff * btu_build_rate);
-
-       if (delta + btu > max_btus)
-           np->nat_btu = max_btus;
-       else
-           np->nat_btu += delta;
-    }
-    if (np->nat_stat == STAT_VIS)
-       np->nat_btu = max_btus;
+    if (grant_btus(np, game_tick_to_now(&np->nat_access)))
+       player->nstat |= CAP;
     putnat(np);
     return 0;
 }