diff options
Diffstat (limited to 'firealarm_smokedetector')
| -rw-r--r-- | firealarm_smokedetector/init.lua | 26 | 
1 files changed, 17 insertions, 9 deletions
| diff --git a/firealarm_smokedetector/init.lua b/firealarm_smokedetector/init.lua index dc67a1b..9297f2c 100644 --- a/firealarm_smokedetector/init.lua +++ b/firealarm_smokedetector/init.lua @@ -42,6 +42,11 @@ minetest.register_node(":firealarm:smokedetector_off",{  	on_punch = function(pos,_,player)  		local name = player:get_player_name()  		minetest.chat_send_player(name,string.format("Position: %d,%d,%d",pos.x,pos.y,pos.z)) +		local item = player:get_wielded_item() +		if item and string.find(item:get_name(),"magnet") then +			--Simulate the effect of the old beehive smoker +			minetest.get_meta(pos):set_int("agressive",0) +		end  	end,  	after_place_node = function(pos)  		firealarm.setDevInfo("signaling",pos,{active = false,manualReset = false}) @@ -91,17 +96,20 @@ minetest.register_abm({  	action = function(pos,node)  		local devInfo = firealarm.getDevInfo("signaling",pos)  		if not devInfo then return end -		local minp = vector.add(pos,vector.new(-4,-10,-4)) -		local maxp = vector.add(pos,vector.new(4,0,4)) -		local fire = false -		local fire_nodes = {["fire:permanent_flame"] = true,["fire:basic_flame"] = true} -		for x=minp.x,maxp.x,1 do -			for y=minp.y,maxp.y,1 do -				for z=minp.z,maxp.z,1 do -					if fire_nodes[minetest.get_node({x=x,y=y,z=z}).name] then fire = true end -				end +		local minheight +		for i=-1,-10,-1 do +			local checkpos = vector.add(pos,vector.new(0,i,0)) +			local ndef = minetest.registered_nodes[minetest.get_node(checkpos).name] +			if ndef and ndef.drawtype == "normal" then +				minheight = i +				break  			end  		end +		minheight = minheight or -10 +		local minp = vector.add(pos,vector.new(-4,minheight,-4)) +		local maxp = vector.add(pos,vector.new(4,0,4)) +		local fire_nodes = {"fire:permanent_flame","fire:basic_flame"} +		local fire = #minetest.find_nodes_in_area(minp,maxp,fire_nodes) > 0  		if fire or minetest.get_meta(pos):get_int("agressive") == 0 then  			devInfo.active = true  			firealarm.setDevInfo("signaling",pos,devInfo) | 
