diff --git a/include/decl.h b/include/decl.h index 6aa7ab4fa..2eb47fcbd 100644 --- a/include/decl.h +++ b/include/decl.h @@ -978,6 +978,9 @@ struct instance_globals_u { /* decl.c */ boolean unweapon; + /* revision.c */ + int uplift_needed_rev0_to_rev1; + /* role.c */ struct Role urole; /* player's role. May be munged in role_init() */ struct Race urace; /* player's race. May be munged in role_init() */ diff --git a/include/extern.h b/include/extern.h index 90f14c21b..90af830f4 100644 --- a/include/extern.h +++ b/include/extern.h @@ -2754,6 +2754,15 @@ void restore_msghistory(NHFILE *); extern void rest_adjust_levelflags(void); extern void moves_to_relative_time(long *); extern void relative_time_to_moves(long *); +extern boolean revision_increment(int, int, uchar *); + +/* ### revision.c ### */ + +extern boolean revision_increment(int, int, uchar *); +#ifdef DEMO_UPLIFTS +void uplift_mystruct_rev0_to_mystruct(struct mystruct_rev0 *rev0, + struct mystruct *rev1); +#endif /* DEMO_UPLIFTS */ /* ### rip.c ### */ diff --git a/include/patchlevel.h b/include/patchlevel.h index 94bfacf74..4c66c7fd2 100644 --- a/include/patchlevel.h +++ b/include/patchlevel.h @@ -43,6 +43,14 @@ #define COPYRIGHT_BANNER_C nomakedefs.copyright_banner_c #define COPYRIGHT_BANNER_D " See license for details." +/* + * SAVEFILE_REVISION_LEVEL + * Increment this if there has been a change to a data structure + * that the source code is prepared to handle and convert properly. + * The SAVEFILE_REVISION_LEVEL value needs to fit into an unsigned byte. + */ +#define SAVEFILE_REVISION_LEVEL 0x00 + /* * If two or more successive releases have compatible data files, define * this with the version number of the oldest such release so that the diff --git a/include/revision.h b/include/revision.h new file mode 100644 index 000000000..fa324132c --- /dev/null +++ b/include/revision.h @@ -0,0 +1,228 @@ +/* NetHack 5.0 revision.h $NHDT-Date: 1706213796 2024/01/25 20:16:36 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.116 $ */ +/* Copyright (c) Michael Allison, 2026. */ +/* NetHack may be freely redistributed. See license for details. */ + +/* + * Supporting revisions to NetHack structs via incemental + * uplifts, rather than incrementing EDITLEVEL and breaking + * savefile compatibility. + * + * Here is the contrived example struct we'll use for + * this document: + * + * The old revision: The new revision: + * + * struct mystruct { struct mystruct { + * int field1; int field1; + * int field2; int field2; + * char field3; char field3; + * long field4; long field4; + * }; int newfielda; + * int newfieldb; + * }; + * + * Steps (using mystruct as an example name) + * + * 1. Paste an exact copy of the struct declaration as it is/was + * in the previous revision into include/revision.h, shrouded by + * #if defined(MYSTRUCT_REV0), and tack a '_rev0' suffix onto the + * name of the struct. For example, + * + * #if defined(MYSTRUCT_REV0) + * struct mystruct_rev0 { + * int field1; + * int field2; + * char field3; + * long field4; + * }; + * + * That goes just ahead of this existing placeholder: + * + * #elif defined(XXX_REV0) + * + * 2. Place a comment ahead of the mystruct_rev0 declaration + * that explains what has changed, and why the revision + * is required. + * + * 3. Immediately following the revised struct declaration in the + * original header file where it is located, add the following: + * + * #define MYSTRUCT_REV0 + * #include "revision.h" + * #undef MYSTRUCT_REV0 + * + * 4. In include/savefile.h, add a new prototype for a function + * to read the previous revision from the savefile, ideally + * immediately following the prototype for the current active + * one that hasn't got the '_rev0' suffix: + * + * extern void sfi_mystruct(NHFILE *, struct mystruct *, + * const char *); + * extern void sfi_mystruct_rev0(NHFILE *, struct mystruct_rev0 *, + * const char *); + * + * 5. Also in include/savefile.h, in the '#if NH_C < 202300L' block, + * add an entry below the one that should already exist for the + * struct that hasn't got the '_rev0' suffix: + * + * #define Sfi_mystruct(a,b,c) sfi_rm(a, b, c) + * #define Sfi_mystruct_rev0(a, b, c) sfi_mystruct_rev0(a, b, c) + * + * 6. Also in include/savefile.h, in the '#define sfi(nhfp, dt, tag)' + * generic function definition, add an entry below the one + * that should already exist for the struct name that hasn't + * got the '_rev0' suffix: + * + * struct mystruct * : sfi_rm, \ + * struct mystruct_rev0 * : sfi_rm_rev0, \ + * + * 7. Also in include/savefile.h, a little further down in the + * 'Sfi_' macro defininitions, add one below the existing + * one for the struct without the '_rev0' suffix: + * + * #define Sfi_mystruct(a,b,c) sfi(a, b, c) + * #define Sfi_mystruct_rev0(a, b, c) sfi(a, b, c) + * + * Only the input 'Sfi_' is required, because the old revision + * will never be written out to a file, only read in from a + * a file, so no 'Sfo_' is needed. + * + * 8. In include/sfmacros.h, add a new entry below the existing + * entry that exists without the '_rev0' suffix: + * + * SF_C(struct, mystruct) + * SF_C(struct, mystruct_rev0) + * + * 9. In include/sfprocs.h, add a new SF_PROTO_C entry below the + * existing entry that already exists without the '_rev0' suffix: + * + * SF_PROTO_C(struct, mystruct); + * SF_PROTO_C(struct, mystruct_rev0); + * + * 10. Also in include/sfprocs.h, add a new SF_ENTRY_C entry below the + * entry that already exists without the '_rev0' suffix: + * + * SF_ENTRY_C(struct, mystruct); + * SF_ENTRY_C(struct, mystruct_rev0); + * + * 11. In src/sfbase.c, add a prototype for a 'norm_ptrs' stub function + * below the entry that already exists without the '_rev0' suffix: + * + * void norm_ptrs_mystruct(struct mystruct *d_mystruct); + * void norm_ptrs_mystruct_rev0(struct mystruct_rev0 *d_mystruct); + * + * 12. Also in src/sfbase.c, add a 'norm_ptrs' stub function below the + * stub function that already exists without the '_rev0' suffix: + * + * void + * norm_ptrs_mystruct(struct mystruct *d_mystruct UNUSED) + * { + * } + * + * void + * norm_ptrs_mystruct_rev0(struct mystruct_rev0 *d_mystruct_rev0 UNUSED) + * { + * } + * + * 13. In src/sfstruct.c, add entries to the 'historical' section below the + * existing entry that doesn't have a '_rev0' suffix. You need an 'sfo_' + * entry and an 'sfi_' entry here, because they have to match function + * pointers in another struct. The 'sfo_' function will not be called + * from anywhere. + * + * historical_sfo_rm, + * historical_sfo_rm_rev0, + * ... + * historical_sfi_rm, + * historical_sfi_rm_rev0, + * + * 14. In the C source file where the 'Sfi_' call is made for your struct, + * the current code likely has a line for reading the struct from + * a file, similar the one shown below for the mystruct example: + * + * Sfi_mystruct(nhfp, &svl.mystruct, "mystruct-example"); + * + * That single line will need to modified to become a code block similar + * to this, so that the uplift function will get called: + * + * if (!gu.uplift_needed_rev0_to_rev1) { + * Sfi_mystruct(nhfp, &svl.mystruct, "mystruct-example"); + * } else { + * struct mystruct_rev0 old_mystruct; + * + * Sfi_mystruct_rev0(nhfp, &old_mystruct, "mystruct-example"); + * uplift_mystruct_rev0_to_mystruct(&old_mystruct, &svl.mystruct); + * } + * } + * + * 15. Shortly after the reading of the struct by the 'Sfi_' function, + * if the newer revision of the struct added some new fields, new code + * will be needed to initialize the new fields to sane values. + * There is no data for the new fields in the exising savefile. + * + * if (gu.uplift_needed_rev0_to_rev1 == 1) { + * svl.mystruct.newfielda = sanevalue1; + * svl.mystruct.newfieldb = sanevalue2; + * } + * + * 16. In include/extern.h, add a prototype to the ' ### revision.c ###' + * section for the supporting uplift function: + * + * extern void uplift_mystruct_rev0_to_mystruct(struct mystruct_rev0 *, + * struct mystruct *); + * + * 17. Add the uplift function to src/revision.c. It needs to do + * field-by-field copies of the fields that exist in the old + * revision and the new revision. For now, it likely needs to + * be handcrafted using your knowledge of the struct's old + * and new revisions. + * + * Be sure that any new fields present in the newer revision + * of the struct get set to sane values or initialized to + * zero. Do whatever suits those fields best, based on your + * knowledge of the struct. + * + * void + * uplift_mystruct_rev0_to_mystruct(struct mystruct_rev0 *rev0, + * struct mystruct *rev1) + * { + * rev1->field1 = rev0->field1; + * rev1->field2 = rev0->field2; + * rev1->field3 = rev0->field3; + * rev1->field4 = rev0->field4; + * + * rev1->newfielda = 0; // new field + * rev1->newfieldb = 42; // new field + * } + * + */ + +#if defined(MYSTRUCT_REV0) +#ifdef DEMO_UPLIFTS +/* + * struct mystruct_rev0 + * + * This is the predecessor for 'struct mystruct' + * Revisions to 'struct mystruct' that 'struct mystruct_rev0' does not have: + * int newfielda; + * int newfieldb; + * + * The uplift function is: + * void uplift_mystruct_rev0_to_mystruct(struct *mystruct_rev0, + * struct *mystruct); + */ + +struct mystruct_rev0 { + int field1; + int field2; + char field3; + long field4; +}; +#endif /* DEMO_UPLIFTS */ + +#elif defined(XXX_REV0) + +#else +#error Unproductive inclusion of revision.h +#endif +/* revision.h */ diff --git a/include/savefile.h b/include/savefile.h index bfaea951d..3307de1ca 100644 --- a/include/savefile.h +++ b/include/savefile.h @@ -184,6 +184,10 @@ extern void sfi_int(NHFILE *, int *, const char *); extern void sfi_unsigned(NHFILE *, unsigned *, const char *); extern void sfi_long(NHFILE *, long *, const char *); extern void sfi_ulong(NHFILE *, ulong *, const char *); +#ifdef DEMO_UPLIFTS +extern void sfi_mystruct(NHFILE *, struct mystruct *, const char *); +extern void sfi_mystruct_rev0(NHFILE *, struct mystruct_rev0 *, const char *); +#endif #if NH_C < 202300L #define Sfo_aligntyp(a,b,c) sfo_aligntyp(a, b, c) #define Sfo_any(a,b,c) sfo_any(a, b, c) @@ -315,6 +319,10 @@ extern void sfi_ulong(NHFILE *, ulong *, const char *); #define Sfi_unsigned(a, b, c) sfi_unsigned(a, b, c); #define Sfi_xint8(a, b, c) sfi_xint8(a, b, c); #define Sfi_xint16(a, b, c) sfi_xint16(a, b, c); +#ifdef DEMO_UPLIFTS +#define Sfi_mystruct(a, b, c) sfi_mystruct(a, b, c) +#define Sfi_mystruct_rev0(a, b, c) sfi_mystruct_rev0(a, b, c) +#endif #else #define sfo(nhfp, dt, tag) \ @@ -553,7 +561,7 @@ extern void sfi_ulong(NHFILE *, ulong *, const char *); #define Sfi_dest_area(a,b,c) sfi(a, b, c) #define Sfi_levelflags(a,b,c) sfi(a, b, c) #define Sfi_rm(a,b,c) sfi(a, b, c) -#define Sfi_cemetery(a,b,c) sfi(a, b, c) +#define Sfi_cemetery(a,b,c) sfi_cemetery(a, b, c) #define Sfi_damage(a,b,c) sfi(a, b, c) #define Sfi_stairway(a,b,c) sfi(a, b, c) #define Sfi_obj(a,b,c) sfi(a, b, c) @@ -575,6 +583,10 @@ extern void sfi_ulong(NHFILE *, ulong *, const char *); #define Sfi_unsigned(a, b, c) sfi(a, b, c) #define Sfi_xint8(a, b, c) sfi(a, b, c) #define Sfi_xint16(a, b, c) sfi(a, b, c) +#ifdef DEMO_UPLIFTS +#define Sfi_mystruct(a, b, c) sfi(a, b, c) +#define Sfi_mystruct_rev0(a, b, c) sfi(a, b, c) +#endif #endif /* not in _Generic */ diff --git a/include/sfmacros.h b/include/sfmacros.h index d0bedf69f..0905effaf 100644 --- a/include/sfmacros.h +++ b/include/sfmacros.h @@ -49,6 +49,10 @@ SF_C(struct, s_level) SF_C(struct, trap) SF_C(struct, you) SF_C(union, any) +#ifdef DEMO_UPLIFTS +SF_C(struct, mystruct) +SF_C(struct, mystruct_rev0) +#endif SF_A(aligntyp) SF_A(boolean) diff --git a/include/sfprocs.h b/include/sfprocs.h index f544b04c9..63bb631fe 100644 --- a/include/sfprocs.h +++ b/include/sfprocs.h @@ -68,6 +68,10 @@ SF_PROTO_C(struct, trap); SF_PROTO_C(struct, version_info); SF_PROTO_C(struct, you); SF_PROTO_C(union, any); +#ifdef DEMO_UPLIFTS +SF_PROTO_C(struct, mystruct); +SF_PROTO_C(struct, mystruct_rev0); +#endif SF_PROTO(int16); SF_PROTO(int32); SF_PROTO(int64); @@ -149,6 +153,10 @@ struct sf_procs { SF_ENTRY_C(struct, version_info); SF_ENTRY_C(struct, you); SF_ENTRY_C(union, any); +#ifdef DEMO_UPLIFTS + SF_ENTRY_C(struct, mystruct); + SF_ENTRY_C(struct, mystruct_rev0); +#endif SF_ENTRY(aligntyp); SF_ENTRY(boolean); diff --git a/src/decl.c b/src/decl.c index bb4485705..587c83e90 100644 --- a/src/decl.c +++ b/src/decl.c @@ -770,6 +770,8 @@ static const struct instance_globals_u g_init_u = { FALSE, /* update_all */ /* decl.c */ FALSE, /* unweapon */ + /* revision.c */ + 0, /* uplift_needed_rev0_to_rev1 */ /* role.c */ UNDEFINED_ROLE, /* urole */ UNDEFINED_RACE, /* urace */ diff --git a/src/restore.c b/src/restore.c index fab825de3..870c678f5 100644 --- a/src/restore.c +++ b/src/restore.c @@ -30,6 +30,7 @@ staticfn int restlevelfile(xint8); staticfn void rest_bubbles(NHFILE *); staticfn void restore_gamelog(NHFILE *); staticfn void reset_oattached_mids(boolean); + /* these ones are declared non-static in extern.h if SFCTOOL is defined */ staticfn boolean restgamestate(NHFILE *); staticfn void rest_bubbles(NHFILE *); @@ -900,6 +901,11 @@ dorecover(NHFILE *nhfp) restlevelstate(); program_state.something_worth_saving = 1; /* useful data now exists */ + if (gu.uplift_needed_rev0_to_rev1 == 1) { + /* they've all been uplifted now */ + gu.uplift_needed_rev0_to_rev1 = 0; + } + if (!wizard && !discover) (void) delete_savefile(); if (Is_rogue_level(&u.uz)) diff --git a/src/revision.c b/src/revision.c new file mode 100644 index 000000000..97cdb7750 --- /dev/null +++ b/src/revision.c @@ -0,0 +1,89 @@ +/* NetHack 5.0 revision.c $NHDT-Date: 1736530208 2025/01/10 09:30:08 $ $NHDT-Branch: NetHack-3.7 $:$NHDT-Revision: 1.234 $ */ +/*-Copyright (c) Michael Allison, 2026. */ +/* NetHack may be freely redistributed. See license for details. */ + +#include "hack.h" + +boolean revision_increment( + int file_rev_level, + int file_critical_byte_count, + uchar *csc) +{ + if (file_rev_level == 0 && SAVEFILE_REVISION_LEVEL == 1) { + /* + * Revision 1 + * We set a flag gu.uplift_needed_rev0_to_rev1 for use by restore routines. + * + */ + gu.uplift_needed_rev0_to_rev1 = 1; + if (csc[file_critical_byte_count - 1] == 0) + /* below may not be necessary, or even useful */ + csc[file_critical_byte_count - 1] = SAVEFILE_REVISION_LEVEL; + return TRUE; + } + return FALSE; +} + +#ifdef DEMO_UPLIFTS + +/* original revision 0 is in include/revision.h */ + +/* revision 1 */ +struct mystruct { + int field1; + int field2; + char field3; + long field4; + int newfielda; + int newfieldb; +}; + +void +uplift_mystruct_rev0_to_mystruct(struct mystruct_rev0 *rev0, + struct mystruct *rev1) +{ + rev1->field1 = rev0->field1; + rev1->field2 = rev0->field2; + rev1->field3 = rev0->field3; + rev1->field4 = rev0->field4; + rev1->newfielda = 0; // new field + rev1->newfieldb = 0; // new field +} + +void +read_mystruct(struct mystruct *ms) +{ +#ifdef SAVEFILE_REVISION_LEVEL + +#if (SAVEFILE_REVISION_LEVEL == 0) + Sfi_mystruct(nhfp, ms, "mystruct-example"); +#elif (SAVEFILE_REVISION_LEVEL == 1) + +#define MYSTRUCT_REV0 +#include "revision.h" +#undef MYSTRUCT_REV0 + + if (!gu.uplift_needed_rev0_to_rev1) { + Sfi_mystruct(nhfp, ms, "mystruct-example"); + } else { + struct mystruct_rev0 old_mystruct; + + Sfi_mystruct_rev0(nhfp, &old_mystruct, "mystruct-example"); + uplift_mystruct_rev0_to_mystruct(&old_mystruct, ms); + } + + /* this could be elsewhere in some other sourcefile for example, + * where it is needed */ + if (gu.uplift_needed_rev0_to_rev1 == 1) { + /* Provide suitable starting values for fields that were not + * present in the previous revision that was read */ + ms->newfielda = 0; // new field in Rev. 1 + ms->newfieldb = 42; // new field in Rev. 1 + } +#endif +#endif /* SAVEFILE_REVISION_LEVEL */ +} + +#endif /* DEMO_UPLIFTS */ + +/*revision.c*/ diff --git a/src/sfbase.c b/src/sfbase.c index 00c165c68..b26175b99 100644 --- a/src/sfbase.c +++ b/src/sfbase.c @@ -743,6 +743,10 @@ void norm_ptrs_version_info(struct version_info *d_version_info); void norm_ptrs_vlaunchinfo(union vlaunchinfo *d_vlaunchinfo); void norm_ptrs_vptrs(union vptrs *d_vptrs); void norm_ptrs_you(struct you *d_you); +#ifdef DEMO_UPLIFTS +void norm_ptrs_mystruct(struct mystruct *d_mystruct); +void norm_ptrs_mystruct_rev0(struct mystruct_rev0 *d_mystruct_rev0); +#endif void norm_ptrs_any(union any *d_any UNUSED) @@ -1038,6 +1042,17 @@ norm_ptrs_rm(struct rm *d_rm UNUSED) { } +#ifdef DEMO_UPLIFTS +void +norm_ptrs_mystruct(struct mystruct *d_mystruct UNUSED) +{ +} +void +norm_ptrs_mystruct_rev0(struct mystruct_rev0 *d_mystruct_rev0 UNUSED) +{ +} +#endif + void norm_ptrs_s_level(struct s_level *d_s_level UNUSED) { diff --git a/src/sfstruct.c b/src/sfstruct.c index 3c8b8fd66..424d57c88 100644 --- a/src/sfstruct.c +++ b/src/sfstruct.c @@ -194,7 +194,6 @@ struct sf_structlevel_procs historical_sfo_procs = { historical_sfo_version_info, historical_sfo_you, historical_sfo_any, - historical_sfo_aligntyp, historical_sfo_boolean, historical_sfo_coordxy, @@ -219,6 +218,10 @@ struct sf_structlevel_procs historical_sfo_procs = { historical_sfo_xint8, historical_sfo_char, historical_sfo_bitfield, +#ifdef DEMO_UPLIFTS + historical_sfo_mystruct, + historical_sfo_mystruct_rev0, +#endif } }; @@ -295,6 +298,10 @@ struct sf_structlevel_procs historical_sfi_procs = { historical_sfi_xint8, historical_sfi_char, historical_sfi_bitfield, +#ifdef DEMO_UPLIFTS + historical_sfi_mystruct, + historical_sfi_mystruct_rev0, +#endif } }; diff --git a/src/version.c b/src/version.c index 1958ae5ed..fb92ddbec 100644 --- a/src/version.c +++ b/src/version.c @@ -607,7 +607,7 @@ struct critical_sizes_with_names critical_sizes[] = { { (uchar) sizeof(struct objclass), "struct objclass" }, { (uchar) sizeof(struct oextra), "struct oextra" }, { (uchar) sizeof(struct q_score), "struct q_score" }, - { (uchar) sizeof(struct rm), "struct rm" }, + { (uchar) sizeof(struct rm), "struct rm" }, /* [61] */ { (uchar) sizeof(struct spell), "struct spell" }, { (uchar) sizeof(struct stairway), "struct stairway" }, { (uchar) sizeof(struct s_level), "struct s_level" }, @@ -660,7 +660,7 @@ struct critical_sizes_with_names critical_sizes[] = { { 0, "" }, { 0, "" }, { 0, "" }, - { 0, "" }, + { (uchar) SAVEFILE_REVISION_LEVEL, "savefile_revision_level" }, }; uchar cscbuf[SIZE(critical_sizes)]; @@ -780,6 +780,15 @@ compare_critical_bytes(NHFILE *nhfp, int *idx_1st_mismatch, unsigned long utdfla Sfi_uchar(nhfp, &cscbuf[i], "critical_sizes"); } for (i = 1; i < cnt; ++i) { + if (cscbuf[i] != critical_sizes[i].ucsize && i == cnt - 1) { + /* SAVEFILE_REVISION_LEVEL mismatch; attempt to deal with it */ + int file_rev_level = cscbuf[i]; + + if (revision_increment(file_rev_level, + file_csc_count, + cscbuf)) + continue; + } if (cscbuf[i] != critical_sizes[i].ucsize) { const char *dm = datamodel(0), *dmfile; diff --git a/sys/msdos/Makefile.GCC b/sys/msdos/Makefile.GCC index d7220fc10..1f8107826 100644 --- a/sys/msdos/Makefile.GCC +++ b/sys/msdos/Makefile.GCC @@ -288,18 +288,18 @@ VOBJ14 = $(O)muse.o $(O)music.o $(O)o_init.o $(O)objects.o $(O)objnam. VOBJ15 = $(O)options.o $(O)pickup.o $(O)pline.o $(O)polyself.o $(O)potion.o VOBJ16 = $(O)quest.o $(O)questpgr.o $(O)pager.o $(O)pray.o $(O)priest.o VOBJ17 = $(O)read.o $(O)rect.o $(O)region.o $(O)report.o $(O)restore.o -VOBJ18 = $(O)rip.o $(O)rnd.o $(O)role.o $(O)rumors.o $(O)save.o -VOBJ19 = $(O)selvar.o $(O)sfstruct.o $(O)shk.o $(O)shknam.o $(O)sit.o -VOBJ20 = $(O)sounds.o $(O)sp_lev.o $(O)spell.o $(O)stairs.o $(O)steal.o -VOBJ21 = $(O)steed.o $(O)symbols.o $(O)sys.o $(O)teleport.o $(O)strutil.o -VOBJ22 = $(O)termcap.o $(O)timeout.o $(O)topl.o $(O)topten.o $(O)trap.o -VOBJ23 = $(O)u_init.o $(O)uhitm.o $(O)utf8map.o $(O)vault.o $(O)track.o -VOBJ24 = $(O)vision.o $(O)weapon.o $(O)were.o $(O)wield.o $(O)windows.o -VOBJ25 = $(O)wintty.o $(O)wizard.o $(O)wizcmds.o $(O)worm.o $(O)worn.o -VOBJ26 = $(O)write.o $(O)zap.o $(O)light.o $(O)dlb.o $(REGEX) +VOBJ18 = $(O)revision.o $(O)rip.o $(O)rnd.o $(O)role.o $(O)rumors.o +VOBJ19 = $(O)save.o $(O)selvar.o $(O)sfstruct.o $(O)shk.o $(O)shknam.o +VOBJ20 = $(O)sit.o $(O)sounds.o $(O)sp_lev.o $(O)spell.o $(O)stairs.o +VOBJ21 = $(O)steal.o $(O)steed.o $(O)symbols.o $(O)sys.o $(O)teleport.o +VOBJ22 = $(O)strutil.o $(O)termcap.o $(O)timeout.o $(O)topl.o $(O)topten.o +VOBJ23 = $(O)trap.o $(O)u_init.o $(O)uhitm.o $(O)utf8map.o $(O)vault.o +VOBJ24 = $(O)track.o $(O)vision.o $(O)weapon.o $(O)were.o $(O)wield.o +VOBJ25 = $(O)windows.o $(O)wintty.o $(O)wizard.o $(O)wizcmds.o $(O)worm.o +VOBJ26 = $(O)worn.o $(O)write.o $(O)zap.o $(O)light.o $(O)dlb.o $(REGEX) -SOBJ = $(O)msdos.o $(O)pcsys.o $(O)tty.o $(O)unix.o \ - $(O)video.o $(O)vidtxt.o $(O)pckeys.o +SOBJ = $(O)msdos.o $(O)pcsys.o $(O)tty.o $(O)unix.o \ + $(O)video.o $(O)vidtxt.o $(O)pckeys.o VVOBJ = $(O)version.o diff --git a/sys/unix/Makefile.src b/sys/unix/Makefile.src index 71d55b3ce..d89958d10 100644 --- a/sys/unix/Makefile.src +++ b/sys/unix/Makefile.src @@ -514,21 +514,21 @@ HACK_H = ../src/hack.h-t # all .c that are part of the main NetHack program and are not operating- or # windowing-system specific. Do not include date.c in this list. HACKCSRC ?= allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \ - botl.c calendar.c cmd.c coloratt.c dbridge.c decl.c detect.c dig.c display.c \ - dlb.c do.c do_name.c do_wear.c dog.c dogmove.c dokick.c dothrow.c \ - drawing.c dungeon.c earlyarg.c eat.c end.c engrave.c exper.c explode.c \ - extralev.c files.c fountain.c hack.c hacklib.c \ + botl.c calendar.c cmd.c coloratt.c dbridge.c decl.c detect.c dig.c \ + display.c dlb.c do.c do_name.c do_wear.c dog.c dogmove.c dokick.c \ + dothrow.c drawing.c dungeon.c earlyarg.c eat.c end.c engrave.c \ + exper.c explode.c extralev.c files.c fountain.c hack.c hacklib.c \ getpos.c glyphs.c iactions.c insight.c invent.c isaac64.c light.c \ lock.c mail.c makemon.c mcastu.c mdlib.c mhitm.c \ mhitu.c minion.c mklev.c mkmap.c mkmaze.c mkobj.c mkroom.c mon.c \ mondata.c monmove.c monst.c mplayer.c mthrowu.c muse.c music.c \ nhlua.c nhlsel.c nhlobj.c nhmd4.c o_init.c objects.c objnam.c \ options.c pager.c pickup.c pline.c polyself.c potion.c pray.c \ - priest.c quest.c questpgr.c read.c rect.c region.c report.c restore.c \ - rip.c rnd.c role.c rumors.c save.c selvar.c sfbase.c sfstruct.c \ - shk.c shknam.c sit.c sounds.c sp_lev.c spell.c stairs.c steal.c steed.c \ - strutil.c symbols.c sys.c teleport.c \ - timeout.c topten.c track.c trap.c u_init.c utf8map.c \ + priest.c quest.c questpgr.c read.c rect.c region.c report.c \ + restore.c revision.c rip.c rnd.c role.c rumors.c save.c selvar.c \ + sfbase.c sfstruct.c shk.c shknam.c sit.c sounds.c sp_lev.c \ + spell.c stairs.c steal.c steed.c strutil.c symbols.c sys.c \ + teleport.c timeout.c topten.c track.c trap.c u_init.c utf8map.c \ uhitm.c vault.c version.c vision.c weapon.c were.c wield.c \ windows.c wizard.c wizcmds.c worm.c worn.c write.c zap.c @@ -567,14 +567,13 @@ HACKINCL ?= align.h artifact.h artilist.h attrib.h botl.h \ color.h config.h config1.h context.h coord.h cstd.h decl.h \ defsym.h display.h dlb.h dungeon.h engrave.h extern.h flag.h \ fnamesiz.h func_tab.h global.h warnings.h hack.h lint.h mextra.h \ - mcastu.h \ - micro.h mfndpos.h mkroom.h monattk.h mondata.h monflag.h monst.h \ - monsters.h nhmd4.h obj.h objects.h objclass.h optlist.h patchlevel.h \ - pcconf.h permonst.h prop.h rect.h region.h savefile.h selvar.h sym.h \ - rm.h sp_lev.h spell.h sndprocs.h seffects.h stairs.h sys.h \ - tcap.h timeout.h tradstdc.h trap.h unixconf.h vision.h vmsconf.h \ - wintty.h wincurs.h winX.h winprocs.h wintype.h you.h youprop.h \ - weight.h + mcastu.h micro.h mfndpos.h mkroom.h monattk.h mondata.h monflag.h \ + monst.h monsters.h nhmd4.h obj.h objects.h objclass.h optlist.h \ + patchlevel.h pcconf.h permonst.h prop.h rect.h region.h revision.h \ + savefile.h selvar.h sym.h rm.h sp_lev.h spell.h sndprocs.h \ + seffects.h stairs.h sys.h tcap.h timeout.h tradstdc.h trap.h \ + unixconf.h vision.h vmsconf.h wintty.h wincurs.h winX.h winprocs.h \ + wintype.h you.h youprop.h weight.h HSOURCES ?= $(HACKINCL) dgn_file.h @@ -617,20 +616,20 @@ HOBJ ?= $(TARGETPFX)allmain.o $(TARGETPFX)alloc.o \ $(TARGETPFX)potion.o $(TARGETPFX)pray.o $(TARGETPFX)priest.o \ $(TARGETPFX)quest.o $(TARGETPFX)questpgr.o $(TARGETPFX)read.o \ $(TARGETPFX)rect.o $(TARGETPFX)region.o $(TARGETPFX)report.o \ - $(TARGETPFX)restore.o $(TARGETPFX)rip.o $(TARGETPFX)rnd.o \ - $(TARGETPFX)role.o $(TARGETPFX)rumors.o $(TARGETPFX)save.o \ - $(TARGETPFX)selvar.o $(TARGETPFX)sfbase.o $(TARGETPFX)sfstruct.o \ - $(TARGETPFX)shk.o $(TARGETPFX)shknam.o $(TARGETPFX)sit.o \ - $(TARGETPFX)sounds.o $(TARGETPFX)sp_lev.o $(TARGETPFX)spell.o \ - $(TARGETPFX)stairs.o $(TARGETPFX)symbols.o $(TARGETPFX)sys.o \ - $(TARGETPFX)steal.o $(TARGETPFX)steed.o $(TARGETPFX)strutil.o \ - $(TARGETPFX)teleport.o $(TARGETPFX)timeout.o $(TARGETPFX)topten.o \ - $(TARGETPFX)track.o $(TARGETPFX)trap.o $(TARGETPFX)u_init.o \ - $(TARGETPFX)uhitm.o $(TARGETPFX)utf8map.o $(TARGETPFX)vault.o \ - $(TARGETPFX)vision.o $(TARGETPFX)weapon.o $(TARGETPFX)were.o \ - $(TARGETPFX)wield.o $(TARGETPFX)windows.o $(TARGETPFX)wizard.o \ - $(TARGETPFX)wizcmds.o $(TARGETPFX)worm.o $(TARGETPFX)worn.o \ - $(TARGETPFX)write.o $(TARGETPFX)zap.o \ + $(TARGETPFX)restore.o $(TARGETPFX)revision.o $(TARGETPFX)rip.o \ + $(TARGETPFX)rnd.o $(TARGETPFX)role.o $(TARGETPFX)rumors.o \ + $(TARGETPFX)save.o $(TARGETPFX)selvar.o $(TARGETPFX)sfbase.o \ + $(TARGETPFX)sfstruct.o $(TARGETPFX)shk.o $(TARGETPFX)shknam.o \ + $(TARGETPFX)sit.o $(TARGETPFX)sounds.o $(TARGETPFX)sp_lev.o \ + $(TARGETPFX)spell.o $(TARGETPFX)stairs.o $(TARGETPFX)symbols.o \ + $(TARGETPFX)sys.o $(TARGETPFX)steal.o $(TARGETPFX)steed.o \ + $(TARGETPFX)strutil.o $(TARGETPFX)teleport.o $(TARGETPFX)timeout.o \ + $(TARGETPFX)topten.o $(TARGETPFX)track.o $(TARGETPFX)trap.o \ + $(TARGETPFX)u_init.o $(TARGETPFX)uhitm.o $(TARGETPFX)utf8map.o \ + $(TARGETPFX)vault.o $(TARGETPFX)vision.o $(TARGETPFX)weapon.o \ + $(TARGETPFX)were.o $(TARGETPFX)wield.o $(TARGETPFX)windows.o \ + $(TARGETPFX)wizard.o $(TARGETPFX)wizcmds.o $(TARGETPFX)worm.o \ + $(TARGETPFX)worn.o $(TARGETPFX)write.o $(TARGETPFX)zap.o \ $(REGEXOBJ) $(RANDOBJ) $(SYSOBJ) $(WINOBJ) \ $(HINTOBJ) $(SNDLIBOBJ) $(UUIDOBJ) \ $(TARGETPFX)version.o @@ -907,19 +906,19 @@ $(HACK_H): $(CONFIG_H) ../include/align.h ../include/artilist.h \ ../include/decl.h ../include/defsym.h ../include/display.h \ ../include/dungeon.h ../include/engrave.h ../include/flag.h \ ../include/hack.h ../include/lint.h ../include/mextra.h \ - ../include/mcastu.h \ - ../include/mkroom.h ../include/monattk.h ../include/mondata.h \ - ../include/monflag.h ../include/monst.h ../include/monsters.h \ - ../include/nhlua.h ../include/obj.h ../include/objclass.h \ - ../include/objects.h ../include/permonst.h ../include/prop.h \ - ../include/quest.h ../include/rect.h ../include/region.h \ + ../include/mcastu.h ../include/mkroom.h ../include/monattk.h \ + ../include/mondata.h ../include/monflag.h ../include/monst.h \ + ../include/monsters.h ../include/nhlua.h ../include/obj.h \ + ../include/objclass.h ../include/objects.h \ + ../include/permonst.h ../include/prop.h ../include/quest.h \ + ../include/rect.h ../include/region.h ../include/revision.h \ ../include/rm.h ../include/savefile.h ../include/sfprocs.h \ - ../include/seffects.h ../include/selvar.h \ - ../include/skills.h ../include/sndprocs.h ../include/spell.h \ - ../include/stairs.h ../include/sym.h ../include/sys.h \ - ../include/timeout.h ../include/trap.h ../include/vision.h \ - ../include/weight.h ../include/winprocs.h \ - ../include/wintype.h ../include/you.h ../include/youprop.h + ../include/seffects.h ../include/selvar.h ../include/skills.h \ + ../include/sndprocs.h ../include/spell.h ../include/stairs.h \ + ../include/sym.h ../include/sys.h ../include/timeout.h \ + ../include/trap.h ../include/vision.h ../include/weight.h \ + ../include/winprocs.h ../include/wintype.h ../include/you.h \ + ../include/youprop.h touch $(HACK_H) # $(TARGETPFX)cppregex.o: ../sys/share/cppregex.cpp $(CONFIG_H) @@ -1256,6 +1255,7 @@ $(TARGETPFX)rect.o: rect.c $(HACK_H) $(TARGETPFX)region.o: region.c $(HACK_H) $(TARGETPFX)report.o: report.c $(HACK_H) ../include/dlb.h ../include/nhmd4.h $(TARGETPFX)restore.o: restore.c $(HACK_H) ../include/tcap.h +$(TARGETPFX)revision.o: revision.c $(HACK_H) $(TARGETPFX)rip.o: rip.c $(HACK_H) $(TARGETPFX)rnd.o: rnd.c $(HACK_H) ../include/isaac64.h $(TARGETPFX)role.o: role.c $(HACK_H) diff --git a/sys/vms/Makefile.src b/sys/vms/Makefile.src index 4cdef1436..b810ad946 100644 --- a/sys/vms/Makefile.src +++ b/sys/vms/Makefile.src @@ -157,12 +157,12 @@ HACKCSRC = allmain.c alloc.c apply.c artifact.c attrib.c ball.c bones.c \ monmove.c monst.c mplayer.c mthrowu.c muse.c music.c o_init.c \ objects.c objnam.c options.c pager.c pickup.c pline.c polyself.c \ potion.c pray.c priest.c quest.c questpgr.c read.c rect.c \ - region.c report.c restore.c rip.c rnd.c role.c rumors.c save.c \ - selvar.c sfstruct.c shk.c shknam.c sit.c sounds.c sp_lev.c \ - spell.c stairs.c steal.c steed.c strutil.c sys.c teleport.c \ - timeout.c topten.c track.c trap.c u_init.c uhitm.c vault.c \ - version.c vision.c weapon.c were.c wield.c windows.c wizard.c \ - wizcmds.c worm.c worn.c write.c zap.c + region.c report.c restore.c revision.c rip.c rnd.c role.c \ + rumors.c save.c selvar.c sfstruct.c shk.c shknam.c sit.c sounds.c \ + sp_lev.c spell.c stairs.c steal.c steed.c strutil.c sys.c \ + teleport.c timeout.c topten.c track.c trap.c u_init.c uhitm.c \ + vault.c version.c vision.c weapon.c were.c wield.c windows.c \ + wizard.c wizcmds.c worm.c worn.c write.c zap.c #-# generated source files (vis_tab.c is gone; tile.c is handled separately #-# via WINxxxSRC) @@ -180,11 +180,11 @@ HACKINCL = align.h artifact.h artilist.h attrib.h botl.h \ fnamesiz.h func_tab.h global.h warnings.h hack.h lint.h mextra.h \ micro.h mkroom.h monattk.h mondata.h monflag.h monst.h monsters.h \ mfndpos.h nhmd4.h obj.h objects.h objclass.h optlist.h patchlevel.h \ - pcconf.h permonst.h prop.h rect.h region.h savefile.h selvar.h sym.h \ - rm.h sp_lev.h spell.h sndprocs.h seffects.h stairs.h sys.h \ - tcap.h timeout.h tradstdc.h trap.h unixconf.h vision.h vmsconf.h \ - wintty.h wincurs.h winX.h winprocs.h wintype.h you.h youprop.h \ - weight.h + pcconf.h permonst.h prop.h rect.h region.h revision.h savefile.h \ + selvar.h sym.h rm.h sp_lev.h spell.h sndprocs.h seffects.h \ + stairs.h sys.h tcap.h timeout.h tradstdc.h trap.h unixconf.h \ + vision.h vmsconf.h wintty.h wincurs.h winX.h winprocs.h wintype.h \ + you.h youprop.h weight.h #HSOURCES = $(HACKINCL) date.h onames.h pm.h @@ -575,6 +575,7 @@ read.obj : read.c $(HACK_H) rect.obj : rect.c $(HACK_H) region.obj : region.c $(HACK_H) restore.obj : restore.c $(HACK_H) $(INC)tcap.h +revision.obj : revision.c $(HACK_H) rip.obj : rip.c $(HACK_H) rnd.obj : rnd.c $(HACK_H) role.obj : role.c $(HACK_H) diff --git a/sys/vms/Makefile_src.vms b/sys/vms/Makefile_src.vms index 160ddb95d..31a4963af 100644 --- a/sys/vms/Makefile_src.vms +++ b/sys/vms/Makefile_src.vms @@ -102,7 +102,7 @@ CONFIGBASEH := color config config1 patchlevel tradstdc hacklib integer \ HACKBASEH := hack lint align dungeon wintype sym defsym \ mkroom artilist objclass objects youprop \ prop permonst monattk monflag monsters \ - mondata context rm botl rect region trap \ + mondata context rm botl rect region revision trap \ display vision seffects selvar sndprocs stairs decl \ quest spell obj engrave you attrib monst \ mextra skills timeout flag winprocs sys @@ -800,6 +800,7 @@ $(TARGETPFX)rect.obj: rect.c $(HACK_H) $(TARGETPFX)region.obj: region.c $(HACK_H) $(TARGETPFX)report.obj: report.c $(HACK_H) $(TARGETPFX)restore.obj: restore.c $(HACK_H) $(INCL)tcap.h +$(TARGETPFX)revision.obj: revision.c $(HACK_H) $(TARGETPFX)rip.obj: rip.c $(HACK_H) $(TARGETPFX)rnd.obj: rnd.c $(HACK_H) $(INCL)isaac64.h $(TARGETPFX)role.obj: role.c $(HACK_H) diff --git a/sys/windows/GNUmakefile b/sys/windows/GNUmakefile index cfbcead9e..43de44671 100644 --- a/sys/windows/GNUmakefile +++ b/sys/windows/GNUmakefile @@ -800,8 +800,8 @@ HACK_H = $(CONFIG_H) ../include/align.h ../include/artilist.h \ ../include/nhlua.h ../include/obj.h ../include/objclass.h \ ../include/objects.h ../include/permonst.h ../include/prop.h \ ../include/quest.h ../include/rect.h ../include/region.h \ - ../include/rm.h ../include/savefile.h ../include/sfprocs.h \ - ../include/seffects.h ../include/selvar.h \ + ../include/revision.h ../include/rm.h ../include/savefile.h \ + ../include/sfprocs.h ../include/seffects.h ../include/selvar.h \ ../include/skills.h ../include/sndprocs.h ../include/spell.h \ ../include/stairs.h ../include/sym.h ../include/sys.h \ ../include/timeout.h ../include/trap.h ../include/vision.h \ @@ -1238,7 +1238,7 @@ COREOBJS = $(addsuffix .o, allmain alloc apply artifact attrib ball bones botl \ mon mondata monmove monst mplayer mthrowu muse music \ nhlobj nhlsel nhlua windsound o_init objects objnam options \ pager pickup pline polyself potion pray priest quest questpgr \ - random read rect region report restore rip rnd role rumors \ + random read rect region report restore revision rip rnd role rumors \ save sfbase sfstruct shk shknam sit selvar sounds sp_lev \ spell stairs steal steed strutil \ symbols sys teleport timeout topten track trap u_init uhitm utf8map \ diff --git a/sys/windows/Makefile.nmake b/sys/windows/Makefile.nmake index 93df07466..53efb2b84 100644 --- a/sys/windows/Makefile.nmake +++ b/sys/windows/Makefile.nmake @@ -671,17 +671,17 @@ HACKCSRC = \ $(SRC)objnam.c $(SRC)options.c $(SRC)pager.c $(SRC)pickup.c \ $(SRC)pline.c $(SRC)polyself.c $(SRC)potion.c $(SRC)pray.c \ $(SRC)priest.c $(SRC)quest.c $(SRC)questpgr.c $(SRC)read.c \ - $(SRC)rect.c $(SRC)region.c $(SRC)restore.c $(SRC)rip.c \ - $(SRC)rnd.c $(SRC)role.c $(SRC)rumors.c $(SRC)save.c \ - $(SRC)selvar.c $(SRC)sfbase.c $(SRC)sfstruct.c $(SRC)shk.c \ - $(SRC)shknam.c $(SRC)sit.c $(SRC)sounds.c $(SRC)sp_lev.c \ - $(SRC)spell.c $(SRC)stairs.c $(SRC)steal.c $(SRC)steed.c \ - $(SRC)symbols.c $(SRC)sys.c $(SRC)teleport.c $(SRC)timeout.c \ - $(SRC)topten.c $(SRC)track.c $(SRC)trap.c $(SRC)u_init.c \ - $(SRC)uhitm.c $(SRC)utf8map.c $(SRC)vault.c $(SRC)version.c \ - $(SRC)vision.c $(SRC)weapon.c $(SRC)were.c $(SRC)wield.c \ - $(SRC)windows.c $(SRC)wizard.c $(SRC)worm.c $(SRC)worn.c \ - $(SRC)write.c $(SRC)zap.c + $(SRC)rect.c $(SRC)region.c $(SRC)restore.c $(SRC)revision.c \ + $(SRC)rip.c $(SRC)rnd.c $(SRC)role.c $(SRC)rumors.c \ + $(SRC)save.c $(SRC)selvar.c $(SRC)sfbase.c $(SRC)sfstruct.c \ + $(SRC)shk.c $(SRC)shknam.c $(SRC)sit.c $(SRC)sounds.c \ + $(SRC)sp_lev.c $(SRC)spell.c $(SRC)stairs.c $(SRC)steal.c \ + $(SRC)steed.c $(SRC)symbols.c $(SRC)sys.c $(SRC)teleport.c \ + $(SRC)timeout.c $(SRC)topten.c $(SRC)track.c $(SRC)trap.c \ + $(SRC)u_init.c $(SRC)uhitm.c $(SRC)utf8map.c $(SRC)vault.c \ + $(SRC)version.c $(SRC)vision.c $(SRC)weapon.c $(SRC)were.c \ + $(SRC)wield.c $(SRC)windows.c $(SRC)wizard.c $(SRC)worm.c \ + $(SRC)worn.c $(SRC)write.c $(SRC)zap.c # all .h files except date.h HACKINCL = \ @@ -700,15 +700,16 @@ HACKINCL = \ $(INCL)obj.h $(INCL)objects.h $(INCL)objclass.h \ $(INCL)optlist.h $(INCL)patchlevel.h $(INCL)pcconf.h \ $(INCL)permonst.h $(INCL)prop.h $(INCL)rect.h \ - $(INCL)region.h $(INCL)savefile.h $(INCL)selvar.h \ - $(INCL)sfprocs.h $(INCL)sym.h $(INCL)rm.h \ - $(INCL)sp_lev.h $(INCL)spell.h $(INCL)sndprocs.h \ - $(INCL)seffects.h $(INCL)stairs.h $(INCL)sys.h \ - $(INCL)tcap.h $(INCL)timeout.h $(INCL)tradstdc.h \ - $(INCL)trap.h $(INCL)unixconf.h $(INCL)vision.h \ - $(INCL)vmsconf.h $(INCL)wintty.h $(INCL)wincurs.h \ - $(INCL)winX.h $(INCL)winprocs.h $(INCL)wintype.h \ - $(INCL)you.h $(INCL)youprop.h $(INCL)weight.h + $(INCL)region.h $(INCL)revision.h $(INCL)savefile.h \ + $(INCL)selvar.h $(INCL)sfprocs.h $(INCL)sym.h \ + $(INCL)rm.h $(INCL)sp_lev.h $(INCL)spell.h \ + $(INCL)sndprocs.h $(INCL)seffects.h $(INCL)stairs.h \ + $(INCL)sys.h $(INCL)tcap.h $(INCL)timeout.h \ + $(INCL)tradstdc.h $(INCL)trap.h $(INCL)unixconf.h \ + $(INCL)vision.h $(INCL)vmsconf.h $(INCL)wintty.h \ + $(INCL)wincurs.h $(INCL)winX.h $(INCL)winprocs.h \ + $(INCL)wintype.h $(INCL)you.h $(INCL)youprop.h \ + $(INCL)weight.h LUA_FILES = $(DAT)asmodeus.lua $(DAT)baalz.lua $(DAT)bigrm-1.lua \ $(DAT)bigrm-10.lua $(DAT)bigrm-11.lua $(DAT)bigrm-12.lua \ @@ -873,17 +874,17 @@ COREOBJTTY = \ $(OTTY)pickup.o $(OTTY)pline.o $(OTTY)polyself.o $(OTTY)potion.o \ $(OTTY)pray.o $(OTTY)priest.o $(OTTY)quest.o $(OTTY)questpgr.o \ $(OTTY)read.o $(OTTY)rect.o $(OTTY)region.o $(OTTY)report.o \ - $(OTTY)restore.o $(OTTY)rip.o $(OTTY)rnd.o $(OTTY)role.o \ - $(OTTY)rumors.o $(OTTY)save.o $(OTTY)selvar.o $(OTTY)sfbase.o \ - $(OTTY)sfstruct.o $(OTTY)shk.o $(OTTY)shknam.o $(OTTY)sit.o \ - $(OTTY)sounds.o $(OTTY)sp_lev.o $(OTTY)spell.o $(OTTY)stairs.o \ - $(OTTY)steal.o $(OTTY)steed.o $(OTTY)strutil.o $(OTTY)symbols.o \ - $(OTTY)sys.o $(OTTY)teleport.o $(OTTY)timeout.o $(OTTY)topten.o \ - $(OTTY)track.o $(OTTY)trap.o $(OTTY)u_init.o $(OTTY)uhitm.o \ - $(OTTY)utf8map.o $(OTTY)vault.o $(OTTY)vision.o $(OTTY)weapon.o \ - $(OTTY)were.o $(OTTY)wield.o $(OTTY)windows.o $(OTTY)wizard.o \ - $(OTTY)wizcmds.o $(OTTY)worm.o $(OTTY)worn.o $(OTTY)write.o \ - $(OTTY)zap.o + $(OTTY)restore.o $(OTTY)revision.o $(OTTY)rip.o $(OTTY)rnd.o \ + $(OTTY)role.o $(OTTY)rumors.o $(OTTY)save.o $(OTTY)selvar.o \ + $(OTTY)sfbase.o $(OTTY)sfstruct.o $(OTTY)shk.o $(OTTY)shknam.o \ + $(OTTY)sit.o $(OTTY)sounds.o $(OTTY)sp_lev.o $(OTTY)spell.o \ + $(OTTY)stairs.o $(OTTY)steal.o $(OTTY)steed.o $(OTTY)strutil.o \ + $(OTTY)symbols.o $(OTTY)sys.o $(OTTY)teleport.o $(OTTY)timeout.o \ + $(OTTY)topten.o $(OTTY)track.o $(OTTY)trap.o $(OTTY)u_init.o \ + $(OTTY)uhitm.o $(OTTY)utf8map.o $(OTTY)vault.o $(OTTY)vision.o \ + $(OTTY)weapon.o $(OTTY)were.o $(OTTY)wield.o $(OTTY)windows.o \ + $(OTTY)wizard.o $(OTTY)wizcmds.o $(OTTY)worm.o $(OTTY)worn.o \ + $(OTTY)write.o $(OTTY)zap.o OBJSTTY = $(MDLIBTTY) $(COREOBJTTY) $(REGEXTTY) $(RANDOMTTY) @@ -936,17 +937,17 @@ COREOBJGUI = \ $(OGUI)pickup.o $(OGUI)pline.o $(OGUI)polyself.o $(OGUI)potion.o \ $(OGUI)pray.o $(OGUI)priest.o $(OGUI)quest.o $(OGUI)questpgr.o \ $(OGUI)read.o $(OGUI)rect.o $(OGUI)region.o $(OGUI)report.o \ - $(OGUI)restore.o $(OGUI)rip.o $(OGUI)rnd.o $(OGUI)role.o \ - $(OGUI)rumors.o $(OGUI)save.o $(OGUI)selvar.o $(OGUI)sfbase.o \ - $(OGUI)sfstruct.o $(OGUI)shk.o $(OGUI)shknam.o $(OGUI)sit.o \ - $(OGUI)sounds.o $(OGUI)sp_lev.o $(OGUI)spell.o $(OGUI)stairs.o \ - $(OGUI)steal.o $(OGUI)steed.o $(OGUI)strutil.o $(OGUI)symbols.o \ - $(OGUI)sys.o $(OGUI)teleport.o $(OGUI)timeout.o $(OGUI)topten.o \ - $(OGUI)track.o $(OGUI)trap.o $(OGUI)u_init.o $(OGUI)uhitm.o \ - $(OGUI)utf8map.o $(OGUI)vault.o $(OGUI)vision.o $(OGUI)weapon.o \ - $(OGUI)were.o $(OGUI)wield.o $(OGUI)windows.o $(OGUI)wizard.o \ - $(OGUI)wizcmds.o $(OGUI)worm.o $(OGUI)worn.o $(OGUI)write.o \ - $(OGUI)zap.o + $(OGUI)restore.o $(OGUI)revision.o $(OGUI)rip.o $(OGUI)rnd.o \ + $(OGUI)role.o $(OGUI)rumors.o $(OGUI)save.o $(OGUI)selvar.o \ + $(OGUI)sfbase.o $(OGUI)sfstruct.o $(OGUI)shk.o $(OGUI)shknam.o \ + $(OGUI)sit.o $(OGUI)sounds.o $(OGUI)sp_lev.o $(OGUI)spell.o \ + $(OGUI)stairs.o $(OGUI)steal.o $(OGUI)steed.o $(OGUI)strutil.o \ + $(OGUI)symbols.o $(OGUI)sys.o $(OGUI)teleport.o $(OGUI)timeout.o \ + $(OGUI)topten.o $(OGUI)track.o $(OGUI)trap.o $(OGUI)u_init.o \ + $(OGUI)uhitm.o $(OGUI)utf8map.o $(OGUI)vault.o $(OGUI)vision.o \ + $(OGUI)weapon.o $(OGUI)were.o $(OGUI)wield.o $(OGUI)windows.o \ + $(OGUI)wizard.o $(OGUI)wizcmds.o $(OGUI)worm.o $(OGUI)worn.o \ + $(OGUI)write.o $(OGUI)zap.o OBJSGUI = $(MDLIBGUI) $(COREOBJGUI) $(REGEXGUI) $(RANDOMGUI) @@ -3328,6 +3329,7 @@ $(OTTY)rect.o: rect.c $(HACK_H) $(OTTY)region.o: region.c $(HACK_H) $(OTTY)report.o: report.c $(HACK_H) $(INCL)dlb.h $(INCL)nhmd4.h $(OTTY)restore.o: restore.c $(HACK_H) $(INCL)tcap.h +$(OTTY)revision.o: revision.c $(HACK_H) $(OTTY)rip.o: rip.c $(HACK_H) $(OTTY)rnd.o: rnd.c $(HACK_H) $(INCL)isaac64.h $(OTTY)role.o: role.c $(HACK_H) @@ -3708,6 +3710,7 @@ $(OGUI)rect.o: rect.c $(HACK_H) $(OGUI)region.o: region.c $(HACK_H) $(OGUI)report.o: report.c $(HACK_H) $(INCL)dlb.h $(INCL)nhmd4.h $(OGUI)restore.o: restore.c $(HACK_H) $(INCL)tcap.h +$(OGUI)revision.o: revision.c $(HACK_H) $(OGUI)rip.o: rip.c $(HACK_H) $(OGUI)rnd.o: rnd.c $(HACK_H) $(INCL)isaac64.h $(OGUI)role.o: role.c $(HACK_H) diff --git a/sys/windows/vs/NetHack/NetHack.vcxproj b/sys/windows/vs/NetHack/NetHack.vcxproj index 1d29c4f80..2d76aa0b3 100644 --- a/sys/windows/vs/NetHack/NetHack.vcxproj +++ b/sys/windows/vs/NetHack/NetHack.vcxproj @@ -234,6 +234,7 @@ + @@ -312,6 +313,7 @@ + @@ -332,4 +334,4 @@ - \ No newline at end of file + diff --git a/sys/windows/vs/NetHackW/NetHackW.vcxproj b/sys/windows/vs/NetHackW/NetHackW.vcxproj index df2507e81..c3f17f6ea 100644 --- a/sys/windows/vs/NetHackW/NetHackW.vcxproj +++ b/sys/windows/vs/NetHackW/NetHackW.vcxproj @@ -281,6 +281,7 @@ + @@ -386,6 +387,7 @@ + @@ -409,4 +411,4 @@ - \ No newline at end of file +