summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--mesecons_gates/init.lua37
1 files changed, 15 insertions, 22 deletions
diff --git a/mesecons_gates/init.lua b/mesecons_gates/init.lua
index b58e0bc..27719a4 100644
--- a/mesecons_gates/init.lua
+++ b/mesecons_gates/init.lua
@@ -87,31 +87,24 @@ function set_gate(pos, on)
gate = get_gate(pos)
local meta = minetest.env:get_meta(pos)
local rules = {{x=1, y=0, z=0}}
- if on then
- if not gate_state(pos) then
- yc_heat(meta)
- minetest.after(0.5, yc_cool, meta)
- if yc_overheat(meta) then
- pop_gate(pos)
+ if on ~= gate_state(pos) then
+ yc_heat(meta)
+ minetest.after(0.5, yc_cool, meta)
+ if yc_overheat(meta) then
+ pop_gate(pos)
+ else
+ heat = meta:get_int("heat")
+ if on then
+ onoff = "_on"
else
- heat = meta:get_int("heat")
- minetest.env:add_node(pos, {name="mesecons_gates:"..gate.."_on"})
- local meta2 = minetest.env:get_meta(pos)
- meta2:set_int("heat", heat)
- mesecon:receptor_on(pos, rules)
+ onoff = "_off"
end
- end
- else
- if gate_state(pos) then
- yc_heat(meta)
- minetest.after(0.5, yc_cool, meta)
- if yc_overheat(meta) then
- pop_gate(pos)
+ minetest.env:add_node(pos, {name="mesecons_gates:"..gate..onoff})
+ local meta2 = minetest.env:get_meta(pos)
+ meta2:set_int("heat", heat)
+ if on then
+ mesecon:receptor_on(pos, rules)
else
- heat = meta:get_int("heat")
- minetest.env:add_node(pos, {name="mesecons_gates:"..gate.."_off"})
- local meta2 = minetest.env:get_meta(pos)
- meta2:set_int("heat", heat)
mesecon:receptor_off(pos, rules)
end
end