Allow levels to not require player seen

This commit is contained in:
Wuzzy 2024-11-18 22:22:09 +01:00
parent 05fc564d17
commit a87ad4eb24

View File

@ -81,6 +81,18 @@ eb_levels.register_level = function(level_def)
table.insert(levels, def)
end
eb_levels.player_must_be_seen = function()
if not current_level then
return false
end
local level = levels[current_level]
if level.player_must_be_seen == false then
return false
else
return true
end
end
eb_levels.get_eyeballs_in_current_level = function()
if not current_level then
return nil
@ -277,7 +289,11 @@ eb_levels.start_level = function(level_num, player)
end
end
core.set_timeofday(param.timeofday)
eb_eyeballs.activate_eyeball_fail()
if param.player_must_be_seen == false then
eb_eyeballs.deactivate_eyeball_fail()
else
eb_eyeballs.activate_eyeball_fail()
end
local pmeta = param.player:get_meta()
pmeta:set_int("eb_levels:current_level", level_num)
@ -307,6 +323,7 @@ eb_levels.start_level = function(level_num, player)
sky=level.sky,
cloud_height=level.cloud_height,
timeofday=level.timeofday,
player_must_be_seen=level.player_must_be_seen,
})
end
@ -354,7 +371,7 @@ core.register_globalstep(function(dtime)
local footnode = core.get_node(ppos)
if core.get_item_group(footnode.name, "exit") == 1 and not eb_teleport.is_teleporting() and eb_teleport.can_teleport(player) then
local seen_good, seen_evil = eb_eyeballs.get_seen_counters()
if seen_good and seen_good >= 1 and seen_evil == 0 then
if (not eb_levels.player_must_be_seen()) or (seen_good and seen_good >= 1 and seen_evil == 0) then
exit_timer = exit_timer + EXIT_CHECK_TIME + dtime
if exit_timer >= EXIT_TIME then
local next_level = current_level + 1