diff --git a/abms.lua b/abms.lua index 99bb43a..11d517c 100644 --- a/abms.lua +++ b/abms.lua @@ -186,8 +186,8 @@ end) -- Exploding fungal fruit minetest.register_abm({ nodenames = {"fun_caves:fungal_tree_fruit"}, - interval = 20 * fun_caves.time_factor, - chance = 15, + interval = 2 * fun_caves.time_factor, + chance = 150, catch_up = false, action = function(pos, node) fun_caves.soft_boom(pos) @@ -198,8 +198,8 @@ minetest.register_abm({ minetest.register_abm({ nodenames = {"fun_caves:fungal_tree_fruit"}, neighbors = {"fire:basic_flame"}, - interval = 10 * fun_caves.time_factor, - chance = 5, + interval = fun_caves.time_factor, + chance = 50, catch_up = false, action = function(pos, node) fun_caves.soft_boom(pos) @@ -211,8 +211,8 @@ minetest.register_abm({ -- since it only checks below the node. minetest.register_abm({ nodenames = {"fun_caves:giant_mushroom_cap", "fun_caves:huge_mushroom_cap"}, - interval = 5 * fun_caves.time_factor, - chance = 5, + interval = fun_caves.time_factor, + chance = 25, action = function(pos, node) -- Check for stem under the cap. local node_under = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z}) @@ -226,8 +226,8 @@ minetest.register_abm({ -- Destroy mushroom caps in the light. minetest.register_abm({ nodenames = {"fun_caves:giant_mushroom_cap", "fun_caves:huge_mushroom_cap"}, - interval = 15 * fun_caves.time_factor, - chance = 15, + interval = 2 * fun_caves.time_factor, + chance = 110, action = function(pos, node) if (minetest.get_node_light(pos, nil) or 99) >= fun_caves.light_max + 2 then minetest.set_node(pos, {name = "air"}) @@ -240,12 +240,40 @@ minetest.register_abm({ -- creation ------------------------------------------------------------ +minetest.register_abm({ + nodenames = { "fun_caves:tree", 'fun_caves:ironwood', 'fun_caves:diamondwood' }, + neighbors = {'air'}, + interval = 5 * fun_caves.time_factor, + chance = 900, + catch_up = false, + action = function(pos, node) + local new_pos = minetest.find_node_near(pos, 1, {'fun_caves:bark', 'fun_caves:leaves'}) + if new_pos then + return + end + + new_pos = minetest.find_node_near(pos, 1, "air") + if not new_pos then + return + end + + if math.random(50) == 1 then + minetest.set_node(new_pos, {name = "fun_caves:diamondwood"}) + elseif math.random(25) == 1 then + minetest.set_node(new_pos, {name = "fun_caves:ironwood"}) + else + minetest.set_node(new_pos, {name = "fun_caves:tree"}) + end + print('tree +1') + end +}) + -- vacuum sucks minetest.register_abm({ nodenames = {"fun_caves:vacuum"}, neighbors = {"air"}, interval = fun_caves.time_factor, - chance = 1, + chance = 10, action = function(pos, node) if pos.y <= 11168 or pos.y >= 15168 then return @@ -267,8 +295,8 @@ minetest.register_abm({ minetest.register_abm({ nodenames = fungal_tree_leaves, neighbors = {"air", "group:liquid"}, - interval = 5 * fun_caves.time_factor, - chance = 10, + interval = fun_caves.time_factor, + chance = 50, catch_up = false, action = function(pos, node) if (minetest.get_node_light(pos, nil) or 99) >= fun_caves.light_max + 2 then @@ -308,8 +336,8 @@ minetest.register_abm({ -- mushroom growth -- caps regenerate in time minetest.register_abm({ nodenames = {"fun_caves:giant_mushroom_stem"}, - interval = 15 * fun_caves.time_factor, - chance = 10, + interval = 2 * fun_caves.time_factor, + chance = 75, action = function(pos, node) local pos_up = {x=pos.x,y=pos.y+1,z=pos.z} local node_up = minetest.get_node_or_nil(pos_up) @@ -327,8 +355,8 @@ minetest.register_abm({ minetest.register_abm({ nodenames = {"default:dirt"}, neighbors = {"air"}, - interval = 10 * fun_caves.time_factor, - chance = 15, + interval = 2 * fun_caves.time_factor, + chance = 75, action = function(pos, node) if pos.y > 0 then return @@ -350,8 +378,8 @@ minetest.register_abm({ -- mushroom growth -- small into huge minetest.register_abm({ nodenames = mushrooms, - interval = 75 * fun_caves.time_factor, - chance = 25, + interval = 5 * fun_caves.time_factor, + chance = 375, action = function(pos, node) -- Clumsy, but it's the best way to limit them to caves. if pos.y > 0 then @@ -379,8 +407,8 @@ minetest.register_abm({ -- mushroom growth -- huge into giant minetest.register_abm({ nodenames = {"fun_caves:huge_mushroom_cap"}, - interval = 300 * fun_caves.time_factor, - chance = 30, + interval = 9 * fun_caves.time_factor, + chance = 1000, action = function(pos, node) local pos_up = {x=pos.x,y=pos.y+1,z=pos.z} local node_up = minetest.get_node_or_nil(pos_up) @@ -404,8 +432,8 @@ minetest.register_abm({ -- Spike spread and death minetest.register_abm({ nodenames = fun_caves.hot_spikes, - interval = 30 * fun_caves.time_factor, - chance = 30, + interval = 3 * fun_caves.time_factor, + chance = 300, action = function(pos, node) if not fun_caves.hot_spike then return @@ -448,9 +476,9 @@ minetest.register_abm({ minetest.register_abm({ nodenames = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, neighbors = {"air"}, - interval = 1000000 * fun_caves.time_factor, + interval = 10000 * fun_caves.time_factor, catch_up = false, - chance = 30000, + chance = 3000000, action = function(pos, node) local ps = {} local players = minetest.get_connected_players() @@ -478,8 +506,8 @@ minetest.register_abm({ -- Remove old craters. minetest.register_abm({ nodenames = {"fun_caves:meteorite_crater"}, - interval = 100 * fun_caves.time_factor, - chance = 10, + interval = 3 * fun_caves.time_factor, + chance = 330, action = function(pos, node) minetest.set_node(pos, {name="default:dirt"}) end diff --git a/goblin.lua b/goblin.lua index 1b1ac21..9361cb2 100644 --- a/goblin.lua +++ b/goblin.lua @@ -26,6 +26,7 @@ local function goblin_do(self) return end + local cold_natured = false local pos = self.object:getpos() pos.y = pos.y + 0.5 @@ -51,7 +52,8 @@ local function goblin_do(self) -- place a trap local trap = 'fun_caves:mossycobble_trap' if self.name == 'fun_caves:goblin_ice' then - trap = 'fun_caves:stone_with_ice_trap' + cold_natured = true + trap = 'fun_caves:ice_trap' fun_caves.search_replace(pos, trap_freq, {"default:ice"}, trap) else if self.name == 'fun_caves:goblin_coal' then @@ -73,7 +75,7 @@ local function goblin_do(self) fun_caves.search_replace(pos, trap_freq, {"group:stone", "default:sandstone"}, trap) end - fun_caves.surface_damage(self) + fun_caves.surface_damage(self, cold_natured) end @@ -513,7 +515,7 @@ minetest.register_abm({ minetest.register_node("fun_caves:ice_trap", { description = "Ice Trap", - tiles = {"default_ice.png^default_mineral_coal.png"}, + tiles = {"default_ice.png^fun_caves_mineral_moonstone.png"}, groups = {cracky = 3}, drop = 'default:ice', is_ground_content = false, @@ -527,9 +529,20 @@ minetest.register_abm({ action = function(pos, node, active_object_count, active_object_count_wider) for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 2)) do if object:is_player() then - minetest.set_node(pos, {name="fire:basic_flame"}) - if object:get_hp() > 0 then - object:set_hp(object:get_hp()-2) + local ppos = object:getpos() + if ppos then + ppos.y = ppos.y + 1 + local p1 = vector.subtract(ppos, 2) + local p2 = vector.add(ppos, 2) + local nodes = minetest.find_nodes_in_area(p1, p2, 'air') + for _, npos in pairs(nodes) do + minetest.set_node(npos, {name="default:ice"}) + minetest.set_node(pos, {name="default:ice"}) + end + + if object:get_hp() > 0 then + object:set_hp(object:get_hp()-2) + end end end end diff --git a/mobs.lua b/mobs.lua index 6c84eca..6b07a23 100644 --- a/mobs.lua +++ b/mobs.lua @@ -11,7 +11,7 @@ fun_caves.search_replace = function(pos, search_rate, replace_what, replace_with if #nodelist > 0 then for _, new_pos in pairs(nodelist) do minetest.set_node(new_pos, {name = replace_with}) - return -- only one at a time + return true -- only one at a time end end end @@ -179,6 +179,8 @@ if minetest.registered_entities["dmobs:fox"] then end end + minetest.registered_entities["dmobs:fox"].type = 'animal' + local m = table.copy(minetest.registered_entities["dmobs:fox"]) m.name = 'fun_caves:fire_fox' m.damage = 3 @@ -255,6 +257,10 @@ if minetest.registered_entities["mobs:bee"] then return end + -- To keep bees from summoning infinitely, they lose health each round. + self.health = self.health - 1 + check_for_death(self) + local prob = 10 if self.name == 'fun_caves:killer_bee_queen' then prob = 4 @@ -286,7 +292,9 @@ if minetest.registered_entities["mobs:bee"] then pos.y = pos.y + 1 if self.name == 'fun_caves:killer_bee' then - fun_caves.search_replace(pos, 10, {'group:tree', 'fun_caves:glowing_fungal_wood',}, 'air') + fun_caves.search_replace(pos, 5, {'group:tree', 'fun_caves:glowing_fungal_wood',}, 'air') + else + fun_caves.search_replace(pos, 25, {'group:tree', 'fun_caves:glowing_fungal_wood',}, 'air') end fun_caves.search_replace(pos, 10, {"fun_caves:tree"}, "fun_caves:glowing_fungal_wood") fun_caves.search_replace(pos, 60, {"fun_caves:glowing_fungal_wood", 'fun_caves:sap'}, "air") @@ -346,8 +354,8 @@ if minetest.registered_entities["mobs:bee"] then }) - mobs:register_spawn("fun_caves:killer_bee", {"fun_caves:tree", "fun_caves:ironwood", "fun_caves:diamondwood"}, 20, -1, 300, 5, 31000) - mobs:register_spawn("fun_caves:killer_bee", {"fun_caves:glowing_fungal_wood"}, 20, -1, 100, 5, 31000) + mobs:register_spawn("fun_caves:killer_bee", {"fun_caves:tree", "fun_caves:ironwood", "fun_caves:diamondwood"}, 20, -1, 2000, 5, 31000) + mobs:register_spawn("fun_caves:killer_bee", {"fun_caves:glowing_fungal_wood"}, 20, -1, 150, 5, 31000) mobs:register_egg("fun_caves:killer_bee", "Killer Bee", "mobs_bee_inv.png", 1) @@ -362,7 +370,7 @@ if minetest.registered_entities["mobs:bee"] then minetest.registered_entities["fun_caves:killer_bee_drone"] = m mobs.spawning_mobs["fun_caves:killer_bee_drone"] = true - mobs:register_spawn("fun_caves:killer_bee_drone", {"fun_caves:tree", "fun_caves:ironwood", "fun_caves:diamondwood"}, 20, -1, 1000, 5, 31000) + mobs:register_spawn("fun_caves:killer_bee_drone", {"fun_caves:glowing_fungal_wood"}, 20, -1, 300, 3, 31000) m = table.copy(minetest.registered_entities["fun_caves:killer_bee"]) m.name = 'fun_caves:killer_bee_queen' @@ -375,7 +383,7 @@ if minetest.registered_entities["mobs:bee"] then minetest.registered_entities["fun_caves:killer_bee_queen"] = m mobs.spawning_mobs["fun_caves:killer_bee_queen"] = true - mobs:register_spawn("fun_caves:killer_bee_queen", {"fun_caves:tree", "fun_caves:ironwood", "fun_caves:diamondwood"}, 20, -1, 4000, 5, 31000) + mobs:register_spawn("fun_caves:killer_bee_queen", {"fun_caves:glowing_fungal_wood"}, 20, -1, 600, 1, 31000) end if minetest.registered_entities["kpgmobs:wolf"] then @@ -415,8 +423,8 @@ end if minetest.registered_entities["mobs_fish:clownfish"] then --local l_spawn_near = {"default:sand","default:dirt","group:seaplants","group:seacoral"} - mobs:spawn_specific("mobs_fish:clownfish", {"default:water_source", "default:water_flowing"}, {"default:sand","default:dirt", "fun_caves:cloud", "fun_caves:storm_cloud","group:seaplants","group:seacoral"}, 5, 20, 30, 10000, 1, 4000, 5000) - mobs:spawn_specific("mobs_fish:tropical", {"default:water_source", "default:water_flowing"}, {"default:sand","default:dirt", "fun_caves:cloud", "fun_caves:storm_cloud","group:seaplants","group:seacoral"}, 5, 20, 30, 10000, 1, 4000, 5000) + mobs:spawn_specific("mobs_fish:clownfish", {"default:water_source", "default:water_flowing"}, {'fun_caves:water_plant_1_water_cloud', 'fun_caves:water_plant_1_water_storm_cloud'}, 5, 20, 30, 10000, 1, 4000, 5000) + mobs:spawn_specific("mobs_fish:tropical", {"default:water_source", "default:water_flowing"}, {'fun_caves:water_plant_1_water_cloud', 'fun_caves:water_plant_1_water_storm_cloud'}, 5, 20, 30, 10000, 1, 4000, 5000) mobs:spawn_specific("mobs_fish:tropical", {"default:water_source", "default:water_flowing"}, nil, 5, 20, 30, 10000, 1, 8769, 8798) end @@ -679,7 +687,6 @@ local t_mobs = { "dmobs:orc", "dmobs:ogre", "dmobs:ogre", - "dmobs:dragon", } for _, mob in pairs(t_mobs) do if minetest.registered_entities[mob] then diff --git a/nodes.lua b/nodes.lua index f0feb20..1be2cac 100644 --- a/nodes.lua +++ b/nodes.lua @@ -145,7 +145,13 @@ local function teleporter(user, area, power) if area == 'overworld' then newpos = {x=(math.random(2)*2-3)*(math.random(math.floor(max_depth/6))+power*math.floor(max_depth/6)), y=120, z=(math.random(2)*2-3)*(math.random(math.floor(max_depth/6))+power*math.floor(max_depth/6))} elseif area == 'hell' then - newpos = {x=pos.x, y=fun_caves.underzones[({'Caina','Phlegethos','Dis','Minauros','Styx'})[power+1]].ceiling-30, z=pos.z} + newpos = {x=pos.x, y=fun_caves.underzones[({'Caina','Phlegethos','Dis','Minauros', 'Phlegethos','Styx'})[power+1]].ceiling-30, z=pos.z} + elseif area == 'sky' then + newpos = {x=pos.x, y=({4368, 8768, 13168, 4368, 4368, 4368})[power+1]+76, z=pos.z} + elseif area == 'dungeon' then + return + elseif area == 'underworld' then + return else return end @@ -162,10 +168,61 @@ local function teleporter(user, area, power) end end -minetest.register_craftitem("fun_caves:teleporter_iron_coral", { +minetest.register_craftitem("fun_caves:teleporter_iron_moonstone", { description = "Iron and Moonstone Teleporter", drawtype = "plantlike", paramtype = "light", + tiles = {"fun_caves_tesseract_iron_moon.png"}, + inventory_image = "fun_caves_tesseract_iron_moon.png", + groups = {dig_immediate = 3}, + sounds = default.node_sound_stone_defaults(), + on_use = function(itemstack, user, pointed_thing) + teleporter(user, 'sky', 0) + end, +}) + +minetest.register_craft({ + output = 'fun_caves:teleporter_iron_moonstone', + recipe = { + {'fun_caves:sky_iron', 'fun_caves:pure_copper', 'fun_caves:sky_iron'}, + {'fun_caves:moonstone', 'fun_caves:moonstone', 'fun_caves:moonstone'}, + {'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'}, + } +}) + +minetest.register_craftitem("fun_caves:moonstone", { + description = "Moonstone", + drawtype = "plantlike", + paramtype = "light", + tiles = {"fun_caves_moonstone.png"}, + inventory_image = "fun_caves_moonstone.png", + groups = {dig_immediate = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_node("fun_caves:stone_with_moonstones", { + description = "Moonstone Ore", + tiles = {"default_stone.png^fun_caves_mineral_moonstone.png"}, + groups = {cracky = 1}, + drop = "fun_caves:moonstone", + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_ore({ + ore_type = "scatter", + ore = "fun_caves:stone_with_moonstones", + wherein = "default:stone", + clust_scarcity = 21 * 21 * 21, + clust_num_ores = 1, + clust_size = 1, + y_min = -31000, + y_max = 31000, +}) + +minetest.register_craftitem("fun_caves:teleporter_iron_coral", { + description = "Iron and Coral Teleporter", + drawtype = "plantlike", + paramtype = "light", tiles = {"fun_caves_tesseract_iron_coral.png"}, inventory_image = "fun_caves_tesseract_iron_coral.png", groups = {dig_immediate = 3}, @@ -178,7 +235,7 @@ minetest.register_craftitem("fun_caves:teleporter_iron_coral", { minetest.register_craft({ output = 'fun_caves:teleporter_iron_coral', recipe = { - {'fun_caves:sky_iron', 'default:copper_ingot', 'fun_caves:sky_iron'}, + {'fun_caves:sky_iron', 'fun_caves:pure_copper', 'fun_caves:sky_iron'}, {'fun_caves:coral_gem', 'fun_caves:coral_gem', 'fun_caves:coral_gem'}, {'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'}, } @@ -217,14 +274,14 @@ minetest.register_craftitem("fun_caves:teleporter_iron_garnet", { minetest.register_craft({ output = 'fun_caves:teleporter_iron_garnet', recipe = { - {'fun_caves:sky_iron', 'default:copper_ingot', 'fun_caves:sky_iron'}, - {'fun_caves:perfect_garnet', 'fun_caves:perfect_garnet', 'fun_caves:perfect_garnet'}, + {'fun_caves:sky_iron', 'fun_caves:pure_copper', 'fun_caves:sky_iron'}, + {'fun_caves:garnet', 'fun_caves:garnet', 'fun_caves:garnet'}, {'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'}, } }) -minetest.register_craftitem("fun_caves:perfect_garnet", { - description = "Perfect Garnet", +minetest.register_craftitem("fun_caves:garnet", { + description = "Garnet", drawtype = "plantlike", paramtype = "light", tiles = {"fun_caves_garnet.png"}, @@ -237,7 +294,7 @@ minetest.register_node("fun_caves:stone_with_garnets", { description = "Garnet Ore", tiles = {"default_stone.png^fun_caves_mineral_garnet.png"}, groups = {cracky = 1}, - drop = "fun_caves:perfect_garnet", + drop = "fun_caves:garnet", sounds = default.node_sound_stone_defaults(), }) @@ -245,7 +302,7 @@ minetest.register_ore({ ore_type = "scatter", ore = "fun_caves:stone_with_garnets", wherein = "default:stone", - clust_scarcity = 17 * 17 * 17, + clust_scarcity = 21 * 21 * 21, clust_num_ores = 1, clust_size = 1, y_min = -31000, @@ -261,21 +318,21 @@ minetest.register_craftitem("fun_caves:teleporter_iron_zoisite", { groups = {dig_immediate = 3}, sounds = default.node_sound_stone_defaults(), on_use = function(itemstack, user, pointed_thing) - teleporter(user, 'underworld', 0) + teleporter(user, 'dungeon', 0) end, }) minetest.register_craft({ output = 'fun_caves:teleporter_iron_zoisite', recipe = { - {'fun_caves:sky_iron', 'default:copper_ingot', 'fun_caves:sky_iron'}, - {'fun_caves:perfect_zoisite', 'fun_caves:perfect_zoisite', 'fun_caves:perfect_zoisite'}, + {'fun_caves:sky_iron', 'fun_caves:pure_copper', 'fun_caves:sky_iron'}, + {'fun_caves:zoisite', 'fun_caves:zoisite', 'fun_caves:zoisite'}, {'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'}, } }) -minetest.register_craftitem("fun_caves:perfect_zoisite", { - description = "Perfect Zoisite", +minetest.register_craftitem("fun_caves:zoisite", { + description = "Zoisite", drawtype = "plantlike", paramtype = "light", tiles = {"fun_caves_zoisite.png"}, @@ -288,7 +345,7 @@ minetest.register_node("fun_caves:stone_with_zoisites", { description = "Zoisite Ore", tiles = {"default_stone.png^fun_caves_mineral_zoisite.png"}, groups = {cracky = 1}, - drop = "fun_caves:perfect_zoisite", + drop = "fun_caves:zoisite", sounds = default.node_sound_stone_defaults(), }) @@ -296,7 +353,7 @@ minetest.register_ore({ ore_type = "scatter", ore = "fun_caves:stone_with_zoisites", wherein = "default:stone", - clust_scarcity = 17 * 17 * 17, + clust_scarcity = 21 * 21 * 21, clust_num_ores = 1, clust_size = 1, y_min = -31000, @@ -319,14 +376,14 @@ minetest.register_craftitem("fun_caves:teleporter_iron_aquamarine", { minetest.register_craft({ output = 'fun_caves:teleporter_iron_aquamarine', recipe = { - {'fun_caves:sky_iron', 'default:copper_ingot', 'fun_caves:sky_iron'}, - {'fun_caves:perfect_aquamarine', 'fun_caves:perfect_aquamarine', 'fun_caves:perfect_aquamarine'}, + {'fun_caves:sky_iron', 'fun_caves:pure_copper', 'fun_caves:sky_iron'}, + {'fun_caves:aquamarine', 'fun_caves:aquamarine', 'fun_caves:aquamarine'}, {'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'}, } }) -minetest.register_craftitem("fun_caves:perfect_aquamarine", { - description = "Perfect Aquamarine", +minetest.register_craftitem("fun_caves:aquamarine", { + description = "Aquamarine", drawtype = "plantlike", paramtype = "light", tiles = {"fun_caves_aquamarine.png"}, @@ -339,7 +396,7 @@ minetest.register_node("fun_caves:stone_with_aquamarines", { description = "Aquamarine Ore", tiles = {"default_stone.png^fun_caves_mineral_aquamarine.png"}, groups = {cracky = 1}, - drop = "fun_caves:perfect_aquamarine", + drop = "fun_caves:aquamarine", sounds = default.node_sound_stone_defaults(), }) @@ -347,7 +404,7 @@ minetest.register_ore({ ore_type = "scatter", ore = "fun_caves:stone_with_aquamarines", wherein = "default:stone", - clust_scarcity = 17 * 17 * 17, + clust_scarcity = 21 * 21 * 21, clust_num_ores = 1, clust_size = 1, y_min = -31000, @@ -405,6 +462,42 @@ minetest.register_craft({ cooktime = 30, }) +minetest.register_craftitem("fun_caves:pure_copper", { + description = "Very Pure Copper", + drawtype = "plantlike", + paramtype = "light", + tiles = {"default_copper_ingot.png"}, + inventory_image = "default_copper_ingot.png", + groups = {dig_immediate = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craftitem("fun_caves:copper_crucible", { + description = "Crucible of Copper", + drawtype = "plantlike", + paramtype = "light", + tiles = {"fun_caves_crucible.png"}, + inventory_image = "fun_caves_crucible.png", + groups = {dig_immediate = 3}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craft({ + output = 'fun_caves:copper_crucible', + recipe = { + {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, + {'default:copper_ingot', 'default:copper_ingot', 'default:copper_ingot'}, + {'default:copper_ingot', 'fun_caves:crucible', 'default:copper_ingot'}, + } +}) + +minetest.register_craft({ + type = "cooking", + output = "fun_caves:pure_copper", + recipe = "fun_caves:copper_crucible", + cooktime = 30, +}) + minetest.register_craftitem("fun_caves:crucible", { description = "Crucible", @@ -433,12 +526,12 @@ newnode.groups.soil = 0 minetest.register_node("fun_caves:meteorite_crater", newnode) local treasures = { - {'fun_caves:perfect_aquamarine', 'fun_caves:perfect_garnet', 'fun_caves:perfect_zoisite', 'fun_caves:coral_gem', 'fun_caves:sky_iron', 'fun_caves:sky_iron', 'fun_caves:sky_iron', 'fun_caves:sky_iron', 'default:obsidian'}, - {'fun_caves:perfect_aquamarine', 'fun_caves:perfect_garnet', 'fun_caves:perfect_zoisite', 'fun_caves:coral_gem', 'fun_caves:pure_copper', 'fun_caves:pure_copper', 'fun_caves:pure_copper', 'fun_caves:pure_copper', 'default:obsidian'}, - {'fun_caves:perfect_aquamarine', 'fun_caves:perfect_garnet', 'fun_caves:perfect_zoisite', 'fun_caves:coral_gem', 'default:obsidian'}, - {'fun_caves:perfect_aquamarine', 'fun_caves:perfect_garnet', 'fun_caves:perfect_zoisite', 'fun_caves:coral_gem', 'default:obsidian'}, - {'fun_caves:perfect_aquamarine', 'fun_caves:perfect_garnet', 'fun_caves:perfect_zoisite', 'fun_caves:coral_gem', 'default:obsidian'}, - {'fun_caves:perfect_aquamarine', 'fun_caves:perfect_garnet', 'fun_caves:perfect_zoisite', 'fun_caves:coral_gem', 'default:obsidian'}, + {'fun_caves:aquamarine', 'fun_caves:garnet', 'fun_caves:zoisite', 'fun_caves:coral_gem', 'fun_caves:moonstone', 'fun_caves:sky_iron', 'fun_caves:sky_iron', 'fun_caves:sky_iron', 'fun_caves:sky_iron', 'default:obsidian'}, + {'fun_caves:aquamarine', 'fun_caves:garnet', 'fun_caves:zoisite', 'fun_caves:coral_gem', 'fun_caves:moonstone', 'fun_caves:pure_copper', 'fun_caves:pure_copper', 'fun_caves:pure_copper', 'fun_caves:pure_copper', 'default:obsidian'}, + {'fun_caves:aquamarine', 'fun_caves:garnet', 'fun_caves:zoisite', 'fun_caves:coral_gem', 'fun_caves:moonstone', 'default:obsidian'}, + {'fun_caves:aquamarine', 'fun_caves:garnet', 'fun_caves:zoisite', 'fun_caves:coral_gem', 'fun_caves:moonstone', 'default:obsidian'}, + {'fun_caves:aquamarine', 'fun_caves:garnet', 'fun_caves:zoisite', 'fun_caves:coral_gem', 'fun_caves:moonstone', 'default:obsidian'}, + {'fun_caves:aquamarine', 'fun_caves:garnet', 'fun_caves:zoisite', 'fun_caves:coral_gem', 'fun_caves:moonstone', 'default:obsidian'}, } local filler = {'default:apple 10', 'default:coal_lump 10', 'default:wood 10'} local trophies = { diff --git a/textures/fun_caves_mineral_moonstone.png b/textures/fun_caves_mineral_moonstone.png new file mode 100644 index 0000000..dc57993 Binary files /dev/null and b/textures/fun_caves_mineral_moonstone.png differ diff --git a/textures/fun_caves_moonstone.png b/textures/fun_caves_moonstone.png new file mode 100644 index 0000000..2c2f880 Binary files /dev/null and b/textures/fun_caves_moonstone.png differ diff --git a/textures/fun_caves_tesseract_iron_coral.png b/textures/fun_caves_tesseract_iron_coral.png index 2e085c3..5bbe478 100644 Binary files a/textures/fun_caves_tesseract_iron_coral.png and b/textures/fun_caves_tesseract_iron_coral.png differ diff --git a/textures/fun_caves_tesseract_iron_garnet.png b/textures/fun_caves_tesseract_iron_garnet.png index f9c3896..6da6865 100644 Binary files a/textures/fun_caves_tesseract_iron_garnet.png and b/textures/fun_caves_tesseract_iron_garnet.png differ diff --git a/textures/fun_caves_tesseract_iron_moon.png b/textures/fun_caves_tesseract_iron_moon.png new file mode 100644 index 0000000..6751ec7 Binary files /dev/null and b/textures/fun_caves_tesseract_iron_moon.png differ diff --git a/textures/fun_caves_tesseract_iron_zois.png b/textures/fun_caves_tesseract_iron_zois.png index 52b000a..f4c8263 100644 Binary files a/textures/fun_caves_tesseract_iron_zois.png and b/textures/fun_caves_tesseract_iron_zois.png differ diff --git a/textures/image_credits.txt b/textures/image_credits.txt index 2d414c0..1924c78 100644 --- a/textures/image_credits.txt +++ b/textures/image_credits.txt @@ -7,3 +7,4 @@ Original aquamarine: Diamondexpert (cc-by-sa 2.5), https://commons.wikimedia.org Original garnet: von de Wela49 (cc-by-sa 3), https://en.wikipedia.org/wiki/File:Garnet_cut.JPG Modified radioactive ore: everamzah Original DNA: Zephyris (cc-by-sa 3), https://en.wikipedia.org/wiki/File:DNA_Structure%2BKey%2BLabelled.pn_NoBB.png +Original moonstone: Didier Descouens (cc-by-sa 4), https://en.wikipedia.org/wiki/File:Pierrelune.jpg