many worldgen mods and gonna try technic now

This commit is contained in:
2026-09-13 03:30:48 -06:00
parent bac6ac94a3
commit 548749cb1a
4811 changed files with 163271 additions and 1 deletions
+26
View File
@@ -0,0 +1,26 @@
Dwarf Fortress is copyright 2018 by Tarn Adams. This mod uses no assets or other copyrighted materials from Dwarf Fortress.
Sounds and textures are under various licenses, see the license.txt file in the /sounds and /textures directories for details.
License for Code
----------------
Copyright (C) 2018 FaceDeer
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
+44
View File
@@ -0,0 +1,44 @@
-- These used to be defined in subterrane, but now dfcaverns handles it.
if not minetest.registered_nodes["subterrane:wet_flowstone"] then
minetest.register_alias("subterrane:dry_stal_1", "df_mapitems:dry_stal_1")
minetest.register_alias("subterrane:dry_stal_2", "df_mapitems:dry_stal_2")
minetest.register_alias("subterrane:dry_stal_3", "df_mapitems:dry_stal_3")
minetest.register_alias("subterrane:dry_stal_4", "df_mapitems:dry_stal_4")
minetest.register_alias("subterrane:wet_stal_1", "df_mapitems:wet_stal_1")
minetest.register_alias("subterrane:wet_stal_2", "df_mapitems:wet_stal_2")
minetest.register_alias("subterrane:wet_stal_3", "df_mapitems:wet_stal_3")
minetest.register_alias("subterrane:wet_stal_4", "df_mapitems:wet_stal_4")
minetest.register_alias("subterrane:wet_flowstone", "df_mapitems:wet_flowstone")
minetest.register_alias("subterrane:dry_flowstone", "df_mapitems:dry_flowstone")
end
minetest.register_alias("dfcaverns:cave_coral_3" , "df_mapitems:cave_coral_3" )
minetest.register_alias("dfcaverns:cave_coral_2" , "df_mapitems:cave_coral_2" )
minetest.register_alias("dfcaverns:cave_coral_1" , "df_mapitems:cave_coral_1" )
minetest.register_alias("dfcaverns:dry_stal_1" , "df_mapitems:dry_stal_1" )
minetest.register_alias("dfcaverns:dry_stal_2" , "df_mapitems:dry_stal_2" )
minetest.register_alias("dfcaverns:dry_stal_3" , "df_mapitems:dry_stal_3" )
minetest.register_alias("dfcaverns:dry_stal_4" , "df_mapitems:dry_stal_4" )
minetest.register_alias("dfcaverns:wet_stal_1" , "df_mapitems:wet_stal_1" )
minetest.register_alias("dfcaverns:wet_stal_2" , "df_mapitems:wet_stal_2" )
minetest.register_alias("dfcaverns:wet_stal_3" , "df_mapitems:wet_stal_3" )
minetest.register_alias("dfcaverns:wet_stal_4" , "df_mapitems:wet_stal_4" )
minetest.register_alias("dfcaverns:wet_flowstone" , "df_mapitems:wet_flowstone" )
minetest.register_alias("dfcaverns:dry_flowstone" , "df_mapitems:dry_flowstone" )
minetest.register_alias("dfcaverns:icicle_1" , "df_mapitems:icicle_1" )
minetest.register_alias("dfcaverns:icicle_2" , "df_mapitems:icicle_2" )
minetest.register_alias("dfcaverns:icicle_3" , "df_mapitems:icicle_3" )
minetest.register_alias("dfcaverns:icicle_4" , "df_mapitems:icicle_4" )
minetest.register_alias("dfcaverns:glow_mese" , "df_mapitems:glow_mese" )
minetest.register_alias("dfcaverns:glow_ruby_ore" , "df_mapitems:glow_ruby_ore" )
minetest.register_alias("dfcaverns:big_crystal" , "df_mapitems:big_crystal" )
minetest.register_alias("dfcaverns:med_crystal" , "df_mapitems:med_crystal" )
minetest.register_alias("dfcaverns:big_crystal_30" , "df_mapitems:big_crystal_30" )
minetest.register_alias("dfcaverns:med_crystal_30" , "df_mapitems:med_crystal_30" )
minetest.register_alias("dfcaverns:big_crystal_30_45" , "df_mapitems:big_crystal_30_45" )
minetest.register_alias("dfcaverns:med_crystal_30_45" , "df_mapitems:med_crystal_30_45" )
minetest.register_alias("dfcaverns:glow_worm" , "df_mapitems:glow_worm" )
minetest.register_alias("dfcaverns:dirt_with_cave_moss" , "df_mapitems:dirt_with_cave_moss" )
minetest.register_alias("dfcaverns:cobble_with_floor_fungus" , "df_mapitems:cobble_with_floor_fungus" )
minetest.register_alias("dfcaverns:cobble_with_floor_fungus_fine", "df_mapitems:cobble_with_floor_fungus_fine")
minetest.register_alias("dfcaverns:snareweed" , "df_mapitems:snareweed" )
@@ -0,0 +1,98 @@
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:castle_coral", {
description = S("Castle Coral"),
tiles = {
"dfcaverns_castle_coral_gradient.png",
"dfcaverns_castle_coral.png",
"dfcaverns_castle_coral.png",
"dfcaverns_castle_coral.png^[multiply:#888888",
},
_doc_items_longdesc = df_mapitems.doc.castle_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.castle_coral_usage,
drawtype = "mesh",
is_ground_content = false,
light_source = 2,
mesh = "octagonal_coral.obj",
drop = "df_mapitems:castle_coral_skeleton",
paramtype = "light",
groups = {cracky=2, pickaxey = 1, building_block = 1, coral=1, coral_block=1},
sounds = df_dependencies.sound_stone(),
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
minetest.register_node("df_mapitems:castle_coral_skeleton", {
description = S("Castle Coral Skeleton"),
_doc_items_longdesc = df_mapitems.doc.castle_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.castle_coral_usage,
tiles = {
df_dependencies.texture_coral_skeleton
},
drawtype = "mesh",
mesh = "octagonal_coral.obj",
paramtype = "light",
is_ground_content = false,
groups = {cracky = 3,pickaxey = 1, building_block = 1, coral=2, coral_block=1},
sounds = df_dependencies.sound_stone(),
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
local c_coral = minetest.get_content_id("df_mapitems:castle_coral")
local c_coral_skeleton = minetest.get_content_id("df_mapitems:castle_coral_skeleton")
local c_stone = minetest.get_content_id(df_dependencies.node_name_stone)
local c_water = minetest.get_content_id(df_dependencies.node_name_water_source)
df_mapitems.spawn_castle_coral = function(area, data, vi, iterations)
local run = math.random(2,4)
local index = vi
local zstride = area.zstride
local ystride = area.ystride
while run > 0 do
-- TODO should this be checking for not-water instead of stone?
if math.random() > 0.95 or data[index] == c_stone or not area:containsi(index) then return end
data[index] = c_coral
if iterations > 2 then
data[index + 1] = c_coral
data[index - 1] = c_coral
data[index + zstride] = c_coral
data[index - zstride] = c_coral
end
if iterations > 3 then
data[index + 2] = c_coral
data[index - 2] = c_coral
data[index + zstride * 2] = c_coral
data[index - zstride * 2] = c_coral
data[index + 1 + zstride] = c_coral
data[index - 1 + zstride] = c_coral
data[index + 1 - zstride] = c_coral
data[index - 1 - zstride] = c_coral
end
index = index + ystride
run = run - 1
end
local newiterations = iterations - 1
if newiterations == 0 then return end
if math.random() > 0.5 then
df_mapitems.spawn_castle_coral(area, data, index + 1 - ystride, newiterations)
df_mapitems.spawn_castle_coral(area, data, index - 1 - ystride, newiterations)
else
df_mapitems.spawn_castle_coral(area, data, index + zstride - ystride, newiterations)
df_mapitems.spawn_castle_coral(area, data, index - zstride - ystride, newiterations)
end
end
df_mapitems.spawn_coral_pile = function(area, data, vi, radius)
local pos = area:position(vi)
for li in area:iterp(vector.add(pos, -radius), vector.add(pos, radius)) do
local adjacent = li + area.ystride
local node_type = data[li]
if math.random() < 0.2 and not mapgen_helper.buildable_to(node_type) and data[adjacent] == c_water then
data[adjacent] = c_coral_skeleton
end
end
end
+78
View File
@@ -0,0 +1,78 @@
local S = minetest.get_translator(minetest.get_current_modname())
local water_source = df_dependencies.node_name_water_source
local coral_skeleton = df_dependencies.node_name_coral_skeleton
minetest.register_node("df_mapitems:cave_coral_3", {
description = S("Cave Coral"),
_doc_items_longdesc = df_mapitems.doc.cave_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.cave_coral_usage,
tiles = {"dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral.png"},
drop = coral_skeleton,
light_source = 3,
paramtype2 = "facedir",
is_ground_content = false,
groups = {cracky = 3, dfcaverns_cave_coral = 1, pickaxey = 1, building_block = 1, coral=1, coral_block=1},
sounds = df_dependencies.sound_stone(),
on_timer = function(pos)
if minetest.find_node_near(pos, 1, {water_source}) == nil then
minetest.set_node(pos, {name=coral_skeleton})
end
end,
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
minetest.register_node("df_mapitems:cave_coral_2", {
description = S("Cave Coral"),
_doc_items_longdesc = df_mapitems.doc.cave_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.cave_coral_usage,
tiles = {"dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral.png"},
drop = coral_skeleton,
light_source = 2,
paramtype2 = "facedir",
is_ground_content = false,
groups = {cracky = 3, dfcaverns_cave_coral = 1, pickaxey = 1, building_block = 1, coral=1, coral_block=1},
sounds = df_dependencies.sound_stone(),
on_timer = function(pos)
if minetest.find_node_near(pos, 1, {water_source}) == nil then
minetest.set_node(pos, {name=coral_skeleton})
end
end,
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
minetest.register_node("df_mapitems:cave_coral_1", {
description = S("Cave Coral"),
_doc_items_longdesc = df_mapitems.doc.cave_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.cave_coral_usage,
tiles = {"dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral.png"},
drop = coral_skeleton,
light_source = 1,
paramtype2 = "facedir",
is_ground_content = false,
groups = {cracky = 3, dfcaverns_cave_coral = 1, pickaxey = 1, building_block = 1, coral=1, coral_block=1},
sounds = df_dependencies.sound_stone(),
on_timer = function(pos)
if minetest.find_node_near(pos, 1, {water_source}) == nil then
minetest.set_node(pos, {name=coral_skeleton})
end
end,
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
local coral_names = {"df_mapitems:cave_coral_1", "df_mapitems:cave_coral_2", "df_mapitems:cave_coral_3"}
local water_node = df_dependencies.node_name_water_source
minetest.register_abm{
label = "df_mapitems:shifting_coral",
nodenames = {"group:dfcaverns_cave_coral"},
neighbors = {water_node},
interval = 2,
chance = 10,
action = function(pos)
local node = minetest.get_node(pos)
minetest.swap_node(pos, {name=coral_names[math.random(1,3)], param2=node.param2})
end,
}
@@ -0,0 +1,27 @@
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:cave_pearls", {
description = S("Cave Pearls"),
tiles = {"dfcaverns_cave_pearl.png"},
_doc_items_longdesc = df_mapitems.doc.cave_pearls_desc,
_doc_items_usagehelp = df_mapitems.doc.cave_pearls_usage,
drawtype = "nodebox",
paramtype = "light",
paramtype2 = "facedir",
groups = {cracky = 2, pickaxey = 2,},
walkable = false,
is_ground_content = false,
climbable = true,
light_source = 4,
node_box = {
type = "fixed",
fixed = {
{-0.375, -0.5, -0.375, -0.125, -0.3125, -0.125}, -- NodeBox1
{0.125, -0.5, -0.1875, 0.3125, -0.375, 0}, -- NodeBox2
{-0.125, -0.5, 0.25, 0.0625, -0.375, 0.4375}, -- NodeBox3
}
},
on_place = df_mapitems.place_against_surface,
_mcl_hardness = 1.5,
_mcl_blast_resistance = 6,
})
+27
View File
@@ -0,0 +1,27 @@
local CONFIG_FILE_PREFIX = "dfcaverns_"
df_mapitems.config = {}
local print_settingtypes = false
local function setting(stype, name, default, description)
local value
if stype == "bool" then
value = minetest.settings:get_bool(CONFIG_FILE_PREFIX..name, default)
elseif stype == "string" then
value = minetest.settings:get(CONFIG_FILE_PREFIX..name)
elseif stype == "int" or stype == "float" then
value = tonumber(minetest.settings:get(CONFIG_FILE_PREFIX..name))
end
if value == nil then
value = default
end
df_mapitems.config[name] = value
if print_settingtypes then
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
end
end
setting("float", "glow_worm_delay_multiplier", 10.0, "glow worm growth delay multiplier")
setting("bool", "snareweed_damage", true, "Snareweed causes damage to players")
@@ -0,0 +1,62 @@
local S = minetest.get_translator(minetest.get_current_modname())
--glowing mese crystal blocks
minetest.register_node("df_mapitems:glow_mese", {
description = S("Flawless Mese Block"),
_doc_items_longdesc = df_mapitems.doc.glow_mese_desc,
_doc_items_usagehelp = df_mapitems.doc.glow_mese_usage,
tiles = {"dfcaverns_glow_mese.png"},
groups = {cracky=3, pickaxey=4, material_stone=1, enderman_takable=1},
sounds = df_dependencies.sound_glass(),
is_ground_content = false,
light_source = 13,
paramtype = "light",
use_texture_alpha = "blend",
drawtype = "glasslike",
sunlight_propagates = true,
_mcl_blast_resistance = 1.5,
_mcl_hardness = 1.5,
})
minetest.register_craft({
output = 'df_mapitems:mese_crystal 2',
recipe = {
{'df_mapitems:glow_mese'},
}
})
minetest.register_node("df_mapitems:mese_crystal", {
description = S("Flawless Mese Crystal"),
_doc_items_longdesc = df_mapitems.doc.glow_mese_desc,
_doc_items_usagehelp = df_mapitems.doc.glow_mese_usage,
tiles = {"dfcaverns_glow_mese.png"},
groups = {cracky = 2, pickaxey=4, material_stone=1, building_block=1, enderman_takable=1},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "mesh",
mesh = "underch_crystal.obj",
light_source = 12,
is_ground_content = false,
sounds = df_dependencies.sound_glass(),
use_texture_alpha = "blend",
sunlight_propagates = true,
on_place = df_mapitems.place_against_surface,
_mcl_blast_resistance = 1.5,
_mcl_hardness = 1.5,
})
minetest.register_craft({
output = df_dependencies.node_name_mese_crystal .. ' 18',
recipe = {
{'df_mapitems:mese_crystal'},
}
})
if minetest.get_modpath("radiant_damage") and radiant_damage.override_radiant_damage and radiant_damage.config.enable_mese_damage then
radiant_damage.override_radiant_damage("mese", {
emitted_by = {
["df_mapitems:glow_mese"] = radiant_damage.config.mese_damage*12,
["df_mapitems:mese_crystal"] = radiant_damage.config.mese_damage*9
}
})
end
@@ -0,0 +1,329 @@
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:glow_ruby_ore", {
description = S("Red Crystal Vein"),
_doc_items_longdesc = df_mapitems.doc.glow_ruby_ore_desc,
_doc_items_usagehelp = df_mapitems.doc.glow_ruby_ore_usage,
tiles = {"dfcaverns_glow_ruby_ore.png"},
is_ground_content = false,
groups = {cracky=2, pickaxey=3, material_stone=1},
sounds = df_dependencies.sound_glass(),
_mcl_blast_resistance = 1.5,
_mcl_hardness = 1.5,
})
minetest.register_node("df_mapitems:big_crystal", {
description = S("Giant Red Crystal"),
_doc_items_longdesc = df_mapitems.doc.big_crystal_desc,
_doc_items_usagehelp = df_mapitems.doc.big_crystal_usage,
drawtype = "mesh",
mesh = "hex_crystal_big.obj",
tiles = {
"dfcaverns_glow_ruby4x.png",
"dfcaverns_glow_ruby.png",
},
use_texture_alpha = "blend",
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
sunlight_propagates = true,
light_source = 12,
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1, enderman_takable=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 3, 0.5},
},
collision_box = {
type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 3, 0.5},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_mapitems:med_crystal", {
description = S("Big Red Crystal"),
_doc_items_longdesc = df_mapitems.doc.big_crystal_desc,
_doc_items_usagehelp = df_mapitems.doc.big_crystal_usage,
drawtype = "mesh",
mesh = "hex_crystal_med.obj",
tiles = {
"dfcaverns_glow_ruby.png",
"dfcaverns_glow_ruby_quarter.png",
},
use_texture_alpha = "blend",
paramtype = "light",
paramtype2 = "facedir",
is_ground_content = false,
sunlight_propagates = true,
light_source = 12,
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 1.25, 0.25},
},
collision_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 1.25, 0.25},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_mapitems:big_crystal_30", {
description = S("Giant Red Crystal"),
_doc_items_longdesc = df_mapitems.doc.big_crystal_desc,
_doc_items_usagehelp = df_mapitems.doc.big_crystal_usage,
drawtype = "mesh",
mesh = "hex_crystal_30_big.obj",
tiles = {
"dfcaverns_glow_ruby4x.png",
"dfcaverns_glow_ruby.png",
},
use_texture_alpha = "blend",
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
is_ground_content = false,
light_source = 12,
drop = "df_mapitems:big_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1, enderman_takable=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.625, 0.5, 0.5, 0.375},
{-0.5, 0.5, -1.25, 0.5, 1.5, -0.25},
{-0.5, 1.5, -1.875, 0.5, 2.5, -0.875},
--The following is a more accurate set of collision boxes that theoretically
--allows the crystal to be climbed like stairs, but in practice the physics
--don't seem to work quite right so I'm leaving it "simple" for now.
-- {-0.5, -0.5, -0.625, 0.5, 0.0, 0.375},
-- {-0.5, 0.0, -0.9375, 0.5, 0.5, 0.0625},
-- {-0.5, 0.5, -1.25, 0.5, 1.0, -0.25},
-- {-0.5, 1.0, -1.5625, 0.5, 1.5, -0.5625},
-- {-0.5, 1.5, -1.875, 0.5, 2.0, -0.875},
-- {-0.25, 2.0, -1.625, 0.25, 2.5, -1.125},
},
},
collision_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.625, 0.5, 0.5, 0.375},
{-0.5, 0.5, -1.25, 0.5, 1.5, -0.25},
{-0.5, 1.5, -1.875, 0.5, 2.5, -0.875},
-- {-0.5, -0.5, -0.625, 0.5, 0.0, 0.375},
-- {-0.5, 0.0, -0.9375, 0.5, 0.5, 0.0625},
-- {-0.5, 0.5, -1.25, 0.5, 1.0, -0.25},
-- {-0.5, 1.0, -1.5625, 0.5, 1.5, -0.5625},
-- {-0.5, 1.5, -1.875, 0.5, 2.0, -0.875},
-- {-0.25, 2.0, -1.625, 0.25, 2.5, -1.125},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_mapitems:med_crystal_30", {
description = S("Big Red Crystal"),
_doc_items_longdesc = df_mapitems.doc.big_crystal_desc,
_doc_items_usagehelp = df_mapitems.doc.big_crystal_usage,
drawtype = "mesh",
mesh = "hex_crystal_30_med.obj",
tiles = {
"dfcaverns_glow_ruby.png",
"dfcaverns_glow_ruby_quarter.png",
},
use_texture_alpha = "blend",
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
is_ground_content = false,
light_source = 12,
drop = "df_mapitems:med_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.3125, 0.25, 0.0, 0.1875},
{-0.25, 0.0, -0.625, 0.25, 0.5, -0.125},
{-0.25, 0.5, -0.9375, 0.25, 1.0, -0.4375},
}
},
collision_box = {
type = "fixed",
fixed = {
{-0.25, -0.5, -0.3125, 0.25, 0.0, 0.1875},
{-0.25, 0.0, -0.625, 0.25, 0.5, -0.125},
{-0.25, 0.5, -0.9375, 0.25, 1.0, -0.4375},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_mapitems:big_crystal_30_45", {
description = S("Giant Red Crystal"),
_doc_items_longdesc = df_mapitems.doc.big_crystal_desc,
_doc_items_usagehelp = df_mapitems.doc.big_crystal_usage,
drawtype = "mesh",
mesh = "hex_crystal_30_45_big.obj",
tiles = {
"dfcaverns_glow_ruby4x.png",
"dfcaverns_glow_ruby.png",
},
use_texture_alpha = "blend",
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
is_ground_content = false,
light_source = 12,
drop = "df_mapitems:big_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1, enderman_takable=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {
{-0.375, -0.5, -0.625, 0.625, 0.5, 0.375},
{0.0625, 0.5, -1.0625, 1.0625, 1.5, -0.0625},
{0.5, 1.5, -1.5, 1.5, 2.5, -0.5},
},
},
collision_box = {
type = "fixed",
fixed = {
{-0.375, -0.5, -0.625, 0.625, 0.5, 0.375},
{0.0625, 0.5, -1.0625, 1.0625, 1.5, -0.0625},
{0.5, 1.5, -1.5, 1.5, 2.5, -0.5},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("df_mapitems:med_crystal_30_45", {
description = S("Big Red Crystal"),
_doc_items_longdesc = df_mapitems.doc.big_crystal_desc,
_doc_items_usagehelp = df_mapitems.doc.big_crystal_usage,
drawtype = "mesh",
mesh = "hex_crystal_30_45_med.obj",
tiles = {
"dfcaverns_glow_ruby4x.png",
"dfcaverns_glow_ruby.png",
},
use_texture_alpha = "blend",
paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
is_ground_content = false,
light_source = 12,
drop = "df_mapitems:med_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1, pickaxey=5, material_stone=1},
sounds = df_dependencies.sound_glass(),
selection_box = {
type = "fixed",
fixed = {
{-0.1875, -0.5, -0.3125, 0.3125, 0.0, 0.1875},
{0.03125, 0.0, -0.53125, 0.53125, 0.5, -0.03125},
{0.25, 0.5, -0.75, 0.75, 1.0, -0.25},
},
},
collision_box = {
type = "fixed",
fixed = {
{-0.1875, -0.5, -0.3125, 0.3125, 0.0, 0.1875},
{0.03125, 0.0, -0.53125, 0.53125, 0.5, -0.03125},
{0.25, 0.5, -0.75, 0.75, 1.0, -0.25},
},
},
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_craft({
type = "shapeless",
output = 'df_mapitems:big_crystal_30',
recipe = {'df_mapitems:big_crystal'},
})
minetest.register_craft({
type = "shapeless",
output = 'df_mapitems:big_crystal_30_45',
recipe = {'df_mapitems:big_crystal_30'},
})
minetest.register_craft({
type = "shapeless",
output = 'df_mapitems:big_crystal',
recipe = {'df_mapitems:big_crystal_30_45'},
})
minetest.register_craft({
type = "shapeless",
output = 'df_mapitems:med_crystal_30',
recipe = {'df_mapitems:med_crystal'},
})
minetest.register_craft({
type = "shapeless",
output = 'df_mapitems:med_crystal_30_45',
recipe = {'df_mapitems:med_crystal_30'},
})
minetest.register_craft({
type = "shapeless",
output = 'df_mapitems:med_crystal',
recipe = {'df_mapitems:med_crystal_30_45'},
})
local c_stone = minetest.get_content_id(df_dependencies.node_name_stone)
local c_air = minetest.get_content_id("air")
local c_big_crystal = minetest.get_content_id("df_mapitems:big_crystal")
local c_med_crystal = minetest.get_content_id("df_mapitems:med_crystal")
local c_big_crystal_30 = minetest.get_content_id("df_mapitems:big_crystal_30")
local c_med_crystal_30 = minetest.get_content_id("df_mapitems:med_crystal_30")
local c_big_crystal_30_45 = minetest.get_content_id("df_mapitems:big_crystal_30_45")
local c_med_crystal_30_45 = minetest.get_content_id("df_mapitems:med_crystal_30_45")
local c_glow_ore = minetest.get_content_id("df_mapitems:glow_ruby_ore")
df_mapitems.place_big_crystal = function(data, data_param2, vi, ceiling)
local orientation = math.random()
if orientation < 0.33 then
if math.random() > 0.5 then
data[vi] = c_big_crystal
else
data[vi] = c_med_crystal
end
elseif orientation < 0.66 then
if math.random() > 0.5 then
data[vi] = c_big_crystal_30
else
data[vi] = c_med_crystal_30
end
else
if math.random() > 0.5 then
data[vi] = c_big_crystal_30_45
else
data[vi] = c_med_crystal_30_45
end
end
if ceiling then
data_param2[vi] = math.random(20,23)
else
data_param2[vi] = math.random(0,3)
end
end
df_mapitems.place_big_crystal_cluster = function(area, data, data_param2, vi, radius, ceiling)
local y
if ceiling then y = -1 else y = 1 end
local pos = area:position(vi)
for li in area:iterp(vector.add(pos, -radius), vector.add(pos, radius)) do
local adjacent = li + y*area.ystride
if math.random() > 0.5 and data[li] == c_stone and data[adjacent] == c_air then
df_mapitems.place_big_crystal(data, data_param2, adjacent, ceiling)
data[li] = c_glow_ore
end
end
end
@@ -0,0 +1,36 @@
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:salt_crystal", {
description = S("Luminous Salt Crystal"),
_doc_items_longdesc = df_mapitems.doc.salt_desc,
_doc_items_usagehelp = df_mapitems.doc.salt_usage,
tiles = {"dfcaverns_salt_crystal.png"},
groups = {cracky = 2, pickaxey = 1, shovely=1, material_stone=1},
paramtype = "light",
paramtype2 = "facedir",
drawtype = "mesh",
mesh = "underch_crystal.obj",
light_source = 6,
sounds = df_dependencies.sound_glass(),
use_texture_alpha = "blend",
sunlight_propagates = true,
is_ground_content = false,
on_place = df_mapitems.place_against_surface,
_mcl_blast_resistance = 1,
_mcl_hardness = 1,
})
minetest.register_node("df_mapitems:salty_cobble", {
description = S("Salty Cobble"),
_doc_items_longdesc = df_mapitems.doc.salty_cobble_desc,
_doc_items_usagehelp = df_mapitems.doc.salty_cobble_desc,
tiles = {df_dependencies.texture_cobble .. "^dfcaverns_salty.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, pickaxey = 1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 2,
drop = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone(),
_mcl_blast_resistance = 6,
_mcl_hardness = 2,
})
+69
View File
@@ -0,0 +1,69 @@
df_mapitems.doc = {}
if not minetest.get_modpath("doc") then
return
end
local S = minetest.get_translator(minetest.get_current_modname())
df_mapitems.doc.cave_moss_desc = S("Cave moss is technically a form of mold, but fortunately a relatively benign one given its ubiquity. Its fibers form a tough but springy mat over the surface of any organic-rich soil that accumulates deep underground.")
df_mapitems.doc.cave_moss_usage = S("Cave moss has no known uses aside from the faint glow it emits. It dies when exposed to bright light sources such as the Sun.")
df_mapitems.doc.floor_fungus_desc = S("Floor fungus produces a thin, slick film that spreads through the cracks of broken rock. Its ability to subsist on the tiniest traces of nutrients means it's found in relatively harsh underground environments.")
df_mapitems.doc.floor_fungus_usage = S("Floor fungus has no known uses. It can penetrate deeply into cobblestone constructions if an infestation gets hold, but it is difficult to transport and is inhibited by light so it hasn't spread beyond the deep caverns.")
df_mapitems.doc.sand_scum_desc = S("Sand scum is a crust of algae that sometimes accumulates on wet sand deep underground, somehow managing to eke out a meager living from the phosphorescent light emitted by other organisms.")
df_mapitems.doc.sand_scum_usage = S("Sand scum is useless. You can get sand out of it, at least.")
df_mapitems.doc.pebble_fungus_desc = S("Soil that is rich enough to support gigantic mushrooms can support innumerable smaller ones as well. Pebble fungus is a prolific form of mushroom that covers the soil in small spheroidal fruiting bodies.")
df_mapitems.doc.pebble_fungus_usage = S("Pebble fungus grows in soil that is rich enough for farming.")
df_mapitems.doc.stillworm_desc = S("Stillworm is not actually a kind of worm, but a sort of fungus that looks uncannily like pale, motionless earthworms intertwined with the soil.")
df_mapitems.doc.stillworm_usage = S("Stillworm grows in soil that is rich enough for farming.")
df_mapitems.doc.rock_rot_desc = S("A highly aggressive form of lichen that eats into solid rock, turning its upper surfaces rough and a little spongy.")
df_mapitems.doc.rock_rot_usage = S("Organic material accumulates in the enlarged pores of rock rot, but not enough to be considered \"soil\" in the usable sense.")
df_mapitems.doc.spongestone_desc = S("Spongestone is the result of advanced rock rot in its ultimate form. The stone has become so riddled with pores and cavities that it's no longer really stone.")
df_mapitems.doc.spongestone_usage = S("Although a strong mineral matrix remains, spongestone has enough organic content that it can be used as soil for farming.")
df_mapitems.doc.hoar_moss_desc = S("Hoar moss is a strange glowing crust that sometimes forms on the surface of water flowing over ice.")
df_mapitems.doc.hoar_moss_usage = S("Hoar moss has no known use aside from providing a faint source of light.")
df_mapitems.doc.glow_worms_desc = S("Glistening strings of silk hang from the ceilings of some of the larger caverns, lit by the millions of tiny bioluminescent worms that spun them. Glow worms prey on the insects they lure and entangle with their faux starry sky - and sometimes the occasional bat or other larger flying beast.")
df_mapitems.doc.glow_worms_usage = S("Glow worms can be harvested and used as a source of light but they die when exposed to light significantly brighter than themselves or when immersed in water. A colony of glow worms hung in a hospitable environment will undergo a modest amount of growth, allowing it to be divided and propagated.")
df_mapitems.doc.snareweed_desc = S("A nasty kelp-like plant that grows in patches on the floor of the Sunless Sea. Its reflective patches draw in the unwary and then its prickly barbs catch and hold small creatures.")
df_mapitems.doc.snareweed_usage = S("Snareweed has no practical use, its fibers disintegrate when they dry.")
df_mapitems.doc.cave_coral_desc = S("A rare form of coral found only deep underground in the Sunless Sea, cave coral grows hanging from the ceilings of flooded caverns.")
df_mapitems.doc.cave_coral_usage = S("Aside from their aesthetic beauty, cave corals can be harvested for simple building materials.")
df_mapitems.doc.flowstone_desc = S("Flowstone is a carbonate-rich rock formation deposited by flowing water. It consists of minerals that the water dissolved earlier as it widens cracks and fissures into caves.")
df_mapitems.doc.flowstone_usage = S("Aside from the aesthetic beauty of its formations flowstone has no special properties or uses.")
df_mapitems.doc.dripstone_desc = S("The iconic stalactites and stalagmites found in caverns are composed of flowstone (or 'dripstone' in the case of these formations). Moist dripstone is still undergoing growth, whereas dry dripstone is found in 'dead' caverns once the source of water that created them ceases.")
df_mapitems.doc.dripstone_usage = S("Although stalagmites are blunter than the stalactites above them, they can cause extra damage to the unwary caver who falls on them.")
df_mapitems.doc.icicle_desc = S("Ice formed by water dripping slowly into a cold environment, icicles tend to be exceptionally pure and clear.")
df_mapitems.doc.icicle_usage = S("Falling onto an icicle is particularly damaging.")
df_mapitems.doc.glow_mese_desc = S("Deep in the infernal conditions of the magma sea, over the course of millions of years, mese crystals grow into flawless blocks that glow bright with strange energies.")
df_mapitems.doc.glow_mese_usage = S("These blocks can be broken down into a large number of mese crystals, but cannot be artificially reassembled.")
df_mapitems.doc.glow_ruby_ore_desc = S("Large, dry caverns deep underground are well suited to aeons-long processes that concentrate crystalline substances in their walls. This rock is riddled with veins of the stuff.")
df_mapitems.doc.glow_ruby_ore_usage = S("Aside from its aesthetic value this rock has no particular use.")
df_mapitems.doc.big_crystal_desc = S("Monolithic crystals of this size form only over extremely long periods deep underground, in large long-lived cavities that allow them room to grow. Water and the life it hosts tend to disrupt the formation process of these crystals so they're only found in dry environments.")
df_mapitems.doc.big_crystal_usage = S("Aside from its aesthetic value this crystal has no particular use.")
df_mapitems.doc.cave_pearls_desc = S("These nodules are actually calcified bacterial colonies.")
df_mapitems.doc.cave_pearls_usage = S("Aside from their soft glow and beauty, cave pearls have no practical use. Except perhaps as handholds for climbing.")
df_mapitems.doc.castle_coral_desc = S("Deep under the surface of the Sunless Sea are the rare and beautiful Castle Corals, so named due to their resemblance to small undersea castles.")
df_mapitems.doc.castle_coral_usage = S("Castle Coral has little practical use aside from perhaps as a distinctive-looking building material.")
df_mapitems.doc.salt_desc = S("A crystal of salt grown from water that percolated through the depths of the earth, picking up all manner of minerals as it went.")
df_mapitems.doc.salt_usage = S("Traces of Mese must have been dissolved by the water as this crystal has an inherent glow to it. Not enough Mese to be useful as a reagent, unfortunately.")
df_mapitems.doc.salty_cobble_desc = S("Much water has seeped through the cracks in this rock and then quickly evaporated, leaving a crust of salt laced throughout.")
df_mapitems.doc.salty_cobble_usage = S("Attemping to mine this rock knocks the salt crust away, leaving only base stone.")
+78
View File
@@ -0,0 +1,78 @@
local S = minetest.get_translator(minetest.get_current_modname())
-----------------------------------------------
df_mapitems.dry_stalagmite_ids = subterrane.register_stalagmite_nodes("df_mapitems:dry_stal", {
description = S("Dry Dripstone"),
_doc_items_longdesc = df_mapitems.doc.dripstone_desc,
_doc_items_usagehelp = df_mapitems.doc.dripstone_usage,
tiles = {
df_dependencies.texture_stone .. "^[brighten",
},
groups = {cracky = 3, stone = 2, pickaxey=1, building_block=1, material_stone=1},
sounds = df_dependencies.sound_stone(),
is_ground_content = false,
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
minetest.register_node("df_mapitems:dry_flowstone", {
description = S("Dry Flowstone"),
_doc_items_longdesc = df_mapitems.doc.flowstone_desc,
_doc_items_usagehelp = df_mapitems.doc.flowstone_usage,
tiles = {df_dependencies.texture_stone .. "^[brighten"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
drop = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone(),
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
-----------------------------------------------
df_mapitems.wet_stalagmite_ids = subterrane.register_stalagmite_nodes("df_mapitems:wet_stal", {
description = S("Wet Dripstone"),
_doc_items_longdesc = df_mapitems.doc.dripstone_desc,
_doc_items_usagehelp = df_mapitems.doc.dripstone_usage,
tiles = {
df_dependencies.texture_stone .. "^[brighten^dfcaverns_dripstone_streaks.png",
},
groups = {cracky = 3, stone = 2, subterrane_wet_dripstone = 1, pickaxey=1, building_block=1, material_stone=1},
sounds = df_dependencies.sound_stone(),
is_ground_content = false,
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
}, "df_mapitems:dry_stal")
minetest.register_node("df_mapitems:wet_flowstone", {
description = S("Wet Flowstone"),
_doc_items_longdesc = df_mapitems.doc.flowstone_desc,
_doc_items_usagehelp = df_mapitems.doc.flowstone_usage,
tiles = {df_dependencies.texture_stone .. "^[brighten^dfcaverns_dripstone_streaks.png"},
groups = {cracky = 3, stone = 1, subterrane_wet_dripstone = 1, lava_heatable = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = "df_mapitems:dry_flowstone",
is_ground_content = false,
drop = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone(),
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
-----------------------------------------------
df_mapitems.icicle_ids = subterrane.register_stalagmite_nodes("df_mapitems:icicle", {
description = S("Icicle"),
_doc_items_longdesc = df_mapitems.doc.icicle_desc,
_doc_items_usagehelp = df_mapitems.doc.icicle_usage,
tiles = {
df_dependencies.texture_ice,
},
groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 3, pickaxey=1, building_block=1, handy=1, slippery=3, building_block=1, ice=1},
sounds = df_dependencies.sound_glass(),
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
})
+81
View File
@@ -0,0 +1,81 @@
local S = minetest.get_translator(minetest.get_current_modname())
local growth_multiplier = 1
if minetest.get_modpath("df_farming") then
growth_multiplier = df_farming.config.plant_growth_time
end
minetest.register_node("df_mapitems:glow_worm", {
description = S("Glow Worms"),
_doc_items_longdesc = df_mapitems.doc.glow_worms_desc,
_doc_items_usagehelp = df_mapitems.doc.glow_worms_usage,
tiles = {
{
name = "dfcaverns_glow_worm_animated.png",
animation = {
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 4.0,
},
},
},
inventory_image = "dfcaverns_glow_worm.png",
wield_image = "dfcaverns_glow_worm.png",
is_ground_content = false,
groups = {oddly_breakable_by_hand=3, light_sensitive_fungus = 12, shearsy=1, swordy=1, destroy_by_lava_flow=1},
_dfcaverns_dead_node = "air",
light_source = 9,
paramtype = "light",
drawtype = "plantlike",
walkable = false,
buildable_to = true,
floodable = true,
visual_scale = 1.0,
_mcl_blast_resistance = 0.2,
_mcl_hardness = 0.2,
after_place_node = function(pos, placer)
if df_mapitems.config.glow_worm_delay_multiplier > 0 then
minetest.get_node_timer(pos):start(math.random(
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 0.75,
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 1.25))
end
end,
on_timer = function(pos, elapsed)
local below = {x=pos.x, y=pos.y-1, z=pos.z}
if minetest.get_node(below).name == "air" then
minetest.set_node(below, {name="df_mapitems:glow_worm"})
if math.random() > 0.5 then
minetest.get_node_timer(below):start(math.random(
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 0.75,
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 1.25))
end
end
end,
})
local c_air = minetest.get_content_id("air")
local c_worm = minetest.get_content_id("df_mapitems:glow_worm")
df_mapitems.glow_worm_ceiling = function(area, data, vi)
local ystride = area.ystride
local bi = vi - ystride
if data[vi] == c_air and data[bi] == c_air then
data[vi] = c_worm
data[bi] = c_worm
if math.random(2) == 1 then
bi = bi - ystride
if data[bi] == c_air then
data[bi] = c_worm
if math.random(2) == 1 then
bi = bi - ystride
if data[bi] == c_air then
data[bi] = c_worm
end
end
end
end
end
end
+310
View File
@@ -0,0 +1,310 @@
local S = minetest.get_translator(minetest.get_current_modname())
local function soil_type_spread(label, node_to_spread, target_node)
minetest.register_abm{
label = label,
nodenames = {target_node},
neighbors = {node_to_spread},
interval = 60,
chance = 15,
catch_up = true,
action = function(pos)
local above_def = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name]
if above_def and (above_def.buildable_to == true or above_def.walkable == false) then
minetest.swap_node(pos, {name=node_to_spread})
end
end,
}
end
local farming_soil = df_dependencies.node_name_dirt_furrowed
local farming_soil_wet = df_dependencies.node_name_dirt_wet
--------------------------------------------------
-- Cave moss
-- cyan/dark cyan
local dirt_texture = df_dependencies.texture_dirt
local sand_texture = df_dependencies.texture_sand
local dirt_node = df_dependencies.node_name_dirt
local sand_node = df_dependencies.node_name_sand
local stone_node = df_dependencies.node_name_stone
local cobble_node = df_dependencies.node_name_cobble
minetest.register_node("df_mapitems:dirt_with_cave_moss", {
description = S("Dirt with Cave Moss"),
_doc_items_longdesc = df_mapitems.doc.cave_moss_desc,
_doc_items_usagehelp = df_mapitems.doc.cave_moss_usage,
tiles = {dirt_texture .. "^dfcaverns_cave_moss.png", dirt_texture,
{name = dirt_texture .. "^(dfcaverns_cave_moss.png^[mask:dfcaverns_ground_cover_side_mask.png)",
tileable_vertical = false}},
drop = dirt_node,
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, handy=1,shovely=1,dirt=2, soil_sapling=2, soil_sugarcane=1, cultivatable=1, enderman_takable=1, building_block=1, compostability=30, opaque=1},
sounds = df_dependencies.sound_dirt({footstep = {name = df_dependencies.soundfile_grass_footstep, gain = 0.25},}),
soil = {
base = "df_mapitems:dirt_with_cave_moss",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.6,
})
soil_type_spread("df_mapitems:cave_moss_spread", "df_mapitems:dirt_with_cave_moss", dirt_node)
---------------------------------------------------------------
-- Sand scum
minetest.register_node("df_mapitems:sand_scum", {
description = S("Sand Scum"),
_doc_items_longdesc = df_mapitems.doc.sand_scum_desc,
_doc_items_usagehelp = df_mapitems.doc.sand_scum_usage,
tiles = {"dfcaverns_ground_cover_sand_scum.png", sand_texture,
{name = sand_texture .. "^(dfcaverns_ground_cover_sand_scum.png^[mask:dfcaverns_ground_cover_side_mask.png)",
tileable_vertical = false}},
drop = sand_node,
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, handy=1,shovely=1, falling_node=1, sand=1, soil_sugarcane=1, enderman_takable=1, building_block=1, material_sand=1, opaque=1},
sounds = df_dependencies.sound_sand({footstep = {name = "dfcaverns_squish", gain = 0.25},}),
_dfcaverns_dead_node = sand_node,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
})
soil_type_spread("df_mapitems:sand_scum_spread", "df_mapitems:sand_scum", sand_node)
---------------------------------------------------------------
-- Pebble fungus
minetest.register_node("df_mapitems:dirt_with_pebble_fungus", {
description = S("Dirt with Pebble Fungus"),
_doc_items_longdesc = df_mapitems.doc.pebble_fungus_desc,
_doc_items_usagehelp = df_mapitems.doc.pebble_fungus_usage,
tiles = {"dfcaverns_ground_cover_pebble_fungus.png", dirt_texture,
{name = dirt_texture .. "^(dfcaverns_ground_cover_pebble_fungus.png^[mask:dfcaverns_ground_cover_side_mask.png)",
tileable_vertical = false}},
drop = dirt_node,
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, handy=1,shovely=1,dirt=2, soil_sapling=2, soil_sugarcane=1, cultivatable=1, enderman_takable=1, building_block=1, compostability=30, opaque=1},
sounds = df_dependencies.sound_dirt(),
soil = {
base = "df_mapitems:dirt_with_pebble_fungus",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.6,
})
soil_type_spread("df_mapitems:pebble_fungus_spread", "df_mapitems:dirt_with_pebble_fungus", dirt_node)
---------------------------------------------------------------
-- Stillworm
minetest.register_node("df_mapitems:dirt_with_stillworm", {
description = S("Dirt with Stillworm"),
_doc_items_longdesc = df_mapitems.doc.stillworm_desc,
_doc_items_usagehelp = df_mapitems.doc.stillworm_usage,
tiles = {dirt_texture .. "^dfcaverns_ground_cover_stillworm.png", dirt_texture,
{name = dirt_texture .. "^(dfcaverns_ground_cover_stillworm.png^[mask:dfcaverns_ground_cover_side_mask.png)",
tileable_vertical = false}},
drop = dirt_node,
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, handy=1,shovely=1,dirt=2, soil_sapling=2, soil_sugarcane=1, cultivatable=1, enderman_takable=1, building_block=1, compostability=30, opaque=1},
sounds = df_dependencies.sound_dirt({footstep = {name = df_dependencies.soundfile_grass_footstep, gain = 0.25},}),
soil = {
base = "df_mapitems:dirt_with_stillworm",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.6,
})
soil_type_spread("df_mapitems:stillworm_spread", "df_mapitems:dirt_with_stillworm", dirt_node)
---------------------------------------------------------------
-- Spongestone / Rock rot
minetest.register_node("df_mapitems:spongestone", {
description = S("Spongestone"),
_doc_items_longdesc = df_mapitems.doc.sponge_stone_desc,
_doc_items_usagehelp = df_mapitems.doc.sponge_stone_usage,
tiles = {"dfcaverns_ground_cover_sponge_stone.png"},
drop = dirt_node,
is_ground_content = false,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, shovely=1,dirt=2, enderman_takable=1, building_block=1, compostability=10, opaque=1},
sounds = df_dependencies.sound_dirt(),
soil = {
base = "df_mapitems:spongestone",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
_mcl_blast_resistance = 0.6,
_mcl_hardness = 0.6,
})
minetest.register_node("df_mapitems:rock_rot", {
description = S("Rock Rot"),
_doc_items_longdesc = df_mapitems.doc.rock_rot_desc,
_doc_items_usagehelp = df_mapitems.doc.rock_rot_usage,
tiles = {df_dependencies.texture_stone .. "^dfcaverns_ground_cover_rock_rot.png", df_dependencies.texture_stone,
{name = df_dependencies.texture_stone .. "^(dfcaverns_ground_cover_rock_rot.png^[mask:dfcaverns_ground_cover_side_mask.png)",
tileable_vertical = false}},
drop = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8, shovely=1,dirt=2, enderman_takable=1, building_block=1, compostability=5, opaque=1},
sounds = df_dependencies.sound_dirt(),
_dfcaverns_dead_node = stone_node,
_mcl_blast_resistance = 3,
_mcl_hardness = 1,
})
soil_type_spread("df_mapitems:rock_rot_spread", "df_mapitems:rock_rot", stone_node)
soil_type_spread("df_mapitems:spongestone_spread", "df_mapitems:spongestone", "df_mapitems:rock_rot")
--------------------------------------------------
-- floor fungus
-- white/yellow
minetest.register_node("df_mapitems:cobble_with_floor_fungus", {
description = S("Cobblestone with Floor Fungus"),
_doc_items_longdesc = df_mapitems.doc.floor_fungus_desc,
_doc_items_usagehelp = df_mapitems.doc.floor_fungus_usage,
tiles = {df_dependencies.texture_cobble .. "^dfcaverns_floor_fungus.png"},
drop = cobble_node,
paramtype = "light",
is_ground_content = false,
groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8, df_caverns_floor_fungus = 1, pickaxey=1, building_block=1, material_stone=1, opaque=1},
_dfcaverns_dead_node = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone({footstep = {name = "dfcaverns_squish", gain = 0.25},}),
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
})
minetest.register_node("df_mapitems:cobble_with_floor_fungus_fine", {
description = S("Cobblestone with Floor Fungus"),
_doc_items_longdesc = df_mapitems.doc.floor_fungus_desc,
_doc_items_usagehelp = df_mapitems.doc.floor_fungus_usage,
tiles = {df_dependencies.texture_cobble .. "^dfcaverns_floor_fungus_fine.png"},
drop = cobble_node,
is_ground_content = false,
paramtype = "light",
groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8, df_caverns_floor_fungus = 1, pickaxey=1, building_block=1, material_stone=1, opaque=1},
_dfcaverns_dead_node = df_dependencies.node_name_cobble,
sounds = df_dependencies.sound_stone({footstep = {name = "dfcaverns_squish", gain = 0.25},}),
_mcl_blast_resistance = 6,
_mcl_hardness = 1.5,
on_timer = function(pos, elapsed)
minetest.swap_node(pos, {name="df_mapitems:cobble_with_floor_fungus"})
end,
on_destruct = function(pos)
minetest.get_node_timer(pos):stop()
end,
})
minetest.register_abm{
label = "df_mapitems:floor_fungus_spread",
nodenames = {cobble_node},
neighbors = {"group:df_caverns_floor_fungus"},
interval = 60,
chance = 10,
catch_up = true,
action = function(pos)
local above_def = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name]
if above_def and (above_def.buildable_to == true or above_def.walkable == false) then
minetest.swap_node(pos, {name="df_mapitems:cobble_with_floor_fungus_fine"})
if math.random() > 0.5 then
minetest.get_node_timer(pos):start(math.random(1000, 10000))
end
end
end,
}
------------------------------------------------------
-- Hoar moss
minetest.register_node("df_mapitems:ice_with_hoar_moss", {
description = S("Ice with Hoar Moss"),
_doc_items_longdesc = df_mapitems.doc.hoar_moss_desc,
_doc_items_usagehelp = df_mapitems.doc.hoar_moss_usage,
tiles = {df_dependencies.texture_ice .. "^dfcaverns_hoar_moss.png"},
drop = df_dependencies.node_name_ice,
paramtype = "light",
light_source = 2,
is_ground_content = false,
groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 2, light_sensitive_fungus = 8, handy=1,pickaxey=1, building_block=1, ice=1, opaque=1},
sounds = df_dependencies.sound_glass(),
_dfcaverns_dead_node = df_dependencies.node_name_ice,
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5,
})
----------------------------------------------------------------
-- Footprint-capable nodes
if minetest.get_modpath("footprints") then
local HARDPACK_PROBABILITY = tonumber(minetest.settings:get("footprints_hardpack_probability")) or 0.9 -- Chance walked dirt/grass is worn and compacted to footprints:trail.
local HARDPACK_COUNT = tonumber(minetest.settings:get("footprints_hardpack_count")) or 10 -- Number of times the above chance needs to be passed for soil to compact.
footprints.register_trample_node("df_mapitems:dirt_with_cave_moss", {
trampled_node_def_override = {description = S("Dirt with Cave Moss and Footprint"),},
hard_pack_node_name = "footprints:trail",
footprint_opacity = 128,
hard_pack_probability = HARDPACK_PROBABILITY,
hard_pack_count = HARDPACK_COUNT,
})
footprints.register_trample_node("df_mapitems:sand_scum", {
trampled_node_def_override = {description = S("Sand Scum with Footprint"),},
hard_pack_node_name = df_dependencies.node_name_sand,
footprint_opacity = 128,
hard_pack_probability = HARDPACK_PROBABILITY,
hard_pack_count = HARDPACK_COUNT * 0.5,
})
footprints.register_trample_node("df_mapitems:spongestone", {
trampled_node_def_override = {description = S("Spongestone with Footprint"),},
hard_pack_node_name = "footprints:trail",
footprint_opacity = 128,
hard_pack_probability = HARDPACK_PROBABILITY,
hard_pack_count = HARDPACK_COUNT * 2,
})
footprints.register_trample_node("df_mapitems:dirt_with_pebble_fungus", {
trampled_node_def_override = {description = S("Dirt with Pebble Fungus and Footprint"),},
hard_pack_node_name = "footprints:trail",
footprint_opacity = 128,
hard_pack_probability = HARDPACK_PROBABILITY,
hard_pack_count = HARDPACK_COUNT,
})
footprints.register_trample_node("df_mapitems:dirt_with_stillworm", {
trampled_node_def_override = {description = S("Dirt with Stillworm and Footprint"),},
hard_pack_node_name = "footprints:trail",
footprint_opacity = 192,
hard_pack_probability = HARDPACK_PROBABILITY,
hard_pack_count = HARDPACK_COUNT,
})
end
+24
View File
@@ -0,0 +1,24 @@
df_mapitems = {}
local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(modname)
--load companion lua files
dofile(modpath.."/config.lua")
dofile(modpath.."/doc.lua")
dofile(modpath.."/aliases.lua")
dofile(modpath.."/util.lua")
dofile(modpath.."/ground_cover.lua")
dofile(modpath.."/glow_worms.lua")
dofile(modpath.."/flowstone.lua")
dofile(modpath.."/snareweed.lua")
dofile(modpath.."/cave_coral.lua")
dofile(modpath.."/crystals_mese.lua")
dofile(modpath.."/crystals_ruby.lua")
dofile(modpath.."/crystals_salt.lua")
dofile(modpath.."/veinstone.lua")
dofile(modpath.."/cave_pearls.lua")
dofile(modpath.."/castle_coral.lua")
@@ -0,0 +1,221 @@
# textdomain: df_mapitems
### castle_coral.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Castle Coral=Schlosskoralle
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Castle Coral Skeleton=Schlosskorallenskelett
### cave_coral.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Coral=Höhlenkoralle
### cave_pearls.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Pearls=Höhlenperlen
### crystals_mese.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Flawless Mese Block=Makelloser Mese Block
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Flawless Mese Crystal=Makelloser Mese-Kristall
### crystals_ruby.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Big Red Crystal=Großer roter Kristall
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Giant Red Crystal=Riesiger roter Kristall
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Red Crystal Vein=Rote Kristallader
### crystals_salt.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Luminous Salt Crystal=Leuchtender Salzkristall
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Salty Cobble=Salziges Kopfsteinpflaster
### doc.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A crystal of salt grown from water that percolated through the depths of the earth, picking up all manner of minerals as it went.=Ein Salzkristall aus Wasser, das durch die Tiefen der Erde sickerte und dabei alle möglichen Mineralien aufnahm.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A highly aggressive form of lichen that eats into solid rock, turning its upper surfaces rough and a little spongy.=Eine sehr aggressive Form von Flechten, die sich in festes Gestein frisst und ihre oberen Oberflächen rau und ein wenig schwammig macht.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A nasty kelp-like plant that grows in patches on the floor of the Sunless Sea. Its reflective patches draw in the unwary and then its prickly barbs catch and hold small creatures.=Eine böse Seetang-ähnliche Pflanze, die in Flecken auf dem Boden des sonnenlosen Meeres wächst. Seine reflektierenden Flecken ziehen Unachtsame an und dann fangen und halten seine stacheligen Widerhaken kleine Kreaturen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A rare form of coral found only deep underground in the Sunless Sea, cave coral grows hanging from the ceilings of flooded caverns.=Eine seltene Form von Korallen, die nur tief unter der Erde im sonnenlosen Meer zu finden ist. Höhlenkorallen wachsen an den Decken überfluteter Höhlen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Although a strong mineral matrix remains, spongestone has enough organic content that it can be used as soil for farming.=Obwohl eine starke Mineralmatrix verbleibt, hat Schwammstein einen ausreichenden organischen Gehalt, um als Boden für die Landwirtschaft verwendet zu werden.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Although stalagmites are blunter than the stalactites above them, they can cause extra damage to the unwary caver who falls on them.=Obwohl Stalagmiten stumpfer sind als die Stalaktiten über ihnen, können sie dem unachtsamen Höhlenforscher, der auf sie fällt, zusätzlichen Schaden zufügen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from its aesthetic value this crystal has no particular use.=Abgesehen von seinem ästhetischen Wert hat dieser Kristall keine besondere Verwendung.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from its aesthetic value this rock has no particular use.=Abgesehen von seinem ästhetischen Wert hat dieser Stein keine besondere Verwendung.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from the aesthetic beauty of its formations flowstone has no special properties or uses.=Abgesehen von der ästhetischen Schönheit seiner Formationen hat Flowstone keine besonderen Eigenschaften oder Verwendungen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from their aesthetic beauty, cave corals can be harvested for simple building materials.=Neben ihrer ästhetischen Schönheit können Höhlenkorallen für einfache Baumaterialien geerntet werden.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from their soft glow and beauty, cave pearls have no practical use. Except perhaps as handholds for climbing.=Abgesehen von ihrem weichen Glanz und ihrer Schönheit haben Höhlenperlen keinen praktischen Nutzen. Außer vielleicht als Haltegriffe zum Klettern.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Attemping to mine this rock knocks the salt crust away, leaving only base stone.=Der Versuch, diesen Stein abzubauen, stößt die Salzkruste weg und hinterlässt nur Grundstein.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Castle Coral has little practical use aside from perhaps as a distinctive-looking building material.=Castle Coral hat wenig praktischen Nutzen, außer vielleicht als unverwechselbar aussehendes Baumaterial.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave moss has no known uses aside from the faint glow it emits. It dies when exposed to bright light sources such as the Sun.=Höhlenmoos hat keine bekannten Verwendungszwecke, abgesehen von dem schwachen Schein, den es ausstrahlt. Es stirbt, wenn es hellen Lichtquellen wie der Sonne ausgesetzt wird.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave moss is technically a form of mold, but fortunately a relatively benign one given its ubiquity. Its fibers form a tough but springy mat over the surface of any organic-rich soil that accumulates deep underground.=Höhlenmoos ist technisch gesehen eine Form von Schimmel, aber glücklicherweise eine relativ harmlose Form aufgrund seiner Allgegenwart. Seine Fasern bilden eine zähe, aber federnde Matte über der Oberfläche eines organisch reichen Bodens, der sich tief unter der Erde ansammelt.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Deep in the infernal conditions of the magma sea, over the course of millions of years, mese crystals grow into flawless blocks that glow bright with strange energies.=Tief in den höllischen Bedingungen des Magma-Meeres wachsen diese Kristalle im Laufe von Millionen von Jahren zu makellosen Blöcken, die vor seltsamen Energien hell leuchten.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Deep under the surface of the Sunless Sea are the rare and beautiful Castle Corals, so named due to their resemblance to small undersea castles.=Tief unter der Oberfläche des sonnenlosen Meeres befinden sich die seltenen und wunderschönen Burgkorallen, die aufgrund ihrer Ähnlichkeit mit kleinen Unterwasserschlössern so benannt wurden.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Falling onto an icicle is particularly damaging.=Das Fallen auf einen Eiszapfen ist besonders schädlich.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Floor fungus has no known uses. It can penetrate deeply into cobblestone constructions if an infestation gets hold, but it is difficult to transport and is inhibited by light so it hasn't spread beyond the deep caverns.=Bodenpilz hat keine bekannten Verwendungen. Es kann tief in Kopfsteinpflaster eindringen, wenn sich ein Befall festsetzt, ist jedoch schwer zu transportieren und wird durch Licht gehemmt, sodass es sich nicht über die tiefen Höhlen hinaus ausbreitet.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Floor fungus produces a thin, slick film that spreads through the cracks of broken rock. Its ability to subsist on the tiniest traces of nutrients means it's found in relatively harsh underground environments.=Bodenpilz erzeugt einen dünnen, glatten Film, der sich durch die Risse von gebrochenem Gestein ausbreitet. Aufgrund seiner Fähigkeit, sich von kleinsten Nährstoffspuren zu ernähren, ist es in relativ rauen unterirdischen Umgebungen anzutreffen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Flowstone is a carbonate-rich rock formation deposited by flowing water. It consists of minerals that the water dissolved earlier as it widens cracks and fissures into caves.=Flowstone ist eine karbonatreiche Gesteinsformation, die sich durch fließendes Wasser ablagert. Es besteht aus Mineralien, die das Wasser früher aufgelöst hat, als es Risse und Risse in Höhlen weitete.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Glistening strings of silk hang from the ceilings of some of the larger caverns, lit by the millions of tiny bioluminescent worms that spun them. Glow worms prey on the insects they lure and entangle with their faux starry sky - and sometimes the occasional bat or other larger flying beast.=Von den Decken einiger der größeren Höhlen hängen glitzernde Seidenfäden, die von den Millionen winziger biolumineszierender Würmer beleuchtet werden, die sie gesponnen haben. Glühwürmchen jagen den Insekten nach, die sie locken und mit ihrem künstlichen Sternenhimmel verwickeln - und manchmal auch gelegentlich Fledermäuse oder andere größere fliegende Tiere.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Glow worms can be harvested and used as a source of light but they die when exposed to light significantly brighter than themselves or when immersed in water. A colony of glow worms hung in a hospitable environment will undergo a modest amount of growth, allowing it to be divided and propagated.=Glühwürmchen können geerntet und als Lichtquelle verwendet werden. Sie sterben jedoch ab, wenn sie Licht ausgesetzt werden, das deutlich heller ist als sie selbst oder wenn sie in Wasser getaucht sind. Eine Kolonie von Glühwürmchen, die in einer gastfreundlichen Umgebung aufgehängt ist, wird ein bescheidenes Wachstum erfahren, so dass sie geteilt und vermehrt werden kann.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Hoar moss has no known use aside from providing a faint source of light.=Hoarmoos hat keine bekannte Verwendung, abgesehen von der Bereitstellung einer schwachen Lichtquelle.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Hoar moss is a strange glowing crust that sometimes forms on the surface of water flowing over ice.=Raureif ist eine seltsam leuchtende Kruste, die sich manchmal auf der Oberfläche von Wasser bildet, das über Eis fließt.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Ice formed by water dripping slowly into a cold environment, icicles tend to be exceptionally pure and clear.=Eis, das durch Wasser gebildet wird, das langsam in eine kalte Umgebung tropft. Eiszapfen sind in der Regel außergewöhnlich rein und klar.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Large, dry caverns deep underground are well suited to aeons-long processes that concentrate crystalline substances in their walls. This rock is riddled with veins of the stuff.=Große, trockene Kavernen tief unter der Erde eignen sich gut für Äonen lange Prozesse, bei denen kristalline Substanzen in ihren Wänden konzentriert werden. Dieser Felsen ist voller Adern.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Monolithic crystals of this size form only over extremely long periods deep underground, in large long-lived cavities that allow them room to grow. Water and the life it hosts tend to disrupt the formation process of these crystals so they're only found in dry environments.=Monolithische Kristalle dieser Größe bilden sich nur über extrem lange Zeiträume tief unter der Erde in großen, langlebigen Hohlräumen, in denen sie wachsen können. Wasser und das Leben, das es beherbergt, neigen dazu, den Bildungsprozess dieser Kristalle zu stören, sodass sie nur in trockenen Umgebungen vorkommen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Much water has seeped through the cracks in this rock and then quickly evaporated, leaving a crust of salt laced throughout.=Viel Wasser ist durch die Risse in diesem Felsen gesickert und dann schnell verdunstet, wobei eine Salzkruste zurückbleibt.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Organic material accumulates in the enlarged pores of rock rot, but not enough to be considered "soil" in the usable sense.=Organisches Material reichert sich in den vergrößerten Poren der Gesteinsfäule an, reicht jedoch nicht aus, um im verwendbaren Sinne als "Boden" betrachtet zu werden.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pebble fungus grows in soil that is rich enough for farming.=Kieselpilz wächst in Böden, die reich genug für die Landwirtschaft sind.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sand scum is a crust of algae that sometimes accumulates on wet sand deep underground, somehow managing to eke out a meager living from the phosphorescent light emitted by other organisms.=Sandschaum ist eine Algenkruste, die sich manchmal tief im Untergrund auf nassem Sand ansammelt und es irgendwie schafft, einen mageren Lebensunterhalt mit dem phosphoreszierenden Licht anderer Organismen zu verdienen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sand scum is useless. You can get sand out of it, at least.=Sandschaum ist nutzlos. Zumindest kann man Sand herausholen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Snareweed has no practical use, its fibers disintegrate when they dry.=Snareweed hat keinen praktischen Nutzen, seine Fasern zerfallen beim Trocknen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Soil that is rich enough to support gigantic mushrooms can support innumerable smaller ones as well. Pebble fungus is a prolific form of mushroom that covers the soil in small spheroidal fruiting bodies.=Böden, die reich genug sind, um gigantische Pilze zu unterstützen, können auch unzählige kleinere Pilze unterstützen. Kieselpilz ist eine fruchtbare Form von Pilzen, die den Boden in kleinen kugelförmigen Fruchtkörpern bedeckt.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Spongestone is the result of advanced rock rot in its ultimate form. The stone has become so riddled with pores and cavities that it's no longer really stone.=Schwammstein ist das Ergebnis der fortgeschrittenen Steinfäule in ihrer ultimativen Form. Der Stein ist so voller Poren und Hohlräume, dass er nicht mehr wirklich Stein ist.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Stillworm grows in soil that is rich enough for farming.=Stillworm wächst auf Böden, die reich genug für die Landwirtschaft sind.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Stillworm is not actually a kind of worm, but a sort of fungus that looks uncannily like pale, motionless earthworms intertwined with the soil.=Stillworm ist eigentlich keine Art Wurm, sondern eine Art Pilz, der unheimlich aussieht wie blasse, bewegungslose Regenwürmer, die mit dem Boden verflochten sind.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
The iconic stalactites and stalagmites found in caverns are composed of flowstone (or 'dripstone' in the case of these formations). Moist dripstone is still undergoing growth, whereas dry dripstone is found in 'dead' caverns once the source of water that created them ceases.=Die in Kavernen gefundenen ikonischen Stalaktiten und Stalagmiten bestehen aus Flussstein (oder bei diesen Formationen „Tropfstein“). Feuchter Tropfstein wächst immer noch, während trockener Tropfstein in „toten“ Höhlen gefunden wird, sobald die Wasserquelle, aus der sie entstanden sind, aufhört.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
These blocks can be broken down into a large number of mese crystals, but cannot be artificially reassembled.=Diese Blöcke können in eine große Anzahl dieser Kristalle zerlegt, aber nicht künstlich wieder zusammengesetzt werden.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
These nodules are actually calcified bacterial colonies.=Diese Knötchen sind tatsächlich verkalkte Bakterienkolonien.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Traces of Mese must have been dissolved by the water as this crystal has an inherent glow to it. Not enough Mese to be useful as a reagent, unfortunately.=Spuren von Mese müssen vom Wasser aufgelöst worden sein, da dieser Kristall einen inhärenten Glanz hat. Leider nicht genug, um als Reagenz nützlich zu sein.
### flowstone.lua ###
Dry Dripstone=Trockener Tropfstein
Dry Flowstone=Trockener Fließstein
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Icicle=Eiszapfen
Wet Dripstone=Nasser Tropfstein
Wet Flowstone=Nasser Fließstein
### glow_worms.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Glow Worms=Glühwürmchen
### ground_cover.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cobblestone with Floor Fungus=Kopfsteinpflaster mit Bodenpilz
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Cave Moss=Dreck mit Höhlenmoos
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Cave Moss and Footprint=Schmutz mit Höhlenmoos und Fußabdruck
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Pebble Fungus=Schmutz mit Kieselpilz
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Pebble Fungus and Footprint=Schmutz mit Kieselpilz und Fußabdruck
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Stillworm=Dreck mit Stillworm
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Stillworm and Footprint=Schmutz mit Stillworm und Footprint
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Ice with Hoar Moss=Eis mit Hoar Moss
Rock Rot=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sand Scum=Sandschaum
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sand Scum with Footprint=Sandschaum mit Fußabdruck
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Spongestone=Schwammstein
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Spongestone with Footprint=Schwammstein mit Fußabdruck
### snareweed.lua ###
Snareweed=
### veinstone.lua ###
Veinstone=
@@ -0,0 +1,219 @@
# textdomain: df_mapitems
### castle_coral.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Castle Coral=Castello di Coral
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Castle Coral Skeleton=Scheletro di corallo del castello
### cave_coral.lua ###
Cave Coral=Grano di caverna
### cave_pearls.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Pearls=Perle di caverna
### crystals_mese.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Flawless Mese Block=Impeccabile Mese Block
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Flawless Mese Crystal=Cristallo di Mese impeccabile
### crystals_ruby.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Big Red Crystal=Grande cristallo rosso
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Giant Red Crystal=Cristallo rosso gigante
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Red Crystal Vein=Vena di cristallo rossa
### crystals_salt.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Luminous Salt Crystal=Cristallo di sale luminoso
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Salty Cobble=Ciottoli salati
### doc.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A crystal of salt grown from water that percolated through the depths of the earth, picking up all manner of minerals as it went.=Un cristallo di sale cresciuto dall'acqua che filtrava attraverso le profondità della terra, raccogliendo ogni sorta di minerali mentre procedeva.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A highly aggressive form of lichen that eats into solid rock, turning its upper surfaces rough and a little spongy.=Una forma molto aggressiva di lichene che mangia la roccia solida, rendendo le sue superfici superiori ruvide e un po 'spugnose.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A nasty kelp-like plant that grows in patches on the floor of the Sunless Sea. Its reflective patches draw in the unwary and then its prickly barbs catch and hold small creatures.=Una brutta pianta simile ad alghe che cresce a chiazze sul fondo del Mare senza sole. Le sue macchie riflettenti attirano gli incauti e poi le sue punte spinose catturano e trattengono piccole creature.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A rare form of coral found only deep underground in the Sunless Sea, cave coral grows hanging from the ceilings of flooded caverns.=Una rara forma di corallo che si trova solo nel sottosuolo del Mare senza sole, il corallo delle caverne cresce appeso ai soffitti delle caverne allagate.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Although a strong mineral matrix remains, spongestone has enough organic content that it can be used as soil for farming.=Sebbene rimanga una forte matrice minerale, la spongestone ha un contenuto organico sufficiente da poter essere utilizzata come terreno per l'agricoltura.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Although stalagmites are blunter than the stalactites above them, they can cause extra damage to the unwary caver who falls on them.=Sebbene le stalagmiti siano più smussate delle stalattiti sopra di loro, possono causare danni extra allo speleologo incauto che cade su di loro.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from its aesthetic value this crystal has no particular use.=A parte il suo valore estetico questo cristallo non ha particolari utilizzi.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from its aesthetic value this rock has no particular use.=A parte il suo valore estetico questa roccia non ha particolari utilizzi.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from the aesthetic beauty of its formations flowstone has no special properties or uses.=A parte la bellezza estetica delle sue formazioni, il flowstone non ha proprietà o usi particolari.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from their aesthetic beauty, cave corals can be harvested for simple building materials.=A parte la loro bellezza estetica, i coralli delle caverne possono essere raccolti per semplici materiali da costruzione.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Aside from their soft glow and beauty, cave pearls have no practical use. Except perhaps as handholds for climbing.=A parte il loro bagliore tenue e la loro bellezza, le perle delle caverne non hanno alcun uso pratico. Tranne forse come appigli per arrampicarsi.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Attemping to mine this rock knocks the salt crust away, leaving only base stone.=Il tentativo di estrarre questa roccia spazza via la crosta di sale, lasciando solo la pietra di base.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Castle Coral has little practical use aside from perhaps as a distinctive-looking building material.=Castle Coral ha poco uso pratico a parte forse come materiale da costruzione dall'aspetto distintivo.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave moss has no known uses aside from the faint glow it emits. It dies when exposed to bright light sources such as the Sun.=Il muschio delle caverne non ha usi conosciuti a parte il debole bagliore che emette. Muore se esposto a sorgenti luminose intense come il sole.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave moss is technically a form of mold, but fortunately a relatively benign one given its ubiquity. Its fibers form a tough but springy mat over the surface of any organic-rich soil that accumulates deep underground.=Il muschio delle caverne è tecnicamente una forma di muffa, ma fortunatamente relativamente benigna data la sua ubiquità. Le sue fibre formano un tappeto resistente ma elastico sulla superficie di qualsiasi terreno ricco di sostanze organiche che si accumula in profondità nel sottosuolo.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Deep in the infernal conditions of the magma sea, over the course of millions of years, mese crystals grow into flawless blocks that glow bright with strange energies.=Nelle profondità delle condizioni infernali del mare di magma, nel corso di milioni di anni, i cristalli di mese crescono in blocchi impeccabili che brillano luminosi di strane energie.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Deep under the surface of the Sunless Sea are the rare and beautiful Castle Corals, so named due to their resemblance to small undersea castles.=In profondità sotto la superficie del Mare senza sole si trovano i rari e bellissimi Castle Corals, così chiamati per la loro somiglianza con i piccoli castelli sottomarini.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Falling onto an icicle is particularly damaging.=Cadere su un ghiacciolo è particolarmente dannoso.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Floor fungus has no known uses. It can penetrate deeply into cobblestone constructions if an infestation gets hold, but it is difficult to transport and is inhibited by light so it hasn't spread beyond the deep caverns.=Il fungo del pavimento non ha usi conosciuti. Può penetrare in profondità nelle costruzioni di ciottoli se un'infestazione si impadronisce, ma è difficile da trasportare ed è inibito dalla luce, quindi non si è diffuso oltre le profonde caverne.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Floor fungus produces a thin, slick film that spreads through the cracks of broken rock. Its ability to subsist on the tiniest traces of nutrients means it's found in relatively harsh underground environments.=Il fungo del pavimento produce una pellicola sottile e liscia che si diffonde attraverso le fessure della roccia frantumata. La sua capacità di sopravvivere alle più piccole tracce di sostanze nutritive significa che si trova in ambienti sotterranei relativamente difficili.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Flowstone is a carbonate-rich rock formation deposited by flowing water. It consists of minerals that the water dissolved earlier as it widens cracks and fissures into caves.=Flowstone è una formazione rocciosa ricca di carbonati depositata dall'acqua corrente. È costituito da minerali che l'acqua ha sciolto in precedenza mentre allarga crepe e fessure in grotte.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Glistening strings of silk hang from the ceilings of some of the larger caverns, lit by the millions of tiny bioluminescent worms that spun them. Glow worms prey on the insects they lure and entangle with their faux starry sky - and sometimes the occasional bat or other larger flying beast.=Luccicanti fili di seta pendono dai soffitti di alcune delle caverne più grandi, illuminati dai milioni di minuscoli vermi bioluminescenti che li fanno girare. I vermi luminosi predano gli insetti che attirano e intrappolano con il loro finto cielo stellato, e talvolta il pipistrello occasionale o altre bestie volanti più grandi.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Glow worms can be harvested and used as a source of light but they die when exposed to light significantly brighter than themselves or when immersed in water. A colony of glow worms hung in a hospitable environment will undergo a modest amount of growth, allowing it to be divided and propagated.=I lombrichi possono essere raccolti e usati come fonte di luce, ma muoiono se esposti a una luce significativamente più brillante di loro o quando vengono immersi nell'acqua. Una colonia di lucciole appese in un ambiente ospitale subirà una modesta crescita, che ne consentirà la divisione e la propagazione.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Hoar moss has no known use aside from providing a faint source of light.=Il muschio di Hoar non ha alcun uso noto a parte fornire una debole fonte di luce.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Hoar moss is a strange glowing crust that sometimes forms on the surface of water flowing over ice.=Il muschio è una strana crosta luminosa che a volte si forma sulla superficie dell'acqua che scorre sul ghiaccio.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Ice formed by water dripping slowly into a cold environment, icicles tend to be exceptionally pure and clear.=Ghiaccio formato dall'acqua che gocciola lentamente in un ambiente freddo, i ghiaccioli tendono ad essere eccezionalmente puri e limpidi.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Large, dry caverns deep underground are well suited to aeons-long processes that concentrate crystalline substances in their walls. This rock is riddled with veins of the stuff.=Grandi caverne asciutte nel sottosuolo ben si adattano a processi lunghi eoni che concentrano sostanze cristalline nelle loro pareti. Questa roccia è crivellata di vene del materiale.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Monolithic crystals of this size form only over extremely long periods deep underground, in large long-lived cavities that allow them room to grow. Water and the life it hosts tend to disrupt the formation process of these crystals so they're only found in dry environments.=Cristalli monolitici di queste dimensioni si formano solo per periodi estremamente lunghi nel sottosuolo, in grandi cavità longeve che consentono loro di crescere. L'acqua e la vita che ospita tendono a interrompere il processo di formazione di questi cristalli, quindi si trovano solo in ambienti asciutti.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Much water has seeped through the cracks in this rock and then quickly evaporated, leaving a crust of salt laced throughout.=Molta acqua è filtrata attraverso le fessure di questa roccia e poi è evaporata rapidamente, lasciando una crosta di sale allacciata.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Organic material accumulates in the enlarged pores of rock rot, but not enough to be considered "soil" in the usable sense.=Il materiale organico si accumula nei pori dilatati della putrefazione della roccia, ma non abbastanza per essere considerato "suolo" nel senso utilizzabile.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pebble fungus grows in soil that is rich enough for farming.=Il fungo di ghiaia cresce in un terreno abbastanza ricco per l'agricoltura.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sand scum is a crust of algae that sometimes accumulates on wet sand deep underground, somehow managing to eke out a meager living from the phosphorescent light emitted by other organisms.=La schiuma di sabbia è una crosta di alghe che a volte si accumula sulla sabbia bagnata in profondità nel sottosuolo, riuscendo in qualche modo a sopravvivere a una misera vita dalla luce fosforescente emessa da altri organismi.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sand scum is useless. You can get sand out of it, at least.=La schiuma di sabbia è inutile. Almeno puoi tirar fuori la sabbia.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Snareweed has no practical use, its fibers disintegrate when they dry.=Snareweed non ha alcun uso pratico, le sue fibre si disintegrano quando si asciugano.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Soil that is rich enough to support gigantic mushrooms can support innumerable smaller ones as well. Pebble fungus is a prolific form of mushroom that covers the soil in small spheroidal fruiting bodies.=Un terreno abbastanza ricco da supportare funghi giganteschi può supportare anche innumerevoli funghi più piccoli. Il fungo di ghiaia è una forma prolifica di fungo che copre il terreno in piccoli corpi fruttiferi sferoidali.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Spongestone is the result of advanced rock rot in its ultimate form. The stone has become so riddled with pores and cavities that it's no longer really stone.=Spongestone è il risultato del marciume roccioso avanzato nella sua forma definitiva. La pietra è diventata così piena di pori e cavità che non è più veramente pietra.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Stillworm grows in soil that is rich enough for farming.=Il verme selvatico cresce in un terreno abbastanza ricco per l'agricoltura.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Stillworm is not actually a kind of worm, but a sort of fungus that looks uncannily like pale, motionless earthworms intertwined with the soil.=Il verme morto non è in realtà una specie di verme, ma una specie di fungo che assomiglia stranamente a lombrichi pallidi e immobili intrecciati con il terreno.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
The iconic stalactites and stalagmites found in caverns are composed of flowstone (or 'dripstone' in the case of these formations). Moist dripstone is still undergoing growth, whereas dry dripstone is found in 'dead' caverns once the source of water that created them ceases.=Le iconiche stalattiti e stalagmiti trovate nelle caverne sono composte da pietrisco (o "gocciolatoio" nel caso di queste formazioni). La pietra gocciolante umida è ancora in fase di crescita, mentre la pietra gocciolante secca si trova nelle caverne "morte" una volta che la fonte d'acqua che le ha create cessa.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
These blocks can be broken down into a large number of mese crystals, but cannot be artificially reassembled.=Questi blocchi possono essere scomposti in un gran numero di cristalli mese, ma non possono essere riassemblati artificialmente.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
These nodules are actually calcified bacterial colonies.=Questi noduli sono in realtà colonie batteriche calcificate.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Traces of Mese must have been dissolved by the water as this crystal has an inherent glow to it. Not enough Mese to be useful as a reagent, unfortunately.=Tracce di Mese devono essere state sciolte dall'acqua poiché questo cristallo ha un bagliore intrinseco. Sfortunatamente, non abbastanza Mese per essere utile come reagente.
### flowstone.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dry Dripstone=Pietra gocciolante secca
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dry Flowstone=Flowstone secco
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Icicle=Ghiacciolo
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Wet Dripstone=Dripstone bagnato
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Wet Flowstone=Flowstone bagnato
### glow_worms.lua ###
Glow Worms=Vermi luminosi
### ground_cover.lua ###
Cobblestone with Floor Fungus=Ciottoli con funghi del terreno
Dirt with Cave Moss=Terra con muschio di caverna
Dirt with Cave Moss and Footprint=Terra con muschio di caverna
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Pebble Fungus=Sporcizia con funghi di ghiaia
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Pebble Fungus and Footprint=Sporcizia con funghi di ghiaia e impronta
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Stillworm=Sporcizia con Stillworm
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dirt with Stillworm and Footprint=Sporcizia con Stillworm e Footprint
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Ice with Hoar Moss=Ghiaccio con Hoar Moss
Rock Rot=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sand Scum=Feccia di sabbia
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sand Scum with Footprint=Feccia di sabbia con impronta
Spongestone=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Spongestone with Footprint=Pietra spugnosa con impronta
### snareweed.lua ###
Snareweed=
### veinstone.lua ###
Veinstone=
@@ -0,0 +1,154 @@
# textdomain: df_mapitems
### castle_coral.lua ###
Castle Coral=
Castle Coral Skeleton=
### cave_coral.lua ###
Cave Coral=
### cave_pearls.lua ###
Cave Pearls=
### crystals_mese.lua ###
Flawless Mese Block=
Flawless Mese Crystal=
### crystals_ruby.lua ###
Big Red Crystal=
Giant Red Crystal=
Red Crystal Vein=
### crystals_salt.lua ###
Luminous Salt Crystal=
Salty Cobble=
### doc.lua ###
A crystal of salt grown from water that percolated through the depths of the earth, picking up all manner of minerals as it went.=
A highly aggressive form of lichen that eats into solid rock, turning its upper surfaces rough and a little spongy.=
A nasty kelp-like plant that grows in patches on the floor of the Sunless Sea. Its reflective patches draw in the unwary and then its prickly barbs catch and hold small creatures.=
A rare form of coral found only deep underground in the Sunless Sea, cave coral grows hanging from the ceilings of flooded caverns.=
Although a strong mineral matrix remains, spongestone has enough organic content that it can be used as soil for farming.=
Although stalagmites are blunter than the stalactites above them, they can cause extra damage to the unwary caver who falls on them.=
Aside from its aesthetic value this crystal has no particular use.=
Aside from its aesthetic value this rock has no particular use.=
Aside from the aesthetic beauty of its formations flowstone has no special properties or uses.=
Aside from their aesthetic beauty, cave corals can be harvested for simple building materials.=
Aside from their soft glow and beauty, cave pearls have no practical use. Except perhaps as handholds for climbing.=
Attemping to mine this rock knocks the salt crust away, leaving only base stone.=
Castle Coral has little practical use aside from perhaps as a distinctive-looking building material.=
Cave moss has no known uses aside from the faint glow it emits. It dies when exposed to bright light sources such as the Sun.=
Cave moss is technically a form of mold, but fortunately a relatively benign one given its ubiquity. Its fibers form a tough but springy mat over the surface of any organic-rich soil that accumulates deep underground.=
Deep in the infernal conditions of the magma sea, over the course of millions of years, mese crystals grow into flawless blocks that glow bright with strange energies.=
Deep under the surface of the Sunless Sea are the rare and beautiful Castle Corals, so named due to their resemblance to small undersea castles.=
Falling onto an icicle is particularly damaging.=
Floor fungus has no known uses. It can penetrate deeply into cobblestone constructions if an infestation gets hold, but it is difficult to transport and is inhibited by light so it hasn't spread beyond the deep caverns.=
Floor fungus produces a thin, slick film that spreads through the cracks of broken rock. Its ability to subsist on the tiniest traces of nutrients means it's found in relatively harsh underground environments.=
Flowstone is a carbonate-rich rock formation deposited by flowing water. It consists of minerals that the water dissolved earlier as it widens cracks and fissures into caves.=
Glistening strings of silk hang from the ceilings of some of the larger caverns, lit by the millions of tiny bioluminescent worms that spun them. Glow worms prey on the insects they lure and entangle with their faux starry sky - and sometimes the occasional bat or other larger flying beast.=
Glow worms can be harvested and used as a source of light but they die when exposed to light significantly brighter than themselves or when immersed in water. A colony of glow worms hung in a hospitable environment will undergo a modest amount of growth, allowing it to be divided and propagated.=
Hoar moss has no known use aside from providing a faint source of light.=
Hoar moss is a strange glowing crust that sometimes forms on the surface of water flowing over ice.=
Ice formed by water dripping slowly into a cold environment, icicles tend to be exceptionally pure and clear.=
Large, dry caverns deep underground are well suited to aeons-long processes that concentrate crystalline substances in their walls. This rock is riddled with veins of the stuff.=
Monolithic crystals of this size form only over extremely long periods deep underground, in large long-lived cavities that allow them room to grow. Water and the life it hosts tend to disrupt the formation process of these crystals so they're only found in dry environments.=
Much water has seeped through the cracks in this rock and then quickly evaporated, leaving a crust of salt laced throughout.=
Organic material accumulates in the enlarged pores of rock rot, but not enough to be considered "soil" in the usable sense.=
Pebble fungus grows in soil that is rich enough for farming.=
Sand scum is a crust of algae that sometimes accumulates on wet sand deep underground, somehow managing to eke out a meager living from the phosphorescent light emitted by other organisms.=
Sand scum is useless. You can get sand out of it, at least.=
Snareweed has no practical use, its fibers disintegrate when they dry.=
Soil that is rich enough to support gigantic mushrooms can support innumerable smaller ones as well. Pebble fungus is a prolific form of mushroom that covers the soil in small spheroidal fruiting bodies.=
Spongestone is the result of advanced rock rot in its ultimate form. The stone has become so riddled with pores and cavities that it's no longer really stone.=
Stillworm grows in soil that is rich enough for farming.=
Stillworm is not actually a kind of worm, but a sort of fungus that looks uncannily like pale, motionless earthworms intertwined with the soil.=
The iconic stalactites and stalagmites found in caverns are composed of flowstone (or 'dripstone' in the case of these formations). Moist dripstone is still undergoing growth, whereas dry dripstone is found in 'dead' caverns once the source of water that created them ceases.=
These blocks can be broken down into a large number of mese crystals, but cannot be artificially reassembled.=
These nodules are actually calcified bacterial colonies.=
Traces of Mese must have been dissolved by the water as this crystal has an inherent glow to it. Not enough Mese to be useful as a reagent, unfortunately.=
### flowstone.lua ###
Dry Dripstone=
Dry Flowstone=
Icicle=
Wet Dripstone=
Wet Flowstone=
### glow_worms.lua ###
Glow Worms=
### ground_cover.lua ###
Cobblestone with Floor Fungus=
Dirt with Cave Moss=
Dirt with Cave Moss and Footprint=
Dirt with Pebble Fungus=
Dirt with Pebble Fungus and Footprint=
Dirt with Stillworm=
Dirt with Stillworm and Footprint=
Ice with Hoar Moss=
Rock Rot=
Sand Scum=
Sand Scum with Footprint=
Spongestone=
Spongestone with Footprint=
### snareweed.lua ###
Snareweed=
### veinstone.lua ###
Veinstone=
+4
View File
@@ -0,0 +1,4 @@
name = df_mapitems
description = Various node types used by the dfcaverns mapgen mod. Includes cave coral, flowstone, glowing crystals, glow worms, moss and fungi ground cover, and snare weed.
depends = df_dependencies, subterrane
optional_depends = df_farming, doc, radiant_damage, footprints
@@ -0,0 +1,22 @@
# Blender MTL File: 'hex crystal 30.blend'
# Material Count: 2
newmtl End_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl Side_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.371605 0.494084
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
@@ -0,0 +1,114 @@
# Blender v2.77 (sub 0) OBJ File: 'hex crystal 30.blend'
# www.blender.org
mtllib hex_crystal_30_45.mtl
o Cylinder
v 0.135341 -0.831516 0.135341
v -1.192872 2.421927 -1.192872
v -0.353661 -0.499737 0.353446
v -1.410977 2.090148 -0.703870
v -0.442049 -0.716243 -0.088496
v -1.499365 1.873641 -1.145812
v -0.088496 -0.716243 -0.442049
v -1.145812 1.873641 -1.499365
v 0.353446 -0.499737 -0.353661
v -0.703870 2.090148 -1.410977
v 0.441834 -0.283230 0.088281
v -0.615482 2.306654 -0.969035
v 0.088281 -0.283230 0.441834
v -0.969035 2.306654 -0.615482
vt 0.4999 0.0000
vt 0.4999 1.0000
vt 0.3332 1.0000
vt 0.3332 0.0000
vt 0.1665 1.0000
vt 0.1665 0.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 -0.0000
vt 1.0000 1.0000
vt 0.8333 1.0000
vt 0.8333 -0.0000
vt 0.6666 1.0000
vt 0.6666 -0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.5000 0.5000
vt 0.9313 0.7490
vt 0.5000 0.9980
vt 0.5000 0.5000
vt 0.5000 0.0020
vt 0.9313 0.2510
vt 0.0687 0.7490
vt 0.0687 0.2510
vt 0.0687 0.2510
vt 0.0687 0.7490
vt 0.5000 0.0020
vt 0.5000 0.9980
vt 0.9313 0.2510
vt 0.9313 0.7490
vn -0.9186 -0.2500 0.3062
vn -0.6124 -0.5000 -0.6124
vn 0.3062 -0.2500 -0.9186
vn 0.9186 0.2500 -0.3062
vn 0.6124 0.5000 0.6124
vn -0.3062 0.2500 0.9186
vn -0.3536 0.8660 -0.3536
vn 0.3990 0.4733 -0.7854
vn 0.7854 -0.4733 -0.3990
vn -0.3439 -0.8143 0.4677
vn -0.8735 0.4830 -0.0619
vn -0.1410 -0.9799 -0.1410
vn -0.6706 0.3173 -0.6706
vn 0.4677 -0.8143 -0.3439
vn -0.0619 0.4830 -0.8735
vn 0.8735 -0.4830 0.0619
vn 0.3439 0.8143 -0.4677
vn 0.6706 -0.3173 0.6706
vn 0.1410 0.9799 0.1410
vn 0.0619 -0.4830 0.8735
vn -0.4677 0.8143 0.3439
g Cylinder_Cylinder_Side_Mat
usemtl Side_Mat
s off
f 3/1/1 4/2/1 6/3/1 5/4/1
f 5/4/2 6/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 10/7/3 9/8/3
f 9/9/4 10/10/4 12/11/4 11/12/4
f 11/12/5 12/11/5 14/13/5 13/14/5
f 13/14/6 14/13/6 4/2/6 3/1/6
f 10/15/7 8/16/7 12/17/7
f 12/17/8 8/16/8 2/18/8
f 2/18/1 8/16/1 14/19/1
f 14/19/7 8/16/7 6/20/7
f 14/19/9 6/20/9 2/18/9
f 11/21/9 1/22/9 7/23/9
f 7/23/1 1/22/1 13/24/1
f 13/24/8 1/22/8 5/25/8
f 9/8/7 7/23/7 11/21/7
f 11/21/7 7/23/7 13/24/7
f 13/24/7 7/23/7 5/25/7
f 13/24/7 5/25/7 3/26/7
g Cylinder_Cylinder_End_Mat
usemtl End_Mat
f 1/27/10 3/28/10 5/29/10
f 2/30/11 6/31/11 4/32/11
f 1/27/12 5/29/12 7/33/12
f 2/30/13 8/34/13 6/31/13
f 1/27/14 7/33/14 9/35/14
f 2/30/15 10/36/15 8/34/15
f 1/27/16 9/35/16 11/37/16
f 2/30/17 12/38/17 10/36/17
f 1/27/18 11/37/18 13/39/18
f 2/30/19 14/40/19 12/38/19
f 1/27/20 13/39/20 3/28/20
f 2/30/21 4/32/21 14/40/21
@@ -0,0 +1,22 @@
# Blender MTL File: 'hex crystal 30 45.blend'
# Material Count: 2
newmtl End_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl Side_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.371605 0.494084
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
@@ -0,0 +1,114 @@
# Blender v2.77 (sub 0) OBJ File: 'hex crystal 30 45.blend'
# www.blender.org
mtllib hex_crystal_30_45_med.mtl
o Cylinder
v 0.067670 -0.665758 0.067670
v -0.596436 0.960964 -0.596436
v -0.176830 -0.499868 0.176723
v -0.705489 0.795074 -0.351935
v -0.221025 -0.608121 -0.044248
v -0.749683 0.686821 -0.572906
v -0.044248 -0.608121 -0.221025
v -0.572906 0.686821 -0.749683
v 0.176723 -0.499868 -0.176830
v -0.351935 0.795074 -0.705489
v 0.220917 -0.391615 0.044140
v -0.307741 0.903327 -0.484518
v 0.044140 -0.391615 0.220917
v -0.484518 0.903327 -0.307741
vt 0.4999 0.0000
vt 0.4999 1.0000
vt 0.3332 1.0000
vt 0.3332 0.0000
vt 0.1665 1.0000
vt 0.1665 0.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 -0.0000
vt 1.0000 1.0000
vt 0.8333 1.0000
vt 0.8333 -0.0000
vt 0.6666 1.0000
vt 0.6666 -0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.5000 0.5000
vt 0.9313 0.7490
vt 0.5000 0.9980
vt 0.5000 0.5000
vt 0.5000 0.0020
vt 0.9313 0.2510
vt 0.0687 0.7490
vt 0.0687 0.2510
vt 0.0687 0.2510
vt 0.0687 0.7490
vt 0.5000 0.0020
vt 0.5000 0.9980
vt 0.9313 0.2510
vt 0.9313 0.7490
vn -0.9186 -0.2500 0.3062
vn -0.6124 -0.5000 -0.6124
vn 0.3062 -0.2500 -0.9186
vn 0.9186 0.2500 -0.3062
vn 0.6124 0.5000 0.6124
vn -0.3062 0.2500 0.9186
vn -0.3536 0.8660 -0.3536
vn 0.3990 0.4733 -0.7854
vn 0.7854 -0.4733 -0.3990
vn -0.3439 -0.8143 0.4677
vn -0.8735 0.4830 -0.0619
vn -0.1410 -0.9799 -0.1410
vn -0.6706 0.3173 -0.6706
vn 0.4677 -0.8143 -0.3439
vn -0.0619 0.4830 -0.8735
vn 0.8735 -0.4830 0.0619
vn 0.3439 0.8143 -0.4677
vn 0.6706 -0.3173 0.6706
vn 0.1410 0.9799 0.1410
vn 0.0619 -0.4830 0.8735
vn -0.4677 0.8143 0.3439
g Cylinder_Cylinder_Side_Mat
usemtl Side_Mat
s off
f 3/1/1 4/2/1 6/3/1 5/4/1
f 5/4/2 6/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 10/7/3 9/8/3
f 9/9/4 10/10/4 12/11/4 11/12/4
f 11/12/5 12/11/5 14/13/5 13/14/5
f 13/14/6 14/13/6 4/2/6 3/1/6
f 10/15/7 8/16/7 12/17/7
f 12/17/8 8/16/8 2/18/8
f 2/18/1 8/16/1 14/19/1
f 14/19/7 8/16/7 6/20/7
f 14/19/9 6/20/9 2/18/9
f 11/21/9 1/22/9 7/23/9
f 7/23/1 1/22/1 13/24/1
f 13/24/8 1/22/8 5/25/8
f 9/8/7 7/23/7 11/21/7
f 11/21/7 7/23/7 13/24/7
f 13/24/7 7/23/7 5/25/7
f 13/24/7 5/25/7 3/26/7
g Cylinder_Cylinder_End_Mat
usemtl End_Mat
f 1/27/10 3/28/10 5/29/10
f 2/30/11 6/31/11 4/32/11
f 1/27/12 5/29/12 7/33/12
f 2/30/13 8/34/13 6/31/13
f 1/27/14 7/33/14 9/35/14
f 2/30/15 10/36/15 8/34/15
f 1/27/16 9/35/16 11/37/16
f 2/30/17 12/38/17 10/36/17
f 1/27/18 11/37/18 13/39/18
f 2/30/19 14/40/19 12/38/19
f 1/27/20 13/39/20 3/28/20
f 2/30/21 4/32/21 14/40/21
@@ -0,0 +1,22 @@
# Blender MTL File: 'hex crystal 30.blend'
# Material Count: 2
newmtl End_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl Side_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.371605 0.494084
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
@@ -0,0 +1,114 @@
# Blender v2.77 (sub 0) OBJ File: 'hex crystal 30.blend'
# www.blender.org
mtllib hex_crystal_30.mtl
o Cylinder
v -0.000000 -0.831516 0.191401
v 0.000000 2.421927 -1.686976
v -0.500000 -0.499737 -0.000152
v -0.500000 2.090148 -1.495423
v -0.250000 -0.716243 -0.375152
v -0.250000 1.873641 -1.870423
v 0.250000 -0.716243 -0.375152
v 0.250000 1.873641 -1.870423
v 0.500000 -0.499737 -0.000152
v 0.500000 2.090148 -1.495423
v 0.250000 -0.283230 0.374848
v 0.250000 2.306654 -1.120423
v -0.250000 -0.283230 0.374848
v -0.250000 2.306654 -1.120423
vt 0.4999 0.0000
vt 0.4999 1.0000
vt 0.3332 1.0000
vt 0.3332 0.0000
vt 0.1665 1.0000
vt 0.1665 0.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 -0.0000
vt 1.0000 1.0000
vt 0.8333 1.0000
vt 0.8333 -0.0000
vt 0.6666 1.0000
vt 0.6666 -0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.5000 0.5000
vt 0.9313 0.7490
vt 0.5000 0.9980
vt 0.5000 0.5000
vt 0.5000 0.0020
vt 0.9313 0.2510
vt 0.0687 0.7490
vt 0.0687 0.2510
vt 0.0687 0.2510
vt 0.0687 0.7490
vt 0.5000 0.0020
vt 0.5000 0.9980
vt 0.9313 0.2510
vt 0.9313 0.7490
vn -0.8660 -0.2500 -0.4330
vn 0.0000 -0.5000 -0.8660
vn 0.8660 -0.2500 -0.4330
vn 0.8660 0.2500 0.4330
vn 0.0000 0.5000 0.8660
vn -0.8660 0.2500 0.4330
vn 0.0000 0.8660 -0.5000
vn 0.8375 0.4733 -0.2732
vn 0.8375 -0.4733 0.2732
vn -0.5739 -0.8143 0.0875
vn -0.5739 0.4830 -0.6614
vn 0.0000 -0.9799 -0.1994
vn -0.0000 0.3173 -0.9483
vn 0.5739 -0.8143 0.0875
vn 0.5739 0.4830 -0.6614
vn 0.5739 -0.4830 0.6614
vn 0.5739 0.8143 -0.0875
vn 0.0000 -0.3173 0.9483
vn 0.0000 0.9799 0.1994
vn -0.5739 -0.4830 0.6614
vn -0.5739 0.8143 -0.0875
g Cylinder_Cylinder_Side_Mat
usemtl Side_Mat
s off
f 3/1/1 4/2/1 6/3/1 5/4/1
f 5/4/2 6/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 10/7/3 9/8/3
f 9/9/4 10/10/4 12/11/4 11/12/4
f 11/12/5 12/11/5 14/13/5 13/14/5
f 13/14/6 14/13/6 4/2/6 3/1/6
f 10/15/7 8/16/7 12/17/7
f 12/17/8 8/16/8 2/18/8
f 2/18/1 8/16/1 14/19/1
f 14/19/7 8/16/7 6/20/7
f 14/19/9 6/20/9 2/18/9
f 11/21/9 1/22/9 7/23/9
f 7/23/1 1/22/1 13/24/1
f 13/24/8 1/22/8 5/25/8
f 9/8/7 7/23/7 11/21/7
f 11/21/7 7/23/7 13/24/7
f 13/24/7 7/23/7 5/25/7
f 13/24/7 5/25/7 3/26/7
g Cylinder_Cylinder_End_Mat
usemtl End_Mat
f 1/27/10 3/28/10 5/29/10
f 2/30/11 6/31/11 4/32/11
f 1/27/12 5/29/12 7/33/12
f 2/30/13 8/34/13 6/31/13
f 1/27/14 7/33/14 9/35/14
f 2/30/15 10/36/15 8/34/15
f 1/27/16 9/35/16 11/37/16
f 2/30/17 12/38/17 10/36/17
f 1/27/18 11/37/18 13/39/18
f 2/30/19 14/40/19 12/38/19
f 1/27/20 13/39/20 3/28/20
f 2/30/21 4/32/21 14/40/21
@@ -0,0 +1,22 @@
# Blender MTL File: 'hex crystal 30.blend'
# Material Count: 2
newmtl End_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl Side_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.371605 0.494084
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
@@ -0,0 +1,114 @@
# Blender v2.77 (sub 0) OBJ File: 'hex crystal 30.blend'
# www.blender.org
mtllib hex_crystal_30_med.mtl
o Cylinder
v -0.000000 -0.665758 0.095701
v 0.000000 0.960964 -0.843488
v -0.250000 -0.499868 -0.000076
v -0.250000 0.795074 -0.747711
v -0.125000 -0.608121 -0.187576
v -0.125000 0.686821 -0.935211
v 0.125000 -0.608121 -0.187576
v 0.125000 0.686821 -0.935212
v 0.250000 -0.499868 -0.000076
v 0.250000 0.795074 -0.747711
v 0.125000 -0.391615 0.187424
v 0.125000 0.903327 -0.560211
v -0.125000 -0.391615 0.187424
v -0.125000 0.903327 -0.560211
vt 0.4999 0.0000
vt 0.4999 1.0000
vt 0.3332 1.0000
vt 0.3332 0.0000
vt 0.1665 1.0000
vt 0.1665 0.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 -0.0000
vt 1.0000 1.0000
vt 0.8333 1.0000
vt 0.8333 -0.0000
vt 0.6666 1.0000
vt 0.6666 -0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.5000 0.5000
vt 0.9313 0.7490
vt 0.5000 0.9980
vt 0.5000 0.5000
vt 0.5000 0.0020
vt 0.9313 0.2510
vt 0.0687 0.7490
vt 0.0687 0.2510
vt 0.0687 0.2510
vt 0.0687 0.7490
vt 0.5000 0.0020
vt 0.5000 0.9980
vt 0.9313 0.2510
vt 0.9313 0.7490
vn -0.8660 -0.2500 -0.4330
vn 0.0000 -0.5000 -0.8660
vn 0.8660 -0.2500 -0.4330
vn 0.8660 0.2500 0.4330
vn 0.0000 0.5000 0.8660
vn -0.8660 0.2500 0.4330
vn 0.0000 0.8660 -0.5000
vn 0.8375 0.4733 -0.2732
vn 0.8375 -0.4733 0.2732
vn -0.5739 -0.8143 0.0875
vn -0.5739 0.4830 -0.6614
vn 0.0000 -0.9799 -0.1994
vn -0.0000 0.3173 -0.9483
vn 0.5739 -0.8143 0.0875
vn 0.5739 0.4830 -0.6614
vn 0.5739 -0.4830 0.6614
vn 0.5739 0.8143 -0.0875
vn 0.0000 -0.3173 0.9483
vn 0.0000 0.9799 0.1994
vn -0.5739 -0.4830 0.6614
vn -0.5739 0.8143 -0.0875
g Cylinder_Cylinder_Side_Mat
usemtl Side_Mat
s off
f 3/1/1 4/2/1 6/3/1 5/4/1
f 5/4/2 6/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 10/7/3 9/8/3
f 9/9/4 10/10/4 12/11/4 11/12/4
f 11/12/5 12/11/5 14/13/5 13/14/5
f 13/14/6 14/13/6 4/2/6 3/1/6
f 10/15/7 8/16/7 12/17/7
f 12/17/8 8/16/8 2/18/8
f 2/18/1 8/16/1 14/19/1
f 14/19/7 8/16/7 6/20/7
f 14/19/9 6/20/9 2/18/9
f 11/21/9 1/22/9 7/23/9
f 7/23/1 1/22/1 13/24/1
f 13/24/8 1/22/8 5/25/8
f 9/8/7 7/23/7 11/21/7
f 11/21/7 7/23/7 13/24/7
f 13/24/7 7/23/7 5/25/7
f 13/24/7 5/25/7 3/26/7
g Cylinder_Cylinder_End_Mat
usemtl End_Mat
f 1/27/10 3/28/10 5/29/10
f 2/30/11 6/31/11 4/32/11
f 1/27/12 5/29/12 7/33/12
f 2/30/13 8/34/13 6/31/13
f 1/27/14 7/33/14 9/35/14
f 2/30/15 10/36/15 8/34/15
f 1/27/16 9/35/16 11/37/16
f 2/30/17 12/38/17 10/36/17
f 1/27/18 11/37/18 13/39/18
f 2/30/19 14/40/19 12/38/19
f 1/27/20 13/39/20 3/28/20
f 2/30/21 4/32/21 14/40/21
@@ -0,0 +1,22 @@
# Blender MTL File: 'hex crystal.blend'
# Material Count: 2
newmtl End_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl Side_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.371605 0.494084
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
@@ -0,0 +1,114 @@
# Blender v2.77 (sub 0) OBJ File: 'hex crystal.blend'
# www.blender.org
mtllib hex_crystal.mtl
o Cylinder
v 0.000000 -0.882802 0.000000
v 0.000000 2.873951 0.000000
v 0.000000 -0.499696 -0.500000
v 0.000000 2.490845 -0.500000
v 0.433013 -0.499696 -0.250000
v 0.433013 2.490845 -0.250000
v 0.433013 -0.499696 0.250000
v 0.433013 2.490845 0.250000
v -0.000000 -0.499696 0.500000
v -0.000000 2.490845 0.500000
v -0.433013 -0.499696 0.250000
v -0.433013 2.490845 0.250000
v -0.433013 -0.499696 -0.250000
v -0.433013 2.490845 -0.250000
vt 0.4999 0.0000
vt 0.4999 1.0000
vt 0.3332 1.0000
vt 0.3332 0.0000
vt 0.1665 1.0000
vt 0.1665 0.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 -0.0000
vt 1.0000 1.0000
vt 0.8333 1.0000
vt 0.8333 -0.0000
vt 0.6666 1.0000
vt 0.6666 -0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.5000 0.5000
vt 0.9313 0.7490
vt 0.5000 0.9980
vt 0.5000 0.5000
vt 0.5000 0.0020
vt 0.9313 0.2510
vt 0.0687 0.7490
vt 0.0687 0.2510
vt 0.0687 0.2510
vt 0.0687 0.7490
vt 0.5000 0.0020
vt 0.5000 0.9980
vt 0.9313 0.2510
vt 0.9313 0.7490
vn 0.5000 0.0000 -0.8660
vn 1.0000 0.0000 0.0000
vn 0.5000 0.0000 0.8660
vn -0.5000 0.0000 0.8660
vn -1.0000 0.0000 0.0000
vn -0.5000 0.0000 -0.8660
vn 0.0000 1.0000 0.0000
vn -0.0000 0.5465 0.8375
vn 0.0000 -0.5465 0.8375
vn 0.3313 -0.7489 -0.5739
vn 0.3313 0.7489 -0.5739
vn 0.6626 -0.7489 0.0000
vn 0.6626 0.7489 0.0000
vn 0.3313 -0.7489 0.5739
vn 0.3313 0.7489 0.5739
vn -0.3313 -0.7489 0.5739
vn -0.3313 0.7489 0.5739
vn -0.6626 -0.7489 0.0000
vn -0.6626 0.7489 0.0000
vn -0.3313 -0.7489 -0.5739
vn -0.3313 0.7489 -0.5739
g Cylinder_Cylinder_Side_Mat
usemtl Side_Mat
s off
f 3/1/1 4/2/1 6/3/1 5/4/1
f 5/4/2 6/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 10/7/3 9/8/3
f 9/9/4 10/10/4 12/11/4 11/12/4
f 11/12/5 12/11/5 14/13/5 13/14/5
f 13/14/6 14/13/6 4/2/6 3/1/6
f 10/15/7 8/16/7 12/17/7
f 12/17/8 8/16/8 2/18/8
f 2/18/1 8/16/1 14/19/1
f 14/19/7 8/16/7 6/20/7
f 14/19/9 6/20/9 2/18/9
f 11/21/9 1/22/9 7/23/9
f 7/23/1 1/22/1 13/24/1
f 13/24/8 1/22/8 5/25/8
f 9/8/7 7/23/7 11/21/7
f 11/21/7 7/23/7 13/24/7
f 13/24/7 7/23/7 5/25/7
f 13/24/7 5/25/7 3/26/7
g Cylinder_Cylinder_End_Mat
usemtl End_Mat
f 1/27/10 3/28/10 5/29/10
f 2/30/11 6/31/11 4/32/11
f 1/27/12 5/29/12 7/33/12
f 2/30/13 8/34/13 6/31/13
f 1/27/14 7/33/14 9/35/14
f 2/30/15 10/36/15 8/34/15
f 1/27/16 9/35/16 11/37/16
f 2/30/17 12/38/17 10/36/17
f 1/27/18 11/37/18 13/39/18
f 2/30/19 14/40/19 12/38/19
f 1/27/20 13/39/20 3/28/20
f 2/30/21 4/32/21 14/40/21
@@ -0,0 +1,22 @@
# Blender MTL File: 'hex crystal.blend'
# Material Count: 2
newmtl End_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl Side_Mat
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.371605 0.494084
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
@@ -0,0 +1,114 @@
# Blender v2.77 (sub 0) OBJ File: 'hex crystal.blend'
# www.blender.org
mtllib hex_crystal_med.mtl
o Cylinder
v 0.000000 -0.691401 0.000000
v 0.000000 1.186976 0.000000
v 0.000000 -0.499848 -0.250000
v 0.000000 0.995423 -0.250000
v 0.216506 -0.499848 -0.125000
v 0.216506 0.995423 -0.125000
v 0.216506 -0.499848 0.125000
v 0.216506 0.995423 0.125000
v -0.000000 -0.499848 0.250000
v -0.000000 0.995423 0.250000
v -0.216506 -0.499848 0.125000
v -0.216506 0.995423 0.125000
v -0.216506 -0.499848 -0.125000
v -0.216506 0.995423 -0.125000
vt 0.4999 0.0000
vt 0.4999 1.0000
vt 0.3332 1.0000
vt 0.3332 0.0000
vt 0.1665 1.0000
vt 0.1665 0.0000
vt 0.0000 1.0000
vt 0.0000 0.0000
vt 1.0000 -0.0000
vt 1.0000 1.0000
vt 0.8333 1.0000
vt 0.8333 -0.0000
vt 0.6666 1.0000
vt 0.6666 -0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.0000 0.0000
vt 0.5000 0.5000
vt 0.9313 0.7490
vt 0.5000 0.9980
vt 0.5000 0.5000
vt 0.5000 0.0020
vt 0.9313 0.2510
vt 0.0687 0.7490
vt 0.0687 0.2510
vt 0.0687 0.2510
vt 0.0687 0.7490
vt 0.5000 0.0020
vt 0.5000 0.9980
vt 0.9313 0.2510
vt 0.9313 0.7490
vn 0.5000 0.0000 -0.8660
vn 1.0000 0.0000 0.0000
vn 0.5000 0.0000 0.8660
vn -0.5000 0.0000 0.8660
vn -1.0000 0.0000 0.0000
vn -0.5000 0.0000 -0.8660
vn 0.0000 1.0000 0.0000
vn -0.0000 0.5465 0.8375
vn 0.0000 -0.5465 0.8375
vn 0.3313 -0.7489 -0.5739
vn 0.3313 0.7489 -0.5739
vn 0.6626 -0.7489 0.0000
vn 0.6626 0.7489 0.0000
vn 0.3313 -0.7489 0.5739
vn 0.3313 0.7489 0.5739
vn -0.3313 -0.7489 0.5739
vn -0.3313 0.7489 0.5739
vn -0.6626 -0.7489 0.0000
vn -0.6626 0.7489 0.0000
vn -0.3313 -0.7489 -0.5739
vn -0.3313 0.7489 -0.5739
g Cylinder_Cylinder_Side_Mat
usemtl Side_Mat
s off
f 3/1/1 4/2/1 6/3/1 5/4/1
f 5/4/2 6/3/2 8/5/2 7/6/2
f 7/6/3 8/5/3 10/7/3 9/8/3
f 9/9/4 10/10/4 12/11/4 11/12/4
f 11/12/5 12/11/5 14/13/5 13/14/5
f 13/14/6 14/13/6 4/2/6 3/1/6
f 10/15/7 8/16/7 12/17/7
f 12/17/8 8/16/8 2/18/8
f 2/18/1 8/16/1 14/19/1
f 14/19/7 8/16/7 6/20/7
f 14/19/9 6/20/9 2/18/9
f 11/21/9 1/22/9 7/23/9
f 7/23/1 1/22/1 13/24/1
f 13/24/8 1/22/8 5/25/8
f 9/8/7 7/23/7 11/21/7
f 11/21/7 7/23/7 13/24/7
f 13/24/7 7/23/7 5/25/7
f 13/24/7 5/25/7 3/26/7
g Cylinder_Cylinder_End_Mat
usemtl End_Mat
f 1/27/10 3/28/10 5/29/10
f 2/30/11 6/31/11 4/32/11
f 1/27/12 5/29/12 7/33/12
f 2/30/13 8/34/13 6/31/13
f 1/27/14 7/33/14 9/35/14
f 2/30/15 10/36/15 8/34/15
f 1/27/16 9/35/16 11/37/16
f 2/30/17 12/38/17 10/36/17
f 1/27/18 11/37/18 13/39/18
f 2/30/19 14/40/19 12/38/19
f 1/27/20 13/39/20 3/28/20
f 2/30/21 4/32/21 14/40/21
@@ -0,0 +1,3 @@
All hex crystal models and the octagonal_coral model were created by FaceDeer and released under both the MIT license and under the Creative Commons CC0 license.
underch_crystal is from the [underch] (Underground Challenge) mod by Hume2 (https://gitlab.com/h2mm/underch) under the WTFPL license, relicened here to the MIT license
@@ -0,0 +1,181 @@
# Blender v2.79 (sub 0) OBJ File: 'octagonal_coral.blend'
# www.blender.org
g Cylinder.003_Cylinder.004
v -0.120061 0.505000 -0.289852
v 0.120061 0.505000 -0.289852
v 0.289852 0.505000 -0.120061
v 0.289852 0.505000 0.120061
v 0.120060 0.505000 0.289852
v -0.120061 0.505000 0.289852
v -0.289852 0.505000 0.120061
v -0.289852 0.505000 -0.120060
v -0.120061 -0.250000 -0.289852
v 0.120061 -0.250000 -0.289852
v 0.289852 -0.250000 -0.120061
v 0.289852 -0.250000 0.120061
v 0.120060 -0.250000 0.289852
v -0.120061 -0.250000 0.289852
v -0.289852 -0.250000 0.120061
v -0.289852 -0.250000 -0.120060
vt 0.500000 1.000024
vt 0.250000 1.000024
vt 0.250000 -0.000024
vt 0.500000 -0.000024
vt 0.750000 1.000024
vt 0.500000 1.000024
vt 0.500000 -0.000024
vt 0.750000 -0.000024
vt 0.750000 1.000024
vt 0.500000 1.000024
vt 0.500000 -0.000024
vt 0.750000 -0.000024
vt 0.750000 1.000024
vt 0.500000 1.000024
vt 0.500000 -0.000024
vt 0.750000 -0.000024
vt 0.250000 1.000024
vt 0.250000 -0.000024
vt 0.750000 1.000024
vt 0.750000 -0.000024
vt 0.250000 1.000024
vt 0.250000 -0.000024
vt 0.250000 1.000024
vt 0.250000 -0.000024
s off
f 3/1 2/2 10/3 11/4
f 8/5 7/6 15/7 16/8
f 6/9 5/10 13/11 14/12
f 2/13 1/14 9/15 10/16
f 5/10 4/17 12/18 13/11
f 4/19 3/1 11/4 12/20
f 1/14 8/21 16/22 9/15
f 7/6 6/23 14/24 15/7
g Cylinder.002_Cylinder.003
v -0.120061 0.505000 -0.289852
v -0.292831 -0.505000 -0.706955
v -0.292831 0.505000 -0.706955
v 0.292830 -0.505000 -0.706955
v 0.292830 0.505000 -0.706955
v 0.706955 -0.505000 -0.292831
v 0.706955 0.505000 -0.292831
v 0.706955 -0.505000 0.292830
v 0.706955 0.505000 0.292830
v 0.292830 -0.505000 0.706955
v 0.292830 0.505000 0.706955
v -0.292831 -0.505000 0.706955
v -0.292831 0.505000 0.706955
v -0.706955 -0.505000 0.292831
v -0.706955 0.505000 0.292831
v -0.706955 -0.505000 -0.292830
v -0.706955 0.505000 -0.292830
v 0.120061 0.505000 -0.289852
v 0.289852 0.505000 -0.120061
v 0.289852 0.505000 0.120061
v 0.120060 0.505000 0.289852
v -0.120061 0.505000 0.289852
v -0.289852 0.505000 0.120061
v -0.289852 0.505000 -0.120060
vt -0.207066 0.792876
vt -0.207066 0.207124
vt 0.210103 0.379921
vt 0.210103 0.620079
vt 0.500000 -0.000000
vt 0.500000 1.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 1.207066 0.207124
vt 1.207066 0.792876
vt 0.789897 0.620079
vt 0.789897 0.379921
vt 1.000000 -0.000000
vt 1.000000 1.000000
vt 0.500000 1.000000
vt 0.500000 -0.000000
vt 0.792876 1.207066
vt 0.207124 1.207066
vt 0.379921 0.789897
vt 0.620079 0.789897
vt -0.000000 1.000000
vt -0.000000 0.000000
vt 0.207124 -0.207066
vt 0.379921 0.210103
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.500000 1.000000
vt 0.500000 0.000000
vt 0.000000 1.000000
vt 0.000000 0.000000
vt 0.792876 -0.207066
vt 0.620079 0.210103
vt 1.000000 0.000000
vt 1.000000 1.000000
vt 0.500000 1.000000
vt 0.500000 0.000000
vt -0.000000 1.000000
vt -0.000000 0.000000
vt 1.000000 -0.000000
vt 1.000000 1.000000
s off
f 33/25 31/26 39/27 40/28
f 18/29 19/30 21/31 20/32
f 25/33 23/34 35/35 36/36
f 20/37 21/38 23/39 22/40
f 21/41 19/42 17/43 34/44
f 22/40 23/39 25/45 24/46
f 31/26 29/47 38/48 39/27
f 24/49 25/50 27/51 26/52
f 23/34 21/41 34/44 35/35
f 26/52 27/51 29/53 28/54
f 29/47 27/55 37/56 38/48
f 28/57 29/58 31/59 30/60
f 30/60 31/59 33/61 32/62
f 27/55 25/33 36/36 37/56
f 32/63 33/64 19/30 18/29
f 19/42 33/25 40/28 17/43
g Cylinder.001_Cylinder.002
v 0.000000 -0.505000 0.000000
v -0.292831 -0.505000 -0.706955
v 0.292830 -0.505000 -0.706955
v 0.706955 -0.505000 -0.292831
v 0.706955 -0.505000 0.292830
v 0.292830 -0.505000 0.706955
v -0.292831 -0.505000 0.706955
v -0.706955 -0.505000 0.292831
v -0.706955 -0.505000 -0.292830
vt 0.500000 0.500000
vt 0.207147 1.207009
vt 0.792853 1.207009
vt 1.207009 0.792853
vt 1.207009 0.207147
vt 0.792853 -0.207009
vt 0.207147 -0.207009
vt -0.207009 0.207147
vt -0.207009 0.792853
s off
f 41/65 42/66 43/67
f 41/65 43/67 44/68
f 41/65 44/68 45/69
f 41/65 45/69 46/70
f 41/65 46/70 47/71
f 41/65 47/71 48/72
f 41/65 48/72 49/73
f 41/65 49/73 42/66
g Cylinder
v -0.120061 -0.250000 -0.289852
v 0.120061 -0.250000 -0.289852
v 0.289852 -0.250000 -0.120061
v 0.289852 -0.250000 0.120061
v 0.120060 -0.250000 0.289852
v -0.120061 -0.250000 0.289852
v -0.289852 -0.250000 0.120061
v -0.289852 -0.250000 -0.120060
vt 0.707087 0.999951
vt 0.292913 0.999951
vt 0.000049 0.707087
vt 0.000049 0.292913
vt 0.292913 0.000049
vt 0.707087 0.000049
vt 0.999951 0.292913
vt 0.999951 0.707087
s off
f 51/74 50/75 57/76 56/77 55/78 54/79 53/80 52/81
@@ -0,0 +1,32 @@
# Blender MTL File: 'crystal.blend'
# Material Count: 3
newmtl Material
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl Material.001
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
newmtl Material.002
Ns 96.078431
Ka 1.000000 1.000000 1.000000
Kd 0.640000 0.640000 0.640000
Ks 0.500000 0.500000 0.500000
Ke 0.000000 0.000000 0.000000
Ni 1.000000
d 1.000000
illum 2
@@ -0,0 +1,107 @@
# Blender v2.76 (sub 0) OBJ File: 'crystal.blend'
# www.blender.org
mtllib underch_crystal.mtl
o Cube.001
v 0.172286 -0.548977 -0.222058
v 0.165892 -0.528919 0.010751
v -0.065309 -0.563236 0.007358
v -0.058916 -0.583294 -0.225451
v 0.179327 0.201377 -0.503659
v 0.171710 0.225272 -0.226315
v -0.103720 0.184391 -0.230357
v -0.096103 0.160496 -0.507701
v 0.007959 0.394590 -0.413866
v -0.238829 -0.557870 -0.066808
v -0.011182 -0.528529 -0.111069
v 0.036394 -0.554673 0.116299
v -0.191253 -0.584014 0.160560
v -0.549483 0.180196 -0.033148
v -0.278287 0.215150 -0.085875
v -0.221610 0.184005 0.184988
v -0.492806 0.149051 0.237716
v -0.434139 0.382762 0.109765
v 0.032617 -0.584181 0.104827
v -0.156722 -0.543012 -0.025937
v -0.021474 -0.523372 -0.215584
v 0.167865 -0.564541 -0.084819
v 0.215590 0.116995 0.447251
v -0.009969 0.166039 0.291472
v 0.151151 0.189436 0.065547
v 0.376709 0.140392 0.221326
v 0.226702 0.351514 0.307113
vt 0.500000 0.250000
vt 0.250000 0.250000
vt 0.250000 -0.000000
vt 0.500000 -0.000000
vt 0.750000 0.750000
vt 1.000000 0.750000
vt 0.875000 1.000000
vt 1.000000 -0.000000
vt 0.750000 0.000000
vt 0.500000 0.750000
vt 0.250000 0.750000
vt 0.000000 0.750000
vt 0.000000 -0.000000
vt 0.125000 1.000000
vt 0.375000 1.000000
vt 0.625000 1.000000
vt 0.000000 0.250000
vt 0.750000 0.250000
vn 0.100900 -0.985800 -0.134500
vn -0.225200 0.644000 -0.731100
vn -0.186600 -0.033700 -0.981900
vn 0.928000 0.338600 -0.155300
vn 0.193700 -0.023500 0.980800
vn -0.909500 -0.389400 0.145500
vn -0.906600 0.353700 0.230400
vn 0.113100 0.455200 0.883200
vn 0.693400 0.717800 -0.062600
vn 0.145000 -0.985400 0.088900
vn 0.738800 0.672800 -0.037700
vn 0.999600 0.000900 0.027400
vn -0.058500 0.299800 0.952200
vn -0.998000 -0.058400 -0.022400
vn 0.065800 -0.351100 -0.934000
vn -0.044200 0.388600 -0.920400
vn -0.902700 0.425900 -0.061500
vn -0.112500 0.686700 0.718200
vn -0.095900 -0.980800 -0.169900
vn -0.426000 0.478900 0.767600
vn -0.586400 -0.226800 0.777700
vn -0.769200 0.386900 -0.508500
vn 0.584800 0.171100 -0.792900
vn 0.753200 -0.436800 0.491900
vn 0.759600 0.306700 0.573500
vn 0.534200 0.615200 -0.579800
vn -0.569200 0.754000 -0.327900
usemtl Material.001
s off
f 10/1/1 11/2/1 12/3/1 13/4/1
f 15/5/2 14/6/2 18/7/2
f 10/8/3 14/6/3 15/5/3 11/9/3
f 11/9/4 15/5/4 16/10/4 12/4/4
f 12/4/5 16/10/5 17/11/5 13/3/5
f 14/12/6 10/13/6 13/3/6 17/11/6
f 14/12/7 17/11/7 18/14/7
f 17/11/8 16/10/8 18/15/8
f 16/10/9 15/5/9 18/16/9
usemtl Material
f 1/17/10 2/13/10 3/3/10 4/2/10
f 6/10/11 5/5/11 9/16/11
f 1/9/12 5/5/12 6/10/12 2/4/12
f 2/4/13 6/10/13 7/11/13 3/3/13
f 3/3/14 7/11/14 8/12/14 4/13/14
f 5/5/15 1/9/15 4/8/15 8/6/15
f 5/5/16 8/6/16 9/7/16
f 8/12/17 7/11/17 9/14/17
f 7/11/18 6/10/18 9/15/18
usemtl Material.002
f 19/4/19 20/9/19 21/18/19 22/1/19
f 24/5/20 23/6/20 27/7/20
f 19/8/21 23/6/21 24/5/21 20/9/21
f 20/9/22 24/5/22 25/10/22 21/4/22
f 21/4/23 25/10/23 26/11/23 22/3/23
f 23/12/24 19/13/24 22/3/24 26/11/24
f 23/12/25 26/11/25 27/14/25
f 26/11/26 25/10/26 27/15/26
f 25/10/27 24/5/27 27/16/27
@@ -0,0 +1,5 @@
#To disable glow worm growth, set this to 0.
dfcaverns_glow_worm_delay_multiplier (glow worm growth delay multiplier) float 10
dfcaverns_snareweed_damage (Snareweed causes damage to player) bool true
dfcaverns_invulnerable_slade (Slade cannot be damaged) bool true
dfcaverns_destructive_pit_plasma (Pit plasma destroys adjacent nodes) bool false
+75
View File
@@ -0,0 +1,75 @@
local S = minetest.get_translator(minetest.get_current_modname())
minetest.register_node("df_mapitems:snareweed", {
description = S("Snareweed"),
_doc_items_longdesc = df_mapitems.doc.snareweed_desc,
_doc_items_usagehelp = df_mapitems.doc.snareweed_usage,
tiles = {df_dependencies.texture_dirt .. "^dfcaverns_snareweed_roots.png", df_dependencies.texture_dirt},
drawtype="plantlike_rooted",
paramtype2 = "leveled",
special_tiles = {{name = "dfcaverns_snareweed.png", tileable_vertical = true}},
is_ground_content = false,
drop = df_dependencies.node_name_dirt,
light_source = 6,
groups = {crumbly = 3, soil = 1, handy=1,shovely=1, dirt=1,},
sounds = df_dependencies.sound_dirt(),
_mcl_blast_resistance = 0.5,
_mcl_hardness = 0.6,
})
if df_mapitems.config.snareweed_damage then
local timer = 0
minetest.register_globalstep(function(dtime)
timer = timer + dtime
if timer >= 1 then
timer = timer - 1
for _, player in pairs(minetest.get_connected_players()) do
local player_pos = player:get_pos() -- node player's feet are in this location.
local rounded_pos = vector.round(player_pos)
local nearby_nodes = minetest.find_nodes_in_area(vector.add(rounded_pos, {x=0, y= -8, z=0}), rounded_pos, {"df_mapitems:snareweed"})
for _, node_pos in ipairs(nearby_nodes) do
local node = minetest.get_node(node_pos)
local distance = player_pos.y - node_pos.y
if distance <= node.param2/16 then
minetest.log("action", player:get_player_name() .. " takes 2 damage from snareweed at " .. minetest.pos_to_string(node_pos))
player:set_hp(player:get_hp() - 2)
break
end
end
end
end
end)
end
local c_water = minetest.get_content_id(df_dependencies.node_name_water_source)
local c_dirt = minetest.get_content_id(df_dependencies.node_name_dirt)
local c_stone = minetest.get_content_id(df_dependencies.node_name_stone)
local c_snareweed = minetest.get_content_id("df_mapitems:snareweed")
df_mapitems.place_snareweed = function(area, data, bi, param2_data)
local max_height = 0
local index = bi + area.ystride
while area:containsi(index) and data[index] == c_water and max_height <= 8*16 do
index = index + area.ystride
max_height = max_height + 16
end
if max_height > 0 then
data[bi] = c_snareweed
param2_data[bi] = math.min(math.random(3*16, 8*16), max_height)
else
data[bi] = c_dirt
end
end
df_mapitems.place_snareweed_patch = function(area, data, bi, param2_data, radius)
local pos = area:position(bi)
for li in area:iterp(vector.add(pos, -radius), vector.add(pos, radius)) do
local adjacent = li + area.ystride
local node_type = data[li]
if math.random() < 0.1 and (node_type == c_stone or node_type == c_dirt) and data[adjacent] == c_water then
df_mapitems.place_snareweed(area, data, li, param2_data)
end
end
end
@@ -0,0 +1,5 @@
dfcaverns_squish.1.ogg - from https://freesound.org/people/DrMinky/sounds/167074/ by DrMinky under Creative Commons BY 3.0
dfcaverns_squish.2.ogg - from https://freesound.org/people/DrMinky/sounds/167075/ by DrMinky under Creative Commons BY 3.0
dfcaverns_squish.3.ogg - from https://freesound.org/people/DrMinky/sounds/167073/ by DrMinky under Creative Commons BY 3.0
slow heartbeat - https://freesound.org/people/daandraait/sounds/249716/ under CC0
Binary file not shown.

After

Width:  |  Height:  |  Size: 477 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 964 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 760 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 762 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 784 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 489 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 421 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 902 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 937 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 328 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 363 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 361 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 748 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 765 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 780 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 400 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 661 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 957 B

@@ -0,0 +1,9 @@
All textures not specifically listed here are created by FaceDeer and released under both the MIT license and under the Creative Commons CC0 license.
dfcaverns_glow_worm - copied from caverealms
dfcaverns_glow_worm_animated - glow worm texture overlaid with rippling animation derived from default mod's water texture
dfcaverns_glow_mese - from caverealms glow_mese
dfcaverns_glow_ruby, dfcaverns_glow_ruby4x, dfcaverns_glow_ruby_quarter - from caverealms glow_ruby
dfcaverns_glow_ruby_ore - from caverealms glow_ruby_ore
dfcaverns_salt_crystal - from caverealms
dfcaverns_salty - from caverealms with modified alpha channel
+132
View File
@@ -0,0 +1,132 @@
-- Used by cave pearls and crystal clusters
-- These methods simulate "wallmounted" nodes using regular facedir, randomizing the rotation around the wallmounted direction.
-- Useful for naturalistic objects you want to have look irregular
df_mapitems.place_against_surface = function(itemstack, placer, pointed_thing)
-- check if pointing at a node
if not pointed_thing then
return itemstack
end
if pointed_thing.type ~= "node" then
return itemstack
end
local under_pos = pointed_thing.under
local above_pos = pointed_thing.above
local under_node = minetest.get_node(under_pos)
local above_node = minetest.get_node(above_pos)
if minetest.is_protected(above_pos, placer:get_player_name()) then
minetest.record_protection_violation(above_pos, placer:get_player_name())
return
end
local under_name = under_node.name
local above_name = above_node.name
local under_def = minetest.registered_nodes[under_name]
local above_def = minetest.registered_nodes[above_name]
-- return if any of the nodes is not registered
if not under_def or not above_def then
return itemstack
end
-- check if you can replace the node above the pointed node
if not above_def.buildable_to then
return itemstack
end
local dir = vector.subtract(under_pos, above_pos)
local param2
if dir.x > 0 then
--facing +x: 16, 17, 18, 19,
param2 = 15 + math.random(1,4)
elseif dir.x < 0 then
--facing -x: 12, 13, 14, 15
param2 = 11 + math.random(1,4)
elseif dir.z > 0 then
--facing +z: 8, 9, 10, 11
param2 = 7 + math.random(1,4)
elseif dir.z < 0 then
--facing -z: 4, 5, 6, 7
param2 = 3 + math.random(1,4)
elseif dir.y > 0 then
--facing -y: 20, 21, 22, 23 (ceiling)
param2 = 19 + math.random(1,4)
else
--facing +y: 0, 1, 2, 3 (floor)
param2 = math.random(1,4) - 1
end
-- add the node and remove 1 item from the itemstack
minetest.add_node(above_pos, {name = itemstack:get_name(), param2 = param2})
if not minetest.is_creative_enabled(placer:get_player_name()) then
itemstack:take_item()
end
return itemstack
end
-- Mapgen version of the above
local add_to_table = function(dest, source)
for _, val in ipairs(source) do
table.insert(dest, val)
end
end
local valid_nodes = {} -- cache values
local is_valid_mounting_node = function(c_node)
if valid_nodes[c_node] ~= nil then
return valid_nodes[c_node]
end
local def = minetest.registered_nodes[minetest.get_name_from_content_id(c_node)]
if def ~= nil
and (def.drawtype == "normal" or def.drawtype == nil)
and not def.buildable_to
and not (def.groups and def.groups.falling_node) then
valid_nodes[c_node] = true
return true
end
valid_nodes[c_node] = false
return false
end
--facing +x: 16, 17, 18, 19,
--facing -x: 12, 13, 14, 15
--facing +z: 8, 9, 10, 11
--facing -z: 4, 5, 6, 7
--facing -y: 20, 21, 22, 23, (ceiling)
--facing +y: 0, 1, 2, 3
local get_valid_facedirs_vm = function(vi, area, data)
local dirs = {}
local ystride = area.ystride
local zstride = area.zstride
if is_valid_mounting_node(data[vi+1]) then
add_to_table(dirs, {16, 17, 18, 19})
end
if is_valid_mounting_node(data[vi-1]) then
add_to_table(dirs, {12, 13, 14, 15})
end
if is_valid_mounting_node(data[vi-ystride]) then
add_to_table(dirs, {0, 1, 2, 3})
end
if is_valid_mounting_node(data[vi+ystride]) then
add_to_table(dirs, {20, 21, 22, 23})
end
if is_valid_mounting_node(data[vi+zstride]) then
add_to_table(dirs, {8, 9, 10, 11})
end
if is_valid_mounting_node(data[vi-zstride]) then
add_to_table(dirs, {4, 5, 6, 7})
end
return dirs
end
df_mapitems.place_against_surface_vm = function(c_node, vi, area, data, data_param2)
local facedirs = get_valid_facedirs_vm(vi, area, data)
local count = #facedirs
if count > 0 then
data[vi] = c_node
data_param2[vi] = facedirs[math.random(1, count)]
end
end
+81
View File
@@ -0,0 +1,81 @@
local S = minetest.get_translator(minetest.get_current_modname())
-- overridden to trigger an achievement, without making achievements a dependency of this mod
df_mapitems.on_veinstone_punched = function()
end
minetest.register_node("df_mapitems:veinstone", {
description = S("Veinstone"),
_doc_items_longdesc = df_mapitems.doc.veinstone_desc,
_doc_items_usagehelp = df_mapitems.doc.veinstone_usage,
tiles = {df_dependencies.texture_stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 2,
drop = "df_mapitems:veinstone",
sounds = df_dependencies.sound_stone(),
on_punch = function(pos, node, puncher, pointed_thing)
minetest.node_punch(pos, node, puncher, pointed_thing)
minetest.swap_node(pos, {name="df_mapitems:veinstone_pulse"})
minetest.get_node_timer(pos):start(2)
minetest.sound_play({name="dfcaverns_slow_heartbeat", gain=0.5}, {pos = pos})
df_mapitems.on_veinstone_punched(pos, node, puncher, pointed_thing)
end,
_mcl_blast_resistance = 10,
_mcl_hardness = 3,
})
minetest.register_node("df_mapitems:veinstone_pulse", {
description = S("Veinstone"),
_doc_items_longdesc = df_mapitems.doc.veinstone_desc,
_doc_items_usagehelp = df_mapitems.doc.veinstone_usage,
tiles = {df_dependencies.texture_stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, not_in_creative_inventory = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 8,
drop = "df_mapitems:veinstone",
sounds = df_dependencies.sound_stone(),
on_timer = function(pos, elapsed)
local positions, count = minetest.find_nodes_in_area(vector.add(pos,1), vector.subtract(pos,1), "df_mapitems:veinstone")
if count["df_mapitems:veinstone"] == 0 then
positions, count = minetest.find_nodes_in_area(vector.add(pos,2), vector.subtract(pos,2), "df_mapitems:veinstone")
end
if count["df_mapitems:veinstone"] == 0 then
positions = {[1] = minetest.find_node_near(pos, 3, "df_mapitems:veinstone")}
end
if positions[1] == nil then
positions = {[1] = minetest.find_node_near(pos, 4, "df_mapitems:veinstone")}
end
if (positions[1] ~= nil) then
minetest.sound_play({name="dfcaverns_slow_heartbeat", gain=0.5}, {pos = pos})
end
for _, neighbor_pos in pairs(positions) do
minetest.swap_node(neighbor_pos, {name="df_mapitems:veinstone_pulse"})
minetest.get_node_timer(neighbor_pos):start(2)
end
minetest.swap_node(pos, {name="df_mapitems:veinstone_refractory"})
minetest.get_node_timer(pos):start(12)
end,
_mcl_blast_resistance = 10,
_mcl_hardness = 3,
})
minetest.register_node("df_mapitems:veinstone_refractory", {
description = S("Veinstone"),
_doc_items_longdesc = df_mapitems.doc.veinstone_desc,
_doc_items_usagehelp = df_mapitems.doc.veinstone_usage,
tiles = {df_dependencies.texture_stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, not_in_creative_inventory = 1, pickaxey=1, building_block=1, material_stone=1},
_magma_conduits_heats_to = df_dependencies.node_name_cobble,
is_ground_content = false,
light_source = 1,
drop = "df_mapitems:veinstone",
sounds = df_dependencies.sound_stone(),
on_timer = function(pos, elapsed)
minetest.swap_node(pos, {name="df_mapitems:veinstone"})
end,
_mcl_blast_resistance = 10,
_mcl_hardness = 3,
})