]> git.pond.sub.org Git - empserver/commitdiff
power: Include nukes in power factor, like other units
authorMarkus Armbruster <armbru@pond.sub.org>
Sat, 28 May 2016 05:42:36 +0000 (07:42 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Aug 2017 17:59:55 +0000 (19:59 +0200)
Building nukes makes you rate *lower* on the power chart, because the
power factor ignores nukes.  Fix that.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
info/power.t
src/lib/commands/powe.c

index a455f90a7c420b6dac2a32c4825bec864b05ac6d..d9a5f9ca9e3b85ccc5be9a81178abfca426f417e 100644 (file)
@@ -72,7 +72,7 @@ power factor = (  power value of money
                 + power value of commodities in sectors
                 + power value of commodities loaded on ships and land units)
                * (20 + nation tech level) / 500
-             + power value of ships, planes and land units
+             + power value of ships, planes, land units and nukes
                * (20 + their tech level) / 500
 .FI
 .s1
@@ -80,8 +80,8 @@ The power value of money is dollars / 100.
 .s1
 The power value of a sector is efficiency / 10.
 .s1
-The power value of a ship, plane or land unit is the power value of
-the materials and money needed to build * efficiency / 100.
+The power value of a ship, plane, land unit or nuke is the power value
+of the materials and money needed to build * efficiency / 100.
 .s1
 The power value of commodities is amount * type factor.  \*Qshow
 item\*U shows the type factor in column \*Qpower\*U.
index ae6e0ee1e5c4a7ea63d3ba9c40c9f331d0f7f287..f5585552023b637615fe1c3d27ce4be9bcd8656b 100644 (file)
@@ -41,6 +41,7 @@
 #include "commands.h"
 #include "item.h"
 #include "land.h"
+#include "nuke.h"
 #include "optlist.h"
 #include "plane.h"
 #include "power.h"
@@ -230,6 +231,8 @@ gen_power(struct powstr *powbuf, int save)
     struct mchrstr *mcp;
     struct lndstr land;
     struct lchrstr *lcp;
+    struct nukstr nuke;
+    struct nchrstr *ncp;
     struct nstr_item ni;
     struct nstr_sect ns;
     struct natstr *natp;
@@ -282,6 +285,16 @@ gen_power(struct powstr *powbuf, int save)
                                               pcp->pl_mat, pcp->pl_cost);
        pow->p_planes += 1.0;
     }
+    snxtitem_all(&ni, EF_NUKE);
+    while (nxtitem(&ni, &nuke)) {
+       if (nuke.nuk_own == 0)
+           continue;
+       ncp = &nchr[nuke.nuk_type];
+       pow = &powbuf[nuke.nuk_own];
+       upower[nuke.nuk_own] += empunit_power(nuke.nuk_effic,
+                                             nuke.nuk_tech,
+                                             ncp->n_mat, ncp->n_cost);
+    }
     for (i = 1; NULL != (natp = getnatp(i)); i++) {
        pow = &powbuf[i];
        pow->p_nation = i;