Double the odds, to halve the ABM frequencies.

This commit is contained in:
kno10 2024-10-10 17:32:36 +02:00 committed by the-real-herowl
parent e9453d6210
commit 78a958db4e
8 changed files with 19 additions and 15 deletions

@ -172,7 +172,7 @@ minetest.register_craft({
}) })
-- beetroots grow 1/3rd of the default speed -- beetroots grow 1/3rd of the default speed
mcl_farming:add_plant("plant_beetroot", "mcl_farming:beetroot", {"mcl_farming:beetroot_0", "mcl_farming:beetroot_1", "mcl_farming:beetroot_2"}, 13.512, 15) mcl_farming:add_plant("plant_beetroot", "mcl_farming:beetroot", {"mcl_farming:beetroot_0", "mcl_farming:beetroot_1", "mcl_farming:beetroot_2"}, 16.2012, 25)
if minetest.get_modpath("doc") then if minetest.get_modpath("doc") then
for i = 1, 2 do for i = 1, 2 do

@ -118,7 +118,7 @@ minetest.register_craft({
} }
}) })
mcl_farming:add_plant("plant_carrot", "mcl_farming:carrot", {"mcl_farming:carrot_1", "mcl_farming:carrot_2", "mcl_farming:carrot_3", "mcl_farming:carrot_4", "mcl_farming:carrot_5", "mcl_farming:carrot_6", "mcl_farming:carrot_7"}, 13.513, 5) mcl_farming:add_plant("plant_carrot", "mcl_farming:carrot", {"mcl_farming:carrot_1", "mcl_farming:carrot_2", "mcl_farming:carrot_3", "mcl_farming:carrot_4", "mcl_farming:carrot_5", "mcl_farming:carrot_6", "mcl_farming:carrot_7"}, 5.4013, 25)
if minetest.get_modpath("doc") then if minetest.get_modpath("doc") then
for i=2,7 do for i=2,7 do

