now bees can produce combs in apiary and the combtype depends on the active gene of the bee

This commit is contained in:
StochasticMouse 2024-10-08 16:37:23 +02:00
parent b909d5e8a0
commit c772d18e71
5 changed files with 47 additions and 9 deletions

View File

@ -121,14 +121,6 @@ local function apiary_node_timer(pos,elapsed)
can_live = is_queen --these two event are disjoint (there are no queen & princess) can_live = is_queen --these two event are disjoint (there are no queen & princess)
actionable = can_breed or can_live actionable = can_breed or can_live
--if can_breed then -- adjust el to action duration
-- el = math.min(el, breedtime - src_time)
--end
--if can_live then -- adjust el to action duration
-- el = math.min(el, lifetime - src_time)
--end
local el = elapsed local el = elapsed
--if actionable check if things are ready --if actionable check if things are ready
if actionable then if actionable then
@ -137,6 +129,15 @@ local function apiary_node_timer(pos,elapsed)
el = math.min(el, needed_time - src_time) el = math.min(el, needed_time - src_time)
src_time = src_time + el src_time = src_time + el
if can_live then --chance to drop honeycomb
local drops = forestry_bees.calculate_drop(monarchlist[1]:get_meta():get_string("active_gene"))
if (not (next(drops) == nil)) and inv:get_size("dst") - forestry_bees.stacks_in_inv(inv,"dst") >= #drops then
for _,drop in pairs(drops) do
inv:add_item("dst",drop)
end
end
end
if src_time >= needed_time then if src_time >= needed_time then
--if possible act accordingly to breed or live --if possible act accordingly to breed or live
if can_breed then if can_breed then

View File

@ -0,0 +1,15 @@
forestry_bees.bee_drops = {}
local function register_drop(bee_type, drop_name, basechance)
if forestry_bees.bee_drops[bee_type] == nil then
forestry_bees.bee_drops[bee_type] = {}
end
forestry_bees.bee_drops[bee_type][drop_name] = basechance
end
register_drop("forest", "forestry_bees:honey_comb", 0.3)
register_drop("meadow", "forestry_bees:honey_comb", 0.3)
register_drop("common", "forestry_bees:honey_comb", 0.35)
register_drop("cultivated", "forestry_bees:honey_comb", 0.4)
register_drop("noble", "forestry_bees:dripping_comb", 0.2)
register_drop("diligent", "forestry_bees:stringy_comb", 0.2)

View File

@ -5,6 +5,17 @@ function forestry_bees.Bee(bee_type,active_gene,inactive_gene)
return itemstack return itemstack
end end
function forestry_bees.calculate_drop(bee_type) --later we will take as input also the bee_prod_speed and the item_modifier (for frames)
local possible_drops = forestry_bees.bee_drops[bee_type] --this gets us a table
local out_table = {}
for drop,chance in pairs(possible_drops) do
if math.random() < chance then
table.insert(out_table,ItemStack(drop))
end
end
return out_table
end
function forestry_bees.bee_name(bee_type,active_gene) function forestry_bees.bee_name(bee_type,active_gene)
return "forestry_bees:"..active_gene.."_"..bee_type return "forestry_bees:"..active_gene.."_"..bee_type
end end

View File

@ -3,5 +3,6 @@ forestry_bees = {}
dofile(minetest.get_modpath("forestry_bees") .. "/helper.lua") dofile(minetest.get_modpath("forestry_bees") .. "/helper.lua")
dofile(minetest.get_modpath("forestry_bees") .. "/register.lua") dofile(minetest.get_modpath("forestry_bees") .. "/register.lua")
dofile(minetest.get_modpath("forestry_bees") .. "/bee_drops.lua")
dofile(minetest.get_modpath("forestry_bees") .. "/mutations.lua") dofile(minetest.get_modpath("forestry_bees") .. "/mutations.lua")
dofile(minetest.get_modpath("forestry_bees") .. "/apiary.lua") dofile(minetest.get_modpath("forestry_bees") .. "/apiary.lua")

View File

@ -112,5 +112,15 @@ register_bee("diligent","#ffdc16","#c219ec")
minetest.register_craftitem("forestry_bees:honey_comb", { minetest.register_craftitem("forestry_bees:honey_comb", {
description = "Honey Comb", description = "Honey Comb",
groups = {comb = 1}, groups = {comb = 1},
inventory_image = "(bee_combs.0.png^[colorize:Yellow:100)^(bee_combs.1.png^[colorize:Yellow:120)" inventory_image = "(bee_combs.0.png^[colorize:#ffa12b:155)^(bee_combs.1.png^[colorize:#e8d56a:255)"
})
minetest.register_craftitem("forestry_bees:dripping_comb", {
description = "Dripping Comb",
groups = {comb = 1},
inventory_image = "(bee_combs.0.png^[colorize:#ffff00:155)^(bee_combs.1.png^[colorize:#dc7613:255)"
})
minetest.register_craftitem("forestry_bees:stringy_comb", {
description = "Stringy Comb",
groups = {comb = 1},
inventory_image = "(bee_combs.0.png^[colorize:#bda93e:155)^(bee_combs.1.png^[colorize:#c8be67:255)"
}) })