]> git.pond.sub.org Git - empserver/commitdiff
(pchrstr, pchr_ca, pchr, sctstr, dchr_ca, dchr): Replace pchrstr
authorMarkus Armbruster <armbru@pond.sub.org>
Fri, 2 Jun 2006 05:35:54 +0000 (05:35 +0000)
committerMarkus Armbruster <armbru@pond.sub.org>
Fri, 2 Jun 2006 05:35:54 +0000 (05:35 +0000)
member p_effic by sctstr member d_peffic.  Tables updated.
(show_sect_capab): Adapted.
(prod_eff): Adapted; requires changing first parameter to sector type.
Callers changed.
(P_MDUST): Remove, because pchr[P_MDUST] now identical to
pchr[P_DUST].

include/product.h
include/prototypes.h
include/sect.h
src/lib/commands/prod.c
src/lib/global/nsc.c
src/lib/global/product.c
src/lib/global/sect.c
src/lib/subs/show.c
src/lib/update/produce.c
src/lib/update/ship.c

index 967498524cfc306ce1e986c51b4c1588e1f13993..18c93a85a7e59d0b018ce20309f154a00eba976b 100644 (file)
@@ -54,7 +54,6 @@ struct pchrstr {
     int p_nlndx;               /* index (NAT_?LEV) affecting production */
     int p_nlmin;               /* minimum lvl required */
     int p_nllag;               /* lag, mul by (lvl-nlmin)/(lvl-nlmin+nllag) */
-    int p_effic;               /* process efficiency, mult by p_effic/100 */
     char *p_name;              /* name of product */
     char *p_sname;             /* short (7 char or less) name of product */
 };
