12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- local function override_node_timer(node_name)
- local def = minetest.registered_nodes[node_name]
- local old_node_timer = def.on_timer
- def.on_timer = function(pos)
- local ctx = mesecons_debug.get_context(pos)
- if ctx.penalty > 0 then
- -- defer
- local timer = minetest.get_node_timer(pos)
- local meta = minetest.get_meta(pos)
- local is_defered = meta:get_int("_defered") == 1
- if is_defered then
- -- already delayed
- meta:set_int("_defered", 0)
- return old_node_timer(pos)
- else
- -- start timer
- meta:set_int("_defered", 1)
- timer:start(ctx.penalty)
- end
- else
- -- immediate
- return old_node_timer(pos)
- end
- end
- end
- -- luaC
- local BASENAME = "mesecons_luacontroller:luacontroller"
- for a = 0, 1 do -- 0 = off 1 = on
- for b = 0, 1 do
- for c = 0, 1 do
- for d = 0, 1 do
- local cid = tostring(d)..tostring(c)..tostring(b)..tostring(a)
- local node_name = BASENAME..cid
- override_node_timer(node_name)
- end
- end
- end
- end
- -- blinky
- override_node_timer("mesecons_blinkyplant:blinky_plant_off")
- override_node_timer("mesecons_blinkyplant:blinky_plant_on")
|