diff --git a/plants_lib/init.lua b/plants_lib/init.lua index 1197039..8b0824b 100644 --- a/plants_lib/init.lua +++ b/plants_lib/init.lua @@ -24,6 +24,13 @@ end local DEBUG = false --... except if you want to spam the console with debugging info :-) +function plantslib:dbg(msg) + if DEBUG then + print("[Plantlife] "..msg) + minetest.log("verbose", "[Plantlife] "..msg) + end +end + plantslib.plantlife_seed_diff = 329 -- needs to be global so other mods can see it local perlin_octaves = 3 @@ -40,6 +47,16 @@ local humidity_octaves = 3 local humidity_persistence = 0.5 local humidity_scale = 250 +local time_scale = 1 +local time_speed = tonumber(minetest.setting_get("time_speed")) + +if time_speed and time_speed > 0 then + time_scale = 72 / time_speed +end + +plantslib:dbg("time_speed = "..dump(time_speed)) +plantslib:dbg("time_scale = 72 / time_speed = "..dump(time_scale)) + --PerlinNoise(seed, octaves, persistence, scale) plantslib.perlin_temperature = PerlinNoise(temperature_seeddiff, temperature_octaves, temperature_persistence, temperature_scale) @@ -68,13 +85,6 @@ function plantslib:clone_node(name) return node2 end -function plantslib:dbg(msg) - if DEBUG then - print("[Plantlife] "..msg) - minetest.log("verbose", "[Plantlife] "..msg) - end -end - function plantslib:set_defaults(biome) biome.seed_diff = biome.seed_diff or 0 biome.min_elevation = biome.min_elevation or -31000 @@ -232,6 +242,12 @@ function plantslib:spawn_on_surfaces(sd,sp,sr,sc,ss,sa) biome = sd end + if biome.spawn_delay*time_scale >= 1 then + biome.interval = biome.spawn_delay*time_scale + else + biome.interval = 1 + end + plantslib:set_defaults(biome) biome.spawn_plants_count = table.getn(biome.spawn_plants) @@ -241,7 +257,7 @@ function plantslib:spawn_on_surfaces(sd,sp,sr,sc,ss,sa) minetest.register_abm({ nodenames = biome.spawn_surfaces, - interval = biome.spawn_delay, + interval = biome.interval, chance = biome.spawn_chance, neighbors = biome.neighbors, action = function(pos, node, active_object_count, active_object_count_wider) @@ -333,9 +349,15 @@ function plantslib:grow_plants(opts) plantslib:dbg("Registered growing ABM:") plantslib:dbg(dump(options)) + if options.grow_delay*time_scale >= 1 then + options.interval = options.grow_delay*time_scale + else + options.interval = 1 + end + minetest.register_abm({ nodenames = { options.grow_plant }, - interval = options.grow_delay, + interval = options.interval, chance = options.grow_chance, action = function(pos, node, active_object_count, active_object_count_wider) local p_top = {x=pos.x, y=pos.y+1, z=pos.z}