config: Make work to build units independently configurable

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>
This commit is contained in:
Markus Armbruster 2016-05-27 13:39:11 +02:00
parent 14af586b57
commit 68c7c08a58
19 changed files with 319 additions and 351 deletions

View file

@ -30,7 +30,7 @@
* Thomas Ruschak, 1992 * Thomas Ruschak, 1992
* Ken Stevens, 1995 * Ken Stevens, 1995
* Steve McClure, 1998 * Steve McClure, 1998
* Markus Armbruster, 2004-2015 * Markus Armbruster, 2004-2016
*/ */
#ifndef LAND_H #ifndef LAND_H
@ -86,6 +86,7 @@ struct lchrstr {
int l_mil; /* how many mil it takes to build (unused) */ int l_mil; /* how many mil it takes to build (unused) */
int l_gun; /* how many guns 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_shell; /* #shells it takes to build (unused) */
int l_bwork; /* work to build 100% */
int l_tech; /* tech required to build */ int l_tech; /* tech required to build */
int l_cost; /* how much it costs to build */ int l_cost; /* how much it costs to build */
float l_att; /* attack multiplier */ float l_att; /* attack multiplier */
@ -120,9 +121,6 @@ struct lchrstr {
#define L_TRAIN bit(11) /* train unit - neato */ #define L_TRAIN bit(11) /* train unit - neato */
#define L_HEAVY bit(12) /* heavy unit - can't go on trains */ #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) */ /* Chance to detect L_SPY unit (percent) */
#define LND_SPY_DETECT_CHANCE(eff) ((110-(eff))/100.0) #define LND_SPY_DETECT_CHANCE(eff) ((110-(eff))/100.0)

View file

@ -28,6 +28,7 @@
* *
* Known contributors to this file: * Known contributors to this file:
* Dave Pare, 1986 * Dave Pare, 1986
* Markus Armbruster, 2004-2016
*/ */
#ifndef NUKE_H #ifndef NUKE_H
@ -69,8 +70,9 @@ struct nchrstr {
int n_rad; int n_rad;
int n_blast; /* blast radius */ int n_blast; /* blast radius */
int n_dam; /* damage at center */ 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_tech; /* tech needed to build */
int n_cost; /* how much it costs to build */
int n_weight; int n_weight;
int n_flags; /* description of capability */ int n_flags; /* description of capability */
signed char n_type; /* index in nchr[] */ signed char n_type; /* index in nchr[] */
@ -82,10 +84,6 @@ struct nchrstr {
#define putnuke(n, p) ef_write(EF_NUKE, (n), (p)) #define putnuke(n, p) ef_write(EF_NUKE, (n), (p))
#define getnukep(n) ((struct nukstr *)ef_ptr(EF_NUKE, (n))) #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]; extern struct nchrstr nchr[N_MAXNUKE + 1];
/* src/lib/common/cargo.c */ /* src/lib/common/cargo.c */

View file

@ -30,7 +30,7 @@
* Dave Pare, 1986 * Dave Pare, 1986
* Ken Stevens, 1995 * Ken Stevens, 1995
* Steve McClure, 1998 * Steve McClure, 1998
* Markus Armbruster, 2004-2013 * Markus Armbruster, 2004-2016
*/ */
#ifndef PLANE_H #ifndef PLANE_H
@ -81,8 +81,9 @@ struct plchrstr {
char *pl_name; /* full name of type of plane */ char *pl_name; /* full name of type of plane */
int pl_lcm; /* costs to build */ int pl_lcm; /* costs to build */
int pl_hcm; int pl_hcm;
int pl_cost; int pl_bwork; /* work to build 100% */
int pl_tech; /* tech needed to build */ 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_acc; /* bombing accuracy (higher the better) */
int pl_load; /* bomb load, also for carrying cargo */ int pl_load; /* bomb load, also for carrying cargo */
int pl_att; /* air-air attack/defense strengths */ int pl_att; /* air-air attack/defense strengths */
@ -141,9 +142,6 @@ struct shiplist {
struct shiplist *next; 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_att(struct plchrstr *, int);
extern int pl_def(struct plchrstr *, int); extern int pl_def(struct plchrstr *, int);
extern int pl_acc(struct plchrstr *, int); extern int pl_acc(struct plchrstr *, int);

View file

@ -31,7 +31,7 @@
* Thomas Ruschak, 1992 * Thomas Ruschak, 1992
* Ken Stevens, 1995 * Ken Stevens, 1995
* Steve McClure, 1998 * Steve McClure, 1998
* Markus Armbruster, 2004-2015 * Markus Armbruster, 2004-2016
*/ */
#ifndef SHIP_H #ifndef SHIP_H
@ -93,6 +93,7 @@ struct mchrstr {
unsigned char m_nxlight; /* maximum number of xlight planes */ unsigned char m_nxlight; /* maximum number of xlight planes */
unsigned char m_nchoppers; /* maximum number of choppers */ unsigned char m_nchoppers; /* maximum number of choppers */
char *m_name; /* full name of type of ship */ 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_tech; /* tech required to build */
int m_cost; /* how much it costs to build */ int m_cost; /* how much it costs to build */
int m_flags; /* what special things can this ship do */ int m_flags; /* what special things can this ship do */
@ -131,9 +132,6 @@ struct mchrstr {
extern struct mchrstr mchr[SHP_TYPE_MAX + 2]; extern struct mchrstr mchr[SHP_TYPE_MAX + 2];
/* Work required for building 100% */
#define SHP_BLD_WORK(lcm, hcm) (20 + (lcm) + 2 * (hcm))
enum { enum {
SHP_AIROPS_EFF = 50, /* min. efficiency for air ops */ SHP_AIROPS_EFF = 50, /* min. efficiency for air ops */
SHP_TORP_SHELLS = 3 /* number of shells used by a torpedo */ SHP_TORP_SHELLS = 3 /* number of shells used by a torpedo */

View file

@ -56,12 +56,6 @@ military crew. So, for maximum efficiency growth,
put full crews on your newly built put full crews on your newly built
ships and leave them in harbor until they reach 100%. ships and leave them in harbor until they reach 100%.
.s1 .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. Ships at sea have only their crews to make repairs.
A small crew on a large ship A small crew on a large ship
may not be able to make any repairs at all. 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 it has reached 40% efficiency. Planes below 10% efficiency are
destroyed. destroyed.
.s1 .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 .s1
Planes will also gain efficiency in non-airport sectors, but at only 1/3rd Planes will also gain efficiency in non-airport sectors, but at only 1/3rd
the normal rate. the normal rate.
@ -105,12 +94,6 @@ dead). Then,
each update, the unit will grow in efficiency, and use up more each update, the unit will grow in efficiency, and use up more
of the required goods until it reaches 100%. of the required goods until it reaches 100%.
.s1 .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 Land units can also gain efficiency in fortress sectors, but cannot
be built there. be built there.
Land units can gain efficiency in any other sector type (assuming Land units can gain efficiency in any other sector type (assuming

View file

@ -28,7 +28,7 @@
* *
* Known contributors to this file: * Known contributors to this file:
* Steve McClure, 1998-2000 * Steve McClure, 1998-2000
* Markus Armbruster, 2004-2015 * Markus Armbruster, 2004-2016
*/ */
#include <config.h> #include <config.h>
@ -211,23 +211,21 @@ build_ship(struct sctstr *sp, int type, int tlev)
{ {
struct mchrstr *mp = &mchr[type]; struct mchrstr *mp = &mchr[type];
short mat[I_MAX+1]; short mat[I_MAX+1];
int work;
struct shpstr ship; struct shpstr ship;
memset(mat, 0, sizeof(mat)); memset(mat, 0, sizeof(mat));
mat[I_LCM] = mp->m_lcm; mat[I_LCM] = mp->m_lcm;
mat[I_HCM] = mp->m_hcm; mat[I_HCM] = mp->m_hcm;
work = SHP_BLD_WORK(mp->m_lcm, mp->m_hcm);
if (sp->sct_type != SCT_HARBR && !player->god) { if (sp->sct_type != SCT_HARBR && !player->god) {
pr("Ships must be built in harbours.\n"); pr("Ships must be built in harbours.\n");
return 0; 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; return 0;
if (!build_can_afford(mp->m_cost, SHIP_MINEFF, mp->m_name)) if (!build_can_afford(mp->m_cost, SHIP_MINEFF, mp->m_name))
return 0; 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); ef_blank(EF_SHIP, pick_unused_unit_uid(EF_SHIP), &ship);
ship.shp_x = sp->sct_x; ship.shp_x = sp->sct_x;
@ -264,23 +262,21 @@ build_land(struct sctstr *sp, int type, int tlev)
{ {
struct lchrstr *lp = &lchr[type]; struct lchrstr *lp = &lchr[type];
short mat[I_MAX+1]; short mat[I_MAX+1];
int work;
struct lndstr land; struct lndstr land;
memset(mat, 0, sizeof(mat)); memset(mat, 0, sizeof(mat));
mat[I_LCM] = lp->l_lcm; mat[I_LCM] = lp->l_lcm;
mat[I_HCM] = lp->l_hcm; mat[I_HCM] = lp->l_hcm;
work = LND_BLD_WORK(lp->l_lcm, lp->l_hcm);
if (sp->sct_type != SCT_HEADQ && !player->god) { if (sp->sct_type != SCT_HEADQ && !player->god) {
pr("Land units must be built in headquarters.\n"); pr("Land units must be built in headquarters.\n");
return 0; 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; return 0;
if (!build_can_afford(lp->l_cost, LAND_MINEFF, lp->l_name)) if (!build_can_afford(lp->l_cost, LAND_MINEFF, lp->l_name))
return 0; 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); ef_blank(EF_LAND, pick_unused_unit_uid(EF_LAND), &land);
land.lnd_x = sp->sct_x; land.lnd_x = sp->sct_x;
@ -316,7 +312,6 @@ build_nuke(struct sctstr *sp, int type, int tlev)
{ {
struct nchrstr *np = &nchr[type]; struct nchrstr *np = &nchr[type];
short mat[I_MAX+1]; short mat[I_MAX+1];
int work;
struct nukstr nuke; struct nukstr nuke;
if (sp->sct_type != SCT_NUKE && !player->god) { 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_HCM] = np->n_hcm;
mat[I_OIL] = np->n_oil; mat[I_OIL] = np->n_oil;
mat[I_RAD] = np->n_rad; 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; return 0;
if (!build_can_afford(np->n_cost, 100, np->n_name)) if (!build_can_afford(np->n_cost, 100, np->n_name))
return 0; 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); ef_blank(EF_NUKE, pick_unused_unit_uid(EF_NUKE), &nuke);
nuke.nuk_x = sp->sct_x; nuke.nuk_x = sp->sct_x;
@ -362,24 +356,22 @@ build_plane(struct sctstr *sp, int type, int tlev)
{ {
struct plchrstr *pp = &plchr[type]; struct plchrstr *pp = &plchr[type];
short mat[I_MAX+1]; short mat[I_MAX+1];
int work;
struct plnstr plane; struct plnstr plane;
memset(mat, 0, sizeof(mat)); memset(mat, 0, sizeof(mat));
mat[I_MILIT] = pp->pl_crew; mat[I_MILIT] = pp->pl_crew;
mat[I_LCM] = pp->pl_lcm; mat[I_LCM] = pp->pl_lcm;
mat[I_HCM] = pp->pl_hcm; mat[I_HCM] = pp->pl_hcm;
work = PLN_BLD_WORK(pp->pl_lcm, pp->pl_hcm);
if (sp->sct_type != SCT_AIRPT && !player->god) { if (sp->sct_type != SCT_AIRPT && !player->god) {
pr("Planes must be built in airports.\n"); pr("Planes must be built in airports.\n");
return 0; 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; return 0;
if (!build_can_afford(pp->pl_cost, PLANE_MINEFF, pp->pl_name)) if (!build_can_afford(pp->pl_cost, PLANE_MINEFF, pp->pl_name))
return 0; 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); ef_blank(EF_PLANE, pick_unused_unit_uid(EF_PLANE), &plane);
plane.pln_x = sp->sct_x; plane.pln_x = sp->sct_x;

View file

@ -29,6 +29,7 @@
* Known contributors to this file: * Known contributors to this file:
* Dave Pare, 1986 * Dave Pare, 1986
* Steve McClure, 1996-2000 * Steve McClure, 1996-2000
* Markus Armbruster, 2004-2016
*/ */
#include <config.h> #include <config.h>
@ -106,7 +107,7 @@ lupgr(void)
} }
n++; n++;
lp = &lchr[(int)land.lnd_type]; 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) { if (sect.sct_avail < avail) {
pr("Not enough available work in %s to upgrade a %s\n", pr("Not enough available work in %s to upgrade a %s\n",
xyas(sect.sct_x, sect.sct_y, player->cnum), lp->l_name); xyas(sect.sct_x, sect.sct_y, player->cnum), lp->l_name);
@ -186,7 +187,7 @@ supgr(void)
} }
n++; n++;
mp = &mchr[(int)ship.shp_type]; 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) { if (sect.sct_avail < avail) {
pr("Not enough available work in %s to upgrade a %s\n", pr("Not enough available work in %s to upgrade a %s\n",
xyas(sect.sct_x, sect.sct_y, player->cnum), mp->m_name); xyas(sect.sct_x, sect.sct_y, player->cnum), mp->m_name);
@ -271,7 +272,7 @@ pupgr(void)
continue; continue;
n++; n++;
pp = &plchr[(int)plane.pln_type]; 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) { if (sect.sct_avail < avail) {
pr("Not enough available work in %s to upgrade a %s\n", pr("Not enough available work in %s to upgrade a %s\n",
xyas(sect.sct_x, sect.sct_y, player->cnum), pp->pl_name); xyas(sect.sct_x, sect.sct_y, player->cnum), pp->pl_name);

View file

@ -27,7 +27,7 @@
* nsc.c: Empire selection global structures * nsc.c: Empire selection global structures
* *
* Known contributors to this file: * 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}, {"glim", fldoff(m_glim), NSC_INT, 0, NULL, EF_BAD, 0},
{"nxlight", fldoff(m_nxlight), NSC_UCHAR, 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}, {"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}, {"tech", fldoff(m_tech), NSC_INT, 0, NULL, EF_BAD, 0},
{"cost", fldoff(m_cost), 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, {"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}, {"name", fldoff(pl_name), NSC_STRING, 0, NULL, EF_BAD, 0},
{"l_build", fldoff(pl_lcm), NSC_INT, 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}, {"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}, {"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}, {"acc", fldoff(pl_acc), NSC_INT, 0, NULL, EF_BAD, 0},
{"load", fldoff(pl_load), 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}, {"att", fldoff(pl_att), NSC_INT, 0, NULL, EF_BAD, 0},
@ -367,6 +369,7 @@ struct castr lchr_ca[] = {
NSC_IVEC(fldoff(l_item), ""), NSC_IVEC(fldoff(l_item), ""),
{"l_build", fldoff(l_lcm), NSC_INT, 0, NULL, EF_BAD, 0}, {"l_build", fldoff(l_lcm), NSC_INT, 0, NULL, EF_BAD, 0},
{"h_build", fldoff(l_hcm), 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}, {"tech", fldoff(l_tech), NSC_INT, 0, NULL, EF_BAD, 0},
{"cost", fldoff(l_cost), 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}, {"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}, {"r_build", fldoff(n_rad), NSC_INT, 0, NULL, EF_BAD, 0},
{"blast", fldoff(n_blast), 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}, {"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}, {"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}, {"weight", fldoff(n_weight), NSC_INT, 0, NULL, EF_BAD, 0},
{"flags", fldoff(n_flags), NSC_INT, 0, NULL, {"flags", fldoff(n_flags), NSC_INT, 0, NULL,
EF_NUKE_CHR_FLAGS, NSC_BITS}, EF_NUKE_CHR_FLAGS, NSC_BITS},

View file

@ -27,7 +27,7 @@
# land.config: Land unit characteristics # land.config: Land unit characteristics
# #
# Known contributors to this file: # Known contributors to this file:
# Markus Armbruster, 2006-2011 # Markus Armbruster, 2006-2016
# #
# Derived from land.c; known contributors: # Derived from land.c; known contributors:
# Thomas Ruschak, 1992 # Thomas Ruschak, 1992
@ -43,29 +43,29 @@
# econfig key custom_tables. # econfig key custom_tables.
config land-chr config land-chr
type name l_b h_b tech cost ... type name l_b h_b bwork tech cost ...
0 "cav cavalry" 10 5 30 500 0 "cav cavalry" 10 5 40 30 500
1 "linf light infantry" 8 4 40 300 1 "linf light infantry" 8 4 36 40 300
2 "inf infantry" 10 5 50 500 2 "inf infantry" 10 5 40 50 500
3 "mtif motor inf" 15 10 190 400 3 "mtif motor inf" 15 10 55 190 400
4 "mif mech inf" 15 10 190 800 4 "mif mech inf" 15 10 55 190 800
5 "mar marines" 10 5 140 1000 5 "mar marines" 10 5 40 140 1000
6 "sup supply" 10 5 50 500 6 "sup supply" 10 5 40 50 500
7 "tra train" 100 50 40 3500 7 "tra train" 100 50 220 40 3500
8 "spy infiltrator" 10 5 40 750 8 "spy infiltrator" 10 5 40 40 750
9 "com commando" 10 5 55 1500 9 "com commando" 10 5 40 55 1500
10 "aau aa unit" 20 10 70 500 10 "aau aa unit" 20 10 60 70 500
11 "art artillery" 20 10 35 800 11 "art artillery" 20 10 60 35 800
12 "lat lt artillery" 20 10 70 500 12 "lat lt artillery" 20 10 60 70 500
13 "hat hvy artillery" 40 20 100 800 13 "hat hvy artillery" 40 20 100 100 800
14 "mat mech artillery" 20 10 200 1000 14 "mat mech artillery" 20 10 60 200 1000
15 "eng engineer" 10 5 130 3000 15 "eng engineer" 10 5 40 130 3000
16 "meng mech engineer" 10 5 260 4500 16 "meng mech engineer" 10 5 40 260 4500
17 "lar lt armor" 10 5 150 600 17 "lar lt armor" 10 5 40 150 600
18 "har hvy armor" 20 10 120 500 18 "har hvy armor" 20 10 60 120 500
19 "arm armor" 20 10 170 1000 19 "arm armor" 20 10 60 170 1000
20 "sec security" 10 5 170 600 20 "sec security" 10 5 40 170 600
21 "rad radar unit" 10 5 270 1000 21 "rad radar unit" 10 5 40 270 1000
/config /config
config land-chr config land-chr

View file

@ -27,7 +27,7 @@
# nuke.c: Nuke characteristics # nuke.c: Nuke characteristics
# #
# Known contributors to this file: # Known contributors to this file:
# Markus Armbruster, 2006-2011 # Markus Armbruster, 2006-2016
# #
# Derived from nuke.c. # Derived from nuke.c.
# #
@ -40,18 +40,18 @@
# econfig key custom_tables. # econfig key custom_tables.
config nuke-chr config nuke-chr
type name l_b h_b o_b r_b bla dam cost tech wei flags type name l_b h_b o_b r_b bwork bla dam cost tech wei flags
0 "10kt fission" 50 50 25 70 3 70 10000 280 4 () 0 "10kt fission" 50 50 25 70 49 3 70 10000 280 4 ()
1 "15kt fission" 50 50 25 80 3 90 15000 290 5 () 1 "15kt fission" 50 50 25 80 51 3 90 15000 290 5 ()
2 "50kt fission" 60 60 30 90 3 100 25000 300 6 () 2 "50kt fission" 60 60 30 90 60 3 100 25000 300 6 ()
3 "100kt fission" 75 75 40 120 4 125 30000 310 8 () 3 "100kt fission" 75 75 40 120 77 4 125 30000 310 8 ()
4 "5kt fusion" 15 15 15 30 2 80 12500 315 1 () 4 "5kt fusion" 15 15 15 30 18 2 80 12500 315 1 ()
5 "75kt fusion" 40 40 35 50 3 90 20000 320 3 () 5 "75kt fusion" 40 40 35 50 41 3 90 20000 320 3 ()
6 "250kt fusion" 50 50 45 60 4 110 25000 330 4 () 6 "250kt fusion" 50 50 45 60 51 4 110 25000 330 4 ()
7 "500kt fusion" 60 60 50 80 5 120 35000 340 5 () 7 "500kt fusion" 60 60 50 80 62 5 120 35000 340 5 ()
8 "1mt fusion" 75 75 50 110 6 150 40000 350 5 () 8 "1mt fusion" 75 75 50 110 77 6 150 40000 350 5 ()
9 "60kt neutron" 60 60 30 100 3 30 30000 355 2 (neutron) 9 "60kt neutron" 60 60 30 100 62 3 30 30000 355 2 (neutron)
10 "3mt fusion" 100 100 75 130 7 170 45000 360 6 () 10 "3mt fusion" 100 100 75 130 101 7 170 45000 360 6 ()
11 "5mt fusion" 120 120 100 150 8 190 50000 370 8 () 11 "5mt fusion" 120 120 100 150 122 8 190 50000 370 8 ()
12 "120kt neutron" 75 75 40 120 5 50 36000 375 3 (neutron) 12 "120kt neutron" 75 75 40 120 77 5 50 36000 375 3 (neutron)
/config /config

View file

@ -27,7 +27,7 @@
# plane.config: Plane characteristics # plane.config: Plane characteristics
# #
# Known contributors to this file: # Known contributors to this file:
# Markus Armbruster, 2006-2011 # Markus Armbruster, 2006-2016
# #
# Derived from plane.c; known contributors: # Derived from plane.c; known contributors:
# Dave Pare, 1986 # Dave Pare, 1986
@ -45,42 +45,42 @@
# econfig key custom_tables. # econfig key custom_tables.
config plane-chr config plane-chr
type name l_b h_b cre tech cost ... type name l_b h_b cre bwork tech cost ...
0 "f1 Sopwith Camel" 8 2 1 50 400 0 "f1 Sopwith Camel" 8 2 1 32 50 400
1 "f2 P-51 Mustang" 8 2 1 80 400 1 "f2 P-51 Mustang" 8 2 1 32 80 400
2 "jf1 F-4 Phantom" 12 4 2 125 1000 2 "jf1 F-4 Phantom" 12 4 2 40 125 1000
3 "jf2 AV-8B Harrier" 12 4 2 195 1400 3 "jf2 AV-8B Harrier" 12 4 2 40 195 1400
4 "sf F-117A Nighthawk" 15 5 2 325 3000 4 "sf F-117A Nighthawk" 15 5 2 45 325 3000
5 "es P-38 Lightning" 9 3 1 90 700 5 "es P-38 Lightning" 9 3 1 35 90 700
6 "jes F-14E jet escort" 14 8 2 160 1400 6 "jes F-14E jet escort" 14 8 2 50 160 1400
7 "lb TBD-1 Devastator" 10 3 1 60 550 7 "lb TBD-1 Devastator" 10 3 1 36 60 550
8 "jl A-6 Intruder" 14 4 2 130 1000 8 "jl A-6 Intruder" 14 4 2 42 130 1000
9 "mb medium bomber" 14 5 3 80 1000 9 "mb medium bomber" 14 5 3 44 80 1000
10 "jfb FB-111 Aardvark f/b" 20 10 5 140 1800 10 "jfb FB-111 Aardvark f/b" 20 10 5 60 140 1800
11 "hb B-26B Marauder" 20 6 2 90 1100 11 "hb B-26B Marauder" 20 6 2 52 90 1100
12 "jhb B-52 Strato-Fortress" 26 13 5 150 3200 12 "jhb B-52 Strato-Fortress" 26 13 5 72 150 3200
13 "sb B-2 stealth bomber" 15 5 2 325 4000 13 "sb B-2 stealth bomber" 15 5 2 45 325 4000
14 "as anti-sub plane" 10 3 2 100 550 14 "as anti-sub plane" 10 3 2 36 100 550
15 "np naval plane" 20 10 4 135 1800 15 "np naval plane" 20 10 4 60 135 1800
16 "nc AH-1 Cobra" 8 2 2 160 800 16 "nc AH-1 Cobra" 8 2 2 32 160 800
17 "ac AH-64 Apache" 8 2 2 200 800 17 "ac AH-64 Apache" 8 2 2 32 200 800
18 "tc transport chopper" 8 2 2 135 800 18 "tc transport chopper" 8 2 2 32 135 800
19 "tr C-56 Lodestar" 14 5 3 85 1000 19 "tr C-56 Lodestar" 14 5 3 44 85 1000
20 "jt C-141 Starlifter" 18 5 3 160 1500 20 "jt C-141 Starlifter" 18 5 3 48 160 1500
21 "zep Zeppelin" 6 2 3 70 1000 21 "zep Zeppelin" 6 2 3 30 70 1000
22 "re recon" 12 4 2 130 800 22 "re recon" 12 4 2 40 130 800
23 "sp E2-C Hawkeye" 15 5 2 190 2000 23 "sp E2-C Hawkeye" 15 5 2 45 190 2000
24 "lst landsat" 20 20 0 245 2000 24 "lst landsat" 20 20 0 80 245 2000
25 "ss KH-7 spysat" 20 20 0 305 4000 25 "ss KH-7 spysat" 20 20 0 80 305 4000
26 "mi Harpoon" 8 2 0 160 300 26 "mi Harpoon" 8 2 0 32 160 300
27 "sam Sea Sparrow" 3 1 0 180 200 27 "sam Sea Sparrow" 3 1 0 25 180 200
28 "ssm V2" 15 15 0 145 800 28 "ssm V2" 15 15 0 65 145 800
29 "srbm Atlas" 20 20 0 200 1000 29 "srbm Atlas" 20 20 0 80 200 1000
30 "irbm Titan" 20 20 0 260 1500 30 "irbm Titan" 20 20 0 80 260 1500
31 "icbm Minuteman" 20 20 0 310 3000 31 "icbm Minuteman" 20 20 0 80 310 3000
32 "slbm Trident" 20 20 0 280 2000 32 "slbm Trident" 20 20 0 80 280 2000
33 "asat anti-sat" 20 20 0 305 2000 33 "asat anti-sat" 20 20 0 80 305 2000
34 "abm Patriot" 16 8 0 270 1500 34 "abm Patriot" 16 8 0 52 270 1500
/config /config
config plane-chr config plane-chr

View file

@ -27,7 +27,7 @@
# ship.config: Ship characteristics # ship.config: Ship characteristics
# #
# Known contributors to this file: # Known contributors to this file:
# Markus Armbruster, 2006-2015 # Markus Armbruster, 2006-2016
# #
# Derived from ship.c; known contributors: # Derived from ship.c; known contributors:
# Dave Pare, 1986 # Dave Pare, 1986
@ -45,45 +45,45 @@
# econfig key custom_tables. # econfig key custom_tables.
config ship-chr config ship-chr
type name l_b h_b tech cost ... type name l_b h_b bwork tech cost ...
0 "fb fishing boat" 25 15 0 180 0 "fb fishing boat" 25 15 75 0 180
1 "ft fishing trawler" 25 15 35 300 1 "ft fishing trawler" 25 15 75 35 300
2 "cs cargo ship" 60 40 20 500 2 "cs cargo ship" 60 40 160 20 500
3 "os ore ship" 60 40 20 500 3 "os ore ship" 60 40 160 20 500
4 "ss slave ship" 60 40 0 300 4 "ss slave ship" 60 40 160 0 300
# Uncomment to enable trade ships # Uncomment to enable trade ships
# 5 "ts trade ship" 200 100 30 1750 # 5 "ts trade ship" 200 100 420 30 1750
6 "frg frigate" 30 30 0 600 6 "frg frigate" 30 30 110 0 600
7 "oe oil exploration boat" 25 15 40 800 7 "oe oil exploration boat" 25 15 75 40 800
8 "od oil derrick" 60 60 50 1500 8 "od oil derrick" 60 60 200 50 1500
9 "pt patrol boat" 20 10 40 300 9 "pt patrol boat" 20 10 60 40 300
10 "lc light cruiser" 30 40 45 800 10 "lc light cruiser" 30 40 130 45 800
11 "hc heavy cruiser" 40 50 50 1200 11 "hc heavy cruiser" 40 50 160 50 1200
12 "tt troop transport" 50 50 10 800 12 "tt troop transport" 50 50 170 10 800
13 "bb battleship" 50 70 45 1800 13 "bb battleship" 50 70 210 45 1800
14 "bbc battlecruiser" 50 60 75 1500 14 "bbc battlecruiser" 50 60 190 75 1500
15 "tk tanker" 60 40 35 600 15 "tk tanker" 60 40 160 35 600
16 "ms minesweeper" 25 15 40 400 16 "ms minesweeper" 25 15 75 40 400
17 "dd destroyer" 30 30 70 600 17 "dd destroyer" 30 30 110 70 600
18 "sb submarine" 30 30 60 650 18 "sb submarine" 30 30 110 60 650
19 "sbc cargo submarine" 40 40 150 1200 19 "sbc cargo submarine" 40 40 140 150 1200
20 "cal light carrier" 50 60 80 2700 20 "cal light carrier" 50 60 190 80 2700
21 "car aircraft carrier" 60 70 160 4500 21 "car aircraft carrier" 60 70 220 160 4500
22 "can nuc carrier" 70 80 305 8000 22 "can nuc carrier" 70 80 250 305 8000
23 "ls landing ship" 60 40 145 1000 23 "ls landing ship" 60 40 160 145 1000
24 "af asw frigate" 40 30 220 800 24 "af asw frigate" 40 30 120 220 800
25 "na nuc attack sub" 30 40 260 1200 25 "na nuc attack sub" 30 40 130 260 1200
26 "ad asw destroyer" 40 40 240 1500 26 "ad asw destroyer" 40 40 140 240 1500
27 "nm nuc miss sub" 30 40 270 1500 27 "nm nuc miss sub" 30 40 130 270 1500
28 "msb missile sub" 30 30 230 1200 28 "msb missile sub" 30 30 110 230 1200
29 "mb missile boat" 20 20 180 500 29 "mb missile boat" 20 20 80 180 500
30 "mf missile frigate" 40 30 280 1000 30 "mf missile frigate" 40 30 120 280 1000
31 "mc missile cruiser" 50 50 290 1500 31 "mc missile cruiser" 50 50 170 290 1500
32 "aac aa cruiser" 50 60 130 1500 32 "aac aa cruiser" 50 60 190 130 1500
33 "agc aegis cruiser" 50 60 265 4000 33 "agc aegis cruiser" 50 60 190 265 4000
34 "ncr nuc cruiser" 50 50 325 1800 34 "ncr nuc cruiser" 50 50 170 325 1800
35 "nas nuc asw cruiser" 50 50 330 1800 35 "nas nuc asw cruiser" 50 50 170 330 1800
36 "nsp nuc supply ship" 60 40 360 1500 36 "nsp nuc supply ship" 60 40 160 360 1500
/config /config
config ship-chr config ship-chr

View file

@ -31,7 +31,7 @@
* Jeff Bailey, 1990 * Jeff Bailey, 1990
* Steve McClure, 1996 * Steve McClure, 1996
* Ron Koenderink, 2005-2009 * Ron Koenderink, 2005-2009
* Markus Armbruster, 2006-2015 * Markus Armbruster, 2006-2016
*/ */
#include <config.h> #include <config.h>
@ -192,16 +192,14 @@ show_nuke_build(int tlev)
int n = make_nchr_index(chridx, tlev); int n = make_nchr_index(chridx, tlev);
int i; int i;
struct nchrstr *np; struct nchrstr *np;
int avail;
pr("%13s lcm hcm oil rad avail tech res $\n", ""); pr("%13s lcm hcm oil rad avail tech res $\n", "");
for (i = 0; i < n; i++) { for (i = 0; i < n; i++) {
np = &nchr[chridx[i].type]; 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", 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_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 ? drnuke_const > MIN_DRNUKE_CONST ?
ceil(np->n_tech * drnuke_const) : 0.0, ceil(np->n_tech * drnuke_const) : 0.0,
np->n_cost); np->n_cost);
@ -243,7 +241,7 @@ show_ship_build(int tlev)
mp = &mchr[chridx[i].type]; mp = &mchr[chridx[i].type];
pr("%-25.25s %3d %3d %5d %4d $%d\n", pr("%-25.25s %3d %3d %5d %4d $%d\n",
mp->m_name, mp->m_lcm, mp->m_hcm, 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", pr("%-25.25s %3d %3d %4d %5d %4d $%d\n",
pp->pl_name, pp->pl_lcm, pp->pl_name, pp->pl_lcm,
pp->pl_hcm, pp->pl_crew, 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_name, lp->l_lcm,
lp->l_hcm, lp->l_hcm,
lp->l_gun, 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);
} }
} }

View file

@ -30,7 +30,7 @@
* Dave Pare, 1986 * Dave Pare, 1986
* Thomas Ruschak, 1992 * Thomas Ruschak, 1992
* Steve McClure, 1996 * Steve McClure, 1996
* Markus Armbruster, 2006-2011 * Markus Armbruster, 2006-2016
*/ */
#include <config.h> #include <config.h>
@ -199,7 +199,6 @@ landrepair(struct lndstr *land, struct natstr *np, struct bp *bp, int etus)
struct lchrstr *lp; struct lchrstr *lp;
int build; int build;
int avail; int avail;
int w_p_eff;
int mult; int mult;
int mvec[I_MAX + 1]; int mvec[I_MAX + 1];
@ -223,8 +222,7 @@ landrepair(struct lndstr *land, struct natstr *np, struct bp *bp, int etus)
else else
avail = bp_get_avail(bp, sp) * 100; avail = bp_get_avail(bp, sp) * 100;
w_p_eff = LND_BLD_WORK(lp->l_lcm, lp->l_hcm); delta = roundavg((double)avail / lp->l_bwork);
delta = roundavg((double)avail / w_p_eff);
if (delta <= 0) if (delta <= 0)
return; return;
if (delta > (int)((float)etus * land_grow_scale)) 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)) if ((sp->sct_type != SCT_HEADQ) && (sp->sct_type != SCT_FORTR))
build /= 3; build /= 3;
avail -= build * w_p_eff; avail -= build * lp->l_bwork;
if (avail < 0) if (avail < 0)
avail = 0; avail = 0;
if (!player->simulation) if (!player->simulation)

View file

@ -29,7 +29,7 @@
* Known contributors to this file: * Known contributors to this file:
* Dave Pare, 1986 * Dave Pare, 1986
* Steve McClure, 1998 * Steve McClure, 1998
* Markus Armbruster, 2006-2011 * Markus Armbruster, 2006-2016
*/ */
#include <config.h> #include <config.h>
@ -131,7 +131,6 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
int delta; int delta;
int mult; int mult;
int avail; int avail;
int w_p_eff;
int used; int used;
carrier = NULL; carrier = NULL;
@ -166,8 +165,7 @@ planerepair(struct plnstr *pp, struct natstr *np, struct bp *bp, int etus)
if (carrier) if (carrier)
avail += etus * carrier->shp_item[I_MILIT] / 2; avail += etus * carrier->shp_item[I_MILIT] / 2;
w_p_eff = PLN_BLD_WORK(pcp->pl_lcm, pcp->pl_hcm); delta = roundavg((double)avail / pcp->pl_bwork);
delta = roundavg((double)avail / w_p_eff);
if (delta <= 0) if (delta <= 0)
return; return;
if (delta > (int)((float)etus * plane_grow_scale)) 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) if (carrier)
build = delta; build = delta;
used = build * w_p_eff; used = build * pcp->pl_bwork;
/* /*
* I didn't use roundavg here, because I want to * I didn't use roundavg here, because I want to
* penalize the player with a large number of planes. * penalize the player with a large number of planes.

View file

@ -30,7 +30,7 @@
* Dave Pare, 1986 * Dave Pare, 1986
* Steve McClure, 1996 * Steve McClure, 1996
* Ron Koenderink, 2004 * Ron Koenderink, 2004
* Markus Armbruster, 2006-2011 * Markus Armbruster, 2006-2016
*/ */
#include <config.h> #include <config.h>
@ -247,7 +247,6 @@ shiprepair(struct shpstr *ship, struct natstr *np, struct bp *bp, int etus)
int build; int build;
int wf; int wf;
int avail; int avail;
int w_p_eff;
int mult; int mult;
int mvec[I_MAX + 1]; 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; 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)) if ((sp->sct_off) && (sp->sct_own == ship->shp_own))
return; return;
@ -288,7 +285,7 @@ shiprepair(struct shpstr *ship, struct natstr *np, struct bp *bp, int etus)
return; return;
} }
delta = roundavg((double)avail / w_p_eff); delta = roundavg((double)avail / mp->m_bwork);
if (delta <= 0) if (delta <= 0)
return; return;
if (delta > (int)((float)etus * ship_grow_scale)) 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) if (sp->sct_type != SCT_HARBR)
build = delta; build = delta;
wf -= build * w_p_eff; wf -= build * mp->m_bwork;
if (wf < 0) { if (wf < 0) {
/* /*
* I didn't use roundavg here, because I want to penalize * I didn't use roundavg here, because I want to penalize

View 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-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-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/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-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-constnum:3: value for field 1 must be 0
tests/empdump/xundump-errors/fld-conststr:3: value for field 1 must be "road network" 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 'glim' missing
tests/empdump/xundump-errors/fld-eof:2: field 'nxlight' 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 '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 'tech' missing
tests/empdump/xundump-errors/fld-eof:2: field 'cost' missing tests/empdump/xundump-errors/fld-eof:2: field 'cost' missing
tests/empdump/xundump-errors/fld-eof:2: field 'flags' missing tests/empdump/xundump-errors/fld-eof:2: field 'flags' missing

View file

@ -1,3 +1,3 @@
XDUMP ship-chr 1 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 # ambiguous flags symbol 's' in field 29

View file

@ -1030,12 +1030,13 @@
Play#0 output Play#0 1 "glim" 8 0 0 -1 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 "nxlight" 5 0 0 -1
Play#0 output Play#0 1 "nchoppers" 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 "tech" 8 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 "flags" 8 8 0 48 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 "nplanes" 5 0 0 -1
Play#0 output Play#0 1 "nland" 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 output Play#0 6 0 640
Play#0 input xdump meta 20 Play#0 input xdump meta 20
Play#0 command xdump Play#0 command xdump
@ -1044,8 +1045,9 @@
Play#0 output Play#0 1 "name" 3 0 0 -1 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 "l_build" 8 0 0 -1
Play#0 output Play#0 1 "h_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 "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 "acc" 8 0 0 -1
Play#0 output Play#0 1 "load" 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 "att" 8 0 0 -1
@ -1055,7 +1057,7 @@
Play#0 output Play#0 1 "fuel" 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 "stealth" 8 0 0 -1
Play#0 output Play#0 1 "flags" 8 8 0 43 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 output Play#0 6 0 640
Play#0 input xdump meta 21 Play#0 input xdump meta 21
Play#0 command xdump Play#0 command xdump
@ -1078,6 +1080,7 @@
Play#0 output Play#0 1 "rad" 6 0 0 -1 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 "l_build" 8 0 0 -1
Play#0 output Play#0 1 "h_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 "tech" 8 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 "att" 12 0 0 -1 Play#0 output Play#0 1 "att" 12 0 0 -1
@ -1095,7 +1098,7 @@
Play#0 output Play#0 1 "flags" 8 8 0 30 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 "nxlight" 5 0 0 -1
Play#0 output Play#0 1 "nland" 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 output Play#0 6 0 640
Play#0 input xdump meta 22 Play#0 input xdump meta 22
Play#0 command xdump Play#0 command xdump
@ -1108,11 +1111,12 @@
Play#0 output Play#0 1 "r_build" 8 0 0 -1 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 "blast" 8 0 0 -1
Play#0 output Play#0 1 "dam" 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 "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 "weight" 8 0 0 -1
Play#0 output Play#0 1 "flags" 8 8 0 39 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 output Play#0 6 0 640
Play#0 input xdump meta 23 Play#0 input xdump meta 23
Play#0 command xdump Play#0 command xdump
@ -1525,127 +1529,127 @@
Play#0 input xdump ship-chr * Play#0 input xdump ship-chr *
Play#0 command xdump Play#0 command xdump
Play#0 output Play#0 1 XDUMP ship-chr 0 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 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 35 300 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 20 500 262144 0 2 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 20 500 0 0 0 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 0 300 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 0 600 16384 0 2 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 40 800 524320 0 0 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 50 1500 32 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 40 300 524290 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 45 800 128 0 2 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 50 1200 0 0 4 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 10 800 16384 0 2 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 45 1800 0 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 75 1500 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 35 600 262144 0 0 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 40 400 524672 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 70 600 196 0 1 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 60 650 706 0 0 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 150 1200 262720 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 80 2700 8 20 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 160 4500 8 40 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 305 8000 262152 60 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 145 1000 2048 0 6 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 220 800 4166 0 0 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 260 1200 4802 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 240 1500 4166 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 270 1500 592 20 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 230 1200 592 10 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 180 500 16 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 280 1000 16 20 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 290 1500 1048592 40 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 130 1500 1048576 0 4 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 265 4000 1048592 32 0 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 325 1800 1048592 20 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 330 1800 4166 0 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 360 1500 262144 0 2 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 1 /36
Play#0 output Play#0 6 0 640 Play#0 output Play#0 6 0 640
Play#0 input xdump plane-chr * Play#0 input xdump plane-chr *
Play#0 command xdump Play#0 command xdump
Play#0 output Play#0 1 XDUMP plane-chr 0 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 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 400 80 80 1 4 4 8 1 1 0 70 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 1000 125 45 1 14 14 11 2 3 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 1400 195 30 1 17 17 14 2 3 0 86 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 3000 325 45 3 19 19 20 2 4 80 70 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 700 90 60 1 5 5 15 1 2 0 131074 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 1400 160 60 1 10 10 25 2 3 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 550 60 50 2 0 3 7 1 1 0 83 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 1000 130 25 3 0 9 11 2 3 0 67 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 1000 80 45 4 0 5 14 3 3 0 3 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 1800 140 30 7 8 8 20 5 5 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 1100 90 90 5 0 4 15 2 2 0 1 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 3200 150 80 12 0 11 35 5 6 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 4000 325 25 8 0 15 28 2 5 80 3 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 550 100 85 2 0 3 15 2 2 0 819202 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 1800 135 70 3 0 4 28 4 2 0 819274 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 800 160 55 2 0 3 11 2 2 0 573458 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 800 200 15 1 0 9 11 2 2 40 16402 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 800 135 0 5 0 3 7 2 2 40 81944 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 1000 85 0 7 0 2 15 3 3 0 65544 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 1500 160 0 16 0 9 35 3 4 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 1000 70 60 2 0 -3 15 3 2 0 154 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 800 130 0 0 0 4 15 2 2 20 128 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 2000 190 0 0 0 11 32 2 5 50 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 2000 245 0 0 0 3 41 0 9 0 512 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 4000 305 0 0 0 3 61 0 9 0 896 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 300 160 50 6 0 5 6 0 0 0 1048690 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 200 180 0 0 0 18 2 0 0 0 8308 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 800 145 60 3 0 3 4 0 0 0 50 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 1000 200 60 6 0 5 9 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 1500 260 60 8 0 10 15 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 3000 310 60 10 0 15 41 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 2000 280 60 8 0 6 23 0 0 0 114 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 2000 305 50 6 0 7 13 0 4 0 560 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 1500 270 50 0 0 31 12 0 0 0 2096 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 1 /35
Play#0 output Play#0 6 0 640 Play#0 output Play#0 6 0 640
Play#0 input xdump land-chr * Play#0 input xdump land-chr *
Play#0 command xdump Play#0 command xdump
Play#0 output Play#0 1 XDUMP land-chr 0 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 750 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0 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 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 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 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 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 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 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 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 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 800 0.00000 0.200000 60 12 20 1 0 11 99 8 4 1 0 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 1 /22
Play#0 output Play#0 6 0 640 Play#0 output Play#0 6 0 640
Play#0 input xdump nuke-chr * Play#0 input xdump nuke-chr *
Play#0 command xdump Play#0 command xdump
Play#0 output Play#0 1 XDUMP nuke-chr 0 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 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 15000 290 5 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 25000 300 6 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 30000 310 8 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 12500 315 1 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 20000 320 3 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 25000 330 4 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 35000 340 5 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 40000 350 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 30000 355 2 1 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 45000 360 6 0 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 50000 370 8 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 36000 375 3 1 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 1 /13
Play#0 output Play#0 6 0 640 Play#0 output Play#0 6 0 640
Play#0 input xdump news-chr * Play#0 input xdump news-chr *
@ -2246,57 +2250,57 @@
Play#1 input xdump ship-chr * Play#1 input xdump ship-chr *
Play#1 command xdump Play#1 command xdump
Play#1 output Play#1 1 XDUMP ship-chr 0 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 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 35 300 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 20 500 262144 0 2 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 20 500 0 0 0 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 0 300 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 0 600 16384 0 2 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 40 800 524320 0 0 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 50 1500 32 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 40 300 524290 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 45 800 128 0 2 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 50 1200 0 0 4 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 10 800 16384 0 2 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 45 1800 0 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 75 1500 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 35 600 262144 0 0 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 40 400 524672 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 70 600 196 0 1 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 60 650 706 0 0 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 80 2700 8 20 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 1 /19
Play#1 output Play#1 6 0 0 Play#1 output Play#1 6 0 0
Play#1 input xdump plane-chr * Play#1 input xdump plane-chr *
Play#1 command xdump Play#1 command xdump
Play#1 output Play#1 1 XDUMP plane-chr 0 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 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 400 80 80 1 4 4 8 1 1 0 70 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 1000 125 45 1 14 14 11 2 3 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 700 90 60 1 5 5 15 1 2 0 131074 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 550 60 50 2 0 3 7 1 1 0 83 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 1000 80 45 4 0 5 14 3 3 0 3 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 1100 90 90 5 0 4 15 2 2 0 1 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 550 100 85 2 0 3 15 2 2 0 819202 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 1000 85 0 7 0 2 15 3 3 0 65544 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 1000 70 60 2 0 -3 15 3 2 0 154 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 1 /10
Play#1 output Play#1 6 0 0 Play#1 output Play#1 6 0 0
Play#1 input xdump land-chr * Play#1 input xdump land-chr *
Play#1 command xdump Play#1 command xdump
Play#1 output Play#1 1 XDUMP land-chr 0 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 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 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 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 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 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 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 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 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 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 750 0.00000 0.00000 80 32 18 4 3 0 0 0 0 0 1360 0 0 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 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 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 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 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 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 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 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 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 800 0.00000 0.200000 60 12 20 1 0 11 99 8 4 1 0 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 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 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 1 /12
Play#1 output Play#1 6 0 0 Play#1 output Play#1 6 0 0
Play#1 input xdump nuke-chr * Play#1 input xdump nuke-chr *