@@ -338,3 +338,5 @@ switch to using LUA_VERSION_NUM instead of LUA_VERSION_RELEASE_NUM for Lua
|
|||||||
version checking
|
version checking
|
||||||
include a set of decals (petmark and pilemark) in win/share/decals.txt
|
include a set of decals (petmark and pilemark) in win/share/decals.txt
|
||||||
and adjust tile processing to include it
|
and adjust tile processing to include it
|
||||||
|
preserve inactive level timestamps across saving and restoring so that
|
||||||
|
monster catch-up, including tameness loss, retains time spent away
|
||||||
|
|||||||
+12
-8
@@ -31,7 +31,7 @@ staticfn void save_gamelog(NHFILE *);
|
|||||||
staticfn void savegamestate(NHFILE *);
|
staticfn void savegamestate(NHFILE *);
|
||||||
staticfn void savelev_core(NHFILE *, xint8);
|
staticfn void savelev_core(NHFILE *, xint8);
|
||||||
staticfn void save_msghistory(NHFILE *);
|
staticfn void save_msghistory(NHFILE *);
|
||||||
staticfn void save_adjust_levelflags(void);
|
staticfn void save_adjust_levelflags(long);
|
||||||
#if defined(HANGUPHANDLING)
|
#if defined(HANGUPHANDLING)
|
||||||
#define HUP if (!program_state.done_hup)
|
#define HUP if (!program_state.done_hup)
|
||||||
#else
|
#else
|
||||||
@@ -484,6 +484,7 @@ savelev_core(NHFILE *nhfp, xint8 lev)
|
|||||||
short tlev;
|
short tlev;
|
||||||
#endif
|
#endif
|
||||||
int i, c, r;
|
int i, c, r;
|
||||||
|
long timestamp;
|
||||||
coord *tmpc;
|
coord *tmpc;
|
||||||
|
|
||||||
program_state.saving++; /* even if current mode is FREEING */
|
program_state.saving++; /* even if current mode is FREEING */
|
||||||
@@ -541,14 +542,17 @@ savelev_core(NHFILE *nhfp, xint8 lev)
|
|||||||
Sfo_schar(nhfp, &svl.lastseentyp[c][r], "lastseentyp");
|
Sfo_schar(nhfp, &svl.lastseentyp[c][r], "lastseentyp");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* svm.moves will actually be read back into svo.omoves on restore */
|
/* preserve idle time when copying levels; match getlev()'s
|
||||||
Sfo_long(nhfp, &svm.moves, "lev-timestmp");
|
monster catch-up guard */
|
||||||
|
timestamp = (!u.uz.dlevel || program_state.restoring == REST_LEVELS)
|
||||||
|
? svo.omoves : svm.moves;
|
||||||
|
Sfo_long(nhfp, ×tamp, "lev-timestmp");
|
||||||
save_stairs(nhfp);
|
save_stairs(nhfp);
|
||||||
Sfo_dest_area(nhfp, &svu.updest, "lev-updest");
|
Sfo_dest_area(nhfp, &svu.updest, "lev-updest");
|
||||||
Sfo_dest_area(nhfp, &svd.dndest, "lev-dndest");
|
Sfo_dest_area(nhfp, &svd.dndest, "lev-dndest");
|
||||||
save_adjust_levelflags();
|
save_adjust_levelflags(timestamp);
|
||||||
Sfo_levelflags(nhfp, &svl.level.flags, "lev-level_flags");
|
Sfo_levelflags(nhfp, &svl.level.flags, "lev-level_flags");
|
||||||
rest_adjust_levelflags(0L);
|
rest_adjust_levelflags(svm.moves - timestamp);
|
||||||
|
|
||||||
Sfo_int(nhfp, &svd.doors_alloc, "lev-doors_alloc");
|
Sfo_int(nhfp, &svd.doors_alloc, "lev-doors_alloc");
|
||||||
/* don't rely on underlying write() behavior to write
|
/* don't rely on underlying write() behavior to write
|
||||||
@@ -596,10 +600,10 @@ savelev_core(NHFILE *nhfp, xint8 lev)
|
|||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
save_adjust_levelflags(void)
|
save_adjust_levelflags(long timestamp)
|
||||||
{
|
{
|
||||||
/* adjust any timestamps */
|
/* use the same time base as lev-timestmp */
|
||||||
moves_to_relative_time(&svl.level.flags.stasis_until);
|
svl.level.flags.stasis_until -= timestamp;
|
||||||
}
|
}
|
||||||
|
|
||||||
staticfn void
|
staticfn void
|
||||||
|
|||||||
Reference in New Issue
Block a user