diff --git a/include/nuke.h b/include/nuke.h index 27c3215a..4c2eb0cc 100644 --- a/include/nuke.h +++ b/include/nuke.h @@ -44,6 +44,13 @@ struct nukstr { short nuk_uid; coord nuk_x, nuk_y; /* current loc of device */ signed char nuk_type; /* index in plchr[] */ + signed char nuk_effic; /* unused, always 100% */ + signed char nuk_mobil; /* unused, always 0 */ + short nuk_tech; /* nuke's tech level */ + char nuk_stockpile; /* group membership, unused, always ' ' */ + coord nuk_opx, nuk_opy; /* Op sector coords, unused */ + short nuk_mission; /* mission code, unused */ + short nuk_radius; /* mission radius, unused */ /* end of part matching struct genitem */ short nuk_ship; /* currently aboard ship (unused) */ short nuk_plane; /* currently aboard plane */ diff --git a/src/lib/commands/buil.c b/src/lib/commands/buil.c index 95a8917c..8a29a2d7 100644 --- a/src/lib/commands/buil.c +++ b/src/lib/commands/buil.c @@ -54,18 +54,15 @@ #include "commands.h" static int build_nuke(struct sctstr *sp, - struct nchrstr *np, short *vec); + struct nchrstr *np, short *vec, int tlev); static int build_ship(struct sctstr *sp, - struct mchrstr *mp, short *vec, - int tlev); + struct mchrstr *mp, short *vec, int tlev); static int build_land(struct sctstr *sp, - struct lchrstr *lp, short *vec, - int tlev); + struct lchrstr *lp, short *vec, int tlev); static int build_bridge(struct sctstr *sp, short *vec); static int build_tower(struct sctstr *sp, short *vec); static int build_plane(struct sctstr *sp, - struct plchrstr *pp, short *vec, - int tlev); + struct plchrstr *pp, short *vec, int tlev); static int build_can_afford(double, char *); /* @@ -267,7 +264,7 @@ buil(void) built = build_tower(§, sect.sct_item); break; case 'n': - built = build_nuke(§, np, sect.sct_item); + built = build_nuke(§, np, sect.sct_item, tlev); break; case 'p': built = build_plane(§, pp, sect.sct_item, tlev); @@ -289,8 +286,7 @@ buil(void) } static int -build_ship(struct sctstr *sp, struct mchrstr *mp, - short *vec, int tlev) +build_ship(struct sctstr *sp, struct mchrstr *mp, short *vec, int tlev) { struct shpstr ship; struct nstr_item nstr; @@ -403,8 +399,7 @@ build_ship(struct sctstr *sp, struct mchrstr *mp, } static int -build_land(struct sctstr *sp, struct lchrstr *lp, - short *vec, int tlev) +build_land(struct sctstr *sp, struct lchrstr *lp, short *vec, int tlev) { struct lndstr land; struct nstr_item nstr; @@ -639,7 +634,7 @@ build_bridge(struct sctstr *sp, short *vec) } static int -build_nuke(struct sctstr *sp, struct nchrstr *np, short *vec) +build_nuke(struct sctstr *sp, struct nchrstr *np, short *vec, int tlev) { struct nukstr nuke; struct nstr_item nstr; @@ -699,8 +694,11 @@ build_nuke(struct sctstr *sp, struct nchrstr *np, short *vec) nuke.nuk_y = sp->sct_y; nuke.nuk_own = sp->sct_own; nuke.nuk_type = np - nchr; + nuke.nuk_effic = 100; + nuke.nuk_stockpile = ' '; nuke.nuk_ship = nuke.nuk_plane = nuke.nuk_land = -1; nuke.nuk_uid = nstr.cur; + nuke.nuk_tech = tlev; vec[I_HCM] -= np->n_hcm; vec[I_LCM] -= np->n_lcm; @@ -716,8 +714,7 @@ build_nuke(struct sctstr *sp, struct nchrstr *np, short *vec) } static int -build_plane(struct sctstr *sp, struct plchrstr *pp, - short *vec, int tlev) +build_plane(struct sctstr *sp, struct plchrstr *pp, short *vec, int tlev) { struct plnstr plane; struct nstr_item nstr; diff --git a/src/lib/commands/tran.c b/src/lib/commands/tran.c index 3434e13f..d2ff1471 100644 --- a/src/lib/commands/tran.c +++ b/src/lib/commands/tran.c @@ -133,6 +133,7 @@ tran_nuke(void) /* TODO apply dam */ nuke.nuk_x = dstx; nuke.nuk_y = dsty; + nuke.nuk_mission = 0; putnuke(nuke.nuk_uid, &nuke); } if (mcost > 0) diff --git a/src/lib/global/nsc.c b/src/lib/global/nsc.c index 674acfcc..637119a3 100644 --- a/src/lib/global/nsc.c +++ b/src/lib/global/nsc.c @@ -380,11 +380,7 @@ struct castr lchr_ca[] = { }; struct castr nuke_ca[] = { - {NSC_SHORT, 0, 0, fldoff(nukstr, nuk_uid), "uid", EF_NUKE}, - {NSC_NATID, 0, 0, fldoff(nukstr, nuk_own), "owner", EF_NATION}, - {NSC_XCOORD, 0, 0, fldoff(nukstr, nuk_x), "xloc", EF_BAD}, - {NSC_YCOORD, 0, 0, fldoff(nukstr, nuk_y), "yloc", EF_BAD}, - {NSC_TYPEID, 0, 0, fldoff(nukstr, nuk_type), "type", EF_NUKE_CHR}, + NSC_GENITEM(EF_NUKE, EF_NUKE_CHR), {NSC_SHORT, 0, 0, fldoff(nukstr, nuk_plane), "plane", EF_BAD}, {NSC_TIME, NSC_EXTRA, 0, fldoff(nukstr, nuk_timestamp), "timestamp", EF_BAD}, diff --git a/src/lib/subs/trdsub.c b/src/lib/subs/trdsub.c index 3d9f909a..bb2c3471 100644 --- a/src/lib/subs/trdsub.c +++ b/src/lib/subs/trdsub.c @@ -114,8 +114,8 @@ trade_desc(struct trdstr *tp, union trdgenstr *tgp) case EF_NUKE: np = &tgp->nuk; tp->trd_owner = np->nuk_own; - pr("(%3d) %s #%d", - tp->trd_owner, + pr("(%3d) tech %d %d%% %s #%d", + tp->trd_owner, np->nuk_tech, np->nuk_effic, nchr[(int)np->nuk_type].n_name, tp->trd_unitid); break; case EF_SHIP: