]> git.pond.sub.org Git - empserver/commitdiff
config: Make work to build units independently configurable
authorMarkus Armbruster <armbru@pond.sub.org>
Fri, 27 May 2016 11:39:11 +0000 (13:39 +0200)
committerMarkus Armbruster <armbru@pond.sub.org>
Sun, 6 Aug 2017 12:04:32 +0000 (14:04 +0200)
The work required for build and repairs is traditionally a function of
build materials: 20 + lcm + 2*hcm for ships, planes and land units,
and (lcm + 2*hcm + oil + rad)/5 for nukes.  Make it independently
configurable instead, via new ship-chr, plane-chr, land-chr, nuke-chr
selector bwork, backed by new struct mchrstr member m_bwork, struct
plchrstr member pl_bwork, struct lchrstr member l_bwork, struct
nchrstr member n_bwork.  Keep the required work exactly the same for
now.

Clients that compute work from materials need to be updated.  Easy,
since build work is now exposed in xdump.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
19 files changed:
include/land.h
include/nuke.h
include/plane.h
include/ship.h
info/build.t
src/lib/commands/buil.c
src/lib/commands/upgr.c
src/lib/common/nsc.c
src/lib/global/land.config
src/lib/global/nuke.config
src/lib/global/plane.config
src/lib/global/ship.config
src/lib/subs/show.c
src/lib/update/land.c
src/lib/update/plane.c
src/lib/update/ship.c
tests/empdump/errors.err
tests/empdump/xundump-errors/fld-ambsym
tests/version/journal.log

index a75df61623538bb065842e00f43292c22d552366..2f9d3e95334c4f9945ca34c46b9ea00025b62f82 100644 (file)
@@ -30,7 +30,7 @@
  *     Thomas Ruschak, 1992
  *     Ken Stevens, 1995
  *     Steve McClure, 1998
- *     Markus Armbruster, 2004-2015
+ *     Markus Armbruster, 2004-2016
  */
 
 #ifndef LAND_H
