]> git.pond.sub.org Git - empserver/commitdiff
edit: Add editing of ship, plane and land unit type
authorMarkus Armbruster <armbru@pond.sub.org>
Sun, 29 Dec 2013 12:52:37 +0000 (13:52 +0100)
committerMarkus Armbruster <armbru@pond.sub.org>
Thu, 2 Jan 2014 13:33:47 +0000 (14:33 +0100)
Signed-off-by: Markus Armbruster <armbru@pond.sub.org>
src/lib/commands/edit.c
tests/actofgod/actofgod.xdump
tests/actofgod/geninput.pl
tests/actofgod/journal.log

index 92aa4b581f6d3eeb0f9eec820e14a43de917bfb1..ee38a1543d94db615766a4443b270560d16e3bb6 100644 (file)
@@ -252,6 +252,7 @@ print_plane(struct plnstr *plane)
 {
     pr("%s %s\n", prnatid(plane->pln_own), prplane(plane));
     pr("UID <U>: %d\t\t", plane->pln_uid);
 {
     pr("%s %s\n", prnatid(plane->pln_own), prplane(plane));
     pr("UID <U>: %d\t\t", plane->pln_uid);
+    pr("Type <T>: %s\n", plchr[plane->pln_type].pl_name);
     pr("Owner <O>: %d\t\t", plane->pln_own);
     pr("Location <l>: %s\n",
        xyas(plane->pln_x, plane->pln_y, player->cnum));
     pr("Owner <O>: %d\t\t", plane->pln_own);
     pr("Location <l>: %s\n",
        xyas(plane->pln_x, plane->pln_y, player->cnum));
@@ -269,7 +270,8 @@ static void
 print_land(struct lndstr *land)
 {
     pr("%s %s\n", prnatid(land->lnd_own), prland(land));
 print_land(struct lndstr *land)
 {
     pr("%s %s\n", prnatid(land->lnd_own), prland(land));
-    pr("UID <U>: %d\n", land->lnd_uid);
+    pr("UID <U>: %d\t\t", land->lnd_uid);
+    pr("Type <T>: %s\n", lchr[land->lnd_type].l_name);
     pr("Owner <O>: %d\n", land->lnd_own);
     pr("Location <L>: %s\n", xyas(land->lnd_x, land->lnd_y, player->cnum));
     pr("Efficiency <e>: %d\t", land->lnd_effic);
     pr("Owner <O>: %d\n", land->lnd_own);
     pr("Location <L>: %s\n", xyas(land->lnd_x, land->lnd_y, player->cnum));
     pr("Efficiency <e>: %d\t", land->lnd_effic);
@@ -304,7 +306,8 @@ static void
 print_ship(struct shpstr *ship)
 {
     pr("%s %s\n", prnatid(ship->shp_own), prship(ship));
 print_ship(struct shpstr *ship)
 {
     pr("%s %s\n", prnatid(ship->shp_own), prship(ship));
-    pr("UID <U>: %d\n", ship->shp_uid);
+    pr("UID <U>: %d\t\t\t", ship->shp_uid);
+    pr("Type <t>: %s\n", mchr[ship->shp_type].m_name);
     pr("Owner <O>: %d\t\t\t", ship->shp_own);
     pr("Location <L>: %s\n", xyas(ship->shp_x, ship->shp_y, player->cnum));
     pr("Tech <T>: %d\t\t\t", ship->shp_tech);
     pr("Owner <O>: %d\t\t\t", ship->shp_own);
     pr("Location <L>: %s\n", xyas(ship->shp_x, ship->shp_y, player->cnum));
     pr("Tech <T>: %d\t\t\t", ship->shp_tech);
@@ -836,6 +839,17 @@ edit_item(struct empobj *unit, short item[], struct ichrstr *ip, int arg,
     item[ip->i_uid] = arg;
 }
 
     item[ip->i_uid] = arg;
 }
 
+static void
+limit_item(struct empobj *unit, short item[], short lim[])
+{
+    i_type it;
+
+    for (it = I_NONE + 1; it <= I_MAX; it++) {
+       if (item[it] > lim[it])
+           edit_item(unit, item, &ichr[it], item[it], lim);
+    }
+}
+
 static int
 edit_ship(struct shpstr *ship, char *key, char *p)
 {
 static int
 edit_ship(struct shpstr *ship, char *key, char *p)
 {
@@ -851,6 +865,21 @@ edit_ship(struct shpstr *ship, char *key, char *p)
     case 'F':
        return edit_unit((struct empobj *)ship, key, p,
                         SHIP_MINEFF, "fleet", 0);
     case 'F':
        return edit_unit((struct empobj *)ship, key, p,
                         SHIP_MINEFF, "fleet", 0);
+    case 't':
+       arg = ef_elt_byname(EF_SHIP_CHR, p);
+       if (arg < 0) {
+           pr("%s: invalid ship type\n", p);
+           return RET_FAIL;
+       }
+       divine_unit_change((struct empobj *)ship, "Type",
+                          arg != ship->shp_type, 0,
+                          "to %s", mchr[arg].m_name);
+       ship->shp_type = arg;
+       limit_item((struct empobj *)ship, ship->shp_item, mchr[arg].m_item);
+       if (ship->shp_tech >= mchr[arg].m_tech)
+           break;
+       arg = mchr[arg].m_tech;
+       /* fall through */
     case 'T':
        arg = LIMIT_TO(arg, mcp->m_tech, SHRT_MAX);
        divine_unit_change((struct empobj *)ship, "Tech level",
     case 'T':
        arg = LIMIT_TO(arg, mcp->m_tech, SHRT_MAX);
        divine_unit_change((struct empobj *)ship, "Tech level",
@@ -923,6 +952,21 @@ edit_land(struct lndstr *land, char *key, char *p)
        return edit_unit((struct empobj *)land, key, p,
                         LAND_MINEFF, "army",
                         land->lnd_ship >= 0 || land->lnd_land >= 0);
        return edit_unit((struct empobj *)land, key, p,
                         LAND_MINEFF, "army",
                         land->lnd_ship >= 0 || land->lnd_land >= 0);
+    case 'T':
+       arg = ef_elt_byname(EF_LAND_CHR, p);
+       if (arg < 0) {
+           pr("%s: invalid land unit type\n", p);
+           return RET_FAIL;
+       }
+       divine_unit_change((struct empobj *)land, "Type",
+                          arg != land->lnd_type, 0,
+                          "to %s", lchr[arg].l_name);
+       land->lnd_type = arg;
+       limit_item((struct empobj *)land, land->lnd_item, lchr[arg].l_item);
+       if (land->lnd_tech >= lchr[arg].l_tech)
+           break;
+       arg = lchr[arg].l_tech;
+       /* fall through */
     case 't':
        arg = LIMIT_TO(arg, lcp->l_tech, SHRT_MAX);
        divine_unit_change((struct empobj *)land, "Tech level",
     case 't':
        arg = LIMIT_TO(arg, lcp->l_tech, SHRT_MAX);
        divine_unit_change((struct empobj *)land, "Tech level",
@@ -1025,6 +1069,20 @@ edit_plane(struct plnstr *plane, char *key, char *p)
        return edit_unit((struct empobj *)plane, key, p,
                         PLANE_MINEFF, "wing",
                         plane->pln_ship >= 0 || plane->pln_land >= 0);
        return edit_unit((struct empobj *)plane, key, p,
                         PLANE_MINEFF, "wing",
                         plane->pln_ship >= 0 || plane->pln_land >= 0);
+    case 'T':
+       arg = ef_elt_byname(EF_PLANE_CHR, p);
+       if (arg < 0) {
+           pr("%s: invalid plane type\n", p);
+           return RET_FAIL;
+       }
+       divine_unit_change((struct empobj *)plane, "Type",
+                          arg != plane->pln_type, 0,
+                          "to %s", plchr[arg].pl_name);
+       plane->pln_type = arg;
+       if (plane->pln_tech >= plchr[arg].pl_tech)
+           break;
+       arg = plchr[arg].pl_tech;
+       /* fall through */
     case 't':
        arg = LIMIT_TO(arg, pcp->pl_tech, SHRT_MAX);
        divine_unit_change((struct empobj *)plane, "Tech level",
     case 't':
        arg = LIMIT_TO(arg, pcp->pl_tech, SHRT_MAX);
        divine_unit_change((struct empobj *)plane, "Tech level",
index b808384cfbf04b52f76a40d59bd8d2775a6cf035..5a0903ae5982e716d32fd6ab8dcccac4be2b8199 100644 (file)
@@ -201,7 +201,7 @@ uid owner xloc yloc type effic mobil off tech opx opy mission radius fleet xstar
 3 3 1 -1 2 20 -127 0 20 0 0 none 0 "a" 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 3 "" 1 -1 3 (injured) "jj"
 4 3 1 -1 2 100 127 0 32767 0 0 none 0 "" 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 exposed 32767 0 0 "" 4 "" 1 -1 3 () ""
 5 3 1 -1 2 100 127 0 32767 0 0 none 0 "" 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 exposed 32767 0 0 "" 3 "" 1 -1 3 () ""
 3 3 1 -1 2 20 -127 0 20 0 0 none 0 "a" 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 3 "" 1 -1 3 (injured) "jj"
 4 3 1 -1 2 100 127 0 32767 0 0 none 0 "" 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 exposed 32767 0 0 "" 4 "" 1 -1 3 () ""
 5 3 1 -1 2 100 127 0 32767 0 0 none 0 "" 0 0 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 50 0 0 0 0 0 0 0 0 0 0 0 0 exposed 32767 0 0 "" 3 "" 1 -1 3 () ""
-6 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 0 "" 0 0 0 () ""
+6 1 0 0 10 20 0 0 50 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 5 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 0 "" 0 0 0 () ""
 7 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 0 "" 0 0 0 () ""
 8 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 0 "" 0 0 0 () ""
 9 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 0 "" 0 0 0 () ""
 7 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 0 "" 0 0 0 () ""
 8 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 0 "" 0 0 0 () ""
 9 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 0 0 "" 0 "" 0 0 0 () ""
@@ -254,7 +254,7 @@ uid owner xloc yloc type effic mobil off tech opx opy mission radius wing range
 3 3 1 -1 0 10 -127 0 50 0 0 none 0 "a" 0 0 3 -1 () 0 0.00000
 4 3 3 -1 0 100 127 0 32767 0 0 none 0 "" 18 0 -1 4 () 0 0.00000
 5 3 1 -1 0 100 127 0 32767 0 0 none 0 "" 18 0 -1 -1 () 0 0.00000
 3 3 1 -1 0 10 -127 0 50 0 0 none 0 "a" 0 0 3 -1 () 0 0.00000
 4 3 3 -1 0 100 127 0 32767 0 0 none 0 "" 18 0 -1 4 () 0 0.00000
 5 3 1 -1 0 100 127 0 32767 0 0 none 0 "" 18 0 -1 -1 () 0 0.00000
-6 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 -1 -1 () 0 0.00000
+6 1 0 0 9 10 0 0 90 0 0 none 0 "" 0 0 -1 -1 () 0 0.00000
 7 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 -1 -1 () 0 0.00000
 8 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 -1 -1 () 0 0.00000
 9 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 -1 -1 () 0 0.00000
 7 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 -1 -1 () 0 0.00000
 8 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 -1 -1 () 0 0.00000
 9 0 0 0 0 0 0 0 0 0 0 none 0 "" 0 0 -1 -1 () 0 0.00000
@@ -307,7 +307,7 @@ uid owner xloc yloc type effic mobil off tech opx opy mission radius army ship h
 3 3 1 -1 6 10 -127 0 50 0 0 none 0 "a" 3 0 0 (injured) "jj" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 4 3 3 -1 6 100 127 0 32767 0 0 none 0 "" 2 127 100 () "" 0 25 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 5 3 1 -1 6 100 127 0 32767 0 0 none 0 "" -1 127 100 () "" 0 25 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 3 3 1 -1 6 10 -127 0 50 0 0 none 0 "a" 3 0 0 (injured) "jj" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 4 3 3 -1 6 100 127 0 32767 0 0 none 0 "" 2 127 100 () "" 0 25 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 5 3 1 -1 6 100 127 0 32767 0 0 none 0 "" -1 127 100 () "" 0 25 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
-6 0 0 0 0 0 0 0 0 0 0 none 0 "" -1 0 0 () "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
+6 1 0 0 11 10 0 0 100 0 0 none 0 "" -1 0 0 () "" 0 0 0 10 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 7 0 0 0 0 0 0 0 0 0 0 none 0 "" -1 0 0 () "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 8 0 0 0 0 0 0 0 0 0 0 none 0 "" -1 0 0 () "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 9 0 0 0 0 0 0 0 0 0 0 none 0 "" -1 0 0 () "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 7 0 0 0 0 0 0 0 0 0 0 none 0 "" -1 0 0 () "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 8 0 0 0 0 0 0 0 0 0 0 none 0 "" -1 0 0 () "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
 9 0 0 0 0 0 0 0 0 0 0 none 0 "" -1 0 0 () "" 0 0 0 0 0 0 0 0 0 0 0 0 0 0 healthy 0 -1 0
@@ -367,9 +367,9 @@ actor action victim times duration time
 0 44 1 32 0 0
 0 43 2 5 0 0
 0 44 3 22 0 0
 0 44 1 32 0 0
 0 43 2 5 0 0
 0 44 3 22 0 0
-0 43 1 73 0 0
-0 42 1 4 0 0
-1 45 0 1 0 0
+0 43 1 79 0 0
+0 42 1 6 0 0
+1 45 0 3 0 0
 0 43 3 33 0 0
 0 44 2 6 0 0
 0 42 3 4 0 0
 0 43 3 33 0 0
 0 44 2 6 0 0
 0 42 3 4 0 0
index 56bb4bd332923f4c60fd9bc65aeaa4d16908fa9f..a003c504c62794cc5266c3fa5e5ab596d9f09ebf 100755 (executable)
@@ -248,6 +248,9 @@ for my $ef ('ship', 'plane', 'land') {
     edit($ef, 3, $key, '1,-1');
 }
 
     edit($ef, 3, $key, '1,-1');
 }
 
+# ship: type
+edit('ship', 6, 't', 'lc', 'O', 1, 't', 'lc', 't', 'hc', 'g', 8, 't', 'lc');
+
 # ship: effic mobil tech pstage ptime milit
 edit_int('ship', 2, (
     ['E', 0, 100],
 # ship: effic mobil tech pstage ptime milit
 edit_int('ship', 2, (
     ['E', 0, 100],
@@ -258,6 +261,9 @@ edit_int('ship', 2, (
     ['m', 0, 50],
 ));
 
     ['m', 0, 50],
 ));
 
+# plane: type
+edit('plane', 6, 'T', 'mb', 'O', 1, 'T', 'mb', 'T', 'hb', 'T', 'mb');
+
 # plane: effic mobil range tech
 edit_int('plane', 2, (
     ['e', 0, 100],
 # plane: effic mobil range tech
 edit_int('plane', 2, (
     ['e', 0, 100],
@@ -266,6 +272,10 @@ edit_int('plane', 2, (
     ['t', 50, 32767],
 ));
 
     ['t', 50, 32767],
 ));
 
+# land: type
+edit('land', 6, 'T', 'art', 'O', 1, 'T', 'art', 'T', 'hat', 'g', 12,
+     'T', 'art');
+
 # land: effic mobil tech harden retreat milit
 edit_int('land', 2, (
     ['e', 0, 100],
 # land: effic mobil tech harden retreat milit
 edit_int('land', 2, (
     ['e', 0, 100],
index a36565ee175923d0b2b5606e3f84b444b09d8fe4..a5e2caf7920d7176529a62315749bb75b085f18a 100644 (file)
     Play#0 command edit
     Play#0 output Play#0 1 Location of sup  supply #3 changed from 1,-1 to 1,-1
     Play#0 output Play#0 6 0 640
     Play#0 command edit
     Play#0 output Play#0 1 Location of sup  supply #3 changed from 1,-1 to 1,-1
     Play#0 output Play#0 6 0 640
+    Play#0 input edit s 6 t lc O 1 t lc t hc g 8 t lc
+    Play#0 command edit
+    Play#0 output Play#0 1 Type of fb   fishing boat (#6) changed to lc   light cruiser
+    Play#0 output Play#0 1 Tech level of lc   light cruiser (#6) changed from 0 to 45
+    Play#0 output Play#0 1 Owner of lc   light cruiser (#6) changed from POGO (#0) to 1 (#1)
+    Play#0 output Play#0 1 Efficiency of lc   light cruiser (#6) changed from 0 to 20
+    Play#0 output Play#0 1 Type of lc   light cruiser (#6) unchanged
+    Play#0 output Play#0 1 Type of lc   light cruiser (#6) changed to hc   heavy cruiser
+    Play#0 output Play#0 1 Tech level of hc   heavy cruiser (#6) changed from 45 to 50
+    Play#0 output Play#0 1 guns of hc   heavy cruiser (#6) changed from 0 to 8
+    Play#0 output Play#0 1 Type of hc   heavy cruiser (#6) changed to lc   light cruiser
+    Play#0 output Play#0 1 guns of lc   light cruiser (#6) changed from 8 to 5
+    Play#0 output Play#0 6 0 640
     Play#0 input edit s 2 E 0
     Play#0 command edit
     Play#0 output Play#0 1 Efficiency of cs   cargo ship (#2) unchanged
     Play#0 input edit s 2 E 0
     Play#0 command edit
     Play#0 output Play#0 1 Efficiency of cs   cargo ship (#2) unchanged
     Play#0 command edit
     Play#0 output Play#0 1 military of cs   cargo ship (#5) changed from 0 to 50
     Play#0 output Play#0 6 0 640
     Play#0 command edit
     Play#0 output Play#0 1 military of cs   cargo ship (#5) changed from 0 to 50
     Play#0 output Play#0 6 0 640
+    Play#0 input edit p 6 T mb O 1 T mb T hb T mb
+    Play#0 command edit
+    Play#0 output Play#0 1 Type of f1   Sopwith Camel #6 changed to mb   medium bomber
+    Play#0 output Play#0 1 Tech level of mb   medium bomber #6 changed from 0 to 80
+    Play#0 output Play#0 1 Owner of mb   medium bomber #6 changed from POGO (#0) to 1 (#1)
+    Play#0 output Play#0 1 Efficiency of mb   medium bomber #6 changed from 0 to 10
+    Play#0 output Play#0 1 Type of mb   medium bomber #6 unchanged
+    Play#0 output Play#0 1 Type of mb   medium bomber #6 changed to hb   B-26B Marauder
+    Play#0 output Play#0 1 Tech level of hb   B-26B Marauder #6 changed from 80 to 90
+    Play#0 output Play#0 1 Type of hb   B-26B Marauder #6 changed to mb   medium bomber
+    Play#0 output Play#0 6 0 640
     Play#0 input edit p 2 e 0
     Play#0 command edit
     Play#0 output Play#0 1 Efficiency of f1   Sopwith Camel #2 unchanged
     Play#0 input edit p 2 e 0
     Play#0 command edit
     Play#0 output Play#0 1 Efficiency of f1   Sopwith Camel #2 unchanged
     Play#0 command edit
     Play#0 output Play#0 1 Tech level of f1   Sopwith Camel #5 changed from 100 to 32767
     Play#0 output Play#0 6 0 640
     Play#0 command edit
     Play#0 output Play#0 1 Tech level of f1   Sopwith Camel #5 changed from 100 to 32767
     Play#0 output Play#0 6 0 640
+    Play#0 input edit u 6 T art O 1 T art T hat g 12 T art
+    Play#0 command edit
+    Play#0 output Play#0 1 Type of cav  cavalry #6 changed to art  artillery
+    Play#0 output Play#0 1 Tech level of art  artillery #6 changed from 0 to 35
+    Play#0 output Play#0 1 Owner of art  artillery #6 changed from POGO (#0) to 1 (#1)
+    Play#0 output Play#0 1 Efficiency of art  artillery #6 changed from 0 to 10
+    Play#0 output Play#0 1 Type of art  artillery #6 unchanged
+    Play#0 output Play#0 1 Type of art  artillery #6 changed to hat  hvy artillery
+    Play#0 output Play#0 1 Tech level of hat  hvy artillery #6 changed from 35 to 100
+    Play#0 output Play#0 1 guns of hat  hvy artillery #6 changed from 0 to 12
+    Play#0 output Play#0 1 Type of hat  hvy artillery #6 changed to art  artillery
+    Play#0 output Play#0 1 guns of art  artillery #6 changed from 12 to 10
+    Play#0 output Play#0 6 0 640
     Play#0 input edit u 2 e 0
     Play#0 command edit
     Play#0 output Play#0 1 Efficiency of sup  supply #2 unchanged
     Play#0 input edit u 2 e 0
     Play#0 command edit
     Play#0 output Play#0 1 Efficiency of sup  supply #2 unchanged
     Play#0 input edit s 0
     Play#0 command edit
     Play#0 output Play#0 1 POGO (#0) cs   cargo ship (#0)
     Play#0 input edit s 0
     Play#0 command edit
     Play#0 output Play#0 1 POGO (#0) cs   cargo ship (#0)
-    Play#0 output Play#0 1 UID <U>: 0
+    Play#0 output Play#0 1 UID <U>: 0                  Type <t>: cs   cargo ship
     Play#0 output Play#0 1 Owner <O>: 0                        Location <L>: 1,-1
     Play#0 output Play#0 1 Tech <T>: 100                       Efficiency <E>: 0
     Play#0 output Play#0 1 Mobility <M>: 0             Fleet <F>: 
     Play#0 output Play#0 1 Owner <O>: 0                        Location <L>: 1,-1
     Play#0 output Play#0 1 Tech <T>: 100                       Efficiency <E>: 0
     Play#0 output Play#0 1 Mobility <M>: 0             Fleet <F>: 
     Play#0 input edit s 0
     Play#0 command edit
     Play#0 output Play#0 1 POGO (#0) cs   cargo ship (#0)
     Play#0 input edit s 0
     Play#0 command edit
     Play#0 output Play#0 1 POGO (#0) cs   cargo ship (#0)
-    Play#0 output Play#0 1 UID <U>: 0
+    Play#0 output Play#0 1 UID <U>: 0                  Type <t>: cs   cargo ship
     Play#0 output Play#0 1 Owner <O>: 0                        Location <L>: 1,-1
     Play#0 output Play#0 1 Tech <T>: 100                       Efficiency <E>: 0
     Play#0 output Play#0 1 Mobility <M>: 2             Fleet <F>: 
     Play#0 output Play#0 1 Owner <O>: 0                        Location <L>: 1,-1
     Play#0 output Play#0 1 Tech <T>: 100                       Efficiency <E>: 0
     Play#0 output Play#0 1 Mobility <M>: 2             Fleet <F>: 
     Play#0 input edit p 0
     Play#0 command edit
     Play#0 output Play#0 1 POGO (#0) f1   Sopwith Camel #0
     Play#0 input edit p 0
     Play#0 command edit
     Play#0 output Play#0 1 POGO (#0) f1   Sopwith Camel #0
-    Play#0 output Play#0 1 UID <U>: 0          Owner <O>: 0            Location <l>: 1,-1
+    Play#0 output Play#0 1 UID <U>: 0          Type <T>: f1   Sopwith Camel
+    Play#0 output Play#0 1 Owner <O>: 0                Location <l>: 1,-1
     Play#0 output Play#0 1 Efficiency <e>: 0   Mobility <m>: 0
     Play#0 output Play#0 1 Tech <t>: 100               Wing <w>: 
     Play#0 output Play#0 1 Range <r>: 9                Flags <f>: 0
     Play#0 output Play#0 1 Efficiency <e>: 0   Mobility <m>: 0
     Play#0 output Play#0 1 Tech <t>: 100               Wing <w>: 
     Play#0 output Play#0 1 Range <r>: 9                Flags <f>: 0
     Play#0 input edit u 0
     Play#0 command edit
     Play#0 output Play#0 1 POGO (#0) sup  supply #0
     Play#0 input edit u 0
     Play#0 command edit
     Play#0 output Play#0 1 POGO (#0) sup  supply #0
-    Play#0 output Play#0 1 UID <U>: 0
+    Play#0 output Play#0 1 UID <U>: 0          Type <T>: sup  supply
     Play#0 output Play#0 1 Owner <O>: 0
     Play#0 output Play#0 1 Location <L>: 1,-1
     Play#0 output Play#0 1 Efficiency <e>: 0   Mobility <M>: 0
     Play#0 output Play#0 1 Owner <O>: 0
     Play#0 output Play#0 1 Location <L>: 1,-1
     Play#0 output Play#0 1 Efficiency <e>: 0   Mobility <M>: 0
     Play#0 output Play#0 1 POGO gave you 1 civilians in 8,6
     Play#0 output Play#0 1 POGO gave you 9997 civilians in 6,6
     Play#0 output Play#0 1 POGO stole 1 civilians from 8,6
     Play#0 output Play#0 1 POGO gave you 1 civilians in 8,6
     Play#0 output Play#0 1 POGO gave you 9997 civilians in 6,6
     Play#0 output Play#0 1 POGO stole 1 civilians from 8,6
+    Play#0 output Play#0 1 lc   light cruiser (#6) given to you by an act of POGO!
+    Play#0 output Play#0 1 Type of lc   light cruiser (#6) changed to hc   heavy cruiser by an act of POGO
+    Play#0 output Play#0 1 Tech level of hc   heavy cruiser (#6) changed from 45 to 50 by an act of POGO
+    Play#0 output Play#0 1 POGO gave you 8 guns in hc   heavy cruiser (#6)
+    Play#0 output Play#0 1 Type of hc   heavy cruiser (#6) changed to lc   light cruiser by an act of POGO
+    Play#0 output Play#0 1 POGO stole 3 guns from lc   light cruiser (#6)
+    Play#0 output Play#0 1 mb   medium bomber #6 given to you by an act of POGO!
+    Play#0 output Play#0 1 Type of mb   medium bomber #6 changed to hb   B-26B Marauder by an act of POGO
+    Play#0 output Play#0 1 Tech level of hb   B-26B Marauder #6 changed from 80 to 90 by an act of POGO
+    Play#0 output Play#0 1 Type of hb   B-26B Marauder #6 changed to mb   medium bomber by an act of POGO
+    Play#0 output Play#0 1 art  artillery #6 given to you by an act of POGO!
+    Play#0 output Play#0 1 Type of art  artillery #6 changed to hat  hvy artillery by an act of POGO
+    Play#0 output Play#0 1 Tech level of hat  hvy artillery #6 changed from 35 to 100 by an act of POGO
+    Play#0 output Play#0 1 POGO gave you 12 guns in hat  hvy artillery #6
+    Play#0 output Play#0 1 Type of hat  hvy artillery #6 changed to art  artillery by an act of POGO
+    Play#0 output Play#0 1 POGO stole 2 guns from art  artillery #6
     Play#0 output Play#0 1 Money changed from 0 to -2147483648 by an act of POGO!
     Play#0 output Play#0 1 Technology changed from 0.00 to 3.14 by an act of POGO!
     Play#0 output Play#0 1 Research changed from 0.00 to 3.14 by an act of POGO!
     Play#0 output Play#0 1 Money changed from 0 to -2147483648 by an act of POGO!
     Play#0 output Play#0 1 Technology changed from 0.00 to 3.14 by an act of POGO!
     Play#0 output Play#0 1 Research changed from 0.00 to 3.14 by an act of POGO!