diff --git a/_config.txt b/_config.txt index e1c87ac..0db26c8 100644 --- a/_config.txt +++ b/_config.txt @@ -7,21 +7,74 @@ ------------------------------------------------------------------------------ -- Chunk sizes for ore generation (bigger = ore deposits are more scattered around) -moreores.tin_chunk_size = 7 -moreores.silver_chunk_size = 11 -moreores.mithril_chunk_size = 11 +-- Tin +moreores.tin_chunk_size_high = 10 +moreores.tin_chunk_size = 13 +moreores.tin_chunk_size_deep = 10 + +-- Silver +moreores.silver_chunk_size_high = 11 +moreores.silver_chunk_size = 13 +moreores.silver_chunk_size_deep = 11 + +-- Mithril +moreores.mithril_chunk_size_high = 19 +moreores.mithril_chunk_size = 21 +moreores.mithril_chunk_size_deep = 19 -- Amount of ore per chunk (higher = bigger ore deposits) -moreores.tin_ore_per_chunk = 3 -moreores.silver_ore_per_chunk = 4 -moreores.mithril_ore_per_chunk = 1 +-- Tin +moreores.tin_ore_per_chunk_high = 5 +moreores.tin_ore_per_chunk = 4 +moreores.tin_ore_per_chunk_deep = 5 --- Minimal depths of ore generation (Y coordinate, 0 being sea level by default) -moreores.tin_min_depth = -31000 -moreores.silver_min_depth = -31000 -moreores.mithril_min_depth = -31000 +-- Silver +moreores.silver_ore_per_chunk_high = 4 +moreores.silver_ore_per_chunk = 2 +moreores.silver_ore_per_chunk_deep = 4 --- Maximal depths of ore generation (Y coordinate, 0 being sea level by default) -moreores.tin_max_depth = 8 -moreores.silver_max_depth = -128 -moreores.mithril_max_depth = -2048 +-- Mithril +moreores.mithril_ore_per_chunk_high = 3 +moreores.mithril_ore_per_chunk = 2 +moreores.mithril_ore_per_chunk_deep = 4 + +-- Clust sizes for ore generation (bigger = ores in ore deposits are less bound together) +-- Tin +moreores.tin_clust_size_high = 3 +moreores.tin_clust_size = 3 +moreores.tin_clust_size_deep = 3 + +-- Silver +moreores.silver_clust_size_high = 3 +moreores.silver_clust_size = 3 +moreores.silver_clust_size_deep = 3 + +-- Mithril +moreores.mithril_clust_size_high = 3 +moreores.mithril_clust_size = 3 +moreores.mithril_clust_size_deep = 3 + +-- Maximal and minimal depths of ore generation (Y coordinate, 0 being sea level by default) +-- Tin +moreores.tin_max_depth_high = 31000 +moreores.tin_min_depth_high = 1025 +moreores.tin_max_depth = -64 -- For v6 mapgen, -32 fits better +moreores.tin_min_depth = -127 +moreores.tin_max_depth_deep = -128 +moreores.tin_min_depth_deep = -31000 + +-- Silver +moreores.silver_max_depth_high = 31000 +moreores.silver_min_depth_high = 1025 +moreores.silver_max_depth = -64 -- For v6 mapgen, -32 fits better +moreores.silver_min_depth = -127 -- For v6 mapgen, -63 fits better +moreores.silver_max_depth_deep = -128 -- For v6 mapgen, -64 fits better +moreores.silver_min_depth_deep = -31000 + +-- Mithril +moreores.mithril_max_depth_high = 31000 +moreores.mithril_min_depth_high = 2049 +moreores.mithril_max_depth = -2048 -- For v6 mapgen, -256 fits better +moreores.mithril_min_depth = -4095 -- For v6 mapgen, -511 fits better +moreores.mithril_max_depth_deep = -4096 -- For v6 mapgen, -512 fits better +moreores.mithril_min_depth_deep = -31000 diff --git a/init.lua b/init.lua index 69f5397..c6b42f3 100644 --- a/init.lua +++ b/init.lua @@ -83,28 +83,25 @@ local function add_ore(modname, description, mineral_name, oredef) local ingot = item_base .. "_ingot" local lump_item = item_base .. "_lump" - if oredef.makes.ore then - minetest.register_node(modname .. ":mineral_" .. mineral_name, { - description = S("@1 Ore", S(description)), - tiles = {"default_stone.png^" .. modname .. "_mineral_" .. mineral_name .. ".png"}, - groups = {cracky = 2}, - sounds = default_stone_sounds, - drop = lump_item, - }) - + if oredef.mineral then + oredef.mineral.description = oredef.mineral.description or S("@1 Ore", S(description)) + oredef.mineral.tiles = oredef.mineral.tiles or {"default_stone.png^" .. modname .. "_mineral_" .. mineral_name .. ".png"} + oredef.mineral.groups = oredef.mineral.groups or {cracky = 2} + oredef.mineral.sounds = oredef.mineral.sounds or default_stone_sounds + oredef.mineral.drop = oredef.mineral.drop or lump_item + minetest.register_node(modname .. ":mineral_" .. mineral_name, oredef.mineral) if use_frame then frame.register(modname .. ":mineral_" .. mineral_name) end end - if oredef.makes.block then + if oredef.block then local block_item = item_base .. "_block" - minetest.register_node(block_item, { - description = S("@1 Block", S(description)), - tiles = {img_base .. "_block.png"}, - groups = {snappy = 1, bendy = 2, cracky = 1, melty = 2, level = 2}, - sounds = default_metal_sounds, - }) + oredef.block.description = oredef.block.description or S("@1 Block", S(description)) + oredef.block.tiles = oredef.block.tiles or {img_base .. "_block.png"} + oredef.block.groups = oredef.block.groups or {cracky = 1, level = 2} + oredef.block.sounds = oredef.block.sounds or default_metal_sounds + minetest.register_node(block_item, oredef.block) minetest.register_alias(mineral_name.."_block", block_item) if oredef.makes.ingot then minetest.register_craft( { @@ -134,6 +131,7 @@ local function add_ore(modname, description, mineral_name, oredef) type = "cooking", output = ingot, recipe = lump_item, + cooktime = oredef.craftingot.cooktime, }) end if use_frame then @@ -166,11 +164,21 @@ local function add_ore(modname, description, mineral_name, oredef) }) end + oredef.oredef_high.ore_type = "scatter" + oredef.oredef_high.ore = modname .. ":mineral_" .. mineral_name + oredef.oredef_high.wherein = "default:stone" + oredef.oredef.ore_type = "scatter" oredef.oredef.ore = modname .. ":mineral_" .. mineral_name oredef.oredef.wherein = "default:stone" + oredef.oredef_deep.ore_type = "scatter" + oredef.oredef_deep.ore = modname .. ":mineral_" .. mineral_name + oredef.oredef_deep.wherein = "default:stone" + + minetest.register_ore(oredef.oredef_high) minetest.register_ore(oredef.oredef) + minetest.register_ore(oredef.oredef_deep) for tool_name, tooldef in pairs(oredef.tools) do local tdef = { @@ -178,32 +186,26 @@ local function add_ore(modname, description, mineral_name, oredef) inventory_image = toolimg_base .. tool_name .. ".png", tool_capabilities = { max_drop_level = 3, - groupcaps = tooldef, + groupcaps = tooldef.groupcaps, + damage_groups = tooldef.damage_groups, + full_punch_interval = oredef.full_punch_interval, }, sound = {breaks = "default_tool_breaks"}, } if tool_name == "sword" then - tdef.tool_capabilities.full_punch_interval = oredef.full_punch_interval - tdef.tool_capabilities.damage_groups = oredef.tools.sword.damage_groups tdef.description = S("@1 Sword", S(description)) end if tool_name == "pick" then - tdef.tool_capabilities.full_punch_interval = oredef.full_punch_interval - tdef.tool_capabilities.damage_groups = oredef.tools.pick.damage_groups tdef.description = S("@1 Pickaxe", S(description)) end if tool_name == "axe" then - tdef.tool_capabilities.full_punch_interval = oredef.full_punch_interval - tdef.tool_capabilities.damage_groups = oredef.tools.axe.damage_groups tdef.description = S("@1 Axe", S(description)) end if tool_name == "shovel" then - tdef.full_punch_interval = oredef.full_punch_interval - tdef.tool_capabilities.damage_groups = oredef.tools.shovel.damage_groups tdef.description = S("@1 Shovel", S(description)) tdef.wield_image = toolimg_base .. tool_name .. ".png^[transformR90" end @@ -211,7 +213,7 @@ local function add_ore(modname, description, mineral_name, oredef) local fulltool_name = tool_base .. tool_name .. tool_post if tool_name == "hoe" and minetest.get_modpath("farming") then - tdef.max_uses = tooldef.uses + tdef.max_uses = tooldef.max_uses tdef.description = S("@1 Hoe", S(description)) tdef.material = ingot farming.register_hoe(fulltool_name, tdef) @@ -250,77 +252,125 @@ end local oredefs = { silver = { description = "Silver", - makes = {ore = true, block = true, lump = true, ingot = true, chest = true}, + makes = {lump = true, ingot = true, chest = true}, + oredef_high= { + clust_scarcity = moreores.silver_chunk_size_high ^ 3, + clust_num_ores = moreores.silver_ore_per_chunk_high, + clust_size = moreores.silver_clust_size_high, + y_min = moreores.silver_min_depth_high, + y_max = moreores.silver_max_depth_high, + }, oredef = { clust_scarcity = moreores.silver_chunk_size ^ 3, clust_num_ores = moreores.silver_ore_per_chunk, - clust_size = moreores.silver_chunk_size, + clust_size = moreores.silver_clust_size, y_min = moreores.silver_min_depth, y_max = moreores.silver_max_depth, }, + oredef_deep = { + clust_scarcity = moreores.silver_chunk_size_deep ^ 3, + clust_num_ores = moreores.silver_ore_per_chunk_deep, + clust_size = moreores.silver_clust_size_deep, + y_min = moreores.silver_min_depth_deep, + y_max = moreores.silver_max_depth_deep, + }, + mineral = {groups = {cracky = 2}}, + block = {groups = {cracky = 1, level = 2}}, + craftingot = {cooktime = 2}, tools = { pick = { - cracky = {times = {[1] = 2.60, [2] = 1.00, [3] = 0.60}, uses = 100, maxlevel = 1}, - damage_groups = {fleshy = 4}, + groupcaps = { + cracky = {times = {[1] = 2.60, [2] = 1.00, [3] = 0.60}, uses = 100, maxlevel = 1}, + }, + damage_groups = {fleshy = 4}, }, hoe = { - uses = 300, + max_uses = 300, }, shovel = { - crumbly = {times = {[1] = 1.10, [2] = 0.40, [3] = 0.25}, uses = 100, maxlevel = 1}, - damage_groups = {fleshy = 3}, + groupcaps = { + crumbly = {times = {[1] = 1.10, [2] = 0.40, [3] = 0.25}, uses = 100, maxlevel = 1}, + }, + damage_groups = {fleshy = 3}, }, axe = { + groupcaps = { choppy = {times = {[1] = 2.50, [2] = 0.80, [3] = 0.50}, uses = 100, maxlevel = 1}, fleshy = {times = {[2] = 1.10, [3] = 0.60}, uses = 100, maxlevel = 1}, - damage_groups = {fleshy = 5}, + }, + damage_groups = {fleshy = 5}, }, sword = { + groupcaps = { fleshy = {times = {[2] = 0.70, [3] = 0.30}, uses = 100, maxlevel = 1}, snappy = {times = {[1] = 1.70, [2] = 0.70, [3] = 0.30}, uses = 100, maxlevel = 1}, choppy = {times = {[3] = 0.80}, uses = 100, maxlevel = 0}, - damage_groups = {fleshy = 6}, + }, + damage_groups = {fleshy = 6}, }, }, full_punch_interval = 1.0, - --damage_groups = {fleshy = 6}, }, mithril = { description = "Mithril", - makes = {ore = true, block = true, lump = true, ingot = true, chest = false}, + makes = {lump = true, ingot = true, chest = false}, + oredef_high = { + clust_scarcity = moreores.mithril_chunk_size_high ^ 3, + clust_num_ores = moreores.mithril_ore_per_chunk_high, + clust_size = moreores.mithril_clust_size_high, + y_min = moreores.mithril_min_depth_high, + y_max = moreores.mithril_max_depth_high, + }, oredef = { clust_scarcity = moreores.mithril_chunk_size ^ 3, clust_num_ores = moreores.mithril_ore_per_chunk, - clust_size = moreores.mithril_chunk_size, + clust_size = moreores.mithril_clust_size, y_min = moreores.mithril_min_depth, y_max = moreores.mithril_max_depth, }, + oredef_deep = { + clust_scarcity = moreores.mithril_chunk_size_deep ^ 3, + clust_num_ores = moreores.mithril_ore_per_chunk_deep, + clust_size = moreores.mithril_clust_size_deep, + y_min = moreores.mithril_min_depth_deep, + y_max = moreores.mithril_max_depth_deep, + }, + mineral = {groups = {cracky = 1}}, + block = {groups = {cracky = 1, level = 5}, on_blast = function() end}, + craftingot = {cooktime = 10}, tools = { pick = { - cracky = {times = {[1] = 2, [2] = 1, [3] = 0.50}, uses = 300, maxlevel = 3}, - damage_groups = {fleshy = 6}, + groupcaps = { + cracky = {times = {[1] = 3.00, [2] = 1.40, [3] = 0.65}, uses = 34, maxlevel = 5}, + }, + damage_groups = {fleshy = 6}, }, hoe = { - uses = 1500, + max_uses = 1500, }, shovel = { - crumbly = {times = {[1] = 0.70, [2] = 0.35, [3] = 0.20}, uses = 200, maxlevel = 3}, - damage_groups = {fleshy = 5}, + groupcaps = { + crumbly = {times = {[1] = 1.65, [2] = 0.70, [3] = 0.40}, uses = 34, maxlevel = 5}, + }, + damage_groups = {fleshy = 5}, }, axe = { - choppy = {times = {[1] = 1.75, [2] = 0.45, [3] = 0.45}, uses = 200, maxlevel = 3}, - fleshy = {times = {[2] = 0.95, [3] = 0.30}, uses = 200, maxlevel = 2}, - damage_groups = {fleshy = 8}, + groupcaps = { + choppy = {times = {[1] = 3.20, [2] = 1.20, [3] = 0.65}, uses = 34, maxlevel = 5}, + fleshy = {times = {[2] = 0.95, [3] = 0.30}, uses = 200, maxlevel = 2}, + }, + damage_groups = {fleshy = 8}, }, sword = { - fleshy = {times = {[2] = 0.65, [3] = 0.25}, uses = 200, maxlevel = 2}, - snappy = {times = {[1] = 1.70, [2] = 0.70, [3] = 0.25}, uses = 200, maxlevel = 3}, - choppy = {times = {[3] = 0.65}, uses = 200, maxlevel = 0}, - damage_groups = {fleshy = 10}, + groupcaps = { + fleshy = {times = {[2] = 0.65, [3] = 0.25}, uses = 67, maxlevel = 3}, + snappy = {times = {[1] = 2.80, [2] = 1.20, [3] = 0.40}, uses = 34, maxlevel = 5}, + choppy = {times = {[3] = 0.65}, uses = 200, maxlevel = 0}, + }, + damage_groups = {fleshy = 10}, }, }, full_punch_interval = 0.45, - --damage_groups = {fleshy = 9}, } } @@ -340,14 +390,31 @@ if default_tin then else oredefs.tin = { description = "Tin", - makes = {ore = true, block = true, lump = true, ingot = true, chest = false}, + makes = {lump = true, ingot = true, chest = false}, + oredef_high = { + clust_scarcity = moreores.tin_chunk_size_high ^ 3, + clust_num_ores = moreores.tin_ore_per_chunk_high, + clust_size = moreores.tin_clust_size_high, + y_min = moreores.tin_min_depth_high, + y_max = moreores.tin_max_depth_high, + }, oredef = { clust_scarcity = moreores.tin_chunk_size ^ 3, clust_num_ores = moreores.tin_ore_per_chunk, - clust_size = moreores.tin_chunk_size, + clust_size = moreores.tin_clust_size, y_min = moreores.tin_min_depth, y_max = moreores.tin_max_depth, }, + oredef_deep = { + clust_scarcity = moreores.tin_chunk_size_deep ^ 3, + clust_num_ores = moreores.tin_ore_per_chunk_deep, + clust_size = moreores.tin_clust_size_deep, + y_min = moreores.tin_min_depth_deep, + y_max = moreores.tin_max_depth_deep, + }, + mineral = {groups = {cracky = 2}}, + block = {groups = {cracky = 1, level = 2}}, + craftingot = {cooktime = 3}, tools = {}, }