@@ -86,6 +86,7 @@ struct lchrstr {
     int l_mil;                 /* how many mil it takes to build (unused) */
     int l_gun;                 /* how many guns it takes to build (unused) */
     int l_shell;               /* #shells it takes to build (unused) */
+    int l_bwork;               /* work to build 100% */
     int l_tech;                        /* tech required to build */
     int l_cost;                        /* how much it costs to build */
     float l_att;               /* attack multiplier */
@@ -120,9 +121,6 @@ struct lchrstr {
 #define L_TRAIN                bit(11) /* train unit - neato */
 #define L_HEAVY                bit(12) /* heavy unit - can't go on trains */
 
-/* Work required for building 100% */
-#define LND_BLD_WORK(lcm, hcm) (20 + (lcm) + 2 * (hcm))
-
 /* Chance to detect L_SPY unit (percent) */
 #define LND_SPY_DETECT_CHANCE(eff) ((110-(eff))/100.0)
 
index 84eff0b72fed120be952d22707a41094b1fe9a48..51c1a05016db20b6a9f06e5d74da78ff438f05fa 100644 (file)
@@ -28,6 +28,7 @@
  *
  *  Known contributors to this file:
  *     Dave Pare, 1986
+ *     Markus Armbruster, 2004-2016
  */
 
 #ifndef NUKE_H
@@ -69,8 +70,9 @@ struct nchrstr {
     int n_rad;
     int n_blast;               /* blast radius */
     int n_dam;                 /* damage at center */
-    int n_cost;
+    int n_bwork;               /* work to build 100% */
     int n_tech;                        /* tech needed to build */
+    int n_cost;                        /* how much it costs to build */
     int n_weight;
     int n_flags;               /* description of capability */
     signed char n_type;                /* index in nchr[] */
@@ -82,10 +84,6 @@ struct nchrstr {
 #define putnuke(n, p) ef_write(EF_NUKE, (n), (p))
 #define getnukep(n) ((struct nukstr *)ef_ptr(EF_NUKE, (n)))
 
-/* Work required for building */
-#define NUK_BLD_WORK(lcm, hcm, oil, rad) \
-  (((lcm) + 2 * (hcm) + (oil) + (rad) + 4) / 5)
-
 extern struct nchrstr nchr[N_MAXNUKE + 1];
 
 /* src/lib/common/cargo.c */
index 02027c755841106918f4e1695bd3356a3c5bcab2..2a66decbb3fb2278fe36e80c3a02eb6538b7f42f 100644 (file)
@@ -30,7 +30,7 @@
  *     Dave Pare, 1986
  *     Ken Stevens, 1995
  *     Steve McClure, 1998
- *     Markus Armbruster, 2004-2013
+ *     Markus Armbruster, 2004-2016
  */
 
 #ifndef PLANE_H
@@ -81,8 +81,9 @@ struct plchrstr {
     char *pl_name;             /* full name of type of plane */
     int pl_lcm;                        /* costs to build */
     int pl_hcm;
-    int pl_cost;
+    int pl_bwork;              /* work to build 100% */
     int pl_tech;               /* tech needed to build */
+    int pl_cost;               /* how much it costs to build */
     int pl_acc;                        /* bombing accuracy (higher the better) */
     int pl_load;               /* bomb load, also for carrying cargo */
     int pl_att;                        /* air-air attack/defense strengths */
@@ -141,9 +142,6 @@ struct shiplist {
     struct shiplist *next;
 };
 
-/* Work required for building 100% */
-#define PLN_BLD_WORK(lcm, hcm) (20 + (lcm) + 2 * (hcm))
-
 extern int pl_att(struct plchrstr *, int);
 extern int pl_def(struct plchrstr *, int);
 extern int pl_acc(struct plchrstr *, int);
index 5a6aa32e038f0dce34b47baf837336b3ca19d9ec..f6c9d3929bedcd578a538c9caa7d7025dfa53c64 100644 (file)
@@ -31,7 +31,7 @@
  *     Thomas Ruschak, 1992
  *     Ken Stevens, 1995
  *     Steve McClure, 1998
- *     Markus Armbruster, 2004-2015
+ *     Markus Armbruster, 2004-2016
  */
 
 #ifndef SHIP_H
@@ -93,6 +93,7 @@ struct mchrstr {
     unsigned char m_nxlight;   /* maximum number of xlight planes */
     unsigned char m_nchoppers; /* maximum number of choppers */
     char *m_name;              /* full name of type of ship */
+    int m_bwork;               /* work to build 100% */
     int m_tech;                        /* tech required to build */
     int m_cost;                        /* how much it costs to build */
     int m_flags;               /* what special things can this ship do */
@@ -131,9 +132,6 @@ struct mchrstr {
 
 extern struct mchrstr mchr[SHP_TYPE_MAX + 2];
 
-/* Work required for building 100% */
-#define SHP_BLD_WORK(lcm, hcm) (20 + (lcm) + 2 * (hcm))
-
 enum {
     SHP_AIROPS_EFF = 50,       /* min. efficiency for air ops */
     SHP_TORP_SHELLS = 3                /* number of shells used by a torpedo */
index 12bef2b20fca5a0dc234b9bab23ae6c82d9c9467..992b96db65730f641d86443fbb3087ae41d468e0 100644 (file)
@@ -56,12 +56,6 @@ military crew.  So, for maximum efficiency growth,
 put full crews on your newly built
 ships and leave them in harbor until they reach 100%.
 .s1
-The work required to add a point of efficiency to a ship is
-.s1
-.NF
-(20 + (lcm_to_build + 2 * hcm_to_build))/100
-.FI
-.s1
 Ships at sea have only their crews to make repairs.
 A small crew on a large ship
 may not be able to make any repairs at all.
@@ -80,11 +74,6 @@ A plane is not capable of leaving the ground until
 it has reached 40% efficiency.  Planes below 10% efficiency are
 destroyed.
 .s1
-The work required to add a point of efficiency to a plane is
-.s1
-.NF
-(20 + (lcm_to_build + 2 * hcm_to_build))/100
-.FI
 .s1
 Planes will also gain efficiency in non-airport sectors, but at only 1/3rd
 the normal rate.
@@ -105,12 +94,6 @@ dead). Then,
 each update, the unit will grow in efficiency, and use up more
 of the required goods until it reaches 100%.
 .s1
-The work required to add a point of efficiency to a land unit is
-.s1
-.NF
-(20 + (lcm_to_build + 2 * hcm_to_build))/100
-.FI
-.s1
 Land units can also gain efficiency in fortress sectors, but cannot
 be built there.
 Land units can gain efficiency in any other sector type (assuming
index c1268c318b20cb61b6e90152eb6a2b2e428d19c6..d6fa4d4fc6182b39d86d66cf66a20c07908d1d60 100644 (file)
@@ -28,7 +28,7 @@
  *
  *  Known contributors to this file:
  *     Steve McClure, 1998-2000
- *     Markus Armbruster, 2004-2015
+ *     Markus Armbruster, 2004-2016
  */
 
 #include <config.h>
@@ -211,23 +211,21 @@ build_ship(struct sctstr *sp, int type, int tlev)
 {
     struct mchrstr *mp = &mchr[type];
     short mat[I_MAX+1];
-    int work;
     struct shpstr ship;
 
     memset(mat, 0, sizeof(mat));
     mat[I_LCM] = mp->m_lcm;
     mat[I_HCM] = mp->m_hcm;
-    work = SHP_BLD_WORK(mp->m_lcm, mp->m_hcm);
 
     if (sp->sct_type != SCT_HARBR && !player->god) {
        pr("Ships must be built in harbours.\n");
        return 0;
     }
-    if (!sector_can_build(sp, mat, work, SHIP_MINEFF, mp->m_name))
+    if (!sector_can_build(sp, mat, mp->m_bwork, SHIP_MINEFF, mp->m_name))
        return 0;
     if (!build_can_afford(mp->m_cost, SHIP_MINEFF, mp->m_name))
        return 0;
-    build_charge(sp, mat, work, mp->m_cost, SHIP_MINEFF);
+    build_charge(sp, mat, mp->m_bwork, mp->m_cost, SHIP_MINEFF);
 
     ef_blank(EF_SHIP, pick_unused_unit_uid(EF_SHIP), &ship);
     ship.shp_x = sp->sct_x;
@@ -264,23 +262,21 @@ build_land(struct sctstr *sp, int type, int tlev)
 {
     struct lchrstr *lp = &lchr[type];
     short mat[I_MAX+1];
-    int work;
     struct lndstr land;
 
     memset(mat, 0, sizeof(mat));
     mat[I_LCM] = lp->l_lcm;
     mat[I_HCM] = lp->l_hcm;
-    work = LND_BLD_WORK(lp->l_lcm, lp->l_hcm);
 
     if (sp->sct_type != SCT_HEADQ && !player->god) {
        pr("Land units must be built in headquarters.\n");
        return 0;
     }
-    if (!sector_can_build(sp, mat, work, LAND_MINEFF, lp->l_name))
+    if (!sector_can_build(sp, mat, lp->l_bwork, LAND_MINEFF, lp->l_name))
        return 0;
     if (!build_can_afford(lp->l_cost, LAND_MINEFF, lp->l_name))
        return 0;
-    build_charge(sp, mat, work, lp->l_cost, LAND_MINEFF);
+    build_charge(sp, mat, lp->l_bwork, lp->l_cost, LAND_MINEFF);
 
     ef_blank(EF_LAND, pick_unused_unit_uid(EF_LAND), &land);
     land.lnd_x = sp->sct_x;
@@ -316,7 +312,6 @@ build_nuke(struct sctstr *sp, int type, int tlev)
 {
     struct nchrstr *np = &nchr[type];
     short mat[I_MAX+1];
-    int work;
     struct nukstr nuke;
 
     if (sp->sct_type != SCT_NUKE && !player->god) {
@@ -333,13 +328,12 @@ build_nuke(struct sctstr *sp, int type, int tlev)
     mat[I_HCM] = np->n_hcm;
     mat[I_OIL] = np->n_oil;
     mat[I_RAD] = np->n_rad;
-    work = NUK_BLD_WORK(np->n_lcm, np->n_hcm, np->n_oil, np->n_rad);
 
-    if (!sector_can_build(sp, mat, work, 100, np->n_name))
+    if (!sector_can_build(sp, mat, np->n_bwork, 100, np->n_name))
        return 0;
     if (!build_can_afford(np->n_cost, 100, np->n_name))
        return 0;
-    build_charge(sp, mat, work, np->n_cost, 100);
+    build_charge(sp, mat, np->n_bwork, np->n_cost, 100);
 
     ef_blank(EF_NUKE, pick_unused_unit_uid(EF_NUKE), &nuke);
     nuke.nuk_x = sp->sct_x;
@@ -362,24 +356,22 @@ build_plane(struct sctstr *sp, int type, int tlev)
 {
     struct plchrstr *pp = &plchr[type];
     short mat[I_MAX+1];
-    int work;
     struct plnstr plane;
 
     memset(mat, 0, sizeof(mat));
     mat[I_MILIT] = pp->pl_crew;
     mat[I_LCM] = pp->pl_lcm;
     mat[I_HCM] = pp->pl_hcm;
-    work = PLN_BLD_WORK(pp->pl_lcm, pp->pl_hcm);
 
     if (sp->sct_type != SCT_AIRPT && !player->god) {
        pr("Planes must be built in airports.\n");
        return 0;
     }
-    if (!sector_can_build(sp, mat, work, PLANE_MINEFF, pp->pl_name))
+    if (!sector_can_build(sp, mat, pp->pl_bwork, PLANE_MINEFF, pp->pl_name))
        return 0;
     if (!build_can_afford(pp->pl_cost, PLANE_MINEFF, pp->pl_name))
        return 0;
-    build_charge(sp, mat, work, pp->pl_cost, PLANE_MINEFF);
+    build_charge(sp, mat, pp->pl_bwork, pp->pl_cost, PLANE_MINEFF);
 
     ef_blank(EF_PLANE, pick_unused_unit_uid(EF_PLANE), &plane);
     plane.pln_x = sp->sct_x;
index f86e55af6ad50cfe99945327d84f248343058a9b..7a6a0489614537d4c1ca3342f96c496f7b33e185 100644 (file)
@@ -29,6 +29,7 @@
  *  Known contributors to this file:
  *     Dave Pare, 1986
  *     Steve McClure, 1996-2000
+ *     Markus Armbruster, 2004-2016
  */
 
 #include <config.h>
@@ -106,7 +107,7 @@ lupgr(void)
        }
        n++;
        lp = &lchr[(int)land.lnd_type];
-       avail = (LND_BLD_WORK(lp->l_lcm, lp->l_hcm) * UPGR_COST + 99) / 100;
+       avail = (lp->l_bwork * UPGR_COST + 99) / 100;
        if (sect.sct_avail < avail) {
            pr("Not enough available work in %s to upgrade a %s\n",
               xyas(sect.sct_x, sect.sct_y, player->cnum), lp->l_name);
@@ -186,7 +187,7 @@ supgr(void)
        }
        n++;
        mp = &mchr[(int)ship.shp_type];
-       avail = (SHP_BLD_WORK(mp->m_lcm, mp->m_hcm) * UPGR_COST + 99) / 100;
+       avail = (mp->m_bwork * UPGR_COST + 99) / 100;
        if (sect.sct_avail < avail) {
            pr("Not enough available work in %s to upgrade a %s\n",
               xyas(sect.sct_x, sect.sct_y, player->cnum), mp->m_name);
@@ -271,7 +272,7 @@ pupgr(void)
            continue;
        n++;
        pp = &plchr[(int)plane.pln_type];
-       avail = (PLN_BLD_WORK(pp->pl_lcm, pp->pl_hcm) * UPGR_COST + 99) / 100;
+       avail = (pp->pl_bwork * UPGR_COST + 99) / 100;
        if (sect.sct_avail < avail) {
            pr("Not enough available work in %s to upgrade a %s\n",
               xyas(sect.sct_x, sect.sct_y, player->cnum), pp->pl_name);
index 82bd86c0c72a96681df62d8c86b684973298af1e..3758b110ec1512008d7dc940d66acdfa2ddab5f5 100644 (file)
@@ -27,7 +27,7 @@
  *  nsc.c: Empire selection global structures
  *
  *  Known contributors to this file:
- *     Markus Armbruster, 2004-2014
+ *     Markus Armbruster, 2004-2016
  */
 
 /*
@@ -271,6 +271,7 @@ struct castr mchr_ca[] = {
     {"glim", fldoff(m_glim), NSC_INT, 0, NULL, EF_BAD, 0},
     {"nxlight", fldoff(m_nxlight), NSC_UCHAR, 0, NULL, EF_BAD, 0},
     {"nchoppers", fldoff(m_nchoppers), NSC_UCHAR, 0, NULL, EF_BAD, 0},
+    {"bwork", fldoff(m_bwork), NSC_INT, 0, NULL, EF_BAD, 0},
     {"tech", fldoff(m_tech), NSC_INT, 0, NULL, EF_BAD, 0},
     {"cost", fldoff(m_cost), NSC_INT, 0, NULL, EF_BAD, 0},
     {"flags", fldoff(m_flags), NSC_INT, 0, NULL,
@@ -306,8 +307,9 @@ struct castr plchr_ca[] = {
     {"name", fldoff(pl_name), NSC_STRING, 0, NULL, EF_BAD, 0},
     {"l_build", fldoff(pl_lcm), NSC_INT, 0, NULL, EF_BAD, 0},
     {"h_build", fldoff(pl_hcm), NSC_INT, 0, NULL, EF_BAD, 0},
-    {"cost", fldoff(pl_cost), NSC_INT, 0, NULL, EF_BAD, 0},
+    {"bwork", fldoff(pl_bwork), NSC_INT, 0, NULL, EF_BAD, 0},
     {"tech", fldoff(pl_tech), NSC_INT, 0, NULL, EF_BAD, 0},
+    {"cost", fldoff(pl_cost), NSC_INT, 0, NULL, EF_BAD, 0},
     {"acc", fldoff(pl_acc), NSC_INT, 0, NULL, EF_BAD, 0},
     {"load", fldoff(pl_load), NSC_INT, 0, NULL, EF_BAD, 0},
     {"att", fldoff(pl_att), NSC_INT, 0, NULL, EF_BAD, 0},
@@ -367,6 +369,7 @@ struct castr lchr_ca[] = {
     NSC_IVEC(fldoff(l_item), ""),
     {"l_build", fldoff(l_lcm), NSC_INT, 0, NULL, EF_BAD, 0},
     {"h_build", fldoff(l_hcm), NSC_INT, 0, NULL, EF_BAD, 0},
+    {"bwork", fldoff(l_bwork), NSC_INT, 0, NULL, EF_BAD, 0},
     {"tech", fldoff(l_tech), NSC_INT, 0, NULL, EF_BAD, 0},
     {"cost", fldoff(l_cost), NSC_INT, 0, NULL, EF_BAD, 0},
     {"att", fldoff(l_att), NSC_FLOAT, 0, NULL, EF_BAD, 0},
@@ -408,8 +411,9 @@ struct castr nchr_ca[] = {
     {"r_build", fldoff(n_rad), NSC_INT, 0, NULL, EF_BAD, 0},
     {"blast", fldoff(n_blast), NSC_INT, 0, NULL, EF_BAD, 0},
     {"dam", fldoff(n_dam), NSC_INT, 0, NULL, EF_BAD, 0},
-    {"cost", fldoff(n_cost), NSC_INT, 0, NULL, EF_BAD, 0},
+    {"bwork", fldoff(n_bwork), NSC_INT, 0, NULL, EF_BAD, 0},
     {"tech", fldoff(n_tech), NSC_INT, 0, NULL, EF_BAD, 0},
+    {"cost", fldoff(n_cost), NSC_INT, 0, NULL, EF_BAD, 0},
     {"weight", fldoff(n_weight), NSC_INT, 0, NULL, EF_BAD, 0},
     {"flags", fldoff(n_flags), NSC_INT, 0, NULL,
      EF_NUKE_CHR_FLAGS, NSC_BITS},
index 74b8862d4e30c9411edc4cc1dd996abbb958601c..832d8644438e251d3539aed7654b3661099284a7 100644 (file)
@@ -27,7 +27,7 @@
 #   land.config: Land unit characteristics
 #
 #   Known contributors to this file:
-#      Markus Armbruster, 2006-2011
+#      Markus Armbruster, 2006-2016
 #
 #   Derived from land.c; known contributors:
 #      Thomas Ruschak, 1992
 # econfig key custom_tables.
 
 config land-chr
-type name                 l_b h_b tech cost ...
- 0  "cav  cavalry"         10   5   30  500
- 1  "linf light infantry"   8   4   40  300
- 2  "inf  infantry"        10   5   50  500
- 3  "mtif motor inf"       15  10  190  400
- 4  "mif  mech inf"        15  10  190  800
- 5  "mar  marines"         10   5  140 1000
- 6  "sup  supply"          10   5   50  500
- 7  "tra  train"          100  50   40 3500
- 8  "spy  infiltrator"     10   5   40  750
- 9  "com  commando"        10   5   55 1500
-10  "aau  aa unit"         20  10   70  500
-11  "art  artillery"       20  10   35  800
-12  "lat  lt artillery"    20  10   70  500
-13  "hat  hvy artillery"   40  20  100  800
-14  "mat  mech artillery"  20  10  200 1000
-15  "eng  engineer"        10   5  130 3000
-16  "meng mech engineer"   10   5  260 4500
-17  "lar  lt armor"        10   5  150  600
-18  "har  hvy armor"       20  10  120  500
-19  "arm  armor"           20  10  170 1000
-20  "sec  security"        10   5  170  600
-21  "rad  radar unit"      10   5  270 1000
+type name                 l_b h_b bwork tech cost ...
+ 0  "cav  cavalry"         10   5    40   30  500
+ 1  "linf light infantry"   8   4    36   40  300
+ 2  "inf  infantry"        10   5    40   50  500
+ 3  "mtif motor inf"       15  10    55  190  400
+ 4  "mif  mech inf"        15  10    55  190  800
+ 5  "mar  marines"         10   5    40  140 1000
+ 6  "sup  supply"          10   5    40   50  500
+ 7  "tra  train"          100  50   220   40 3500
+ 8  "spy  infiltrator"     10   5    40   40  750
+ 9  "com  commando"        10   5    40   55 1500
+10  "aau  aa unit"         20  10    60   70  500
+11  "art  artillery"       20  10    60   35  800
+12  "lat  lt artillery"    20  10    60   70  500
+13  "hat  hvy artillery"   40  20   100  100  800
+14  "mat  mech artillery"  20  10    60  200 1000
+15  "eng  engineer"        10   5    40  130 3000
+16  "meng mech engineer"   10   5    40  260 4500
+17  "lar  lt armor"        10   5    40  150  600
+18  "har  hvy armor"       20  10    60  120  500
+19  "arm  armor"           20  10    60  170 1000
+20  "sec  security"        10   5    40  170  600
+21  "rad  radar unit"      10   5    40  270 1000
 /config
 
 config land-chr
index 964f02aee2e523bdfa64ae6a8ccb2dafd5fcd97b..bec845ffe506338134e694366b82364c7ecfde09 100644 (file)
@@ -27,7 +27,7 @@
 #   nuke.c: Nuke characteristics
 #
 #   Known contributors to this file:
-#      Markus Armbruster, 2006-2011
+#      Markus Armbruster, 2006-2016
 #
 #   Derived from nuke.c.
 #
 # econfig key custom_tables.
 
 config nuke-chr
-type name           l_b h_b o_b r_b bla dam  cost tech wei flags
- 0  "10kt  fission"  50  50  25  70  3  70  10000  280   4 ()
- 1  "15kt  fission"  50  50  25  80  3  90  15000  290   5 ()
- 2  "50kt  fission"  60  60  30  90  3 100  25000  300   6 ()
- 3  "100kt fission"  75  75  40 120  4 125  30000  310   8 ()
- 4  "5kt   fusion"   15  15  15  30  2  80  12500  315   1 ()
- 5  "75kt  fusion"   40  40  35  50  3  90  20000  320   3 ()
- 6  "250kt fusion"   50  50  45  60  4 110  25000  330   4 ()
- 7  "500kt fusion"   60  60  50  80  5 120  35000  340   5 ()
- 8  "1mt   fusion"   75  75  50 110  6 150  40000  350   5 ()
- 9  "60kt  neutron"  60  60  30 100  3  30  30000  355   2 (neutron)
-10  "3mt   fusion"  100 100  75 130  7 170  45000  360   6 ()
-11  "5mt   fusion"  120 120 100 150  8 190  50000  370   8 ()
-12  "120kt neutron"  75  75  40 120  5  50  36000  375   3 (neutron)
+type name           l_b h_b o_b r_b bwork bla dam  cost tech wei flags
+ 0  "10kt  fission"  50  50  25  70    49  3  70  10000  280   4 ()
+ 1  "15kt  fission"  50  50  25  80    51  3  90  15000  290   5 ()
+ 2  "50kt  fission"  60  60  30  90    60  3 100  25000  300   6 ()
+ 3  "100kt fission"  75  75  40 120    77  4 125  30000  310   8 ()
+ 4  "5kt   fusion"   15  15  15  30    18  2  80  12500  315   1 ()
+ 5  "75kt  fusion"   40  40  35  50    41  3  90  20000  320   3 ()
+ 6  "250kt fusion"   50  50  45  60    51  4 110  25000  330   4 ()
+ 7  "500kt fusion"   60  60  50  80    62  5 120  35000  340   5 ()
+ 8  "1mt   fusion"   75  75  50 110    77  6 150  40000  350   5 ()
+ 9  "60kt  neutron"  60  60  30 100    62  3  30  30000  355   2 (neutron)
+10  "3mt   fusion"  100 100  75 130   101  7 170  45000  360   6 ()
+11  "5mt   fusion"  120 120 100 150   122  8 190  50000  370   8 ()
+12  "120kt neutron"  75  75  40 120    77  5  50  36000  375   3 (neutron)
 /config
index e03588fcbffcc5cf6478c940e111a5c72c3038e4..5e6a052b749bbb925dcfb405587a05c3e468aab2 100644 (file)
@@ -27,7 +27,7 @@
 #   plane.config: Plane characteristics
 #
 #   Known contributors to this file:
-#      Markus Armbruster, 2006-2011
+#      Markus Armbruster, 2006-2016
 #
 #   Derived from plane.c; known contributors:
 #      Dave Pare, 1986
 # econfig key custom_tables.
 
 config plane-chr
-type name                       l_b h_b cre tech cost ...
- 0  "f1   Sopwith Camel"          8   2   1   50  400
- 1  "f2   P-51 Mustang"           8   2   1   80  400
- 2  "jf1  F-4 Phantom"           12   4   2  125 1000
- 3  "jf2  AV-8B Harrier"         12   4   2  195 1400
- 4  "sf   F-117A Nighthawk"      15   5   2  325 3000
- 5  "es   P-38 Lightning"         9   3   1   90  700
- 6  "jes  F-14E jet escort"      14   8   2  160 1400
- 7  "lb   TBD-1 Devastator"      10   3   1   60  550
- 8  "jl   A-6 Intruder"          14   4   2  130 1000
- 9  "mb   medium bomber"         14   5   3   80 1000
-10  "jfb  FB-111 Aardvark f/b"   20  10   5  140 1800
-11  "hb   B-26B Marauder"        20   6   2   90 1100
-12  "jhb  B-52 Strato-Fortress"  26  13   5  150 3200
-13  "sb   B-2 stealth bomber"    15   5   2  325 4000
-14  "as   anti-sub plane"        10   3   2  100  550
-15  "np   naval plane"           20  10   4  135 1800
-16  "nc   AH-1 Cobra"             8   2   2  160  800
-17  "ac   AH-64 Apache"           8   2   2  200  800
-18  "tc   transport chopper"      8   2   2  135  800
-19  "tr   C-56 Lodestar"         14   5   3   85 1000
-20  "jt   C-141 Starlifter"      18   5   3  160 1500
-21  "zep  Zeppelin"               6   2   3   70 1000
-22  "re   recon"                 12   4   2  130  800
-23  "sp   E2-C Hawkeye"          15   5   2  190 2000
-24  "lst  landsat"               20  20   0  245 2000
-25  "ss   KH-7 spysat"           20  20   0  305 4000
-26  "mi   Harpoon"                8   2   0  160  300
-27  "sam  Sea Sparrow"            3   1   0  180  200
-28  "ssm  V2"                    15  15   0  145  800
-29  "srbm Atlas"                 20  20   0  200 1000
-30  "irbm Titan"                 20  20   0  260 1500
-31  "icbm Minuteman"             20  20   0  310 3000
-32  "slbm Trident"               20  20   0  280 2000
-33  "asat anti-sat"              20  20   0  305 2000
-34  "abm  Patriot"               16   8   0  270 1500
+type name                       l_b h_b cre bwork tech cost ...
+ 0  "f1   Sopwith Camel"          8   2   1    32   50  400
+ 1  "f2   P-51 Mustang"           8   2   1    32   80  400
+ 2  "jf1  F-4 Phantom"           12   4   2    40  125 1000
+ 3  "jf2  AV-8B Harrier"         12   4   2    40  195 1400
+ 4  "sf   F-117A Nighthawk"      15   5   2    45  325 3000
+ 5  "es   P-38 Lightning"         9   3   1    35   90  700
+ 6  "jes  F-14E jet escort"      14   8   2    50  160 1400
+ 7  "lb   TBD-1 Devastator"      10   3   1    36   60  550
+ 8  "jl   A-6 Intruder"          14   4   2    42  130 1000
+ 9  "mb   medium bomber"         14   5   3    44   80 1000
+10  "jfb  FB-111 Aardvark f/b"   20  10   5    60  140 1800
+11  "hb   B-26B Marauder"        20   6   2    52   90 1100
+12  "jhb  B-52 Strato-Fortress"  26  13   5    72  150 3200
+13  "sb   B-2 stealth bomber"    15   5   2    45  325 4000
+14  "as   anti-sub plane"        10   3   2    36  100  550
+15  "np   naval plane"           20  10   4    60  135 1800
+16  "nc   AH-1 Cobra"             8   2   2    32  160  800
+17  "ac   AH-64 Apache"           8   2   2    32  200  800
+18  "tc   transport chopper"      8   2   2    32  135  800
+19  "tr   C-56 Lodestar"         14   5   3    44   85 1000
+20  "jt   C-141 Starlifter"      18   5   3    48  160 1500
+21  "zep  Zeppelin"               6   2   3    30   70 1000
+22  "re   recon"                 12   4   2    40  130  800
+23  "sp   E2-C Hawkeye"          15   5   2    45  190 2000
+24  "lst  landsat"               20  20   0    80  245 2000
+25  "ss   KH-7 spysat"           20  20   0    80  305 4000
+26  "mi   Harpoon"                8   2   0    32  160  300
+27  "sam  Sea Sparrow"            3   1   0    25  180  200
+28  "ssm  V2"                    15  15   0    65  145  800
+29  "srbm Atlas"                 20  20   0    80  200 1000
+30  "irbm Titan"                 20  20   0    80  260 1500
+31  "icbm Minuteman"             20  20   0    80  310 3000
+32  "slbm Trident"               20  20   0    80  280 2000
+33  "asat anti-sat"              20  20   0    80  305 2000
+34  "abm  Patriot"               16   8   0    52  270 1500
 /config
 
 config plane-chr
index 1856eb4741b00575b3ce320ca3ad761725cc1abd..9b8cd7b0bb026c6cdc6981708a62bcdba185aaac 100644 (file)
@@ -27,7 +27,7 @@
 #   ship.config: Ship characteristics
 #
 #   Known contributors to this file:
-#      Markus Armbruster, 2006-2015
+#      Markus Armbruster, 2006-2016
 #
 #   Derived from ship.c; known contributors:
 #      Dave Pare, 1986
 # econfig key custom_tables.
 
 config ship-chr
-type name                       l_b h_b tech cost ...
- 0  "fb   fishing boat"          25  15    0  180
- 1  "ft   fishing trawler"       25  15   35  300
- 2  "cs   cargo ship"            60  40   20  500
- 3  "os   ore ship"              60  40   20  500
- 4  "ss   slave ship"            60  40    0  300
+type name                       l_b h_b bwork tech cost ...
+ 0  "fb   fishing boat"          25  15    75    0  180
+ 1  "ft   fishing trawler"       25  15    75   35  300
+ 2  "cs   cargo ship"            60  40   160   20  500
+ 3  "os   ore ship"              60  40   160   20  500
+ 4  "ss   slave ship"            60  40   160    0  300
 # Uncomment to enable trade ships
-# 5 "ts   trade ship"           200 100   30 1750
- 6  "frg  frigate"               30  30    0  600
- 7  "oe   oil exploration boat"  25  15   40  800
- 8  "od   oil derrick"           60  60   50 1500
- 9  "pt   patrol boat"           20  10   40  300
-10  "lc   light cruiser"         30  40   45  800
-11  "hc   heavy cruiser"         40  50   50 1200
-12  "tt   troop transport"       50  50   10  800
-13  "bb   battleship"            50  70   45 1800
-14  "bbc  battlecruiser"         50  60   75 1500
-15  "tk   tanker"                60  40   35  600
-16  "ms   minesweeper"           25  15   40  400
-17  "dd   destroyer"             30  30   70  600
-18  "sb   submarine"             30  30   60  650
-19  "sbc  cargo submarine"       40  40  150 1200
-20  "cal  light carrier"         50  60   80 2700
-21  "car  aircraft carrier"      60  70  160 4500
-22  "can  nuc carrier"           70  80  305 8000
-23  "ls   landing ship"          60  40  145 1000
-24  "af   asw frigate"           40  30  220  800
-25  "na   nuc attack sub"        30  40  260 1200
-26  "ad   asw destroyer"         40  40  240 1500
-27  "nm   nuc miss sub"          30  40  270 1500
-28  "msb  missile sub"           30  30  230 1200
-29  "mb   missile boat"          20  20  180  500
-30  "mf   missile frigate"       40  30  280 1000
-31  "mc   missile cruiser"       50  50  290 1500
-32  "aac  aa cruiser"            50  60  130 1500
-33  "agc  aegis cruiser"         50  60  265 4000
-34  "ncr  nuc cruiser"           50  50  325 1800
-35  "nas  nuc asw cruiser"       50  50  330 1800
-36  "nsp  nuc supply ship"       60  40  360 1500
+# 5 "ts   trade ship"           200 100   420   30 1750
+ 6  "frg  frigate"               30  30   110    0  600
+ 7  "oe   oil exploration boat"  25  15    75   40  800
+ 8  "od   oil derrick"           60  60   200   50 1500
+ 9  "pt   patrol boat"           20  10    60   40  300
+10  "lc   light cruiser"         30  40   130   45  800
+11  "hc   heavy cruiser"         40  50   160   50 1200
+12  "tt   troop transport"       50  50   170   10  800
+13  "bb   battleship"            50  70   210   45 1800
+14  "bbc  battlecruiser"         50  60   190   75 1500
+15  "tk   tanker"                60  40   160   35  600
+16  "ms   minesweeper"           25  15    75   40  400
+17  "dd   destroyer"             30  30   110   70  600
+18  "sb   submarine"             30  30   110   60  650
+19  "sbc  cargo submarine"       40  40   140  150 1200
+20  "cal  light carrier"         50  60   190   80 2700
+21  "car  aircraft carrier"      60  70   220  160 4500
+22  "can  nuc carrier"           70  80   250  305 8000
+23  "ls   landing ship"          60  40   160  145 1000
+24  "af   asw frigate"           40  30   120  220  800
+25  "na   nuc attack sub"        30  40   130  260 1200
+26  "ad   asw destroyer"         40  40   140  240 1500
+27  "nm   nuc miss sub"          30  40   130  270 1500
+28  "msb  missile sub"           30  30   110  230 1200
+29  "mb   missile boat"          20  20    80  180  500
+30  "mf   missile frigate"       40  30   120  280 1000
+31  "mc   missile cruiser"       50  50   170  290 1500
+32  "aac  aa cruiser"            50  60   190  130 1500
+33  "agc  aegis cruiser"         50  60   190  265 4000
+34  "ncr  nuc cruiser"           50  50   170  325 1800
+35  "nas  nuc asw cruiser"       50  50   170  330 1800
+36  "nsp  nuc supply ship"       60  40   160  360 1500
 /config
 
 config ship-chr
index c8975a0bf9d248fb1cc2df12b94af56062d1aac3..29acdfa2abbf17d63ba17c6961f99ef09d063fc3 100644 (file)
@@ -31,7 +31,7 @@
  *     Jeff Bailey, 1990
  *     Steve McClure, 1996
  *     Ron Koenderink, 2005-2009
- *     Markus Armbruster, 2006-2015
+ *     Markus Armbruster, 2006-2016
  */
 
 #include <config.h>
@@ -192,16 +192,14 @@ show_nuke_build(int tlev)
     int n = make_nchr_index(chridx, tlev);
     int i;
     struct nchrstr *np;
-    int avail;
 
     pr("%13s lcm hcm  oil  rad avail tech res $\n", "");
 
     for (i = 0; i < n; i++) {
        np = &nchr[chridx[i].type];
-       avail = NUK_BLD_WORK(np->n_lcm, np->n_hcm, np->n_oil, np->n_rad);
        pr("%-13.13s %3d %3d %4d %4d %5d %4d %3.0f $%6d\n",
           np->n_name, np->n_lcm, np->n_hcm, np->n_oil,
-          np->n_rad, avail, np->n_tech,
+          np->n_rad, np->n_bwork, np->n_tech,
           drnuke_const > MIN_DRNUKE_CONST ?
                ceil(np->n_tech * drnuke_const) : 0.0,
           np->n_cost);
@@ -243,7 +241,7 @@ show_ship_build(int tlev)
        mp = &mchr[chridx[i].type];
        pr("%-25.25s %3d %3d %5d %4d $%d\n",
           mp->m_name, mp->m_lcm, mp->m_hcm,
-          SHP_BLD_WORK(mp->m_lcm, mp->m_hcm), mp->m_tech, mp->m_cost);
+          mp->m_bwork, mp->m_tech, mp->m_cost);
     }
 }
 
@@ -335,7 +333,7 @@ show_plane_build(int tlev)
        pr("%-25.25s %3d %3d %4d %5d %4d $%d\n",
           pp->pl_name, pp->pl_lcm,
           pp->pl_hcm, pp->pl_crew,
-          PLN_BLD_WORK(pp->pl_lcm, pp->pl_hcm), pp->pl_tech, pp->pl_cost);
+          pp->pl_bwork, pp->pl_tech, pp->pl_cost);
     }
 }
 
@@ -354,7 +352,7 @@ show_land_build(int tlev)
           lp->l_name, lp->l_lcm,
           lp->l_hcm,
           lp->l_gun,
-          LND_BLD_WORK(lp->l_lcm, lp->l_hcm), lp->l_tech, lp->l_cost);
+          lp->l_bwork, lp->l_tech, lp->l_cost);
     }
 }
 
index 14e76021da91e9c9cb978ab35f19d9dbcb776fa5..63ccf5fe17ffd7fd89f7f18057b4127cecb4fc60 100644 (file)
@@ -30,7 +30,7 @@
  *     Dave Pare, 1986
  *     Thomas Ruschak, 1992
  *     Steve McClure, 1996
- *     Markus Armbruster, 2006-2011
+ *     Markus Armbruster, 2006-2016
  */
 
 #include <config.h>
@@ -199,7 +199,6 @@ landrepair(struct lndstr *land, struct natstr *np, struct bp *bp, int etus)
     struct lchrstr *lp;
     int build;
     int avail;
-    int w_p_eff;
     int mult;
     int mvec[I_MAX + 1];
 
@@ -223,8 +222,7 @@ landrepair(struct lndstr *land, struct natstr *np, struct bp *bp, int etus)
     else
        avail = bp_get_avail(bp, sp) * 100;
 
-    w_p_eff = LND_BLD_WORK(lp->l_lcm, lp->l_hcm);
-    delta = roundavg((double)avail / w_p_eff);
+    delta = roundavg((double)avail / lp->l_bwork);
     if (delta <= 0)
        return;
     if (delta > (int)((float)etus * land_grow_scale))
@@ -240,7 +238,7 @@ landrepair(struct lndstr *land, struct natstr *np, struct bp *bp, int etus)
     if ((sp->sct_type != SCT_HEADQ) && (sp->sct_type != SCT_FORTR))
        build /= 3;
 
-    avail -= build * w_p_eff;
+    avail -= build * lp->l_bwork;
     if (avail < 0)
        avail = 0;
     if (!player->simulation)
index 6c6e6a2faa004340aae0ac9571784a3b438e6f37..059a96107b0fa38af6a11078662bd92ee42f33f8 100644 (file)
@@ -29,7 +29,7 @@
  *  Known contributors to this file:
  *     Dave Pare, 1986
  *     Steve McClure, 1998
- *     Markus Armbruster, 2006-2011
+ *     Markus Armbruster, 2006-2016
  */
 
 #include <config.h>
@@ -131,7 +131,6 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
     int delta;
     int mult;
     int avail;
-    int w_p_eff;
     int used;
 
     carrier = NULL;
@@ -166,8 +165,7 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
     if (carrier)
        avail += etus * carrier->shp_item[I_MILIT] / 2;
 
-    w_p_eff = PLN_BLD_WORK(pcp->pl_lcm, pcp->pl_hcm);
-    delta = roundavg((double)avail / w_p_eff);
+    delta = roundavg((double)avail / pcp->pl_bwork);
     if (delta <= 0)
        return;
     if (delta > (int)((float)etus * plane_grow_scale))
@@ -184,7 +182,7 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
     if (carrier)
        build = delta;
 
-    used = build * w_p_eff;
+    used = build * pcp->pl_bwork;
     /*
      * I didn't use roundavg here, because I want to
      * penalize the player with a large number of planes.
index 4cf079bf820c8b8b028f2ef0bad6780de0f245a4..598a2e72e3c803daebffc4fc73b80e04eb57e5da 100644 (file)
@@ -30,7 +30,7 @@
  *     Dave Pare, 1986
  *     Steve McClure, 1996
  *     Ron Koenderink, 2004
- *     Markus Armbruster, 2006-2011
+ *     Markus Armbruster, 2006-2016
  */
 
 #include <config.h>
@@ -247,7 +247,6 @@ shiprepair(struct shpstr *ship, struct natstr *np, struct bp *bp, int etus)
     int build;
     int wf;
     int avail;
-    int w_p_eff;
     int mult;
     int mvec[I_MAX + 1];
 
@@ -274,8 +273,6 @@ shiprepair(struct shpstr *ship, struct natstr *np, struct bp *bp, int etus)
            avail = wf + bp_get_avail(bp, sp) * 100;
     }
 
-    w_p_eff = SHP_BLD_WORK(mp->m_lcm, mp->m_hcm);
-
     if ((sp->sct_off) && (sp->sct_own == ship->shp_own))
        return;
 
@@ -288,7 +285,7 @@ shiprepair(struct shpstr *ship, struct natstr *np, struct bp *bp, int etus)
        return;
     }
 
-    delta = roundavg((double)avail / w_p_eff);
+    delta = roundavg((double)avail / mp->m_bwork);
     if (delta <= 0)
        return;
     if (delta > (int)((float)etus * ship_grow_scale))
@@ -304,7 +301,7 @@ shiprepair(struct shpstr *ship, struct natstr *np, struct bp *bp, int etus)
     if (sp->sct_type != SCT_HARBR)
        build = delta;
 
-    wf -= build * w_p_eff;
+    wf -= build * mp->m_bwork;
     if (wf < 0) {
        /*
         * I didn't use roundavg here, because I want to penalize
index e5439a1c789819aabd814c348531f2533c9c4ed6..1593ec4ba2cd8c7a0598782528208d80e6299f0e 100644 (file)
@@ -33,7 +33,7 @@ tests/empdump/xundump-errors/colhdr-sep:2: bad field separator after field 1
 tests/empdump/xundump-errors/colhdr-symidx:2: symbolic index in header field 1 not yet implemented
 tests/empdump/xundump-errors/colhdr-unexp2:2: expected header 'pkg(0)' in field 7
 tests/empdump/xundump-errors/colhdr-unk:2: unknown header 'xxx' in field 1
-tests/empdump/xundump-errors/fld-ambsym:2: ambiguous flags symbol 's' in field 29
+tests/empdump/xundump-errors/fld-ambsym:2: ambiguous flags symbol 's' in field 30
 tests/empdump/xundump-errors/fld-badnum:3: field 2 can't hold this value
 tests/empdump/xundump-errors/fld-constnum:3: value for field 1 must be 0
 tests/empdump/xundump-errors/fld-conststr:3: value for field 1 must be "road network"
@@ -63,6 +63,7 @@ tests/empdump/xundump-errors/fld-eof:2: field 'frnge' missing
 tests/empdump/xundump-errors/fld-eof:2: field 'glim' missing
 tests/empdump/xundump-errors/fld-eof:2: field 'nxlight' missing
 tests/empdump/xundump-errors/fld-eof:2: field 'nchoppers' missing
+tests/empdump/xundump-errors/fld-eof:2: field 'bwork' missing
 tests/empdump/xundump-errors/fld-eof:2: field 'tech' missing
 tests/empdump/xundump-errors/fld-eof:2: field 'cost' missing
 tests/empdump/xundump-errors/fld-eof:2: field 'flags' missing
index bd1ae3edb17955336f18f422afe82b86fe9512e1..dcd3c5f960a020b1399b7e900fce5ea32123e702 100644 (file)
@@ -1,3 +1,3 @@
 XDUMP ship-chr 1
-0 "ft\040\040\040fishing\040trawler" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 25 15 2 0 0 0 0 35 300 (sw s) 0 0
+0 "ft\040\040\040fishing\040trawler" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 25 15 2 0 0 0 0 35 300 75 (sw s) 0 0
 # ambiguous flags symbol 's' in field 29
index d2765a39137b8eefaab6fdfe20e2110c44d6d210..027781be5d2516568737718825e2b64846951779 100644 (file)
     Play#0 output Play#0 1 "glim" 8 0 0 -1
     Play#0 output Play#0 1 "nxlight" 5 0 0 -1
     Play#0 output Play#0 1 "nchoppers" 5 0 0 -1
+    Play#0 output Play#0 1 "bwork" 8 0 0 -1
     Play#0 output Play#0 1 "tech" 8 0 0 -1
     Play#0 output Play#0 1 "cost" 8 0 0 -1
     Play#0 output Play#0 1 "flags" 8 8 0 48
     Play#0 output Play#0 1 "nplanes" 5 0 0 -1
     Play#0 output Play#0 1 "nland" 5 0 0 -1
-    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 20
     Play#0 command xdump
     Play#0 output Play#0 1 "name" 3 0 0 -1
     Play#0 output Play#0 1 "l_build" 8 0 0 -1
     Play#0 output Play#0 1 "h_build" 8 0 0 -1
-    Play#0 output Play#0 1 "cost" 8 0 0 -1
+    Play#0 output Play#0 1 "bwork" 8 0 0 -1
     Play#0 output Play#0 1 "tech" 8 0 0 -1
+    Play#0 output Play#0 1 "cost" 8 0 0 -1
     Play#0 output Play#0 1 "acc" 8 0 0 -1
     Play#0 output Play#0 1 "load" 8 0 0 -1
     Play#0 output Play#0 1 "att" 8 0 0 -1
     Play#0 output Play#0 1 "fuel" 8 0 0 -1
     Play#0 output Play#0 1 "stealth" 8 0 0 -1
     Play#0 output Play#0 1 "flags" 8 8 0 43
-    Play#0 output Play#0 1 /15
+    Play#0 output Play#0 1 /16
     Play#0 output Play#0 6 0 640
     Play#0 input xdump meta 21
     Play#0 command xdump
     Play#0 output Play#0 1 "rad" 6 0 0 -1
     Play#0 output Play#0 1 "l_build" 8 0 0 -1
     Play#0 output Play#0 1 "h_build" 8 0 0 -1
+    Play#0 output Play#0 1 "bwork" 8 0 0 -1
     Play#0 output Play#0 1 "tech" 8 0 0 -1
     Play#0 output Play#0 1 "cost" 8 0 0 -1
     Play#0 output Play#0 1 "att" 12 0 0 -1
     Play#0 output Play#0 1 "flags" 8 8 0 30
     Play#0 output Play#0 1 "nxlight" 5 0 0 -1
     Play#0 output Play#0 1 "nland" 5 0 0 -1
-    Play#0 output Play#0 1 /35
+    Play#0 output Play#0 1 /36
     Play#0 output Play#0 6 0 640
     Play#0 input xdump meta 22
     Play#0 command xdump
     Play#0 output Play#0 1 "r_build" 8 0 0 -1
     Play#0 output Play#0 1 "blast" 8 0 0 -1
     Play#0 output Play#0 1 "dam" 8 0 0 -1
-    Play#0 output Play#0 1 "cost" 8 0 0 -1
+    Play#0 output Play#0 1 "bwork" 8 0 0 -1
     Play#0 output Play#0 1 "tech" 8 0 0 -1
+    Play#0 output Play#0 1 "cost" 8 0 0 -1
     Play#0 output Play#0 1 "weight" 8 0 0 -1
     Play#0 output Play#0 1 "flags" 8 8 0 39
-    Play#0 output Play#0 1 /12
+    Play#0 output Play#0 1 /13
     Play#0 output Play#0 6 0 640
     Play#0 input xdump meta 23
     Play#0 command xdump
     Play#0 input xdump ship-chr *
     Play#0 command xdump
     Play#0 output Play#0 1 XDUMP ship-chr 0
-    Play#0 output Play#0 1 0 "fb\\040\\040\\040fishing\\040boat" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 10 15 2 0 0 0 0 0 180 524289 0 0
-    Play#0 output Play#0 1 1 "ft\\040\\040\\040fishing\\040trawler" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 25 15 2 0 0 0 0 35 300 524289 0 0
-    Play#0 output Play#0 1 2 "cs\\040\\040\\040cargo\\040ship" 600 50 300 50 0 0 0 0 900 0 1400 900 250 0 60 40 20 25 35 3 0 0 1 0 20 500 262144 0 2
-    Play#0 output Play#0 1 3 "os\\040\\040\\040ore\\040ship" 30 5 0 0 0 990 990 0 200 0 0 0 45 990 60 40 20 25 35 3 0 0 1 0 20 500 0 0 0
-    Play#0 output Play#0 1 4 "ss\\040\\040\\040slave\\040ship" 20 80 0 0 0 0 0 0 200 0 0 0 1200 0 60 40 20 10 35 3 0 0 1 0 0 300 0 0 0
-    Play#0 output Play#0 1 6 "frg\\040\\040frigate" 0 60 10 2 0 0 0 0 60 0 0 0 0 0 30 30 50 25 25 3 1 1 1 0 0 600 16384 0 2
-    Play#0 output Play#0 1 7 "oe\\040\\040\\040oil\\040exploration\\040boat" 10 5 0 0 0 0 0 0 100 1 0 0 0 0 25 15 10 25 15 2 0 0 0 0 40 800 524320 0 0
-    Play#0 output Play#0 1 8 "od\\040\\040\\040oil\\040derrick" 990 80 0 0 0 0 0 0 990 990 0 0 990 0 60 60 30 15 65 3 0 0 2 0 50 1500 32 0 0
-    Play#0 output Play#0 1 9 "pt\\040\\040\\040patrol\\040boat" 0 2 12 2 0 0 0 0 5 0 0 0 0 0 20 10 10 38 10 2 1 1 0 0 40 300 524290 0 0
-    Play#0 output Play#0 1 10 "lc\\040\\040\\040light\\040cruiser" 0 100 40 5 0 0 0 0 100 0 0 0 0 0 30 40 50 30 30 5 6 3 1 0 45 800 128 0 2
-    Play#0 output Play#0 1 11 "hc\\040\\040\\040heavy\\040cruiser" 0 120 100 8 0 0 0 0 200 0 0 0 0 0 40 50 70 30 30 5 8 4 1 0 50 1200 0 0 4
-    Play#0 output Play#0 1 12 "tt\\040\\040\\040troop\\040transport" 0 120 20 4 0 0 0 0 120 0 0 0 0 0 50 50 60 20 35 3 1 2 1 0 10 800 16384 0 2
-    Play#0 output Play#0 1 13 "bb\\040\\040\\040battleship" 0 200 200 10 0 0 0 0 900 0 0 0 0 0 50 70 95 25 35 6 10 7 1 0 45 1800 0 0 2
-    Play#0 output Play#0 1 14 "bbc\\040\\040battlecruiser" 0 180 100 10 0 0 0 0 400 0 0 0 0 0 50 60 55 30 35 6 10 6 1 0 75 1500 0 0 2
-    Play#0 output Play#0 1 15 "tk\\040\\040\\040tanker" 30 5 0 0 990 0 0 0 200 990 0 0 25 0 60 40 75 25 45 3 0 0 1 0 35 600 262144 0 0
-    Play#0 output Play#0 1 16 "ms\\040\\040\\040minesweeper" 0 10 100 1 0 0 0 0 90 0 0 0 0 0 25 15 10 25 15 2 0 0 0 0 40 400 524672 0 0
-    Play#0 output Play#0 1 17 "dd\\040\\040\\040destroyer" 0 60 40 4 0 0 0 0 80 0 0 0 0 0 30 30 45 35 20 4 6 3 1 0 70 600 196 0 1
-    Play#0 output Play#0 1 18 "sb\\040\\040\\040submarine" 0 25 36 5 0 0 0 0 80 0 0 0 0 0 30 30 25 20 5 4 3 3 0 0 60 650 706 0 0
-    Play#0 output Play#0 1 19 "sbc\\040\\040cargo\\040submarine" 5 10 104 20 100 0 0 0 900 0 500 300 0 0 40 40 50 30 2 3 0 0 0 0 150 1200 262720 0 0
-    Play#0 output Play#0 1 20 "cal\\040\\040light\\040carrier" 0 175 250 4 300 0 0 0 180 0 0 0 0 0 50 60 60 30 40 5 2 2 4 20 80 2700 8 20 0
-    Play#0 output Play#0 1 21 "car\\040\\040aircraft\\040carrier" 0 350 500 4 500 0 0 0 900 0 0 0 0 0 60 70 80 35 40 7 2 2 10 40 160 4500 8 40 0
-    Play#0 output Play#0 1 22 "can\\040\\040nuc\\040carrier" 0 350 999 4 999 0 0 0 900 0 0 0 0 0 70 80 100 45 40 9 2 2 20 4 305 8000 262152 60 0
-    Play#0 output Play#0 1 23 "ls\\040\\040\\040landing\\040ship" 0 400 10 1 0 0 0 0 300 0 0 0 0 0 60 40 40 30 30 2 0 0 2 0 145 1000 2048 0 6
-    Play#0 output Play#0 1 24 "af\\040\\040\\040asw\\040frigate" 0 60 60 4 0 0 0 0 120 0 0 0 0 0 40 30 50 35 30 5 2 2 4 0 220 800 4166 0 0
-    Play#0 output Play#0 1 25 "na\\040\\040\\040nuc\\040attack\\040sub" 0 25 60 6 0 0 0 0 500 0 0 0 0 0 30 40 45 40 3 6 5 3 0 0 260 1200 4802 0 0
-    Play#0 output Play#0 1 26 "ad\\040\\040\\040asw\\040destroyer" 0 100 80 6 40 0 0 0 500 0 0 0 0 0 40 40 60 40 35 6 8 3 10 2 240 1500 4166 0 0
-    Play#0 output Play#0 1 27 "nm\\040\\040\\040nuc\\040miss\\040sub" 0 25 200 1 0 0 0 0 500 0 0 0 0 0 30 40 55 35 2 6 0 0 0 0 270 1500 592 20 0
-    Play#0 output Play#0 1 28 "msb\\040\\040missile\\040sub" 0 25 100 1 0 0 0 0 500 0 0 0 0 0 30 30 35 30 3 3 0 0 0 0 230 1200 592 10 0
-    Play#0 output Play#0 1 29 "mb\\040\\040\\040missile\\040boat" 0 5 100 3 0 0 0 0 500 0 0 0 0 0 20 20 15 40 15 3 2 2 0 0 180 500 16 10 0
-    Play#0 output Play#0 1 30 "mf\\040\\040\\040missile\\040frigate" 0 60 220 4 0 0 0 0 120 0 0 0 0 0 40 30 50 35 30 5 2 2 2 0 280 1000 16 20 0
-    Play#0 output Play#0 1 31 "mc\\040\\040\\040missile\\040cruiser" 0 120 500 6 160 0 0 0 200 0 0 0 0 0 50 50 70 35 35 8 8 6 8 8 290 1500 1048592 40 0
-    Play#0 output Play#0 1 32 "aac\\040\\040aa\\040cruiser" 0 100 100 15 0 0 0 0 200 0 0 0 0 0 50 60 80 35 30 6 1 8 1 0 130 1500 1048576 0 4
-    Play#0 output Play#0 1 33 "agc\\040\\040aegis\\040cruiser" 0 200 400 25 40 0 0 0 900 0 0 0 0 0 50 60 80 35 30 6 1 16 30 2 265 4000 1048592 32 0
-    Play#0 output Play#0 1 34 "ncr\\040\\040nuc\\040cruiser" 0 200 400 8 40 0 0 0 900 0 0 0 0 0 50 50 100 45 35 6 14 7 10 2 325 1800 1048592 20 0
-    Play#0 output Play#0 1 35 "nas\\040\\040nuc\\040asw\\040cruiser" 0 200 120 6 160 0 0 0 500 0 0 0 0 0 50 50 80 45 35 9 10 4 25 8 330 1800 4166 0 0
-    Play#0 output Play#0 1 36 "nsp\\040\\040nuc\\040supply\\040ship" 50 50 600 50 999 0 0 0 999 0 1500 900 0 0 60 40 40 45 35 6 0 0 10 2 360 1500 262144 0 2
+    Play#0 output Play#0 1 0 "fb\\040\\040\\040fishing\\040boat" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 10 15 2 0 0 0 0 75 0 180 524289 0 0
+    Play#0 output Play#0 1 1 "ft\\040\\040\\040fishing\\040trawler" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 25 15 2 0 0 0 0 75 35 300 524289 0 0
+    Play#0 output Play#0 1 2 "cs\\040\\040\\040cargo\\040ship" 600 50 300 50 0 0 0 0 900 0 1400 900 250 0 60 40 20 25 35 3 0 0 1 0 160 20 500 262144 0 2
+    Play#0 output Play#0 1 3 "os\\040\\040\\040ore\\040ship" 30 5 0 0 0 990 990 0 200 0 0 0 45 990 60 40 20 25 35 3 0 0 1 0 160 20 500 0 0 0
+    Play#0 output Play#0 1 4 "ss\\040\\040\\040slave\\040ship" 20 80 0 0 0 0 0 0 200 0 0 0 1200 0 60 40 20 10 35 3 0 0 1 0 160 0 300 0 0 0
+    Play#0 output Play#0 1 6 "frg\\040\\040frigate" 0 60 10 2 0 0 0 0 60 0 0 0 0 0 30 30 50 25 25 3 1 1 1 0 110 0 600 16384 0 2
+    Play#0 output Play#0 1 7 "oe\\040\\040\\040oil\\040exploration\\040boat" 10 5 0 0 0 0 0 0 100 1 0 0 0 0 25 15 10 25 15 2 0 0 0 0 75 40 800 524320 0 0
+    Play#0 output Play#0 1 8 "od\\040\\040\\040oil\\040derrick" 990 80 0 0 0 0 0 0 990 990 0 0 990 0 60 60 30 15 65 3 0 0 2 0 200 50 1500 32 0 0
+    Play#0 output Play#0 1 9 "pt\\040\\040\\040patrol\\040boat" 0 2 12 2 0 0 0 0 5 0 0 0 0 0 20 10 10 38 10 2 1 1 0 0 60 40 300 524290 0 0
+    Play#0 output Play#0 1 10 "lc\\040\\040\\040light\\040cruiser" 0 100 40 5 0 0 0 0 100 0 0 0 0 0 30 40 50 30 30 5 6 3 1 0 130 45 800 128 0 2
+    Play#0 output Play#0 1 11 "hc\\040\\040\\040heavy\\040cruiser" 0 120 100 8 0 0 0 0 200 0 0 0 0 0 40 50 70 30 30 5 8 4 1 0 160 50 1200 0 0 4
+    Play#0 output Play#0 1 12 "tt\\040\\040\\040troop\\040transport" 0 120 20 4 0 0 0 0 120 0 0 0 0 0 50 50 60 20 35 3 1 2 1 0 170 10 800 16384 0 2
+    Play#0 output Play#0 1 13 "bb\\040\\040\\040battleship" 0 200 200 10 0 0 0 0 900 0 0 0 0 0 50 70 95 25 35 6 10 7 1 0 210 45 1800 0 0 2
+    Play#0 output Play#0 1 14 "bbc\\040\\040battlecruiser" 0 180 100 10 0 0 0 0 400 0 0 0 0 0 50 60 55 30 35 6 10 6 1 0 190 75 1500 0 0 2
+    Play#0 output Play#0 1 15 "tk\\040\\040\\040tanker" 30 5 0 0 990 0 0 0 200 990 0 0 25 0 60 40 75 25 45 3 0 0 1 0 160 35 600 262144 0 0
+    Play#0 output Play#0 1 16 "ms\\040\\040\\040minesweeper" 0 10 100 1 0 0 0 0 90 0 0 0 0 0 25 15 10 25 15 2 0 0 0 0 75 40 400 524672 0 0
+    Play#0 output Play#0 1 17 "dd\\040\\040\\040destroyer" 0 60 40 4 0 0 0 0 80 0 0 0 0 0 30 30 45 35 20 4 6 3 1 0 110 70 600 196 0 1
+    Play#0 output Play#0 1 18 "sb\\040\\040\\040submarine" 0 25 36 5 0 0 0 0 80 0 0 0 0 0 30 30 25 20 5 4 3 3 0 0 110 60 650 706 0 0
+    Play#0 output Play#0 1 19 "sbc\\040\\040cargo\\040submarine" 5 10 104 20 100 0 0 0 900 0 500 300 0 0 40 40 50 30 2 3 0 0 0 0 140 150 1200 262720 0 0
+    Play#0 output Play#0 1 20 "cal\\040\\040light\\040carrier" 0 175 250 4 300 0 0 0 180 0 0 0 0 0 50 60 60 30 40 5 2 2 4 20 190 80 2700 8 20 0
+    Play#0 output Play#0 1 21 "car\\040\\040aircraft\\040carrier" 0 350 500 4 500 0 0 0 900 0 0 0 0 0 60 70 80 35 40 7 2 2 10 40 220 160 4500 8 40 0
+    Play#0 output Play#0 1 22 "can\\040\\040nuc\\040carrier" 0 350 999 4 999 0 0 0 900 0 0 0 0 0 70 80 100 45 40 9 2 2 20 4 250 305 8000 262152 60 0
+    Play#0 output Play#0 1 23 "ls\\040\\040\\040landing\\040ship" 0 400 10 1 0 0 0 0 300 0 0 0 0 0 60 40 40 30 30 2 0 0 2 0 160 145 1000 2048 0 6
+    Play#0 output Play#0 1 24 "af\\040\\040\\040asw\\040frigate" 0 60 60 4 0 0 0 0 120 0 0 0 0 0 40 30 50 35 30 5 2 2 4 0 120 220 800 4166 0 0
+    Play#0 output Play#0 1 25 "na\\040\\040\\040nuc\\040attack\\040sub" 0 25 60 6 0 0 0 0 500 0 0 0 0 0 30 40 45 40 3 6 5 3 0 0 130 260 1200 4802 0 0
+    Play#0 output Play#0 1 26 "ad\\040\\040\\040asw\\040destroyer" 0 100 80 6 40 0 0 0 500 0 0 0 0 0 40 40 60 40 35 6 8 3 10 2 140 240 1500 4166 0 0
+    Play#0 output Play#0 1 27 "nm\\040\\040\\040nuc\\040miss\\040sub" 0 25 200 1 0 0 0 0 500 0 0 0 0 0 30 40 55 35 2 6 0 0 0 0 130 270 1500 592 20 0
+    Play#0 output Play#0 1 28 "msb\\040\\040missile\\040sub" 0 25 100 1 0 0 0 0 500 0 0 0 0 0 30 30 35 30 3 3 0 0 0 0 110 230 1200 592 10 0
+    Play#0 output Play#0 1 29 "mb\\040\\040\\040missile\\040boat" 0 5 100 3 0 0 0 0 500 0 0 0 0 0 20 20 15 40 15 3 2 2 0 0 80 180 500 16 10 0
+    Play#0 output Play#0 1 30 "mf\\040\\040\\040missile\\040frigate" 0 60 220 4 0 0 0 0 120 0 0 0 0 0 40 30 50 35 30 5 2 2 2 0 120 280 1000 16 20 0
+    Play#0 output Play#0 1 31 "mc\\040\\040\\040missile\\040cruiser" 0 120 500 6 160 0 0 0 200 0 0 0 0 0 50 50 70 35 35 8 8 6 8 8 170 290 1500 1048592 40 0
+    Play#0 output Play#0 1 32 "aac\\040\\040aa\\040cruiser" 0 100 100 15 0 0 0 0 200 0 0 0 0 0 50 60 80 35 30 6 1 8 1 0 190 130 1500 1048576 0 4
+    Play#0 output Play#0 1 33 "agc\\040\\040aegis\\040cruiser" 0 200 400 25 40 0 0 0 900 0 0 0 0 0 50 60 80 35 30 6 1 16 30 2 190 265 4000 1048592 32 0
+    Play#0 output Play#0 1 34 "ncr\\040\\040nuc\\040cruiser" 0 200 400 8 40 0 0 0 900 0 0 0 0 0 50 50 100 45 35 6 14 7 10 2 170 325 1800 1048592 20 0
+    Play#0 output Play#0 1 35 "nas\\040\\040nuc\\040asw\\040cruiser" 0 200 120 6 160 0 0 0 500 0 0 0 0 0 50 50 80 45 35 9 10 4 25 8 170 330 1800 4166 0 0
+    Play#0 output Play#0 1 36 "nsp\\040\\040nuc\\040supply\\040ship" 50 50 600 50 999 0 0 0 999 0 1500 900 0 0 60 40 40 45 35 6 0 0 10 2 160 360 1500 262144 0 2
     Play#0 output Play#0 1 /36
     Play#0 output Play#0 6 0 640
     Play#0 input xdump plane-chr *
     Play#0 command xdump
     Play#0 output Play#0 1 XDUMP plane-chr 0
-    Play#0 output Play#0 1 0 "f1\\040\\040\\040Sopwith\\040Camel" 8 2 400 50 90 1 1 1 4 1 1 0 22
-    Play#0 output Play#0 1 1 "f2\\040\\040\\040P-51\\040Mustang" 8 2 400 80 80 1 4 4 8 1 1 0 70
-    Play#0 output Play#0 1 2 "jf1\\040\\040F-4\\040Phantom" 12 4 1000 125 45 1 14 14 11 2 3 0 70
-    Play#0 output Play#0 1 3 "jf2\\040\\040AV-8B\\040Harrier" 12 4 1400 195 30 1 17 17 14 2 3 0 86
-    Play#0 output Play#0 1 4 "sf\\040\\040\\040F-117A\\040Nighthawk" 15 5 3000 325 45 3 19 19 20 2 4 80 70
-    Play#0 output Play#0 1 5 "es\\040\\040\\040P-38\\040Lightning" 9 3 700 90 60 1 5 5 15 1 2 0 131074
-    Play#0 output Play#0 1 6 "jes\\040\\040F-14E\\040jet\\040escort" 14 8 1400 160 60 1 10 10 25 2 3 0 131074
-    Play#0 output Play#0 1 7 "lb\\040\\040\\040TBD-1\\040Devastator" 10 3 550 60 50 2 0 3 7 1 1 0 83
-    Play#0 output Play#0 1 8 "jl\\040\\040\\040A-6\\040Intruder" 14 4 1000 130 25 3 0 9 11 2 3 0 67
-    Play#0 output Play#0 1 9 "mb\\040\\040\\040medium\\040bomber" 14 5 1000 80 45 4 0 5 14 3 3 0 3
-    Play#0 output Play#0 1 10 "jfb\\040\\040FB-111\\040Aardvark\\040f/b" 20 10 1800 140 30 7 8 8 20 5 5 0 3
-    Play#0 output Play#0 1 11 "hb\\040\\040\\040B-26B\\040Marauder" 20 6 1100 90 90 5 0 4 15 2 2 0 1
-    Play#0 output Play#0 1 12 "jhb\\040\\040B-52\\040Strato-Fortress" 26 13 3200 150 80 12 0 11 35 5 6 0 1
-    Play#0 output Play#0 1 13 "sb\\040\\040\\040B-2\\040stealth\\040bomber" 15 5 4000 325 25 8 0 15 28 2 5 80 3
-    Play#0 output Play#0 1 14 "as\\040\\040\\040anti-sub\\040plane" 10 3 550 100 85 2 0 3 15 2 2 0 819202
-    Play#0 output Play#0 1 15 "np\\040\\040\\040naval\\040plane" 20 10 1800 135 70 3 0 4 28 4 2 0 819274
-    Play#0 output Play#0 1 16 "nc\\040\\040\\040AH-1\\040Cobra" 8 2 800 160 55 2 0 3 11 2 2 0 573458
-    Play#0 output Play#0 1 17 "ac\\040\\040\\040AH-64\\040Apache" 8 2 800 200 15 1 0 9 11 2 2 40 16402
-    Play#0 output Play#0 1 18 "tc\\040\\040\\040transport\\040chopper" 8 2 800 135 0 5 0 3 7 2 2 40 81944
-    Play#0 output Play#0 1 19 "tr\\040\\040\\040C-56\\040Lodestar" 14 5 1000 85 0 7 0 2 15 3 3 0 65544
-    Play#0 output Play#0 1 20 "jt\\040\\040\\040C-141\\040Starlifter" 18 5 1500 160 0 16 0 9 35 3 4 0 65544
-    Play#0 output Play#0 1 21 "zep\\040\\040Zeppelin" 6 2 1000 70 60 2 0 -3 15 3 2 0 154
-    Play#0 output Play#0 1 22 "re\\040\\040\\040recon" 12 4 800 130 0 0 0 4 15 2 2 20 128
-    Play#0 output Play#0 1 23 "sp\\040\\040\\040E2-C\\040Hawkeye" 15 5 2000 190 0 0 0 11 32 2 5 50 128
-    Play#0 output Play#0 1 24 "lst\\040\\040landsat" 20 20 2000 245 0 0 0 3 41 0 9 0 512
-    Play#0 output Play#0 1 25 "ss\\040\\040\\040KH-7\\040spysat" 20 20 4000 305 0 0 0 3 61 0 9 0 896
-    Play#0 output Play#0 1 26 "mi\\040\\040\\040Harpoon" 8 2 300 160 50 6 0 5 6 0 0 0 1048690
-    Play#0 output Play#0 1 27 "sam\\040\\040Sea\\040Sparrow" 3 1 200 180 0 0 0 18 2 0 0 0 8308
-    Play#0 output Play#0 1 28 "ssm\\040\\040V2" 15 15 800 145 60 3 0 3 4 0 0 0 50
-    Play#0 output Play#0 1 29 "srbm\\040Atlas" 20 20 1000 200 60 6 0 5 9 0 0 0 50
-    Play#0 output Play#0 1 30 "irbm\\040Titan" 20 20 1500 260 60 8 0 10 15 0 0 0 50
-    Play#0 output Play#0 1 31 "icbm\\040Minuteman" 20 20 3000 310 60 10 0 15 41 0 0 0 50
-    Play#0 output Play#0 1 32 "slbm\\040Trident" 20 20 2000 280 60 8 0 6 23 0 0 0 114
-    Play#0 output Play#0 1 33 "asat\\040anti-sat" 20 20 2000 305 50 6 0 7 13 0 4 0 560
-    Play#0 output Play#0 1 34 "abm\\040\\040Patriot" 16 8 1500 270 50 0 0 31 12 0 0 0 2096
+    Play#0 output Play#0 1 0 "f1\\040\\040\\040Sopwith\\040Camel" 8 2 32 50 400 90 1 1 1 4 1 1 0 22
+    Play#0 output Play#0 1 1 "f2\\040\\040\\040P-51\\040Mustang" 8 2 32 80 400 80 1 4 4 8 1 1 0 70
+    Play#0 output Play#0 1 2 "jf1\\040\\040F-4\\040Phantom" 12 4 40 125 1000 45 1 14 14 11 2 3 0 70
+    Play#0 output Play#0 1 3 "jf2\\040\\040AV-8B\\040Harrier" 12 4 40 195 1400 30 1 17 17 14 2 3 0 86
+    Play#0 output Play#0 1 4 "sf\\040\\040\\040F-117A\\040Nighthawk" 15 5 45 325 3000 45 3 19 19 20 2 4 80 70
+    Play#0 output Play#0 1 5 "es\\040\\040\\040P-38\\040Lightning" 9 3 35 90 700 60 1 5 5 15 1 2 0 131074
+    Play#0 output Play#0 1 6 "jes\\040\\040F-14E\\040jet\\040escort" 14 8 50 160 1400 60 1 10 10 25 2 3 0 131074
+    Play#0 output Play#0 1 7 "lb\\040\\040\\040TBD-1\\040Devastator" 10 3 36 60 550 50 2 0 3 7 1 1 0 83
+    Play#0 output Play#0 1 8 "jl\\040\\040\\040A-6\\040Intruder" 14 4 42 130 1000 25 3 0 9 11 2 3 0 67
+    Play#0 output Play#0 1 9 "mb\\040\\040\\040medium\\040bomber" 14 5 44 80 1000 45 4 0 5 14 3 3 0 3
+    Play#0 output Play#0 1 10 "jfb\\040\\040FB-111\\040Aardvark\\040f/b" 20 10 60 140 1800 30 7 8 8 20 5 5 0 3
+    Play#0 output Play#0 1 11 "hb\\040\\040\\040B-26B\\040Marauder" 20 6 52 90 1100 90 5 0 4 15 2 2 0 1
+    Play#0 output Play#0 1 12 "jhb\\040\\040B-52\\040Strato-Fortress" 26 13 72 150 3200 80 12 0 11 35 5 6 0 1
+    Play#0 output Play#0 1 13 "sb\\040\\040\\040B-2\\040stealth\\040bomber" 15 5 45 325 4000 25 8 0 15 28 2 5 80 3
+    Play#0 output Play#0 1 14 "as\\040\\040\\040anti-sub\\040plane" 10 3 36 100 550 85 2 0 3 15 2 2 0 819202
+    Play#0 output Play#0 1 15 "np\\040\\040\\040naval\\040plane" 20 10 60 135 1800 70 3 0 4 28 4 2 0 819274
+    Play#0 output Play#0 1 16 "nc\\040\\040\\040AH-1\\040Cobra" 8 2 32 160 800 55 2 0 3 11 2 2 0 573458
+    Play#0 output Play#0 1 17 "ac\\040\\040\\040AH-64\\040Apache" 8 2 32 200 800 15 1 0 9 11 2 2 40 16402
+    Play#0 output Play#0 1 18 "tc\\040\\040\\040transport\\040chopper" 8 2 32 135 800 0 5 0 3 7 2 2 40 81944
+    Play#0 output Play#0 1 19 "tr\\040\\040\\040C-56\\040Lodestar" 14 5 44 85 1000 0 7 0 2 15 3 3 0 65544
+    Play#0 output Play#0 1 20 "jt\\040\\040\\040C-141\\040Starlifter" 18 5 48 160 1500 0 16 0 9 35 3 4 0 65544
+    Play#0 output Play#0 1 21 "zep\\040\\040Zeppelin" 6 2 30 70 1000 60 2 0 -3 15 3 2 0 154
+    Play#0 output Play#0 1 22 "re\\040\\040\\040recon" 12 4 40 130 800 0 0 0 4 15 2 2 20 128
+    Play#0 output Play#0 1 23 "sp\\040\\040\\040E2-C\\040Hawkeye" 15 5 45 190 2000 0 0 0 11 32 2 5 50 128
+    Play#0 output Play#0 1 24 "lst\\040\\040landsat" 20 20 80 245 2000 0 0 0 3 41 0 9 0 512
+    Play#0 output Play#0 1 25 "ss\\040\\040\\040KH-7\\040spysat" 20 20 80 305 4000 0 0 0 3 61 0 9 0 896
+    Play#0 output Play#0 1 26 "mi\\040\\040\\040Harpoon" 8 2 32 160 300 50 6 0 5 6 0 0 0 1048690
+    Play#0 output Play#0 1 27 "sam\\040\\040Sea\\040Sparrow" 3 1 25 180 200 0 0 0 18 2 0 0 0 8308
+    Play#0 output Play#0 1 28 "ssm\\040\\040V2" 15 15 65 145 800 60 3 0 3 4 0 0 0 50
+    Play#0 output Play#0 1 29 "srbm\\040Atlas" 20 20 80 200 1000 60 6 0 5 9 0 0 0 50
+    Play#0 output Play#0 1 30 "irbm\\040Titan" 20 20 80 260 1500 60 8 0 10 15 0 0 0 50
+    Play#0 output Play#0 1 31 "icbm\\040Minuteman" 20 20 80 310 3000 60 10 0 15 41 0 0 0 50
+    Play#0 output Play#0 1 32 "slbm\\040Trident" 20 20 80 280 2000 60 8 0 6 23 0 0 0 114
+    Play#0 output Play#0 1 33 "asat\\040anti-sat" 20 20 80 305 2000 50 6 0 7 13 0 4 0 560
+    Play#0 output Play#0 1 34 "abm\\040\\040Patriot" 16 8 52 270 1500 50 0 0 31 12 0 0 0 2096
     Play#0 output Play#0 1 /35
     Play#0 output Play#0 6 0 640
     Play#0 input xdump land-chr *
     Play#0 command xdump
     Play#0 output Play#0 1 XDUMP land-chr 0
-    Play#0 output Play#0 1 0 "cav\\040\\040cavalry" 0 20 0 0 0 0 0 0 12 0 0 0 0 0 10 5 30 500 1.20000 0.500000 80 32 18 4 3 0 0 0 0 0 80 0 0
-    Play#0 output Play#0 1 1 "linf\\040light\\040infantry" 0 25 1 0 0 0 0 0 15 0 0 0 0 0 8 4 40 300 1.00000 1.50000 60 28 15 2 1 0 0 0 1 1 272 0 0
-    Play#0 output Play#0 1 2 "inf\\040\\040infantry" 0 100 0 0 0 0 0 0 24 0 0 0 0 0 10 5 50 500 1.00000 1.50000 60 25 15 2 1 0 0 0 0 0 272 0 0
-    Play#0 output Play#0 1 3 "mtif\\040motor\\040inf" 0 100 8 0 0 0 0 0 60 0 0 0 0 0 15 10 190 400 1.20000 2.20000 60 33 17 1 3 0 0 0 2 3 16 0 0
-    Play#0 output Play#0 1 4 "mif\\040\\040mech\\040inf" 0 100 8 0 0 0 0 0 60 0 0 0 0 0 15 10 190 800 1.50000 2.50000 50 33 17 1 3 0 0 0 2 3 16 0 0
-    Play#0 output Play#0 1 5 "mar\\040\\040marines" 0 100 4 0 0 0 0 0 60 0 0 0 0 0 10 5 140 1000 1.40000 2.40000 60 25 14 2 1 0 0 0 1 2 304 0 0
-    Play#0 output Play#0 1 6 "sup\\040\\040supply" 0 25 200 10 300 100 100 10 300 0 200 100 0 0 10 5 50 500 0.100000 0.200000 80 25 20 1 0 0 0 0 0 0 20 0 0
-    Play#0 output Play#0 1 7 "tra\\040\\040train" 0 990 990 200 990 500 500 100 990 990 990 990 0 150 100 50 40 3500 0.00000 0.00000 120 10 25 3 0 0 0 0 0 0 6148 5 12
-    Play#0 output Play#0 1 8 "spy\\040\\040infiltrator" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 5 40 750 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0
-    Play#0 output Play#0 1 9 "com\\040\\040commando" 0 0 3 0 0 0 0 0 0 0 0 0 0 0 10 5 55 1500 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0
-    Play#0 output Play#0 1 10 "aau\\040\\040aa\\040unit" 0 20 5 0 0 0 0 0 12 0 0 0 0 0 20 10 70 500 0.500000 1.00000 60 18 20 1 1 0 0 0 1 2 528 0 0
-    Play#0 output Play#0 1 11 "art\\040\\040artillery" 0 25 40 10 0 0 0 0 24 0 0 0 0 0 20 10 35 800 0.100000 0.400000 70 18 20 1 0 8 50 5 2 1 16 0 0
-    Play#0 output Play#0 1 12 "lat\\040\\040lt\\040artillery" 0 25 20 6 0 0 0 0 12 0 0 0 0 0 20 10 70 500 0.200000 0.600000 60 30 18 1 1 5 10 3 1 1 16 0 0
-    Play#0 output Play#0 1 13 "hat\\040\\040hvy\\040artillery" 0 25 80 12 0 0 0 0 24 0 0 0 0 0 40 20 100 800 0.00000 0.200000 60 12 20 1 0 11 99 8 4 1 0 0 0
-    Play#0 output Play#0 1 14 "mat\\040\\040mech\\040artillery" 0 25 40 10 0 0 0 0 15 0 0 0 0 0 20 10 200 1000 0.200000 0.600000 50 35 17 1 1 8 35 6 3 3 16 0 0
-    Play#0 output Play#0 1 15 "eng\\040\\040engineer" 0 20 3 0 0 0 0 0 12 0 0 0 0 0 10 5 130 3000 1.20000 2.40000 50 25 14 2 1 0 0 0 1 1 274 0 0
-    Play#0 output Play#0 1 16 "meng\\040mech\\040engineer" 0 20 4 0 0 0 0 0 15 0 0 0 0 0 10 5 260 4500 1.80000 3.50000 45 33 15 3 3 0 0 0 1 5 274 0 0
-    Play#0 output Play#0 1 17 "lar\\040\\040lt\\040armor" 0 50 4 0 0 0 0 0 30 0 0 0 0 0 10 5 150 600 2.00000 1.00000 50 42 15 4 4 0 0 0 1 2 80 0 0
-    Play#0 output Play#0 1 18 "har\\040\\040hvy\\040armor" 0 100 3 0 0 0 0 0 48 0 0 0 0 0 20 10 120 500 2.00000 0.800000 50 18 17 1 1 0 0 0 2 1 0 0 0
-    Play#0 output Play#0 1 19 "arm\\040\\040armor" 0 50 4 0 0 0 0 0 30 0 0 0 0 0 20 10 170 1000 3.00000 1.50000 40 33 16 2 2 0 0 0 1 2 16 0 0
-    Play#0 output Play#0 1 20 "sec\\040\\040security" 0 50 4 0 0 0 0 0 30 0 0 0 0 0 10 5 170 600 1.00000 2.00000 60 25 15 2 1 0 0 0 1 1 24 0 0
-    Play#0 output Play#0 1 21 "rad\\040\\040radar\\040unit" 0 10 0 0 0 0 0 0 7 0 0 0 0 0 10 5 270 1000 0.00000 0.00000 50 33 15 3 0 0 0 0 0 2 144 1 0
+    Play#0 output Play#0 1 0 "cav\\040\\040cavalry" 0 20 0 0 0 0 0 0 12 0 0 0 0 0 10 5 40 30 500 1.20000 0.500000 80 32 18 4 3 0 0 0 0 0 80 0 0
+    Play#0 output Play#0 1 1 "linf\\040light\\040infantry" 0 25 1 0 0 0 0 0 15 0 0 0 0 0 8 4 36 40 300 1.00000 1.50000 60 28 15 2 1 0 0 0 1 1 272 0 0
+    Play#0 output Play#0 1 2 "inf\\040\\040infantry" 0 100 0 0 0 0 0 0 24 0 0 0 0 0 10 5 40 50 500 1.00000 1.50000 60 25 15 2 1 0 0 0 0 0 272 0 0
+    Play#0 output Play#0 1 3 "mtif\\040motor\\040inf" 0 100 8 0 0 0 0 0 60 0 0 0 0 0 15 10 55 190 400 1.20000 2.20000 60 33 17 1 3 0 0 0 2 3 16 0 0
+    Play#0 output Play#0 1 4 "mif\\040\\040mech\\040inf" 0 100 8 0 0 0 0 0 60 0 0 0 0 0 15 10 55 190 800 1.50000 2.50000 50 33 17 1 3 0 0 0 2 3 16 0 0
+    Play#0 output Play#0 1 5 "mar\\040\\040marines" 0 100 4 0 0 0 0 0 60 0 0 0 0 0 10 5 40 140 1000 1.40000 2.40000 60 25 14 2 1 0 0 0 1 2 304 0 0
+    Play#0 output Play#0 1 6 "sup\\040\\040supply" 0 25 200 10 300 100 100 10 300 0 200 100 0 0 10 5 40 50 500 0.100000 0.200000 80 25 20 1 0 0 0 0 0 0 20 0 0
+    Play#0 output Play#0 1 7 "tra\\040\\040train" 0 990 990 200 990 500 500 100 990 990 990 990 0 150 100 50 220 40 3500 0.00000 0.00000 120 10 25 3 0 0 0 0 0 0 6148 5 12
+    Play#0 output Play#0 1 8 "spy\\040\\040infiltrator" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 5 40 40 750 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0
+    Play#0 output Play#0 1 9 "com\\040\\040commando" 0 0 3 0 0 0 0 0 0 0 0 0 0 0 10 5 40 55 1500 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0
+    Play#0 output Play#0 1 10 "aau\\040\\040aa\\040unit" 0 20 5 0 0 0 0 0 12 0 0 0 0 0 20 10 60 70 500 0.500000 1.00000 60 18 20 1 1 0 0 0 1 2 528 0 0
+    Play#0 output Play#0 1 11 "art\\040\\040artillery" 0 25 40 10 0 0 0 0 24 0 0 0 0 0 20 10 60 35 800 0.100000 0.400000 70 18 20 1 0 8 50 5 2 1 16 0 0
+    Play#0 output Play#0 1 12 "lat\\040\\040lt\\040artillery" 0 25 20 6 0 0 0 0 12 0 0 0 0 0 20 10 60 70 500 0.200000 0.600000 60 30 18 1 1 5 10 3 1 1 16 0 0
+    Play#0 output Play#0 1 13 "hat\\040\\040hvy\\040artillery" 0 25 80 12 0 0 0 0 24 0 0 0 0 0 40 20 100 100 800 0.00000 0.200000 60 12 20 1 0 11 99 8 4 1 0 0 0
+    Play#0 output Play#0 1 14 "mat\\040\\040mech\\040artillery" 0 25 40 10 0 0 0 0 15 0 0 0 0 0 20 10 60 200 1000 0.200000 0.600000 50 35 17 1 1 8 35 6 3 3 16 0 0
+    Play#0 output Play#0 1 15 "eng\\040\\040engineer" 0 20 3 0 0 0 0 0 12 0 0 0 0 0 10 5 40 130 3000 1.20000 2.40000 50 25 14 2 1 0 0 0 1 1 274 0 0
+    Play#0 output Play#0 1 16 "meng\\040mech\\040engineer" 0 20 4 0 0 0 0 0 15 0 0 0 0 0 10 5 40 260 4500 1.80000 3.50000 45 33 15 3 3 0 0 0 1 5 274 0 0
+    Play#0 output Play#0 1 17 "lar\\040\\040lt\\040armor" 0 50 4 0 0 0 0 0 30 0 0 0 0 0 10 5 40 150 600 2.00000 1.00000 50 42 15 4 4 0 0 0 1 2 80 0 0
+    Play#0 output Play#0 1 18 "har\\040\\040hvy\\040armor" 0 100 3 0 0 0 0 0 48 0 0 0 0 0 20 10 60 120 500 2.00000 0.800000 50 18 17 1 1 0 0 0 2 1 0 0 0
+    Play#0 output Play#0 1 19 "arm\\040\\040armor" 0 50 4 0 0 0 0 0 30 0 0 0 0 0 20 10 60 170 1000 3.00000 1.50000 40 33 16 2 2 0 0 0 1 2 16 0 0
+    Play#0 output Play#0 1 20 "sec\\040\\040security" 0 50 4 0 0 0 0 0 30 0 0 0 0 0 10 5 40 170 600 1.00000 2.00000 60 25 15 2 1 0 0 0 1 1 24 0 0
+    Play#0 output Play#0 1 21 "rad\\040\\040radar\\040unit" 0 10 0 0 0 0 0 0 7 0 0 0 0 0 10 5 40 270 1000 0.00000 0.00000 50 33 15 3 0 0 0 0 0 2 144 1 0
     Play#0 output Play#0 1 /22
     Play#0 output Play#0 6 0 640
     Play#0 input xdump nuke-chr *
     Play#0 command xdump
     Play#0 output Play#0 1 XDUMP nuke-chr 0
-    Play#0 output Play#0 1 0 "10kt\\040\\040fission" 50 50 25 70 3 70 10000 280 4 0
-    Play#0 output Play#0 1 1 "15kt\\040\\040fission" 50 50 25 80 3 90 15000 290 5 0
-    Play#0 output Play#0 1 2 "50kt\\040\\040fission" 60 60 30 90 3 100 25000 300 6 0
-    Play#0 output Play#0 1 3 "100kt\\040fission" 75 75 40 120 4 125 30000 310 8 0
-    Play#0 output Play#0 1 4 "5kt\\040\\040\\040fusion" 15 15 15 30 2 80 12500 315 1 0
-    Play#0 output Play#0 1 5 "75kt\\040\\040fusion" 40 40 35 50 3 90 20000 320 3 0
-    Play#0 output Play#0 1 6 "250kt\\040fusion" 50 50 45 60 4 110 25000 330 4 0
-    Play#0 output Play#0 1 7 "500kt\\040fusion" 60 60 50 80 5 120 35000 340 5 0
-    Play#0 output Play#0 1 8 "1mt\\040\\040\\040fusion" 75 75 50 110 6 150 40000 350 5 0
-    Play#0 output Play#0 1 9 "60kt\\040\\040neutron" 60 60 30 100 3 30 30000 355 2 1
-    Play#0 output Play#0 1 10 "3mt\\040\\040\\040fusion" 100 100 75 130 7 170 45000 360 6 0
-    Play#0 output Play#0 1 11 "5mt\\040\\040\\040fusion" 120 120 100 150 8 190 50000 370 8 0
-    Play#0 output Play#0 1 12 "120kt\\040neutron" 75 75 40 120 5 50 36000 375 3 1
+    Play#0 output Play#0 1 0 "10kt\\040\\040fission" 50 50 25 70 3 70 49 280 10000 4 0
+    Play#0 output Play#0 1 1 "15kt\\040\\040fission" 50 50 25 80 3 90 51 290 15000 5 0
+    Play#0 output Play#0 1 2 "50kt\\040\\040fission" 60 60 30 90 3 100 60 300 25000 6 0
+    Play#0 output Play#0 1 3 "100kt\\040fission" 75 75 40 120 4 125 77 310 30000 8 0
+    Play#0 output Play#0 1 4 "5kt\\040\\040\\040fusion" 15 15 15 30 2 80 18 315 12500 1 0
+    Play#0 output Play#0 1 5 "75kt\\040\\040fusion" 40 40 35 50 3 90 41 320 20000 3 0
+    Play#0 output Play#0 1 6 "250kt\\040fusion" 50 50 45 60 4 110 51 330 25000 4 0
+    Play#0 output Play#0 1 7 "500kt\\040fusion" 60 60 50 80 5 120 62 340 35000 5 0
+    Play#0 output Play#0 1 8 "1mt\\040\\040\\040fusion" 75 75 50 110 6 150 77 350 40000 5 0
+    Play#0 output Play#0 1 9 "60kt\\040\\040neutron" 60 60 30 100 3 30 62 355 30000 2 1
+    Play#0 output Play#0 1 10 "3mt\\040\\040\\040fusion" 100 100 75 130 7 170 101 360 45000 6 0
+    Play#0 output Play#0 1 11 "5mt\\040\\040\\040fusion" 120 120 100 150 8 190 122 370 50000 8 0
+    Play#0 output Play#0 1 12 "120kt\\040neutron" 75 75 40 120 5 50 77 375 36000 3 1
     Play#0 output Play#0 1 /13
     Play#0 output Play#0 6 0 640
     Play#0 input xdump news-chr *
     Play#1 input xdump ship-chr *
     Play#1 command xdump
     Play#1 output Play#1 1 XDUMP ship-chr 0
-    Play#1 output Play#1 1 0 "fb\\040\\040\\040fishing\\040boat" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 10 15 2 0 0 0 0 0 180 524289 0 0
-    Play#1 output Play#1 1 1 "ft\\040\\040\\040fishing\\040trawler" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 25 15 2 0 0 0 0 35 300 524289 0 0
-    Play#1 output Play#1 1 2 "cs\\040\\040\\040cargo\\040ship" 600 50 300 50 0 0 0 0 900 0 1400 900 250 0 60 40 20 25 35 3 0 0 1 0 20 500 262144 0 2
-    Play#1 output Play#1 1 3 "os\\040\\040\\040ore\\040ship" 30 5 0 0 0 990 990 0 200 0 0 0 45 990 60 40 20 25 35 3 0 0 1 0 20 500 0 0 0
-    Play#1 output Play#1 1 4 "ss\\040\\040\\040slave\\040ship" 20 80 0 0 0 0 0 0 200 0 0 0 1200 0 60 40 20 10 35 3 0 0 1 0 0 300 0 0 0
-    Play#1 output Play#1 1 6 "frg\\040\\040frigate" 0 60 10 2 0 0 0 0 60 0 0 0 0 0 30 30 50 25 25 3 1 1 1 0 0 600 16384 0 2
-    Play#1 output Play#1 1 7 "oe\\040\\040\\040oil\\040exploration\\040boat" 10 5 0 0 0 0 0 0 100 1 0 0 0 0 25 15 10 25 15 2 0 0 0 0 40 800 524320 0 0
-    Play#1 output Play#1 1 8 "od\\040\\040\\040oil\\040derrick" 990 80 0 0 0 0 0 0 990 990 0 0 990 0 60 60 30 15 65 3 0 0 2 0 50 1500 32 0 0
-    Play#1 output Play#1 1 9 "pt\\040\\040\\040patrol\\040boat" 0 2 12 2 0 0 0 0 5 0 0 0 0 0 20 10 10 38 10 2 1 1 0 0 40 300 524290 0 0
-    Play#1 output Play#1 1 10 "lc\\040\\040\\040light\\040cruiser" 0 100 40 5 0 0 0 0 100 0 0 0 0 0 30 40 50 30 30 5 6 3 1 0 45 800 128 0 2
-    Play#1 output Play#1 1 11 "hc\\040\\040\\040heavy\\040cruiser" 0 120 100 8 0 0 0 0 200 0 0 0 0 0 40 50 70 30 30 5 8 4 1 0 50 1200 0 0 4
-    Play#1 output Play#1 1 12 "tt\\040\\040\\040troop\\040transport" 0 120 20 4 0 0 0 0 120 0 0 0 0 0 50 50 60 20 35 3 1 2 1 0 10 800 16384 0 2
-    Play#1 output Play#1 1 13 "bb\\040\\040\\040battleship" 0 200 200 10 0 0 0 0 900 0 0 0 0 0 50 70 95 25 35 6 10 7 1 0 45 1800 0 0 2
-    Play#1 output Play#1 1 14 "bbc\\040\\040battlecruiser" 0 180 100 10 0 0 0 0 400 0 0 0 0 0 50 60 55 30 35 6 10 6 1 0 75 1500 0 0 2
-    Play#1 output Play#1 1 15 "tk\\040\\040\\040tanker" 30 5 0 0 990 0 0 0 200 990 0 0 25 0 60 40 75 25 45 3 0 0 1 0 35 600 262144 0 0
-    Play#1 output Play#1 1 16 "ms\\040\\040\\040minesweeper" 0 10 100 1 0 0 0 0 90 0 0 0 0 0 25 15 10 25 15 2 0 0 0 0 40 400 524672 0 0
-    Play#1 output Play#1 1 17 "dd\\040\\040\\040destroyer" 0 60 40 4 0 0 0 0 80 0 0 0 0 0 30 30 45 35 20 4 6 3 1 0 70 600 196 0 1
-    Play#1 output Play#1 1 18 "sb\\040\\040\\040submarine" 0 25 36 5 0 0 0 0 80 0 0 0 0 0 30 30 25 20 5 4 3 3 0 0 60 650 706 0 0
-    Play#1 output Play#1 1 20 "cal\\040\\040light\\040carrier" 0 175 250 4 300 0 0 0 180 0 0 0 0 0 50 60 60 30 40 5 2 2 4 20 80 2700 8 20 0
+    Play#1 output Play#1 1 0 "fb\\040\\040\\040fishing\\040boat" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 10 15 2 0 0 0 0 75 0 180 524289 0 0
+    Play#1 output Play#1 1 1 "ft\\040\\040\\040fishing\\040trawler" 300 10 0 0 0 0 0 0 900 0 0 0 15 0 25 15 10 25 15 2 0 0 0 0 75 35 300 524289 0 0
+    Play#1 output Play#1 1 2 "cs\\040\\040\\040cargo\\040ship" 600 50 300 50 0 0 0 0 900 0 1400 900 250 0 60 40 20 25 35 3 0 0 1 0 160 20 500 262144 0 2
+    Play#1 output Play#1 1 3 "os\\040\\040\\040ore\\040ship" 30 5 0 0 0 990 990 0 200 0 0 0 45 990 60 40 20 25 35 3 0 0 1 0 160 20 500 0 0 0
+    Play#1 output Play#1 1 4 "ss\\040\\040\\040slave\\040ship" 20 80 0 0 0 0 0 0 200 0 0 0 1200 0 60 40 20 10 35 3 0 0 1 0 160 0 300 0 0 0
+    Play#1 output Play#1 1 6 "frg\\040\\040frigate" 0 60 10 2 0 0 0 0 60 0 0 0 0 0 30 30 50 25 25 3 1 1 1 0 110 0 600 16384 0 2
+    Play#1 output Play#1 1 7 "oe\\040\\040\\040oil\\040exploration\\040boat" 10 5 0 0 0 0 0 0 100 1 0 0 0 0 25 15 10 25 15 2 0 0 0 0 75 40 800 524320 0 0
+    Play#1 output Play#1 1 8 "od\\040\\040\\040oil\\040derrick" 990 80 0 0 0 0 0 0 990 990 0 0 990 0 60 60 30 15 65 3 0 0 2 0 200 50 1500 32 0 0
+    Play#1 output Play#1 1 9 "pt\\040\\040\\040patrol\\040boat" 0 2 12 2 0 0 0 0 5 0 0 0 0 0 20 10 10 38 10 2 1 1 0 0 60 40 300 524290 0 0
+    Play#1 output Play#1 1 10 "lc\\040\\040\\040light\\040cruiser" 0 100 40 5 0 0 0 0 100 0 0 0 0 0 30 40 50 30 30 5 6 3 1 0 130 45 800 128 0 2
+    Play#1 output Play#1 1 11 "hc\\040\\040\\040heavy\\040cruiser" 0 120 100 8 0 0 0 0 200 0 0 0 0 0 40 50 70 30 30 5 8 4 1 0 160 50 1200 0 0 4
+    Play#1 output Play#1 1 12 "tt\\040\\040\\040troop\\040transport" 0 120 20 4 0 0 0 0 120 0 0 0 0 0 50 50 60 20 35 3 1 2 1 0 170 10 800 16384 0 2
+    Play#1 output Play#1 1 13 "bb\\040\\040\\040battleship" 0 200 200 10 0 0 0 0 900 0 0 0 0 0 50 70 95 25 35 6 10 7 1 0 210 45 1800 0 0 2
+    Play#1 output Play#1 1 14 "bbc\\040\\040battlecruiser" 0 180 100 10 0 0 0 0 400 0 0 0 0 0 50 60 55 30 35 6 10 6 1 0 190 75 1500 0 0 2
+    Play#1 output Play#1 1 15 "tk\\040\\040\\040tanker" 30 5 0 0 990 0 0 0 200 990 0 0 25 0 60 40 75 25 45 3 0 0 1 0 160 35 600 262144 0 0
+    Play#1 output Play#1 1 16 "ms\\040\\040\\040minesweeper" 0 10 100 1 0 0 0 0 90 0 0 0 0 0 25 15 10 25 15 2 0 0 0 0 75 40 400 524672 0 0
+    Play#1 output Play#1 1 17 "dd\\040\\040\\040destroyer" 0 60 40 4 0 0 0 0 80 0 0 0 0 0 30 30 45 35 20 4 6 3 1 0 110 70 600 196 0 1
+    Play#1 output Play#1 1 18 "sb\\040\\040\\040submarine" 0 25 36 5 0 0 0 0 80 0 0 0 0 0 30 30 25 20 5 4 3 3 0 0 110 60 650 706 0 0
+    Play#1 output Play#1 1 20 "cal\\040\\040light\\040carrier" 0 175 250 4 300 0 0 0 180 0 0 0 0 0 50 60 60 30 40 5 2 2 4 20 190 80 2700 8 20 0
     Play#1 output Play#1 1 /19
     Play#1 output Play#1 6 0 0
     Play#1 input xdump plane-chr *
     Play#1 command xdump
     Play#1 output Play#1 1 XDUMP plane-chr 0
-    Play#1 output Play#1 1 0 "f1\\040\\040\\040Sopwith\\040Camel" 8 2 400 50 90 1 1 1 4 1 1 0 22
-    Play#1 output Play#1 1 1 "f2\\040\\040\\040P-51\\040Mustang" 8 2 400 80 80 1 4 4 8 1 1 0 70
-    Play#1 output Play#1 1 2 "jf1\\040\\040F-4\\040Phantom" 12 4 1000 125 45 1 14 14 11 2 3 0 70
-    Play#1 output Play#1 1 5 "es\\040\\040\\040P-38\\040Lightning" 9 3 700 90 60 1 5 5 15 1 2 0 131074
-    Play#1 output Play#1 1 7 "lb\\040\\040\\040TBD-1\\040Devastator" 10 3 550 60 50 2 0 3 7 1 1 0 83
-    Play#1 output Play#1 1 9 "mb\\040\\040\\040medium\\040bomber" 14 5 1000 80 45 4 0 5 14 3 3 0 3
-    Play#1 output Play#1 1 11 "hb\\040\\040\\040B-26B\\040Marauder" 20 6 1100 90 90 5 0 4 15 2 2 0 1
-    Play#1 output Play#1 1 14 "as\\040\\040\\040anti-sub\\040plane" 10 3 550 100 85 2 0 3 15 2 2 0 819202
-    Play#1 output Play#1 1 19 "tr\\040\\040\\040C-56\\040Lodestar" 14 5 1000 85 0 7 0 2 15 3 3 0 65544
-    Play#1 output Play#1 1 21 "zep\\040\\040Zeppelin" 6 2 1000 70 60 2 0 -3 15 3 2 0 154
+    Play#1 output Play#1 1 0 "f1\\040\\040\\040Sopwith\\040Camel" 8 2 32 50 400 90 1 1 1 4 1 1 0 22
+    Play#1 output Play#1 1 1 "f2\\040\\040\\040P-51\\040Mustang" 8 2 32 80 400 80 1 4 4 8 1 1 0 70
+    Play#1 output Play#1 1 2 "jf1\\040\\040F-4\\040Phantom" 12 4 40 125 1000 45 1 14 14 11 2 3 0 70
+    Play#1 output Play#1 1 5 "es\\040\\040\\040P-38\\040Lightning" 9 3 35 90 700 60 1 5 5 15 1 2 0 131074
+    Play#1 output Play#1 1 7 "lb\\040\\040\\040TBD-1\\040Devastator" 10 3 36 60 550 50 2 0 3 7 1 1 0 83
+    Play#1 output Play#1 1 9 "mb\\040\\040\\040medium\\040bomber" 14 5 44 80 1000 45 4 0 5 14 3 3 0 3
+    Play#1 output Play#1 1 11 "hb\\040\\040\\040B-26B\\040Marauder" 20 6 52 90 1100 90 5 0 4 15 2 2 0 1
+    Play#1 output Play#1 1 14 "as\\040\\040\\040anti-sub\\040plane" 10 3 36 100 550 85 2 0 3 15 2 2 0 819202
+    Play#1 output Play#1 1 19 "tr\\040\\040\\040C-56\\040Lodestar" 14 5 44 85 1000 0 7 0 2 15 3 3 0 65544
+    Play#1 output Play#1 1 21 "zep\\040\\040Zeppelin" 6 2 30 70 1000 60 2 0 -3 15 3 2 0 154
     Play#1 output Play#1 1 /10
     Play#1 output Play#1 6 0 0
     Play#1 input xdump land-chr *
     Play#1 command xdump
     Play#1 output Play#1 1 XDUMP land-chr 0
-    Play#1 output Play#1 1 0 "cav\\040\\040cavalry" 0 20 0 0 0 0 0 0 12 0 0 0 0 0 10 5 30 500 1.20000 0.500000 80 32 18 4 3 0 0 0 0 0 80 0 0
-    Play#1 output Play#1 1 1 "linf\\040light\\040infantry" 0 25 1 0 0 0 0 0 15 0 0 0 0 0 8 4 40 300 1.00000 1.50000 60 28 15 2 1 0 0 0 1 1 272 0 0
-    Play#1 output Play#1 1 2 "inf\\040\\040infantry" 0 100 0 0 0 0 0 0 24 0 0 0 0 0 10 5 50 500 1.00000 1.50000 60 25 15 2 1 0 0 0 0 0 272 0 0
-    Play#1 output Play#1 1 6 "sup\\040\\040supply" 0 25 200 10 300 100 100 10 300 0 200 100 0 0 10 5 50 500 0.100000 0.200000 80 25 20 1 0 0 0 0 0 0 20 0 0
-    Play#1 output Play#1 1 7 "tra\\040\\040train" 0 990 990 200 990 500 500 100 990 990 990 990 0 150 100 50 40 3500 0.00000 0.00000 120 10 25 3 0 0 0 0 0 0 6148 5 12
-    Play#1 output Play#1 1 8 "spy\\040\\040infiltrator" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 5 40 750 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0
-    Play#1 output Play#1 1 9 "com\\040\\040commando" 0 0 3 0 0 0 0 0 0 0 0 0 0 0 10 5 55 1500 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0
-    Play#1 output Play#1 1 10 "aau\\040\\040aa\\040unit" 0 20 5 0 0 0 0 0 12 0 0 0 0 0 20 10 70 500 0.500000 1.00000 60 18 20 1 1 0 0 0 1 2 528 0 0
-    Play#1 output Play#1 1 11 "art\\040\\040artillery" 0 25 40 10 0 0 0 0 24 0 0 0 0 0 20 10 35 800 0.100000 0.400000 70 18 20 1 0 8 50 5 2 1 16 0 0
-    Play#1 output Play#1 1 12 "lat\\040\\040lt\\040artillery" 0 25 20 6 0 0 0 0 12 0 0 0 0 0 20 10 70 500 0.200000 0.600000 60 30 18 1 1 5 10 3 1 1 16 0 0
-    Play#1 output Play#1 1 13 "hat\\040\\040hvy\\040artillery" 0 25 80 12 0 0 0 0 24 0 0 0 0 0 40 20 100 800 0.00000 0.200000 60 12 20 1 0 11 99 8 4 1 0 0 0
-    Play#1 output Play#1 1 18 "har\\040\\040hvy\\040armor" 0 100 3 0 0 0 0 0 48 0 0 0 0 0 20 10 120 500 2.00000 0.800000 50 18 17 1 1 0 0 0 2 1 0 0 0
+    Play#1 output Play#1 1 0 "cav\\040\\040cavalry" 0 20 0 0 0 0 0 0 12 0 0 0 0 0 10 5 40 30 500 1.20000 0.500000 80 32 18 4 3 0 0 0 0 0 80 0 0
+    Play#1 output Play#1 1 1 "linf\\040light\\040infantry" 0 25 1 0 0 0 0 0 15 0 0 0 0 0 8 4 36 40 300 1.00000 1.50000 60 28 15 2 1 0 0 0 1 1 272 0 0
+    Play#1 output Play#1 1 2 "inf\\040\\040infantry" 0 100 0 0 0 0 0 0 24 0 0 0 0 0 10 5 40 50 500 1.00000 1.50000 60 25 15 2 1 0 0 0 0 0 272 0 0
+    Play#1 output Play#1 1 6 "sup\\040\\040supply" 0 25 200 10 300 100 100 10 300 0 200 100 0 0 10 5 40 50 500 0.100000 0.200000 80 25 20 1 0 0 0 0 0 0 20 0 0
+    Play#1 output Play#1 1 7 "tra\\040\\040train" 0 990 990 200 990 500 500 100 990 990 990 990 0 150 100 50 220 40 3500 0.00000 0.00000 120 10 25 3 0 0 0 0 0 0 6148 5 12
+    Play#1 output Play#1 1 8 "spy\\040\\040infiltrator" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 10 5 40 40 750 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0
+    Play#1 output Play#1 1 9 "com\\040\\040commando" 0 0 3 0 0 0 0 0 0 0 0 0 0 0 10 5 40 55 1500 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0
+    Play#1 output Play#1 1 10 "aau\\040\\040aa\\040unit" 0 20 5 0 0 0 0 0 12 0 0 0 0 0 20 10 60 70 500 0.500000 1.00000 60 18 20 1 1 0 0 0 1 2 528 0 0
+    Play#1 output Play#1 1 11 "art\\040\\040artillery" 0 25 40 10 0 0 0 0 24 0 0 0 0 0 20 10 60 35 800 0.100000 0.400000 70 18 20 1 0 8 50 5 2 1 16 0 0
+    Play#1 output Play#1 1 12 "lat\\040\\040lt\\040artillery" 0 25 20 6 0 0 0 0 12 0 0 0 0 0 20 10 60 70 500 0.200000 0.600000 60 30 18 1 1 5 10 3 1 1 16 0 0
+    Play#1 output Play#1 1 13 "hat\\040\\040hvy\\040artillery" 0 25 80 12 0 0 0 0 24 0 0 0 0 0 40 20 100 100 800 0.00000 0.200000 60 12 20 1 0 11 99 8 4 1 0 0 0
+    Play#1 output Play#1 1 18 "har\\040\\040hvy\\040armor" 0 100 3 0 0 0 0 0 48 0 0 0 0 0 20 10 60 120 500 2.00000 0.800000 50 18 17 1 1 0 0 0 2 1 0 0 0
     Play#1 output Play#1 1 /12
     Play#1 output Play#1 6 0 0
     Play#1 input xdump nuke-chr *