forked from minetest-mods/mesecons
Fix mvps receptor_off issue (#627)
This commit is contained in:
parent
c10ce2dbc5
commit
60240ba268
|
@ -99,7 +99,6 @@ mesecon.queue:add_function("receptor_off", function (pos, rules)
|
|||
local rulenames = mesecon.rules_link_rule_all(pos, rule)
|
||||
for _, rulename in ipairs(rulenames) do
|
||||
mesecon.vm_begin()
|
||||
mesecon.changesignal(np, minetest.get_node(np), rulename, mesecon.state.off, 2)
|
||||
|
||||
-- Turnoff returns true if turnoff process was successful, no onstate receptor
|
||||
-- was found along the way. Commit changes that were made in voxelmanip. If turnoff
|
||||
|
|
|
@ -542,9 +542,12 @@ function mesecon.turnoff(pos, link)
|
|||
end
|
||||
|
||||
for _, sig in ipairs(signals) do
|
||||
mesecon.changesignal(sig.pos, sig.node, sig.link, mesecon.state.off, sig.depth)
|
||||
if mesecon.is_effector_on(sig.node.name) and not mesecon.is_powered(sig.pos) then
|
||||
mesecon.deactivate(sig.pos, sig.node, sig.link, sig.depth)
|
||||
-- If sig.depth is 1, it has not yet been checked that the power source is actually off.
|
||||
if sig.depth > 1 or not mesecon.is_powered(sig.pos, sig.link) then
|
||||
mesecon.changesignal(sig.pos, sig.node, sig.link, mesecon.state.off, sig.depth)
|
||||
if mesecon.is_effector_on(sig.node.name) and not mesecon.is_powered(sig.pos) then
|
||||
mesecon.deactivate(sig.pos, sig.node, sig.link, sig.depth)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
@ -206,7 +206,7 @@ describe("node movement", function()
|
|||
end)
|
||||
|
||||
-- Since turnon is called before turnoff when pushing, effectors may be incorrectly turned off.
|
||||
pending("does not overwrite turnon with receptor_off", function()
|
||||
it("does not overwrite turnon with receptor_off", function()
|
||||
local pos = {x = 0, y = 0, z = 0}
|
||||
local dir = {x = 1, y = 0, z = 0}
|
||||
mesecon._test_place(pos, "mesecons:test_effector")
|
||||
|
|
Loading…
Reference in New Issue
Block a user