diff --git a/config.lua b/config.lua index 9e9af43..aa87d6e 100644 --- a/config.lua +++ b/config.lua @@ -52,11 +52,10 @@ end setting("int", "blood_thorn_growth_interval", 12, "blood_thorn growth ABM interval") setting("int", "blood_thorn_growth_chance", 83, "blood_thorn growth ABM chance") -setting("int", "plant_growth_timer", 100, "Base plant growth timer interval") -setting("int", "plant_growth_chance", 4, "Base plant growth chance") +setting("int", "plant_growth_time", 500, "Base plant growth time") for _, plant in pairs(plants) do - setting("float", plant.name.."_timer_multiplier", plant.delay_multiplier, plant.name.." growth delay multiplier") + setting("float", plant.name.."_delay_multiplier", plant.delay_multiplier, plant.name.." growth delay multiplier") end setting("bool", "light_kills_fungus", true, "Light kills fungus") diff --git a/plants.lua b/plants.lua index 016bdce..8f5782d 100644 --- a/plants.lua +++ b/plants.lua @@ -54,6 +54,25 @@ minetest.register_craft({ ----------------------------------------------------------------------------------------- +local marginal = {["default:dirt"] = true, ["dfcaverns:dirt_with_cave_moss"] = true, ["dfcaverns:cobble_with_floor_fungus"] = true} +local growable = {["farming:soil_wet"] = true, ["default:dirt"] = true, ["dfcaverns:dirt_with_cave_moss"] = true, ["dfcaverns:cobble_with_floor_fungus"] = true} + +dfcaverns.plant_timer = function(pos, plantname, elapsed) + local next_stage_time = minetest.registered_nodes[plantname]._dfcaverns_next_stage_time + if not next_stage_time then return end + + next_stage_time = next_stage_time + math.random(next_stage_time * -0.1, next_stage_time * 0.1) + local below = minetest.get_node(vector.add(pos, {x=0, y=-1, z=0})) + if marginal[below.name] then + next_stage_time = next_stage_time * 5 + end + if elapsed ~= nil then + minetest.get_node_timer(pos):set(next_stage_time, elapsed-next_stage_time) + else + minetest.get_node_timer(pos):start(next_stage_time) + end +end + local place_seed = function(itemstack, placer, pointed_thing, plantname) local pt = pointed_thing -- check if pointing at a node @@ -93,16 +112,17 @@ local place_seed = function(itemstack, placer, pointed_thing, plantname) if not minetest.registered_nodes[above.name].buildable_to then return itemstack end - + -- add the node and remove 1 item from the itemstack minetest.add_node(pt.above, {name = plantname, param2 = 1}) + dfcaverns.plant_timer(pt.above, plantname) if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end return itemstack end -dfcaverns.register_seed = function(name, description, image, stage_one) +dfcaverns.register_seed = function(name, description, image, stage_one, grow_time) local def = { description = description, tiles = {image}, @@ -112,6 +132,7 @@ dfcaverns.register_seed = function(name, description, image, stage_one) paramtype2 = "wallmounted", groups = {seed = 1, snappy = 3, attached_node = 1, flammable = 2, dfcaverns_cookable = 1}, _dfcaverns_next_stage = stage_one, + _dfcaverns_next_stage_time = grow_time, paramtype = "light", walkable = false, sunlight_propagates = true, @@ -119,9 +140,14 @@ dfcaverns.register_seed = function(name, description, image, stage_one) type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5}, }, + on_place = function(itemstack, placer, pointed_thing) return place_seed(itemstack, placer, pointed_thing, "dfcaverns:"..name) end, + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, "dfcaverns:"..name, elapsed) + end, } minetest.register_node("dfcaverns:"..name, def) @@ -132,51 +158,20 @@ dfcaverns.register_seed = function(name, description, image, stage_one) }) end -local grow_underground_plant = function(pos, node) - local node_def = minetest.registered_nodes[node.name] +dfcaverns.grow_underground_plant = function(pos, plant_name, elapsed) + local node_def = minetest.registered_nodes[plant_name] local next_stage = node_def._dfcaverns_next_stage if next_stage then - local next_def = minetest.registered_nodes[next_stage] - minetest.swap_node(pos, {name=next_stage, param2 = next_def.place_param2 or node.param2}) - end -end - -dfcaverns.register_grow_abm = function(names, interval, chance) - - if minetest.get_modpath("farming") then - minetest.register_abm({ - nodenames = names, - interval = interval, - chance = chance, - catch_up = true, - neighbors = {"farming:soil_wet"}, - action = function(pos, node) - pos.y = pos.y-1 - if minetest.get_node(pos).name ~= "farming:soil_wet" then - return - end - pos.y = pos.y+1 - grow_underground_plant(pos, node) - end - }) - end - - minetest.register_abm({ - nodenames = names, - interval = interval * 10, - chance = chance, - catch_up = true, - neighbors = {"default:dirt", "dfcaverns:dirt_with_cave_moss", "dfcaverns:cobble_with_floor_fungus"}, - action = function(pos, node) - pos.y = pos.y-1 - if minetest.get_node(pos).name == "default:dirt" or - minetest.get_node(pos).name == "dfcaverns:dirt_with_cave_moss" or - minetest.get_node(pos).name == "dfcaverns:cobble_with_floor_fungus" then - pos.y = pos.y+1 - grow_underground_plant(pos, node) - end + local soil = minetest.get_node(vector.add(pos, {x=0, y=-1, z=0})).name + if growable[soil] then + local next_def = minetest.registered_nodes[next_stage] + local node = minetest.get_node(pos) + minetest.swap_node(pos, {name=next_stage, param2 = next_def.place_param2 or node.param2}) + dfcaverns.plant_timer(pos, next_stage, elapsed) + else + dfcaverns.plant_timer(pos, plant_name) -- reset timer, check again later end - }) + end end if dfcaverns.config.light_kills_fungus then diff --git a/plants/cave_wheat.lua b/plants/cave_wheat.lua index b6b10ab..d667e2f 100644 --- a/plants/cave_wheat.lua +++ b/plants/cave_wheat.lua @@ -2,9 +2,10 @@ local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua") -local wheat_names = {} +local wheat_grow_time = dfcaverns.config.plant_growth_time * dfcaverns.config.cave_wheat_delay_multiplier / 8 local register_cave_wheat = function(number) + local name = "dfcaverns:cave_wheat_"..tostring(number) local def = { description = S("Cave Wheat"), drawtype = "plantlike", @@ -17,6 +18,11 @@ local register_cave_wheat = function(number) buildable_to = true, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11}, sounds = default.node_sound_leaves_defaults(), + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, name, elapsed) + end, + drop = { max_items = 1, items = { @@ -37,21 +43,18 @@ local register_cave_wheat = function(number) } if number < 8 then + def._dfcaverns_next_stage_time = wheat_grow_time def._dfcaverns_next_stage = "dfcaverns:cave_wheat_"..tostring(number+1) - table.insert(wheat_names, "dfcaverns:cave_wheat_"..tostring(number)) end - minetest.register_node("dfcaverns:cave_wheat_"..tostring(number), def) + minetest.register_node(name, def) end for i = 1,8 do register_cave_wheat(i) end -dfcaverns.register_seed("cave_wheat_seed", S("Cave Wheat Seed"), "dfcaverns_cave_wheat_seed.png", "dfcaverns:cave_wheat_1") -table.insert(wheat_names, "dfcaverns:cave_wheat_seed") - -dfcaverns.register_grow_abm(wheat_names, dfcaverns.config.plant_growth_timer * dfcaverns.config.cave_wheat_timer_multiplier, dfcaverns.config.plant_growth_chance) +dfcaverns.register_seed("cave_wheat_seed", S("Cave Wheat Seed"), "dfcaverns_cave_wheat_seed.png", "dfcaverns:cave_wheat_1", wheat_grow_time) minetest.register_craftitem("dfcaverns:cave_wheat", { description = S("Cave Wheat"), diff --git a/plants/dimple_cup.lua b/plants/dimple_cup.lua index f3aa582..a6b2515 100644 --- a/plants/dimple_cup.lua +++ b/plants/dimple_cup.lua @@ -2,9 +2,10 @@ local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua") -local dimple_names = {} +local dimple_grow_time = dfcaverns.config.plant_growth_time * dfcaverns.config.dimple_cup_delay_multiplier / 4 local register_dimple_cup = function(number) + local name = "dfcaverns:dimple_cup_"..tostring(number) local def = { description = S("Dimple Cup"), drawtype = "plantlike", @@ -15,6 +16,11 @@ local register_dimple_cup = function(number) buildable_to = true, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, color_blue = 1, light_sensitive_fungus = 11, flower = 1}, sounds = default.node_sound_leaves_defaults(), + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, name, elapsed) + end, + drop = { max_items = 1, items = { @@ -31,18 +37,15 @@ local register_dimple_cup = function(number) } if number < 4 then + def._dfcaverns_next_stage_time = dimple_grow_time def._dfcaverns_next_stage = "dfcaverns:dimple_cup_"..tostring(number+1) - table.insert(dimple_names, "dfcaverns:dimple_cup_"..tostring(number)) end - minetest.register_node("dfcaverns:dimple_cup_"..tostring(number), def) + minetest.register_node(name, def) end for i = 1,4 do register_dimple_cup(i) end -dfcaverns.register_seed("dimple_cup_seed", S("Dimple Cup Spores"), "dfcaverns_dimple_cup_seed.png", "dfcaverns:dimple_cup_1") -table.insert(dimple_names, "dfcaverns:dimple_cup_seed") - -dfcaverns.register_grow_abm(dimple_names, dfcaverns.config.plant_growth_timer * dfcaverns.config.dimple_cup_timer_multiplier, dfcaverns.config.plant_growth_chance) +dfcaverns.register_seed("dimple_cup_seed", S("Dimple Cup Spores"), "dfcaverns_dimple_cup_seed.png", "dfcaverns:dimple_cup_1", dimple_grow_time) diff --git a/plants/pig_tail.lua b/plants/pig_tail.lua index 127ca8d..27ca20f 100644 --- a/plants/pig_tail.lua +++ b/plants/pig_tail.lua @@ -2,9 +2,10 @@ local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua") -local pig_tail_names = {} +local pig_tail_grow_time = dfcaverns.config.plant_growth_time * dfcaverns.config.pig_tail_delay_multiplier / 8 local register_pig_tail = function(number) + local name = "dfcaverns:pig_tail_"..tostring(number) local def = { description = S("Pig Tail"), drawtype = "plantlike", @@ -17,6 +18,11 @@ local register_pig_tail = function(number) buildable_to = true, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11}, sounds = default.node_sound_leaves_defaults(), + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, name, elapsed) + end, + drop = { max_items = 1, items = { @@ -37,26 +43,23 @@ local register_pig_tail = function(number) } if number < 8 then + def._dfcaverns_next_stage_time = pig_tail_grow_time def._dfcaverns_next_stage = "dfcaverns:pig_tail_"..tostring(number+1) - table.insert(pig_tail_names, "dfcaverns:pig_tail_"..tostring(number)) end - minetest.register_node("dfcaverns:pig_tail_"..tostring(number), def) + minetest.register_node(name, def) end for i = 1,8 do register_pig_tail(i) end -dfcaverns.register_seed("pig_tail_seed", S("Pig Tail Spore"), "dfcaverns_pig_tail_seed.png", "dfcaverns:pig_tail_1") -table.insert(pig_tail_names, "dfcaverns:pig_tail_seed") - -dfcaverns.register_grow_abm(pig_tail_names, dfcaverns.config.plant_growth_timer * dfcaverns.config.pig_tail_timer_multiplier, dfcaverns.config.plant_growth_chance) +dfcaverns.register_seed("pig_tail_seed", S("Pig Tail Spore"), "dfcaverns_pig_tail_seed.png", "dfcaverns:pig_tail_1", pig_tail_grow_time) minetest.register_craftitem("dfcaverns:pig_tail_thread", { description = S("Pig tail thread"), inventory_image = "dfcaverns_pig_tail_thread.png", - groups = {flammable = 1}, + groups = {flammable = 1, thread = 1}, }) minetest.register_craft({ diff --git a/plants/plump_helmet.lua b/plants/plump_helmet.lua index 068325b..06e5f2c 100644 --- a/plants/plump_helmet.lua +++ b/plants/plump_helmet.lua @@ -5,6 +5,8 @@ local S, NS = dofile(MP.."/intllib.lua") local displace_x = 0.125 local displace_z = 0.125 +local plump_helmet_grow_time = dfcaverns.config.plant_growth_time * dfcaverns.config.cave_wheat_delay_multiplier / 4 + local plump_helmet_on_place = function(itemstack, placer, pointed_thing, plantname) local pt = pointed_thing -- check if pointing at a node @@ -47,6 +49,7 @@ local plump_helmet_on_place = function(itemstack, placer, pointed_thing, plantn -- add the node and remove 1 item from the itemstack minetest.add_node(pt.above, {name = plantname, param2 = math.random(0,3)}) + dfcaverns.plant_timer(pt.above, plantname) if not minetest.setting_getbool("creative_mode") then itemstack:take_item() end @@ -59,8 +62,9 @@ minetest.register_node("dfcaverns:plump_helmet_spawn", { tiles = { "dfcaverns_plump_helmet_cap.png", }, - groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11, dfcaverns_cookable = 1}, + groups = {snappy = 3, flammable = 2, plant = 1, attached_node = 1, light_sensitive_fungus = 11, dfcaverns_cookable = 1}, _dfcaverns_next_stage = "dfcaverns:plump_helmet_1", + _dfcaverns_next_stage_time = plump_helmet_grow_time, drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", @@ -71,9 +75,14 @@ minetest.register_node("dfcaverns:plump_helmet_spawn", { {-0.0625 + displace_x, -0.5, -0.125 + displace_z, 0.125 + displace_x, -0.375, 0.0625 + displace_z}, } }, + on_place = function(itemstack, placer, pointed_thing) return plump_helmet_on_place(itemstack, placer, pointed_thing, "dfcaverns:plump_helmet_spawn") end, + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, "dfcaverns:plump_helmet_spawn", elapsed) + end, }) minetest.register_node("dfcaverns:plump_helmet_1", { @@ -85,6 +94,7 @@ minetest.register_node("dfcaverns:plump_helmet_1", { }, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11, dfcaverns_cookable = 1, plump_helmet = 1}, _dfcaverns_next_stage = "dfcaverns:plump_helmet_2", + _dfcaverns_next_stage_time = plump_helmet_grow_time, drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", @@ -102,6 +112,10 @@ minetest.register_node("dfcaverns:plump_helmet_1", { end, on_use = minetest.item_eat(1), + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, "dfcaverns:plump_helmet_1", elapsed) + end, }) @@ -114,6 +128,7 @@ minetest.register_node("dfcaverns:plump_helmet_2", { }, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11, dfcaverns_cookable = 1, plump_helmet = 1}, _dfcaverns_next_stage = "dfcaverns:plump_helmet_3", + _dfcaverns_next_stage_time = plump_helmet_grow_time, drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", @@ -144,6 +159,10 @@ minetest.register_node("dfcaverns:plump_helmet_2", { end, on_use = minetest.item_eat(2), + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, "dfcaverns:plump_helmet_2", elapsed) + end, }) minetest.register_node("dfcaverns:plump_helmet_3", { @@ -155,6 +174,7 @@ minetest.register_node("dfcaverns:plump_helmet_3", { }, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11, dfcaverns_cookable = 1, plump_helmet = 1}, _dfcaverns_next_stage = "dfcaverns:plump_helmet_4", + _dfcaverns_next_stage_time = plump_helmet_grow_time, drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", @@ -184,6 +204,10 @@ minetest.register_node("dfcaverns:plump_helmet_3", { end, on_use = minetest.item_eat(3), + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, "dfcaverns:plump_helmet_3", elapsed) + end, }) minetest.register_node("dfcaverns:plump_helmet_4", { @@ -193,7 +217,7 @@ minetest.register_node("dfcaverns:plump_helmet_4", { "dfcaverns_plump_helmet_cap.png", "dfcaverns_plump_helmet_cap.png^[lowpart:40:dfcaverns_plump_helmet_stem.png", }, - groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11, dfcaverns_cookable = 1, plump_helmet = 1}, + groups = {snappy = 3, flammable = 2, plant = 1, attached_node = 1, light_sensitive_fungus = 11, dfcaverns_cookable = 1, plump_helmet = 1}, drawtype = "nodebox", paramtype = "light", paramtype2 = "facedir", @@ -234,10 +258,6 @@ minetest.register_node("dfcaverns:plump_helmet_4", { on_use = minetest.item_eat(4), }) -local plump_names = {"dfcaverns:plump_helmet_spawn", "dfcaverns:plump_helmet_1", "dfcaverns:plump_helmet_2", "dfcaverns:plump_helmet_3"} - -dfcaverns.register_grow_abm(plump_names, dfcaverns.config.plant_growth_timer * dfcaverns.config.plump_helmet_timer_multiplier, dfcaverns.config.plant_growth_chance) - minetest.register_craft({ type = "fuel", recipe = "dfcaverns:plump_helmet_spawn", diff --git a/plants/quarry_bush.lua b/plants/quarry_bush.lua index a12771a..99b7853 100644 --- a/plants/quarry_bush.lua +++ b/plants/quarry_bush.lua @@ -2,9 +2,10 @@ local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua") -local quarry_names = {} +local quarry_grow_time = dfcaverns.config.plant_growth_time * dfcaverns.config.quarry_bush_delay_multiplier / 5 local register_quarry_bush = function(number) + local name = "dfcaverns:quarry_bush_"..tostring(number) local def = { description = S("Quarry Bush"), drawtype = "plantlike", @@ -17,7 +18,11 @@ local register_quarry_bush = function(number) buildable_to = true, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11}, sounds = default.node_sound_leaves_defaults(), - + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, name, elapsed) + end, + drop = { max_items = 2, items = { @@ -38,21 +43,18 @@ local register_quarry_bush = function(number) } if number < 5 then + def._dfcaverns_next_stage_time = quarry_grow_time def._dfcaverns_next_stage = "dfcaverns:quarry_bush_"..tostring(number+1) - table.insert(quarry_names, "dfcaverns:quarry_bush_"..tostring(number)) end - minetest.register_node("dfcaverns:quarry_bush_"..tostring(number), def) + minetest.register_node(name, def) end for i = 1,5 do register_quarry_bush(i) end -dfcaverns.register_seed("quarry_bush_seed", S("Rock Nuts"), "dfcaverns_rock_nuts.png", "dfcaverns:quarry_bush_1") -table.insert(quarry_names, "dfcaverns:quarry_bush_seed") - -dfcaverns.register_grow_abm(quarry_names, dfcaverns.config.plant_growth_timer * dfcaverns.config.quarry_bush_timer_multiplier, dfcaverns.config.plant_growth_chance) +dfcaverns.register_seed("quarry_bush_seed", S("Rock Nuts"), "dfcaverns_rock_nuts.png", "dfcaverns:quarry_bush_1", quarry_grow_time) minetest.register_craftitem("dfcaverns:quarry_bush_leaves", { description = S("Quarry Bush Leaves"), diff --git a/plants/sweet_pod.lua b/plants/sweet_pod.lua index e576c2e..e6b0f46 100644 --- a/plants/sweet_pod.lua +++ b/plants/sweet_pod.lua @@ -2,9 +2,10 @@ local MP = minetest.get_modpath(minetest.get_current_modname()) local S, NS = dofile(MP.."/intllib.lua") -local sweet_names = {} +local sweet_pod_grow_time = dfcaverns.config.plant_growth_time * dfcaverns.config.sweet_pod_delay_multiplier / 6 local register_sweet_pod = function(number) + local name = "dfcaverns:sweet_pod_"..tostring(number) local def = { description = S("Sweet Pod"), drawtype = "plantlike", @@ -15,6 +16,10 @@ local register_sweet_pod = function(number) buildable_to = true, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11}, sounds = default.node_sound_leaves_defaults(), + + on_timer = function(pos, elapsed) + dfcaverns.grow_underground_plant(pos, name, elapsed) + end, drop = { max_items = 2, @@ -37,20 +42,17 @@ local register_sweet_pod = function(number) if number < 6 then def._dfcaverns_next_stage = "dfcaverns:sweet_pod_"..tostring(number+1) - table.insert(sweet_names, "dfcaverns:sweet_pod_"..tostring(number)) + def._dfcaverns_next_stage_time = sweet_pod_grow_time end - minetest.register_node("dfcaverns:sweet_pod_"..tostring(number), def) + minetest.register_node(name, def) end for i = 1,6 do register_sweet_pod(i) end -dfcaverns.register_seed("sweet_pod_seed", S("Sweet Pod Spores"), "dfcaverns_sweet_pod_seed.png", "dfcaverns:sweet_pod_1") -table.insert(sweet_names, "dfcaverns:sweet_pod_seed") - -dfcaverns.register_grow_abm(sweet_names, dfcaverns.config.plant_growth_timer * dfcaverns.config.sweet_pod_timer_multiplier, dfcaverns.config.plant_growth_chance) +dfcaverns.register_seed("sweet_pod_seed", S("Sweet Pod Spores"), "dfcaverns_sweet_pod_seed.png", "dfcaverns:sweet_pod_1", sweet_pod_grow_time) minetest.register_craftitem("dfcaverns:sweet_pods", { description = S("Sweet Pods"), diff --git a/settingtypes.txt b/settingtypes.txt index 98521f9..fa113f6 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -13,13 +13,12 @@ dfcaverns_blood_thorn_growth_chance (blood_thorn growth ABM chance) int 83 [Plant growth] dfcaverns_plant_growth_timer (Base plant growth timer interval) int 100 -dfcaverns_plant_growth_chance (Base plant growth chance) int 4 -dfcaverns_cave_wheat_timer_multiplier (cave_wheat growth delay multiplier) float 1 -dfcaverns_dimple_cup_timer_multiplier (dimple_cup growth delay multiplier) float 3 -dfcaverns_pig_tail_timer_multiplier (pig_tail growth delay multiplier) float 1 -dfcaverns_plump_helmet_timer_multiplier (plump_helmet growth delay multiplier) float 3 -dfcaverns_quarry_bush_timer_multiplier (quarry_bush growth delay multiplier) float 2 -dfcaverns_sweet_pod_timer_multiplier (sweet_pod growth delay multiplier) float 2 +dfcaverns_cave_wheat_delay_multiplier (cave_wheat growth delay multiplier) float 1 +dfcaverns_dimple_cup_delay_multiplier (dimple_cup growth delay multiplier) float 3 +dfcaverns_pig_tail_delay_multiplier (pig_tail growth delay multiplier) float 1 +dfcaverns_plump_helmet_delay_multiplier (plump_helmet growth delay multiplier) float 3 +dfcaverns_quarry_bush_delay_multiplier (quarry_bush growth delay multiplier) float 2 +dfcaverns_sweet_pod_delay_multiplier (sweet_pod growth delay multiplier) float 2 dfcaverns_light_kills_fungus (Light kills fungus) bool true [Cavern dimensions]