From 87c065153a5fffb506832b7798ece90e477008f4 Mon Sep 17 00:00:00 2001 From: Duane Date: Mon, 6 Jun 2016 19:54:42 -0500 Subject: [PATCH] Add riverbeds to biomes and start hell levels. --- deco.lua | 2 ++ deco_caves.lua | 31 ++++++++++++++++++++++- mapgen.lua | 68 ++++++++++++++++++++++++++++++++++++++++++++------ 3 files changed, 93 insertions(+), 8 deletions(-) diff --git a/deco.lua b/deco.lua index 3e2e614..e6bab9d 100644 --- a/deco.lua +++ b/deco.lua @@ -90,6 +90,8 @@ minetest.register_biome({ node_filler = "default:dirt", depth_filler = 1, node_stone = "default:desert_stone", + node_riverbed = "default:sand", + depth_riverbed = 2, --node_water_top = "", --depth_water_top = , --node_water = "", diff --git a/deco_caves.lua b/deco_caves.lua index 604aad5..461f14d 100644 --- a/deco_caves.lua +++ b/deco_caves.lua @@ -89,8 +89,24 @@ minetest.register_node("fun_caves:glowing_fungus", { groups = {dig_immediate = 3}, }) +-- Iron, hot +newnode = fun_caves.clone_node("default:steelblock") +newnode.description = "Hot Iron Block" +newnode.tiles = {"default_steel_block.png^[colorize:#FF3000:150"} +newnode.groups.surface_hot=3 +newnode.light_source = 3 +minetest.register_node("fun_caves:hot_iron", newnode) + +-- Brass, hot +newnode = fun_caves.clone_node("default:steelblock") +newnode.description = "Hot Brass Block" +newnode.tiles = {"default_steel_block.png^[colorize:#FFBF00:150"} +newnode.groups.surface_hot=3 +newnode.light_source = 2 +minetest.register_node("fun_caves:hot_brass", newnode) + -- moon glass (glows) -local newnode = fun_caves.clone_node("default:glass") +newnode = fun_caves.clone_node("default:glass") newnode.light_source = default.LIGHT_MAX minetest.register_node("fun_caves:moon_glass", newnode) @@ -313,6 +329,19 @@ newnode.sounds = default.node_sound_dirt_defaults({ }) minetest.register_node("fun_caves:stone_with_algae", newnode) +-- stone, hot +minetest.register_node("fun_caves:hot_stone", { + description = "Hot Stone", + tiles = {"default_desert_stone.png^[colorize:#FF0000:150"}, + is_ground_content = true, + groups = {crumbly=2, surface_hot=3}, + light_source = fun_caves.light_max - 5, + damage_per_second = 1, + sounds = default.node_sound_stone_defaults({ + footstep = {name="default_stone_footstep", gain=0.25}, + }), +}) + -- stone with lichen newnode = fun_caves.clone_node("default:stone") newnode.description = "Cave Stone With Lichen" diff --git a/mapgen.lua b/mapgen.lua index 7f6aeef..6c5ee3c 100644 --- a/mapgen.lua +++ b/mapgen.lua @@ -191,9 +191,17 @@ local function generate(p_minp, p_maxp, seed) math.randomseed(minetest.get_perlin(seed_noise):get2d({x=minp.x, y=minp.z})) local write = false - local underzone - if minp.y % 4960 < 240 and maxp.y % 4960 > 0 then - underzone = true + local underzone, dis_map = nil, {} + if minp.y < -4000 and minp.y % 4960 < 160 and maxp.y % 4960 > 0 then + underzone = floor(minp.y / -4960 + 0.5) + if underzone == 3 then + for i = 0, 10, 2 do + dis_map[i] = {} + for j = 0, 10, 2 do + dis_map[i][j] = rand(4) + end + end + end end if not underzone and fun_caves.is_fortress(minp, csize) then @@ -327,10 +335,31 @@ local function generate(p_minp, p_maxp, seed) end for y = minp.y, maxp.y do - if column == 1 and data[ivm] ~= node['air'] and y % 4960 < cave_3[index] + 160 and y % 4960 > cave_3[index] + 80 then + -- Dis + if underzone == 3 then + if (x - minp.x) < 8 and (z - minp.z) < 8 then + data[ivm] = node["default:steelblock"] + elseif data[ivm] ~= node['air'] and y % 4960 < 160 and y % 4960 > 80 then + data[ivm] = node["air"] + end + write = true + -- Caina + elseif column == 2 and underzone == 1 and (data[ivm] == node['default:stone'] or data[ivm] == node['default:desert_stone']) then + if rand(70) == 1 then + data[ivm] = node["fun_caves:thin_ice"] + else + data[ivm] = node["default:ice"] + end + write = true + -- Phlegethos + elseif column == 2 and (data[ivm] == node['default:stone'] or data[ivm] == node['default:desert_stone']) and rand(70) == 1 then + data[ivm] = node["fun_caves:hot_stone"] + write = true + -- Dis + elseif column == 1 and underzone ~= 3 and data[ivm] ~= node['air'] and y % 4960 < cave_3[index] + 160 and y % 4960 > cave_3[index] + 80 then data[ivm] = node["air"] write = true - elseif column < 2 and data[ivm] ~= node['air'] and y < height - cave_3[index] and cave_1[index3d] * cave_2[index3d] > cave_width then + elseif column < 2 and underzone ~= 3 and data[ivm] ~= node['air'] and y < height - cave_3[index] and cave_1[index3d] * cave_2[index3d] > cave_width then data[ivm] = node["air"] write = true @@ -386,7 +415,18 @@ local function generate(p_minp, p_maxp, seed) ------------------- --biome_val = -0.75 ------------------- - if biome_val < -0.65 then + if underzone == 1 then + stone_type = node["default:ice"] + stone_depth = 2 + elseif underzone == 3 then + stone_type = node["fun_caves:hot_brass"] + stone_depth = 1 + elseif underzone and y % 4960 <= 145 then + stone_type = node["fun_caves:hot_cobble"] + elseif underzone and y % 4960 > 145 then + stone_type = node["fun_caves:black_sand"] + stone_depth = 2 + elseif biome_val < -0.65 then stone_type = node["default:ice"] stone_depth = 2 elseif biome_val < -0.6 then @@ -487,6 +527,20 @@ local function generate(p_minp, p_maxp, seed) end end + -- Dis + if underzone == 3 and data[ivm] == node['air'] and floor((x - minp.x) / 8) % 2 == 0 and floor((z - minp.z) / 8) % 2 == 0 and y % 4960 < 82 + dis_map[floor((x - minp.x) / 8)][floor((z - minp.z) / 8)] * 4 and y % 4960 > 80 then + local dx = (x - minp.x) % 16 + local dy = y % 4960 - 80 + local dz = (z - minp.z) % 16 + if ((dx == 0 or dx == 7) and (dz % 3 ~= 2 or dy % 4 == 0)) or ((dz == 0 or dz == 7) and (dx % 3 ~= 2 or dy % 4 == 0)) then + data[ivm] = node["fun_caves:hot_iron"] + elseif dy %4 == 0 then + data[ivm] = node["fun_caves:hot_brass"] + end + write = true + break + end + if data[ivm] == node["air"] and y < maxp.y then -- hanging down if node_above == node["default:stone"] and rand(12) == 1 then @@ -700,7 +754,7 @@ local function generate(p_minp, p_maxp, seed) if write then vm:set_data(data) --vm:set_param2_data(p2data) - if underzone or fun_caves.DEBUG then + if fun_caves.DEBUG then vm:set_lighting({day = 10, night = 10}) else -- set_lighting causes shadows