summaryrefslogtreecommitdiff
path: root/mesecons/services.lua
diff options
context:
space:
mode:
Diffstat (limited to 'mesecons/services.lua')
-rw-r--r--mesecons/services.lua8
1 files changed, 7 insertions, 1 deletions
diff --git a/mesecons/services.lua b/mesecons/services.lua
index 469ab95..215fb31 100644
--- a/mesecons/services.lua
+++ b/mesecons/services.lua
@@ -28,11 +28,13 @@ mesecon.on_placenode = function (pos, node)
-- Effectors: Send changesignal and activate or deactivate
if mesecon.is_effector(node.name) then
local powered_rules = {}
+ local unpowered_rules = {}
-- for each input rule, check if powered
for _, r in ipairs(mesecon.effector_get_rules(node)) do
local powered = mesecon.is_powered(pos, r)
- if powered then table.insert(powered_rules, r) end
+ if powered then table.insert(powered_rules, r)
+ else table.insert(unpowered_rules, r) end
local state = powered and mesecon.state.on or mesecon.state.off
mesecon.changesignal(pos, node, r, state, 1)
@@ -42,6 +44,10 @@ mesecon.on_placenode = function (pos, node)
for _, r in ipairs(powered_rules) do
mesecon.activate(pos, node, r, 1)
end
+ else
+ for _, r in ipairs(unpowered_rules) do
+ mesecon.deactivate(pos, node, r, 1)
+ end
end
end
end