]> git.pond.sub.org Git - empserver/commitdiff
config: Make work to build sectors configurable
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 5 Jun 2016 20:49:07 +0000 (22:49 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Aug 2017 17:59:58 +0000 (19:59 +0200)
Traditionally, building up 100% takes 100 work.  Make the work to
build configurable, via new sect-chr selector bwork, backed by new
struct dchrstr member d_bwork.  Keep the required work exactly the
same for now.

Tearing down sectors remains four times easier than building.

Clients that hardcode sector build work need to be updated.  Easy,
since build work is now exposed in xdump.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
include/sect.h
src/lib/common/nsc.c
src/lib/global/sect.config
src/lib/subs/show.c
src/lib/update/sect.c
tests/version/journal.log

index b40dcf410e21bee35b53f044a626f17a0c120498..4f68bda638a018a12d752d843811bb296a5f067e 100644 (file)
@@ -114,6 +114,7 @@ struct dchrstr {
     int d_value;               /* resale ("collect") value */
     short d_mat[I_MAX+1];      /* materials to build 100% */
                                /* only I_LCM and I_HCM non-zero */
+    int d_bwork;               /* work to build 100% */
     int d_cost;                        /* cost to build 100% */
     int d_maint;               /* maintenance cost per ETU */
     int d_maxpop;              /* maximum population */
index f5fdee469ce6e5213ac11b6643fd3cac3b0b643b..ddbfda9f68098dfccec5803fed5f22fcca3b142d 100644 (file)
@@ -241,6 +241,7 @@ struct castr dchr_ca[] = {
     {"dstr", fldoff(d_dstr), NSC_FLOAT, 0, NULL, EF_BAD, 0, CA_DUMP},
     {"value", fldoff(d_value), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
     NSC_MVEC(fldoff(d_mat), CA_DUMP_ONLY, CA_DUMP_ONLY, CA_DUMP_ONLY),
+    {"bwork", fldoff(d_bwork), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
     {"cost", fldoff(d_cost), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
     {"maint", fldoff(d_maint), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
     {"maxpop", fldoff(d_maxpop), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
index 8ea8151261fe24318e8d4a1f510d8c7fcc21f1d0..f4354d797d5f05236a6b3ac6eec9a21f715223b2 100644 (file)
 # econfig key custom_tables.
 
 config sect-chr
-uid mnem   prd peff val l_b h_b cost maint name ...
-  0  "."    -1    0   0   0   0    0     0 "sea"
-  1  "^"  dust   75   5   0   0  100     0 "mountain"
-  2  "s"    -1    0 127   0   0    0     0 "sanctuary"
-  3 "\134"  -1    0   0   0   0    0     0 "wasteland"
-  4  "-"    -1    0   1   0   0    0     0 "wilderness"
+uid mnem   prd peff val l_b h_b bwork cost maint name ...
+  0  "."    -1    0   0   0   0     0    0     0 "sea"
+  1  "^"  dust   75   5   0   0   100  100     0 "mountain"
+  2  "s"    -1    0 127   0   0   100    0     0 "sanctuary"
+  3 "\134"  -1    0   0   0   0   100    0     0 "wasteland"
+  4  "-"    -1    0   1   0   0   100    0     0 "wilderness"
 # Uncomment one of the following two.  The second one is for big cities.
-  5  "c"    -1    0  30   0   0  100     1 "capital"
-# 5  "c"    -1    0  30 100 200 1000     1 "city"
-  6  "u"   rad  100  15   0   0  100     0 "uranium mine"
-  7  "p"   hap  100   5   0   0  100     0 "park"
-  8  "d"   gun  100   7   0   0  100     0 "defense plant"
-  9  "i"    sh  100   6   0   0  100     0 "shell industry"
- 10  "m"  iron  100   5   0   0  100     0 "mine"
- 11  "g"  dust  100   8   0   0  100     0 "gold mine"
- 12  "h"    -1    0  12   0   0  100     0 "harbor"
- 13  "w"    -1    0   7   0   0  100     0 "warehouse"
- 14  "*"    -1    0  12   0   0  100     0 "airfield"
- 15  "a"  food  900   2   0   0  100     0 "agribusiness"
- 16  "o"   oil  100   5   0   0  100     0 "oil field"
- 17  "j"   lcm  100   3   0   0  100     0 "light manufacturing"
- 18  "k"   hcm  100   4   0   0  100     0 "heavy manufacturing"
- 19  "f"    -1    0  10   0 100  500     0 "fortress"
- 20  "t"  tech  100  10   0   0  100     0 "technical center"
- 21  "r"   med  100   9   0   0  100     0 "research lab"
- 22  "n"    -1    0  10   0   0  100     0 "nuclear plant"
- 23  "l"   edu  100   4   0   0  100     0 "library/school"
- 24  "+"    -1    0   3   0   0  100     0 "highway"
- 25  ")"    -1    0   4   0   0  100     0 "radar installation"
- 26  "!"    -1    0  12   0   0  100     0 "headquarters"
- 27  "#"    -1    0   3   0   0  100     0 "bridge head"
- 28  "="    -1    0   5   0   0  100     0 "bridge span"
- 29  "b"  bars  100  10   0   0  100     0 "bank"
- 30  "%"   pet 1000   2   0   0  100     0 "refinery"
- 31  "e"    -1    0   7   0   0  100     0 "enlistment center"
- 32  "~"    -1    0   1   0   0  100     0 "plains"
- 33  "@"    -1    0   4   0   0  100     0 "bridge tower"
+  5  "c"    -1    0  30   0   0   100  100     1 "capital"
+# 5  "c"    -1    0  30 100 200   100 1000     1 "city"
+  6  "u"   rad  100  15   0   0   100  100     0 "uranium mine"
+  7  "p"   hap  100   5   0   0   100  100     0 "park"
+  8  "d"   gun  100   7   0   0   100  100     0 "defense plant"
+  9  "i"    sh  100   6   0   0   100  100     0 "shell industry"
+ 10  "m"  iron  100   5   0   0   100  100     0 "mine"
+ 11  "g"  dust  100   8   0   0   100  100     0 "gold mine"
+ 12  "h"    -1    0  12   0   0   100  100     0 "harbor"
+ 13  "w"    -1    0   7   0   0   100  100     0 "warehouse"
+ 14  "*"    -1    0  12   0   0   100  100     0 "airfield"
+ 15  "a"  food  900   2   0   0   100  100     0 "agribusiness"
+ 16  "o"   oil  100   5   0   0   100  100     0 "oil field"
+ 17  "j"   lcm  100   3   0   0   100  100     0 "light manufacturing"
+ 18  "k"   hcm  100   4   0   0   100  100     0 "heavy manufacturing"
+ 19  "f"    -1    0  10   0 100   100  500     0 "fortress"
+ 20  "t"  tech  100  10   0   0   100  100     0 "technical center"
+ 21  "r"   med  100   9   0   0   100  100     0 "research lab"
+ 22  "n"    -1    0  10   0   0   100  100     0 "nuclear plant"
+ 23  "l"   edu  100   4   0   0   100  100     0 "library/school"
+ 24  "+"    -1    0   3   0   0   100  100     0 "highway"
+ 25  ")"    -1    0   4   0   0   100  100     0 "radar installation"
+ 26  "!"    -1    0  12   0   0   100  100     0 "headquarters"
+ 27  "#"    -1    0   3   0   0   100  100     0 "bridge head"
+ 28  "="    -1    0   5   0   0   100  100     0 "bridge span"
+ 29  "b"  bars  100  10   0   0   100  100     0 "bank"
+ 30  "%"   pet 1000   2   0   0   100  100     0 "refinery"
+ 31  "e"    -1    0   7   0   0   100  100     0 "enlistment center"
+ 32  "~"    -1    0   1   0   0   100  100     0 "plains"
+ 33  "@"    -1    0   4   0   0   100  100     0 "bridge tower"
 # Deity-defined sector types go here
 /config
 
index 025cf3f858648bb6a73679d21eef5bdba33c35dd..da86bd34a5e73edd5ec51874aef53c55e0c5669b 100644 (file)
@@ -402,8 +402,8 @@ show_sect_build(int foo)
 {
     int i, first;
 
-    pr("                          build 100%% eff  maint\n"
-       "sector type               lcm  hcm     $      $\n");
+    pr("                         build 100%% efficiency  maint\n"
+       "sector type               lcm  hcm avail     $      $\n");
     for (i = 0; dchr[i].d_name; i++) {
        if (dchr[i].d_mnem == 0)
            continue;
@@ -413,12 +413,13 @@ show_sect_build(int foo)
            && !dchr[i].d_mat[I_LCM] && !dchr[i].d_mat[I_HCM]
            && dchr[i].d_maint == 0)
            continue;           /* the usual, skip */
-       pr("%c %-21.21s %5d%5d %5d  %5d\n",
+       pr("%c %-21.21s  %4d %4d %5d %5d  %5d\n",
           dchr[i].d_mnem, dchr[i].d_name,
-          dchr[i].d_mat[I_LCM], dchr[i].d_mat[I_HCM], dchr[i].d_cost,
+          dchr[i].d_mat[I_LCM], dchr[i].d_mat[I_HCM],
+          dchr[i].d_bwork, dchr[i].d_cost,
           dchr[i].d_maint * etu_per_update);
     }
-    pr("any other                   0    0   100      0\n");
+    pr("any other                   0    0   100   100      0\n");
 
     first = 1;
     for (i = 0; intrchr[i].in_name; i++) {
index 136e5bf9fff7a3c82c27c6600c23af50c2cd2f6f..4cdb3503787ea6f710b012f6ec6bb00ffbeb3642 100644 (file)
 int
 buildeff(struct sctstr *sp)
 {
-    int work_cost = 0;
-    int avail = sp->sct_avail;
-    int buildeff_work = avail / 2;
-    int cost, n, neweff, desig;
+    int avail = sp->sct_avail / 2 * 100;
+    int cost;
+    int delta, build;
+    struct dchrstr *dcp;
 
     cost = 0;
-    neweff = sp->sct_effic;
 
     if (sp->sct_type != sp->sct_newtype) {
        /*
         * Tear down existing sector.
         * Easier to destroy than to build.
         */
-       work_cost = (sp->sct_effic + 3) / 4;
-       if (work_cost > buildeff_work)
-           work_cost = buildeff_work;
-       buildeff_work -= work_cost;
-       n = sp->sct_effic - work_cost * 4;
-       if (n <= 0) {
-           n = 0;
+       dcp = &dchr[sp->sct_type];
+       build = 4 * avail / dcp->d_bwork;
+       if (build <= sp->sct_effic)
+           sp->sct_effic -= build;
+       else {
+           build = sp->sct_effic;
+           sp->sct_effic = 0;
            sp->sct_type = sp->sct_newtype;
        }
-       neweff = n;
-       cost += work_cost;
+       avail -= (build + 3) / 4 * dcp->d_bwork;
+       cost += (build + 3) / 4;
     }
 
-    desig = sp->sct_type;
-    if (desig == sp->sct_newtype) {
-       work_cost = 100 - neweff;
-       if (work_cost > buildeff_work)
-           work_cost = buildeff_work;
-       work_cost = get_materials(sp, dchr[sp->sct_type].d_mat, work_cost);
-
-       neweff += work_cost;
-       cost += (work_cost * dchr[desig].d_cost + 99) / 100;
-       buildeff_work -= work_cost;
+    if (sp->sct_type == sp->sct_newtype) {
+       dcp = &dchr[sp->sct_type];
+       delta = avail / dcp->d_bwork;
+       if (delta > 100 - sp->sct_effic)
+           delta = 100 - sp->sct_effic;
+       build = get_materials(sp, dcp->d_mat, delta);
+       sp->sct_effic += build;
+       avail -= build * dcp->d_bwork;
+       cost += (build * dcp->d_cost + 99) / 100;
     }
 
-    sp->sct_effic = neweff;
-    sp->sct_avail = (avail + 1) / 2 + buildeff_work;
+    sp->sct_avail = (sp->sct_avail + 1) / 2 + avail / 100;
     return cost;
 }
 
index b62afc0f5d9437cbd548d9ee785f2f37aed698c6..83e07fc05580386c894bb912cc787be42c5a19bb 100644 (file)
     Play#0 input show sect b
     Play#0 command show
     Play#0 output Play#0 1 Printing for tech level '1000'
-    Play#0 output Play#0 1                           build 100% eff  maint
-    Play#0 output Play#0 1 sector type               lcm  hcm     $      $
-    Play#0 output Play#0 1 - wilderness                0    0     0      0
-    Play#0 output Play#0 1 c capital                   0    0   100     60
-    Play#0 output Play#0 1 f fortress                  0  100   500      0
-    Play#0 output Play#0 1 any other                   0    0   100      0
+    Play#0 output Play#0 1                          build 100% efficiency  maint
+    Play#0 output Play#0 1 sector type               lcm  hcm avail     $      $
+    Play#0 output Play#0 1 - wilderness                0    0   100     0      0
+    Play#0 output Play#0 1 c capital                   0    0   100   100     60
+    Play#0 output Play#0 1 f fortress                  0  100   100   500      0
+    Play#0 output Play#0 1 any other                   0    0   100   100      0
     Play#0 output Play#0 1
     Play#0 output Play#0 1 Infrastructure building - adding 1 point of efficiency costs:
     Play#0 output Play#0 1        type          lcms    hcms    mobility    $$$$
     Play#0 output Play#0 1 "h_build" 6 0 0 -1
     Play#0 output Play#0 1 "u_build" 6 0 0 -1
     Play#0 output Play#0 1 "r_build" 6 0 0 -1
+    Play#0 output Play#0 1 "bwork" 8 0 0 -1
     Play#0 output Play#0 1 "cost" 8 0 0 -1
     Play#0 output Play#0 1 "maint" 8 0 0 -1
     Play#0 output Play#0 1 "maxpop" 8 0 0 -1
     Play#0 output Play#0 1 "flags" 8 8 0 48
-    Play#0 output Play#0 1 /31
+    Play#0 output Play#0 1 /32
     Play#0 output Play#0 6 0 640
     Play#0 input xdump meta 19
     Play#0 command xdump
     Play#0 input xdump sect-chr *
     Play#0 command xdump
     Play#0 output Play#0 1 XDUMP sect-chr 0
-    Play#0 output Play#0 1 0 "sea" "." 0 -1 0 -1.00000 -1.00000 1 1 0.00000 0.00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
-    Play#0 output Play#0 1 1 "mountain" "^" 1 1 75 2.40000 1.20000 0 1 1.00000 4.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 100 1
-    Play#0 output Play#0 1 2 "sanctuary" "s" 4 -1 0 -1.00000 -1.00000 0 1 0.00000 99.0000 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 1
-    Play#0 output Play#0 1 3 "wasteland" "\\134" 3 -1 0 -1.00000 -1.00000 0 1 0.00000 99.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
-    Play#0 output Play#0 1 4 "wilderness" "-" 4 -1 0 0.400000 0.400000 0 1 1.00000 2.00000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 0
-    Play#0 output Play#0 1 5 "capital" "c" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 1 1000 0
-    Play#0 output Play#0 1 6 "uranium\\040mine" "u" 4 4 100 0.400000 0.200000 0 1 1.00000 2.00000 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 7 "park" "p" 4 14 100 0.400000 0.200000 0 1 1.00000 1.50000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 8 "defense\\040plant" "d" 4 6 100 0.400000 0.200000 0 1 1.00000 1.50000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 9 "shell\\040industry" "i" 4 5 100 0.400000 0.200000 0 1 1.00000 1.50000 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 10 "mine" "m" 4 0 100 0.400000 0.200000 0 1 1.00000 2.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 11 "gold\\040mine" "g" 4 1 100 0.400000 0.200000 0 1 1.00000 2.00000 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 12 "harbor" "h" 4 -1 0 0.400000 0.200000 2 2 1.00000 1.50000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 13 "warehouse" "w" 4 -1 0 0.400000 0.200000 0 2 1.00000 1.50000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 14 "airfield" "*" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.25000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 15 "agribusiness" "a" 4 2 900 0.400000 0.200000 0 1 1.00000 1.50000 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 16 "oil\\040field" "o" 4 3 100 0.400000 0.200000 0 1 1.00000 1.50000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 17 "light\\040manufacturing" "j" 4 9 100 0.400000 0.200000 0 1 1.00000 1.50000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 18 "heavy\\040manufacturing" "k" 4 10 100 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 19 "fortress" "f" 4 -1 0 0.400000 0.200000 0 1 2.00000 4.00000 10 0 0 0 0 0 0 0 0 0 0 0 100 0 0 500 0 1000 0
-    Play#0 output Play#0 1 20 "technical\\040center" "t" 4 11 100 0.400000 0.200000 0 1 1.00000 1.50000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 21 "research\\040lab" "r" 4 12 100 0.400000 0.200000 0 1 1.00000 1.50000 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 22 "nuclear\\040plant" "n" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 23 "library/school" "l" 4 13 100 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 24 "highway" "+" 4 -1 0 0.400000 0.00000 0 1 1.00000 1.00000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 25 "radar\\040installation" ")" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 26 "headquarters" "!" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 27 "bridge\\040head" "#" 4 -1 0 0.400000 0.00000 0 1 1.00000 1.00000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 28 "bridge\\040span" "=" 0 -1 0 0.400000 0.00000 4 1 1.00000 1.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 100 1
-    Play#0 output Play#0 1 29 "bank" "b" 4 8 100 0.400000 0.200000 0 4 1.00000 2.25000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 30 "refinery" "%" 4 7 1000 0.400000 0.200000 0 1 1.00000 1.50000 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 31 "enlistment\\040center" "e" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#0 output Play#0 1 32 "plains" "~" 32 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 100 1
-    Play#0 output Play#0 1 33 "bridge\\040tower" "@" 0 -1 0 0.400000 0.00000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 100 1
+    Play#0 output Play#0 1 0 "sea" "." 0 -1 0 -1.00000 -1.00000 1 1 0.00000 0.00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+    Play#0 output Play#0 1 1 "mountain" "^" 1 1 75 2.40000 1.20000 0 1 1.00000 4.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 100 1
+    Play#0 output Play#0 1 2 "sanctuary" "s" 4 -1 0 -1.00000 -1.00000 0 1 0.00000 99.0000 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 1000 1
+    Play#0 output Play#0 1 3 "wasteland" "\\134" 3 -1 0 -1.00000 -1.00000 0 1 0.00000 99.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 0 1
+    Play#0 output Play#0 1 4 "wilderness" "-" 4 -1 0 0.400000 0.400000 0 1 1.00000 2.00000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 1000 0
+    Play#0 output Play#0 1 5 "capital" "c" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 1 1000 0
+    Play#0 output Play#0 1 6 "uranium\\040mine" "u" 4 4 100 0.400000 0.200000 0 1 1.00000 2.00000 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 7 "park" "p" 4 14 100 0.400000 0.200000 0 1 1.00000 1.50000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 8 "defense\\040plant" "d" 4 6 100 0.400000 0.200000 0 1 1.00000 1.50000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 9 "shell\\040industry" "i" 4 5 100 0.400000 0.200000 0 1 1.00000 1.50000 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 10 "mine" "m" 4 0 100 0.400000 0.200000 0 1 1.00000 2.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 11 "gold\\040mine" "g" 4 1 100 0.400000 0.200000 0 1 1.00000 2.00000 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 12 "harbor" "h" 4 -1 0 0.400000 0.200000 2 2 1.00000 1.50000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 13 "warehouse" "w" 4 -1 0 0.400000 0.200000 0 2 1.00000 1.50000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 14 "airfield" "*" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.25000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 15 "agribusiness" "a" 4 2 900 0.400000 0.200000 0 1 1.00000 1.50000 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 16 "oil\\040field" "o" 4 3 100 0.400000 0.200000 0 1 1.00000 1.50000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 17 "light\\040manufacturing" "j" 4 9 100 0.400000 0.200000 0 1 1.00000 1.50000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 18 "heavy\\040manufacturing" "k" 4 10 100 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 19 "fortress" "f" 4 -1 0 0.400000 0.200000 0 1 2.00000 4.00000 10 0 0 0 0 0 0 0 0 0 0 0 100 0 0 100 500 0 1000 0
+    Play#0 output Play#0 1 20 "technical\\040center" "t" 4 11 100 0.400000 0.200000 0 1 1.00000 1.50000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 21 "research\\040lab" "r" 4 12 100 0.400000 0.200000 0 1 1.00000 1.50000 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 22 "nuclear\\040plant" "n" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 23 "library/school" "l" 4 13 100 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 24 "highway" "+" 4 -1 0 0.400000 0.00000 0 1 1.00000 1.00000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 25 "radar\\040installation" ")" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 26 "headquarters" "!" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 27 "bridge\\040head" "#" 4 -1 0 0.400000 0.00000 0 1 1.00000 1.00000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 28 "bridge\\040span" "=" 0 -1 0 0.400000 0.00000 4 1 1.00000 1.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 100 1
+    Play#0 output Play#0 1 29 "bank" "b" 4 8 100 0.400000 0.200000 0 4 1.00000 2.25000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 30 "refinery" "%" 4 7 1000 0.400000 0.200000 0 1 1.00000 1.50000 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 31 "enlistment\\040center" "e" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#0 output Play#0 1 32 "plains" "~" 32 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 100 1
+    Play#0 output Play#0 1 33 "bridge\\040tower" "@" 0 -1 0 0.400000 0.00000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 100 1
     Play#0 output Play#0 1 /34
     Play#0 output Play#0 6 0 640
     Play#0 input xdump ship-chr *
     Play#1 input xdump sect-chr *
     Play#1 command xdump
     Play#1 output Play#1 1 XDUMP sect-chr 0
-    Play#1 output Play#1 1 0 "sea" "." 0 -1 0 -1.00000 -1.00000 1 1 0.00000 0.00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
-    Play#1 output Play#1 1 1 "mountain" "^" 1 1 75 2.40000 1.20000 0 1 1.00000 4.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 100 1
-    Play#1 output Play#1 1 2 "sanctuary" "s" 4 -1 0 -1.00000 -1.00000 0 1 0.00000 99.0000 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 1
-    Play#1 output Play#1 1 3 "wasteland" "\\134" 3 -1 0 -1.00000 -1.00000 0 1 0.00000 99.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
-    Play#1 output Play#1 1 4 "wilderness" "-" 4 -1 0 0.400000 0.400000 0 1 1.00000 2.00000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1000 0
-    Play#1 output Play#1 1 5 "capital" "c" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 1 1000 0
-    Play#1 output Play#1 1 6 "uranium\\040mine" "u" 4 4 100 0.400000 0.200000 0 1 1.00000 2.00000 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 7 "park" "p" 4 14 100 0.400000 0.200000 0 1 1.00000 1.50000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 8 "defense\\040plant" "d" 4 6 100 0.400000 0.200000 0 1 1.00000 1.50000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 9 "shell\\040industry" "i" 4 5 100 0.400000 0.200000 0 1 1.00000 1.50000 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 10 "mine" "m" 4 0 100 0.400000 0.200000 0 1 1.00000 2.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 11 "gold\\040mine" "g" 4 1 100 0.400000 0.200000 0 1 1.00000 2.00000 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 12 "harbor" "h" 4 -1 0 0.400000 0.200000 2 2 1.00000 1.50000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 13 "warehouse" "w" 4 -1 0 0.400000 0.200000 0 2 1.00000 1.50000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 14 "airfield" "*" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.25000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 15 "agribusiness" "a" 4 2 900 0.400000 0.200000 0 1 1.00000 1.50000 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 16 "oil\\040field" "o" 4 3 100 0.400000 0.200000 0 1 1.00000 1.50000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 17 "light\\040manufacturing" "j" 4 9 100 0.400000 0.200000 0 1 1.00000 1.50000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 18 "heavy\\040manufacturing" "k" 4 10 100 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 19 "fortress" "f" 4 -1 0 0.400000 0.200000 0 1 2.00000 4.00000 10 0 0 0 0 0 0 0 0 0 0 0 100 0 0 500 0 1000 0
-    Play#1 output Play#1 1 20 "technical\\040center" "t" 4 11 100 0.400000 0.200000 0 1 1.00000 1.50000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 21 "research\\040lab" "r" 4 12 100 0.400000 0.200000 0 1 1.00000 1.50000 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 22 "nuclear\\040plant" "n" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 23 "library/school" "l" 4 13 100 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 24 "highway" "+" 4 -1 0 0.400000 0.00000 0 1 1.00000 1.00000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 25 "radar\\040installation" ")" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 26 "headquarters" "!" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 27 "bridge\\040head" "#" 4 -1 0 0.400000 0.00000 0 1 1.00000 1.00000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 28 "bridge\\040span" "=" 0 -1 0 0.400000 0.00000 4 1 1.00000 1.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 100 1
-    Play#1 output Play#1 1 29 "bank" "b" 4 8 100 0.400000 0.200000 0 4 1.00000 2.25000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 30 "refinery" "%" 4 7 1000 0.400000 0.200000 0 1 1.00000 1.50000 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 31 "enlistment\\040center" "e" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 1000 0
-    Play#1 output Play#1 1 32 "plains" "~" 32 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 100 1
-    Play#1 output Play#1 1 33 "bridge\\040tower" "@" 0 -1 0 0.400000 0.00000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 100 1
+    Play#1 output Play#1 1 0 "sea" "." 0 -1 0 -1.00000 -1.00000 1 1 0.00000 0.00000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
+    Play#1 output Play#1 1 1 "mountain" "^" 1 1 75 2.40000 1.20000 0 1 1.00000 4.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 100 1
+    Play#1 output Play#1 1 2 "sanctuary" "s" 4 -1 0 -1.00000 -1.00000 0 1 0.00000 99.0000 127 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 1000 1
+    Play#1 output Play#1 1 3 "wasteland" "\\134" 3 -1 0 -1.00000 -1.00000 0 1 0.00000 99.0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 0 1
+    Play#1 output Play#1 1 4 "wilderness" "-" 4 -1 0 0.400000 0.400000 0 1 1.00000 2.00000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 0 0 1000 0
+    Play#1 output Play#1 1 5 "capital" "c" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 30 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 1 1000 0
+    Play#1 output Play#1 1 6 "uranium\\040mine" "u" 4 4 100 0.400000 0.200000 0 1 1.00000 2.00000 15 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 7 "park" "p" 4 14 100 0.400000 0.200000 0 1 1.00000 1.50000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 8 "defense\\040plant" "d" 4 6 100 0.400000 0.200000 0 1 1.00000 1.50000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 9 "shell\\040industry" "i" 4 5 100 0.400000 0.200000 0 1 1.00000 1.50000 6 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 10 "mine" "m" 4 0 100 0.400000 0.200000 0 1 1.00000 2.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 11 "gold\\040mine" "g" 4 1 100 0.400000 0.200000 0 1 1.00000 2.00000 8 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 12 "harbor" "h" 4 -1 0 0.400000 0.200000 2 2 1.00000 1.50000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 13 "warehouse" "w" 4 -1 0 0.400000 0.200000 0 2 1.00000 1.50000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 14 "airfield" "*" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.25000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 15 "agribusiness" "a" 4 2 900 0.400000 0.200000 0 1 1.00000 1.50000 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 16 "oil\\040field" "o" 4 3 100 0.400000 0.200000 0 1 1.00000 1.50000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 17 "light\\040manufacturing" "j" 4 9 100 0.400000 0.200000 0 1 1.00000 1.50000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 18 "heavy\\040manufacturing" "k" 4 10 100 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 19 "fortress" "f" 4 -1 0 0.400000 0.200000 0 1 2.00000 4.00000 10 0 0 0 0 0 0 0 0 0 0 0 100 0 0 100 500 0 1000 0
+    Play#1 output Play#1 1 20 "technical\\040center" "t" 4 11 100 0.400000 0.200000 0 1 1.00000 1.50000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 21 "research\\040lab" "r" 4 12 100 0.400000 0.200000 0 1 1.00000 1.50000 9 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 22 "nuclear\\040plant" "n" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 23 "library/school" "l" 4 13 100 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 24 "highway" "+" 4 -1 0 0.400000 0.00000 0 1 1.00000 1.00000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 25 "radar\\040installation" ")" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 26 "headquarters" "!" 4 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 12 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 27 "bridge\\040head" "#" 4 -1 0 0.400000 0.00000 0 1 1.00000 1.00000 3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 28 "bridge\\040span" "=" 0 -1 0 0.400000 0.00000 4 1 1.00000 1.00000 5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 100 1
+    Play#1 output Play#1 1 29 "bank" "b" 4 8 100 0.400000 0.200000 0 4 1.00000 2.25000 10 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 30 "refinery" "%" 4 7 1000 0.400000 0.200000 0 1 1.00000 1.50000 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 31 "enlistment\\040center" "e" 4 -1 0 0.400000 0.200000 0 1 1.00000 2.00000 7 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 1000 0
+    Play#1 output Play#1 1 32 "plains" "~" 32 -1 0 0.400000 0.200000 0 1 1.00000 1.50000 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 100 1
+    Play#1 output Play#1 1 33 "bridge\\040tower" "@" 0 -1 0 0.400000 0.00000 0 1 1.00000 1.50000 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 100 100 0 100 1
     Play#1 output Play#1 1 /34
     Play#1 output Play#1 6 0 0
     Play#1 input xdump ship-chr *