diff --git a/include/commodity.h b/include/commodity.h index 41573303..46a038eb 100644 --- a/include/commodity.h +++ b/include/commodity.h @@ -43,8 +43,8 @@ struct comstr { /* initial part must match struct empobj */ short ef_type; - natid com_owner; short com_uid; + natid com_owner; /* end of part matching struct empobj */ i_type com_type; int com_amount; diff --git a/include/empobj.h b/include/empobj.h index 97dc00e5..8300211f 100644 --- a/include/empobj.h +++ b/include/empobj.h @@ -52,8 +52,8 @@ struct empobj { short ef_type; /* is always valid */ - natid own; /* is valid if EFF_OWNER is set in table def. */ short uid; + natid own; /* is valid if EFF_OWNER is set in table def. */ coord x; /* is valid if EFF_XY is set in table def. */ coord y; /* is valid if EFF_XY is set in table def. */ signed char type; /* is valid for sectors and units */ diff --git a/include/game.h b/include/game.h index 2e329248..5d0d897b 100644 --- a/include/game.h +++ b/include/game.h @@ -39,6 +39,7 @@ struct gamestr { /* initial part must match struct empobj */ short ef_type; + short game_uid; /* end of part matching struct empobj */ char game_upd_disable; /* updates disabled? */ /* diff --git a/include/land.h b/include/land.h index 339cf410..bd497231 100644 --- a/include/land.h +++ b/include/land.h @@ -49,8 +49,8 @@ struct lndstr { /* initial part must match struct empobj */ short ef_type; - natid lnd_own; /* owner's country num */ short lnd_uid; /* unit id (land unit) */ + natid lnd_own; /* owner's country num */ coord lnd_x; /* x location in abs coords */ coord lnd_y; /* y location in abs coords */ signed char lnd_type; /* index in lchr[] */ diff --git a/include/loan.h b/include/loan.h index 21c60b13..f2ec2c08 100644 --- a/include/loan.h +++ b/include/loan.h @@ -41,9 +41,11 @@ #define SECS_PER_DAY (60*60*24) struct lonstr { + /* initial part must match struct empobj */ short ef_type; - natid l_loner; /* loan shark */ short l_uid; + /* end of part matching struct empobj */ + natid l_loner; /* loan shark */ natid l_lonee; /* sucker */ signed char l_status; /* loan status */ short l_sell; /* pointer to trade file (unused) */ diff --git a/include/lost.h b/include/lost.h index acfae5c9..a377c6ec 100644 --- a/include/lost.h +++ b/include/lost.h @@ -40,9 +40,9 @@ struct loststr { /* initial part must match struct empobj */ short ef_type; + int lost_uid; /* lost ID (assigned, otherwise unused) */ natid lost_owner; /* Who lost it */ /* end of part matching struct empobj */ - int lost_uid; /* lost ID (assigned, otherwise unused) */ short lost_type; /* Type of thing (ship, plane, nuke, land, sector) */ short lost_id; /* ID of lost thing */ coord lost_x; diff --git a/include/nat.h b/include/nat.h index c7cb0173..b54c8bf9 100644 --- a/include/nat.h +++ b/include/nat.h @@ -69,9 +69,9 @@ typedef enum { struct realmstr { /* initial part must match struct empobj */ short ef_type; + short r_uid; /* realm table index */ natid r_cnum; /* country number */ /* end of part matching struct empobj */ - short r_uid; /* realm table index */ unsigned short r_realm; /* realm number */ short r_xl, r_xh; /* horizontal bounds */ short r_yl, r_yh; /* vertical bounds */ @@ -81,6 +81,7 @@ struct realmstr { struct natstr { /* initial part must match struct empobj */ short ef_type; + short nat_uid; /* equals nat_cnum */ natid nat_cnum; /* our country number */ /* end of part matching struct empobj */ nat_status nat_stat; diff --git a/include/news.h b/include/news.h index 888c78d4..cc182a91 100644 --- a/include/news.h +++ b/include/news.h @@ -45,9 +45,11 @@ #include "nsc.h" struct nwsstr { + /* initial part must match struct empobj */ short ef_type; - natid nws_ano; /* "actor" country # */ short nws_uid; /* unused */ + /* end of part matching struct empobj */ + natid nws_ano; /* "actor" country # */ signed char nws_vrb; /* action (verb) */ natid nws_vno; /* "victim" country # */ signed char nws_ntm; /* number of times */ diff --git a/include/nuke.h b/include/nuke.h index 3c42a4e9..cc90de95 100644 --- a/include/nuke.h +++ b/include/nuke.h @@ -43,8 +43,8 @@ struct nukstr { /* initial part must match struct empobj */ short ef_type; - natid nuk_own; short nuk_uid; + natid nuk_own; coord nuk_x, nuk_y; /* current loc of device */ signed char nuk_type; /* index in nchr[] */ signed char nuk_effic; /* unused, always 100% */ diff --git a/include/plane.h b/include/plane.h index 25c6fd0e..f072ba78 100644 --- a/include/plane.h +++ b/include/plane.h @@ -46,8 +46,8 @@ struct plnstr { /* initial part must match struct empobj */ short ef_type; - natid pln_own; /* owning country */ short pln_uid; /* plane unit id */ + natid pln_own; /* owning country */ coord pln_x; /* plane x-y */ coord pln_y; signed char pln_type; /* index in plchr[] */ diff --git a/include/sect.h b/include/sect.h index a960706e..8d9f9d4e 100644 --- a/include/sect.h +++ b/include/sect.h @@ -44,8 +44,8 @@ struct sctstr { /* initial part must match struct empobj */ short ef_type; + short sct_uid; /* equals sctoff(sct_x, sct_y) */ natid sct_own; /* owner's country num */ - short sct_elev; /* elevation/depth */ coord sct_x; /* x coord of sector */ coord sct_y; /* y coord of sector */ signed char sct_type; /* sector type */ @@ -62,7 +62,7 @@ struct sctstr { coord sct_dist_y; short sct_avail; /* available workforce for "other things" */ short sct_flags; /* temporary flags */ - short sct_fill; /* gunk */ + short sct_elev; /* elevation/depth */ unsigned char sct_work; /* pct of civ actually working */ unsigned char sct_coastal; /* is this a coastal sector? */ signed char sct_newtype; /* for changing designations */ diff --git a/include/ship.h b/include/ship.h index 65097564..cbfed235 100644 --- a/include/ship.h +++ b/include/ship.h @@ -63,8 +63,8 @@ struct shpstr { /* initial part must match struct empobj */ short ef_type; - natid shp_own; /* owner's country num */ short shp_uid; /* unit id (ship #) */ + natid shp_own; /* owner's country num */ coord shp_x; /* x location in abs coords */ coord shp_y; /* y location in abs coords */ signed char shp_type; /* index in mchr[] */ diff --git a/include/trade.h b/include/trade.h index 45b4dfe0..8db1e6fe 100644 --- a/include/trade.h +++ b/include/trade.h @@ -43,8 +43,8 @@ struct trdstr { /* initial part must match struct empobj */ short ef_type; - natid trd_owner; short trd_uid; + natid trd_owner; /* end of part matching struct empobj */ short trd_type; short trd_unitid; diff --git a/include/treaty.h b/include/treaty.h index ba072745..a8c5d258 100644 --- a/include/treaty.h +++ b/include/treaty.h @@ -38,9 +38,11 @@ #include "types.h" struct trtstr { + /* initial part must match struct empobj */ short ef_type; - natid trt_cna; /* proposer */ short trt_uid; + /* end of part matching struct empobj */ + natid trt_cna; /* proposer */ natid trt_cnb; /* acceptor */ signed char trt_status; /* treaty status */ char trt_fill; diff --git a/src/lib/commands/edit.c b/src/lib/commands/edit.c index b15f8e01..6e678c80 100644 --- a/src/lib/commands/edit.c +++ b/src/lib/commands/edit.c @@ -593,6 +593,7 @@ doland(char op, int arg, char *p, struct sctstr *sect) return RET_SYN; sect->sct_x = newx; sect->sct_y = newy; + sect->sct_uid = XYOFFSET(newx, newy); break; case 'D': if (!sarg_xy(p, &newx, &newy)) diff --git a/src/lib/commands/swap.c b/src/lib/commands/swap.c index 6c8fd307..a28b8991 100644 --- a/src/lib/commands/swap.c +++ b/src/lib/commands/swap.c @@ -63,12 +63,14 @@ swaps(void) /* change the location of secta to that of sectb */ secta.sct_x = sectb.sct_x; secta.sct_y = sectb.sct_y; + secta.sct_uid = sectb.sct_uid; secta.sct_dist_x = sectb.sct_x; secta.sct_dist_y = sectb.sct_y; secta.sct_coastal = sectb.sct_coastal; /* change the location of sectb to where secta was */ sectb.sct_x = tmp.sct_x; sectb.sct_y = tmp.sct_y; + sectb.sct_uid = tmp.sct_uid; sectb.sct_dist_x = tmp.sct_x; sectb.sct_dist_y = tmp.sct_y; sectb.sct_coastal = tmp.sct_coastal; diff --git a/src/lib/global/nsc.c b/src/lib/global/nsc.c index b23987e3..b463e049 100644 --- a/src/lib/global/nsc.c +++ b/src/lib/global/nsc.c @@ -103,9 +103,10 @@ struct castr pchr_ca[] = { }; struct castr sect_ca[] = { - /* uid is encoded in x, y */ + /* uid needs to be NSC_DEITY because it discloses true origin */ + {NSC_SHORT, NSC_DEITY | NSC_EXTRA, 0, fldoff(sctstr, sct_uid), "uid", + EF_SECTOR}, {NSC_NATID, 0, 0, fldoff(sctstr, sct_own), "owner", EF_NATION}, - {NSC_SHORT, NSC_DEITY, 0, fldoff(sctstr, sct_elev), "elev", EF_BAD}, {NSC_XCOORD, NSC_CONST, 0, fldoff(sctstr, sct_x), "xloc", EF_BAD}, {NSC_YCOORD, NSC_CONST, 0, fldoff(sctstr, sct_y), "yloc", EF_BAD}, {NSC_CHAR, 0, 0, fldoff(sctstr, sct_type), "des", EF_SECTOR_CHR}, @@ -121,6 +122,7 @@ struct castr sect_ca[] = { {NSC_XCOORD, 0, 0, fldoff(sctstr, sct_dist_x), "xdist", EF_BAD}, {NSC_YCOORD, 0, 0, fldoff(sctstr, sct_dist_y), "ydist", EF_BAD}, {NSC_SHORT, 0, 0, fldoff(sctstr, sct_avail), "avail", EF_BAD}, + {NSC_SHORT, NSC_DEITY, 0, fldoff(sctstr, sct_elev), "elev", EF_BAD}, {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_work), "work", EF_BAD}, {NSC_UCHAR, 0, 0, fldoff(sctstr, sct_coastal), "coastal", EF_BAD}, {NSC_CHAR, 0, 0, fldoff(sctstr, sct_newtype), "newdes", EF_SECTOR_CHR}, diff --git a/src/util/fairland.c b/src/util/fairland.c index 104aa9df..4598eba6 100644 --- a/src/util/fairland.c +++ b/src/util/fairland.c @@ -1214,6 +1214,7 @@ static void fl_sct_init(coord x, coord y, struct sctstr *sp) { sp->ef_type = EF_SECTOR; + sp->sct_uid = XYOFFSET(x, y); sp->sct_x = x; sp->sct_y = y; sp->sct_dist_x = x; diff --git a/src/util/files.c b/src/util/files.c index 2d8c9371..4618ba6e 100644 --- a/src/util/files.c +++ b/src/util/files.c @@ -154,7 +154,7 @@ main(int argc, char *argv[]) memset(&nat, 0, sizeof(nat)); for (i = 1; i < MAXNOC; i++) { nat.ef_type = EF_NATION; - nat.nat_cnum = i; + nat.nat_cnum = nat.nat_uid = i; putnat((&nat)); } memset(&realm, 0, sizeof(realm)); @@ -208,6 +208,7 @@ file_sct_init(coord x, coord y, struct sctstr *ptr) struct sctstr *sp = (struct sctstr *)ptr; sp->ef_type = EF_SECTOR; + sp->sct_uid = XYOFFSET(x, y); sp->sct_x = x; sp->sct_y = y; sp->sct_dist_x = x;