Multiple changes:

- Adjust giant tree spawns.
- Remove dragon from dungeons.
- Adjust all abms.
- Allow giant trees to grow back damage.
- Revamp ice trap.
- Fix iron moonstone and coral teleporters.
This commit is contained in:
Duane 2016-06-18 06:35:48 -05:00
parent fa86013731
commit 6c764f0c3b
11 changed files with 210 additions and 68 deletions

View file

@ -186,8 +186,8 @@ end)
-- Exploding fungal fruit -- Exploding fungal fruit
minetest.register_abm({ minetest.register_abm({
nodenames = {"fun_caves:fungal_tree_fruit"}, nodenames = {"fun_caves:fungal_tree_fruit"},
interval = 20 * fun_caves.time_factor, interval = 2 * fun_caves.time_factor,
chance = 15, chance = 150,
catch_up = false, catch_up = false,
action = function(pos, node) action = function(pos, node)
fun_caves.soft_boom(pos) fun_caves.soft_boom(pos)
@ -198,8 +198,8 @@ minetest.register_abm({
minetest.register_abm({ minetest.register_abm({
nodenames = {"fun_caves:fungal_tree_fruit"}, nodenames = {"fun_caves:fungal_tree_fruit"},
neighbors = {"fire:basic_flame"}, neighbors = {"fire:basic_flame"},
interval = 10 * fun_caves.time_factor, interval = fun_caves.time_factor,
chance = 5, chance = 50,
catch_up = false, catch_up = false,
action = function(pos, node) action = function(pos, node)
fun_caves.soft_boom(pos) fun_caves.soft_boom(pos)
@ -211,8 +211,8 @@ minetest.register_abm({
-- since it only checks below the node. -- since it only checks below the node.
minetest.register_abm({ minetest.register_abm({
nodenames = {"fun_caves:giant_mushroom_cap", "fun_caves:huge_mushroom_cap"}, nodenames = {"fun_caves:giant_mushroom_cap", "fun_caves:huge_mushroom_cap"},
interval = 5 * fun_caves.time_factor, interval = fun_caves.time_factor,
chance = 5, chance = 25,
action = function(pos, node) action = function(pos, node)
-- Check for stem under the cap. -- Check for stem under the cap.
local node_under = minetest.get_node_or_nil({x = pos.x, y = pos.y - 1, z = pos.z}) 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. -- Destroy mushroom caps in the light.
minetest.register_abm({ minetest.register_abm({
nodenames = {"fun_caves:giant_mushroom_cap", "fun_caves:huge_mushroom_cap"}, nodenames = {"fun_caves:giant_mushroom_cap", "fun_caves:huge_mushroom_cap"},
interval = 15 * fun_caves.time_factor, interval = 2 * fun_caves.time_factor,
chance = 15, chance = 110,
action = function(pos, node) action = function(pos, node)
if (minetest.get_node_light(pos, nil) or 99) >= fun_caves.light_max + 2 then if (minetest.get_node_light(pos, nil) or 99) >= fun_caves.light_max + 2 then
minetest.set_node(pos, {name = "air"}) minetest.set_node(pos, {name = "air"})
@ -240,12 +240,40 @@ minetest.register_abm({
-- creation -- 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 -- vacuum sucks
minetest.register_abm({ minetest.register_abm({
nodenames = {"fun_caves:vacuum"}, nodenames = {"fun_caves:vacuum"},
neighbors = {"air"}, neighbors = {"air"},
interval = fun_caves.time_factor, interval = fun_caves.time_factor,
chance = 1, chance = 10,
action = function(pos, node) action = function(pos, node)
if pos.y <= 11168 or pos.y >= 15168 then if pos.y <= 11168 or pos.y >= 15168 then
return return
@ -267,8 +295,8 @@ minetest.register_abm({
minetest.register_abm({ minetest.register_abm({
nodenames = fungal_tree_leaves, nodenames = fungal_tree_leaves,
neighbors = {"air", "group:liquid"}, neighbors = {"air", "group:liquid"},
interval = 5 * fun_caves.time_factor, interval = fun_caves.time_factor,
chance = 10, chance = 50,
catch_up = false, catch_up = false,
action = function(pos, node) action = function(pos, node)
if (minetest.get_node_light(pos, nil) or 99) >= fun_caves.light_max + 2 then 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 -- mushroom growth -- caps regenerate in time
minetest.register_abm({ minetest.register_abm({
nodenames = {"fun_caves:giant_mushroom_stem"}, nodenames = {"fun_caves:giant_mushroom_stem"},
interval = 15 * fun_caves.time_factor, interval = 2 * fun_caves.time_factor,
chance = 10, chance = 75,
action = function(pos, node) action = function(pos, node)
local pos_up = {x=pos.x,y=pos.y+1,z=pos.z} local pos_up = {x=pos.x,y=pos.y+1,z=pos.z}
local node_up = minetest.get_node_or_nil(pos_up) local node_up = minetest.get_node_or_nil(pos_up)
@ -327,8 +355,8 @@ minetest.register_abm({
minetest.register_abm({ minetest.register_abm({
nodenames = {"default:dirt"}, nodenames = {"default:dirt"},
neighbors = {"air"}, neighbors = {"air"},
interval = 10 * fun_caves.time_factor, interval = 2 * fun_caves.time_factor,
chance = 15, chance = 75,
action = function(pos, node) action = function(pos, node)
if pos.y > 0 then if pos.y > 0 then
return return
@ -350,8 +378,8 @@ minetest.register_abm({
-- mushroom growth -- small into huge -- mushroom growth -- small into huge
minetest.register_abm({ minetest.register_abm({
nodenames = mushrooms, nodenames = mushrooms,
interval = 75 * fun_caves.time_factor, interval = 5 * fun_caves.time_factor,
chance = 25, chance = 375,
action = function(pos, node) action = function(pos, node)
-- Clumsy, but it's the best way to limit them to caves. -- Clumsy, but it's the best way to limit them to caves.
if pos.y > 0 then if pos.y > 0 then
@ -379,8 +407,8 @@ minetest.register_abm({
-- mushroom growth -- huge into giant -- mushroom growth -- huge into giant
minetest.register_abm({ minetest.register_abm({
nodenames = {"fun_caves:huge_mushroom_cap"}, nodenames = {"fun_caves:huge_mushroom_cap"},
interval = 300 * fun_caves.time_factor, interval = 9 * fun_caves.time_factor,
chance = 30, chance = 1000,
action = function(pos, node) action = function(pos, node)
local pos_up = {x=pos.x,y=pos.y+1,z=pos.z} local pos_up = {x=pos.x,y=pos.y+1,z=pos.z}
local node_up = minetest.get_node_or_nil(pos_up) local node_up = minetest.get_node_or_nil(pos_up)
@ -404,8 +432,8 @@ minetest.register_abm({
-- Spike spread and death -- Spike spread and death
minetest.register_abm({ minetest.register_abm({
nodenames = fun_caves.hot_spikes, nodenames = fun_caves.hot_spikes,
interval = 30 * fun_caves.time_factor, interval = 3 * fun_caves.time_factor,
chance = 30, chance = 300,
action = function(pos, node) action = function(pos, node)
if not fun_caves.hot_spike then if not fun_caves.hot_spike then
return return
@ -448,9 +476,9 @@ minetest.register_abm({
minetest.register_abm({ minetest.register_abm({
nodenames = {"default:dirt_with_grass", "default:dirt_with_dry_grass"}, nodenames = {"default:dirt_with_grass", "default:dirt_with_dry_grass"},
neighbors = {"air"}, neighbors = {"air"},
interval = 1000000 * fun_caves.time_factor, interval = 10000 * fun_caves.time_factor,
catch_up = false, catch_up = false,
chance = 30000, chance = 3000000,
action = function(pos, node) action = function(pos, node)
local ps = {} local ps = {}
local players = minetest.get_connected_players() local players = minetest.get_connected_players()
@ -478,8 +506,8 @@ minetest.register_abm({
-- Remove old craters. -- Remove old craters.
minetest.register_abm({ minetest.register_abm({
nodenames = {"fun_caves:meteorite_crater"}, nodenames = {"fun_caves:meteorite_crater"},
interval = 100 * fun_caves.time_factor, interval = 3 * fun_caves.time_factor,
chance = 10, chance = 330,
action = function(pos, node) action = function(pos, node)
minetest.set_node(pos, {name="default:dirt"}) minetest.set_node(pos, {name="default:dirt"})
end end

View file

@ -26,6 +26,7 @@ local function goblin_do(self)
return return
end end
local cold_natured = false
local pos = self.object:getpos() local pos = self.object:getpos()
pos.y = pos.y + 0.5 pos.y = pos.y + 0.5
@ -51,7 +52,8 @@ local function goblin_do(self)
-- place a trap -- place a trap
local trap = 'fun_caves:mossycobble_trap' local trap = 'fun_caves:mossycobble_trap'
if self.name == 'fun_caves:goblin_ice' then 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) fun_caves.search_replace(pos, trap_freq, {"default:ice"}, trap)
else else
if self.name == 'fun_caves:goblin_coal' then 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) fun_caves.search_replace(pos, trap_freq, {"group:stone", "default:sandstone"}, trap)
end end
fun_caves.surface_damage(self) fun_caves.surface_damage(self, cold_natured)
end end
@ -513,7 +515,7 @@ minetest.register_abm({
minetest.register_node("fun_caves:ice_trap", { minetest.register_node("fun_caves:ice_trap", {
description = "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}, groups = {cracky = 3},
drop = 'default:ice', drop = 'default:ice',
is_ground_content = false, is_ground_content = false,
@ -527,13 +529,24 @@ minetest.register_abm({
action = function(pos, node, active_object_count, active_object_count_wider) action = function(pos, node, active_object_count, active_object_count_wider)
for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 2)) do for _,object in ipairs(minetest.env:get_objects_inside_radius(pos, 2)) do
if object:is_player() then if object:is_player() then
minetest.set_node(pos, {name="fire:basic_flame"}) 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 if object:get_hp() > 0 then
object:set_hp(object:get_hp()-2) object:set_hp(object:get_hp()-2)
end end
end end
end end
end end
end
}) })
minetest.register_node("fun_caves:stone_with_iron_trap", { minetest.register_node("fun_caves:stone_with_iron_trap", {

View file

@ -11,7 +11,7 @@ fun_caves.search_replace = function(pos, search_rate, replace_what, replace_with
if #nodelist > 0 then if #nodelist > 0 then
for _, new_pos in pairs(nodelist) do for _, new_pos in pairs(nodelist) do
minetest.set_node(new_pos, {name = replace_with}) minetest.set_node(new_pos, {name = replace_with})
return -- only one at a time return true -- only one at a time
end end
end end
end end
@ -179,6 +179,8 @@ if minetest.registered_entities["dmobs:fox"] then
end end
end end
minetest.registered_entities["dmobs:fox"].type = 'animal'
local m = table.copy(minetest.registered_entities["dmobs:fox"]) local m = table.copy(minetest.registered_entities["dmobs:fox"])
m.name = 'fun_caves:fire_fox' m.name = 'fun_caves:fire_fox'
m.damage = 3 m.damage = 3
@ -255,6 +257,10 @@ if minetest.registered_entities["mobs:bee"] then
return return
end end
-- To keep bees from summoning infinitely, they lose health each round.
self.health = self.health - 1
check_for_death(self)
local prob = 10 local prob = 10
if self.name == 'fun_caves:killer_bee_queen' then if self.name == 'fun_caves:killer_bee_queen' then
prob = 4 prob = 4
@ -286,7 +292,9 @@ if minetest.registered_entities["mobs:bee"] then
pos.y = pos.y + 1 pos.y = pos.y + 1
if self.name == 'fun_caves:killer_bee' then 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 end
fun_caves.search_replace(pos, 10, {"fun_caves:tree"}, "fun_caves:glowing_fungal_wood") 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") 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: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, 100, 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) 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 minetest.registered_entities["fun_caves:killer_bee_drone"] = m
mobs.spawning_mobs["fun_caves:killer_bee_drone"] = true 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 = table.copy(minetest.registered_entities["fun_caves:killer_bee"])
m.name = 'fun_caves:killer_bee_queen' 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 minetest.registered_entities["fun_caves:killer_bee_queen"] = m
mobs.spawning_mobs["fun_caves:killer_bee_queen"] = true 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 end
if minetest.registered_entities["kpgmobs:wolf"] then if minetest.registered_entities["kpgmobs:wolf"] then
@ -415,8 +423,8 @@ end
if minetest.registered_entities["mobs_fish:clownfish"] then if minetest.registered_entities["mobs_fish:clownfish"] then
--local l_spawn_near = {"default:sand","default:dirt","group:seaplants","group:seacoral"} --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: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"}, {"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"}, {'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) mobs:spawn_specific("mobs_fish:tropical", {"default:water_source", "default:water_flowing"}, nil, 5, 20, 30, 10000, 1, 8769, 8798)
end end
@ -679,7 +687,6 @@ local t_mobs = {
"dmobs:orc", "dmobs:orc",
"dmobs:ogre", "dmobs:ogre",
"dmobs:ogre", "dmobs:ogre",
"dmobs:dragon",
} }
for _, mob in pairs(t_mobs) do for _, mob in pairs(t_mobs) do
if minetest.registered_entities[mob] then if minetest.registered_entities[mob] then

149
nodes.lua
View file

@ -145,7 +145,13 @@ local function teleporter(user, area, power)
if area == 'overworld' then 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))} 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 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 else
return return
end end
@ -162,10 +168,61 @@ local function teleporter(user, area, power)
end end
end end
minetest.register_craftitem("fun_caves:teleporter_iron_coral", { minetest.register_craftitem("fun_caves:teleporter_iron_moonstone", {
description = "Iron and Moonstone Teleporter", description = "Iron and Moonstone Teleporter",
drawtype = "plantlike", drawtype = "plantlike",
paramtype = "light", 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"}, tiles = {"fun_caves_tesseract_iron_coral.png"},
inventory_image = "fun_caves_tesseract_iron_coral.png", inventory_image = "fun_caves_tesseract_iron_coral.png",
groups = {dig_immediate = 3}, groups = {dig_immediate = 3},
@ -178,7 +235,7 @@ minetest.register_craftitem("fun_caves:teleporter_iron_coral", {
minetest.register_craft({ minetest.register_craft({
output = 'fun_caves:teleporter_iron_coral', output = 'fun_caves:teleporter_iron_coral',
recipe = { 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:coral_gem', 'fun_caves:coral_gem', 'fun_caves:coral_gem'},
{'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'}, {'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({ minetest.register_craft({
output = 'fun_caves:teleporter_iron_garnet', output = 'fun_caves:teleporter_iron_garnet',
recipe = { 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:perfect_garnet', 'fun_caves:perfect_garnet', 'fun_caves:perfect_garnet'}, {'fun_caves:garnet', 'fun_caves:garnet', 'fun_caves:garnet'},
{'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'}, {'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'},
} }
}) })
minetest.register_craftitem("fun_caves:perfect_garnet", { minetest.register_craftitem("fun_caves:garnet", {
description = "Perfect Garnet", description = "Garnet",
drawtype = "plantlike", drawtype = "plantlike",
paramtype = "light", paramtype = "light",
tiles = {"fun_caves_garnet.png"}, tiles = {"fun_caves_garnet.png"},
@ -237,7 +294,7 @@ minetest.register_node("fun_caves:stone_with_garnets", {
description = "Garnet Ore", description = "Garnet Ore",
tiles = {"default_stone.png^fun_caves_mineral_garnet.png"}, tiles = {"default_stone.png^fun_caves_mineral_garnet.png"},
groups = {cracky = 1}, groups = {cracky = 1},
drop = "fun_caves:perfect_garnet", drop = "fun_caves:garnet",
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
}) })
@ -245,7 +302,7 @@ minetest.register_ore({
ore_type = "scatter", ore_type = "scatter",
ore = "fun_caves:stone_with_garnets", ore = "fun_caves:stone_with_garnets",
wherein = "default:stone", wherein = "default:stone",
clust_scarcity = 17 * 17 * 17, clust_scarcity = 21 * 21 * 21,
clust_num_ores = 1, clust_num_ores = 1,
clust_size = 1, clust_size = 1,
y_min = -31000, y_min = -31000,
@ -261,21 +318,21 @@ minetest.register_craftitem("fun_caves:teleporter_iron_zoisite", {
groups = {dig_immediate = 3}, groups = {dig_immediate = 3},
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
teleporter(user, 'underworld', 0) teleporter(user, 'dungeon', 0)
end, end,
}) })
minetest.register_craft({ minetest.register_craft({
output = 'fun_caves:teleporter_iron_zoisite', output = 'fun_caves:teleporter_iron_zoisite',
recipe = { 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:perfect_zoisite', 'fun_caves:perfect_zoisite', 'fun_caves:perfect_zoisite'}, {'fun_caves:zoisite', 'fun_caves:zoisite', 'fun_caves:zoisite'},
{'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'}, {'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'},
} }
}) })
minetest.register_craftitem("fun_caves:perfect_zoisite", { minetest.register_craftitem("fun_caves:zoisite", {
description = "Perfect Zoisite", description = "Zoisite",
drawtype = "plantlike", drawtype = "plantlike",
paramtype = "light", paramtype = "light",
tiles = {"fun_caves_zoisite.png"}, tiles = {"fun_caves_zoisite.png"},
@ -288,7 +345,7 @@ minetest.register_node("fun_caves:stone_with_zoisites", {
description = "Zoisite Ore", description = "Zoisite Ore",
tiles = {"default_stone.png^fun_caves_mineral_zoisite.png"}, tiles = {"default_stone.png^fun_caves_mineral_zoisite.png"},
groups = {cracky = 1}, groups = {cracky = 1},
drop = "fun_caves:perfect_zoisite", drop = "fun_caves:zoisite",
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
}) })
@ -296,7 +353,7 @@ minetest.register_ore({
ore_type = "scatter", ore_type = "scatter",
ore = "fun_caves:stone_with_zoisites", ore = "fun_caves:stone_with_zoisites",
wherein = "default:stone", wherein = "default:stone",
clust_scarcity = 17 * 17 * 17, clust_scarcity = 21 * 21 * 21,
clust_num_ores = 1, clust_num_ores = 1,
clust_size = 1, clust_size = 1,
y_min = -31000, y_min = -31000,
@ -319,14 +376,14 @@ minetest.register_craftitem("fun_caves:teleporter_iron_aquamarine", {
minetest.register_craft({ minetest.register_craft({
output = 'fun_caves:teleporter_iron_aquamarine', output = 'fun_caves:teleporter_iron_aquamarine',
recipe = { 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:perfect_aquamarine', 'fun_caves:perfect_aquamarine', 'fun_caves:perfect_aquamarine'}, {'fun_caves:aquamarine', 'fun_caves:aquamarine', 'fun_caves:aquamarine'},
{'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'}, {'fun_caves:sky_iron', 'default:obsidian_shard', 'fun_caves:sky_iron'},
} }
}) })
minetest.register_craftitem("fun_caves:perfect_aquamarine", { minetest.register_craftitem("fun_caves:aquamarine", {
description = "Perfect Aquamarine", description = "Aquamarine",
drawtype = "plantlike", drawtype = "plantlike",
paramtype = "light", paramtype = "light",
tiles = {"fun_caves_aquamarine.png"}, tiles = {"fun_caves_aquamarine.png"},
@ -339,7 +396,7 @@ minetest.register_node("fun_caves:stone_with_aquamarines", {
description = "Aquamarine Ore", description = "Aquamarine Ore",
tiles = {"default_stone.png^fun_caves_mineral_aquamarine.png"}, tiles = {"default_stone.png^fun_caves_mineral_aquamarine.png"},
groups = {cracky = 1}, groups = {cracky = 1},
drop = "fun_caves:perfect_aquamarine", drop = "fun_caves:aquamarine",
sounds = default.node_sound_stone_defaults(), sounds = default.node_sound_stone_defaults(),
}) })
@ -347,7 +404,7 @@ minetest.register_ore({
ore_type = "scatter", ore_type = "scatter",
ore = "fun_caves:stone_with_aquamarines", ore = "fun_caves:stone_with_aquamarines",
wherein = "default:stone", wherein = "default:stone",
clust_scarcity = 17 * 17 * 17, clust_scarcity = 21 * 21 * 21,
clust_num_ores = 1, clust_num_ores = 1,
clust_size = 1, clust_size = 1,
y_min = -31000, y_min = -31000,
@ -405,6 +462,42 @@ minetest.register_craft({
cooktime = 30, 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", { minetest.register_craftitem("fun_caves:crucible", {
description = "Crucible", description = "Crucible",
@ -433,12 +526,12 @@ newnode.groups.soil = 0
minetest.register_node("fun_caves:meteorite_crater", newnode) minetest.register_node("fun_caves:meteorite_crater", newnode)
local treasures = { 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: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: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: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: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', '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', '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', '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', 'default:obsidian'},
} }
local filler = {'default:apple 10', 'default:coal_lump 10', 'default:wood 10'} local filler = {'default:apple 10', 'default:coal_lump 10', 'default:wood 10'}
local trophies = { local trophies = {

Binary file not shown.

After

Width:  |  Height:  |  Size: 362 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 299 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 275 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 260 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

View file

@ -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 Original garnet: von de Wela49 (cc-by-sa 3), https://en.wikipedia.org/wiki/File:Garnet_cut.JPG
Modified radioactive ore: everamzah 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 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