From 5e80fd3b93e888876f60162e519d4079a65c427c Mon Sep 17 00:00:00 2001 From: nhmall Date: Thu, 2 Jul 2026 17:48:29 -0400 Subject: [PATCH] wand of stasis when off level Account for the time spent on other levels for wand of stasis Resolves #1608 --- include/extern.h | 2 +- src/restore.c | 6 ++++-- src/save.c | 2 +- 3 files changed, 6 insertions(+), 4 deletions(-) diff --git a/include/extern.h b/include/extern.h index a6043a94e..5edd7ac7b 100644 --- a/include/extern.h +++ b/include/extern.h @@ -2755,7 +2755,7 @@ void restore_gamelog(NHFILE *); boolean restgamestate(NHFILE *); void restore_msghistory(NHFILE *); #endif -extern void rest_adjust_levelflags(void); +extern void rest_adjust_levelflags(long); extern void moves_to_relative_time(long *); extern void relative_time_to_moves(long *); extern boolean revision_increment(int, int, uchar *); diff --git a/src/restore.c b/src/restore.c index dcd4d8164..5ab2342c7 100644 --- a/src/restore.c +++ b/src/restore.c @@ -1140,7 +1140,7 @@ getlev(NHFILE *nhfp, int pid, xint8 lev) Sfi_dest_area(nhfp, &svu.updest, "lev-updest"); Sfi_dest_area(nhfp, &svd.dndest, "lev-dndest"); Sfi_levelflags(nhfp, &svl.level.flags, "lev-level_flags"); - rest_adjust_levelflags(); + rest_adjust_levelflags(elapsed); if (svd.doors) { free(svd.doors); svd.doors = 0; @@ -1348,11 +1348,13 @@ getlev(NHFILE *nhfp, int pid, xint8 lev) } void -rest_adjust_levelflags(void) +rest_adjust_levelflags(long elapsed) { /* adjust timestamps */ relative_time_to_moves(&svl.level.flags.stasis_until); + svl.level.flags.stasis_until -= elapsed; } + void moves_to_relative_time(long *timestamp) { diff --git a/src/save.c b/src/save.c index 72ff9f859..d03000408 100644 --- a/src/save.c +++ b/src/save.c @@ -529,7 +529,7 @@ savelev_core(NHFILE *nhfp, xint8 lev) Sfo_dest_area(nhfp, &svd.dndest, "lev-dndest"); save_adjust_levelflags(); Sfo_levelflags(nhfp, &svl.level.flags, "lev-level_flags"); - rest_adjust_levelflags(); + rest_adjust_levelflags(0L); Sfo_int(nhfp, &svd.doors_alloc, "lev-doors_alloc"); /* don't rely on underlying write() behavior to write