diff options
| author | Novatux <nathanael.courant@laposte.net> | 2013-06-05 06:45:19 +0200 | 
|---|---|---|
| committer | Novatux <nathanael.courant@laposte.net> | 2013-06-05 06:45:19 +0200 | 
| commit | edc10dac472cf89818fed4c30e7b12cb9275fb30 (patch) | |
| tree | d4180454279a73dc29606c2b4bb76d3a5afa30d0 | |
| parent | fa0cf15cd97eaa1527bdd87047d231885ec3428d (diff) | |
| download | mesecons-edc10dac472cf89818fed4c30e7b12cb9275fb30.tar mesecons-edc10dac472cf89818fed4c30e7b12cb9275fb30.tar.gz mesecons-edc10dac472cf89818fed4c30e7b12cb9275fb30.tar.bz2 mesecons-edc10dac472cf89818fed4c30e7b12cb9275fb30.tar.xz mesecons-edc10dac472cf89818fed4c30e7b12cb9275fb30.zip | |
Add an ABM function which resets heat to 0, since gates/controllers won't be cooled normally if they are moved (piston, etc...) during the cooling delay.
| -rw-r--r-- | mesecons/services.lua | 10 | ||||
| -rw-r--r-- | mesecons_gates/init.lua | 6 | ||||
| -rw-r--r-- | mesecons_luacontroller/init.lua | 20 | ||||
| -rw-r--r-- | mesecons_microcontroller/init.lua | 20 | 
4 files changed, 33 insertions, 23 deletions
| diff --git a/mesecons/services.lua b/mesecons/services.lua index a2f9d01..ed95205 100644 --- a/mesecons/services.lua +++ b/mesecons/services.lua @@ -25,5 +25,15 @@ mesecon.on_dignode = function (pos, node)  	end  end +minetest.register_abm({ +	nodenames = {"group:overheat"}, +	interval = 1.0, +	chance = 1, +	action = function(pos, node, active_object_count, active_object_count_wider) +		local meta = minetest.env:get_meta(pos) +		meta:set_int("heat",0) +	end, +}) +  minetest.register_on_placenode(mesecon.on_placenode)  minetest.register_on_dignode(mesecon.on_dignode) diff --git a/mesecons_gates/init.lua b/mesecons_gates/init.lua index 162c7d8..37b046f 100644 --- a/mesecons_gates/init.lua +++ b/mesecons_gates/init.lua @@ -47,7 +47,7 @@ function set_gate(pos, on)  	local meta = minetest.env:get_meta(pos)  	if on ~= gate_state(pos) then  		yc_heat(meta) -		minetest.after(0.5, yc_cool, meta) +		--minetest.after(0.5, yc_cool, meta)  		if yc_overheat(meta) then  			pop_gate(pos)  		else @@ -112,13 +112,13 @@ for _, gate in ipairs(gates) do  			drop = nodename.."_off"  			nodename = nodename.."_"..onoff  			description = "You hacker you!" -			groups = {dig_immediate=2, not_in_creative_inventory=1} +			groups = {dig_immediate=2, not_in_creative_inventory=1, overheat = 1}  		else  			onoff = "off"  			drop = nil  			nodename = nodename.."_"..onoff  			description = gate.name.." Gate" -			groups = {dig_immediate=2} +			groups = {dig_immediate=2, overheat = 1}  		end  		tiles = "jeija_microcontroller_bottom.png^".. diff --git a/mesecons_luacontroller/init.lua b/mesecons_luacontroller/init.lua index 02bde9f..4c6ff30 100644 --- a/mesecons_luacontroller/init.lua +++ b/mesecons_luacontroller/init.lua @@ -100,17 +100,17 @@ local heat = function (meta) -- warm up  	end  end -local cool = function (meta) -- cool down after a while -	h = meta:get_int("heat") -	if h ~= nil then -		meta:set_int("heat", h - 1) -	end -end +--local cool = function (meta) -- cool down after a while +--	h = meta:get_int("heat") +--	if h ~= nil then +--		meta:set_int("heat", h - 1) +--	end +--end  local overheat = function (meta) -- determine if too hot  	h = meta:get_int("heat")  	if h == nil then return true end -- if nil then overheat -	if h > 20 then  +	if h > 40 then   		return true  	else   		return false  @@ -258,7 +258,7 @@ end  local do_overheat = function (pos, meta)  	-- Overheat protection  	heat(meta) -	minetest.after(0.5, cool, meta) +	--minetest.after(0.5, cool, meta)  	if overheat(meta) then  		mesecon:swap_node(pos, BASENAME.."_burnt")  		minetest.env:get_meta(pos):set_string("lc_interrupts", "") @@ -412,9 +412,9 @@ if d == 1 then  end  if a + b + c + d ~= 0 then -	groups = {dig_immediate=2, not_in_creative_inventory=1} +	groups = {dig_immediate=2, not_in_creative_inventory=1, overheat = 1}  else -	groups = {dig_immediate=2} +	groups = {dig_immediate=2, overheat = 1}  end  output_rules[cid] = {} diff --git a/mesecons_microcontroller/init.lua b/mesecons_microcontroller/init.lua index 0f6a7cd..c3ddb4e 100644 --- a/mesecons_microcontroller/init.lua +++ b/mesecons_microcontroller/init.lua @@ -19,9 +19,9 @@ if tostring(d) == "1" then  	top = top.."^jeija_microcontroller_LED_D.png"  end  if tostring(d)..tostring(c)..tostring(b)..tostring(a) ~= "0000" then -	groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon = 3} +	groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon = 3, overheat = 1}  else -	groups = {dig_immediate=2, mesecon = 3} +	groups = {dig_immediate=2, mesecon = 3, overheat = 1}  end  local rules={}  if (a == 1) then table.insert(rules, {x = -1, y = 0, z =  0}) end @@ -162,7 +162,7 @@ end  function update_yc(pos)  	local meta = minetest.env:get_meta(pos)  	yc_heat(meta) -	minetest.after(0.5, yc_cool, meta) +	--minetest.after(0.5, yc_cool, meta)  	if (yc_overheat(meta)) then  		minetest.env:remove_node(pos)  		minetest.after(0.2, yc_overheat_off, pos) --wait for pending parsings @@ -674,17 +674,17 @@ function yc_heat(meta)  	end  end -function yc_cool(meta) -	h = meta:get_int("heat") -	if h ~= nil then -		meta:set_int("heat", h - 1) -	end -end +--function yc_cool(meta) +--	h = meta:get_int("heat") +--	if h ~= nil then +--		meta:set_int("heat", h - 1) +--	end +--end  function yc_overheat(meta)  	h = meta:get_int("heat")  	if h == nil then return true end -- if nil the overheat -	if h>30 then  +	if h>60 then   		return true  	else   		return false  | 
