From b34b7e08a42bb8b0aa797ce2ca3f90471d7a5b8f Mon Sep 17 00:00:00 2001 From: Pasi Kallinen Date: Wed, 28 Jan 2026 10:06:55 +0200 Subject: [PATCH] Fix lua reset_level The lua des.reset_level() call did not reset the special level coder, so some values were kept and couldn't be changed. Adjust the movement tests for this change. --- src/sp_lev.c | 7 ++++++- test/testmove.lua | 6 ++++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/src/sp_lev.c b/src/sp_lev.c index 25411aa1f..2e1b4ab65 100644 --- a/src/sp_lev.c +++ b/src/sp_lev.c @@ -5985,8 +5985,13 @@ lspo_reset_level(lua_State *L) boolean wtower = In_W_tower(u.ux, u.uy, &u.uz); iflags.lua_testing = TRUE; - if (L) + if (L) { + if (gc.coder) { + Free(gc.coder); + gc.coder = NULL; + } create_des_coder(); + } makemap_prepost(TRUE, wtower); gi.in_mklev = TRUE; oinit(); /* assign level dependent obj probabilities */ diff --git a/test/testmove.lua b/test/testmove.lua index da1e0ab83..8ded195d5 100644 --- a/test/testmove.lua +++ b/test/testmove.lua @@ -3,14 +3,14 @@ nh.parse_config("OPTIONS=number_pad:0"); nh.parse_config("OPTIONS=runmode:teleport"); +nh.parse_config("OPTIONS=!timed_delay"); local POS = { x = 10, y = 05 }; local number_pad = 0; function initlev() - nh.debug_flags({mongen = false, hunger = false, overwrite_stairs = true }); - des.level_flags("noflip"); des.reset_level(); + des.level_flags("noflip"); des.level_init({ style = "solidfill", fg = ".", lit = true }); des.teleport_region({ region = {POS.x,POS.y,POS.x,POS.y}, region_islev = true, dir="both" }); des.finalize_level(); @@ -140,6 +140,7 @@ local basicmoves = { }; +nh.debug_flags({mongen = false, hunger = false, overwrite_stairs = true, disable_pline = true }); for k, v in pairs(basicmoves) do initlev(); @@ -179,3 +180,4 @@ for k, v in pairs(basicmoves) do end initlev(); +nh.debug_flags({ disable_pline = false });