+ default:
+ CANT_REACH();
+ }
+ return RET_OK;
+}
+
+static int
+edit_ship(struct shpstr *ship, char *key, char *p)
+{
+ struct mchrstr *mcp = &mchr[ship->shp_type];
+ int arg = atoi(p);
+ struct ichrstr *ip;
+
+ switch (*key) {
+ case 'U':
+ case 'O':
+ case 'L':
+ case 'E':
+ case 'M':
+ case 'F':
+ return edit_unit((struct empobj *)ship, key, p,
+ SHIP_MINEFF, "fleet");
+ case 'T':
+ arg = LIMIT_TO(arg, mcp->m_tech, SHRT_MAX);
+ shp_set_tech(ship, arg);
+ break;
+ case 'a':
+ arg = LIMIT_TO(arg, 0, PLG_EXPOSED);
+ ship->shp_pstage = arg;
+ break;
+ case 'b':
+ arg = LIMIT_TO(arg, 0, 32767);
+ ship->shp_ptime = arg;
+ break;
+ case 'R':
+ strncpy(ship->shp_rpath, p, sizeof(ship->shp_rpath) - 1);
+ break;
+ case 'W':
+ ship->shp_rflags = arg;
+ break;