]> git.pond.sub.org Git - empserver/blobdiff - src/lib/commands/nati.c
Update copyright notice
[empserver] / src / lib / commands / nati.c
index bbb84ba78036715625f3000882c81fde228ca83e..3bc9a7d25b4a14bd3d1d931d687ddd8547eedc26 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 "misc.h"
-#include "player.h"
-#include "nat.h"
-#include "sect.h"
-#include "file.h"
-#include "xy.h"
-#include "optlist.h"
 #include "commands.h"
+#include "optlist.h"
 
 int
 nati(void)
 {
     struct natstr *natp;
     struct sctstr sect;
-    float hap;
+    double hap;
     int mil;
     int civ;
     int cnum;
     int poplimit, safepop, uwpop;
     double pfac;
 
-    if (player->argp[1])
-       cnum = natarg(player->argp[1], "for which country? ");
-    else
-       cnum = player->cnum;
-
-    if ((natp = getnatp(cnum)) == 0)
-       return RET_SYN;
+    if (player->argp[1]) {
+       if (!(natp = natargp(player->argp[1], NULL)))
+           return RET_SYN;
+    } else
+       natp = getnatp(player->cnum);
 
+    cnum = natp->nat_cnum;
     if (!player->god && cnum != player->cnum) {
-       pr("Only deities can request a nation "
-          "report for a different country than yourself.\n");
-       return RET_SYN;
+       pr("Only deities can request a nation report for another country.\n");
+       return RET_FAIL;
     }
 
     pr("\n(#%i) %s Nation Report\t", cnum, cname(cnum));
@@ -91,44 +83,29 @@ nati(void)
     pr(" The treasury has $%.2f", (double)natp->nat_money);
     pr("     Military reserves: %ld\n", natp->nat_reserve);
     pr("Education..........%6.2f       Happiness.......%6.2f\n",
-       (double)natp->nat_level[NAT_ELEV],
-       (double)natp->nat_level[NAT_HLEV]);
+       natp->nat_level[NAT_ELEV], natp->nat_level[NAT_HLEV]);
     pr("Technology.........%6.2f       Research........%6.2f\n",
-       (double)natp->nat_level[NAT_TLEV],
-       (double)natp->nat_level[NAT_RLEV]);
+       natp->nat_level[NAT_TLEV], natp->nat_level[NAT_RLEV]);
     pr("Technology factor :%6.2f%%", tfact(cnum, 100.));
 
     if (opt_NO_PLAGUE)
        pfac = 0.0;
     else
-       pfac = ((double)natp->nat_level[NAT_TLEV] + 100.) /
-           ((double)natp->nat_level[NAT_RLEV] + 100.);
+       pfac = (natp->nat_level[NAT_TLEV] + 100.0) /
+           (natp->nat_level[NAT_RLEV] + 100.0);
     pr("     Plague factor : %6.2f%%\n", pfac);
     pr("\n");
 
     poplimit = max_population(natp->nat_level[NAT_RLEV], SCT_MINE, 0);
     pr("Max population : %d\n", poplimit);
 
-    safepop =
-       (int)((double)poplimit / (1.0 + obrate * (double)etu_per_update));
-    uwpop =
-       (int)((double)poplimit / (1.0 + uwbrate * (double)etu_per_update));
-    safepop++;
-    if (((double)safepop * (1.0 + obrate * (double)etu_per_update)) >
-       ((double)poplimit + 0.0000001))
-       safepop--;
-    uwpop++;
-    if (((double)uwpop * (1.0 + uwbrate * (double)etu_per_update)) >
-       ((double)poplimit + 0.0000001))
-       uwpop--;
-
+    safepop = (int)(poplimit / (1.0 + obrate * (double)etu_per_update));
+    uwpop = (int)(poplimit / (1.0 + uwbrate * (double)etu_per_update));
     pr("Max safe population for civs/uws: %d/%d\n", safepop, uwpop);
 
-    hap = ((natp->nat_level[NAT_TLEV] - 40) / 40.0 +
-          natp->nat_level[NAT_ELEV] / 3.0);
-
+    hap = hap_req(natp);
     if (hap > 0.0)
-       pr("Happiness needed is %f\n", hap);
+       pr("Happiness needed is %.2f\n", hap);
     else
        pr("No happiness needed\n");