@ -123,10 +123,10 @@ local stem_def = {
} }
-- Register stem growth -- Register stem growth
mcl_farming:add_plant("plant_melon_stem", "mcl_farming:melontige_unconnect", {"mcl_farming:melontige_1", "mcl_farming:melontige_2", "mcl_farming:melontige_3", "mcl_farming:melontige_4", "mcl_farming:melontige_5", "mcl_farming:melontige_6", "mcl_farming:melontige_7"}, 13.514, 5) mcl_farming:add_plant("plant_melon_stem", "mcl_farming:melontige_unconnect", {"mcl_farming:melontige_1", "mcl_farming:melontige_2", "mcl_farming:melontige_3", "mcl_farming:melontige_4", "mcl_farming:melontige_5", "mcl_farming:melontige_6", "mcl_farming:melontige_7"}, 5.4014, 25)
-- Register actual melon, connected stems and stem-to-melon growth -- Register actual melon, connected stems and stem-to-melon growth
mcl_farming:add_gourd("mcl_farming:melontige_unconnect", "mcl_farming:melontige_linked", "mcl_farming:melontige_unconnect", stem_def, stem_drop, "mcl_farming:melon", melon_base_def, 13.515, 5, "mcl_farming_melon_stem_connected.png^[colorize:#FFA800:127") mcl_farming:add_gourd("mcl_farming:melontige_unconnect", "mcl_farming:melontige_linked", "mcl_farming:melontige_unconnect", stem_def, stem_drop, "mcl_farming:melon", melon_base_def, 5.4015, 25, "mcl_farming_melon_stem_connected.png^[colorize:#FFA800:127")
-- Items and crafting -- Items and crafting
minetest.register_craftitem("mcl_farming:melon_item", { minetest.register_craftitem("mcl_farming:melon_item", {

@ -135,7 +135,7 @@ minetest.register_craft({
cooktime = 10, cooktime = 10,
}) })
mcl_farming:add_plant("plant_potato", "mcl_farming:potato", {"mcl_farming:potato_1", "mcl_farming:potato_2", "mcl_farming:potato_3", "mcl_farming:potato_4", "mcl_farming:potato_5", "mcl_farming:potato_6", "mcl_farming:potato_7"}, 13.516, 5) mcl_farming:add_plant("plant_potato", "mcl_farming:potato", {"mcl_farming:potato_1", "mcl_farming:potato_2", "mcl_farming:potato_3", "mcl_farming:potato_4", "mcl_farming:potato_5", "mcl_farming:potato_6", "mcl_farming:potato_7"}, 5.4016, 25)
minetest.register_on_item_eat(function (hp_change, replace_with_item, itemstack, user, pointed_thing) minetest.register_on_item_eat(function (hp_change, replace_with_item, itemstack, user, pointed_thing)

@ -180,10 +180,10 @@ if minetest.get_modpath("mcl_armor") then
end end
-- Register stem growth -- Register stem growth
mcl_farming:add_plant("plant_pumpkin_stem", "mcl_farming:pumpkintige_unconnect", {"mcl_farming:pumpkin_1", "mcl_farming:pumpkin_2", "mcl_farming:pumpkin_3", "mcl_farming:pumpkin_4", "mcl_farming:pumpkin_5", "mcl_farming:pumpkin_6", "mcl_farming:pumpkin_7"}, 13.517, 5) mcl_farming:add_plant("plant_pumpkin_stem", "mcl_farming:pumpkintige_unconnect", {"mcl_farming:pumpkin_1", "mcl_farming:pumpkin_2", "mcl_farming:pumpkin_3", "mcl_farming:pumpkin_4", "mcl_farming:pumpkin_5", "mcl_farming:pumpkin_6", "mcl_farming:pumpkin_7"}, 5.4017, 25)
-- Register actual pumpkin, connected stems and stem-to-pumpkin growth -- Register actual pumpkin, connected stems and stem-to-pumpkin growth
mcl_farming:add_gourd("mcl_farming:pumpkintige_unconnect", "mcl_farming:pumpkintige_linked", "mcl_farming:pumpkintige_unconnect", stem_def, stem_drop, "mcl_farming:pumpkin", pumpkin_base_def, 13.518, 5, "mcl_farming_pumpkin_stem_connected.png^[colorize:#FFA800:127") mcl_farming:add_gourd("mcl_farming:pumpkintige_unconnect", "mcl_farming:pumpkintige_linked", "mcl_farming:pumpkintige_unconnect", stem_def, stem_drop, "mcl_farming:pumpkin", pumpkin_base_def, 5.4018, 25, "mcl_farming_pumpkin_stem_connected.png^[colorize:#FFA800:127")
-- Steal function to properly disconnect a carved pumpkin -- Steal function to properly disconnect a carved pumpkin
pumpkin_face_base_def.after_destruct = minetest.registered_nodes["mcl_farming:pumpkin"].after_destruct pumpkin_face_base_def.after_destruct = minetest.registered_nodes["mcl_farming:pumpkin"].after_destruct

@ -5,6 +5,8 @@
-- --
local math = math local math = math
local vector = vector local vector = vector
local random = math.random
local floor = math.floor
local plant_lists = {} local plant_lists = {}
mcl_farming.plant_lists = plant_lists -- export mcl_farming.plant_lists = plant_lists -- export
@ -123,12 +125,13 @@ function mcl_farming:grow_plant(identifier, pos, node, stages, ignore_light_wate
-- number of missed interval ticks, for catch-up in block loading -- number of missed interval ticks, for catch-up in block loading
local plant_info = plant_lists[identifier] local plant_info = plant_lists[identifier]
if plant_info then if plant_info then
stages = stages + math.floor(get_intervals_counter(pos, plant_info.interval, plant_info.chance)) stages = stages + floor(get_intervals_counter(pos, plant_info.interval, plant_info.chance))
end end
if not ignore_light_water then if not ignore_light_water then
local odds = math.floor(25 / (get_moisture_level(pos) * get_moisture_penalty(pos))) + 1 local odds = floor(25 / (get_moisture_level(pos) * get_moisture_penalty(pos))) + 1
for i = 1,stages do for i = 1,stages do
if math.random(1, odds) ~= 1 then stages = stages - 1 end -- we double the odds, and rather call the ABM less often
if random() * odds >= 2 then stages = stages - 1 end
end end
end end
@ -307,7 +310,7 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s
local light = minetest.get_node_light(stempos) local light = minetest.get_node_light(stempos)
if not light or light < 9 then return end if not light or light < 9 then return end
-- Pick one neighbor and check if it can be used to grow -- Pick one neighbor and check if it can be used to grow
local dir = math.random(1, 4) -- pick direction at random local dir = random(1, 4) -- pick direction at random
local neighbor = (dir == 1 and vector.offset(stempos, 1, 0, 0)) local neighbor = (dir == 1 and vector.offset(stempos, 1, 0, 0))
or (dir == 2 and vector.offset(stempos, -1, 0, 0)) or (dir == 2 and vector.offset(stempos, -1, 0, 0))
or (dir == 3 and vector.offset(stempos, 0, 0, 1)) or (dir == 3 and vector.offset(stempos, 0, 0, 1))
@ -322,7 +325,8 @@ function mcl_farming:add_gourd(full_unconnected_stem, connected_stem_basename, s
-- check moisture level -- check moisture level
local moisture = get_moisture_level(stempos) * get_moisture_penalty(stempos) local moisture = get_moisture_level(stempos) * get_moisture_penalty(stempos)
if math.random(1, math.floor(25 / moisture) + 1) ~= 1 then return end -- we double the odds, and rather call the ABM less often
if random() * (math.floor(25 / moisture) + 1) >= 2 then return end
minetest.swap_node(stempos, { name = connected_stem_names[dir] }) minetest.swap_node(stempos, { name = connected_stem_names[dir] })
if gourd_def.paramtype2 == "facedir" then if gourd_def.paramtype2 == "facedir" then

@ -99,8 +99,8 @@ minetest.register_craftitem("mcl_farming:sweet_berry", {
}) })
minetest.register_alias("mcl_sweet_berry:sweet_berry", "mcl_farming:sweet_berry") minetest.register_alias("mcl_sweet_berry:sweet_berry", "mcl_farming:sweet_berry")
-- TODO: Find proper interval and chance values for sweet berry bushes. Current interval and chance values are copied from mcl_farming:beetroot which has similar growth stages. -- TODO: Find proper interval and chance values for sweet berry bushes. Current interval and chance values are copied from mcl_farming:beetroot which has similar growth stages, 1/3rd of the default.
mcl_farming:add_plant("plant_sweet_berry_bush", "mcl_farming:sweet_berry_bush_3", {"mcl_farming:sweet_berry_bush_0", "mcl_farming:sweet_berry_bush_1", "mcl_farming:sweet_berry_bush_2"}, 13.519, 15) mcl_farming:add_plant("plant_sweet_berry_bush", "mcl_farming:sweet_berry_bush_3", {"mcl_farming:sweet_berry_bush_0", "mcl_farming:sweet_berry_bush_1", "mcl_farming:sweet_berry_bush_2"}, 16.2019, 25)
local function berry_damage_check(obj) local function berry_damage_check(obj)
local p = obj:get_pos() local p = obj:get_pos()

@ -99,7 +99,7 @@ minetest.register_node("mcl_farming:wheat", {
} }
}) })
mcl_farming:add_plant("plant_wheat", "mcl_farming:wheat", {"mcl_farming:wheat_1", "mcl_farming:wheat_2", "mcl_farming:wheat_3", "mcl_farming:wheat_4", "mcl_farming:wheat_5", "mcl_farming:wheat_6", "mcl_farming:wheat_7"}, 13.520, 5) mcl_farming:add_plant("plant_wheat", "mcl_farming:wheat", {"mcl_farming:wheat_1", "mcl_farming:wheat_2", "mcl_farming:wheat_3", "mcl_farming:wheat_4", "mcl_farming:wheat_5", "mcl_farming:wheat_6", "mcl_farming:wheat_7"}, 5.4020, 25)
minetest.register_craftitem("mcl_farming:wheat_item", { minetest.register_craftitem("mcl_farming:wheat_item", {
description = S("Wheat"), description = S("Wheat"),