Skip to content

Commit

Permalink
Weather mod: Tune cloud density variation
Browse files Browse the repository at this point in the history
Previously, cloud density was too low at medium humidity.
Tune cloud density variation to match the default/classic value at
humidity midvalue 50.
Tune the lower limit of cloud density that occurs at extreme low
humidity.
Increase minimum cloud thickness to 2 nodes.
Add comments.
  • Loading branch information
paramat committed Apr 6, 2020
1 parent 4243d28 commit 720b24e
Showing 1 changed file with 14 additions and 6 deletions.
20 changes: 14 additions & 6 deletions mods/weather/init.lua
Expand Up @@ -82,18 +82,26 @@ local function update_clouds()
nobj_speedx = nobj_speedx or minetest.get_perlin(np_speedx)
nobj_speedz = nobj_speedz or minetest.get_perlin(np_speedz)

local n_density = nobj_density:get_2d({x = time, y = 0})
local n_thickness = nobj_thickness:get_2d({x = time, y = 0})
local n_speedx = nobj_speedx:get_2d({x = time, y = 0})
local n_speedz = nobj_speedz:get_2d({x = time, y = 0})
local n_density = nobj_density:get_2d({x = time, y = 0}) -- 0 to 1
local n_thickness = nobj_thickness:get_2d({x = time, y = 0}) -- 0 to 1
local n_speedx = nobj_speedx:get_2d({x = time, y = 0}) -- -1 to 1
local n_speedz = nobj_speedz:get_2d({x = time, y = 0}) -- -1 to 1

for _, player in ipairs(minetest.get_connected_players()) do
local humid = minetest.get_humidity(player:get_pos())
-- Default and classic density value is 0.4, make this happen
-- at humidity midvalue 50 when n_density is at midvalue 0.5.
-- density_max = 0.25 at humid = 0.
-- density_max = 0.8 at humid = 50.
-- density_max = 1.35 at humid = 100.
local density_max = 0.8 + ((humid - 50) / 50) * 0.55
player:set_clouds({
density = rangelim(humid / 100, 0.25, 1.0) * n_density,
-- Range limit density_max to always have occasional
-- small scattered clouds at extreme low humidity.
density = rangelim(density_max, 0.2, 1.0) * n_density,
thickness = math.max(math.floor(
rangelim(32 * humid / 100, 8, 32) * n_thickness
), 1),
), 2),
speed = {x = n_speedx * 4, z = n_speedz * 4},
})
end
Expand Down

0 comments on commit 720b24e

Please sign in to comment.