Fix broken takable update

master
Wuzzy 2021-12-28 04:11:20 +01:00
parent 85e7caaa4b
commit ee05696fd7
2 changed files with 12 additions and 4 deletions

View File

@ -133,12 +133,14 @@ local register_element = function(subname, def, options)
def_takable.groups.takable = 1
def_takable.groups.dig_immediate = 3
def_takable.description = S("@1 (takable)", def.description)
def_takable._lzr_active = "lzr_laser:"..subname.."_takable_on"
local def_takable_on = table.copy(def_core_on)
def_takable_on.tiles = def.tiles_takable_on
def_takable_on.groups.takable = 1
def_takable_on.groups.dig_immediate = 3
def_takable_on.description = S("@1 (takable, active)", def.description)
def_takable_on.drop = "lzr_laser:"..subname.."_takable"
def_takable_on._lzr_inactive = "lzr_laser:"..subname.."_takable"
minetest.register_node("lzr_laser:"..subname.."_takable", def_takable)
minetest.register_node("lzr_laser:"..subname.."_takable_on", def_takable_on)
end
@ -187,7 +189,7 @@ register_element("mirror", {
}, { allow_take = true })
register_element("transmissive_mirror", {
description = S("Transissive Mirror"),
description = S("Transmissive Mirror"),
paramtype2 = "facedir",
tiles_takable_off = {
"lzr_laser_transmissive_mirror_top.png",

View File

@ -28,8 +28,10 @@ function lzr_laser.add_laser(pos, dir)
elseif minetest.get_item_group(node.name, "mirror") > 0 then
local mirror_dir = lzr_laser.get_mirrored_laser_dir(pos, dir)
if mirror_dir then
local def = minetest.registered_nodes[node.name]
local active = def._lzr_active
-- Activate mirror node
minetest.set_node(pos, {name="lzr_laser:mirror_on", param2 = node.param2})
minetest.set_node(pos, {name=def._lzr_active, param2 = node.param2})
-- Set new pos and dir
pos = vector.add(pos, mirror_dir)
dir = mirror_dir
@ -41,8 +43,10 @@ function lzr_laser.add_laser(pos, dir)
elseif minetest.get_item_group(node.name, "transmissive_mirror") > 0 then
local mirror_dir = lzr_laser.get_mirrored_laser_dir(pos, dir)
if mirror_dir then
local def = minetest.registered_nodes[node.name]
local active = def._lzr_active
-- Activate mirror node
minetest.set_node(pos, {name="lzr_laser:transmissive_mirror_on", param2 = node.param2})
minetest.set_node(pos, {name=active, param2 = node.param2})
-- Set new pos and dir
local pos_straight = vector.add(pos, dir)
local dir_straight = dir
@ -58,8 +62,10 @@ function lzr_laser.add_laser(pos, dir)
elseif minetest.get_item_group(node.name, "detector") > 0 then
local detected = lzr_laser.check_detector(pos, dir)
if detected then
local def = minetest.registered_nodes[node.name]
local active = def._lzr_active
-- Activate node
minetest.set_node(pos, {name="lzr_laser:detector_on", param2 = node.param2})
minetest.set_node(pos, {name=active, param2 = node.param2})
local done = lzr_laser.check_detectors_in_area(lzr_globals.PLAYFIELD_START, lzr_globals.PLAYFIELD_END)
if done then
lzr_levels.next_level()