mirror of
https://github.com/minetest-mods/mesecons.git
synced 2024-12-25 01:40:18 +01:00
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)
|
local rulenames = mesecon.rules_link_rule_all(pos, rule)
|
||||||
for _, rulename in ipairs(rulenames) do
|
for _, rulename in ipairs(rulenames) do
|
||||||
mesecon.vm_begin()
|
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
|
-- 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
|
-- was found along the way. Commit changes that were made in voxelmanip. If turnoff
|
||||||
|
@ -542,9 +542,12 @@ function mesecon.turnoff(pos, link)
|
|||||||
end
|
end
|
||||||
|
|
||||||
for _, sig in ipairs(signals) do
|
for _, sig in ipairs(signals) do
|
||||||
mesecon.changesignal(sig.pos, sig.node, sig.link, mesecon.state.off, sig.depth)
|
-- If sig.depth is 1, it has not yet been checked that the power source is actually off.
|
||||||
if mesecon.is_effector_on(sig.node.name) and not mesecon.is_powered(sig.pos) then
|
if sig.depth > 1 or not mesecon.is_powered(sig.pos, sig.link) then
|
||||||
mesecon.deactivate(sig.pos, sig.node, sig.link, sig.depth)
|
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
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -206,7 +206,7 @@ describe("node movement", function()
|
|||||||
end)
|
end)
|
||||||
|
|
||||||
-- Since turnon is called before turnoff when pushing, effectors may be incorrectly turned off.
|
-- 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 pos = {x = 0, y = 0, z = 0}
|
||||||
local dir = {x = 1, y = 0, z = 0}
|
local dir = {x = 1, y = 0, z = 0}
|
||||||
mesecon._test_place(pos, "mesecons:test_effector")
|
mesecon._test_place(pos, "mesecons:test_effector")
|
||||||
|
Loading…
Reference in New Issue
Block a user