config: Generalize sector build materials storage

Sectors require lcms and hcms to build.  The build materials are
exposed as sect-chr columns lcms, hcms (struct dchrstr members d_lcms,
d_hcms).  They are per point per point of efficiency.  In contrast,
unit build materials are defined for 100%.

We want to define build materials for 100% now, for flexibility and
consistency, and we want to optionally support more build materials in
the future.  Replace d_lcms and d_hcms by array member d_mat[], and
replace selectors lcms and hcms by selectors l_build and h_build.

This is an xdump compatibility break.  To provide the customary grace
period, we'd have to make selectors lcms and hcms virtual instead,
with value l_build / 100 and h_build / 100 rounded up, and deprecate
them.  Deities would have to avoid l_build and h_build values that
aren't multiples of 100 for this to work fully.  But we're not
bothering with maintaining xdump compatibility in this release.

Provide selectors for all other item types, to help clients prepare
for future additional materials.  Use CA_DUMP_ONLY to keep them out of
configuration tables until they actually work.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2016-06-05 20:08:30 +02:00
parent 826fcf009b
commit bb9619c053
6 changed files with 93 additions and 101 deletions

View file

@ -112,9 +112,9 @@ struct dchrstr {
float d_ostr; /* offensive strength */ float d_ostr; /* offensive strength */
float d_dstr; /* defensive strength */ float d_dstr; /* defensive strength */
int d_value; /* resale ("collect") value */ 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_cost; /* cost to build 100% */ int d_cost; /* cost to build 100% */
int d_lcms; /* lcm's needed per point of eff */
int d_hcms; /* hcm's needed per point of eff */
int d_maint; /* maintenance cost per ETU */ int d_maint; /* maintenance cost per ETU */
int d_maxpop; /* maximum population */ int d_maxpop; /* maximum population */
int d_flags; /* capability flags */ int d_flags; /* capability flags */

View file

@ -240,9 +240,8 @@ struct castr dchr_ca[] = {
{"ostr", fldoff(d_ostr), NSC_FLOAT, 0, NULL, EF_BAD, 0, CA_DUMP}, {"ostr", fldoff(d_ostr), NSC_FLOAT, 0, NULL, EF_BAD, 0, CA_DUMP},
{"dstr", fldoff(d_dstr), NSC_FLOAT, 0, NULL, EF_BAD, 0, CA_DUMP}, {"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}, {"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),
{"cost", fldoff(d_cost), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP}, {"cost", fldoff(d_cost), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
{"lcms", fldoff(d_lcms), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
{"hcms", fldoff(d_hcms), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
{"maint", fldoff(d_maint), 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}, {"maxpop", fldoff(d_maxpop), NSC_INT, 0, NULL, EF_BAD, 0, CA_DUMP},
{"flags", fldoff(d_flags), NSC_INT, 0, NULL, {"flags", fldoff(d_flags), NSC_INT, 0, NULL,

View file

@ -64,7 +64,7 @@
# econfig key custom_tables. # econfig key custom_tables.
config sect-chr config sect-chr
uid mnem prd peff val lcm hcm cost maint name ... uid mnem prd peff val l_b h_b cost maint name ...
0 "." -1 0 0 0 0 0 0 "sea" 0 "." -1 0 0 0 0 0 0 "sea"
1 "^" dust 75 5 0 0 100 0 "mountain" 1 "^" dust 75 5 0 0 100 0 "mountain"
2 "s" -1 0 127 0 0 0 0 "sanctuary" 2 "s" -1 0 127 0 0 0 0 "sanctuary"
@ -72,7 +72,7 @@ uid mnem prd peff val lcm hcm cost maint name ...
4 "-" -1 0 1 0 0 0 0 "wilderness" 4 "-" -1 0 1 0 0 0 0 "wilderness"
# Uncomment one of the following two. The second one is for big cities. # 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 0 0 100 1 "capital"
# 5 "c" -1 0 30 1 2 1000 1 "city" # 5 "c" -1 0 30 100 200 1000 1 "city"
6 "u" rad 100 15 0 0 100 0 "uranium mine" 6 "u" rad 100 15 0 0 100 0 "uranium mine"
7 "p" hap 100 5 0 0 100 0 "park" 7 "p" hap 100 5 0 0 100 0 "park"
8 "d" gun 100 7 0 0 100 0 "defense plant" 8 "d" gun 100 7 0 0 100 0 "defense plant"
@ -86,7 +86,7 @@ uid mnem prd peff val lcm hcm cost maint name ...
16 "o" oil 100 5 0 0 100 0 "oil field" 16 "o" oil 100 5 0 0 100 0 "oil field"
17 "j" lcm 100 3 0 0 100 0 "light manufacturing" 17 "j" lcm 100 3 0 0 100 0 "light manufacturing"
18 "k" hcm 100 4 0 0 100 0 "heavy manufacturing" 18 "k" hcm 100 4 0 0 100 0 "heavy manufacturing"
19 "f" -1 0 10 0 1 500 0 "fortress" 19 "f" -1 0 10 0 100 500 0 "fortress"
20 "t" tech 100 10 0 0 100 0 "technical center" 20 "t" tech 100 10 0 0 100 0 "technical center"
21 "r" med 100 9 0 0 100 0 "research lab" 21 "r" med 100 9 0 0 100 0 "research lab"
22 "n" -1 0 10 0 0 100 0 "nuclear plant" 22 "n" -1 0 10 0 0 100 0 "nuclear plant"

View file

@ -410,14 +410,12 @@ show_sect_build(int foo)
if (dchr[i].d_mob0 < 0) if (dchr[i].d_mob0 < 0)
continue; continue;
if (dchr[i].d_cost == 100 if (dchr[i].d_cost == 100
&& dchr[i].d_lcms == 0 && dchr[i].d_hcms == 0 && !dchr[i].d_mat[I_LCM] && !dchr[i].d_mat[I_HCM]
&& dchr[i].d_maint == 0) && dchr[i].d_maint == 0)
continue; /* the usual, skip */ continue; /* the usual, skip */
pr("%c %-21.21s %5d%5d %5d %5d\n", pr("%c %-21.21s %5d%5d %5d %5d\n",
dchr[i].d_mnem, dchr[i].d_name, dchr[i].d_mnem, dchr[i].d_name,
100 * dchr[i].d_lcms, dchr[i].d_mat[I_LCM], dchr[i].d_mat[I_HCM], dchr[i].d_cost,
100 * dchr[i].d_hcms,
dchr[i].d_cost,
dchr[i].d_maint * etu_per_update); dchr[i].d_maint * etu_per_update);
} }
pr("any other 0 0 100 0\n"); pr("any other 0 0 100 0\n");

View file

@ -50,7 +50,7 @@ buildeff(struct sctstr *sp)
int work_cost = 0; int work_cost = 0;
int avail = sp->sct_avail; int avail = sp->sct_avail;
int buildeff_work = avail / 2; int buildeff_work = avail / 2;
int cost, n, hcms, lcms, neweff, desig; int cost, n, neweff, desig;
cost = 0; cost = 0;
neweff = sp->sct_effic; neweff = sp->sct_effic;
@ -78,28 +78,11 @@ buildeff(struct sctstr *sp)
work_cost = 100 - neweff; work_cost = 100 - neweff;
if (work_cost > buildeff_work) if (work_cost > buildeff_work)
work_cost = buildeff_work; work_cost = buildeff_work;
work_cost = get_materials(sp, dchr[sp->sct_type].d_mat, work_cost);
if (dchr[desig].d_lcms > 0) {
lcms = sp->sct_item[I_LCM];
lcms /= dchr[desig].d_lcms;
if (work_cost > lcms)
work_cost = lcms;
}
if (dchr[desig].d_hcms > 0) {
hcms = sp->sct_item[I_HCM];
hcms /= dchr[desig].d_hcms;
if (work_cost > hcms)
work_cost = hcms;
}
neweff += work_cost; neweff += work_cost;
cost += (work_cost * dchr[desig].d_cost + 99) / 100; cost += (work_cost * dchr[desig].d_cost + 99) / 100;
buildeff_work -= work_cost; buildeff_work -= work_cost;
if ((dchr[desig].d_lcms > 0) || (dchr[desig].d_hcms > 0)) {
sp->sct_item[I_LCM] -= work_cost * dchr[desig].d_lcms;
sp->sct_item[I_HCM] -= work_cost * dchr[desig].d_hcms;
}
} }
sp->sct_effic = neweff; sp->sct_effic = neweff;

View file

@ -1000,13 +1000,25 @@
Play#0 output Play#0 1 "ostr" 12 0 0 -1 Play#0 output Play#0 1 "ostr" 12 0 0 -1
Play#0 output Play#0 1 "dstr" 12 0 0 -1 Play#0 output Play#0 1 "dstr" 12 0 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1 Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "c_build" 6 0 0 -1
Play#0 output Play#0 1 "m_build" 6 0 0 -1
Play#0 output Play#0 1 "s_build" 6 0 0 -1
Play#0 output Play#0 1 "g_build" 6 0 0 -1
Play#0 output Play#0 1 "p_build" 6 0 0 -1
Play#0 output Play#0 1 "i_build" 6 0 0 -1
Play#0 output Play#0 1 "d_build" 6 0 0 -1
Play#0 output Play#0 1 "b_build" 6 0 0 -1
Play#0 output Play#0 1 "f_build" 6 0 0 -1
Play#0 output Play#0 1 "o_build" 6 0 0 -1
Play#0 output Play#0 1 "l_build" 6 0 0 -1
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 "cost" 8 0 0 -1 Play#0 output Play#0 1 "cost" 8 0 0 -1
Play#0 output Play#0 1 "lcms" 8 0 0 -1
Play#0 output Play#0 1 "hcms" 8 0 0 -1
Play#0 output Play#0 1 "maint" 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 "maxpop" 8 0 0 -1
Play#0 output Play#0 1 "flags" 8 8 0 48 Play#0 output Play#0 1 "flags" 8 8 0 48
Play#0 output Play#0 1 /19 Play#0 output Play#0 1 /31
Play#0 output Play#0 6 0 640 Play#0 output Play#0 6 0 640
Play#0 input xdump meta 19 Play#0 input xdump meta 19
Play#0 command xdump Play#0 command xdump
@ -1549,40 +1561,40 @@
Play#0 input xdump sect-chr * Play#0 input xdump sect-chr *
Play#0 command xdump Play#0 command xdump
Play#0 output Play#0 1 XDUMP sect-chr 0 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 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 100 0 0 0 100 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 1000 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 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 1000 0 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 100 0 0 1 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 100 0 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 500 0 1 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 0 100 1 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 100 0 0 0 1000 0 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 100 0 0 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 100 0 0 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 100 0 0 0 100 1 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 100 0 0 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 /34 Play#0 output Play#0 1 /34
Play#0 output Play#0 6 0 640 Play#0 output Play#0 6 0 640
Play#0 input xdump ship-chr * Play#0 input xdump ship-chr *
@ -2275,40 +2287,40 @@
Play#1 input xdump sect-chr * Play#1 input xdump sect-chr *
Play#1 command xdump Play#1 command xdump
Play#1 output Play#1 1 XDUMP sect-chr 0 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 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 100 0 0 0 100 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 1000 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 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 1000 0 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 100 0 0 1 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 100 0 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 500 0 1 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 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 100 0 0 0 100 1 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 100 0 0 0 1000 0 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 100 0 0 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 100 0 0 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 100 0 0 0 100 1 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 100 0 0 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 /34 Play#1 output Play#1 1 /34
Play#1 output Play#1 6 0 0 Play#1 output Play#1 6 0 0
Play#1 input xdump ship-chr * Play#1 input xdump ship-chr *