20% chance per wood log for getting charcoal from fire pits

master
Sumyjkl 2022-08-31 00:46:20 +10:00
parent e0ae74ca26
commit 2135f1866c
2 changed files with 31 additions and 8 deletions

View File

@ -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

View File

@ -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
})