nsc: Replace NSC_EXTRA, NSC_CONST by enum ca_dump

struct castr ca_flag NSC_EXTRA was introduced in commit 3e5c064
(v4.2.18) to permit selectors that aren't in xdump.

Flag NSC_CONST was introduced in commit 445dfec, and put to use in
commit d8422ca (both v4.3.0) to protect certain table elements that
should not be changed in customized tables.

Both flags apply only to xdump, not to other uses of struct castr,
such as conditionals.

Combining NSC_EXTRA | NSC_CONST makes no sense.

I'll shortly need a way to keep selectors out of configuration tables
for conditional selector and xdump command forward compatibility.
Doing it as a third flag would add more nonsensical combinations.

Convert the flags to a separate enum ca_dump instead:

    neither   -> CA_DUMP
    NSC_CONST -> CA_DUMP_CONST
    NSC_EXTRA -> CA_DUMP_NONE

Bonus: unlike the flags it replaces, ca_dump is not visible in xdump.

Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
This commit is contained in:
Markus Armbruster 2016-05-29 23:31:31 +02:00
parent 9289eb0525
commit dc58018cd7
9 changed files with 564 additions and 488 deletions

View file

@ -256,8 +256,6 @@ of xdump meta T are:
* flags: The field's flags, a symbol set. Flags are:
- "deity", field visible only to deities
- "extra", field not to be dumped
- "const", field cannot be changed
- "bits", field is a symbol set, field type must encode symbol "d",
field table must not be -1.
- "hidden", field value is masked for contact when option HIDDEN is
@ -298,8 +296,8 @@ in other places as well:
for another table (new struct castr member ca_table). The selector
code doesn't use that, yet.
* Selector flag NSC_EXTRA to flag redundant selectors, so that xdump
can ignore them.
* Redundant selectors can be marked so that xdump ignores them (new
struct castr member ca_dump).
Meta-data is in empfile[] (table meta-data), src/lib/global/nsc.c
(selector meta-data), src/lib/global/symbol.c (symbol tables). The
@ -313,12 +311,12 @@ its meta-data, and to make sense of that table, we need meta-meta
data. So we start with that:
[3:640] Command : xdump meta meta
XDUMP meta meta 1464537892
"name" 3 4 0 -1
"type" 8 4 0 33
"flags" 8 12 0 32
"len" 7 4 0 -1
"table" 8 4 0 26
XDUMP meta meta 1464554085
"name" 3 0 0 -1
"type" 8 0 0 33
"flags" 8 8 0 32
"len" 7 0 0 -1
"table" 8 0 0 26
/5
To interpret this table, we have to know the field names and their
@ -342,9 +340,9 @@ know, namely the table of tables. Let's dump that next, starting with
its meta-data:
[3:640] Command : xdump meta table
XDUMP meta table 1464537892
XDUMP meta table 1464554085
"uid" 8 0 0 26
"name" 3 4 0 -1
"name" 3 0 0 -1
/2
Because xdump table is referenced from elsewhere (xdump meta meta
@ -354,7 +352,7 @@ table itself. Indeed, its value matches the one we got in xdump meta
meta. Let's try to dump the table:
[5:640] Command : xdump 26 *
XDUMP table 1464537892
XDUMP table 1464554085
0 "sect"
1 "ship"
[...]
@ -373,13 +371,14 @@ Now dump the two symbol tables we postponed. Because xdump accepts
table IDs as well as names, we don't have to know their names:
[5:640] Command : xdump meta 33
XDUMP meta meta-type 1464537892
"value" 8 4 0 -1
"name" 3 4 0 -1
xdump meta 33
XDUMP meta meta-type 1464554085
"value" 8 0 0 -1
"name" 3 0 0 -1
/2
[6:640] Command : xdump 33 *
XDUMP meta-type 1464537892
XDUMP meta-type 1464554085
1 "d"
2 "g"
3 "s"
@ -396,19 +395,17 @@ table IDs as well as names, we don't have to know their names:
/13
[7:640] Command : xdump meta 32
XDUMP meta meta-flags 1464537892
"value" 8 4 0 -1
"name" 3 4 0 -1
XDUMP meta meta-flags 1464554085
"value" 8 0 0 -1
"name" 3 0 0 -1
/2
[7:640] Command : xdump 32 *
XDUMP meta-flags 1464537892
XDUMP meta-flags 1464554085
1 "deity"
2 "extra"
4 "const"
8 "bits"
16 "hidden"
/5
/3
We now have complete meta-meta information:
@ -424,10 +421,10 @@ Dumping the remaining tables is easy: just walk the table of tables.
Here's the first one:
[7:640] Command : xdump meta 0
XDUMP meta sect 1464537892
XDUMP meta sect 1464554085
"owner" 5 0 0 8
"xloc" 9 4 0 -1
"yloc" 10 4 0 -1
"xloc" 9 0 0 -1
"yloc" 10 0 0 -1
"des" 4 0 0 18
[...]
/78
@ -621,8 +618,9 @@ symbol table packing.
Configuration tables contain values that are not meant to be
customized. For instance, meta-data and symbol tables reflect the
encoding of C language constructs in the server. Selector flag
NSC_CONST marks them, so that the code can prohibit changes.
encoding of C language constructs in the server. Such selectors are
marked (struct castr member ca_dump), so that the code can prohibit
changes.
All tables are checked against meta-data on server startup by
ef_verify(). More elaborate checking would be nice, and probably

View file

@ -28,7 +28,7 @@
*
* Known contributors to this file:
* Dave Pare, 1989
* Markus Armbruster, 2004-2015
* Markus Armbruster, 2004-2016
*/
#ifndef NSC_H
@ -192,12 +192,18 @@ struct symbol {
/* Selector flags */
enum {
NSC_DEITY = bit(0), /* access restricted to deity */
NSC_EXTRA = bit(1), /* computable from other selectors */
NSC_CONST = bit(2), /* field cannot be changed */
NSC_BITS = bit(3), /* value consists of flag bits */
NSC_HIDDEN = bit(4) /* visibility depends on contact */
};
/* Selector use by xdump and xundump */
enum ca_dump {
/* order is relevant */
CA_DUMP, /* xdump and xundump normally */
CA_DUMP_CONST, /* same, but value can't be changed */
CA_DUMP_NONE /* do not xdump or xundump */
};
/*
* Selector descriptor
*
@ -217,19 +223,18 @@ enum {
* access control (null for none), and CTXO is the context object.
* See struct valstr for details.
* Because virtual selectors don't have a setter method, xundump must
* be made to ignore them, by setting NSC_EXTRA.
* If flag NSC_DEITY is set, only deities can use this selector.
* If flag NSC_EXTRA is set, xdump and xundump ignore this selector.
* If flag NSC_CONST is set, the datum can't be changed from its
* initial value (xundump obeys that).
* If flag NSC_HIDDEN is set, the selector must be an array of MAXNOC
* elements, indexed by country number, and the context object must be
* EF_NATION. Array elements are masked for contact when opt_HIDDEN
* is on.
* be made to ignore them, by setting @ca_dump to CA_DUMP_NONE.
* If @ca_table is not EF_BAD, the datum refers to that Empire table;
* @ca_type must be an integer type. If flag NSC_BITS is set, the
* datum consists of flag bits, and the referred table must be a
* symbol table defining those bits.
* @ca_type must be an integer type.
* If NSC_BITS is set in @ca_flags, the datum consists of flag bits,
* and the referred table must be a symbol table defining those bits.
* If NSC_DEITY is set in @ca_flags, only deities can use this
* selector.
* If NSC_HIDDEN is set in @ca_flags, the selector must be an array of
* MAXNOC elements, indexed by country number, and the context object
* must be EF_NATION. Array elements are masked for contact when
* opt_HIDDEN is on.
* @ca_dump specifies how xdump and xundump are to use the selector.
*/
struct castr {
char *ca_name;
@ -239,6 +244,7 @@ struct castr {
void *(*ca_get)(struct valstr *, struct natstr *, void *);
int ca_table;
int ca_flags;
enum ca_dump ca_dump;
};
/* Is CA an array? */

View file

@ -27,7 +27,7 @@
* xdump.c: Extended dump
*
* Known contributors to this file:
* Markus Armbruster, 2004-2014
* Markus Armbruster, 2004-2016
*/
#include <config.h>
@ -118,7 +118,7 @@ xdmeta(struct xdstr *xd, int type)
for (i = 0; ca[i].ca_name; i++) {
if (ca[i].ca_flags & NSC_DEITY && !xd->divine)
continue;
if (ca[i].ca_flags & NSC_EXTRA)
if (ca[i].ca_dump == CA_DUMP_NONE)
continue;
xdflds(xd, mdchr_ca, &ca[i]);
xd->pr("\n");

View file

@ -28,7 +28,7 @@
*
* Known contributors to this file:
* Ron Koenderink, 2005
* Markus Armbruster, 2006-2015
* Markus Armbruster, 2006-2016
*/
#include <config.h>
@ -74,13 +74,14 @@ verify_ca(int type)
for (i = 0; ca[i].ca_name; i++) {
/*
* Virtual selectors must be NSC_EXTRA, because xundump can't
* cope with them without setter methods. Exception: if
* EFF_MEM is not set, xundump doesn't touch the table.
* Virtual selectors can't be used in xundump, since we lack a
* setter to go with ca_get(). Exception: if EFF_MEM is not
* set, xundump doesn't touch the table.
*/
if (CANT_HAPPEN((ef_flags(type) & EFF_MEM)
&& ca[i].ca_get && !(ca[i].ca_flags & NSC_EXTRA)))
ca[i].ca_flags |= NSC_EXTRA;
&& ca[i].ca_get
&& ca[i].ca_dump <= CA_DUMP_CONST))
ca[i].ca_dump = CA_DUMP_NONE;
}
return 0;
}

File diff suppressed because it is too large Load diff

View file

@ -27,7 +27,7 @@
* xdump.c: Extended dumps
*
* Known contributors to this file:
* Markus Armbruster, 2004-2014
* Markus Armbruster, 2004-2016
*/
/*
@ -242,7 +242,7 @@ xdflds(struct xdstr *xd, struct castr ca[], void *ptr)
for (i = 0; ca[i].ca_name; ++i) {
if (ca[i].ca_flags & NSC_DEITY && !xd->divine)
continue;
if (ca[i].ca_flags & NSC_EXTRA)
if (ca[i].ca_dump == CA_DUMP_NONE)
continue;
n = CA_ARRAY_LEN(&ca[i]);
j = 0;
@ -285,7 +285,7 @@ xdcolhdr(struct xdstr *xd, struct castr ca[])
for (i = 0; ca[i].ca_name; ++i) {
if (ca[i].ca_flags & NSC_DEITY && !xd->divine)
continue;
if (ca[i].ca_flags & NSC_EXTRA)
if (ca[i].ca_dump == CA_DUMP_NONE)
continue;
n = CA_ARRAY_LEN(&ca[i]);
if (n) {

View file

@ -28,7 +28,7 @@
*
* Known contributors to this file:
* Ron Koenderink, 2005
* Markus Armbruster, 2005-2014
* Markus Armbruster, 2005-2016
*/
/*
@ -122,7 +122,7 @@ ca0_is_id(int type)
{
struct castr *ca = ef_cadef(type);
return ca[0].ca_table == type && !(ca[0].ca_flags & NSC_EXTRA);
return ca[0].ca_table == type && ca[0].ca_dump <= CA_DUMP_CONST;
}
/*
@ -506,7 +506,7 @@ fldval_must_match(int fldno)
* it's for a const selector, unless the object is still blank, or
* it was already given in a previous part of a split table.
*/
return (cur_id < old_nelem && (fldca[fldno]->ca_flags & NSC_CONST))
return (cur_id < old_nelem && (fldca[fldno]->ca_dump == CA_DUMP_CONST))
|| fldidx[fldno] < cafldspp[i];
}
@ -933,7 +933,7 @@ deffld(int fldno, char *name, int idx)
return gripe("%s header '%s' in field %d",
res == M_NOTUNIQUE ? "ambiguous" : "unknown",
name, fldno + 1);
if ((ca[res].ca_flags & NSC_EXTRA) || CANT_HAPPEN(ca[res].ca_get))
if (ca[res].ca_dump > CA_DUMP_CONST || CANT_HAPPEN(ca[res].ca_get))
return gripe("extraneous header '%s' in field %d", name, fldno + 1);
if (CA_IS_ARRAY(&ca[res])) {
if (idx < 0)
@ -976,7 +976,7 @@ chkflds(void)
/* Check for missing fields */
for (i = 0; ca[i].ca_name; i++) {
cafldsmax = MAX(caflds[i], cafldspp[i]);
if (ca[i].ca_flags & NSC_EXTRA)
if (ca[i].ca_dump > CA_DUMP_CONST)
continue;
len = CA_ARRAY_LEN(&ca[i]);
if (!len && !cafldsmax)
@ -1198,7 +1198,7 @@ xufldhdr(FILE *fp, struct castr ca[])
fidx = fldidx;
for (i = 0; ca[i].ca_name; i++) {
if ((ca[i].ca_flags & NSC_EXTRA))
if (ca[i].ca_dump > CA_DUMP_CONST)
continue;
n = CA_ARRAY_LEN(&ca[i]);
j = 0;
@ -1278,7 +1278,7 @@ xundump(FILE *fp, char *file, int *plno, int expected_table)
nca = nf = 0;
for (i = 0; ca[i].ca_name; i++) {
nca++;
if (!(ca[i].ca_flags & NSC_EXTRA))
if (ca[i].ca_dump <= CA_DUMP_CONST)
nf += MAX(1, CA_ARRAY_LEN(&ca[i]));
}
fldca = malloc(nf * sizeof(*fldca));

View file

@ -79,8 +79,6 @@ struct symbol level[] = {
struct symbol meta_flags[] = {
{NSC_DEITY, "deity"},
{NSC_EXTRA, "extra"},
{NSC_CONST, "const"},
{NSC_BITS, "bits"},
{NSC_HIDDEN, "hidden"},
{0, NULL}

View file

@ -601,8 +601,8 @@
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta sect 0
Play#0 output Play#0 1 "owner" 5 0 0 8
Play#0 output Play#0 1 "xloc" 9 4 0 -1
Play#0 output Play#0 1 "yloc" 10 4 0 -1
Play#0 output Play#0 1 "xloc" 9 0 0 -1
Play#0 output Play#0 1 "yloc" 10 0 0 -1
Play#0 output Play#0 1 "des" 4 0 0 18
Play#0 output Play#0 1 "effic" 4 0 0 -1
Play#0 output Play#0 1 "mobil" 4 0 0 -1
@ -928,8 +928,8 @@
Play#0 input xdump meta 14
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta realm 0
Play#0 output Play#0 1 "cnum" 5 4 0 8
Play#0 output Play#0 1 "realm" 7 4 0 -1
Play#0 output Play#0 1 "cnum" 5 0 0 8
Play#0 output Play#0 1 "realm" 7 0 0 -1
Play#0 output Play#0 1 "xl" 9 0 0 -1
Play#0 output Play#0 1 "xh" 9 0 0 -1
Play#0 output Play#0 1 "yl" 10 0 0 -1
@ -951,7 +951,7 @@
Play#0 output Play#0 1 XDUMP meta item 0
Play#0 output Play#0 1 "uid" 4 0 0 16
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 "mnem" 13 4 1 -1
Play#0 output Play#0 1 "mnem" 13 0 1 -1
Play#0 output Play#0 1 "power" 8 0 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "sell" 8 0 0 -1
@ -983,7 +983,7 @@
Play#0 output Play#0 1 XDUMP meta sect-chr 0
Play#0 output Play#0 1 "uid" 5 0 0 18
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 "mnem" 13 4 1 -1
Play#0 output Play#0 1 "mnem" 13 0 1 -1
Play#0 output Play#0 1 "terrain" 5 0 0 18
Play#0 output Play#0 1 "prd" 8 0 0 17
Play#0 output Play#0 1 "peffic" 8 0 0 -1
@ -1131,7 +1131,7 @@
Play#0 input xdump meta 24
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta infrastructure 0
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 "lcms" 5 0 0 -1
Play#0 output Play#0 1 "hcms" 5 0 0 -1
Play#0 output Play#0 1 "dcost" 5 0 0 -1
@ -1149,7 +1149,7 @@
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta table 0
Play#0 output Play#0 1 "uid" 8 0 0 26
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 27
@ -1270,151 +1270,151 @@
Play#0 input xdump meta 28
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta meta 0
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "type" 8 4 0 33
Play#0 output Play#0 1 "flags" 8 12 0 32
Play#0 output Play#0 1 "len" 7 4 0 -1
Play#0 output Play#0 1 "table" 8 4 0 26
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 "type" 8 0 0 33
Play#0 output Play#0 1 "flags" 8 8 0 32
Play#0 output Play#0 1 "len" 7 0 0 -1
Play#0 output Play#0 1 "table" 8 0 0 26
Play#0 output Play#0 1 /5
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 29
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta agreement-status 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 30
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta land-chr-flags 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 31
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta level 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 32
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta meta-flags 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 33
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta meta-type 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 34
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta missions 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 35
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta nation-flags 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 36
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta nation-rejects 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 37
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta nation-relationships 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 38
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta nation-status 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 39
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta nuke-chr-flags 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 40
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta packing 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 41
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta page-headings 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 42
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta plague-stages 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 43
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta plane-chr-flags 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 44
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta plane-flags 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 45
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta resources 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 46
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta retreat-flags 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 47
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta sector-navigation 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 48
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta ship-chr-flags 0
Play#0 output Play#0 1 "value" 8 4 0 -1
Play#0 output Play#0 1 "name" 3 4 0 -1
Play#0 output Play#0 1 "value" 8 0 0 -1
Play#0 output Play#0 1 "name" 3 0 0 -1
Play#0 output Play#0 1 /2
Play#0 output Play#0 6 0 640
Play#0 input xdump meta 49
@ -1844,11 +1844,9 @@
Play#0 command xdump
Play#0 output Play#0 1 XDUMP meta-flags 0
Play#0 output Play#0 1 1 "deity"
Play#0 output Play#0 1 2 "extra"
Play#0 output Play#0 1 4 "const"
Play#0 output Play#0 1 8 "bits"
Play#0 output Play#0 1 16 "hidden"
Play#0 output Play#0 1 /5
Play#0 output Play#0 1 /3
Play#0 output Play#0 6 0 640
Play#0 input xdump meta-type *
Play#0 command xdump
@ -2510,11 +2508,9 @@
Play#1 command xdump
Play#1 output Play#1 1 XDUMP meta-flags 0
Play#1 output Play#1 1 1 "deity"
Play#1 output Play#1 1 2 "extra"
Play#1 output Play#1 1 4 "const"
Play#1 output Play#1 1 8 "bits"
Play#1 output Play#1 1 16 "hidden"
Play#1 output Play#1 1 /5
Play#1 output Play#1 1 /3
Play#1 output Play#1 6 0 0
Play#1 input xdump meta-type *
Play#1 command xdump