Fix level reset and level pack completion

This commit is contained in:
Wuzzy 2024-12-13 18:26:34 +01:00
parent 034f8f5495
commit 5d234197a6
3 changed files with 14 additions and 21 deletions

View File

@ -1041,6 +1041,9 @@ function lzr_levels.clear_level_progress(level_data)
end
function lzr_levels.mark_level_as_complete(level, level_data)
if level_data.is_singleton then
return
end
-- Only core levels are supported
if level_data.name ~= "__core" then
return
@ -1067,6 +1070,7 @@ function lzr_levels.mark_level_as_complete(level, level_data)
-- Place 'Perfect Plunderer' painting in ship
-- as some kind of "mini-achievement"
if lzr_levels.are_all_levels_completed(level_data) then
level_packs_completed[level_data.name] = true
lzr_menu.place_painting("perfect_plunderer")
end
@ -1374,7 +1378,7 @@ function lzr_levels.get_level_pack(name)
end
-- Returns list of all registered level packs (by name)
function lzr_levels.get_level_packs()
function lzr_levels.get_level_pack_names()
local packs = {}
for k,v in pairs(registered_level_packs) do
table.insert(packs, k)

View File

@ -10,6 +10,7 @@ if minetest.settings:get_bool("lzr_debug", false) then
privs = { server = true },
description = S("Mark all core levels as complete except the first one"),
func = function(name, param)
local core_level_data = lzr_levels.get_level_pack("__core")
if not core_level_data then
return false
end
@ -21,24 +22,6 @@ if minetest.settings:get_bool("lzr_debug", false) then
})
end
minetest.register_chatcommand("reset_progress", {
privs = {},
params = "yes",
description = S("Reset core level progress"),
func = function(name, param)
local core_level_data = lzr_levels.get_level_pack("__core")
if not core_level_data then
return false
end
if param == "yes" then
lzr_levels.clear_level_progress(core_level_data)
return true, S("Core level progress reset.")
else
return false, S("To reset level progress, use “/reset_progress yes”")
end
end,
})
lzr_levels.register_level_pack("__core",
minetest.get_modpath("lzr_levels_core").."/data/level_data.csv",
minetest.get_modpath("lzr_levels_core").."/schematics",

View File

@ -6,8 +6,14 @@ minetest.register_chatcommand("reset_progress", {
description = S("Reset your progress in this game"),
func = function(name, param)
if param == "yes" then
-- Reset level progress
lzr_levels.clear_level_progress()
-- Reset level progress of all level packs
local names = lzr_levels.get_level_pack_names()
for n=1, #names do
local level_pack = lzr_levels.get_level_pack(names[n])
if level_pack then
lzr_levels.clear_level_progress(level_pack)
end
end
-- Reset hidden parrot progress
lzr_parrot_npc.clear_hidden_parrot_progress()