20% chance per wood log for getting charcoal from fire pits
parent
e0ae74ca26
commit
2135f1866c
|
@ -22,13 +22,12 @@ function pmb_cooking.activate_burner(pos, node, clicker, itemstack, pointed_thin
|
|||
pmb_node_update.update_node_propagate(pos, "interaction", clicker, 2)
|
||||
end
|
||||
|
||||
local t = minetest.get_node_timer(pos)
|
||||
local fuel_time = minetest.get_item_group(wielditem, "fuel")
|
||||
local meta = minetest.get_meta(pos)
|
||||
if fuel_time == 0 then fuel_time = 5 end
|
||||
local timer_elapsed = meta:get_int("time_left") or 0
|
||||
meta:set_int("time_left", timer_elapsed + fuel_time)
|
||||
|
||||
local t = minetest.get_node_timer(pos)
|
||||
t:stop()
|
||||
t:start(1)
|
||||
|
||||
|
@ -42,13 +41,14 @@ function pmb_cooking.activate_burner(pos, node, clicker, itemstack, pointed_thin
|
|||
elseif wielditem == "" and node.name == active_name then
|
||||
pmb_cooking.deactivate_burner(pos, node)
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
|
||||
function pmb_cooking.burner_on_timer(pos, elapsed)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local timer_elapsed = meta:get_int("time_left") or 0
|
||||
local fuel_use_mult = minetest.registered_nodes[minetest.get_node(pos).name]._fuel_use
|
||||
if not fuel_use_mult then fuel_use_mult = 1 end
|
||||
local fuel_use_mult = minetest.registered_nodes[minetest.get_node(pos).name]._fuel_use or 1
|
||||
fuel_use_mult = fuel_use_mult * elapsed
|
||||
|
||||
meta:set_int("time_left", timer_elapsed - fuel_use_mult)
|
||||
if timer_elapsed < 0 then
|
||||
|
|
|
@ -84,12 +84,35 @@ minetest.register_node('pmb_cooking:fire_pit_active', {
|
|||
},
|
||||
collision_box = fire_pit_size,
|
||||
selection_box = fire_pit_size,
|
||||
on_timer = pmb_cooking.burner_on_timer,
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
pmb_cooking.activate_burner(pos, node, clicker, itemstack, pointed_thing)
|
||||
|
||||
on_timer = function(pos, elapsed)
|
||||
-- some a chance of charcoal for each 300s of fuel
|
||||
local meta = minetest.get_meta(pos)
|
||||
local charcoal = meta:get_int("charcoal") or 0
|
||||
if charcoal > 0 then
|
||||
if math.random() < 0.2 then
|
||||
minetest.add_item(vector.offset(pos, math.random()*0.2, 1.1, math.random()*0.2), ItemStack("pmb_items:charcoal"))
|
||||
end
|
||||
charcoal = math.max(charcoal - 1, 0)
|
||||
meta:set_int("charcoal", charcoal)
|
||||
end
|
||||
-- run the normal func
|
||||
return pmb_cooking.burner_on_timer(pos, elapsed)
|
||||
end,
|
||||
|
||||
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local wielditem = clicker:get_wielded_item():get_name()
|
||||
if minetest.get_item_group(wielditem, "wood_log") ~= 0 then
|
||||
local charcoal = meta:get_int("charcoal")
|
||||
meta:set_int("charcoal", charcoal + 1)
|
||||
end
|
||||
|
||||
return pmb_cooking.activate_burner(pos, node, clicker, itemstack, pointed_thing)
|
||||
end,
|
||||
|
||||
on_destruct = function(pos)
|
||||
pmb_cooking.stop_node_sound(pos)
|
||||
return pmb_cooking.stop_node_sound(pos)
|
||||
end
|
||||
})
|
||||
|
||||
|
|
Loading…
Reference in New Issue