mirror of
https://github.com/FaceDeer/dfcaverns.git
synced 2024-11-10 04:20:37 +01:00
203 lines
6.3 KiB
Lua
203 lines
6.3 KiB
Lua
|
local c_water = minetest.get_content_id("default:water_source")
|
||
|
local c_air = minetest.get_content_id("air")
|
||
|
local c_stone = minetest.get_content_id("default:stone")
|
||
|
local c_cobble = minetest.get_content_id("default:cobble")
|
||
|
local c_dirt = minetest.get_content_id("default:dirt")
|
||
|
|
||
|
local c_dirt_moss = minetest.get_content_id("dfcaverns:dirt_with_cave_moss")
|
||
|
local c_cobble_fungus = minetest.get_content_id("dfcaverns:cobble_with_floor_fungus")
|
||
|
local c_dead_fungus = minetest.get_content_id("dfcaverns:dead_fungus") -- param2 = 0
|
||
|
|
||
|
--dfcaverns.spawn_fungiwood_vm(vi, area, data)
|
||
|
|
||
|
local level_1_tower_cap_floor = function(area, data, ai, vi, bi, param2_data)
|
||
|
subterrane:obsidian_floor_dam(area, data, ai, vi, bi)
|
||
|
if data[bi] ~= c_stone then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if math.random() < 0.25 then
|
||
|
data[bi] = c_dirt
|
||
|
else
|
||
|
data[bi] = c_dirt_moss
|
||
|
end
|
||
|
|
||
|
local drip_rand = subterrane:vertically_consistent_random(vi, area)
|
||
|
if math.random() < 0.1 then
|
||
|
dfcaverns.place_shrub(data, vi, param2_data)
|
||
|
elseif drip_rand < 0.1 then
|
||
|
--subterrane:stalagmite(bi, area, data, 6, 15, c_stone, c_stone, c_stone)
|
||
|
local param2 = drip_rand*1000000 - math.floor(drip_rand*1000000/4)*4
|
||
|
local height = math.floor(drip_rand/0.1 * 5)
|
||
|
subterrane:small_stalagmite(vi, area, data, param2_data, param2, height, true)
|
||
|
elseif math.random() < 0.005 then
|
||
|
dfcaverns.spawn_tower_cap_vm(bi, area, data)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local level_1_moist_ceiling = function(area, data, ai, vi, bi, param2_data)
|
||
|
subterrane:obsidian_ceiling_plug(area, data, ai, vi, bi)
|
||
|
if data[ai] ~= c_stone then
|
||
|
return
|
||
|
end
|
||
|
local drip_rand = subterrane:vertically_consistent_random(vi, area)
|
||
|
if drip_rand < 0.075 then
|
||
|
--subterrane:stalactite(ai, area, data, 6, 20, c_stone, c_stone, c_stone)
|
||
|
local param2 = drip_rand*1000000 - math.floor(drip_rand*1000000/4)*4
|
||
|
local height = math.floor(drip_rand/0.075 * 5)
|
||
|
subterrane:small_stalagmite(vi, area, data, param2_data, param2, -height, true)
|
||
|
elseif math.random() < 0.03 then
|
||
|
dfcaverns.glow_worm_ceiling(area, data, ai, vi, bi)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local level_1_dry_floor = function(area, data, ai, vi, bi, param2_data)
|
||
|
if data[bi] ~= c_stone then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if math.random() < 0.25 then
|
||
|
data[bi] = c_cobble_fungus
|
||
|
if math.random() < 0.1 then
|
||
|
data[vi] = c_dead_fungus
|
||
|
end
|
||
|
elseif math.random() < 0.5 then
|
||
|
data[bi] = c_cobble
|
||
|
end
|
||
|
local drip_rand = subterrane:vertically_consistent_random(vi, area)
|
||
|
|
||
|
if drip_rand < 0.05 then
|
||
|
--subterrane:stalagmite(bi, area, data, 6, 15, c_stone, c_stone, c_stone)
|
||
|
local param2 = drip_rand*1000000 - math.floor(drip_rand*1000000/4)*4
|
||
|
local height = math.floor(drip_rand/0.025 * 5)
|
||
|
subterrane:small_stalagmite(vi, area, data, param2_data, param2, height, false)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local level_1_dry_ceiling = function(area, data, ai, vi, bi, param2_data)
|
||
|
if data[ai] ~= c_stone then
|
||
|
return
|
||
|
end
|
||
|
local drip_rand = subterrane:vertically_consistent_random(vi, area)
|
||
|
if drip_rand < 0.075 then
|
||
|
--subterrane:stalactite(ai, area, data, 6, 20, c_stone, c_stone, c_stone)
|
||
|
local param2 = drip_rand*1000000 - math.floor(drip_rand*1000000/4)*4
|
||
|
local height = math.floor(drip_rand/0.05 * 5)
|
||
|
subterrane:small_stalagmite(vi, area, data, param2_data, param2, -height, false)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
local level_1_fungiwood_floor = function(area, data, ai, vi, bi, param2_data)
|
||
|
subterrane:obsidian_floor_dam(area, data, ai, vi, bi)
|
||
|
if data[bi] ~= c_stone then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
if math.random() < 0.25 then
|
||
|
data[bi] = c_dirt
|
||
|
else
|
||
|
data[bi] = c_dirt_moss
|
||
|
end
|
||
|
|
||
|
local drip_rand = subterrane:vertically_consistent_random(vi, area)
|
||
|
|
||
|
if math.random() < 0.1 then
|
||
|
dfcaverns.place_shrub(data, vi, param2_data)
|
||
|
elseif drip_rand < 0.1 then
|
||
|
--subterrane:stalagmite(bi, area, data, 6, 15, c_stone, c_stone, c_stone)
|
||
|
local param2 = drip_rand*1000000 - math.floor(drip_rand*1000000/4)*4
|
||
|
local height = math.floor(drip_rand/0.1 * 5)
|
||
|
subterrane:small_stalagmite(vi, area, data, param2_data, param2, height, true)
|
||
|
elseif math.random() < 0.005 then
|
||
|
dfcaverns.spawn_fungiwood_vm(bi, area, data)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
|
||
|
local level_1_cave_floor = function(area, data, ai, vi, bi, param2_data)
|
||
|
if dfcaverns.can_support_vegetation[data[bi]] then
|
||
|
data[bi] = c_dirt_moss
|
||
|
if math.random() < 0.25 then
|
||
|
if data[vi] == c_air then
|
||
|
dfcaverns.place_shrub(data, vi, param2_data)
|
||
|
end
|
||
|
end
|
||
|
return
|
||
|
end
|
||
|
if data[bi] ~= c_stone then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local drip_rand = subterrane:vertically_consistent_random(vi, area)
|
||
|
if drip_rand < 0.075 then
|
||
|
local param2 = drip_rand*1000000 - math.floor(drip_rand*1000000/4)*4
|
||
|
local height = math.floor(drip_rand/0.075 * 4)
|
||
|
subterrane:small_stalagmite(vi, area, data, param2_data, param2, height, true)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
local level_1_cave_ceiling = function(area, data, ai, vi, bi, param2_data)
|
||
|
if data[ai] ~= c_stone then
|
||
|
return
|
||
|
end
|
||
|
|
||
|
local drip_rand = subterrane:vertically_consistent_random(vi, area)
|
||
|
|
||
|
if drip_rand < 0.1 then
|
||
|
local param2 = drip_rand*1000000 - math.floor(drip_rand*1000000/4)*4
|
||
|
local height = math.floor(drip_rand/0.1 * 5)
|
||
|
subterrane:small_stalagmite(vi, area, data, param2_data, param2, -height, true)
|
||
|
end
|
||
|
end
|
||
|
|
||
|
-------------------------------------------------------------------------------------------
|
||
|
|
||
|
minetest.register_biome({
|
||
|
name = "dfcaverns_level1_flooded_biome",
|
||
|
y_min = -2000,
|
||
|
y_max = -300,
|
||
|
heat_point = -20,
|
||
|
humidity_point = 0,
|
||
|
_subterrane_fill_node = c_water,
|
||
|
_subterrane_cave_fill_node = c_water,
|
||
|
})
|
||
|
|
||
|
|
||
|
minetest.register_biome({
|
||
|
name = "dfcaverns_level1_tower_cap_biome",
|
||
|
y_min = -2000,
|
||
|
y_max = -300,
|
||
|
heat_point = 80,
|
||
|
humidity_point = 20,
|
||
|
_subterrane_ceiling_decor = level_1_moist_ceiling,
|
||
|
_subterrane_floor_decor = level_1_tower_cap_floor,
|
||
|
_subterrane_fill_node = c_air,
|
||
|
_subterrane_cave_floor_decor = level_1_cave_floor,
|
||
|
_subterrane_cave_ceiling_decor = level_1_cave_ceiling,
|
||
|
})
|
||
|
|
||
|
minetest.register_biome({
|
||
|
name = "dfcaverns_level1_fungiwood_biome",
|
||
|
y_min = -2000,
|
||
|
y_max = -300,
|
||
|
heat_point = 60,
|
||
|
humidity_point = 100,
|
||
|
_subterrane_ceiling_decor = level_1_moist_ceiling,
|
||
|
_subterrane_floor_decor = level_1_fungiwood_floor,
|
||
|
_subterrane_fill_node = c_air,
|
||
|
_subterrane_cave_floor_decor = level_1_cave_floor,
|
||
|
_subterrane_cave_ceiling_decor = level_1_cave_ceiling,
|
||
|
})
|
||
|
|
||
|
minetest.register_biome({
|
||
|
name = "dfcaverns_level1_dry_biome",
|
||
|
y_min = -2000,
|
||
|
y_max = -300,
|
||
|
heat_point = 20,
|
||
|
humidity_point = 140,
|
||
|
_subterrane_ceiling_decor = level_1_dry_ceiling,
|
||
|
_subterrane_floor_decor = level_1_dry_floor,
|
||
|
_subterrane_fill_node = c_air,
|
||
|
})
|