* 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"
#include "prototypes.h"
#include "sect.h"
-static int nat_cap(int);
-
int
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, §)) {
- 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;
}