From 8d2ac359d49b706c1157a5fe56f78fac974fbf82 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Tue, 11 Jan 2022 18:22:42 +0100 Subject: [PATCH] Add support for insta-win levels This is just for stability so the game doensn't break for poorly-designed levels --- mods/lzr_levels/init.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/mods/lzr_levels/init.lua b/mods/lzr_levels/init.lua index 0abe5f3..8651944 100644 --- a/mods/lzr_levels/init.lua +++ b/mods/lzr_levels/init.lua @@ -92,7 +92,12 @@ end function lzr_levels.build_level(level) local schem = minetest.place_schematic(lzr_globals.LEVEL_POS, minetest.get_modpath("lzr_levels").."/schematics/lzr_levels_level_"..level..".mts", "0", {}, true, "") if schem then + -- Propagate lasers and check for insta-win lzr_laser.full_laser_update(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END) + local done = lzr_laser.check_level_won() + if done then + lzr_levels.level_complete() + end else minetest.log("error", "[lzr_levels] lzr_levels.build_level failed to build level") end @@ -150,7 +155,7 @@ end function lzr_levels.next_level() local player = get_singleplayer() current_level = current_level + 1 - if current_level > 10 then + if current_level > LAST_LEVEL then lzr_messages.show_message(player, S("Final level completed!"), 5) else lzr_levels.start_level(current_level)