@@ -74,8 +73,7 @@ struct pchrstr {
 #define        P_ELEV  13
 #define        P_HLEV  14
 #define P_URAN 15
-#define P_MDUST        16
 
-extern struct pchrstr pchr[P_MDUST + 2];
+extern struct pchrstr pchr[P_URAN + 2];
 
 #endif
index 40fe6a3493fce5b2121ba2a1903938a1aad55f6d..a62d993b13d6ae88f54f4e8d0e2525e68bdbff9c 100644 (file)
@@ -780,7 +780,7 @@ extern int bank_income(struct sctstr *, int);
 /* produce.c */
 extern int produce(struct natstr *, struct sctstr *, short *, int, int,
                   int, int *, int *);
-extern double prod_eff(struct pchrstr *, float);
+extern double prod_eff(int, float);
 /* removewants.c */
 extern int update_removewants(void);
 /* revolt.c */
index a932fda679f5404fa0b41606195adb23bd003e12..d75b7c6868e49513382106bb91b285f852d17067 100644 (file)
@@ -99,6 +99,7 @@ struct dchrstr {
     unsigned char d_uid;
     char d_mnem;               /* map symbol */
     int d_prd;                 /* product type */
+    int d_peffic;              /* process efficiency, in percent */
     int d_mcst;                        /* movement cost */
     d_navigation d_nav;                /* navigation capability */
     i_packing d_pkg;           /* type of packaging in these sects */
index 54038ba7ad6f2d021938a4075460b98ab3370468..2476b78a519ab2c5633c24e458aedc1b496600ab 100644 (file)
@@ -206,7 +206,7 @@ prod(void)
        /*
         * production effic.
         */
-       prodeff = prod_eff(pp, natp->nat_level[pp->p_nlndx]);
+       prodeff = prod_eff(type, natp->nat_level[pp->p_nlndx]);
        /*
         * raw material limit
         */
index f01147c213eeaa1c514380da8e921078e10010e3..953b157c4a775d8908d2ab5045ff94220dc48338 100644 (file)
@@ -114,7 +114,6 @@ struct castr pchr_ca[] = {
     {NSC_INT, 0, 0, offsetof(struct pchrstr, p_nlndx), "nlndx", EF_LEVEL},
     {NSC_INT, 0, 0, offsetof(struct pchrstr, p_nlmin), "nlmin", EF_BAD},
     {NSC_INT, 0, 0, offsetof(struct pchrstr, p_nllag), "nllag", EF_BAD},
-    {NSC_INT, 0, 0, offsetof(struct pchrstr, p_effic), "effic", EF_BAD},
     {NSC_NOTYPE, 0, 0, 0, NULL, EF_BAD}
 };
 
@@ -172,6 +171,7 @@ struct castr dchr_ca[] = {
     {NSC_STRINGY, NSC_CONST, 1, offsetof(struct dchrstr, d_mnem), "mnem",
      EF_BAD},
     {NSC_INT, 0, 0, offsetof(struct dchrstr, d_prd), "prd", EF_PRODUCT},
+    {NSC_INT, 0, 0, offsetof(struct dchrstr, d_peffic), "effic", EF_BAD},
     {NSC_INT, 0, 0, offsetof(struct dchrstr, d_mcst), "mcst", EF_BAD},
     {NSC_SITYPE(d_navigation), 0, 0, offsetof(struct dchrstr, d_nav), "nav",
      EF_SECTOR_NAVIGATION},
index d54400e4ebdbbc35378f070bceea6a4b1ae007b1..5d263256cbe8e2b7285ee73190326f7ad5c1ed66 100644 (file)
 struct pchrstr pchr[] = {
 /*       level      cost    nrndx nrdep nlndx   nlmin nllag effic  sname name */
     {0, {I_NONE, I_NONE, I_NONE}, {0, 0, 0},
-     I_NONE, 0, 0, 0, 0, 0, 0, 0, 0,
+     I_NONE, 0, 0, 0, 0, 0, 0, 0,
      "unused", "",},
     {P_SHELL, {I_LCM, I_HCM, I_NONE}, {2, 1, 0},
-     I_SHELL, -1, 3, 0, 0, NAT_TLEV, 20, 10, 100,
+     I_SHELL, -1, 3, 0, 0, NAT_TLEV, 20, 10,
      "shells", "shells",},
     {P_GUN, {I_OIL, I_LCM, I_HCM}, {1, 5, 10},
-     I_GUN, -1, 30, 0, 0, NAT_TLEV, 20, 10, 100,
+     I_GUN, -1, 30, 0, 0, NAT_TLEV, 20, 10,
      "guns", "guns",},
     {P_PETROL, {I_OIL, I_NONE, I_NONE}, {1, 0, 0},
-     I_PETROL, -1, 1, 0, 0, NAT_TLEV, 20, 10, 1000,
+     I_PETROL, -1, 1, 0, 0, NAT_TLEV, 20, 10,
      "petrol", "petrol",},
     {P_IRON, {I_NONE, I_NONE, I_NONE}, {0, 0, 0},
-     I_IRON, -1, 0, offsetof(struct sctstr, sct_min), 0, -1, 0, 0, 100,
+     I_IRON, -1, 0, offsetof(struct sctstr, sct_min), 0, -1, 0, 0,
      "iron ore", "iron",},
     {P_DUST, {I_NONE, I_NONE, I_NONE}, {0, 0, 0},
-     I_DUST, -1, 0, offsetof(struct sctstr, sct_gmin), 20, -1, 0, 0, 100,
+     I_DUST, -1, 0, offsetof(struct sctstr, sct_gmin), 20, -1, 0, 0,
      "gold dust", "dust",},
     {P_BAR, {I_DUST, I_NONE, I_NONE}, {5, 0, 0},
-     I_BAR, -1, 10, 0, 0, -1, 0, 0, 100,
+     I_BAR, -1, 10, 0, 0, -1, 0, 0,
      "gold bars", "bars",},
     {P_FOOD, {I_NONE, I_NONE, I_NONE}, {0, 0, 0},
-     I_FOOD, -1, 0, offsetof(struct sctstr, sct_fertil), 0, NAT_TLEV, -10, 10, 900,
+     I_FOOD, -1, 0, offsetof(struct sctstr, sct_fertil), 0, NAT_TLEV, -10, 10,
      "food", "food",},
     {P_OIL, {I_NONE, I_NONE, I_NONE}, {0, 0, 0},
-     I_OIL, -1, 0, offsetof(struct sctstr, sct_oil), 10, NAT_TLEV, -10, 10, 100,
+     I_OIL, -1, 0, offsetof(struct sctstr, sct_oil), 10, NAT_TLEV, -10, 10,
      "oil", "oil",},
     {P_LCM, {I_IRON, I_NONE, I_NONE}, {1, 0, 0},
-     I_LCM, -1, 0, 0, 0, NAT_TLEV, -10, 10, 100,
+     I_LCM, -1, 0, 0, 0, NAT_TLEV, -10, 10,
      "light construction materials", "lcm",},
     {P_HCM, {I_IRON, I_NONE, I_NONE}, {2, 0, 0},
-     I_HCM, -1, 0, 0, 0, NAT_TLEV, -10, 10, 100,
+     I_HCM, -1, 0, 0, 0, NAT_TLEV, -10, 10,
      "heavy construction materials", "hcm",},
     {P_TLEV, {I_DUST, I_OIL, I_LCM}, {1, 5, 10},
-     I_NONE, NAT_TLEV, 300, 0, 0, NAT_ELEV, 5, 10, 100,
+     I_NONE, NAT_TLEV, 300, 0, 0, NAT_ELEV, 5, 10,
      "technological breakthroughs", "tech",},
     {P_RLEV, {I_DUST, I_OIL, I_LCM}, {1, 5, 10},
-     I_NONE, NAT_RLEV, 90, 0, 0, NAT_ELEV, 5, 10, 100,
+     I_NONE, NAT_RLEV, 90, 0, 0, NAT_ELEV, 5, 10,
      "medical discoveries", "medical",},
     {P_ELEV, {I_LCM, I_NONE, I_NONE}, {1, 0, 0},
-     I_NONE, NAT_ELEV, 9, 0, 0, -1, 0, 0, 100,
+     I_NONE, NAT_ELEV, 9, 0, 0, -1, 0, 0,
      "a class of graduates", "edu",},
     {P_HLEV, {I_LCM, I_NONE, I_NONE}, {1, 0, 0},
-     I_NONE, NAT_HLEV, 9, 0, 0, -1, 0, 0, 100,
+     I_NONE, NAT_HLEV, 9, 0, 0, -1, 0, 0,
      "happy strollers", "happy",},
     {P_URAN, {I_NONE, I_NONE, I_NONE}, {0, 0, 0},
-     I_RAD, -1, 2, offsetof(struct sctstr, sct_uran), 35, NAT_TLEV, 40, 10, 100,
+     I_RAD, -1, 2, offsetof(struct sctstr, sct_uran), 35, NAT_TLEV, 40, 10,
      "radioactive materials", "rad",},
-    {P_MDUST, {I_NONE, I_NONE, I_NONE}, {0, 0, 0},
-     I_DUST, -1, 0, offsetof(struct sctstr, sct_gmin), 20, -1, 0, 0, 75,
-     "gold dust", "dust",},
     {0, {I_NONE, I_NONE, I_NONE}, {0, 0, 0},
-     I_NONE, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL,}
+     I_NONE, 0, 0, 0, 0, 0, 0, 0, NULL, NULL,}
 };
index 21d3dff8fc402c3f26ce7f90120d1cab4851b495..818b25e17c4124229d633879cf66410af0f0c1ba 100644 (file)
 #include "product.h"
 
 struct dchrstr bigcity_dchr = {
-    SCT_CAPIT,   'c',       0, 2, NAV_CANAL, UPKG, 1.0, 2.0,   30, 0, 10, 1, 2, 999, "city"
+    SCT_CAPIT,   'c',       0,  0, 2, NAV_CANAL, UPKG, 1.0, 2.0,   30, 0, 10, 1, 2, 999, "city"
 };
 
 struct dchrstr dchr[] = {
-    /*          mnem prd     mcst  flg       pkg  ostr dstr value  $ bld lcm hcm maxpop name */
-    {SCT_WATER,  '.',       0, 0,  NAVOK,    NPKG, 0.0,  0.0,   0, -1, 0, 0, 0,   0, "sea"},
-    {SCT_MOUNT,  '^', P_MDUST, 25, NAV_NONE, NPKG, 1.0,  4.0,   5, -1, 1, 0, 0,  99, "mountain"},
-    {SCT_SANCT,  's',       0, 0,  NAV_NONE, NPKG, 0.0, 99.0, 127, -1, 0, 0, 0, 999, "sanctuary"},
-    {SCT_WASTE,  '\\',      0, 0,  NAV_NONE, NPKG, 0.0, 99.0,   0, -1, 0, 0, 0,   0, "wasteland"},
-    {SCT_RURAL,  '-',       0, 3,  NAV_NONE, NPKG, 1.0,  2.0,   1,  0, 0, 0, 0, 999, "wilderness"},
-    {SCT_CAPIT,  'c',       0, 2,  NAV_NONE, NPKG, 1.0,  2.0,  30,  0, 1, 0, 0, 999, "capital"},
-    {SCT_URAN,   'u', P_URAN,  2,  NAV_NONE, NPKG, 1.0,  2.0,  15,  0, 1, 0, 0, 999, "uranium mine"},
-    {SCT_PARK,   'p', P_HLEV,  2,  NAV_NONE, NPKG, 1.0,  1.5,   5,  0, 1, 0, 0, 999, "park"},
-    {SCT_ARMSF,  'd', P_GUN,   2,  NAV_NONE, NPKG, 1.0,  1.5,   7,  0, 1, 0, 0, 999, "defense plant"},
-    {SCT_AMMOF,  'i', P_SHELL, 2,  NAV_NONE, NPKG, 1.0,  1.5,   6,  0, 1, 0, 0, 999, "shell industry"},
-    {SCT_MINE,   'm', P_IRON,  2,  NAV_NONE, NPKG, 1.0,  2.0,   5,  0, 1, 0, 0, 999, "mine"},
-    {SCT_GMINE,  'g', P_DUST,  2,  NAV_NONE, NPKG, 1.0,  2.0,   8,  0, 1, 0, 0, 999, "gold mine"},
-    {SCT_HARBR,  'h',       0, 2,  NAV_02,   WPKG, 1.0,  1.5,  12,  0, 1, 0, 0, 999, "harbor"},
-    {SCT_WAREH,  'w',      0, 2,  NAV_NONE, WPKG, 1.0,  1.5,   7,  0, 1, 0, 0, 999, "warehouse"},
-    {SCT_AIRPT,  '*',      0, 2,  NAV_NONE, NPKG, 1.0,  1.25, 12,  0, 1, 0, 0, 999, "airfield"},
-    {SCT_AGRI,   'a', P_FOOD,  2,  NAV_NONE, NPKG, 1.0,  1.5,   2,  0, 1, 0, 0, 999, "agribusiness"},
-    {SCT_OIL,    'o', P_OIL,   2,  NAV_NONE, NPKG, 1.0,  1.5,   5,  0, 1, 0, 0, 999, "oil field"},
-    {SCT_LIGHT,  'j', P_LCM,   2,  NAV_NONE, NPKG, 1.0,  1.5,   3,  0, 1, 0, 0, 999, "light manufacturing"},
-    {SCT_HEAVY,  'k', P_HCM,   2,  NAV_NONE, NPKG, 1.0,  1.5,   4,  0, 1, 0, 0, 999, "heavy manufacturing"},
-    {SCT_FORTR,  'f',       0, 2,  NAV_NONE, NPKG, 2.0,  4.0,  10,  0, 5, 0, 1, 999, "fortress"},
-    {SCT_TECH,   't', P_TLEV,  2,  NAV_NONE, NPKG, 1.0,  1.5,  10,  0, 1, 0, 0, 999, "technical center"},
-    {SCT_RSRCH,  'r', P_RLEV,  2,  NAV_NONE, NPKG, 1.0,  1.5,   9,  0, 1, 0, 0, 999, "research lab"},
-    {SCT_NUKE,   'n',       0, 2,  NAV_NONE, NPKG, 1.0,  2.0,  10,  0, 1, 0, 0, 999, "nuclear plant"},
-    {SCT_LIBR,   'l', P_ELEV,  2,  NAV_NONE, NPKG, 1.0,  1.5,   4,  0, 1, 0, 0, 999, "library/school"},
-    {SCT_HIWAY,  '+',      0, 1,  NAV_NONE, NPKG, 1.0,  1.0,   3,  0, 1, 0, 0, 999, "highway"},
-    {SCT_RADAR,  ')',      0, 2,  NAV_NONE, NPKG, 1.0,  1.5,   4,  0, 1, 0, 0, 999, "radar installation"},
-    {SCT_HEADQ,  '!',      0, 2,  NAV_NONE, NPKG, 1.0,  1.5,  12,  0, 1, 0, 0, 999, "headquarters"},
-    {SCT_BHEAD,  '#',      0, 1 NAV_NONE, NPKG, 1.0,  1.5,   4,  0, 1, 0, 0, 999, "bridge head"},
-    {SCT_BSPAN,  '=',      0, 1 NAV_60,   NPKG, 1.0,  1.0,   5, -1, 1, 0, 0, 999, "bridge span"},
-    {SCT_BANK,   'b', P_BAR,   2,  NAV_NONE, BPKG, 1.0,  2.25, 10,  0, 1, 0, 0, 999, "bank"},
-    {SCT_REFINE, '%', P_PETROL, 2, NAV_NONE, NPKG, 1.0,  1.5,   2,  0, 1, 0, 0, 999, "refinery"},
-    {SCT_ENLIST, 'e',      0, 2,  NAV_NONE, NPKG, 1.0,  2.0,   7,  0, 1, 0, 0, 999, "enlistment center"},
-    {SCT_PLAINS, '~',      0, 2,  NAV_NONE, NPKG, 1.0,  1.5,   1, -1, 1, 0, 0,  49, "plains"},
-    {SCT_BTOWER, '@',      0, 1,  NAV_NONE, NPKG, 1.0,  1.5,   4, -1, 1, 0, 0, 999, "bridge tower"},
-    {0, 0, 0, 0, NAV_NONE, IPKG, 0, 0, 0, 0, 0, 0, 0, 0, NULL},
+    /*          mnem  prd peffic mcst  flg       pkg  ostr dstr value  $ bld lcm hcm maxpop name */
+    {SCT_WATER,  '.',       0,   0, 0, NAVOK,    NPKG, 0.0,  0.0,   0, -1, 0, 0, 0,   0, "sea"},
+    {SCT_MOUNT,  '^', P_DUST,   75, 25, NAV_NONE, NPKG, 1.0,  4.0,   5, -1, 1, 0, 0,  99, "mountain"},
+    {SCT_SANCT,  's',       0, 100, 0, NAV_NONE, NPKG, 0.0, 99.0, 127, -1, 0, 0, 0, 999, "sanctuary"},
+    {SCT_WASTE,  '\\',      0,   0, 0, NAV_NONE, NPKG, 0.0, 99.0,   0, -1, 0, 0, 0,   0, "wasteland"},
+    {SCT_RURAL,  '-',       0,   0, 3, NAV_NONE, NPKG, 1.0,  2.0,   1,  0, 0, 0, 0, 999, "wilderness"},
+    {SCT_CAPIT,  'c',       0,   0, 2, NAV_NONE, NPKG, 1.0,  2.0,  30,  0, 1, 0, 0, 999, "capital"},
+    {SCT_URAN,   'u', P_URAN,  100, 2, NAV_NONE, NPKG, 1.0,  2.0,  15,  0, 1, 0, 0, 999, "uranium mine"},
+    {SCT_PARK,   'p', P_HLEV,  100, 2, NAV_NONE, NPKG, 1.0,  1.5,   5,  0, 1, 0, 0, 999, "park"},
+    {SCT_ARMSF,  'd', P_GUN,   100, 2, NAV_NONE, NPKG, 1.0,  1.5,   7,  0, 1, 0, 0, 999, "defense plant"},
+    {SCT_AMMOF,  'i', P_SHELL, 100, 2, NAV_NONE, NPKG, 1.0,  1.5,   6,  0, 1, 0, 0, 999, "shell industry"},
+    {SCT_MINE,   'm', P_IRON,  100, 2, NAV_NONE, NPKG, 1.0,  2.0,   5,  0, 1, 0, 0, 999, "mine"},
+    {SCT_GMINE,  'g', P_DUST,  100, 2, NAV_NONE, NPKG, 1.0,  2.0,   8,  0, 1, 0, 0, 999, "gold mine"},
+    {SCT_HARBR,  'h',       0,   0, 2, NAV_02,   WPKG, 1.0,  1.5,  12,  0, 1, 0, 0, 999, "harbor"},
+    {SCT_WAREH,  'w',      0,   0, 2, NAV_NONE, WPKG, 1.0,  1.5,   7,  0, 1, 0, 0, 999, "warehouse"},
+    {SCT_AIRPT,  '*',      0,   0, 2, NAV_NONE, NPKG, 1.0,  1.25, 12,  0, 1, 0, 0, 999, "airfield"},
+    {SCT_AGRI,   'a', P_FOOD,  900, 2, NAV_NONE, NPKG, 1.0,  1.5,   2,  0, 1, 0, 0, 999, "agribusiness"},
+    {SCT_OIL,    'o', P_OIL,   100, 2, NAV_NONE, NPKG, 1.0,  1.5,   5,  0, 1, 0, 0, 999, "oil field"},
+    {SCT_LIGHT,  'j', P_LCM,   100, 2, NAV_NONE, NPKG, 1.0,  1.5,   3,  0, 1, 0, 0, 999, "light manufacturing"},
+    {SCT_HEAVY,  'k', P_HCM,   100, 2, NAV_NONE, NPKG, 1.0,  1.5,   4,  0, 1, 0, 0, 999, "heavy manufacturing"},
+    {SCT_FORTR,  'f',       0,   0, 2, NAV_NONE, NPKG, 2.0,  4.0,  10,  0, 5, 0, 1, 999, "fortress"},
+    {SCT_TECH,   't', P_TLEV,  100, 2, NAV_NONE, NPKG, 1.0,  1.5,  10,  0, 1, 0, 0, 999, "technical center"},
+    {SCT_RSRCH,  'r', P_RLEV,  100, 2, NAV_NONE, NPKG, 1.0,  1.5,   9,  0, 1, 0, 0, 999, "research lab"},
+    {SCT_NUKE,   'n',       0,   0, 2, NAV_NONE, NPKG, 1.0,  2.0,  10,  0, 1, 0, 0, 999, "nuclear plant"},
+    {SCT_LIBR,   'l', P_ELEV,  100, 2, NAV_NONE, NPKG, 1.0,  1.5,   4,  0, 1, 0, 0, 999, "library/school"},
+    {SCT_HIWAY,  '+',      0,   0, 1, NAV_NONE, NPKG, 1.0,  1.0,   3,  0, 1, 0, 0, 999, "highway"},
+    {SCT_RADAR,  ')',      0, 100, 2, NAV_NONE, NPKG, 1.0,  1.5,   4,  0, 1, 0, 0, 999, "radar installation"},
+    {SCT_HEADQ,  '!',      0, 100, 2, NAV_NONE, NPKG, 1.0,  1.5,  12,  0, 1, 0, 0, 999, "headquarters"},
+    {SCT_BHEAD,  '#',      0, 100, 1, NAV_NONE, NPKG, 1.0,  1.5,   4,  0, 1, 0, 0, 999, "bridge head"},
+    {SCT_BSPAN,  '=',      0, 100, 1, NAV_60,   NPKG, 1.0,  1.0,   5, -1, 1, 0, 0, 999, "bridge span"},
+    {SCT_BANK,   'b', P_BAR,   100, 2, NAV_NONE, BPKG, 1.0,  2.25, 10,  0, 1, 0, 0, 999, "bank"},
+    {SCT_REFINE, '%', P_PETROL, 1000, 2, NAV_NONE, NPKG, 1.0, 1.5,  2,  0, 1, 0, 0, 999, "refinery"},
+    {SCT_ENLIST, 'e',      0,   0, 2, NAV_NONE, NPKG, 1.0,  2.0,   7,  0, 1, 0, 0, 999, "enlistment center"},
+    {SCT_PLAINS, '~',      0,   0, 2, NAV_NONE, NPKG, 1.0,  1.5,   1, -1, 1, 0, 0,  49, "plains"},
+    {SCT_BTOWER, '@',      0,   0, 1, NAV_NONE, NPKG, 1.0,  1.5,   4, -1, 1, 0, 0, 999, "bridge tower"},
+    {0, 0, 0, 0, 0, NAV_NONE, IPKG, 0, 0, 0, 0, 0, 0, 0, 0, NULL},
 };
 
 struct sctintrins intrchr[] = {
index 68667c2ba8cf09ea544b6f6dd8dc28e500903bd4..5a4ca1b43e761dea50b1be213e5c614d9effeda8 100644 (file)
@@ -604,7 +604,7 @@ show_sect_capab(int foo)
           tmpstr,
           pchr[j].p_nlmin,
           pchr[j].p_nllag,
-          pchr[j].p_effic, pchr[j].p_cost, pchr[j].p_nrdep,
+          dchr[x].d_peffic, pchr[j].p_cost, pchr[j].p_nrdep,
           pchr[j].p_type != I_NONE ? ichr[pchr[j].p_type].i_mnem : ' ');
 
        pr("\n");
index 939fc0ca77383476ae0cd811b3488b0a392dc967..4f6ea82220af29c3d1f46c39b947e697827cb46e 100644 (file)
@@ -100,7 +100,7 @@ produce(struct natstr *np, struct sctstr *sp, short *vec, int work,
        material_consume = worker_limit;
     if (material_consume == 0)
        return 0;
-    prodeff = prod_eff(product, np->nat_level[product->p_nlndx]);
+    prodeff = prod_eff(desig, np->nat_level[product->p_nlndx]);
     if (prodeff <= 0.0 && !player->simulation) {
        wu(0, sp->sct_own,
           "%s level too low to produce in %s (need %d)\n",
@@ -219,14 +219,16 @@ materials_charge(struct pchrstr *pp, short *vec, int count)
 }
 
 /*
- * Return level p.e. for product PP.
+ * Return level p.e. for sector type TYPE.
  * Zero means level is too low for production.
  * LEVEL is the affecting production of PP; it must match PP->p_nlndx.
  */
 double
-prod_eff(struct pchrstr *pp, float level)
+prod_eff(int type, float level)
 {
     double level_p_e;
+    struct dchrstr *dp = &dchr[type];
+    struct pchrstr *pp = &pchr[dp->d_prd];
 
     if (pp->p_nlndx < 0)
        level_p_e = 1.0;
@@ -240,5 +242,5 @@ prod_eff(struct pchrstr *pp, float level)
        level_p_e = delta / (delta + pp->p_nllag);
     }
 
-    return level_p_e * pp->p_effic * 0.01;
+    return level_p_e * dp->d_peffic * 0.01;
 }
index 6e018ef728571ecc85f965231c973e6cbc69d74e..5c2f5a8e04792ded20dc6704e5ae276f7f938d54 100644 (file)
@@ -167,7 +167,7 @@ upd_ship(struct shpstr *sp, int etus,
 
            /* produce oil */
            if ((mp->m_flags & M_OIL) && sectp->sct_type == SCT_WATER) {
-               product = &pchr[P_OIL];
+               product = &pchr[dchr[SCT_OIL].d_prd];
                oil_gained = roundavg(total_work(100, etus,
                                                 sp->shp_item[I_CIVIL],
                                                 sp->shp_item[I_MILIT],
@@ -175,7 +175,7 @@ upd_ship(struct shpstr *sp, int etus,
                                                 ITEM_MAX)
                                      * sp->shp_effic / 100.0
                                      * sectp->sct_oil / 100.0
-                                     * prod_eff(product, sp->shp_tech));
+                                     * prod_eff(SCT_OIL, sp->shp_tech));
                max_oil = mp->m_item[I_OIL];
                if (sp->shp_item[I_OIL] + oil_gained > max_oil)
                    oil_gained = max_oil - sp->shp_item[I_OIL];
@@ -192,7 +192,6 @@ upd_ship(struct shpstr *sp, int etus,
            }
            /* produce fish */
            if ((mp->m_flags & M_FOOD) && sectp->sct_type == SCT_WATER) {
-               product = &pchr[P_FOOD];
                sp->shp_item[I_FOOD]
                    += roundavg(total_work(100, etus,
                                           sp->shp_item[I_CIVIL],
@@ -201,7 +200,7 @@ upd_ship(struct shpstr *sp, int etus,
                                           ITEM_MAX)
                                * sp->shp_effic / 100.0
                                * sectp->sct_fertil / 100.0
-                               * prod_eff(product, sp->shp_tech));
+                               * prod_eff(SCT_AGRI, sp->shp_tech));
            }
            /* feed */
            if ((n = feed_ship(sp, etus)) > 0) {