47 Commits

Author SHA1 Message Date
289c353bb6 Pit caves (#20)
* A simple pit cave mod, based off of code from the volcano pipes in my magma_conduits mod

* option to seal off ocean pits

* reuse chasm's ignore list

* documentation

* rename findpits to prevent confusion with underworld glowing pits
2021-05-07 22:59:30 -06:00
79fd356477 update subterrane 2021-04-11 17:21:12 -06:00
b3525c98d5 add an api to chasms to let other mods build bridges without them being chopped up 2021-04-04 22:59:17 -06:00
3d7c2b43a4 fiddling with the prevalence of cave webs a bit 2021-03-29 11:48:10 -06:00
1dbea13f67 fix undeclared local 2021-03-28 15:38:30 -06:00
9b7e71c675 Chasms (#19)
* initial chasms mod

* tweak default chasm settings

* prevent chasms from breaching oil and magma seas, make veinstone actually do something

* overgenerate caverns to eliminate floating stalactites

* make veinstone punchable instead of right-clickable

* ensure dfcaverns get carved before chasms

this has an unfortunate tradeoff. Chasms will no longer have floating giant columns in them, but will also no longer have smaller stalactites and stalagmites. Also will carve chasms through lake water. Not sure if this is ideal.

* add rare big webs to the chasms, to give them a unique feature

* reverse the dependencies for df_caverns and chasms, let chasms go first.

* fix web generator

* add webs to level 3 tunnels, fix sunless sea chasms

* fix up tunnel webs

* make webs snappy

* make webs slightly more prevalent

* add chasms to the guide

* final touch-ups before merging

* allow anchoring against unloaded blocks
2021-03-28 15:20:52 -06:00
0acb3ab09b update use_texture_alpha properties 2021-03-13 02:21:13 -07:00
9a53e49fa8 make primordial gills climbable, make spore trees more likely to produce spawn 2021-03-12 18:29:05 -07:00
ae4d0ebe81 it's been a few months since name_generator's name was changed on contentDB, remove temp backwards compatibility 2021-01-19 22:00:32 -07:00
b6ffd7fc97 made the pit plasma abm much more selective to reduce cpu load 2021-01-16 01:07:48 -07:00
b4a4d54877 Merge pull request #17 from FaceDeer/ground_covers
Ground covers and guardians
2020-12-05 00:56:24 -07:00
7b8c1e547e update subterrane 2020-12-05 00:38:46 -07:00
2b8f808605 since I don't know when contentdb will accept the changed name for namegen, adding support for both names temporarily 2020-12-01 21:54:10 -07:00
d2ed498f45 add a few edibles to the primordial layer 2020-12-01 00:08:38 -07:00
f5954dfdc5 add hunger_ng support 2020-11-30 19:42:00 -07:00
fc2bc52203 Place new ground covers. Also, had to change namegen's name to avoid a collision on ContentDB 2020-11-22 16:30:56 -07:00
dab827bf8f update map colours 2020-11-19 21:29:51 -07:00
9c93d9c4e3 slightly reduce the density of hunter statues 2020-11-19 21:17:50 -07:00
d1cf8927af make statue a bit quieter 2020-11-19 18:35:49 -07:00
0f04fd94e5 png optimize a few more textures 2020-11-19 18:32:19 -07:00
e2d43c466d texture the hunter statue better 2020-11-19 18:28:04 -07:00
3d8508605d more stubbed in translations 2020-11-15 19:07:42 -07:00
82056c0421 moving tree default dependencies into one file (mostly), adding stub translations 2020-11-15 19:06:45 -07:00
9452f69509 move dependencies into one source file for mapitems, stub in some translations 2020-11-15 17:54:56 -07:00
e18174b971 move farming dependencies into one file, add stub translations 2020-11-15 15:37:42 -07:00
212b88b227 centralize node id lookups, add stub translations 2020-11-15 15:25:05 -07:00
b31618e5b0 isolate primordial item default dependencies to one file, add stub translations 2020-11-15 15:06:20 -07:00
92d9cb1399 add statues to underworld mapgen 2020-11-10 21:04:11 -07:00
14fcdd30c6 fix thud sounds 2020-11-10 20:57:45 -07:00
54424710d7 add something nasty to the underworld 2020-11-10 20:51:37 -07:00
5847fa74fc add glowstone veins to the primordial layer, limit fire so the jungles don't become infernos 2020-11-04 18:27:26 -07:00
e6ebf1a14d add new carpet vegetation to some cavern layers 2020-07-11 13:05:33 -06:00
24615891d6 make ground covers spread 2020-02-27 16:43:58 -07:00
703a638360 make footprints more visible 2020-02-27 15:37:00 -07:00
53605f1005 create some new ground cover types 2020-02-27 15:28:47 -07:00
c328f05de4 shut down gas seeps that are close to lava to reduce endless explosions 2020-02-23 12:01:38 -07:00
9370cbbdb4 re-add smoke to torchspines now that smoke underground doesn't last forever 2020-02-23 10:52:57 -07:00
7ddf1ff7cb switch trail mod to footprints mod 2020-02-19 21:07:15 -07:00
947cb72f5a fix the textdomain headers 2020-02-19 13:42:36 -07:00
b519280f1c update translation string formatting, fix a typo in ice sprites 2020-02-19 12:21:59 -07:00
8ce754b234 resort localized strings, add color groups to spindlestem extract 2020-02-19 00:27:24 -07:00
d59bc8d489 switch over to native translation system 2020-02-17 22:36:53 -07:00
a9559bcbcf add vines group to roots and ivy, fuel recipe for plant matter 2020-02-17 18:50:37 -07:00
ad1d03819c update various translation templates 2020-02-16 00:33:21 -07:00
2eaffe6939 add modpack.conf 2020-02-15 23:41:29 -07:00
64020d1384 update readme. There's always *something* you overlook when making a major release 2020-02-13 00:51:29 -07:00
98fb313eb1 Primordial cavern layer (#12)
* bring in the art assets from ClockGen's "better_caves_modpack" under CC BY 4.0,, code written from scratch.

* update mapgen_helper

* import ClockGen's giant mushroom schematics, make them and giant ferns growable

* add giant jungle mushroom, rough out actual cavern layer code framework

* fungal ceiling decorations

* decorate fungal floor a bit

* update mapgen_helper

* update primordial mushroom schematic placement to ensure it fits

* add giant mycelium fungoidal structure

* add giant mycelium to mapgen

* fix settings for giant mycelium

* make mycelium grow when players aren't present

* allow mycelium growth to pause when it hits unloaded areas

* add a use for giant mycelium

* make giant mushrooms edible, make jungle trees growable

* rough out the jungle biome

* Make a spectrum of jungle growth

* optimize pngs, add is_ground_content to everything

* use custom is_ground_content method

* fix a crash with veinstone, and simplify nvals_cave lookup now that overgen covers the same area

* more fixes for overgen support

* remove unintentional airspace from underside of slade

* fix for overgen crash in level 2

* primordial column material, add sealed shafts to underworld

* add seal block

* Set up puzzle seals to be able to dig a staircase shaft through the slade layer. TODO: the puzzle to guard the trigger.

* puzzle seals now fully functional. Need to add clues for decoding the keys next.

* add a small bit of anti-griefing - the seal breach bell only tolls globally 13 times per activation

* add flowers to the underworld warrior bones

* switch to a different key bell

* fancy up the puzzle seal temples with some custom blocks, add sub-slade grid passages

* add a clue to the seal formspec

* tweak background of inscription 2 so it's less obviously a copy of the background for inscription 1

* switch to compositing to save a few bytes

* fancy up the seal's upper surface with inscriptions to make the formspec feel consistent

* puzzle particle, bones were only spawning on top of structures

* fix ice/oil on level 3, tweak some loot probabilities

* add trail mod support

* remove deprecated files

* boost default plant growth delay, add growing selection boxes

* update map colours

* add named waypoints to the underworld

* try a more efficient way of changing the interiors of columns

* polishing up the Primordial layer

* update guide with some Primordial teasers

* updated magma sea screenshot

* update mapgen_helper and subterrane

* reduce density of megaflora a bit - was too hard to walk through

* spreading_dirt_type depends on light, create my own ABM instead

* add names to the glowing pits and some of the ruins

* separate setting for ruin markers

* record identity of slade-breachers

* make mycelia climbable

* update subterrane

* change surface tunnel detection to allow above-ground stalactites and stalagmites

* add rare thicker Goblin Caps, suitable for use as huts.

* better goblin cap schematics

* update colours

* make it slightly harder to dig down through amethyst sheathing of pits

* fixing up fungus light sensitivity, tree growth code

* fix a few minor bugs

* update deprecated functions

* add various eating sounds

* make mapping kit requirement more flexible

* update spindlestem growth code, remove deprecated functions

* fix leftover undefined variable

* add fireflies to primordial, spread out the post-mapgen node timer for plant matter a bit more.

* fix bones formspec

* add lbm to upgrade old bones

* fix slade undiggability

* make torchspines smokey and manually lightable

* fix drop definitions

* generate dry stalactites in near-surface caverns.

* caverns become far too smokey, alas

* add pitter patter of spore tree spores, alternate paper recipe

* new mapgen_helper metrics

* add smokey back to torchspine now that it can be dialed down a bit

* replace glowstone texture with a new animated one

* switch from ABM to node timer for mapgen mycelium growth

* make mapgen mycelium timer delay configurable

* improve the efficiency of giant mycelium growth using flat node array, fewer dereferences

* remove the smoke from torchspines again - it doesn't dissipate that deep underground

* give slade a more muted, gloomy hue to differentiate it from nether stone

* update screenshots with new slade colors

* update mapgen_helper
2020-02-12 23:49:17 -07:00
208 changed files with 5973 additions and 4696 deletions

View File

@ -5,7 +5,7 @@ Sounds and textures are under various licenses, see the license.txt file in the
License for Code License for Code
---------------- ----------------
Copyright (C) 2018 FaceDeer Copyright (C) 2021 FaceDeer
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -16,6 +16,8 @@ Below the Sunless Sea are seas of a more dangerous sort: lakes of oil and the ma
At the very foundation of the world lies an ancient impenetrable realm. There are signs that life once existed here but it is now long gone. Its dead hollows rest on a layer of Slade, a dense material impervious to conventional mining efforts. At the very foundation of the world lies an ancient impenetrable realm. There are signs that life once existed here but it is now long gone. Its dead hollows rest on a layer of Slade, a dense material impervious to conventional mining efforts.
Unconventional methods of penetrating the Slade do exist, however. And should it be breached, the exotic Primordial cavern layer can be found beneath.
## Other Features ## Other Features
The giant caverns generated by this mod differ slightly from the default giant caverns found in some mapgens, they use an additional source of noise to generate more ledges and horizontal floors. They also contain stalactites and stalagmites of various sizes - from single-node spikes decorating the default twisty tunnels to mountainous behemoths in the main caverns that can reach tens of meters in diameter and hundreds of meters in height. The giant caverns generated by this mod differ slightly from the default giant caverns found in some mapgens, they use an additional source of noise to generate more ledges and horizontal floors. They also contain stalactites and stalagmites of various sizes - from single-node spikes decorating the default twisty tunnels to mountainous behemoths in the main caverns that can reach tens of meters in diameter and hundreds of meters in height.
@ -34,6 +36,8 @@ Some of the other cave decorations provide dim bioluminescent lighting in some c
The "[doc](https://forum.minetest.net/viewtopic.php?f=9&t=15912&p=240152)" mod is supported to provide in-game documentation for all of the new items and nodes this mod adds. The "[doc](https://forum.minetest.net/viewtopic.php?f=9&t=15912&p=240152)" mod is supported to provide in-game documentation for all of the new items and nodes this mod adds.
"[ropes](https://github.com/minetest-mods/ropes)" are very useful for navigating some of the large open spaces this mod provides. "[ropes](https://github.com/minetest-mods/ropes)" are very useful for navigating some of the large open spaces this mod provides. Some are large enough that a [glider](https://github.com/CBugDCoder/glider) may be well suited.
"[radiant damage](https://github.com/FaceDeer/radiant_damage)" greatly increases the danger of the Magma Sea if heat radiance is enabled, as well as several of the rare crystals in the deeper layers that emit Mese radiation if that damage type is enabled. "[radiant damage](https://github.com/FaceDeer/radiant_damage)" greatly increases the danger of the Magma Sea if heat radiance is enabled, as well as several of the rare crystals in the deeper layers that emit Mese radiation if that damage type is enabled.
Adding "[named_waypoints](https://github.com/FaceDeer/named_waypoints)" and "[namegen](https://github.com/FaceDeer/namegen)" will provide some landmarks in the Underworld that a player can use to navigate by.

24
big_webs/LICENSE.txt Normal file
View File

@ -0,0 +1,24 @@
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) 2021 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.

199
big_webs/init.lua Normal file
View File

@ -0,0 +1,199 @@
local modname = minetest.get_current_modname()
local S = minetest.get_translator(modname)
local default_path = minetest.get_modpath("default")
local get_node_box = function(connector_thickness)
return {
type = "connected",
--fixed = {-hub_thickness,-hub_thickness,-hub_thickness,hub_thickness,hub_thickness,hub_thickness},
connect_top = {-connector_thickness, 0, -connector_thickness, connector_thickness, 0.5, connector_thickness},
connect_bottom = {-connector_thickness, -0.5, -connector_thickness, connector_thickness, 0, connector_thickness},
connect_back = {-connector_thickness, -connector_thickness, 0, connector_thickness, connector_thickness, 0.5},
connect_right = {0, -connector_thickness, -connector_thickness, 0.5, connector_thickness, connector_thickness},
connect_front = {-connector_thickness, -connector_thickness, -0.5, connector_thickness, connector_thickness, 0},
connect_left = {-0.5, -connector_thickness, -connector_thickness, 0, connector_thickness, connector_thickness},
disconnected = {-connector_thickness, -connector_thickness, -connector_thickness, connector_thickness, connector_thickness, connector_thickness},
}
end
local in_anchor_group = function(name)
return
minetest.get_item_group(name, "soil") > 0 or
minetest.get_item_group(name, "stone") > 0 or
minetest.get_item_group(name, "tree") > 0 or
minetest.get_item_group(name, "leaves") > 0 or
minetest.get_item_group(name, "sand") > 0 or
minetest.get_item_group(name, "wood") > 0 or
name == "ignore"
end
local cardinal_directions = {
{x=1,y=0,z=0},
{x=-1,y=0,z=0},
{x=0,y=1,z=0},
{x=0,y=-1,z=0},
{x=0,y=0,z=1},
{x=0,y=0,z=-1}
}
local cardinal_planes = {
{3,5},
{3,5},
{1,5},
{1,5},
{1,3},
{1,3},
}
local insert_if_not_in_hashtable = function(pos, insert_into, if_not_in)
local hash = minetest.hash_node_position(pos)
if if_not_in[hash] then
return
end
table.insert(insert_into, pos)
end
-- flood fill through the web to get all web and anchor locations
local get_web_nodes = function(pos, webs, anchors)
local to_check = {}
table.insert(to_check, pos)
while next(to_check) ~= nil do
local check_pos = table.remove(to_check)
local check_node = minetest.get_node(check_pos)
if minetest.get_item_group(check_node.name, "webbing") > 0 then
webs[minetest.hash_node_position(check_pos)] = true
for _, dir in pairs(cardinal_directions) do
insert_if_not_in_hashtable(vector.add(check_pos, dir), to_check, webs)
end
elseif in_anchor_group(check_node.name) then
anchors[minetest.hash_node_position(check_pos)] = true
end
end
end
local sound
if default_path then
sound = default.node_sound_leaves_defaults()
end
local web_line = function(pos, dir, distance)
local anchored
local web_spine = {}
for i = 0, distance do
local web_pos = vector.add(pos, vector.multiply(dir,i))
local node_name = minetest.get_node(web_pos).name
if node_name == "air" or node_name == "big_webs:webbing" then
table.insert(web_spine, web_pos)
elseif in_anchor_group(node_name) then
anchored=true
break
else
anchored=false
break
end
end
if anchored then
for _, web_pos in pairs(web_spine) do
if math.random() < 0.9 then
minetest.set_node(web_pos, {name="big_webs:webbing"})
end
end
return web_spine
end
return nil
end
local generate_web = function(pos)
local dir_choice = math.random(1, 6)
local dir = cardinal_directions[dir_choice]
local web_spine = web_line(pos, dir, 30)
if web_spine then
local dir2 = cardinal_directions[cardinal_planes[dir_choice][math.random(1, 2)]]
local dir2_opposite = vector.multiply(dir2, -1)
for _, web_pos in pairs(web_spine) do
web_line(web_pos, dir2, 15)
web_line(web_pos, dir2_opposite, 15)
end
end
end
minetest.register_node("big_webs:webbing", {
description = S("Giant Cave Spider Webbing"),
_doc_items_longdesc = S("Thick ropes of sticky, springy silk, strung between cavern walls in hopes of catching bats and even larger beasts."),
_doc_items_usagehelp = S("Webbing can be collected and re-strung elsewhere to aid in climbing. It absorbs all falling damage when you land on it."),
tiles = {
{name="big_webs.png"},
},
use_texture_alpha = "blend",
connects_to = {"group:soil", "group:stone", "group:tree", "group:leaves", "group:sand", "group:wood", "group:webbing"},
connect_sides = { "top", "bottom", "front", "left", "back", "right" },
drawtype = "nodebox",
node_box = get_node_box(0.0625),
collision_box = get_node_box(0.0625),
inventory_image = "big_webs_item.png",
wield_image = "big_webs_item.png",
paramtype = "light",
is_ground_content = false,
climbable = true,
floodable = true,
groups = {snappy = 2, choppy = 2, webbing = 1, flammable=1, fall_damage_add_percent=-100, bouncy=20},
sounds = sound,
on_construct = function(pos)
minetest.get_node_timer(pos):start(30)
end,
on_destruct = function(pos)
for _, dir in pairs(cardinal_directions) do
local neighbor_pos = vector.add(pos, dir)
if minetest.get_item_group(minetest.get_node(neighbor_pos).name, "webbing") > 0 then
minetest.get_node_timer(neighbor_pos):start(30)
end
end
minetest.get_node_timer(pos):stop()
end,
on_timer = function(pos, elapsed)
local webs = {}
local anchors = {}
get_web_nodes(pos, webs, anchors)
local first_anchor = next(anchors)
for hash, _ in pairs(webs) do
local web_pos = minetest.get_position_from_hash(hash)
if first_anchor == nil then
-- unsupported web
minetest.set_node(web_pos, {name="air"})
minetest.item_drop(ItemStack("big_webs:webbing"), nil, web_pos)
end
minetest.get_node_timer(web_pos):stop() -- no need to recheck
end
end,
})
minetest.register_node("big_webs:web_egg", {
description = S("Giant Cave Spider Web Generator"),
tiles = {
{name="big_webs.png"},
},
use_texture_alpha = "blend",
connects_to = {"group:soil", "group:stone", "group:tree", "group:leaves", "group:sand", "group:wood", "group:webbing"},
connect_sides = { "top", "bottom", "front", "left", "back", "right" },
drawtype = "nodebox",
node_box = get_node_box(0.0625),
collision_box = get_node_box(0.0625),
inventory_image = "big_webs_item.png",
wield_image = "big_webs_item.png",
paramtype = "light",
is_ground_content = false,
climbable = true,
floodable = true,
groups = {snappy = 2, choppy = 2, webbing = 1, flammable=1, fall_damage_add_percent=-100, bouncy=20},
sounds = sound,
on_construct = function(pos)
minetest.get_node_timer(pos):start(1)
end,
on_timer = function(pos, elapsed)
minetest.set_node(pos, {name="air"})
generate_web(pos)
end,
})

View File

@ -0,0 +1,12 @@
# textdomain: big_webs
### init.lua ###
Giant Cave Spider Web Generator=
Giant Cave Spider Webbing=
Thick ropes of sticky, springy silk, strung between cavern walls in hopes of catching bats and even larger beasts.=
Webbing can be collected and re-strung elsewhere to aid in climbing. It absorbs all falling damage when you land on it.=

2
big_webs/mod.conf Normal file
View File

@ -0,0 +1,2 @@
name=big_webs
optional_depends=default

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 380 B

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = minetest.get_translator(minetest.get_current_modname())
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local dungeon_loot_path = minetest.get_modpath("dungeon_loot") local dungeon_loot_path = minetest.get_modpath("dungeon_loot")

View File

@ -1,45 +0,0 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

View File

@ -0,0 +1,7 @@
# textdomain: bones_loot
### init.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Someone's old bones=Jemandes alte Knochen

View File

@ -0,0 +1,7 @@
# textdomain: bones_loot
### init.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Someone's old bones=Le vecchie ossa di qualcuno

View File

@ -1,22 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-07 00:58-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: bones_loot\init.lua:65
msgid "Someone's old bones"
msgstr ""

View File

@ -0,0 +1,6 @@
# textdomain: bones_loot
### init.lua ###
Someone's old bones=

View File

@ -1,6 +0,0 @@
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
cd ..
set LIST=
for /r %%X in (*.lua) do set LIST=!LIST! %%X
..\..\intllib\tools\xgettext.bat %LIST%

View File

@ -1,4 +1,4 @@
name = bones_loot name = bones_loot
description = An API that allows bones to be placed procedurally with randomly generated loot description = An API that allows bones to be placed procedurally with randomly generated loot
depends = bones depends = bones
optional_depends = dungeon_loot, intllib, default optional_depends = dungeon_loot, default

21
chasms/LICENSE.txt Normal file
View File

@ -0,0 +1,21 @@
MIT License
Copyright (c) 2021 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.

182
chasms/init.lua Normal file
View File

@ -0,0 +1,182 @@
local data = {}
chasms = {}
local ignore = {}
-- Use this to set node types to be left alone by chasm-carving
chasms.register_ignore = function(node_name)
ignore[minetest.get_content_id(node_name)] = true
end
chasms.ignore_content_id = function(content_id)
return ignore[content_id]
end
local maxy = tonumber(minetest.settings:get("chasms_maxy")) or -50
local miny = tonumber(minetest.settings:get("chasms_miny")) or -2500
local falloff = tonumber(minetest.settings:get("chasms_falloff")) or 100
local web_probability = 0.15 -- the chance that a given mapblock will have webbing criss-crossing the chasm
local chasms_threshold = tonumber(minetest.settings:get("chasms_threshold")) or 0.9
local np_chasms_default = {
offset = 0,
scale = 1,
spread = {x = 50, y = 1000, z = 3000},
seed = 94586,
octaves = 2,
persist = 0.63,
lacunarity = 2.0,
}
local np_chasms = minetest.settings:get_np_group("chasms_params") or np_chasms_default
-- For some reason, these numbers are returned as strings by get_np_group.
local tonumberize_params = function(params)
params.scale = tonumber(params.scale)
params.lacunarity = tonumber(params.lacunarity)
params.spread.x = tonumber(params.spread.x)
params.spread.y = tonumber(params.spread.y)
params.spread.z = tonumber(params.spread.z)
params.offset = tonumber(params.offset)
params.persistence = tonumber(params.persistence)
end
tonumberize_params(np_chasms)
local nobj_chasm
local chasm_data = {}
local waver_strength = 8
local waver_vector = {x=waver_strength, y=0, z=0}
local np_waver = {
offset = 0,
scale = waver_strength,
spread = {x = 50, y = 50, z = 50},
seed = 49585,
octaves = 2,
persist = 0.63,
lacunarity = 2.0,
}
local nobj_waver
local waver_data = {}
local minfalloff = miny + falloff
local maxfalloff = maxy - falloff
local get_intensity = function(y)
if y < miny or y > maxy then
return 0
end
if y <= maxfalloff and y >= minfalloff then
return 1
end
if y < minfalloff then
return (y-miny)/falloff
end
-- if y > maxfalloff then
return (maxy-y)/falloff
-- end
end
local c_air = minetest.get_content_id("air")
local c_web
local big_webs_path = minetest.get_modpath("big_webs")
if big_webs_path then
c_web = minetest.get_content_id("big_webs:webbing")
end
local z_displace = 10000
local calculate_web_array = function(minp, maxp)
local seed = math.random()*10000000
math.randomseed(minp.y + z_displace*minp.z) -- use consistent seeds across the x axis
local webs = {}
for count = 1, math.random(5,20) do
local width = math.random(5, 25)
local direction_vertical = math.random() > 0.5
local web_y = math.random(minp.y+8, maxp.y-8)
local web_z = math.random(minp.z+8, maxp.z-8)
for i = -math.floor(width/2), math.ceil(width/2) do
if direction_vertical then
webs[(web_y+i) + web_z*z_displace] = true
else
webs[web_y + (web_z+i)*z_displace] = true
end
end
end
math.randomseed(seed)
return webs
end
minetest.register_on_generated(function(minp, maxp, seed)
if minp.y >= maxy or maxp.y <= miny then
return
end
-- check if webs are present
local webs
local webs_present = false
if big_webs_path then
local seed = math.random()*10000000
math.randomseed(minp.y + z_displace*minp.z) -- use consistent seeds across the x axis
if math.random() < web_probability then
webs_present = true
end
math.randomseed(seed)
end
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
vm:get_data(data)
nobj_chasm = nobj_chasm or minetest.get_perlin_map(np_chasms, {x = emax.x - emin.x + 1 + waver_strength*2, y = emax.y - emin.y + 1, z = emax.z - emin.z + 1})
nobj_chasm:get_3d_map_flat(vector.subtract(emin, waver_vector), chasm_data)
nobj_waver = nobj_waver or minetest.get_perlin_map(np_waver, {x = emax.x - emin.x + 1, y = emax.y - emin.y + 1, z = emax.z - emin.z + 1})
nobj_waver:get_3d_map_flat(emin, waver_data)
local chasm_area = VoxelArea:new{MinEdge = vector.subtract(emin, waver_vector), MaxEdge = vector.add(emax, waver_vector)}
local data_area = VoxelArea:new{MinEdge = emin, MaxEdge = emax}
for i, x, y, z in data_area:iterp_xyz(emin, emax) do
local waver = math.min(math.max(math.floor(waver_data[i]+0.5), -waver_strength), waver_strength)
local intensity = get_intensity(y)
if chasm_data[chasm_area:index(x+waver, y, z)]*intensity > chasms_threshold then
if not ignore[data[i]] then
if webs_present then
webs = webs or calculate_web_array(minp, maxp) -- only calculate webs when we know we're in a chasm
if webs[y + z*z_displace] and math.random() < 0.85 then -- random holes in the web
data[i] = c_web
minetest.get_node_timer({x=x,y=y,z=z}):start(1) -- this timer will check for unsupported webs
else
data[i] = c_air
end
else
data[i] = c_air
end
end
end
end
vm:set_data(data)
vm:calc_lighting()
vm:write_to_map()
end)
local nobj_local_chasm = minetest.get_perlin(np_chasms)
local nobj_local_waver = minetest.get_perlin(np_waver)
chasms.is_in_chasm = function(pos)
nobj_local_chasm = nobj_local_chasm or minetest.get_perlin(np_chasms)
nobj_local_waver = nobj_local_waver or minetest.get_perlin(np_waver)
local waver = math.min(math.max(math.floor(nobj_local_waver:get_3d(pos)+0.5), -waver_strength), waver_strength)
local chasm_value = nobj_local_chasm:get_3d({x=pos.x+waver, y=pos.y, z=pos.z})
return chasm_value*get_intensity(pos.y) > chasms_threshold
end
-- A little cheaper to run, for mapgens that know they don't have to worry about the tops and bottoms of chasms
chasms.is_in_chasm_without_taper = function(pos)
nobj_local_chasm = nobj_local_chasm or minetest.get_perlin(np_chasms)
nobj_local_waver = nobj_local_waver or minetest.get_perlin(np_waver)
local waver = math.min(math.max(math.floor(nobj_local_waver:get_3d(pos)+0.5), -waver_strength), waver_strength)
local chasm_value = nobj_local_chasm:get_3d({x=pos.x+waver, y=pos.y, z=pos.z})
return chasm_value > chasms_threshold
end

3
chasms/mod.conf Normal file
View File

@ -0,0 +1,3 @@
name=chasms
depends=mapgen_helper
optional_depends=big_webs

5
chasms/settingtypes.txt Normal file
View File

@ -0,0 +1,5 @@
chasms_params (Noise params for chasms) noise_params_3d 0, 1, (50, 1000, 3000), 94586, 2, 0.63, 2.0
chasms_threshold (Noise threshold for chasms) float 0.9
chasms_maxy (Maximum Y) int -50
chasms_miny (Minimum Y) int -2500
chasms_falloff (Taper range when approaching max or min) int 100

View File

@ -6,6 +6,8 @@ local modpath = minetest.get_modpath(minetest.get_current_modname())
--load companion lua files --load companion lua files
dofile(modpath.."/config.lua") dofile(modpath.."/config.lua")
dofile(modpath.."/node_ids.lua")
dofile(modpath.."/shared.lua") dofile(modpath.."/shared.lua")
dofile(modpath.."/surface_tunnels.lua") dofile(modpath.."/surface_tunnels.lua")
dofile(modpath.."/level1.lua") dofile(modpath.."/level1.lua")

View File

@ -2,12 +2,12 @@ if not df_caverns.config.enable_lava_sea then
return return
end end
local c_air = minetest.get_content_id("air") local c_air = df_caverns.node_id.air
local c_lava = minetest.get_content_id("default:lava_source") local c_lava = df_caverns.node_id.lava
local c_meseore = minetest.get_content_id("default:stone_with_mese") local c_meseore = df_caverns.node_id.meseore
local c_mese_crystal = minetest.get_content_id("df_mapitems:mese_crystal") local c_mese_crystal = df_caverns.node_id.mese_crystal
local c_mese_crystal_block = minetest.get_content_id("df_mapitems:glow_mese") local c_mese_crystal_block = df_caverns.node_id.mese_crystal_block
local c_obsidian = minetest.get_content_id("default:obsidian") local c_obsidian = df_caverns.node_id.obsidian
------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------

View File

@ -1,16 +1,17 @@
local c_water = minetest.get_content_id("default:water_source") local c_water = df_caverns.node_id.water
local c_air = minetest.get_content_id("air") local c_air = df_caverns.node_id.air
local c_dirt = minetest.get_content_id("default:dirt") local c_dirt = df_caverns.node_id.dirt
local c_dirt_moss = minetest.get_content_id("df_mapitems:dirt_with_cave_moss") local c_dirt_moss = df_caverns.node_id.dirt_moss
local c_gravel = df_caverns.node_id.gravel
local c_wet_flowstone = minetest.get_content_id("df_mapitems:wet_flowstone") local c_wet_flowstone = df_caverns.node_id.wet_flowstone
local c_dry_flowstone = minetest.get_content_id("df_mapitems:dry_flowstone") local c_dry_flowstone = df_caverns.node_id.dry_flowstone
local c_spindlestem_white = df_caverns.node_id.spindlestem_white
local c_spindlestem_white = minetest.get_content_id("df_trees:spindlestem_cap_white")
local tower_cap_shrublist local tower_cap_shrublist
local fungiwood_shrublist local fungiwood_shrublist
local chasms_path = minetest.get_modpath("chasms")
if minetest.get_modpath("df_farming") then if minetest.get_modpath("df_farming") then
tower_cap_shrublist = { tower_cap_shrublist = {
df_farming.spawn_plump_helmet_vm, df_farming.spawn_plump_helmet_vm,
@ -172,7 +173,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
-- we're in flooded areas or are not barren -- we're in flooded areas or are not barren
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
else else
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false, c_gravel)
end end
end end
end end
@ -219,7 +220,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
-- we're in flooded areas or are not barren -- we're in flooded areas or are not barren
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
else else
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false, c_gravel)
end end
if biome_name ~= "barren" then if biome_name ~= "barren" then
@ -274,6 +275,18 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
if dry and data[vi] == c_wet_flowstone then if dry and data[vi] == c_wet_flowstone then
data[vi] = c_dry_flowstone data[vi] = c_dry_flowstone
end end
if chasms_path then
local pos = area:position(vi)
if chasms.is_in_chasm_without_taper(pos) then
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
if flooded_caverns and pos.y < subsea_level then
data[vi] = c_water
else
data[vi] = c_air
end
end
end
end end
vm:set_param2_data(data_param2) vm:set_param2_data(data_param2)

View File

@ -1,12 +1,22 @@
local c_water = minetest.get_content_id("default:water_source") local c_water = df_caverns.node_id.water
local c_air = minetest.get_content_id("air") local c_air = df_caverns.node_id.air
local c_dirt = minetest.get_content_id("default:dirt") local c_dirt = df_caverns.node_id.dirt
local c_dirt_moss = minetest.get_content_id("df_mapitems:dirt_with_cave_moss") local c_dirt_moss = df_caverns.node_id.dirt_moss
local c_gravel = df_caverns.node_id.gravel
local c_stillworm = df_caverns.node_id.stillworm
local c_pebble_fungus = df_caverns.node_id.pebble_fungus
local c_red = df_caverns.node_id.spindlestem_red
local c_wet_flowstone = df_caverns.node_id.wet_flowstone
local c_dry_flowstone = df_caverns.node_id.dry_flowstone
local c_veinstone = df_caverns.node_id.veinstone
local c_pearls = df_caverns.node_id.pearls
local chasms_path = minetest.get_modpath("chasms")
local c_wet_flowstone = minetest.get_content_id("df_mapitems:wet_flowstone")
local c_dry_flowstone = minetest.get_content_id("df_mapitems:dry_flowstone")
local c_veinstone = minetest.get_content_id("df_mapitems:veinstone")
local wall_vein_perlin_params = { local wall_vein_perlin_params = {
offset = 0, offset = 0,
scale = 1, scale = 1,
@ -18,8 +28,6 @@ local wall_vein_perlin_params = {
flags = "eased", flags = "eased",
} }
local c_pearls = minetest.get_content_id("df_mapitems:cave_pearls")
local subsea_level = df_caverns.config.level2_min - (df_caverns.config.level2_min - df_caverns.config.level1_min) * 0.33 -- "sea level" for the flooded caverns. local subsea_level = df_caverns.config.level2_min - (df_caverns.config.level2_min - df_caverns.config.level1_min) * 0.33 -- "sea level" for the flooded caverns.
local flooding_threshold = math.min(df_caverns.config.tunnel_flooding_threshold, df_caverns.config.cavern_threshold) -- cavern value out to which we're flooding tunnels and warrens local flooding_threshold = math.min(df_caverns.config.tunnel_flooding_threshold, df_caverns.config.cavern_threshold) -- cavern value out to which we're flooding tunnels and warrens
@ -62,8 +70,6 @@ if minetest.get_modpath("df_farming") then
} }
end end
local c_red = minetest.get_content_id("df_trees:spindlestem_cap_red")
local goblin_cap_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2) local goblin_cap_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2)
local ystride = area.ystride local ystride = area.ystride
if abs_cracks < 0.1 then if abs_cracks < 0.1 then
@ -93,7 +99,7 @@ local spore_tree_cavern_floor = function(abs_cracks, vert_rand, vi, area, data,
if math.random() < 0.25 then if math.random() < 0.25 then
data[vi] = c_dirt data[vi] = c_dirt
else else
data[vi] = c_dirt_moss data[vi] = c_pebble_fungus
end end
if math.random() < 0.1 then if math.random() < 0.1 then
df_caverns.place_shrub(vi+ystride, area, data, data_param2, spore_tree_shrublist) df_caverns.place_shrub(vi+ystride, area, data, data_param2, spore_tree_shrublist)
@ -112,7 +118,7 @@ local tunnel_tube_cavern_floor = function(abs_cracks, vert_rand, vi, area, data,
if math.random() < 0.25 then if math.random() < 0.25 then
data[vi] = c_dirt data[vi] = c_dirt
else else
data[vi] = c_dirt_moss data[vi] = c_stillworm
end end
if math.random() < 0.1 then if math.random() < 0.1 then
df_caverns.place_shrub(vi+ystride, area, data, data_param2, tunnel_tube_shrublist) df_caverns.place_shrub(vi+ystride, area, data, data_param2, tunnel_tube_shrublist)
@ -238,7 +244,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
-- we're in flooded areas or are not barren -- we're in flooded areas or are not barren
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
else else
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false, c_gravel)
end end
end end
end end
@ -295,7 +301,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
-- we're in flooded areas or are not barren -- we're in flooded areas or are not barren
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
else else
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false, c_gravel)
end end
end end
end end
@ -351,6 +357,19 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
if dry and data[vi] == c_wet_flowstone then if dry and data[vi] == c_wet_flowstone then
data[vi] = c_dry_flowstone data[vi] = c_dry_flowstone
end end
if chasms_path then
local pos = area:position(vi)
if chasms.is_in_chasm_without_taper(pos) then
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
if flooded_caverns and pos.y < subsea_level then
data[vi] = c_water
else
data[vi] = c_air
end
end
end
end end
vm:set_param2_data(data_param2) vm:set_param2_data(data_param2)

View File

@ -1,32 +1,25 @@
local c_water = minetest.get_content_id("default:water_source") local c_water = df_caverns.node_id.water
local c_air = minetest.get_content_id("air") local c_air = df_caverns.node_id.air
local c_desert_sand = minetest.get_content_id("default:desert_sand") local c_desert_sand = df_caverns.node_id.desert_sand
local c_stone_with_coal = minetest.get_content_id("default:stone_with_coal") local c_stone_with_coal = df_caverns.node_id.stone_with_coal
local c_silver_sand = df_caverns.node_id.silver_sand
local c_snow = df_caverns.node_id.snow
local c_ice = df_caverns.node_id.ice
local c_hoar_moss = df_caverns.node_id.hoar_moss
local c_gravel = df_caverns.node_id.gravel
local c_oil = df_caverns.node_id.oil
local c_cobble_fungus_fine = df_caverns.node_id.cobble_fungus_fine
local c_cobble_fungus = df_caverns.node_id.cobble_fungus
local c_cobble = df_caverns.node_id.cobble
local c_wet_flowstone = df_caverns.node_id.wet_flowstone
local c_dry_flowstone = df_caverns.node_id.dry_flowstone
local c_glow_ore = df_caverns.node_id.glow_ore
local c_salty_cobble = df_caverns.node_id.salty_cobble
local c_salt_crystal = df_caverns.node_id.salt_crystal
local c_sprite = df_caverns.node_id.sprite
local c_webs_egg = df_caverns.node_id.big_webs_egg
local c_silver_sand = minetest.get_content_id("default:silver_sand") local chasms_path = minetest.get_modpath("chasms")
local c_snow = minetest.get_content_id("default:snow")
local c_ice = minetest.get_content_id("default:ice")
local c_hoar_moss = minetest.get_content_id("df_mapitems:ice_with_hoar_moss")
local c_gravel = minetest.get_content_id("default:gravel")
local c_oil = minetest.get_content_id("oil:oil_source")
local c_cobble_fungus_fine = minetest.get_content_id("df_mapitems:cobble_with_floor_fungus_fine")
local c_cobble_fungus = minetest.get_content_id("df_mapitems:cobble_with_floor_fungus")
local c_cobble = minetest.get_content_id("default:cobble")
local c_wet_flowstone = minetest.get_content_id("df_mapitems:wet_flowstone")
local c_dry_flowstone = minetest.get_content_id("df_mapitems:dry_flowstone")
local c_glow_ore = minetest.get_content_id("df_mapitems:glow_ruby_ore")
local c_salty_cobble = minetest.get_content_id("df_mapitems:salty_cobble")
local c_salt_crystal = minetest.get_content_id("df_mapitems:salt_crystal")
local c_sprite
if minetest.get_modpath("ice_sprites") then
c_sprite = minetest.get_content_id("ice_sprites:ice_sprite")
end
local subsea_level = math.floor(df_caverns.config.level3_min - (df_caverns.config.level3_min - df_caverns.config.level2_min) * 0.33) local subsea_level = math.floor(df_caverns.config.level3_min - (df_caverns.config.level3_min - df_caverns.config.level2_min) * 0.33)
local flooding_threshold = math.min(df_caverns.config.tunnel_flooding_threshold, df_caverns.config.cavern_threshold) local flooding_threshold = math.min(df_caverns.config.tunnel_flooding_threshold, df_caverns.config.cavern_threshold)
@ -353,7 +346,7 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
-- we're in flooded areas or are not barren -- we're in flooded areas or are not barren
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
else else
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false, c_gravel)
end end
end end
end end
@ -363,8 +356,10 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
local index2d = mapgen_helper.index2di(minp, maxp, area, vi) local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d]) local humidity = humiditymap[index2d]
local biome_name = get_biome(heatmap[index2d], humidity)
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not. local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
local ystride = area.ystride
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
if flooded_caverns or biome_name == "blackcap" then if flooded_caverns or biome_name == "blackcap" then
@ -373,9 +368,15 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
else else
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, false) df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, false)
end end
if c_webs_egg and humidity < 40 and nvals_cracks[index2d] > 0.5 and math.random() < 0.1 then
local index = vi-ystride
if data[index] == c_air then
data[index] = c_webs_egg
minetest.get_node_timer(area:position(index)):start(1)
end
end
else else
-- air pockets -- air pockets
local ystride = area.ystride
local cracks = nvals_cracks[index2d] local cracks = nvals_cracks[index2d]
if cracks > 0.5 and data[vi-ystride] == c_water then if cracks > 0.5 and data[vi-ystride] == c_water then
data[vi-ystride] = c_air data[vi-ystride] = c_air
@ -463,13 +464,13 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
if flooded_caverns or biome_name == "blackcap" then if flooded_caverns or biome_name == "blackcap" then
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
else else
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false) df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false, c_gravel)
end end
end end
end end
---------------------------------------------- ----------------------------------------------
-- Column material override for dry biome -- Column material override for dry and icy biomes
for _, vi in ipairs(node_arrays.column_nodes) do for _, vi in ipairs(node_arrays.column_nodes) do
local index2d = mapgen_helper.index2di(minp, maxp, area, vi) local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d]) local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
@ -486,7 +487,7 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
-- with the full blown generated array rigamarole. -- with the full blown generated array rigamarole.
hoar_moss_generator = hoar_moss_generator or minetest.get_perlin(hoar_moss_perlin_params) hoar_moss_generator = hoar_moss_generator or minetest.get_perlin(hoar_moss_perlin_params)
local pos = area:position(vi) local pos = area:position(vi)
if hoar_moss_generator.get_3d and hoar_moss_generator:get_3d({x=pos.z, y=pos.y, z=pos.x}) > 0.5 then -- TODO: version 0.4.16 gets no hoar moss if hoar_moss_generator:get_3d({x=pos.z, y=pos.y, z=pos.x}) > 0.5 then
data[vi] = c_hoar_moss data[vi] = c_hoar_moss
else else
data[vi] = c_ice data[vi] = c_ice
@ -501,6 +502,19 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
elseif biome_name == "barren" and not flooded_caverns and data[vi] == c_wet_flowstone then elseif biome_name == "barren" and not flooded_caverns and data[vi] == c_wet_flowstone then
data[vi] = c_dry_flowstone data[vi] = c_dry_flowstone
end end
if chasms_path then
local pos = area:position(vi)
if chasms.is_in_chasm_without_taper(pos) then
if flooded_caverns and pos.y < subsea_level then
data[vi] = c_water -- this puts a crack in the ice of icy biomes, but why not? A crack in the ice is interesting.
else
data[vi] = c_air
end
end
end
end end
vm:set_param2_data(data_param2) vm:set_param2_data(data_param2)

View File

@ -0,0 +1,11 @@
# textdomain: df_caverns
### underworld.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A glowing pit=Eine leuchtende Grube
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Ancient ruin=Alte Ruine
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Mysterious seal=Geheimnisvolles Siegel

View File

@ -0,0 +1,11 @@
# textdomain: df_caverns
### underworld.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A glowing pit=Un pozzo luminoso
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Ancient ruin=Antica rovina
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Mysterious seal=Sigillo misterioso

View File

@ -1,26 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-25 13:52-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: df_caverns\underworld.lua:12
msgid "A glowing pit"
msgstr ""
#: df_caverns\underworld.lua:27
msgid "A mysterious seal"
msgstr ""

View File

@ -0,0 +1,8 @@
# textdomain: df_caverns
### underworld.lua ###
A glowing pit=
Ancient ruin=
Mysterious seal=

View File

@ -1,6 +0,0 @@
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
cd ..
set LIST=
for /r %%X in (*.lua) do set LIST=!LIST! %%X
..\..\intllib\tools\xgettext.bat %LIST%

View File

@ -1,4 +1,4 @@
name = df_caverns name = df_caverns
description = Adds vast underground caverns in the style of Dwarf Fortress, complete with underground flora in diverse biomes. Also adds stalactite/stalagmite decorations in the smaller tunnels. description = Adds vast underground caverns in the style of Dwarf Fortress, complete with underground flora in diverse biomes. Also adds stalactite/stalagmite decorations in the smaller tunnels.
depends = default, subterrane, df_trees, df_mapitems depends = default, subterrane, df_trees, df_mapitems
optional_depends = df_farming, ice_sprites, oil, df_underworld_items, magma_conduits, bones_loot, named_waypoints, namegen, fireflies optional_depends = df_farming, ice_sprites, oil, df_underworld_items, magma_conduits, bones_loot, named_waypoints, name_generator, fireflies, chasms, big_webs

81
df_caverns/node_ids.lua Normal file
View File

@ -0,0 +1,81 @@
df_caverns.node_id = {}
minetest.after(1, function() df_caverns.node_id = nil end) -- should only be used during initialization.
if minetest.get_modpath("ice_sprites") then
df_caverns.node_id.sprite = minetest.get_content_id("ice_sprites:ice_sprite")
end
if minetest.get_modpath("fireflies") then
df_caverns.node_id.fireflies = minetest.get_content_id("fireflies:firefly")
end
if minetest.get_modpath("df_farming") then
df_caverns.node_id.dead_fungus = minetest.get_content_id("df_farming:dead_fungus")
end
if minetest.get_modpath("big_webs") then
df_caverns.node_id.big_webs = minetest.get_content_id("big_webs:webbing")
df_caverns.node_id.big_webs_egg = minetest.get_content_id("big_webs:web_egg")
end
df_caverns.node_id.air = minetest.get_content_id("air")
df_caverns.node_id.cobble = minetest.get_content_id("default:cobble")
df_caverns.node_id.desert_sand = minetest.get_content_id("default:desert_sand")
df_caverns.node_id.dirt = minetest.get_content_id("default:dirt")
df_caverns.node_id.gravel = minetest.get_content_id("default:gravel")
df_caverns.node_id.ice = minetest.get_content_id("default:ice")
df_caverns.node_id.lava = minetest.get_content_id("default:lava_source")
df_caverns.node_id.meseore = minetest.get_content_id("default:stone_with_mese")
df_caverns.node_id.mossycobble = minetest.get_content_id("default:mossycobble")
df_caverns.node_id.obsidian = minetest.get_content_id("default:obsidian")
df_caverns.node_id.sand = minetest.get_content_id("default:sand")
df_caverns.node_id.silver_sand = minetest.get_content_id("default:silver_sand")
df_caverns.node_id.snow = minetest.get_content_id("default:snow")
df_caverns.node_id.stone = minetest.get_content_id("default:stone")
df_caverns.node_id.stone_with_coal = minetest.get_content_id("default:stone_with_coal")
df_caverns.node_id.water = minetest.get_content_id("default:water_source")
df_caverns.node_id.cobble_fungus = minetest.get_content_id("df_mapitems:cobble_with_floor_fungus")
df_caverns.node_id.cobble_fungus_fine = minetest.get_content_id("df_mapitems:cobble_with_floor_fungus_fine")
df_caverns.node_id.dirt_moss = minetest.get_content_id("df_mapitems:dirt_with_cave_moss")
df_caverns.node_id.dry_flowstone = minetest.get_content_id("df_mapitems:dry_flowstone")
df_caverns.node_id.glow_ore = minetest.get_content_id("df_mapitems:glow_ruby_ore")
df_caverns.node_id.hoar_moss = minetest.get_content_id("df_mapitems:ice_with_hoar_moss")
df_caverns.node_id.mese_crystal = minetest.get_content_id("df_mapitems:mese_crystal")
df_caverns.node_id.mese_crystal_block = minetest.get_content_id("df_mapitems:glow_mese")
df_caverns.node_id.pearls = minetest.get_content_id("df_mapitems:cave_pearls")
df_caverns.node_id.pebble_fungus = minetest.get_content_id("df_mapitems:dirt_with_pebble_fungus")
df_caverns.node_id.rock_rot = minetest.get_content_id("df_mapitems:rock_rot")
df_caverns.node_id.spongestone = minetest.get_content_id("df_mapitems:spongestone")
df_caverns.node_id.salt_crystal = minetest.get_content_id("df_mapitems:salt_crystal")
df_caverns.node_id.salty_cobble = minetest.get_content_id("df_mapitems:salty_cobble")
df_caverns.node_id.sand_scum = minetest.get_content_id("df_mapitems:sand_scum")
df_caverns.node_id.stillworm = minetest.get_content_id("df_mapitems:dirt_with_stillworm")
df_caverns.node_id.veinstone = minetest.get_content_id("df_mapitems:veinstone")
df_caverns.node_id.wet_flowstone = minetest.get_content_id("df_mapitems:wet_flowstone")
df_caverns.node_id.spindlestem_red = minetest.get_content_id("df_trees:spindlestem_cap_red")
df_caverns.node_id.spindlestem_white = minetest.get_content_id("df_trees:spindlestem_cap_white")
df_caverns.node_id.amethyst = minetest.get_content_id("df_underworld_items:glow_amethyst")
df_caverns.node_id.glowstone = minetest.get_content_id("df_underworld_items:glowstone")
df_caverns.node_id.pit_plasma = minetest.get_content_id("df_underworld_items:pit_plasma")
df_caverns.node_id.slade = minetest.get_content_id("df_underworld_items:slade")
df_caverns.node_id.slade_block = minetest.get_content_id("df_underworld_items:slade_block")
df_caverns.node_id.oil = minetest.get_content_id("oil:oil_source")
df_caverns.node_id.gas = minetest.get_content_id("mine_gas:gas")
df_caverns.node_id.gas_wisp = minetest.get_content_id("mine_gas:gas_wisp")
df_caverns.node_id.giant_mycelium = minetest.get_content_id("df_primordial_items:giant_hypha_apical_mapgen")
df_caverns.node_id.ivy = minetest.get_content_id("df_primordial_items:jungle_ivy")
df_caverns.node_id.jungle_dirt = minetest.get_content_id("df_primordial_items:dirt_with_jungle_grass")
df_caverns.node_id.mycelial_dirt = minetest.get_content_id("df_primordial_items:dirt_with_mycelium")
df_caverns.node_id.orb = minetest.get_content_id("df_primordial_items:glow_orb_hanging")
df_caverns.node_id.packed_roots = minetest.get_content_id("df_primordial_items:packed_roots")
df_caverns.node_id.plant_matter = minetest.get_content_id("df_primordial_items:plant_matter")
df_caverns.node_id.root_1 = minetest.get_content_id("df_primordial_items:jungle_roots_1")
df_caverns.node_id.root_2 = minetest.get_content_id("df_primordial_items:jungle_roots_2")

View File

@ -2,11 +2,11 @@ if not df_caverns.config.enable_oil_sea then
return return
end end
local c_oil = minetest.get_content_id("oil:oil_source") local c_oil = df_caverns.node_id.oil
local c_gas = minetest.get_content_id("mine_gas:gas") local c_gas = df_caverns.node_id.gas
local c_gas_wisp = minetest.get_content_id("mine_gas:gas_wisp") local c_gas_wisp = df_caverns.node_id.gas_wisp
local c_lava = minetest.get_content_id("default:lava_source") local c_lava = df_caverns.node_id.lava
local c_obsidian = minetest.get_content_id("default:obsidian") local c_obsidian = df_caverns.node_id.obsidian
------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------

View File

@ -2,6 +2,8 @@ if not df_caverns.config.enable_primordial or not minetest.get_modpath("df_primo
return return
end end
local c_air = df_caverns.node_id.air
local perlin_cave_primordial = { local perlin_cave_primordial = {
offset = 0, offset = 0,
scale = 1, scale = 1,
@ -20,25 +22,15 @@ local perlin_wave_primordial = {
persist = 0.63 persist = 0.63
} }
local c_air = minetest.get_content_id("air")
local giant_mycelium_timer_spread = tonumber(minetest.settings:get("dcaverns_giant_mycelium_timer_spread")) or 10 local giant_mycelium_timer_spread = tonumber(minetest.settings:get("dcaverns_giant_mycelium_timer_spread")) or 10
----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------
-- Fungal biome -- Fungal biome
local c_orb = minetest.get_content_id("df_primordial_items:glow_orb_hanging") local c_orb = df_caverns.node_id.orb
local c_mycelial_dirt = minetest.get_content_id("df_primordial_items:dirt_with_mycelium") local c_mycelial_dirt = df_caverns.node_id.mycelial_dirt
local c_dirt = minetest.get_content_id("default:dirt") local c_dirt = df_caverns.node_id.dirt
local c_giant_mycelium = minetest.get_content_id("df_primordial_items:giant_hypha_apical_mapgen") local c_giant_mycelium = df_caverns.node_id.giant_mycelium
local fungal_plants = {
minetest.get_content_id("df_primordial_items:fungal_grass_1"),
minetest.get_content_id("df_primordial_items:fungal_grass_2"),
minetest.get_content_id("df_primordial_items:glow_orb"),
minetest.get_content_id("df_primordial_items:glow_orb_stalks"),
minetest.get_content_id("df_primordial_items:glow_pods"),
}
local fungal_plant_names = {} local fungal_plant_names = {}
local fungal_plants = {} local fungal_plants = {}
@ -145,18 +137,14 @@ for node_name, node_def in pairs(minetest.registered_nodes) do
end end
end end
local c_jungle_dirt = minetest.get_content_id("df_primordial_items:dirt_with_jungle_grass") local c_jungle_dirt = df_caverns.node_id.jungle_dirt
local c_plant_matter = minetest.get_content_id("df_primordial_items:plant_matter") local c_plant_matter = df_caverns.node_id.plant_matter
local c_packed_roots = minetest.get_content_id("df_primordial_items:packed_roots") local c_packed_roots = df_caverns.node_id.packed_roots
local c_glowstone = minetest.get_content_id("df_underworld_items:glowstone") local c_glowstone = df_caverns.node_id.glowstone
local c_ivy = minetest.get_content_id("df_primordial_items:jungle_ivy") local c_ivy = df_caverns.node_id.ivy
local c_root_2 = minetest.get_content_id("df_primordial_items:jungle_roots_2") local c_root_2 = df_caverns.node_id.root_2
local c_root_1 = minetest.get_content_id("df_primordial_items:jungle_roots_1") local c_root_1 = df_caverns.node_id.root_1
local c_fireflies = df_caverns.node_id.fireflies
local c_fireflies
if minetest.get_modpath("fireflies") then
c_fireflies = minetest.get_content_id("fireflies:firefly")
end
local jungle_cavern_floor = function(abs_cracks, humidity, vi, area, data, data_param2) local jungle_cavern_floor = function(abs_cracks, humidity, vi, area, data, data_param2)
local ystride = area.ystride local ystride = area.ystride
@ -389,6 +377,40 @@ subterrane.register_layer({
is_ground_content = df_caverns.is_ground_content, is_ground_content = df_caverns.is_ground_content,
}) })
minetest.register_ore({
ore_type = "vein",
ore = "df_underworld_items:glowstone",
wherein = {
"default:stone",
"default:stone_with_coal",
"default:stone_with_iron",
"default:stone_with_copper",
"default:stone_with_tin",
"default:stone_with_gold",
"default:stone_with_diamond",
"default:dirt",
"default:sand",
"default:desert_sand",
"default:silver_sand",
"default:gravel",
},
column_height_min = 2,
column_height_max = 6,
y_min = df_caverns.config.primordial_min,
y_max = df_caverns.config.primordial_max,
noise_threshold = 0.9,
noise_params = {
offset = 0,
scale = 3,
spread = {x=400, y=400, z=400},
seed = 25111,
octaves = 4,
persist = 0.5,
flags = "eased",
},
random_factor = 0,
})
-- Rather than make plants farmable, have them randomly respawn in jungle soil. You can only get them down there. -- Rather than make plants farmable, have them randomly respawn in jungle soil. You can only get them down there.
minetest.register_abm({ minetest.register_abm({
label = "Primordial plant growth", label = "Primordial plant growth",
@ -423,3 +445,34 @@ minetest.register_abm({
end end
end, end,
}) })
-- an ABM to extinguish fires on the primordial layer. Glowstone next to plant life equals too much fire.
local fire_enabled = minetest.settings:get_bool("enable_fire")
if fire_enabled == nil then
-- enable_fire setting not specified, check for disable_fire
local fire_disabled = minetest.settings:get_bool("disable_fire")
if fire_disabled == nil then
-- Neither setting specified, check whether singleplayer
fire_enabled = minetest.is_singleplayer()
else
fire_enabled = not fire_disabled
end
end
if fire_enabled and minetest.get_modpath("fire") then
local primordial_min = df_caverns.config.primordial_min
local primordial_max = df_caverns.config.primordial_max
minetest.register_abm({
label = "Remove fire in the primordial layer",
nodenames = {"fire:basic_flame"},
--neighbors = {"fire:basic_flame"},
interval = 3,
chance = 3,
catch_up = false,
action = function(pos)
local pos_y = pos.y
if pos_y > primordial_min and pos_y < primordial_max then
minetest.remove_node(pos)
end
end
})
end

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

View File

@ -1,4 +1,5 @@
[Cavern dimensions] [Cavern dimensions]
#Note that this doesn't guarantee caverns of this setting's size. This setting #Note that this doesn't guarantee caverns of this setting's size. This setting
#affects the scale of features in the perlin noise that is used to build caverns. #affects the scale of features in the perlin noise that is used to build caverns.
#Most caverns will be smaller than this (and a few might be larger) #Most caverns will be smaller than this (and a few might be larger)
@ -17,6 +18,7 @@ dfcaverns_sunless_sea_threshold (Cavern threshold for sunless sea) float 0.4 0.0
dfcaverns_tunnel_flooding_threshold (Tunnel flooding threshold) float 0.25 0.0 1.0 dfcaverns_tunnel_flooding_threshold (Tunnel flooding threshold) float 0.25 0.0 1.0
[Cavern depth borders] [Cavern depth borders]
#maximum boundary for cavern depths are most efficient when they fit the formula (x*80-32-1) #maximum boundary for cavern depths are most efficient when they fit the formula (x*80-32-1)
#where x is an integer. That way you don't get map blocks that straddle two cavern layers. #where x is an integer. That way you don't get map blocks that straddle two cavern layers.
dfcaverns_ymax (Upper limit of level 1) int -193 dfcaverns_ymax (Upper limit of level 1) int -193
@ -28,6 +30,7 @@ dfcaverns_level3_min (Upper limit of the sunless sea) int -2112
dfcaverns_sunless_sea_min (Lower limit of the sunless sea) int -2512 dfcaverns_sunless_sea_min (Lower limit of the sunless sea) int -2512
[Lower Levels] [Lower Levels]
dfcaverns_enable_oil_sea (Generate oil sea) bool true dfcaverns_enable_oil_sea (Generate oil sea) bool true
dfcaverns_oil_sea_level (Oil sea level) int -2700 dfcaverns_oil_sea_level (Oil sea level) int -2700
@ -47,7 +50,6 @@ dfcaverns_underworld_hud_requires_item (Require an item to view waypoints) bool
#specify "group:groupname" here. Leave it blank to default to map:mapping_kit. #specify "group:groupname" here. Leave it blank to default to map:mapping_kit.
dfcaverns_underworld_hud_item_required (Specify the item or group required) string map:mapping_kit dfcaverns_underworld_hud_item_required (Specify the item or group required) string map:mapping_kit
dfcaverns_show_pits_in_hud (Show pit locations in HUD) bool true dfcaverns_show_pits_in_hud (Show pit locations in HUD) bool true
dfcaverns_pit_discovery_range (Pit discovery range) int 60 dfcaverns_pit_discovery_range (Pit discovery range) int 60
dfcaverns_pit_visibility_range (Pit visibility range) int 500 dfcaverns_pit_visibility_range (Pit visibility range) int 500
@ -61,6 +63,7 @@ dfcaverns_ruin_discovery_range (Ruin discovery range) int 40
dfcaverns_ruin_visibility_range (Ruin visibility range) int 250 dfcaverns_ruin_visibility_range (Ruin visibility range) int 250
[Primordial] [Primordial]
dfcaverns_enable_primordial (Generate primordial caverns) bool true dfcaverns_enable_primordial (Generate primordial caverns) bool true
dfcaverns_primordial_max (Upper limit of primordial caverns) int -3393 dfcaverns_primordial_max (Upper limit of primordial caverns) int -3393
dfcaverns_primordial_min (Lower limit of primordial caverns) int -4032 dfcaverns_primordial_min (Lower limit of primordial caverns) int -4032

View File

@ -1,24 +1,47 @@
-- This file contains code that is used by multiple different cavern layers. -- This file contains code that is used by multiple different cavern layers.
local c_water = minetest.get_content_id("default:water_source") local c_air = df_caverns.node_id.air
local c_air = minetest.get_content_id("air") local c_cobble = df_caverns.node_id.cobble
local c_dirt = minetest.get_content_id("default:dirt") local c_cobble_fungus = df_caverns.node_id.cobble_fungus
local c_gravel = minetest.get_content_id("default:gravel") local c_cobble_fungus_fine = df_caverns.node_id.cobble_fungus_fine
local c_dead_fungus = df_caverns.node_id.dead_fungus
local c_dirt_moss = minetest.get_content_id("df_mapitems:dirt_with_cave_moss") local c_dirt = df_caverns.node_id.dirt
local c_cobble_fungus = minetest.get_content_id("df_mapitems:cobble_with_floor_fungus") local c_dirt_moss = df_caverns.node_id.dirt_moss
local c_cobble_fungus_fine = minetest.get_content_id("df_mapitems:cobble_with_floor_fungus_fine") local c_dry_flowstone = df_caverns.node_id.dry_flowstone
local c_cobble = minetest.get_content_id("default:cobble") local c_fireflies = df_caverns.node_id.fireflies
local c_mossycobble = minetest.get_content_id("default:mossycobble") local c_glowstone = df_caverns.node_id.glowstone
local c_ice = df_caverns.node_id.ice
local c_wet_flowstone = minetest.get_content_id("df_mapitems:wet_flowstone") local c_mossycobble = df_caverns.node_id.mossycobble
local c_dry_flowstone = minetest.get_content_id("df_mapitems:dry_flowstone") local c_oil = df_caverns.node_id.oil
local c_sand_scum = df_caverns.node_id.sand_scum
local c_spongestone = df_caverns.node_id.spongestone
local c_rock_rot = df_caverns.node_id.rock_rot
local c_water = df_caverns.node_id.water
local c_wet_flowstone = df_caverns.node_id.wet_flowstone
local c_webs = df_caverns.node_id.big_webs
local c_webs_egg = df_caverns.node_id.big_webs_egg
df_caverns.data_param2 = {} df_caverns.data_param2 = {}
-- prevent mapgen from using these nodes as a base for stalactites or stalagmites
local dont_build_speleothems_on = {}
for _, content_id in pairs(df_mapitems.wet_stalagmite_ids) do
dont_build_speleothems_on[content_id] = true
end
for _, content_id in pairs(df_mapitems.dry_stalagmite_ids) do
dont_build_speleothems_on[content_id] = true
end
if minetest.get_modpath("big_webs") then
dont_build_speleothems_on[c_webs] = true
dont_build_speleothems_on[c_webs_egg] = true
end
-------------------------------------------------- --------------------------------------------------
df_caverns.stalagmites = function(abs_cracks, vert_rand, vi, area, data, data_param2, wet, reverse_sign) df_caverns.stalagmites = function(abs_cracks, vert_rand, vi, area, data, data_param2, wet, reverse_sign)
if dont_build_speleothems_on[data[vi]] then
return
end
local flowstone local flowstone
local stalagmite_ids local stalagmite_ids
if wet then if wet then
@ -62,7 +85,7 @@ df_caverns.flooded_cavern_floor = function(abs_cracks, vert_rand, vi, area, data
if abs_cracks < 0.25 then if abs_cracks < 0.25 then
data[vi] = c_mossycobble data[vi] = c_mossycobble
elseif data[vi-ystride] ~= c_water then elseif data[vi-ystride] ~= c_water then
data[vi] = c_dirt data[vi] = c_sand_scum
end end
-- put in only the large stalagmites that won't get in the way of the water -- put in only the large stalagmites that won't get in the way of the water
@ -73,11 +96,6 @@ df_caverns.flooded_cavern_floor = function(abs_cracks, vert_rand, vi, area, data
end end
end end
local c_dead_fungus
if minetest.get_modpath("df_farming") then
c_dead_fungus = minetest.get_content_id("df_farming:dead_fungus")
end
df_caverns.dry_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2) df_caverns.dry_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2)
if abs_cracks < 0.075 then if abs_cracks < 0.075 then
df_caverns.stalagmites(abs_cracks, vert_rand, vi, area, data, data_param2, false) df_caverns.stalagmites(abs_cracks, vert_rand, vi, area, data, data_param2, false)
@ -98,8 +116,10 @@ df_caverns.wet_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, da
df_caverns.stalagmites(abs_cracks, vert_rand, vi, area, data, data_param2, true) df_caverns.stalagmites(abs_cracks, vert_rand, vi, area, data, data_param2, true)
elseif abs_cracks < 0.6 then elseif abs_cracks < 0.6 then
data[vi] = c_cobble data[vi] = c_cobble
elseif abs_cracks < 0.8 then
data[vi] = c_rock_rot
else else
data[vi] = c_mossycobble data[vi] = c_spongestone
if c_dead_fungus and math.random() < 0.05 then if c_dead_fungus and math.random() < 0.05 then
data[vi+area.ystride] = c_dead_fungus data[vi+area.ystride] = c_dead_fungus
end end
@ -116,14 +136,7 @@ df_caverns.glow_worm_cavern_ceiling = function(abs_cracks, vert_rand, vi, area,
end end
end end
local content_in_list=function(content, list) df_caverns.tunnel_floor = function(minp, maxp, area, vi, nvals_cracks, data, data_param2, wet, dirt_node)
for i, v in ipairs(list) do
if content == v then return true end
end
return false
end
df_caverns.tunnel_floor = function(minp, maxp, area, vi, nvals_cracks, data, data_param2, wet)
if maxp.y > -30 then if maxp.y > -30 then
wet = false wet = false
end end
@ -133,19 +146,21 @@ df_caverns.tunnel_floor = function(minp, maxp, area, vi, nvals_cracks, data, dat
local abs_cracks = math.abs(cracks) local abs_cracks = math.abs(cracks)
if wet then if wet then
if abs_cracks < 0.05 and data[vi+ystride] == c_air and not content_in_list(data[vi], df_mapitems.wet_stalagmite_ids) then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites if abs_cracks < 0.05 and data[vi+ystride] == c_air and not dont_build_speleothems_on[data[vi]] then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites
local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4 local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4
local height = math.floor(abs_cracks * 100) local height = math.floor(abs_cracks * 100)
subterrane.stalagmite(vi+ystride, area, data, data_param2, param2, height, df_mapitems.wet_stalagmite_ids) subterrane.stalagmite(vi+ystride, area, data, data_param2, param2, height, df_mapitems.wet_stalagmite_ids)
data[vi] = c_wet_flowstone data[vi] = c_wet_flowstone
elseif dirt_node and abs_cracks > 0.5 and data[vi-ystride] ~= c_air then
data[vi] = dirt_node
end end
else else
if abs_cracks < 0.025 and data[vi+ystride] == c_air and not content_in_list(data[vi], df_mapitems.dry_stalagmite_ids) then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites if abs_cracks < 0.025 and data[vi+ystride] == c_air and not dont_build_speleothems_on[data[vi]] then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites
local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4 local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4
local height = math.floor(abs_cracks * 100) local height = math.floor(abs_cracks * 100)
subterrane.stalagmite(vi+ystride, area, data, data_param2, param2, height, df_mapitems.dry_stalagmite_ids) subterrane.stalagmite(vi+ystride, area, data, data_param2, param2, height, df_mapitems.dry_stalagmite_ids)
elseif cracks > 0.5 and data[vi-ystride] ~= c_air then elseif dirt_node and cracks > 0.5 and data[vi-ystride] ~= c_air then
data[vi] = c_gravel data[vi] = dirt_node
end end
end end
end end
@ -161,14 +176,14 @@ df_caverns.tunnel_ceiling = function(minp, maxp, area, vi, nvals_cracks, data, d
local abs_cracks = math.abs(cracks) local abs_cracks = math.abs(cracks)
if wet then if wet then
if abs_cracks < 0.05 and data[vi-ystride] == c_air and not content_in_list(data[vi], df_mapitems.wet_stalagmite_ids) then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites if abs_cracks < 0.05 and data[vi-ystride] == c_air and not dont_build_speleothems_on[data[vi]] then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites
local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4 local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4
local height = math.floor(abs_cracks * 100) local height = math.floor(abs_cracks * 100)
subterrane.stalactite(vi-ystride, area, data, data_param2, param2, height, df_mapitems.wet_stalagmite_ids) subterrane.stalactite(vi-ystride, area, data, data_param2, param2, height, df_mapitems.wet_stalagmite_ids)
data[vi] = c_wet_flowstone data[vi] = c_wet_flowstone
end end
else else
if abs_cracks < 0.025 and data[vi-ystride] == c_air and not content_in_list(data[vi], df_mapitems.dry_stalagmite_ids) then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites if abs_cracks < 0.025 and data[vi-ystride] == c_air and not dont_build_speleothems_on[data[vi]] then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites
local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4 local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4
local height = math.floor(abs_cracks * 100) local height = math.floor(abs_cracks * 100)
subterrane.stalactite(vi-ystride, area, data, data_param2, param2, height, df_mapitems.dry_stalagmite_ids) subterrane.stalactite(vi-ystride, area, data, data_param2, param2, height, df_mapitems.dry_stalagmite_ids)
@ -228,6 +243,7 @@ local dfcaverns_mods = {
"ice_sprites:", "ice_sprites:",
"mine_gas:", "mine_gas:",
} }
df_caverns.is_ground_content = function(c_node) df_caverns.is_ground_content = function(c_node)
if dfcaverns_nodes then if dfcaverns_nodes then
return not dfcaverns_nodes[c_node] return not dfcaverns_nodes[c_node]
@ -240,11 +256,12 @@ df_caverns.is_ground_content = function(c_node)
end end
end end
end end
dfcaverns_nodes[minetest.get_content_id("default:ice")] = true -- needed for nethercap cavern water covering dfcaverns_nodes[c_ice] = true -- needed for nethercap cavern water covering
dfcaverns_nodes[minetest.get_content_id("oil:oil_source")] = true -- needed for blackcap oil slicks dfcaverns_nodes[c_oil] = true -- needed for blackcap oil slicks
if minetest.get_modpath("fireflies") then if c_fireflies then
dfcaverns_nodes[minetest.get_content_id("fireflies:firefly")] = true -- used in the primordial caverns dfcaverns_nodes[c_fireflies] = true -- used in the primordial caverns
end end
dfcaverns_nodes[c_glowstone] = nil
dfcaverns_mods = nil dfcaverns_mods = nil
return not dfcaverns_nodes[c_node] return not dfcaverns_nodes[c_node]
end end

View File

@ -1,19 +1,22 @@
local c_water = minetest.get_content_id("default:water_source") local c_water = df_caverns.node_id.water
local c_air = minetest.get_content_id("air") local c_air = df_caverns.node_id.air
local c_dirt = minetest.get_content_id("default:dirt") local c_dirt = df_caverns.node_id.dirt
local c_dirt_moss = minetest.get_content_id("df_mapitems:dirt_with_cave_moss") local c_dirt_moss = df_caverns.node_id.dirt_moss
local c_sand = minetest.get_content_id("default:sand") local c_sand = df_caverns.node_id.sand
local c_gravel = minetest.get_content_id("default:gravel") local c_gravel = df_caverns.node_id.gravel
local c_wet_flowstone = minetest.get_content_id("df_mapitems:wet_flowstone") local c_wet_flowstone = df_caverns.node_id.wet_flowstone
local c_dry_flowstone = minetest.get_content_id("df_mapitems:dry_flowstone") local c_dry_flowstone = df_caverns.node_id.dry_flowstone
local c_lava = minetest.get_content_id("default:lava_source") local c_lava = df_caverns.node_id.lava
local c_obsidian = minetest.get_content_id("default:obsidian") local c_obsidian = df_caverns.node_id.obsidian
local c_coral_table = { local chasms_path = minetest.get_modpath("chasms")
minetest.get_content_id("df_mapitems:cave_coral_1"),
minetest.get_content_id("df_mapitems:cave_coral_2"), local c_coral_table = {}
minetest.get_content_id("df_mapitems:cave_coral_3") for node_name, node_def in pairs(minetest.registered_nodes) do
} if minetest.get_item_group(node_name, "dfcaverns_cave_coral") > 0 then
table.insert(c_coral_table, minetest.get_content_id(node_name))
end
end
local mushroom_shrublist local mushroom_shrublist
local fungispore_shrublist local fungispore_shrublist
@ -382,6 +385,17 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
data_param2[vi] = math.random(1,4)-1 data_param2[vi] = math.random(1,4)-1
minetest.get_node_timer(area:position(vi)):start(math.random(10, 60)) minetest.get_node_timer(area:position(vi)):start(math.random(10, 60))
end end
if chasms_path then
local pos = area:position(vi)
if chasms.is_in_chasm(pos) then
if pos.y <= sea_level then
data[vi] = c_water
else
data[vi] = c_air
end
end
end
end end
end end

View File

@ -3,8 +3,8 @@
local y_max = 200 local y_max = 200
local y_min = df_caverns.config.ymax local y_min = df_caverns.config.ymax
local c_stone = minetest.get_content_id("default:stone") local c_stone = df_caverns.node_id.stone
local c_air = minetest.get_content_id("air") local c_air = df_caverns.node_id.air
minetest.register_on_generated(function(minp, maxp, seed) minetest.register_on_generated(function(minp, maxp, seed)
--if out of range of cave definition limits, abort --if out of range of cave definition limits, abort

View File

@ -1,13 +1,15 @@
if not df_caverns.config.enable_underworld or not minetest.get_modpath("df_underworld_items") then if not df_caverns.config.enable_underworld or not minetest.get_modpath("df_underworld_items") then
return return
end end
local modpath = minetest.get_modpath(minetest.get_current_modname()) local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(modname)
local S = minetest.get_translator("df_caverns") local S = minetest.get_translator(modname)
local bones_loot_path = minetest.get_modpath("bones_loot") local bones_loot_path = minetest.get_modpath("bones_loot")
local named_waypoints_path = minetest.get_modpath("named_waypoints") local named_waypoints_path = minetest.get_modpath("named_waypoints")
local namegen_path = minetest.get_modpath("namegen") local name_generator_path = minetest.get_modpath("name_generator")
local hunters_enabled = minetest.get_modpath("hunter_statue") and df_underworld_items.config.underworld_hunter_statues
local name_pit = function() end local name_pit = function() end
local name_ruin = function() end local name_ruin = function() end
@ -49,14 +51,14 @@ if named_waypoints_path then
end end
named_waypoints.register_named_waypoints("puzzle_seals", seal_waypoint_def) named_waypoints.register_named_waypoints("puzzle_seals", seal_waypoint_def)
if namegen_path then if name_generator_path then
namegen.parse_lines(io.lines(modpath.."/underworld_names.cfg")) name_generator.parse_lines(io.lines(modpath.."/underworld_names.cfg"))
name_pit = function() name_pit = function()
return namegen.generate("glowing_pits") return name_generator.generate("glowing_pits")
end end
name_ruin = function() name_ruin = function()
return namegen.generate("underworld_ruins") return name_generator.generate("underworld_ruins")
end end
local underworld_ruin_def = { local underworld_ruin_def = {
@ -75,14 +77,14 @@ end
local c_slade = minetest.get_content_id("df_underworld_items:slade") local c_slade = df_caverns.node_id.slade
local c_slade_block = minetest.get_content_id("df_underworld_items:slade_block") local c_slade_block = df_caverns.node_id.slade_block
local c_air = minetest.get_content_id("air") local c_air = df_caverns.node_id.air
local c_water = minetest.get_content_id("default:water_source") local c_water = df_caverns.node_id.water
local c_glowstone = minetest.get_content_id("df_underworld_items:glowstone") local c_glowstone = df_caverns.node_id.glowstone
local c_amethyst = minetest.get_content_id("df_underworld_items:glow_amethyst") local c_amethyst = df_caverns.node_id.amethyst
local c_pit_plasma = minetest.get_content_id("df_underworld_items:pit_plasma") local c_pit_plasma = df_caverns.node_id.pit_plasma
local MP = minetest.get_modpath(minetest.get_current_modname()) local MP = minetest.get_modpath(minetest.get_current_modname())
local oubliette_schematic = dofile(MP.."/schematics/oubliette.lua") local oubliette_schematic = dofile(MP.."/schematics/oubliette.lua")
@ -465,7 +467,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
mapgen_helper.place_schematic_on_data(data, data_param2, area, building.pos, small_building_schematic, building.rotation) mapgen_helper.place_schematic_on_data(data, data_param2, area, building.pos, small_building_schematic, building.rotation)
elseif building.building_type == "medium building" then elseif building.building_type == "medium building" then
mapgen_helper.place_schematic_on_data(data, data_param2, area, building.pos, medium_building_schematic, building.rotation) mapgen_helper.place_schematic_on_data(data, data_param2, area, building.pos, medium_building_schematic, building.rotation)
if named_waypoints_path and namegen_path then if name_generator_path then
if not next(named_waypoints.get_waypoints_in_area("underworld_ruins", vector.subtract(building.pos, 250), vector.add(building.pos, 250))) then if not next(named_waypoints.get_waypoints_in_area("underworld_ruins", vector.subtract(building.pos, 250), vector.add(building.pos, 250))) then
named_waypoints.add_waypoint("underworld_ruins", {x=building.pos.x, y=floor_height+1, z=building.pos.z}, {name=name_ruin()}) named_waypoints.add_waypoint("underworld_ruins", {x=building.pos.x, y=floor_height+1, z=building.pos.z}, {name=name_ruin()})
end end
@ -555,6 +557,27 @@ minetest.register_on_generated(function(minp, maxp, seed)
end end
end end
if hunters_enabled then
local x = math.random(minp.x, maxp.x)
local z = math.random(minp.z, maxp.z)
local index2d = mapgen_helper.index2d(emin, emax, x, z)
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
local wave = nvals_wave[index2d] * wave_mult
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)-1
local zone = math.abs(nvals_zone[index2d])
if math.random() < zone / 4 then -- hunters are more common in the built-up areas. zone/4 gives ~ 400 hunters per square kilometer.
for y = floor_height, floor_height+20 do
local target_pos = {x=x, y=y, z=z}
local target_node = minetest.get_node(target_pos)
if minetest.get_item_group(target_node.name, "slade") == 0 then
minetest.set_node(target_pos, {name="df_underworld_items:hunter_statue"})
break
end
end
end
end
local time_taken = os.clock() - t_start -- how long this chunk took, in seconds local time_taken = os.clock() - t_start -- how long this chunk took, in seconds
mapgen_helper.record_time("df_caverns underworld", time_taken) mapgen_helper.record_time("df_caverns underworld", time_taken)
end) end)

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_farming.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local wheat_grow_time = df_farming.config.plant_growth_time * df_farming.config.cave_wheat_delay_multiplier / 8 local wheat_grow_time = df_farming.config.plant_growth_time * df_farming.config.cave_wheat_delay_multiplier / 8
@ -21,7 +19,7 @@ local register_cave_wheat = function(number)
buildable_to = true, buildable_to = true,
floodable = true, floodable = true,
groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11}, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11},
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -121,6 +119,7 @@ minetest.register_craftitem("df_farming:cave_bread", {
inventory_image = "dfcaverns_prepared_food13x16.png", inventory_image = "dfcaverns_prepared_food13x16.png",
sound = {eat = {name = "df_farming_chomp_crunch", gain = 1.0}}, sound = {eat = {name = "df_farming_chomp_crunch", gain = 1.0}},
on_use = minetest.item_eat(5), on_use = minetest.item_eat(5),
_hunger_ng = {satiates = 5},
groups = {flammable = 2, food = 5}, groups = {flammable = 2, food = 5},
}) })
@ -166,7 +165,7 @@ minetest.register_node("df_farming:cave_straw", {
tiles = {"dfcaverns_cave_straw.png"}, tiles = {"dfcaverns_cave_straw.png"},
is_ground_content = false, is_ground_content = false,
groups = {snappy=3, flammable=4, fall_damage_add_percent=-30, straw=1}, groups = {snappy=3, flammable=4, fall_damage_add_percent=-30, straw=1},
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
}) })
minetest.register_craft({ minetest.register_craft({
@ -189,7 +188,7 @@ minetest.register_craft({
--------- ---------
-- Trample support -- Trample support
if minetest.get_modpath("trail") and trail and trail.register_trample_node then if minetest.get_modpath("footprints") then
minetest.register_node("df_farming:wheat_trampled", { minetest.register_node("df_farming:wheat_trampled", {
description = S("Flattened Cave Wheat"), description = S("Flattened Cave Wheat"),
tiles = {"dfcaverns_cave_wheat_flattened.png"}, tiles = {"dfcaverns_cave_wheat_flattened.png"},
@ -206,22 +205,22 @@ if minetest.get_modpath("trail") and trail and trail.register_trample_node then
}, },
groups = {snappy = 3, flammable = 2, attached_node = 1}, groups = {snappy = 3, flammable = 2, attached_node = 1},
drop = "", drop = "",
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
}) })
trail.register_trample_node("df_farming:cave_wheat_5", { footprints.register_trample_node("df_farming:cave_wheat_5", {
trampled_node_name = "df_farming:wheat_trampled", trampled_node_name = "df_farming:wheat_trampled",
randomize_trampled_param2 = true, randomize_trampled_param2 = true,
}) })
trail.register_trample_node("df_farming:cave_wheat_6", { footprints.register_trample_node("df_farming:cave_wheat_6", {
trampled_node_name = "df_farming:wheat_trampled", trampled_node_name = "df_farming:wheat_trampled",
randomize_trampled_param2 = true, randomize_trampled_param2 = true,
}) })
trail.register_trample_node("df_farming:cave_wheat_7", { footprints.register_trample_node("df_farming:cave_wheat_7", {
trampled_node_name = "df_farming:wheat_trampled", trampled_node_name = "df_farming:wheat_trampled",
randomize_trampled_param2 = true, randomize_trampled_param2 = true,
}) })
trail.register_trample_node("df_farming:cave_wheat_8", { footprints.register_trample_node("df_farming:cave_wheat_8", {
trampled_node_name = "df_farming:wheat_trampled", trampled_node_name = "df_farming:wheat_trampled",
randomize_trampled_param2 = true, randomize_trampled_param2 = true,
}) })

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_farming.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local register_cooking_recipes = function(def) local register_cooking_recipes = function(def)
local prefix = def.prefix local prefix = def.prefix
@ -14,6 +12,7 @@ local register_cooking_recipes = function(def)
sound = def.simple.sound, sound = def.simple.sound,
on_use = minetest.item_eat(4), on_use = minetest.item_eat(4),
groups = {food = 4}, groups = {food = 4},
_hunger_ng = {satiates = 4},
}) })
minetest.register_craftitem("df_farming:"..item.."_medium_meal", { minetest.register_craftitem("df_farming:"..item.."_medium_meal", {
description = def.medium.name, description = def.medium.name,
@ -23,6 +22,7 @@ local register_cooking_recipes = function(def)
sound = def.medium.sound, sound = def.medium.sound,
on_use = minetest.item_eat(6), on_use = minetest.item_eat(6),
groups = {food = 6}, groups = {food = 6},
_hunger_ng = {satiates = 6},
}) })
minetest.register_craftitem("df_farming:"..item.."_complex_meal", { minetest.register_craftitem("df_farming:"..item.."_complex_meal", {
description = def.complex.name, description = def.complex.name,
@ -32,6 +32,7 @@ local register_cooking_recipes = function(def)
sound = def.complex.sound, sound = def.complex.sound,
on_use = minetest.item_eat(8), on_use = minetest.item_eat(8),
groups = {food = 8}, groups = {food = 8},
_hunger_ng = {satiates = 8},
}) })
minetest.register_alias("dfcaverns:"..item.."_biscuit", "df_farming:"..item.."_simple_meal") minetest.register_alias("dfcaverns:"..item.."_biscuit", "df_farming:"..item.."_simple_meal")
@ -61,7 +62,6 @@ local register_cooking_recipes = function(def)
}) })
end end
--{ --{
-- prefix =, -- prefix =,
-- item =, -- item =,

View File

@ -0,0 +1,21 @@
df_farming.sounds = {}
df_farming.sounds.leaves = default.node_sound_leaves_defaults()
df_farming.sounds.water = default.node_sound_water_defaults()
df_farming.node_names = {}
df_farming.node_names.dirt = "default:dirt"
df_farming.node_names.dirt_moss = "df_farming:dirt_with_cave_moss"
df_farming.node_names.floor_fungus = "df_farming:cobble_with_floor_fungus"
df_farming.node_names.dirt_wet = "farming:soil_wet"
df_farming.node_names.mortar_pestle = "farming:mortar_pestle"
df_farming.node_names.bucket = "bucket:bucket_empty"
df_farming.node_names.wool_white = "wool:white"
-- these are only for initialization
minetest.after(0, function()
df_farming.sounds = nil
df_farming.node_names = nil
end)

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_farming.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local dimple_grow_time = df_farming.config.plant_growth_time * df_farming.config.dimple_cup_delay_multiplier / 4 local dimple_grow_time = df_farming.config.plant_growth_time * df_farming.config.dimple_cup_delay_multiplier / 4
@ -19,7 +17,7 @@ local register_dimple_cup = function(number)
is_ground_content = false, is_ground_content = false,
buildable_to = true, buildable_to = true,
groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, color_blue = 1, light_sensitive_fungus = 11, flower = 1}, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, color_blue = 1, light_sensitive_fungus = 11, flower = 1},
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {

View File

@ -4,9 +4,7 @@ if not minetest.get_modpath("doc") then
return return
end end
-- internationalization boilerplate local S = df_farming.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
df_farming.doc.simple_meal_desc = S("A meal made from the admixture of two ingredients, it keeps well but are not a rich source of nutrients.") df_farming.doc.simple_meal_desc = S("A meal made from the admixture of two ingredients, it keeps well but are not a rich source of nutrients.")
df_farming.doc.simple_meal_usage = nil df_farming.doc.simple_meal_usage = nil

View File

@ -1,10 +1,12 @@
df_farming = {} df_farming = {}
--grab a shorthand for the filepath of the mod local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(minetest.get_current_modname()) df_farming.S = minetest.get_translator(modname)
local modpath = minetest.get_modpath(modname)
--load companion lua files --load companion lua files
dofile(modpath.."/config.lua") dofile(modpath.."/config.lua")
dofile(modpath.."/dependencies.lua")
dofile(modpath.."/doc.lua") dofile(modpath.."/doc.lua")
dofile(modpath.."/aliases.lua") dofile(modpath.."/aliases.lua")

View File

@ -1,45 +0,0 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

View File

@ -0,0 +1,234 @@
# textdomain: df_farming
### cave_wheat.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Straw=Höhlenstroh
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Wheat=Höhlenweizen
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Wheat Flour=Höhlenweizenmehl
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Wheat Seed=Höhlenweizensamen
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dwarven Bread=Zwergenbrot
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Flattened Cave Wheat=Abgeflachter Höhlenweizen
### cooking.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Wheat Flour Biscuit=Höhlenweizenmehlkeks
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Wheat Flour Bun=Höhlenweizenmehlbrötchen
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Wheat Flour Pancake=Höhlenweizenmehlpfannkuchen
Cave Wheat Seed Loaf=
Cave Wheat Seed Puffs=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave Wheat Seed Risotto=Höhlenweizensamen-Risotto
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dimple Cup Spore Flatbread=Dimple Cup Spore Fladenbrot
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dimple Cup Spore Roll=Dimple Cup Sporenrolle
Dimple Cup Spore Scone=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dwarven Syrup Delight=Zwergensirup-Freude
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dwarven Syrup Jellies=Zwergsirupgelees
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dwarven Syrup Taffy=Zwergensirup Taffy
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig Tail Spore Casserole=Schweineschwanz-Sporenauflauf
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig Tail Spore Sandwich=Schweineschwanz-Sporensandwich
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig Tail Spore Tofu=Schweineschwanzsporentofu
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump Helmet Mince=Pralles Helmhackfleisch
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump Helmet Roast=Praller Helmbraten
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump Helmet Spawn Jambalaya=Praller Helmlaich Jambalaya
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump Helmet Spawn Soup=Pralle Helmlaichsuppe
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump Helmet Sprout Stew=Praller Helmsprosseneintopf
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump Helmet Stalk Sausage=Pralle Helmstielwurst
Quarry Bush Leaf Croissant=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Quarry Bush Leaf Spicy Bun=Steinbruch Bush Leaf Spicy Bun
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Rock Nut Bread=Steinnussbrot
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Rock Nut Cake=Steinnusskuchen
Rock Nut Cookie=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Stuffed Quarry Bush Leaf=Gefülltes Steinbruch-Buschblatt
Sweet Pod Spore Brule=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet Pod Spore Dumplings=Sweet Pod Sporenknödel
Sweet Pod Spore Single Crust Pie=
Sweet Pod Sugar Cookie=
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet Pod Sugar Gingerbread=Sweet Pod Sugar Lebkuchen
Sweet Pod Sugar Roll=
### dimple_cup.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dimple Cup=Grübchen Tasse
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dimple Cup Spores=Grübchen Cup Sporen
### doc.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A crafting item that can be woven into textiles and other similar items.=Ein Handwerksgegenstand, der in Textilien und ähnliche Gegenstände eingewebt werden kann.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A meal made from the admixture of two ingredients, it keeps well but are not a rich source of nutrients.=Eine Mahlzeit, die aus der Beimischung von zwei Zutaten hergestellt wird. Sie ist gut haltbar, aber keine reichhaltige Nährstoffquelle.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A meal made from three ingredients mixed together. They're more wholesome, packing more nutrition into a single serving.=Eine Mahlzeit aus drei Zutaten gemischt. Sie sind gesünder und verpacken mehr Nahrung in einer einzigen Portion.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A rare breed of fungus from deep underground that produces a bushy cluster of rumpled gray 'blades'. The biological function of these blades is not known, as quarry bushes reproduce via hard-shelled nodules that grow down at the blade's base.=Eine seltene Pilzrasse aus dem tiefen Untergrund, die eine buschige Ansammlung zerknitterter grauer "Klingen" erzeugt. Die biologische Funktion dieser Klingen ist nicht bekannt, da sich Steinbruchbüsche über hartschalige Knötchen vermehren, die an der Klingenbasis nachwachsen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A species of lavender mushroom ubiquitous in caves that is most notable for the soft bioluminescence it produces.=Eine in Höhlen allgegenwärtige Lavendelpilzart, die sich vor allem durch ihre weiche Biolumineszenz auszeichnet.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Bread baked from cave wheat flour is tough and durable. A useful ration for long expeditions.=Aus Höhlenweizenmehl gebackenes Brot ist zäh und haltbar. Ein nützliches Verhältnis für lange Expeditionen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave wheat is literally a breed of grain-producing grass that somehow lost its ability to photosynthesize and adapted to a more fungal style of life.=Höhlenweizen ist buchstäblich eine Rasse von Getreide produzierendem Gras, das irgendwie seine Fähigkeit zur Photosynthese verloren hat und sich an einen eher pilzartigen Lebensstil anpasst.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave wheat seed ground into a powder suitable for cooking.=Den gemahlenen Weizensamen zu einem zum Kochen geeigneten Pulver aushöhlen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Crushing them in a bucket squeezes out a flavorful syrup.=Wenn man sie in einem Eimer zerquetscht, wird ein aromatischer Sirup herausgedrückt.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dead fungus quickly decays into an unrecognizable mess. It can be used as weak fuel or terrible decor.=Toter Pilz zerfällt schnell in ein nicht wiederzuerkennendes Chaos. Es kann als schwacher Kraftstoff oder schreckliches Dekor verwendet werden.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dimple cups can be dried, ground, and processed to extract a deep blue dye.=Grübchenbecher können getrocknet, gemahlen und verarbeitet werden, um einen tiefblauen Farbstoff zu extrahieren.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Four finely minced ingredients combine into a fine, full meal.=Vier fein gehackte Zutaten ergeben eine feine, vollständige Mahlzeit.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
It's not tasty, but it keeps you going.=Es ist nicht lecker, aber es hält dich am Laufen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Like its surface cousin, cave wheat produces grain that can be ground into a form of flour.=Höhlenweizen produziert wie sein Cousin an der Oberfläche Getreide, das zu Mehl gemahlen werden kann.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig tail stalks can be processed to extract fibers useful as thread.=Schweineschwanzstiele können verarbeitet werden, um Fasern zu extrahieren, die als Faden nützlich sind.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig tails are a fibrous fungal growth that's most notable for its twisting stalks. In a mature stand of pig tails the helical stalks intertwine into a dense mesh.=Schweineschwänze sind ein faseriges Pilzwachstum, das sich vor allem durch seine verdrehten Stiele auszeichnet. In einem ausgewachsenen Schweineschwanzbestand verflechten sich die helikalen Stiele zu einem dichten Netz.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump helmets are a thick, fleshy mushroom that's edible picked straight from the ground. They form a staple diet for both lost cave explorers and the fauna that preys on them.=Pralle Helme sind dicke, fleischige Pilze, die essbar direkt vom Boden gepflückt werden. Sie bilden eine Grundnahrungsmittel sowohl für verlorene Höhlenforscher als auch für die Fauna, die ihnen nachjagt.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Quarry bush leaves and nodules (called 'rock nuts') can be harvested and are edible with processing.=Steinbruchbuschblätter und Knötchen (sogenannte Steinnüsse) können geerntet werden und sind bei der Verarbeitung essbar.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Quarry bush leaves can be used as an ingredient in foodstuffs.=Steinbruch Buschblätter können als Zutat in Lebensmitteln verwendet werden.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet pod sugar has a pink tint to it.=Süßer Schotenzucker hat eine rosa Tönung.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet pod syrup is thick and flavorful.=Süßer Schotensirup ist dick und aromatisch.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet pods grow in rich soil, and once they reach maturity they draw that supply of nutrients up to concentrate it in their fruiting bodies. They turn bright red when ripe and can be processed in a variety of ways to extract the sugars they contain.=Süße Schoten wachsen auf reichem Boden und sobald sie reif sind, ziehen sie diese Nährstoffversorgung auf, um sie in ihren Fruchtkörpern zu konzentrieren. Sie werden im reifen Zustand leuchtend rot und können auf verschiedene Weise verarbeitet werden, um den darin enthaltenen Zucker zu extrahieren.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
The distinctive midnight-blue caps of these mushrooms are inverted, exposing their gills to any breeze that might pass, and have dimpled edges that give them their name.=Die markanten nachtblauen Kappen dieser Pilze sind umgedreht und setzen ihre Kiemen einer Brise aus, die vorbeiziehen könnte. Sie haben Noppenkanten, die ihnen ihren Namen geben.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
The dried blades of a quarry bush add a welcome zing to recipes containing otherwise-bland subterranean foodstuffs, but they're too spicy to be eaten on their own.=Die getrockneten Klingen eines Steinbruchstrauchs verleihen Rezepten mit ansonsten milden unterirdischen Lebensmitteln eine willkommene Note, aber sie sind zu scharf, um allein gegessen zu werden.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
This mushroom is inedible but continues producing modest levels of light long after it's picked.=Dieser Pilz ist ungenießbar, produziert aber noch lange nach seiner Ernte bescheidene Lichtmengen.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Threads of pig tail fiber.=Fäden aus Schweineschwanzfaser.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Too strong and thick to drink straight, sweet pod syrup is useful in food recipes.=Zu stark und zu dick, um gerade zu trinken, ist süßer Schotensirup in Lebensmittelrezepten nützlich.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Too sweet to be eaten directly, it makes an excellent ingredient in food recipes.=Zu süß, um direkt gegessen zu werden, ist eine hervorragende Zutat für Lebensmittelrezepte.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Whatever this fungus was in life, it is now dead.=Was auch immer dieser Pilz im Leben war, er ist jetzt tot.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
When baked alone it forms an edible bread, but it combines well with other more flavorful ingredients.=Wenn es alleine gebacken wird, bildet es ein essbares Brot, das sich jedoch gut mit anderen geschmackvolleren Zutaten kombinieren lässt.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
When dried in an oven, sweet pods produce a granular sugary substance.=Wenn süße Schoten im Ofen getrocknet werden, entsteht eine körnige zuckerhaltige Substanz.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
When milled, sweet pods produce a granular sugary substance.=Süße Schoten produzieren beim Mahlen eine körnige zuckerhaltige Substanz.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
While they can be eaten fresh, they can be monotonous fare and are perhaps better appreciated as part of a more complex prepared dish.=Während sie frisch gegessen werden können, können sie eintönig sein und werden vielleicht besser als Teil eines komplexeren zubereiteten Gerichts geschätzt.
### pig_tail.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Flattened Pig Tail=Abgeflachter Schweineschwanz
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig Tail=Schweineschwanz
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig Tail Spore=Schweineschwanzspore
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig tail thread=Schweineschwanzfaden
### plants.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cavern Fungi=Höhlenpilze
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dead Fungus=Toter Pilz
### plump_helmet.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump Helmet=Praller Helm
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump Helmet Spawn=Praller Helmlaich
### quarry_bush.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Quarry Bush=Steinbruch Bush
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Quarry Bush Leaves=Steinbruch Bush Blätter
Rock Nuts=
### sweet_pod.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dwarven Syrup Bucket=Zwergen-Sirup-Eimer
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dwarven Syrup Source=Zwergensirupquelle
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Flowing Dwarven Syrup=Fließender Zwergensirup
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet Pod=Süße Schote
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet Pod Spores=Süße Schotensporen
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet Pod Sugar=Süßer Schotenzucker
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet Pods=Süße Schoten

View File

@ -0,0 +1,185 @@
# textdomain: df_farming
### cave_wheat.lua ###
Cave Straw=Grano di caverna
Cave Wheat=Grano di caverna
Cave Wheat Flour=Farina di grano di caverna
Cave Wheat Seed=Seme di grano di caverna
Dwarven Bread=Pane nanico
Flattened Cave Wheat=Grano di caverna
### cooking.lua ###
Cave Wheat Flour Biscuit=Farina di grano di caverna
Cave Wheat Flour Bun=Farina di grano di caverna
Cave Wheat Flour Pancake=Farina di grano di caverna
Cave Wheat Seed Loaf=Seme di grano di caverna
Cave Wheat Seed Puffs=Seme di grano di caverna
Cave Wheat Seed Risotto=Seme di grano di caverna
Dimple Cup Spore Flatbread=Spora di coppa increspata
Dimple Cup Spore Roll=Spora di coppa increspata
Dimple Cup Spore Scone=Spora di coppa increspata
Dwarven Syrup Delight=Secchio di sciroppo nanico
Dwarven Syrup Jellies=Sciroppo nanico
Dwarven Syrup Taffy=Sciroppo nanico
Pig Tail Spore Casserole=Spora di coda di maiale
Pig Tail Spore Sandwich=Spora di coda di maiale
Pig Tail Spore Tofu=Spora di coda di maiale
Plump Helmet Mince=Elmo rotondo
Plump Helmet Roast=Elmo rotondo
Plump Helmet Spawn Jambalaya=Prole di elmo rotondo
Plump Helmet Spawn Soup=Prole di elmo rotondo
Plump Helmet Sprout Stew=Prole di elmo rotondo
Plump Helmet Stalk Sausage=Prole di elmo rotondo
Quarry Bush Leaf Croissant=Foglia di cespuglio di cava
Quarry Bush Leaf Spicy Bun=Foglia di cespuglio di cava
Rock Nut Bread=Noce di roccia
Rock Nut Cake=Noce di roccia
Rock Nut Cookie=Noce di roccia
Stuffed Quarry Bush Leaf=Foglia di cespuglio di cava
Sweet Pod Spore Brule=Spora di baccello dolce
Sweet Pod Spore Dumplings=Spore di baccello dolce
Sweet Pod Spore Single Crust Pie=Spore di baccello dolce
Sweet Pod Sugar Cookie=Zucchero di baccello dolce
Sweet Pod Sugar Gingerbread=Zucchero di baccello dolce
Sweet Pod Sugar Roll=Zucchero di baccello dolce
### dimple_cup.lua ###
Dimple Cup=Coppa increspata
Dimple Cup Spores=Spore di coppa increspata
### doc.lua ###
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A crafting item that can be woven into textiles and other similar items.=Un oggetto di artigianato che può essere tessuto in tessuti e altri oggetti simili.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A meal made from the admixture of two ingredients, it keeps well but are not a rich source of nutrients.=Un pasto composto dalla miscela di due ingredienti, si conserva bene ma non è una ricca fonte di nutrienti.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A meal made from three ingredients mixed together. They're more wholesome, packing more nutrition into a single serving.=Un pasto composto da tre ingredienti mescolati insieme. Sono più sani e contengono più nutrimento in una singola porzione.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A rare breed of fungus from deep underground that produces a bushy cluster of rumpled gray 'blades'. The biological function of these blades is not known, as quarry bushes reproduce via hard-shelled nodules that grow down at the blade's base.=Una rara razza di fungo proveniente dal sottosuolo profondo che produce un folto gruppo di "lame" grigie spiegazzate. La funzione biologica di queste lame non è nota, poiché i cespugli di cava si riproducono tramite noduli a guscio duro che crescono alla base della lama.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
A species of lavender mushroom ubiquitous in caves that is most notable for the soft bioluminescence it produces.=Una specie di fungo lavanda onnipresente nelle grotte che è più notevole per la morbida bioluminescenza che produce.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Bread baked from cave wheat flour is tough and durable. A useful ration for long expeditions.=Il pane cotto dalla farina di grano di grotta è duro e durevole. Un rapporto utile per lunghe spedizioni.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave wheat is literally a breed of grain-producing grass that somehow lost its ability to photosynthesize and adapted to a more fungal style of life.=Il grano delle caverne è letteralmente una razza di erba che produce grano che in qualche modo ha perso la sua capacità di fotosintetizzare e adattata a uno stile di vita più fungino.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Cave wheat seed ground into a powder suitable for cooking.=Semi di grano di caverna macinati in una polvere adatta alla cottura.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Crushing them in a bucket squeezes out a flavorful syrup.=Schiacciandoli in un secchio spreme uno sciroppo saporito.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dead fungus quickly decays into an unrecognizable mess. It can be used as weak fuel or terrible decor.=Il fungo morto decade rapidamente in un pasticcio irriconoscibile. Può essere usato come combustibile debole o arredamento terribile.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Dimple cups can be dried, ground, and processed to extract a deep blue dye.=Le coppe fossette possono essere asciugate, macinate e lavorate per estrarre un colorante blu intenso.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Four finely minced ingredients combine into a fine, full meal.=Quattro ingredienti finemente tritati si combinano in un fine pasto completo.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
It's not tasty, but it keeps you going.=Non è gustoso, ma ti fa andare avanti.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Like its surface cousin, cave wheat produces grain that can be ground into a form of flour.=Come il suo cugino di superficie, il grano delle caverne produce grano che può essere macinato in una forma di farina.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig tail stalks can be processed to extract fibers useful as thread.=Gli steli della coda di maiale possono essere lavorati per estrarre fibre utili come filo.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Pig tails are a fibrous fungal growth that's most notable for its twisting stalks. In a mature stand of pig tails the helical stalks intertwine into a dense mesh.=Le code di maiale sono una crescita fungina fibrosa che è più notevole per i suoi gambi contorti. In un gruppo maturo di code di maiale, gli steli elicoidali si intrecciano in una fitta rete.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Plump helmets are a thick, fleshy mushroom that's edible picked straight from the ground. They form a staple diet for both lost cave explorers and the fauna that preys on them.=I caschi paffuti sono un fungo spesso e carnoso che è commestibile raccolto direttamente da terra. Costituiscono una dieta base sia per gli esploratori di caverne perduti che per la fauna che li preda.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Quarry bush leaves and nodules (called 'rock nuts') can be harvested and are edible with processing.=Le foglie ei noduli di arbusti di cava (chiamati "noci di roccia") possono essere raccolti e sono commestibili con la lavorazione.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Quarry bush leaves can be used as an ingredient in foodstuffs.=Le foglie di cespuglio di cava possono essere utilizzate come ingrediente nei prodotti alimentari.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet pod sugar has a pink tint to it.=Lo zucchero di baccello dolce ha una sfumatura rosa.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet pod syrup is thick and flavorful.=Lo sciroppo di baccello dolce è denso e saporito.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Sweet pods grow in rich soil, and once they reach maturity they draw that supply of nutrients up to concentrate it in their fruiting bodies. They turn bright red when ripe and can be processed in a variety of ways to extract the sugars they contain.=I baccelli dolci crescono in un terreno fertile e, una volta raggiunta la maturità, assorbono quella scorta di sostanze nutritive per concentrarla nei loro corpi fruttiferi. Diventano di un rosso brillante quando sono maturi e possono essere lavorati in vari modi per estrarre gli zuccheri che contengono.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
The distinctive midnight-blue caps of these mushrooms are inverted, exposing their gills to any breeze that might pass, and have dimpled edges that give them their name.=I caratteristici cappucci blu notte di questi funghi sono invertiti, esponendo le loro branchie a qualsiasi brezza che potrebbe passare, e hanno bordi increspati che danno loro il nome.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
The dried blades of a quarry bush add a welcome zing to recipes containing otherwise-bland subterranean foodstuffs, but they're too spicy to be eaten on their own.=Le lame essiccate di un cespuglio di cava aggiungono un tocco di benvenuto alle ricette che contengono cibi sotterranei altrimenti blandi, ma sono troppo piccanti per essere mangiati da soli.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
This mushroom is inedible but continues producing modest levels of light long after it's picked.=Questo fungo non è commestibile ma continua a produrre livelli modesti di luce molto tempo dopo essere stato raccolto.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Threads of pig tail fiber.=Fili di fibra di coda di maiale.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Too strong and thick to drink straight, sweet pod syrup is useful in food recipes.=Troppo forte e denso per essere bevuto liscio, lo sciroppo di baccelli dolce è utile nelle ricette alimentari.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Too sweet to be eaten directly, it makes an excellent ingredient in food recipes.=Troppo dolce per essere consumato direttamente, è un ottimo ingrediente nelle ricette alimentari.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
Whatever this fungus was in life, it is now dead.=Qualunque cosa fosse questo fungo in vita, ora è morto.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
When baked alone it forms an edible bread, but it combines well with other more flavorful ingredients.=Cotto da solo forma un pane commestibile, ma si abbina bene con altri ingredienti più saporiti.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
When dried in an oven, sweet pods produce a granular sugary substance.=Quando essiccati in un forno, i baccelli dolci producono una sostanza zuccherina granulare.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
When milled, sweet pods produce a granular sugary substance.=Quando vengono macinati, i baccelli dolci producono una sostanza zuccherina granulare.
#WARNING: AUTOTRANSLATED BY GOOGLE TRANSLATE
While they can be eaten fresh, they can be monotonous fare and are perhaps better appreciated as part of a more complex prepared dish.=Sebbene possano essere consumati freschi, possono essere piatti monotoni e forse sono meglio apprezzati come parte di un piatto preparato più complesso.
### pig_tail.lua ###
Flattened Pig Tail=Coda di maiale
Pig Tail=Coda di maiale
Pig Tail Spore=Spora di coda di maiale
Pig tail thread=Filo di coda di maiale
### plants.lua ###
Cavern Fungi=Funghi di caverna
Dead Fungus=Fungo morto
### plump_helmet.lua ###
Plump Helmet=Elmo rotondo
Plump Helmet Spawn=Prole di elmo rotondo
### quarry_bush.lua ###
Quarry Bush=Cespuglio di cava
Quarry Bush Leaves=Foglie di cespuglio di cava
Rock Nuts=Noci di roccia
### sweet_pod.lua ###
Dwarven Syrup Bucket=Secchio di sciroppo nanico
Dwarven Syrup Source=Fonte di sciroppo nanico
Flowing Dwarven Syrup=Sciroppo nanico che scorre
Sweet Pod=Baccello dolce
Sweet Pod Spores=Spore di baccello dolce
Sweet Pod Sugar=Zucchero di baccello dolce
Sweet Pods=Baccelli dolci

View File

@ -1,470 +0,0 @@
# ITALIAN LOCALE FOR THE DFCAVERNS MODULE
# Copyright (C) 2017 FaceDeer <derksenmobile@gmail.com>
# This file is distributed under the same license as the DFCAVERNS package.
# Hamlet <h4mlet@riseup.net>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: dfcaverns module's Italian locale\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-11 03:51-0600\n"
"PO-Revision-Date: 2017-08-17 23:01+0100\n"
"Last-Translator: H4mlet <h4mlet@riseup.net>\n"
"Language-Team: ITALIANO\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.10\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: df_farming\cave_wheat.lua:10
#: df_farming\cave_wheat.lua:87
msgid "Cave Wheat"
msgstr "Grano di caverna"
#: df_farming\cave_wheat.lua:79
msgid "Cave Wheat Seed"
msgstr "Seme di grano di caverna"
#: df_farming\cave_wheat.lua:100
msgid "Cave Wheat Flour"
msgstr "Farina di grano di caverna"
#: df_farming\cave_wheat.lua:108
msgid "Dwarven Bread"
msgstr "Pane nanico"
#: df_farming\cooking.lua:72
#, fuzzy
msgid "Cave Wheat Flour Biscuit"
msgstr "Farina di grano di caverna"
#: df_farming\cooking.lua:73
#, fuzzy
msgid "Cave Wheat Flour Bun"
msgstr "Farina di grano di caverna"
#: df_farming\cooking.lua:74
#, fuzzy
msgid "Cave Wheat Flour Pancake"
msgstr "Farina di grano di caverna"
#: df_farming\cooking.lua:77
#, fuzzy
msgid "Cave Wheat Seed Loaf"
msgstr "Seme di grano di caverna"
#: df_farming\cooking.lua:78
#, fuzzy
msgid "Cave Wheat Seed Puffs"
msgstr "Seme di grano di caverna"
#: df_farming\cooking.lua:79
#, fuzzy
msgid "Cave Wheat Seed Risotto"
msgstr "Seme di grano di caverna"
#: df_farming\cooking.lua:82
#, fuzzy
msgid "Sweet Pod Spore Dumplings"
msgstr "Spore di baccello dolce"
#: df_farming\cooking.lua:83
#, fuzzy
msgid "Sweet Pod Spore Single Crust Pie"
msgstr "Spore di baccello dolce"
#: df_farming\cooking.lua:84
#, fuzzy
msgid "Sweet Pod Spore Brule"
msgstr "Spora di baccello dolce"
#: df_farming\cooking.lua:87
#, fuzzy
msgid "Sweet Pod Sugar Cookie"
msgstr "Zucchero di baccello dolce"
#: df_farming\cooking.lua:88
#, fuzzy
msgid "Sweet Pod Sugar Gingerbread"
msgstr "Zucchero di baccello dolce"
#: df_farming\cooking.lua:89
#, fuzzy
msgid "Sweet Pod Sugar Roll"
msgstr "Zucchero di baccello dolce"
#: df_farming\cooking.lua:92
#, fuzzy
msgid "Plump Helmet Mince"
msgstr "Elmo rotondo"
#: df_farming\cooking.lua:93
#, fuzzy
msgid "Plump Helmet Stalk Sausage"
msgstr "Prole di elmo rotondo"
#: df_farming\cooking.lua:94
#, fuzzy
msgid "Plump Helmet Roast"
msgstr "Elmo rotondo"
#: df_farming\cooking.lua:97
#, fuzzy
msgid "Plump Helmet Spawn Soup"
msgstr "Prole di elmo rotondo"
#: df_farming\cooking.lua:98
#, fuzzy
msgid "Plump Helmet Spawn Jambalaya"
msgstr "Prole di elmo rotondo"
#: df_farming\cooking.lua:99
#, fuzzy
msgid "Plump Helmet Sprout Stew"
msgstr "Prole di elmo rotondo"
#: df_farming\cooking.lua:102
#, fuzzy
msgid "Quarry Bush Leaf Spicy Bun"
msgstr "Foglia di cespuglio di cava"
#: df_farming\cooking.lua:103
#, fuzzy
msgid "Quarry Bush Leaf Croissant"
msgstr "Foglia di cespuglio di cava"
#: df_farming\cooking.lua:104
#, fuzzy
msgid "Stuffed Quarry Bush Leaf"
msgstr "Foglia di cespuglio di cava"
#: df_farming\cooking.lua:107
#, fuzzy
msgid "Rock Nut Bread"
msgstr "Noce di roccia"
#: df_farming\cooking.lua:108
#, fuzzy
msgid "Rock Nut Cookie"
msgstr "Noce di roccia"
#: df_farming\cooking.lua:109
#, fuzzy
msgid "Rock Nut Cake"
msgstr "Noce di roccia"
#: df_farming\cooking.lua:112
#, fuzzy
msgid "Dimple Cup Spore Flatbread"
msgstr "Spora di coppa increspata"
#: df_farming\cooking.lua:113
#, fuzzy
msgid "Dimple Cup Spore Scone"
msgstr "Spora di coppa increspata"
#: df_farming\cooking.lua:114
#, fuzzy
msgid "Dimple Cup Spore Roll"
msgstr "Spora di coppa increspata"
#: df_farming\cooking.lua:117
#, fuzzy
msgid "Pig Tail Spore Sandwich"
msgstr "Spora di coda di maiale"
#: df_farming\cooking.lua:118
#, fuzzy
msgid "Pig Tail Spore Tofu"
msgstr "Spora di coda di maiale"
#: df_farming\cooking.lua:119
#, fuzzy
msgid "Pig Tail Spore Casserole"
msgstr "Spora di coda di maiale"
#: df_farming\cooking.lua:122
#, fuzzy
msgid "Dwarven Syrup Taffy"
msgstr "Sciroppo nanico"
#: df_farming\cooking.lua:123
#, fuzzy
msgid "Dwarven Syrup Jellies"
msgstr "Sciroppo nanico"
#: df_farming\cooking.lua:124
#, fuzzy
msgid "Dwarven Syrup Delight"
msgstr "Secchio di sciroppo nanico"
#: df_farming\dimple_cup.lua:10
msgid "Dimple Cup"
msgstr "Coppa increspata"
#: df_farming\dimple_cup.lua:68
msgid "Dimple Cup Spores"
msgstr "Spore di coppa increspata"
#: df_farming\doc.lua:11
msgid ""
"A meal made from the admixture of two ingredients, it keeps well but are not "
"a rich source of nutrients."
msgstr ""
#: df_farming\doc.lua:13
msgid ""
"A meal made from three ingredients mixed together. They're more wholesome, "
"packing more nutrition into a single serving."
msgstr ""
#: df_farming\doc.lua:15
msgid "Four finely minced ingredients combine into a fine, full meal."
msgstr ""
#: df_farming\doc.lua:21
msgid "Whatever this fungus was in life, it is now dead."
msgstr ""
#: df_farming\doc.lua:22
msgid ""
"Dead fungus quickly decays into an unrecognizable mess. It can be used as "
"weak fuel or terrible decor."
msgstr ""
#: df_farming\doc.lua:24
msgid ""
"A species of lavender mushroom ubiquitous in caves that is most notable for "
"the soft bioluminescence it produces."
msgstr ""
#: df_farming\doc.lua:25
msgid ""
"This mushroom is inedible but continues producing modest levels of light "
"long after it's picked."
msgstr ""
#: df_farming\doc.lua:27
msgid ""
"Cave wheat is literally a breed of grain-producing grass that somehow lost "
"its ability to photosynthesize and adapted to a more fungal style of life."
msgstr ""
#: df_farming\doc.lua:28
msgid ""
"Like its surface cousin, cave wheat produces grain that can be ground into a "
"form of flour."
msgstr ""
#: df_farming\doc.lua:29
msgid "Cave wheat seed ground into a powder suitable for cooking."
msgstr ""
#: df_farming\doc.lua:30
msgid ""
"When baked alone it forms an edible bread, but it combines well with other "
"more flavorful ingredients."
msgstr ""
#: df_farming\doc.lua:31
msgid ""
"Bread baked from cave wheat flour is tough and durable. A useful ration for "
"long expeditions."
msgstr ""
#: df_farming\doc.lua:32
msgid "It's not tasty, but it keeps you going."
msgstr ""
#: df_farming\doc.lua:34
msgid ""
"The distinctive midnight-blue caps of these mushrooms are inverted, exposing "
"their gills to any breeze that might pass, and have dimpled edges that give "
"them their name."
msgstr ""
#: df_farming\doc.lua:35
msgid ""
"Dimple cups can be dried, ground, and processed to extract a deep blue dye."
msgstr ""
#: df_farming\doc.lua:37
msgid ""
"Pig tails are a fibrous fungal growth that's most notable for its twisting "
"stalks. In a mature stand of pig tails the helical stalks intertwine into a "
"dense mesh."
msgstr ""
#: df_farming\doc.lua:38
msgid "Pig tail stalks can be processed to extract fibers useful as thread."
msgstr ""
#: df_farming\doc.lua:39
msgid "Threads of pig tail fiber."
msgstr ""
#: df_farming\doc.lua:40
msgid ""
"A crafting item that can be woven into textiles and other similar items."
msgstr ""
#: df_farming\doc.lua:42
msgid ""
"Plump helmets are a thick, fleshy mushroom that's edible picked straight "
"from the ground. They form a staple diet for both lost cave explorers and "
"the fauna that preys on them."
msgstr ""
#: df_farming\doc.lua:43
msgid ""
"While they can be eaten fresh, they can be monotonous fare and are perhaps "
"better appreciated as part of a more complex prepared dish."
msgstr ""
#: df_farming\doc.lua:45
msgid ""
"A rare breed of fungus from deep underground that produces a bushy cluster "
"of rumpled gray 'blades'. The biological function of these blades is not "
"known, as quarry bushes reproduce via hard-shelled nodules that grow down at "
"the blade's base."
msgstr ""
#: df_farming\doc.lua:46
msgid ""
"Quarry bush leaves and nodules (called 'rock nuts') can be harvested and are "
"edible with processing."
msgstr ""
#: df_farming\doc.lua:47
msgid ""
"The dried blades of a quarry bush add a welcome zing to recipes containing "
"otherwise-bland subterranean foodstuffs, but they're too spicy to be eaten "
"on their own."
msgstr ""
#: df_farming\doc.lua:48
msgid "Quarry bush leaves can be used as an ingredient in foodstuffs."
msgstr ""
#: df_farming\doc.lua:50
msgid ""
"Sweet pods grow in rich soil, and once they reach maturity they draw that "
"supply of nutrients up to concentrate it in their fruiting bodies. They turn "
"bright red when ripe and can be processed in a variety of ways to extract "
"the sugars they contain."
msgstr ""
#: df_farming\doc.lua:53
msgid "When milled, sweet pods produce a granular sugary substance."
msgstr ""
#: df_farming\doc.lua:55
msgid "When dried in an oven, sweet pods produce a granular sugary substance."
msgstr ""
#: df_farming\doc.lua:57
msgid "Crushing them in a bucket squeezes out a flavorful syrup."
msgstr ""
#: df_farming\doc.lua:59
msgid "Sweet pod sugar has a pink tint to it."
msgstr ""
#: df_farming\doc.lua:60
msgid ""
"Too sweet to be eaten directly, it makes an excellent ingredient in food "
"recipes."
msgstr ""
#: df_farming\doc.lua:61
msgid "Sweet pod syrup is thick and flavorful."
msgstr ""
#: df_farming\doc.lua:62
msgid ""
"Too strong and thick to drink straight, sweet pod syrup is useful in food "
"recipes."
msgstr ""
#: df_farming\pig_tail.lua:10
msgid "Pig Tail"
msgstr "Coda di maiale"
#: df_farming\pig_tail.lua:78
msgid "Pig Tail Spore"
msgstr "Spora di coda di maiale"
#: df_farming\pig_tail.lua:86
msgid "Pig tail thread"
msgstr "Filo di coda di maiale"
#: df_farming\plants.lua:10
msgid "Dead Fungus"
msgstr "Fungo morto"
#: df_farming\plants.lua:42
msgid "Cavern Fungi"
msgstr "Funghi di caverna"
#: df_farming\plump_helmet.lua:61
msgid "Plump Helmet Spawn"
msgstr "Prole di elmo rotondo"
#: df_farming\plump_helmet.lua:92
#: df_farming\plump_helmet.lua:129
#: df_farming\plump_helmet.lua:164
#: df_farming\plump_helmet.lua:199
#: df_farming\plump_helmet.lua:251
msgid "Plump Helmet"
msgstr "Elmo rotondo"
#: df_farming\quarry_bush.lua:10
msgid "Quarry Bush"
msgstr "Cespuglio di cava"
#: df_farming\quarry_bush.lua:75
msgid "Rock Nuts"
msgstr "Noci di roccia"
#: df_farming\quarry_bush.lua:84
msgid "Quarry Bush Leaves"
msgstr "Foglie di cespuglio di cava"
#: df_farming\sweet_pod.lua:10
msgid "Sweet Pod"
msgstr "Baccello dolce"
#: df_farming\sweet_pod.lua:74
msgid "Sweet Pod Spores"
msgstr "Spore di baccello dolce"
#: df_farming\sweet_pod.lua:82
msgid "Sweet Pods"
msgstr "Baccelli dolci"
#: df_farming\sweet_pod.lua:98
msgid "Sweet Pod Sugar"
msgstr "Zucchero di baccello dolce"
#: df_farming\sweet_pod.lua:138
msgid "Dwarven Syrup Source"
msgstr "Fonte di sciroppo nanico"
#: df_farming\sweet_pod.lua:186
msgid "Flowing Dwarven Syrup"
msgstr "Sciroppo nanico che scorre"
#: df_farming\sweet_pod.lua:239
msgid "Dwarven Syrup Bucket"
msgstr "Secchio di sciroppo nanico"
#~ msgid "@1 Biscuit"
#~ msgstr "Biscotto di @1"
#~ msgid "@1 Stew"
#~ msgstr "Stufato di @1"
#~ msgid "@1 Roast"
#~ msgstr "Arrosto di @1"

View File

@ -1,427 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-11 03:51-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: df_farming\cave_wheat.lua:10
#: df_farming\cave_wheat.lua:87
msgid "Cave Wheat"
msgstr ""
#: df_farming\cave_wheat.lua:79
msgid "Cave Wheat Seed"
msgstr ""
#: df_farming\cave_wheat.lua:100
msgid "Cave Wheat Flour"
msgstr ""
#: df_farming\cave_wheat.lua:108
msgid "Dwarven Bread"
msgstr ""
#: df_farming\cooking.lua:72
msgid "Cave Wheat Flour Biscuit"
msgstr ""
#: df_farming\cooking.lua:73
msgid "Cave Wheat Flour Bun"
msgstr ""
#: df_farming\cooking.lua:74
msgid "Cave Wheat Flour Pancake"
msgstr ""
#: df_farming\cooking.lua:77
msgid "Cave Wheat Seed Loaf"
msgstr ""
#: df_farming\cooking.lua:78
msgid "Cave Wheat Seed Puffs"
msgstr ""
#: df_farming\cooking.lua:79
msgid "Cave Wheat Seed Risotto"
msgstr ""
#: df_farming\cooking.lua:82
msgid "Sweet Pod Spore Dumplings"
msgstr ""
#: df_farming\cooking.lua:83
msgid "Sweet Pod Spore Single Crust Pie"
msgstr ""
#: df_farming\cooking.lua:84
msgid "Sweet Pod Spore Brule"
msgstr ""
#: df_farming\cooking.lua:87
msgid "Sweet Pod Sugar Cookie"
msgstr ""
#: df_farming\cooking.lua:88
msgid "Sweet Pod Sugar Gingerbread"
msgstr ""
#: df_farming\cooking.lua:89
msgid "Sweet Pod Sugar Roll"
msgstr ""
#: df_farming\cooking.lua:92
msgid "Plump Helmet Mince"
msgstr ""
#: df_farming\cooking.lua:93
msgid "Plump Helmet Stalk Sausage"
msgstr ""
#: df_farming\cooking.lua:94
msgid "Plump Helmet Roast"
msgstr ""
#: df_farming\cooking.lua:97
msgid "Plump Helmet Spawn Soup"
msgstr ""
#: df_farming\cooking.lua:98
msgid "Plump Helmet Spawn Jambalaya"
msgstr ""
#: df_farming\cooking.lua:99
msgid "Plump Helmet Sprout Stew"
msgstr ""
#: df_farming\cooking.lua:102
msgid "Quarry Bush Leaf Spicy Bun"
msgstr ""
#: df_farming\cooking.lua:103
msgid "Quarry Bush Leaf Croissant"
msgstr ""
#: df_farming\cooking.lua:104
msgid "Stuffed Quarry Bush Leaf"
msgstr ""
#: df_farming\cooking.lua:107
msgid "Rock Nut Bread"
msgstr ""
#: df_farming\cooking.lua:108
msgid "Rock Nut Cookie"
msgstr ""
#: df_farming\cooking.lua:109
msgid "Rock Nut Cake"
msgstr ""
#: df_farming\cooking.lua:112
msgid "Dimple Cup Spore Flatbread"
msgstr ""
#: df_farming\cooking.lua:113
msgid "Dimple Cup Spore Scone"
msgstr ""
#: df_farming\cooking.lua:114
msgid "Dimple Cup Spore Roll"
msgstr ""
#: df_farming\cooking.lua:117
msgid "Pig Tail Spore Sandwich"
msgstr ""
#: df_farming\cooking.lua:118
msgid "Pig Tail Spore Tofu"
msgstr ""
#: df_farming\cooking.lua:119
msgid "Pig Tail Spore Casserole"
msgstr ""
#: df_farming\cooking.lua:122
msgid "Dwarven Syrup Taffy"
msgstr ""
#: df_farming\cooking.lua:123
msgid "Dwarven Syrup Jellies"
msgstr ""
#: df_farming\cooking.lua:124
msgid "Dwarven Syrup Delight"
msgstr ""
#: df_farming\dimple_cup.lua:10
msgid "Dimple Cup"
msgstr ""
#: df_farming\dimple_cup.lua:68
msgid "Dimple Cup Spores"
msgstr ""
#: df_farming\doc.lua:11
msgid ""
"A meal made from the admixture of two ingredients, it keeps well but are not "
"a rich source of nutrients."
msgstr ""
#: df_farming\doc.lua:13
msgid ""
"A meal made from three ingredients mixed together. They're more wholesome, "
"packing more nutrition into a single serving."
msgstr ""
#: df_farming\doc.lua:15
msgid "Four finely minced ingredients combine into a fine, full meal."
msgstr ""
#: df_farming\doc.lua:21
msgid "Whatever this fungus was in life, it is now dead."
msgstr ""
#: df_farming\doc.lua:22
msgid ""
"Dead fungus quickly decays into an unrecognizable mess. It can be used as "
"weak fuel or terrible decor."
msgstr ""
#: df_farming\doc.lua:24
msgid ""
"A species of lavender mushroom ubiquitous in caves that is most notable for "
"the soft bioluminescence it produces."
msgstr ""
#: df_farming\doc.lua:25
msgid ""
"This mushroom is inedible but continues producing modest levels of light "
"long after it's picked."
msgstr ""
#: df_farming\doc.lua:27
msgid ""
"Cave wheat is literally a breed of grain-producing grass that somehow lost "
"its ability to photosynthesize and adapted to a more fungal style of life."
msgstr ""
#: df_farming\doc.lua:28
msgid ""
"Like its surface cousin, cave wheat produces grain that can be ground into a "
"form of flour."
msgstr ""
#: df_farming\doc.lua:29
msgid "Cave wheat seed ground into a powder suitable for cooking."
msgstr ""
#: df_farming\doc.lua:30
msgid ""
"When baked alone it forms an edible bread, but it combines well with other "
"more flavorful ingredients."
msgstr ""
#: df_farming\doc.lua:31
msgid ""
"Bread baked from cave wheat flour is tough and durable. A useful ration for "
"long expeditions."
msgstr ""
#: df_farming\doc.lua:32
msgid "It's not tasty, but it keeps you going."
msgstr ""
#: df_farming\doc.lua:34
msgid ""
"The distinctive midnight-blue caps of these mushrooms are inverted, exposing "
"their gills to any breeze that might pass, and have dimpled edges that give "
"them their name."
msgstr ""
#: df_farming\doc.lua:35
msgid ""
"Dimple cups can be dried, ground, and processed to extract a deep blue dye."
msgstr ""
#: df_farming\doc.lua:37
msgid ""
"Pig tails are a fibrous fungal growth that's most notable for its twisting "
"stalks. In a mature stand of pig tails the helical stalks intertwine into a "
"dense mesh."
msgstr ""
#: df_farming\doc.lua:38
msgid "Pig tail stalks can be processed to extract fibers useful as thread."
msgstr ""
#: df_farming\doc.lua:39
msgid "Threads of pig tail fiber."
msgstr ""
#: df_farming\doc.lua:40
msgid ""
"A crafting item that can be woven into textiles and other similar items."
msgstr ""
#: df_farming\doc.lua:42
msgid ""
"Plump helmets are a thick, fleshy mushroom that's edible picked straight "
"from the ground. They form a staple diet for both lost cave explorers and "
"the fauna that preys on them."
msgstr ""
#: df_farming\doc.lua:43
msgid ""
"While they can be eaten fresh, they can be monotonous fare and are perhaps "
"better appreciated as part of a more complex prepared dish."
msgstr ""
#: df_farming\doc.lua:45
msgid ""
"A rare breed of fungus from deep underground that produces a bushy cluster "
"of rumpled gray 'blades'. The biological function of these blades is not "
"known, as quarry bushes reproduce via hard-shelled nodules that grow down at "
"the blade's base."
msgstr ""
#: df_farming\doc.lua:46
msgid ""
"Quarry bush leaves and nodules (called 'rock nuts') can be harvested and are "
"edible with processing."
msgstr ""
#: df_farming\doc.lua:47
msgid ""
"The dried blades of a quarry bush add a welcome zing to recipes containing "
"otherwise-bland subterranean foodstuffs, but they're too spicy to be eaten "
"on their own."
msgstr ""
#: df_farming\doc.lua:48
msgid "Quarry bush leaves can be used as an ingredient in foodstuffs."
msgstr ""
#: df_farming\doc.lua:50
msgid ""
"Sweet pods grow in rich soil, and once they reach maturity they draw that "
"supply of nutrients up to concentrate it in their fruiting bodies. They turn "
"bright red when ripe and can be processed in a variety of ways to extract "
"the sugars they contain."
msgstr ""
#: df_farming\doc.lua:53
msgid "When milled, sweet pods produce a granular sugary substance."
msgstr ""
#: df_farming\doc.lua:55
msgid "When dried in an oven, sweet pods produce a granular sugary substance."
msgstr ""
#: df_farming\doc.lua:57
msgid "Crushing them in a bucket squeezes out a flavorful syrup."
msgstr ""
#: df_farming\doc.lua:59
msgid "Sweet pod sugar has a pink tint to it."
msgstr ""
#: df_farming\doc.lua:60
msgid ""
"Too sweet to be eaten directly, it makes an excellent ingredient in food "
"recipes."
msgstr ""
#: df_farming\doc.lua:61
msgid "Sweet pod syrup is thick and flavorful."
msgstr ""
#: df_farming\doc.lua:62
msgid ""
"Too strong and thick to drink straight, sweet pod syrup is useful in food "
"recipes."
msgstr ""
#: df_farming\pig_tail.lua:10
msgid "Pig Tail"
msgstr ""
#: df_farming\pig_tail.lua:78
msgid "Pig Tail Spore"
msgstr ""
#: df_farming\pig_tail.lua:86
msgid "Pig tail thread"
msgstr ""
#: df_farming\plants.lua:10
msgid "Dead Fungus"
msgstr ""
#: df_farming\plants.lua:42
msgid "Cavern Fungi"
msgstr ""
#: df_farming\plump_helmet.lua:61
msgid "Plump Helmet Spawn"
msgstr ""
#: df_farming\plump_helmet.lua:92
#: df_farming\plump_helmet.lua:129
#: df_farming\plump_helmet.lua:164
#: df_farming\plump_helmet.lua:199
#: df_farming\plump_helmet.lua:251
msgid "Plump Helmet"
msgstr ""
#: df_farming\quarry_bush.lua:10
msgid "Quarry Bush"
msgstr ""
#: df_farming\quarry_bush.lua:75
msgid "Rock Nuts"
msgstr ""
#: df_farming\quarry_bush.lua:84
msgid "Quarry Bush Leaves"
msgstr ""
#: df_farming\sweet_pod.lua:10
msgid "Sweet Pod"
msgstr ""
#: df_farming\sweet_pod.lua:74
msgid "Sweet Pod Spores"
msgstr ""
#: df_farming\sweet_pod.lua:82
msgid "Sweet Pods"
msgstr ""
#: df_farming\sweet_pod.lua:98
msgid "Sweet Pod Sugar"
msgstr ""
#: df_farming\sweet_pod.lua:138
msgid "Dwarven Syrup Source"
msgstr ""
#: df_farming\sweet_pod.lua:186
msgid "Flowing Dwarven Syrup"
msgstr ""
#: df_farming\sweet_pod.lua:239
msgid "Dwarven Syrup Bucket"
msgstr ""

View File

@ -0,0 +1,152 @@
# textdomain: df_farming
### cave_wheat.lua ###
Cave Straw=
Cave Wheat=
Cave Wheat Flour=
Cave Wheat Seed=
Dwarven Bread=
Flattened Cave Wheat=
### cooking.lua ###
Cave Wheat Flour Biscuit=
Cave Wheat Flour Bun=
Cave Wheat Flour Pancake=
Cave Wheat Seed Loaf=
Cave Wheat Seed Puffs=
Cave Wheat Seed Risotto=
Dimple Cup Spore Flatbread=
Dimple Cup Spore Roll=
Dimple Cup Spore Scone=
Dwarven Syrup Delight=
Dwarven Syrup Jellies=
Dwarven Syrup Taffy=
Pig Tail Spore Casserole=
Pig Tail Spore Sandwich=
Pig Tail Spore Tofu=
Plump Helmet Mince=
Plump Helmet Roast=
Plump Helmet Spawn Jambalaya=
Plump Helmet Spawn Soup=
Plump Helmet Sprout Stew=
Plump Helmet Stalk Sausage=
Quarry Bush Leaf Croissant=
Quarry Bush Leaf Spicy Bun=
Rock Nut Bread=
Rock Nut Cake=
Rock Nut Cookie=
Stuffed Quarry Bush Leaf=
Sweet Pod Spore Brule=
Sweet Pod Spore Dumplings=
Sweet Pod Spore Single Crust Pie=
Sweet Pod Sugar Cookie=
Sweet Pod Sugar Gingerbread=
Sweet Pod Sugar Roll=
### dimple_cup.lua ###
Dimple Cup=
Dimple Cup Spores=
### doc.lua ###
A crafting item that can be woven into textiles and other similar items.=
A meal made from the admixture of two ingredients, it keeps well but are not a rich source of nutrients.=
A meal made from three ingredients mixed together. They're more wholesome, packing more nutrition into a single serving.=
A rare breed of fungus from deep underground that produces a bushy cluster of rumpled gray 'blades'. The biological function of these blades is not known, as quarry bushes reproduce via hard-shelled nodules that grow down at the blade's base.=
A species of lavender mushroom ubiquitous in caves that is most notable for the soft bioluminescence it produces.=
Bread baked from cave wheat flour is tough and durable. A useful ration for long expeditions.=
Cave wheat is literally a breed of grain-producing grass that somehow lost its ability to photosynthesize and adapted to a more fungal style of life.=
Cave wheat seed ground into a powder suitable for cooking.=
Crushing them in a bucket squeezes out a flavorful syrup.=
Dead fungus quickly decays into an unrecognizable mess. It can be used as weak fuel or terrible decor.=
Dimple cups can be dried, ground, and processed to extract a deep blue dye.=
Four finely minced ingredients combine into a fine, full meal.=
It's not tasty, but it keeps you going.=
Like its surface cousin, cave wheat produces grain that can be ground into a form of flour.=
Pig tail stalks can be processed to extract fibers useful as thread.=
Pig tails are a fibrous fungal growth that's most notable for its twisting stalks. In a mature stand of pig tails the helical stalks intertwine into a dense mesh.=
Plump helmets are a thick, fleshy mushroom that's edible picked straight from the ground. They form a staple diet for both lost cave explorers and the fauna that preys on them.=
Quarry bush leaves and nodules (called 'rock nuts') can be harvested and are edible with processing.=
Quarry bush leaves can be used as an ingredient in foodstuffs.=
Sweet pod sugar has a pink tint to it.=
Sweet pod syrup is thick and flavorful.=
Sweet pods grow in rich soil, and once they reach maturity they draw that supply of nutrients up to concentrate it in their fruiting bodies. They turn bright red when ripe and can be processed in a variety of ways to extract the sugars they contain.=
The distinctive midnight-blue caps of these mushrooms are inverted, exposing their gills to any breeze that might pass, and have dimpled edges that give them their name.=
The dried blades of a quarry bush add a welcome zing to recipes containing otherwise-bland subterranean foodstuffs, but they're too spicy to be eaten on their own.=
This mushroom is inedible but continues producing modest levels of light long after it's picked.=
Threads of pig tail fiber.=
Too strong and thick to drink straight, sweet pod syrup is useful in food recipes.=
Too sweet to be eaten directly, it makes an excellent ingredient in food recipes.=
Whatever this fungus was in life, it is now dead.=
When baked alone it forms an edible bread, but it combines well with other more flavorful ingredients.=
When dried in an oven, sweet pods produce a granular sugary substance.=
When milled, sweet pods produce a granular sugary substance.=
While they can be eaten fresh, they can be monotonous fare and are perhaps better appreciated as part of a more complex prepared dish.=
### pig_tail.lua ###
Flattened Pig Tail=
Pig Tail=
Pig Tail Spore=
Pig tail thread=
### plants.lua ###
Cavern Fungi=
Dead Fungus=
### plump_helmet.lua ###
Plump Helmet=
Plump Helmet Spawn=
### quarry_bush.lua ###
Quarry Bush=
Quarry Bush Leaves=
Rock Nuts=
### sweet_pod.lua ###
Dwarven Syrup Bucket=
Dwarven Syrup Source=
Flowing Dwarven Syrup=
Sweet Pod=
Sweet Pod Spores=
Sweet Pod Sugar=
Sweet Pods=

View File

@ -1,6 +0,0 @@
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
cd ..
set LIST=
for /r %%X in (*.lua) do set LIST=!LIST! %%X
..\..\intllib\tools\xgettext.bat %LIST%

View File

@ -1,4 +1,4 @@
name = df_farming name = df_farming
description = Adds farmable underground plants that die in sunlight. Also includes various cooking reactions. description = Adds farmable underground plants that die in sunlight. Also includes various cooking reactions.
depends = default depends = default
optional_depends = farming, cottages, bucket, dynamic_liquid, wool, intllib, doc, crafting, trail optional_depends = farming, cottages, bucket, dynamic_liquid, wool, doc, crafting, footprints

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_farming.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local pig_tail_grow_time = df_farming.config.plant_growth_time * df_farming.config.pig_tail_delay_multiplier / 8 local pig_tail_grow_time = df_farming.config.plant_growth_time * df_farming.config.pig_tail_delay_multiplier / 8
@ -21,7 +19,7 @@ local register_pig_tail = function(number)
floodable = true, floodable = true,
buildable_to = true, buildable_to = true,
groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11}, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11},
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -99,7 +97,7 @@ minetest.register_craftitem("df_farming:pig_tail_thread", {
if minetest.get_modpath("wool") then if minetest.get_modpath("wool") then
minetest.register_craft({ minetest.register_craft({
output = "wool:white", output = df_farming.node_names.wool_white,
recipe = { recipe = {
{"group:thread", "group:thread"}, {"group:thread", "group:thread"},
{"group:thread", "group:thread"}, {"group:thread", "group:thread"},
@ -122,7 +120,7 @@ minetest.register_craft({
burntime = 1, burntime = 1,
}) })
if minetest.get_modpath("trail") and trail and trail.register_trample_node then if minetest.get_modpath("footprints") then
minetest.register_node("df_farming:pig_tail_trampled", { minetest.register_node("df_farming:pig_tail_trampled", {
description = S("Flattened Pig Tail"), description = S("Flattened Pig Tail"),
tiles = {"dfcaverns_pig_tail_flattened.png"}, tiles = {"dfcaverns_pig_tail_flattened.png"},
@ -139,22 +137,22 @@ if minetest.get_modpath("trail") and trail and trail.register_trample_node then
}, },
groups = {snappy = 3, flammable = 2, attached_node = 1}, groups = {snappy = 3, flammable = 2, attached_node = 1},
drop = "", drop = "",
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
}) })
trail.register_trample_node("df_farming:pig_tail_5", { footprints.register_trample_node("df_farming:pig_tail_5", {
trampled_node_name = "df_farming:pig_tail_trampled", trampled_node_name = "df_farming:pig_tail_trampled",
randomize_trampled_param2 = true, randomize_trampled_param2 = true,
}) })
trail.register_trample_node("df_farming:pig_tail_6", { footprints.register_trample_node("df_farming:pig_tail_6", {
trampled_node_name = "df_farming:pig_tail_trampled", trampled_node_name = "df_farming:pig_tail_trampled",
randomize_trampled_param2 = true, randomize_trampled_param2 = true,
}) })
trail.register_trample_node("df_farming:pig_tail_7", { footprints.register_trample_node("df_farming:pig_tail_7", {
trampled_node_name = "df_farming:pig_tail_trampled", trampled_node_name = "df_farming:pig_tail_trampled",
randomize_trampled_param2 = true, randomize_trampled_param2 = true,
}) })
trail.register_trample_node("df_farming:pig_tail_8", { footprints.register_trample_node("df_farming:pig_tail_8", {
trampled_node_name = "df_farming:pig_tail_trampled", trampled_node_name = "df_farming:pig_tail_trampled",
randomize_trampled_param2 = true, randomize_trampled_param2 = true,
}) })

View File

@ -1,11 +1,8 @@
-- internationalization boilerplate local S = df_farming.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
----------------------------------------------------------------------- -----------------------------------------------------------------------
-- Plants -- Plants
minetest.register_node("df_farming:dead_fungus", { minetest.register_node("df_farming:dead_fungus", {
description = S("Dead Fungus"), description = S("Dead Fungus"),
_doc_items_longdesc = df_farming.doc.dead_fungus_desc, _doc_items_longdesc = df_farming.doc.dead_fungus_desc,
@ -19,7 +16,7 @@ minetest.register_node("df_farming:dead_fungus", {
buildable_to = true, buildable_to = true,
floodable = true, floodable = true,
groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, flow_through = 1}, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, flow_through = 1},
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0.0, 0.5}, fixed = {-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
@ -53,7 +50,7 @@ minetest.register_node("df_farming:cavern_fungi", {
floodable = true, floodable = true,
light_source = 6, light_source = 6,
groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11, flow_through = 1}, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11, flow_through = 1},
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 0.0, 0.5}, fixed = {-0.5, -0.5, -0.5, 0.5, 0.0, 0.5},
@ -74,8 +71,8 @@ end
----------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------
local marginal = {["default:dirt"] = true, ["df_farming:dirt_with_cave_moss"] = true, ["df_farming:cobble_with_floor_fungus"] = true} local marginal = {[df_farming.node_names.dirt] = true, [df_farming.node_names.dirt_moss] = true, [df_farming.node_names.floor_fungus] = true}
local growable = {["farming:soil_wet"] = true, ["default:dirt"] = true, ["df_farming:dirt_with_cave_moss"] = true, ["df_farming:cobble_with_floor_fungus"] = true} local growable = {[df_farming.node_names.dirt_wet] = true, [df_farming.node_names.dirt] = true, [df_farming.node_names.dirt_moss] = true, [df_farming.node_names.floor_fungus] = true}
df_farming.plant_timer = function(pos, plantname, elapsed) df_farming.plant_timer = function(pos, plantname, elapsed)
local next_stage_time = minetest.registered_nodes[plantname]._dfcaverns_next_stage_time local next_stage_time = minetest.registered_nodes[plantname]._dfcaverns_next_stage_time

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_farming.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local displace_x = 0.125 local displace_x = 0.125
local displace_z = 0.125 local displace_z = 0.125
@ -105,7 +103,7 @@ minetest.register_node("df_farming:plump_helmet_1", {
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}}, sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}},
walkable = false, walkable = false,
floodable = true, floodable = true,
@ -122,6 +120,7 @@ minetest.register_node("df_farming:plump_helmet_1", {
end, end,
on_use = minetest.item_eat(1), on_use = minetest.item_eat(1),
_hunger_ng = {satiates = 1},
on_timer = function(pos, elapsed) on_timer = function(pos, elapsed)
df_farming.grow_underground_plant(pos, "df_farming:plump_helmet_1", elapsed) df_farming.grow_underground_plant(pos, "df_farming:plump_helmet_1", elapsed)
@ -144,7 +143,7 @@ minetest.register_node("df_farming:plump_helmet_2", {
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}}, sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}},
walkable = false, walkable = false,
is_ground_content = false, is_ground_content = false,
@ -161,6 +160,7 @@ minetest.register_node("df_farming:plump_helmet_2", {
end, end,
on_use = minetest.item_eat(2), on_use = minetest.item_eat(2),
_hunger_ng = {satiates = 2},
on_timer = function(pos, elapsed) on_timer = function(pos, elapsed)
df_farming.grow_underground_plant(pos, "df_farming:plump_helmet_2", elapsed) df_farming.grow_underground_plant(pos, "df_farming:plump_helmet_2", elapsed)
@ -182,7 +182,7 @@ minetest.register_node("df_farming:plump_helmet_3", {
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}}, sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}},
walkable = false, walkable = false,
is_ground_content = false, is_ground_content = false,
@ -199,6 +199,7 @@ minetest.register_node("df_farming:plump_helmet_3", {
end, end,
on_use = minetest.item_eat(3), on_use = minetest.item_eat(3),
_hunger_ng = {satiates = 3},
on_timer = function(pos, elapsed) on_timer = function(pos, elapsed)
df_farming.grow_underground_plant(pos, "df_farming:plump_helmet_3", elapsed) df_farming.grow_underground_plant(pos, "df_farming:plump_helmet_3", elapsed)
@ -218,7 +219,7 @@ minetest.register_node("df_farming:plump_helmet_4", {
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}}, sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}},
walkable = false, walkable = false,
is_ground_content = false, is_ground_content = false,
@ -257,6 +258,7 @@ minetest.register_node("df_farming:plump_helmet_4", {
end, end,
on_use = minetest.item_eat(4), on_use = minetest.item_eat(4),
_hunger_ng = {satiates = 4},
}) })
-- Need a separate picked type to prevent it from giving infinite spawn by just placing and re-harvesting -- Need a separate picked type to prevent it from giving infinite spawn by just placing and re-harvesting
@ -273,7 +275,7 @@ minetest.register_node("df_farming:plump_helmet_4_picked", {
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}}, sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}},
walkable = false, walkable = false,
is_ground_content = false, is_ground_content = false,
@ -291,6 +293,7 @@ minetest.register_node("df_farming:plump_helmet_4_picked", {
end, end,
on_use = minetest.item_eat(4), on_use = minetest.item_eat(4),
_hunger_ng = {satiates = 4},
}) })
local place_list = { local place_list = {

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_farming.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local quarry_grow_time = df_farming.config.plant_growth_time * df_farming.config.quarry_bush_delay_multiplier / 5 local quarry_grow_time = df_farming.config.plant_growth_time * df_farming.config.quarry_bush_delay_multiplier / 5
@ -21,7 +19,7 @@ local register_quarry_bush = function(number)
is_ground_content = false, is_ground_content = false,
floodable = true, floodable = true,
groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11}, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11},
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_farming.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local sweet_pod_grow_time = df_farming.config.plant_growth_time * df_farming.config.sweet_pod_delay_multiplier / 6 local sweet_pod_grow_time = df_farming.config.plant_growth_time * df_farming.config.sweet_pod_delay_multiplier / 6
@ -19,7 +17,7 @@ local register_sweet_pod = function(number)
buildable_to = true, buildable_to = true,
floodable = true, floodable = true,
groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11}, groups = {snappy = 3, flammable = 2, plant = 1, not_in_creative_inventory = 1, attached_node = 1, light_sensitive_fungus = 11},
sounds = default.node_sound_leaves_defaults(), sounds = df_farming.sounds.leaves,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -116,14 +114,14 @@ if minetest.get_modpath("cottages") then
recipe_registered = true recipe_registered = true
end end
if minetest.registered_items["farming:mortar_pestle"] ~= nil then if minetest.registered_items[df_farming.node_names.mortar_pestle] ~= nil then
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "df_farming:sugar", output = "df_farming:sugar",
recipe = { recipe = {
"df_farming:sweet_pods", "farming:mortar_pestle" "df_farming:sweet_pods", df_farming.node_names.mortar_pestle
}, },
replacements = {{"group:food_mortar_pestle", "farming:mortar_pestle"}}, replacements = {{"group:food_mortar_pestle", df_farming.node_names.mortar_pestle}},
}) })
recipe_registered = true recipe_registered = true
end end
@ -186,7 +184,7 @@ if minetest.get_modpath("bucket") then
liquid_range = 2, liquid_range = 2,
post_effect_color = {a = 204, r = 179, g = 131, b = 88}, post_effect_color = {a = 204, r = 179, g = 131, b = 88},
groups = {liquid = 3, flammable = 2}, groups = {liquid = 3, flammable = 2},
sounds = default.node_sound_water_defaults(), sounds = df_farming.sounds.water,
}) })
minetest.register_node("df_farming:dwarven_syrup_flowing", { minetest.register_node("df_farming:dwarven_syrup_flowing", {
@ -235,7 +233,7 @@ if minetest.get_modpath("bucket") then
liquid_range = 2, liquid_range = 2,
post_effect_color = {a = 204, r = 179, g = 131, b = 88}, post_effect_color = {a = 204, r = 179, g = 131, b = 88},
groups = {liquid = 3, flammable = 2, not_in_creative_inventory = 1}, groups = {liquid = 3, flammable = 2, not_in_creative_inventory = 1},
sounds = default.node_sound_water_defaults(), sounds = df_farming.sounds.water,
}) })
bucket.register_liquid( bucket.register_liquid(
@ -249,7 +247,7 @@ if minetest.get_modpath("bucket") then
if minetest.get_modpath("crafting") then if minetest.get_modpath("crafting") then
simplecrafting_lib.register("furnace", { simplecrafting_lib.register("furnace", {
input = { input = {
["bucket:bucket_empty"] = 1, [df_farming.node_names.bucket] = 1,
["df_farming:sugar"] = 3, ["df_farming:sugar"] = 3,
["simplecrafting_lib:heat"] = 5, ["simplecrafting_lib:heat"] = 5,
}, },
@ -259,7 +257,7 @@ if minetest.get_modpath("bucket") then
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "df_farming:dwarven_syrup_bucket", output = "df_farming:dwarven_syrup_bucket",
recipe = {"bucket:bucket_empty", "df_farming:sugar", "df_farming:sugar", "df_farming:sugar"}, recipe = {df_farming.node_names.bucket, "df_farming:sugar", "df_farming:sugar", "df_farming:sugar"},
}) })
end end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 196 B

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 694 B

After

Width:  |  Height:  |  Size: 693 B

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
minetest.register_node("df_mapitems:castle_coral", { minetest.register_node("df_mapitems:castle_coral", {
description = S("Castle Coral"), description = S("Castle Coral"),
@ -19,7 +17,7 @@ minetest.register_node("df_mapitems:castle_coral", {
drop = "df_mapitems:castle_coral_skeleton", drop = "df_mapitems:castle_coral_skeleton",
paramtype = "light", paramtype = "light",
groups = {cracky=2,}, groups = {cracky=2,},
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
}) })
minetest.register_node("df_mapitems:castle_coral_skeleton", { minetest.register_node("df_mapitems:castle_coral_skeleton", {
@ -27,24 +25,21 @@ minetest.register_node("df_mapitems:castle_coral_skeleton", {
_doc_items_longdesc = df_mapitems.doc.castle_coral_desc, _doc_items_longdesc = df_mapitems.doc.castle_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.castle_coral_usage, _doc_items_usagehelp = df_mapitems.doc.castle_coral_usage,
tiles = { tiles = {
"default_coral_skeleton.png", df_mapitems.texture.coral_skeleton
"default_coral_skeleton.png",
"default_coral_skeleton.png",
"default_coral_skeleton.png",
}, },
drawtype = "mesh", drawtype = "mesh",
mesh = "octagonal_coral.obj", mesh = "octagonal_coral.obj",
paramtype = "light", paramtype = "light",
is_ground_content = false, is_ground_content = false,
groups = {cracky = 3}, groups = {cracky = 3},
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
}) })
local c_coral = minetest.get_content_id("df_mapitems:castle_coral") 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_coral_skeleton = minetest.get_content_id("df_mapitems:castle_coral_skeleton")
local c_stone = minetest.get_content_id("default:stone") local c_stone = df_mapitems.node_id.stone
local c_water = minetest.get_content_id("default:water_source") local c_water = df_mapitems.node_id.water
df_mapitems.spawn_castle_coral = function(area, data, vi, iterations) df_mapitems.spawn_castle_coral = function(area, data, vi, iterations)
local run = math.random(2,4) local run = math.random(2,4)

View File

@ -1,21 +1,22 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua") local water_source = df_mapitems.node_name.water
local coral_skeleton = df_mapitems.node_name.coral_skeleton
minetest.register_node("df_mapitems:cave_coral_3", { minetest.register_node("df_mapitems:cave_coral_3", {
description = S("Cave Coral"), description = S("Cave Coral"),
_doc_items_longdesc = df_mapitems.doc.cave_coral_desc, _doc_items_longdesc = df_mapitems.doc.cave_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.cave_coral_usage, _doc_items_usagehelp = df_mapitems.doc.cave_coral_usage,
tiles = {"dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral.png"}, tiles = {"dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral.png"},
drop = "default:coral_skeleton", drop = coral_skeleton,
light_source = 3, light_source = 3,
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
groups = {cracky = 3, dfcaverns_cave_coral = 1}, groups = {cracky = 3, dfcaverns_cave_coral = 1},
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
on_timer = function(pos) on_timer = function(pos)
if minetest.find_node_near(pos, 1, {"default:water_source"}) == nil then if minetest.find_node_near(pos, 1, {water_source}) == nil then
minetest.set_node(pos, {name="default:coral_skeleton"}) minetest.set_node(pos, {name=coral_skeleton})
end end
end, end,
}) })
@ -25,15 +26,15 @@ minetest.register_node("df_mapitems:cave_coral_2", {
_doc_items_longdesc = df_mapitems.doc.cave_coral_desc, _doc_items_longdesc = df_mapitems.doc.cave_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.cave_coral_usage, _doc_items_usagehelp = df_mapitems.doc.cave_coral_usage,
tiles = {"dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral.png"}, tiles = {"dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral.png"},
drop = "default:coral_skeleton", drop = coral_skeleton,
light_source = 2, light_source = 2,
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
groups = {cracky = 3, dfcaverns_cave_coral = 1}, groups = {cracky = 3, dfcaverns_cave_coral = 1},
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
on_timer = function(pos) on_timer = function(pos)
if minetest.find_node_near(pos, 1, {"default:water_source"}) == nil then if minetest.find_node_near(pos, 1, {water_source}) == nil then
minetest.set_node(pos, {name="default:coral_skeleton"}) minetest.set_node(pos, {name=coral_skeleton})
end end
end, end,
}) })
@ -43,24 +44,25 @@ minetest.register_node("df_mapitems:cave_coral_1", {
_doc_items_longdesc = df_mapitems.doc.cave_coral_desc, _doc_items_longdesc = df_mapitems.doc.cave_coral_desc,
_doc_items_usagehelp = df_mapitems.doc.cave_coral_usage, _doc_items_usagehelp = df_mapitems.doc.cave_coral_usage,
tiles = {"dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral.png"}, tiles = {"dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral_end.png", "dfcaverns_cave_coral.png"},
drop = "default:coral_skeleton", drop = coral_skeleton,
light_source = 1, light_source = 1,
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
groups = {cracky = 3, dfcaverns_cave_coral = 1}, groups = {cracky = 3, dfcaverns_cave_coral = 1},
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
on_timer = function(pos) on_timer = function(pos)
if minetest.find_node_near(pos, 1, {"default:water_source"}) == nil then if minetest.find_node_near(pos, 1, {water_source}) == nil then
minetest.set_node(pos, {name="default:coral_skeleton"}) minetest.set_node(pos, {name=coral_skeleton})
end end
end, end,
}) })
local coral_names = {"df_mapitems:cave_coral_1", "df_mapitems:cave_coral_2", "df_mapitems:cave_coral_3"} local coral_names = {"df_mapitems:cave_coral_1", "df_mapitems:cave_coral_2", "df_mapitems:cave_coral_3"}
local water_node = df_mapitems.node_name.water
minetest.register_abm{ minetest.register_abm{
label = "df_mapitems:shifting_coral", label = "df_mapitems:shifting_coral",
nodenames = {"group:dfcaverns_cave_coral"}, nodenames = {"group:dfcaverns_cave_coral"},
neighbors = {"default:water_source"}, neighbors = {water_node},
interval = 2, interval = 2,
chance = 10, chance = 10,
action = function(pos) action = function(pos)

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
minetest.register_node("df_mapitems:cave_pearls", { minetest.register_node("df_mapitems:cave_pearls", {
description = S("Cave Pearls"), description = S("Cave Pearls"),

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--glowing mese crystal blocks --glowing mese crystal blocks
minetest.register_node("df_mapitems:glow_mese", { minetest.register_node("df_mapitems:glow_mese", {
@ -9,11 +7,11 @@ minetest.register_node("df_mapitems:glow_mese", {
_doc_items_usagehelp = df_mapitems.doc.glow_mese_usage, _doc_items_usagehelp = df_mapitems.doc.glow_mese_usage,
tiles = {"dfcaverns_glow_mese.png"}, tiles = {"dfcaverns_glow_mese.png"},
groups = {cracky=3}, groups = {cracky=3},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
is_ground_content = false, is_ground_content = false,
light_source = 13, light_source = 13,
paramtype = "light", paramtype = "light",
use_texture_alpha = true, use_texture_alpha = "blend",
drawtype = "glasslike", drawtype = "glasslike",
sunlight_propagates = true, sunlight_propagates = true,
}) })
@ -37,14 +35,14 @@ minetest.register_node("df_mapitems:mese_crystal", {
mesh = "underch_crystal.obj", mesh = "underch_crystal.obj",
light_source = 12, light_source = 12,
is_ground_content = false, is_ground_content = false,
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
use_texture_alpha = true, use_texture_alpha = "blend",
sunlight_propagates = true, sunlight_propagates = true,
on_place = df_mapitems.place_against_surface, on_place = df_mapitems.place_against_surface,
}) })
minetest.register_craft({ minetest.register_craft({
output = 'default:mese_crystal 9', output = df_mapitems.node_name.mese_crystal .. ' 9',
recipe = { recipe = {
{'df_mapitems:mese_crystal'}, {'df_mapitems:mese_crystal'},
} }

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
minetest.register_node("df_mapitems:glow_ruby_ore", { minetest.register_node("df_mapitems:glow_ruby_ore", {
description = S("Red Crystal Vein"), description = S("Red Crystal Vein"),
@ -9,7 +7,7 @@ minetest.register_node("df_mapitems:glow_ruby_ore", {
tiles = {"dfcaverns_glow_ruby_ore.png"}, tiles = {"dfcaverns_glow_ruby_ore.png"},
is_ground_content = false, is_ground_content = false,
groups = {cracky=2}, groups = {cracky=2},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
}) })
minetest.register_node("df_mapitems:big_crystal", { minetest.register_node("df_mapitems:big_crystal", {
@ -22,14 +20,14 @@ minetest.register_node("df_mapitems:big_crystal", {
"dfcaverns_glow_ruby4x.png", "dfcaverns_glow_ruby4x.png",
"dfcaverns_glow_ruby.png", "dfcaverns_glow_ruby.png",
}, },
use_texture_alpha = true, use_texture_alpha = "blend",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
sunlight_propagates = true, sunlight_propagates = true,
light_source = 12, light_source = 12,
groups = {cracky=2, dfcaverns_big_crystal = 1}, groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-0.5, -0.5, -0.5, 0.5, 3, 0.5}, fixed = {-0.5, -0.5, -0.5, 0.5, 3, 0.5},
@ -50,14 +48,14 @@ minetest.register_node("df_mapitems:med_crystal", {
"dfcaverns_glow_ruby.png", "dfcaverns_glow_ruby.png",
"dfcaverns_glow_ruby_quarter.png", "dfcaverns_glow_ruby_quarter.png",
}, },
use_texture_alpha = true, use_texture_alpha = "blend",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
sunlight_propagates = true, sunlight_propagates = true,
light_source = 12, light_source = 12,
groups = {cracky=2, dfcaverns_big_crystal = 1}, groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 1.25, 0.25}, fixed = {-0.25, -0.5, -0.25, 0.25, 1.25, 0.25},
@ -79,7 +77,7 @@ minetest.register_node("df_mapitems:big_crystal_30", {
"dfcaverns_glow_ruby4x.png", "dfcaverns_glow_ruby4x.png",
"dfcaverns_glow_ruby.png", "dfcaverns_glow_ruby.png",
}, },
use_texture_alpha = true, use_texture_alpha = "blend",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sunlight_propagates = true, sunlight_propagates = true,
@ -87,7 +85,7 @@ minetest.register_node("df_mapitems:big_crystal_30", {
light_source = 12, light_source = 12,
drop = "df_mapitems:big_crystal", drop = "df_mapitems:big_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1}, groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -131,7 +129,7 @@ minetest.register_node("df_mapitems:med_crystal_30", {
"dfcaverns_glow_ruby.png", "dfcaverns_glow_ruby.png",
"dfcaverns_glow_ruby_quarter.png", "dfcaverns_glow_ruby_quarter.png",
}, },
use_texture_alpha = true, use_texture_alpha = "blend",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sunlight_propagates = true, sunlight_propagates = true,
@ -139,7 +137,7 @@ minetest.register_node("df_mapitems:med_crystal_30", {
light_source = 12, light_source = 12,
drop = "df_mapitems:med_crystal", drop = "df_mapitems:med_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1}, groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -168,7 +166,7 @@ minetest.register_node("df_mapitems:big_crystal_30_45", {
"dfcaverns_glow_ruby4x.png", "dfcaverns_glow_ruby4x.png",
"dfcaverns_glow_ruby.png", "dfcaverns_glow_ruby.png",
}, },
use_texture_alpha = true, use_texture_alpha = "blend",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sunlight_propagates = true, sunlight_propagates = true,
@ -176,7 +174,7 @@ minetest.register_node("df_mapitems:big_crystal_30_45", {
light_source = 12, light_source = 12,
drop = "df_mapitems:big_crystal", drop = "df_mapitems:big_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1}, groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -206,7 +204,7 @@ minetest.register_node("df_mapitems:med_crystal_30_45", {
"dfcaverns_glow_ruby4x.png", "dfcaverns_glow_ruby4x.png",
"dfcaverns_glow_ruby.png", "dfcaverns_glow_ruby.png",
}, },
use_texture_alpha = true, use_texture_alpha = "blend",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sunlight_propagates = true, sunlight_propagates = true,
@ -214,7 +212,7 @@ minetest.register_node("df_mapitems:med_crystal_30_45", {
light_source = 12, light_source = 12,
drop = "df_mapitems:med_crystal", drop = "df_mapitems:med_crystal",
groups = {cracky=2, dfcaverns_big_crystal = 1}, groups = {cracky=2, dfcaverns_big_crystal = 1},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -264,7 +262,7 @@ minetest.register_craft({
recipe = {'df_mapitems:med_crystal_30_45'}, recipe = {'df_mapitems:med_crystal_30_45'},
}) })
local c_stone = minetest.get_content_id("default:stone") local c_stone = df_mapitems.node_id.stone
local c_air = minetest.get_content_id("air") local c_air = minetest.get_content_id("air")
local c_big_crystal = minetest.get_content_id("df_mapitems:big_crystal") 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_med_crystal = minetest.get_content_id("df_mapitems:med_crystal")

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
minetest.register_node("df_mapitems:salt_crystal", { minetest.register_node("df_mapitems:salt_crystal", {
description = S("Luminous Salt Crystal"), description = S("Luminous Salt Crystal"),
@ -13,8 +11,8 @@ minetest.register_node("df_mapitems:salt_crystal", {
drawtype = "mesh", drawtype = "mesh",
mesh = "underch_crystal.obj", mesh = "underch_crystal.obj",
light_source = 6, light_source = 6,
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
use_texture_alpha = true, use_texture_alpha = "blend",
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
on_place = df_mapitems.place_against_surface, on_place = df_mapitems.place_against_surface,
@ -24,11 +22,11 @@ minetest.register_node("df_mapitems:salty_cobble", {
description = S("Salty Cobble"), description = S("Salty Cobble"),
_doc_items_longdesc = df_mapitems.doc.salty_cobble_desc, _doc_items_longdesc = df_mapitems.doc.salty_cobble_desc,
_doc_items_usagehelp = df_mapitems.doc.salty_cobble_desc, _doc_items_usagehelp = df_mapitems.doc.salty_cobble_desc,
tiles = {"default_cobble.png^dfcaverns_salty.png"}, tiles = {df_mapitems.texture.cobble .. "^dfcaverns_salty.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1}, groups = {cracky = 3, stone = 1, lava_heatable = 1},
_magma_conduits_heats_to = "default:cobble", _magma_conduits_heats_to = df_mapitems.node_name.cobble,
is_ground_content = false, is_ground_content = false,
light_source = 2, light_source = 2,
drop = 'default:cobble', drop = df_mapitems.node_name.cobble,
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
}) })

View File

@ -0,0 +1,45 @@
df_mapitems.sounds = {}
df_mapitems.sounds.stone = default.node_sound_stone_defaults()
df_mapitems.sounds.floor_fungus = default.node_sound_stone_defaults({footstep = {name = "dfcaverns_squish", gain = 0.25},})
df_mapitems.sounds.sandscum = default.node_sound_sand_defaults({footstep = {name = "dfcaverns_squish", gain = 0.25},})
df_mapitems.sounds.glass = default.node_sound_glass_defaults()
df_mapitems.sounds.dirt = default.node_sound_dirt_defaults()
df_mapitems.sounds.dirt_mossy = default.node_sound_dirt_defaults({footstep = {name = "default_grass_footstep", gain = 0.25},})
df_mapitems.node_id = {}
df_mapitems.node_id.stone = minetest.get_content_id("default:stone")
df_mapitems.node_id.water = minetest.get_content_id("default:water_source")
df_mapitems.node_id.dirt = minetest.get_content_id("default:dirt")
df_mapitems.texture = {}
df_mapitems.texture.coral_skeleton = "default_coral_skeleton.png"
df_mapitems.texture.cobble = "default_cobble.png"
df_mapitems.texture.stone = "default_stone.png"
df_mapitems.texture.ice = "default_ice.png"
df_mapitems.texture.sand = "default_sand.png"
df_mapitems.texture.dirt = "default_dirt.png"
df_mapitems.node_name = {}
df_mapitems.node_name.coral_skeleton = "default:coral_skeleton"
df_mapitems.node_name.water = "default:water_source"
df_mapitems.node_name.mese_crystal = "default:mese_crystal"
df_mapitems.node_name.cobble = "default:cobble"
df_mapitems.node_name.sand = "default:sand"
df_mapitems.node_name.dirt = "default:dirt"
df_mapitems.node_name.stone = "default:stone"
df_mapitems.node_name.ice = "default:ice"
df_mapitems.node_name.farming_soil = "farming:soil"
df_mapitems.node_name.farming_soil_wet = "farming:soil_wet"
-- This stuff should only be used during initialization
minetest.after(0, function()
df_mapitems.node_name = nil
df_mapitems.sounds = nil
df_mapitems.texture = nil
df_mapitems.node_id = nil
end)

View File

@ -4,15 +4,29 @@ if not minetest.get_modpath("doc") then
return return
end end
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
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_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.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_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.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_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.hoar_moss_usage = S("Hoar moss has no known use aside from providing a faint source of light.")

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
----------------------------------------------- -----------------------------------------------
@ -9,10 +7,10 @@ df_mapitems.dry_stalagmite_ids = subterrane.register_stalagmite_nodes("df_mapite
_doc_items_longdesc = df_mapitems.doc.dripstone_desc, _doc_items_longdesc = df_mapitems.doc.dripstone_desc,
_doc_items_usagehelp = df_mapitems.doc.dripstone_usage, _doc_items_usagehelp = df_mapitems.doc.dripstone_usage,
tiles = { tiles = {
"default_stone.png^[brighten", df_mapitems.texture.stone .. "^[brighten",
}, },
groups = {cracky = 3, stone = 2}, groups = {cracky = 3, stone = 2},
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
is_ground_content = false, is_ground_content = false,
}) })
@ -20,12 +18,12 @@ minetest.register_node("df_mapitems:dry_flowstone", {
description = S("Dry Flowstone"), description = S("Dry Flowstone"),
_doc_items_longdesc = df_mapitems.doc.flowstone_desc, _doc_items_longdesc = df_mapitems.doc.flowstone_desc,
_doc_items_usagehelp = df_mapitems.doc.flowstone_usage, _doc_items_usagehelp = df_mapitems.doc.flowstone_usage,
tiles = {"default_stone.png^[brighten"}, tiles = {df_mapitems.texture.stone .. "^[brighten"},
groups = {cracky = 3, stone = 1, lava_heatable = 1}, groups = {cracky = 3, stone = 1, lava_heatable = 1},
_magma_conduits_heats_to = "default:cobble", _magma_conduits_heats_to = df_mapitems.node_name.cobble,
is_ground_content = false, is_ground_content = false,
drop = 'default:cobble', drop = df_mapitems.node_name.cobble,
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
}) })
----------------------------------------------- -----------------------------------------------
@ -35,10 +33,10 @@ df_mapitems.wet_stalagmite_ids = subterrane.register_stalagmite_nodes("df_mapite
_doc_items_longdesc = df_mapitems.doc.dripstone_desc, _doc_items_longdesc = df_mapitems.doc.dripstone_desc,
_doc_items_usagehelp = df_mapitems.doc.dripstone_usage, _doc_items_usagehelp = df_mapitems.doc.dripstone_usage,
tiles = { tiles = {
"default_stone.png^[brighten^dfcaverns_dripstone_streaks.png", df_mapitems.texture.stone .. "^[brighten^dfcaverns_dripstone_streaks.png",
}, },
groups = {cracky = 3, stone = 2, subterrane_wet_dripstone = 1}, groups = {cracky = 3, stone = 2, subterrane_wet_dripstone = 1},
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
is_ground_content = false, is_ground_content = false,
}, "df_mapitems:dry_stal") }, "df_mapitems:dry_stal")
@ -47,12 +45,12 @@ minetest.register_node("df_mapitems:wet_flowstone", {
description = S("Wet Flowstone"), description = S("Wet Flowstone"),
_doc_items_longdesc = df_mapitems.doc.flowstone_desc, _doc_items_longdesc = df_mapitems.doc.flowstone_desc,
_doc_items_usagehelp = df_mapitems.doc.flowstone_usage, _doc_items_usagehelp = df_mapitems.doc.flowstone_usage,
tiles = {"default_stone.png^[brighten^dfcaverns_dripstone_streaks.png"}, tiles = {df_mapitems.texture.stone .. "^[brighten^dfcaverns_dripstone_streaks.png"},
groups = {cracky = 3, stone = 1, subterrane_wet_dripstone = 1, lava_heatable = 1}, groups = {cracky = 3, stone = 1, subterrane_wet_dripstone = 1, lava_heatable = 1},
_magma_conduits_heats_to = "df_mapitems:dry_flowstone", _magma_conduits_heats_to = "df_mapitems:dry_flowstone",
is_ground_content = false, is_ground_content = false,
drop = 'default:cobble', drop = df_mapitems.node_name.cobble,
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.stone,
}) })
----------------------------------------------- -----------------------------------------------
@ -62,9 +60,9 @@ df_mapitems.icicle_ids = subterrane.register_stalagmite_nodes("df_mapitems:icicl
_doc_items_longdesc = df_mapitems.doc.icicle_desc, _doc_items_longdesc = df_mapitems.doc.icicle_desc,
_doc_items_usagehelp = df_mapitems.doc.icicle_usage, _doc_items_usagehelp = df_mapitems.doc.icicle_usage,
tiles = { tiles = {
"default_ice.png", df_mapitems.texture.ice,
}, },
groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 3}, groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 3},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
}) })

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local growth_multiplier = 1 local growth_multiplier = 1
if minetest.get_modpath("df_farming") then if minetest.get_modpath("df_farming") then

View File

@ -1,62 +1,173 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
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_mapitems.node_name.farming_soil
local farming_soil_wet = df_mapitems.node_name.farming_soil_wet
-------------------------------------------------- --------------------------------------------------
-- Cave moss -- Cave moss
-- cyan/dark cyan -- cyan/dark cyan
local dirt_texture = df_mapitems.texture.dirt
local sand_texture = df_mapitems.texture.sand
local dirt_node = df_mapitems.node_name.dirt
local sand_node = df_mapitems.node_name.sand
local stone_node = df_mapitems.node_name.stone
local cobble_node = df_mapitems.node_name.cobble
minetest.register_node("df_mapitems:dirt_with_cave_moss", { minetest.register_node("df_mapitems:dirt_with_cave_moss", {
description = S("Dirt with Cave Moss"), description = S("Dirt with Cave Moss"),
_doc_items_longdesc = df_mapitems.doc.cave_moss_desc, _doc_items_longdesc = df_mapitems.doc.cave_moss_desc,
_doc_items_usagehelp = df_mapitems.doc.cave_moss_usage, _doc_items_usagehelp = df_mapitems.doc.cave_moss_usage,
tiles = {"default_dirt.png^dfcaverns_cave_moss.png", "default_dirt.png", tiles = {dirt_texture .. "^dfcaverns_cave_moss.png", dirt_texture,
{name = "default_dirt.png^dfcaverns_cave_moss_side.png", {name = dirt_texture .. "^(dfcaverns_cave_moss.png^[mask:dfcaverns_ground_cover_side_mask.png)",
tileable_vertical = false}}, tileable_vertical = false}},
drop = "default:dirt", drop = dirt_node,
is_ground_content = false, is_ground_content = false,
light_source = 2, light_source = 2,
paramtype = "light", paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8}, groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = default.node_sound_dirt_defaults({ sounds = df_mapitems.sounds.dirt_mossy,
footstep = {name = "default_grass_footstep", gain = 0.25},
}),
soil = { soil = {
base = "df_mapitems:dirt_with_cave_moss", base = "df_mapitems:dirt_with_cave_moss",
dry = "farming:soil", dry = farming_soil,
wet = "farming:soil_wet" wet = farming_soil_wet
}, },
_dfcaverns_dead_node = "default:dirt", _dfcaverns_dead_node = dirt_node,
}) })
minetest.register_abm{ soil_type_spread("df_mapitems:cave_moss_spread", "df_mapitems:dirt_with_cave_moss", dirt_node)
label = "df_mapitems:cave_moss_spread",
nodenames = {"default:dirt"},
neighbors = {"df_mapitems:dirt_with_cave_moss"},
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="df_mapitems:dirt_with_cave_moss"})
end
end,
}
if minetest.get_modpath("trail") and trail and trail.register_trample_node then ---------------------------------------------------------------
local HARDPACK_PROBABILITY = minetest.settings:get("trail_hardpack_probability") or 0.5 -- Chance walked dirt/grass is worn and compacted to trail:trail. -- Sand scum
local HARDPACK_COUNT = minetest.settings:get("trail_hardpack_count") or 5 -- Number of times the above chance needs to be passed for soil to compact.
trail.register_trample_node("df_mapitems:dirt_with_cave_moss", { minetest.register_node("df_mapitems:sand_scum", {
trampled_node_def_override = {description = S("Dirt with Cave Moss and Footprint"),}, description = S("Sand Scum"),
hard_pack_node_name = "trail:trail", _doc_items_longdesc = df_mapitems.doc.sand_scum_desc,
footprint_opacity = 128, _doc_items_usagehelp = df_mapitems.doc.sand_scum_usage,
hard_pack_probability = HARDPACK_PROBABILITY, tiles = {"dfcaverns_ground_cover_sand_scum.png", sand_texture,
hard_pack_count = HARDPACK_COUNT, {name = sand_texture .. "^(dfcaverns_ground_cover_sand_scum.png^[mask:dfcaverns_ground_cover_side_mask.png)",
}) tileable_vertical = false}},
end drop = sand_node,
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.sandscum,
_dfcaverns_dead_node = sand_node,
})
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},
sounds = df_mapitems.sounds.dirt,
soil = {
base = "df_mapitems:dirt_with_pebble_fungus",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
})
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},
sounds = df_mapitems.sounds.dirt_mossy,
soil = {
base = "df_mapitems:dirt_with_stillworm",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
})
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"},
is_ground_content = false,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.dirt,
soil = {
base = "df_mapitems:spongestone",
dry = farming_soil,
wet = farming_soil_wet
},
_dfcaverns_dead_node = dirt_node,
})
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_mapitems.texture.stone .. "^dfcaverns_ground_cover_rock_rot.png", df_mapitems.texture.stone,
{name = df_mapitems.texture.stone .. "^(dfcaverns_ground_cover_rock_rot.png^[mask:dfcaverns_ground_cover_side_mask.png)",
tileable_vertical = false}},
drop = df_mapitems.node_name.cobble,
is_ground_content = false,
light_source = 2,
paramtype = "light",
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 8},
sounds = df_mapitems.sounds.dirt,
_dfcaverns_dead_node = stone_node,
})
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 -- floor fungus
@ -67,35 +178,31 @@ minetest.register_node("df_mapitems:cobble_with_floor_fungus", {
description = S("Cobblestone with Floor Fungus"), description = S("Cobblestone with Floor Fungus"),
_doc_items_longdesc = df_mapitems.doc.floor_fungus_desc, _doc_items_longdesc = df_mapitems.doc.floor_fungus_desc,
_doc_items_usagehelp = df_mapitems.doc.floor_fungus_usage, _doc_items_usagehelp = df_mapitems.doc.floor_fungus_usage,
tiles = {"default_cobble.png^dfcaverns_floor_fungus.png"}, tiles = {df_mapitems.texture.cobble .. "^dfcaverns_floor_fungus.png"},
drops = "default:cobble", drops = cobble_node,
is_ground_content = false, is_ground_content = false,
paramtype = "light", paramtype = "light",
groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8}, groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8},
_dfcaverns_dead_node = "default:cobble", _dfcaverns_dead_node = df_mapitems.node_name.cobble,
sounds = default.node_sound_stone_defaults({ sounds = df_mapitems.sounds.floor_fungus,
footstep = {name = "dfcaverns_squish", gain = 0.25},
}),
}) })
minetest.register_node("df_mapitems:cobble_with_floor_fungus_fine", { minetest.register_node("df_mapitems:cobble_with_floor_fungus_fine", {
description = S("Cobblestone with Floor Fungus"), description = S("Cobblestone with Floor Fungus"),
_doc_items_longdesc = df_mapitems.doc.floor_fungus_desc, _doc_items_longdesc = df_mapitems.doc.floor_fungus_desc,
_doc_items_usagehelp = df_mapitems.doc.floor_fungus_usage, _doc_items_usagehelp = df_mapitems.doc.floor_fungus_usage,
tiles = {"default_cobble.png^dfcaverns_floor_fungus_fine.png"}, tiles = {df_mapitems.texture.cobble .. "^dfcaverns_floor_fungus_fine.png"},
drops = "default:cobble", drops = cobble_node,
is_ground_content = false, is_ground_content = false,
paramtype = "light", paramtype = "light",
groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8}, groups = {cracky = 3, stone = 2, slippery = 1, light_sensitive_fungus = 8},
_dfcaverns_dead_node = "default:cobble", _dfcaverns_dead_node = df_mapitems.node_name.cobble,
sounds = default.node_sound_stone_defaults({ df_mapitems.sounds.floor_fungus,
footstep = {name = "dfcaverns_squish", gain = 0.25},
}),
}) })
minetest.register_abm{ minetest.register_abm{
label = "df_mapitems:floor_fungus_spread", label = "df_mapitems:floor_fungus_spread",
nodenames = {"default:cobble"}, nodenames = {cobble_node},
neighbors = {"df_mapitems:cobble_with_floor_fungus"}, neighbors = {"df_mapitems:cobble_with_floor_fungus"},
interval = 60, interval = 60,
chance = 10, chance = 10,
@ -106,7 +213,7 @@ minetest.register_abm{
} }
minetest.register_abm{ minetest.register_abm{
label = "df_mapitems:floor_fungus_thickening", label = "df_mapitems:floor_fungus_thickening",
nodenames = {"default:cobble_with_floor_fungus_fine"}, nodenames = {"df_mapitems:cobble_with_floor_fungus_fine"},
interval = 59, interval = 59,
chance = 10, chance = 10,
catch_up = true, catch_up = true,
@ -122,12 +229,61 @@ minetest.register_node("df_mapitems:ice_with_hoar_moss", {
description = S("Ice with Hoar Moss"), description = S("Ice with Hoar Moss"),
_doc_items_longdesc = df_mapitems.doc.hoar_moss_desc, _doc_items_longdesc = df_mapitems.doc.hoar_moss_desc,
_doc_items_usagehelp = df_mapitems.doc.hoar_moss_usage, _doc_items_usagehelp = df_mapitems.doc.hoar_moss_usage,
tiles = {"default_ice.png^dfcaverns_hoar_moss.png"}, tiles = {df_mapitems.texture.ice .. "^dfcaverns_hoar_moss.png"},
drops = "default:ice", drops = df_mapitems.node_name.ice,
paramtype = "light", paramtype = "light",
light_source = 2, light_source = 2,
is_ground_content = false, is_ground_content = false,
groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 2, light_sensitive_fungus = 8}, groups = {cracky = 3, puts_out_fire = 1, cools_lava = 1, slippery = 2, light_sensitive_fungus = 8},
sounds = default.node_sound_glass_defaults(), sounds = df_mapitems.sounds.glass,
_dfcaverns_dead_node = "default:ice", _dfcaverns_dead_node = df_mapitems.node_name.ice,
}) })
----------------------------------------------------------------
-- 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_mapitems.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

View File

@ -1,10 +1,12 @@
df_mapitems = {} df_mapitems = {}
--grab a shorthand for the filepath of the mod local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(minetest.get_current_modname()) df_mapitems.S = minetest.get_translator(modname)
local modpath = minetest.get_modpath(modname)
--load companion lua files --load companion lua files
dofile(modpath.."/config.lua") dofile(modpath.."/config.lua")
dofile(modpath.."/dependencies.lua")
dofile(modpath.."/doc.lua") dofile(modpath.."/doc.lua")
dofile(modpath.."/aliases.lua") dofile(modpath.."/aliases.lua")
dofile(modpath.."/util.lua") dofile(modpath.."/util.lua")

View File

@ -1,45 +0,0 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

View File

@ -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=

View File

@ -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=

View File

@ -1,312 +0,0 @@
# ITALIAN LOCALE FOR THE DFCAVERNS MODULE
# Copyright (C) 2017 FaceDeer <derksenmobile@gmail.com>
# This file is distributed under the same license as the DFCAVERNS package.
# Hamlet <h4mlet@riseup.net>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: dfcaverns module's Italian locale\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-07 21:33-0600\n"
"PO-Revision-Date: 2017-08-17 23:01+0100\n"
"Last-Translator: H4mlet <h4mlet@riseup.net>\n"
"Language-Team: ITALIANO\n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.6.10\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: df_mapitems\castle_coral.lua:6
msgid "Castle Coral"
msgstr ""
#: df_mapitems\castle_coral.lua:25
msgid "Castle Coral Skeleton"
msgstr ""
#: df_mapitems\cave_coral.lua:6
#: df_mapitems\cave_coral.lua:18
#: df_mapitems\cave_coral.lua:30
#, fuzzy
msgid "Cave Coral"
msgstr "Grano di caverna"
#: df_mapitems\cave_pearls.lua:6
msgid "Cave Pearls"
msgstr ""
#: df_mapitems\crystals_mese.lua:7
msgid "Flawless Mese Block"
msgstr ""
#: df_mapitems\crystals_mese.lua:29
msgid "Flawless Mese Crystal"
msgstr ""
#: df_mapitems\crystals_ruby.lua:6
msgid "Red Crystal Vein"
msgstr ""
#: df_mapitems\crystals_ruby.lua:16
#: df_mapitems\crystals_ruby.lua:71
#: df_mapitems\crystals_ruby.lua:158
msgid "Giant Red Crystal"
msgstr ""
#: df_mapitems\crystals_ruby.lua:43
#: df_mapitems\crystals_ruby.lua:122
#: df_mapitems\crystals_ruby.lua:195
msgid "Big Red Crystal"
msgstr ""
#: df_mapitems\crystals_salt.lua:6
msgid "Luminous Salt Crystal"
msgstr ""
#: df_mapitems\crystals_salt.lua:23
msgid "Salty Cobble"
msgstr ""
#: df_mapitems\doc.lua:11
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:12
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:13
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:14
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:16
msgid ""
"Hoar moss is a strange glowing crust that sometimes forms on the surface of "
"water flowing over ice."
msgstr ""
#: df_mapitems\doc.lua:17
msgid ""
"Hoar moss has no known use aside from providing a faint source of light."
msgstr ""
#: df_mapitems\doc.lua:19
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:20
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:22
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:23
msgid "Snareweed has no practical use, its fibers disintegrate when they dry."
msgstr ""
#: df_mapitems\doc.lua:25
msgid ""
"A rare form of coral found only deep underground in the Sunless Sea, cave "
"coral grows hanging from the ceilings of flooded caverns."
msgstr ""
#: df_mapitems\doc.lua:26
msgid ""
"Aside from their aesthetic beauty, cave corals can be harvested for simple "
"building materials."
msgstr ""
#: df_mapitems\doc.lua:28
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:29
msgid ""
"Aside from the aesthetic beauty of its formations flowstone has no special "
"properties or uses."
msgstr ""
#: df_mapitems\doc.lua:30
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:31
msgid ""
"Although stalagmites are blunter than the stalactites above them, they can "
"cause extra damage to the unwary caver who falls on them."
msgstr ""
#: df_mapitems\doc.lua:32
msgid ""
"Ice formed by water dripping slowly into a cold environment, icicles tend to "
"be exceptionally pure and clear."
msgstr ""
#: df_mapitems\doc.lua:33
msgid "Falling onto an icicle is particularly damaging."
msgstr ""
#: df_mapitems\doc.lua:36
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:37
msgid ""
"These blocks can be broken down into a large number of mese crystals, but "
"cannot be artificially reassembled."
msgstr ""
#: df_mapitems\doc.lua:39
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:40
msgid "Aside from its aesthetic value this rock has no particular use."
msgstr ""
#: df_mapitems\doc.lua:42
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:43
msgid "Aside from its aesthetic value this crystal has no particular use."
msgstr ""
#: df_mapitems\doc.lua:45
msgid "These nodules are actually calcified bacterial colonies."
msgstr ""
#: df_mapitems\doc.lua:46
msgid ""
"Aside from their soft glow and beauty, cave pearls have no practical use. "
"Except perhaps as handholds for climbing."
msgstr ""
#: df_mapitems\doc.lua:48
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:49
msgid ""
"Castle Coral has little practical use aside from perhaps as a distinctive-"
"looking building material."
msgstr ""
#: df_mapitems\doc.lua:51
msgid ""
"A crystal of salt grown from water that percolated through the depths of the "
"earth, picking up all manner of minerals as it went."
msgstr ""
#: df_mapitems\doc.lua:52
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:54
msgid ""
"Much water has seeped through the cracks in this rock and then quickly "
"evaporated, leaving a crust of salt laced throughout."
msgstr ""
#: df_mapitems\doc.lua:55
msgid ""
"Attemping to mine this rock knocks the salt crust away, leaving only base "
"stone."
msgstr ""
#: df_mapitems\flowstone.lua:8
msgid "Dry Dripstone"
msgstr ""
#: df_mapitems\flowstone.lua:19
msgid "Dry Flowstone"
msgstr ""
#: df_mapitems\flowstone.lua:33
msgid "Wet Dripstone"
msgstr ""
#: df_mapitems\flowstone.lua:45
msgid "Wet Flowstone"
msgstr ""
#: df_mapitems\flowstone.lua:59
msgid "Icicle"
msgstr ""
#: df_mapitems\glow_worms.lua:11
msgid "Glow Worms"
msgstr "Vermi luminosi"
#: df_mapitems\ground_cover.lua:11
msgid "Dirt With Cave Moss"
msgstr "Terra con muschio di caverna"
#: df_mapitems\ground_cover.lua:54
#: df_mapitems\ground_cover.lua:69
msgid "Cobblestone With Floor Fungus"
msgstr "Ciottoli con funghi del terreno"
#: df_mapitems\ground_cover.lua:109
msgid "Ice With Hoar Moss"
msgstr ""
#: df_mapitems\snareweed.lua:6
msgid "Snareweed"
msgstr ""
#: df_mapitems\veinstone.lua:6
msgid "Veinstone"
msgstr ""

View File

@ -1,310 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-08-07 21:33-0600\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: df_mapitems\castle_coral.lua:6
msgid "Castle Coral"
msgstr ""
#: df_mapitems\castle_coral.lua:25
msgid "Castle Coral Skeleton"
msgstr ""
#: df_mapitems\cave_coral.lua:6
#: df_mapitems\cave_coral.lua:18
#: df_mapitems\cave_coral.lua:30
msgid "Cave Coral"
msgstr ""
#: df_mapitems\cave_pearls.lua:6
msgid "Cave Pearls"
msgstr ""
#: df_mapitems\crystals_mese.lua:7
msgid "Flawless Mese Block"
msgstr ""
#: df_mapitems\crystals_mese.lua:29
msgid "Flawless Mese Crystal"
msgstr ""
#: df_mapitems\crystals_ruby.lua:6
msgid "Red Crystal Vein"
msgstr ""
#: df_mapitems\crystals_ruby.lua:16
#: df_mapitems\crystals_ruby.lua:71
#: df_mapitems\crystals_ruby.lua:158
msgid "Giant Red Crystal"
msgstr ""
#: df_mapitems\crystals_ruby.lua:43
#: df_mapitems\crystals_ruby.lua:122
#: df_mapitems\crystals_ruby.lua:195
msgid "Big Red Crystal"
msgstr ""
#: df_mapitems\crystals_salt.lua:6
msgid "Luminous Salt Crystal"
msgstr ""
#: df_mapitems\crystals_salt.lua:23
msgid "Salty Cobble"
msgstr ""
#: df_mapitems\doc.lua:11
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:12
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:13
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:14
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:16
msgid ""
"Hoar moss is a strange glowing crust that sometimes forms on the surface of "
"water flowing over ice."
msgstr ""
#: df_mapitems\doc.lua:17
msgid ""
"Hoar moss has no known use aside from providing a faint source of light."
msgstr ""
#: df_mapitems\doc.lua:19
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:20
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:22
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:23
msgid "Snareweed has no practical use, its fibers disintegrate when they dry."
msgstr ""
#: df_mapitems\doc.lua:25
msgid ""
"A rare form of coral found only deep underground in the Sunless Sea, cave "
"coral grows hanging from the ceilings of flooded caverns."
msgstr ""
#: df_mapitems\doc.lua:26
msgid ""
"Aside from their aesthetic beauty, cave corals can be harvested for simple "
"building materials."
msgstr ""
#: df_mapitems\doc.lua:28
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:29
msgid ""
"Aside from the aesthetic beauty of its formations flowstone has no special "
"properties or uses."
msgstr ""
#: df_mapitems\doc.lua:30
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:31
msgid ""
"Although stalagmites are blunter than the stalactites above them, they can "
"cause extra damage to the unwary caver who falls on them."
msgstr ""
#: df_mapitems\doc.lua:32
msgid ""
"Ice formed by water dripping slowly into a cold environment, icicles tend to "
"be exceptionally pure and clear."
msgstr ""
#: df_mapitems\doc.lua:33
msgid "Falling onto an icicle is particularly damaging."
msgstr ""
#: df_mapitems\doc.lua:36
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:37
msgid ""
"These blocks can be broken down into a large number of mese crystals, but "
"cannot be artificially reassembled."
msgstr ""
#: df_mapitems\doc.lua:39
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:40
msgid "Aside from its aesthetic value this rock has no particular use."
msgstr ""
#: df_mapitems\doc.lua:42
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:43
msgid "Aside from its aesthetic value this crystal has no particular use."
msgstr ""
#: df_mapitems\doc.lua:45
msgid "These nodules are actually calcified bacterial colonies."
msgstr ""
#: df_mapitems\doc.lua:46
msgid ""
"Aside from their soft glow and beauty, cave pearls have no practical use. "
"Except perhaps as handholds for climbing."
msgstr ""
#: df_mapitems\doc.lua:48
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:49
msgid ""
"Castle Coral has little practical use aside from perhaps as a distinctive-"
"looking building material."
msgstr ""
#: df_mapitems\doc.lua:51
msgid ""
"A crystal of salt grown from water that percolated through the depths of the "
"earth, picking up all manner of minerals as it went."
msgstr ""
#: df_mapitems\doc.lua:52
msgid ""
"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."
msgstr ""
#: df_mapitems\doc.lua:54
msgid ""
"Much water has seeped through the cracks in this rock and then quickly "
"evaporated, leaving a crust of salt laced throughout."
msgstr ""
#: df_mapitems\doc.lua:55
msgid ""
"Attemping to mine this rock knocks the salt crust away, leaving only base "
"stone."
msgstr ""
#: df_mapitems\flowstone.lua:8
msgid "Dry Dripstone"
msgstr ""
#: df_mapitems\flowstone.lua:19
msgid "Dry Flowstone"
msgstr ""
#: df_mapitems\flowstone.lua:33
msgid "Wet Dripstone"
msgstr ""
#: df_mapitems\flowstone.lua:45
msgid "Wet Flowstone"
msgstr ""
#: df_mapitems\flowstone.lua:59
msgid "Icicle"
msgstr ""
#: df_mapitems\glow_worms.lua:11
msgid "Glow Worms"
msgstr ""
#: df_mapitems\ground_cover.lua:11
msgid "Dirt With Cave Moss"
msgstr ""
#: df_mapitems\ground_cover.lua:54
#: df_mapitems\ground_cover.lua:69
msgid "Cobblestone With Floor Fungus"
msgstr ""
#: df_mapitems\ground_cover.lua:109
msgid "Ice With Hoar Moss"
msgstr ""
#: df_mapitems\snareweed.lua:6
msgid "Snareweed"
msgstr ""
#: df_mapitems\veinstone.lua:6
msgid "Veinstone"
msgstr ""

View File

@ -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=

View File

@ -1,6 +0,0 @@
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
cd ..
set LIST=
for /r %%X in (*.lua) do set LIST=!LIST! %%X
..\..\intllib\tools\xgettext.bat %LIST%

View File

@ -1,4 +1,4 @@
name = df_mapitems 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. 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 = default, subterrane depends = default, subterrane
optional_depends = df_farming, farming, intllib, doc, radiant_damage, trail optional_depends = df_farming, farming, doc, radiant_damage, footprints

View File

@ -1,20 +1,18 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
minetest.register_node("df_mapitems:snareweed", { minetest.register_node("df_mapitems:snareweed", {
description = S("Snareweed"), description = S("Snareweed"),
_doc_items_longdesc = df_mapitems.doc.snareweed_desc, _doc_items_longdesc = df_mapitems.doc.snareweed_desc,
_doc_items_usagehelp = df_mapitems.doc.snareweed_usage, _doc_items_usagehelp = df_mapitems.doc.snareweed_usage,
tiles = {"default_dirt.png^dfcaverns_snareweed_roots.png", "default_dirt.png"}, tiles = {df_mapitems.texture.dirt .. "^dfcaverns_snareweed_roots.png", df_mapitems.texture.dirt},
drawtype="plantlike_rooted", drawtype="plantlike_rooted",
paramtype2 = "leveled", paramtype2 = "leveled",
special_tiles = {{name = "dfcaverns_snareweed.png", tileable_vertical = true}}, special_tiles = {{name = "dfcaverns_snareweed.png", tileable_vertical = true}},
is_ground_content = false, is_ground_content = false,
drop = 'default:dirt', drop = df_mapitems.node_name.dirt,
light_source = 6, light_source = 6,
groups = {crumbly = 3, soil = 1}, groups = {crumbly = 3, soil = 1},
sounds = default.node_sound_dirt_defaults(), sounds = df_mapitems.sounds.dirt,
}) })
if df_mapitems.config.snareweed_damage then if df_mapitems.config.snareweed_damage then
@ -43,9 +41,9 @@ if df_mapitems.config.snareweed_damage then
end end
local c_water = minetest.get_content_id("default:water_source") local c_water = df_mapitems.node_id.water
local c_dirt = minetest.get_content_id("default:dirt") local c_dirt = df_mapitems.node_id.dirt
local c_stone = minetest.get_content_id("default:stone") local c_stone = df_mapitems.node_id.stone
local c_snareweed = minetest.get_content_id("df_mapitems:snareweed") local c_snareweed = minetest.get_content_id("df_mapitems:snareweed")
df_mapitems.place_snareweed = function(area, data, bi, param2_data) df_mapitems.place_snareweed = function(area, data, bi, param2_data)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 437 B

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

View File

@ -1,16 +1,66 @@
-- internationalization boilerplate local S = df_mapitems.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
minetest.register_node("df_mapitems:veinstone", { minetest.register_node("df_mapitems:veinstone", {
description = S("Veinstone"), description = S("Veinstone"),
_doc_items_longdesc = df_mapitems.doc.veinstone_desc, _doc_items_longdesc = df_mapitems.doc.veinstone_desc,
_doc_items_usagehelp = df_mapitems.doc.veinstone_usage, _doc_items_usagehelp = df_mapitems.doc.veinstone_usage,
tiles = {"default_stone.png^dfcaverns_veins.png"}, tiles = {df_mapitems.texture.stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1}, groups = {cracky = 3, stone = 1, lava_heatable = 1},
_magma_conduits_heats_to = "default:cobble", _magma_conduits_heats_to = df_mapitems.node_name.cobble,
is_ground_content = false, is_ground_content = false,
light_source = 2, light_source = 2,
drop = 'default:cobble', drop = "df_mapitems:veinstone",
sounds = default.node_sound_stone_defaults(), sounds = df_mapitems.sounds.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)
end,
})
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_mapitems.texture.stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, not_in_creative_inventory = 1},
_magma_conduits_heats_to = df_mapitems.node_name.cobble,
is_ground_content = false,
light_source = 8,
drop = "df_mapitems:veinstone",
sounds = df_mapitems.sounds.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
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,
})
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_mapitems.texture.stone .. "^dfcaverns_veins.png"},
groups = {cracky = 3, stone = 1, lava_heatable = 1, not_in_creative_inventory = 1},
_magma_conduits_heats_to = df_mapitems.node_name.cobble,
is_ground_content = false,
light_source = 1,
drop = "df_mapitems:veinstone",
sounds = df_mapitems.sounds.stone,
on_timer = function(pos, elapsed)
minetest.swap_node(pos, {name="df_mapitems:veinstone"})
end,
}) })

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_primordial_items.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------
-- Glownode and stalk -- Glownode and stalk
@ -15,8 +13,8 @@ minetest.register_node("df_primordial_items:glownode", {
sunlight_propagates = true, sunlight_propagates = true,
is_ground_content = false, is_ground_content = false,
groups = {cracky = 3, oddly_breakable_by_hand = 3}, groups = {cracky = 3, oddly_breakable_by_hand = 3},
sounds = default.node_sound_glass_defaults(), sounds = df_primordial_items.sounds.glass,
light_source = default.LIGHT_MAX, light_source = minetest.LIGHT_MAX,
}) })
minetest.register_node("df_primordial_items:glownode_stalk", { minetest.register_node("df_primordial_items:glownode_stalk", {
@ -27,7 +25,7 @@ minetest.register_node("df_primordial_items:glownode_stalk", {
paramtype2 = "facedir", paramtype2 = "facedir",
is_ground_content = false, is_ground_content = false,
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2}, groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
sounds = default.node_sound_wood_defaults(), sounds = df_primordial_items.sounds.wood,
on_place = minetest.rotate_node on_place = minetest.rotate_node
}) })
@ -46,8 +44,8 @@ minetest.register_node("df_primordial_items:glow_orb_hanging", {
is_ground_content = false, is_ground_content = false,
walkable = false, walkable = false,
light_source = 6, light_source = 6,
sounds = default.node_sound_leaves_defaults(), sounds = df_primordial_items.sounds.leaves,
use_texture_alpha = true, use_texture_alpha = "clip",
sunlight_propagates = true, sunlight_propagates = true,
}) })

View File

@ -0,0 +1,25 @@
--This file contains references to external dependencies, in hopes of making it easier to make those optional in the future
df_primordial_items.node_names = {}
df_primordial_items.node_names.dirt = "default:dirt"
df_primordial_items.node_names.dry_shrub = "default:dry_shrub"
df_primordial_items.node_names.dry_grass_3 = "default:dry_grass_3"
df_primordial_items.node_names.dry_grass_4 = "default:dry_grass_4"
df_primordial_items.node_names.junglewood = "default:junglewood"
df_primordial_items.sounds = {}
df_primordial_items.sounds.leaves = default.node_sound_leaves_defaults()
df_primordial_items.sounds.wood = default.node_sound_wood_defaults()
df_primordial_items.sounds.glass = default.node_sound_glass_defaults()
df_primordial_items.sounds.dirt = default.node_sound_dirt_defaults()
df_primordial_items.register_leafdecay = default.register_leafdecay
df_primordial_items.after_place_leaves = default.after_place_leaves
-- This stuff should only be used during initialization
minetest.after(0, function()
df_primordial_items.node_names = nil
df_primordial_items.sounds = nil
end)

View File

@ -2,6 +2,8 @@ if not minetest.get_modpath("doc") then
return return
end end
local S = df_primordial_items.S
df_primordial_items.doc.big_mushroom_desc = S("Compared to the behemoths found elsewhere in the deep places of the world, the giant mushrooms of the primordial jungles are on the smaller side - often overwhelmed by the green plants that grow in the mysterious light below. Still, they can become substantial resources.") df_primordial_items.doc.big_mushroom_desc = S("Compared to the behemoths found elsewhere in the deep places of the world, the giant mushrooms of the primordial jungles are on the smaller side - often overwhelmed by the green plants that grow in the mysterious light below. Still, they can become substantial resources.")
df_primordial_items.doc.big_mushroom_usage = S("The soft flesh of these large mushrooms is much less woody than other giant mushrooms, making it ill-suited to structural use. This makes it rather more nutritious, however.") df_primordial_items.doc.big_mushroom_usage = S("The soft flesh of these large mushrooms is much less woody than other giant mushrooms, making it ill-suited to structural use. This makes it rather more nutritious, however.")
@ -11,9 +13,9 @@ df_primordial_items.doc.dirt_with_mycelium_desc = S("Fungal fibers have infiltra
df_primordial_items.doc.dirt_with_mycelium_usage = S("When left uncultivated mycelial soil will sprout all manner of strange wild fungi.") df_primordial_items.doc.dirt_with_mycelium_usage = S("When left uncultivated mycelial soil will sprout all manner of strange wild fungi.")
df_primordial_items.doc.fern_desc = S("The dark-leaved ferns of the primordial jungle harken back to an earlier era of life in the world.") df_primordial_items.doc.fern_desc = S("The dark-leaved ferns of the primordial jungle harken back to an earlier era of life in the world.")
--df_primordial_items.doc.fern_usage = S("") --df_primordial_items.doc.fern_usage =
df_primordial_items.doc.grass_desc = S("These fibrous plants that grow in the deep appear similar to grass at a glance, but they are more closely related to horsetails - a form of vegetation from before the advent of modern plant forms. Ironically, pale cave wheat is more kin to surface grass than this is.") df_primordial_items.doc.grass_desc = S("These fibrous plants that grow in the deep appear similar to grass at a glance, but they are more closely related to horsetails - a form of vegetation from before the advent of modern plant forms. Ironically, pale cave wheat is more kin to surface grass than this is.")
--df_primordial_items.doc.grass_usage = S("") --df_primordial_items.doc.grass_usage =
df_primordial_items.doc.ivy_desc = S("Tangled weaves of ivy hang from the ceiling where there are wide enough gaps between the bright sources of light.") df_primordial_items.doc.ivy_desc = S("Tangled weaves of ivy hang from the ceiling where there are wide enough gaps between the bright sources of light.")
df_primordial_items.doc.ivy_usage = S("Ivy is climbable, if it hangs close enough to the ground it can serve as a path between floor and ceiling.") df_primordial_items.doc.ivy_usage = S("Ivy is climbable, if it hangs close enough to the ground it can serve as a path between floor and ceiling.")
@ -21,16 +23,16 @@ df_primordial_items.doc.roots_desc = S("Somewhere above an enormous plant has we
df_primordial_items.doc.roots_usage = S("These hanging roots are climbable.") df_primordial_items.doc.roots_usage = S("These hanging roots are climbable.")
df_primordial_items.doc.fungal_grass_desc = S("Questing fibers of fungal mycelium sometimes erupt from the soil and reach upward, driven by chemical cues to seek out nourishment above. They look a lot like white grass, at a glance.") df_primordial_items.doc.fungal_grass_desc = S("Questing fibers of fungal mycelium sometimes erupt from the soil and reach upward, driven by chemical cues to seek out nourishment above. They look a lot like white grass, at a glance.")
--df_primordial_items.doc.fungal_grass_usage = S("") --df_primordial_items.doc.fungal_grass_usage =
df_primordial_items.doc.tree_desc = S("The large woody plants of the primordial jungle are similar in appearance to the jungle trees of the surface, but are a result of convergent evolution from ancient cycad plants toward a common form.") df_primordial_items.doc.tree_desc = S("The large woody plants of the primordial jungle are similar in appearance to the jungle trees of the surface, but are a result of convergent evolution from ancient cycad plants toward a common form.")
df_primordial_items.doc.tree_usage = S("Like wood of the surface world, primordial jungle trees can be chopped and carved as building material or as fuel.") df_primordial_items.doc.tree_usage = S("Like wood of the surface world, primordial jungle trees can be chopped and carved as building material or as fuel.")
df_primordial_items.doc.tree_glowing_desc = S("The cracks in the bark of some primordial jungle trees become host to phosphorescent veins of symbiotic fungus.") df_primordial_items.doc.tree_glowing_desc = S("The cracks in the bark of some primordial jungle trees become host to phosphorescent veins of symbiotic fungus.")
df_primordial_items.doc.tree_glowing_usage = S("The glowing bark fungus doesn't extend into the wood of the trunk, resulting in surprisingly mundane building material when hewn.") df_primordial_items.doc.tree_glowing_usage = S("The glowing bark fungus doesn't extend into the wood of the trunk, resulting in surprisingly mundane building material when hewn.")
--df_primordial_items.doc.leaves_desc = S("") --df_primordial_items.doc.leaves_desc =
--df_primordial_items.doc.leaves_usage = S("") --df_primordial_items.doc.leaves_usage =
df_primordial_items.doc.glowing_leaves_desc = S("Some fronds of primordial jungle trees also become host to the phosphorescent fungus that creeps through cracks in the bark.") df_primordial_items.doc.glowing_leaves_desc = S("Some fronds of primordial jungle trees also become host to the phosphorescent fungus that creeps through cracks in the bark.")
--df_primordial_items.doc.glowing_leaves_usage = S("") --df_primordial_items.doc.glowing_leaves_usage =
df_primordial_items.doc.giant_fern_desc = S("The still air of these ancient caverns have allowed ferns to grow to prodigious sizes, where storms and rain would normally tear their weaker fronds off on the surface of the world.") df_primordial_items.doc.giant_fern_desc = S("The still air of these ancient caverns have allowed ferns to grow to prodigious sizes, where storms and rain would normally tear their weaker fronds off on the surface of the world.")
df_primordial_items.doc.giant_fern_usage = S("When a fern grows to such sizes its stem becomes dense enough to be used as a form of wood.") df_primordial_items.doc.giant_fern_usage = S("When a fern grows to such sizes its stem becomes dense enough to be used as a form of wood.")
@ -38,35 +40,41 @@ df_primordial_items.doc.giant_fern_usage = S("When a fern grows to such sizes it
df_primordial_items.doc.giant_hyphae_desc = S("Fungus in its purest form, these gigantic rope-like hyphae creep over the surface of soil and burrow in to feed wherever nutrients are sensed.") df_primordial_items.doc.giant_hyphae_desc = S("Fungus in its purest form, these gigantic rope-like hyphae creep over the surface of soil and burrow in to feed wherever nutrients are sensed.")
df_primordial_items.doc.giant_hyphae_usage = S("Much like a rope, hyphae have fibers inside that can be unraveled and used for a variety of crafts.") df_primordial_items.doc.giant_hyphae_usage = S("Much like a rope, hyphae have fibers inside that can be unraveled and used for a variety of crafts.")
df_primordial_items.doc.mycelial_fibers_desc = S("Fibers extracted from gigantic fungal hyphae.") df_primordial_items.doc.mycelial_fibers_desc = S("Fibers extracted from gigantic fungal hyphae.")
--df_primordial_items.doc.mycelial_fibers_usage = S("") --df_primordial_items.doc.mycelial_fibers_usage =
df_primordial_items.doc.mycelial_thread_desc = df_primordial_items.doc.mycelial_fibers_desc df_primordial_items.doc.mycelial_thread_desc = df_primordial_items.doc.mycelial_fibers_desc
--df_primordial_items.doc.mycelial_thread_usage = S("") --df_primordial_items.doc.mycelial_thread_usage =
df_primordial_items.doc.giant_mushroom_desc = S("The grandest of the great mushroom species can be found in the deepest primordial caverns. Their broad caps have hanging gills.") df_primordial_items.doc.giant_mushroom_desc = S("The grandest of the great mushroom species can be found in the deepest primordial caverns. Their broad caps have hanging gills.")
df_primordial_items.doc.giant_mushroom_usage = S("Much like the giant mushrooms of higher cavern layers, these can be carved into woody material for use as fuel or for building things. The grain of these primordial mushrooms is knurled.") df_primordial_items.doc.giant_mushroom_usage = S("Much like the giant mushrooms of higher cavern layers, these can be carved into woody material for use as fuel or for building things. The grain of these primordial mushrooms is knurled.")
--df_primordial_items.doc.gills_desc = S("") --df_primordial_items.doc.gills_desc =
--df_primordial_items.doc.gills_usage = S("") --df_primordial_items.doc.gills_usage =
--df_primordial_items.doc.glow_orb_desc = S("") --df_primordial_items.doc.glow_orb_desc =
--df_primordial_items.doc.glow_orb_usage = S("") --df_primordial_items.doc.glow_orb_usage =
--df_primordial_items.doc.glow_plant_desc = S("") --df_primordial_items.doc.glow_plant_desc =
--df_primordial_items.doc.glow_plant_usage = S("") --df_primordial_items.doc.glow_plant_usage =
--df_primordial_items.doc.glow_pod_desc = S("") --df_primordial_items.doc.glow_pod_desc =
--df_primordial_items.doc.glow_pod_usage = S("") --df_primordial_items.doc.glow_pod_usage =
-- The giant hanging fungal structures from the ceiling -- The giant hanging fungal structures from the ceiling
--df_primordial_items.doc.glownode_desc = S("") --df_primordial_items.doc.glownode_desc =
--df_primordial_items.doc.glownode_usage = S("") --df_primordial_items.doc.glownode_usage =
--df_primordial_items.doc.glownode_stalk_desc = S("") --df_primordial_items.doc.glownode_stalk_desc =
--df_primordial_items.doc.glownode_stalk_usage = S("") --df_primordial_items.doc.glownode_stalk_usage =
df_primordial_items.doc.packed_roots_desc = S("The steady light and unchanging growing conditions of the primordial caverns have led to great mountainous masses of plant material growing in particularly fertile spots, hardly identifiable as individual organisms.") df_primordial_items.doc.packed_roots_desc = S("The steady light and unchanging growing conditions of the primordial caverns have led to great mountainous masses of plant material growing in particularly fertile spots, hardly identifiable as individual organisms.")
df_primordial_items.doc.packed_roots_usage = S("The gnarled interwoven root-like foundations of this plant material is not useful as building material, but can serve as a fuel source.") df_primordial_items.doc.packed_roots_usage = S("The gnarled interwoven root-like foundations of this plant material is not useful as building material, but can serve as a fuel source.")
df_primordial_items.doc.plant_matter_desc = df_primordial_items.doc.packed_roots_desc df_primordial_items.doc.plant_matter_desc = df_primordial_items.doc.packed_roots_desc
df_primordial_items.doc.plant_matter_usage = df_primordial_items.doc.packed_roots_usage df_primordial_items.doc.plant_matter_usage = df_primordial_items.doc.packed_roots_usage
--df_primordial_items.doc.small_mushroom_desc = S("") --df_primordial_items.doc.small_mushroom_desc =
--df_primordial_items.doc.small_mushroom_usage = S("") --df_primordial_items.doc.small_mushroom_usage =
-- --
--df_primordial_items.doc.thorn_desc = S("") --df_primordial_items.doc.thorn_desc =
--df_primordial_items.doc.thorn_usage = S("") --df_primordial_items.doc.thorn_usage =
df_primordial_items.doc.primordial_fruit_desc = S("This strange fruit from the depths has absorbed healthful energies.")
df_primordial_items.doc.primordial_fruit_usage = S("Eating this fruit will improve your vitality.")
df_primordial_items.doc.glowtato_desc = S("A strangely glowing starchy nodule from a plant that grew deeper than any plant has a right to.")
df_primordial_items.doc.glowtato_usage = S("Much energy is contained in this tuber. It tastes surprisingly good, too. You could cook with it but any change in its pure state would only reduce its value.")

View File

@ -0,0 +1,23 @@
local S = df_primordial_items.S
minetest.register_craftitem("df_primordial_items:primordial_fruit", {
description = S("Primordial Fruit"),
_doc_items_longdesc = df_primordial_items.doc.primordial_fruit_desc,
_doc_items_usagehelp = df_primordial_items.doc.primordial_fruit_usage,
inventory_image = "dfcaverns_primordial_fruit.png",
groups = {food = 8},
sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}},
on_use = minetest.item_eat(8),
_hunger_ng = {heals = 8},
})
minetest.register_craftitem("df_primordial_items:glowtato", {
description = S("Glowtato"),
_doc_items_longdesc = df_primordial_items.doc.glowtato_desc,
_doc_items_usagehelp = df_primordial_items.doc.glowtato_usage,
inventory_image = "dfcaverns_glowtato.png",
sound = {eat = {name = "df_farming_chomp_crunch", gain = 1.0}},
groups = {food = 8, dfcaverns_cookable = 1},
on_use = minetest.item_eat(8),
_hunger_ng = {satiates = 8},
})

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_primordial_items.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
----------------------------------------------------------------------------------------------- -----------------------------------------------------------------------------------------------
-- Plants -- Plants
@ -20,8 +18,8 @@ minetest.register_node("df_primordial_items:fungal_grass_1", {
buildable_to = true, buildable_to = true,
is_ground_content = false, is_ground_content = false,
walkable = false, walkable = false,
sounds = default.node_sound_leaves_defaults(), sounds = df_primordial_items.sounds.leaves,
use_texture_alpha = true, use_texture_alpha = "clip",
sunlight_propagates = true, sunlight_propagates = true,
}) })
@ -39,8 +37,8 @@ minetest.register_node("df_primordial_items:fungal_grass_2", {
is_ground_content = false, is_ground_content = false,
walkable = false, walkable = false,
place_param2 = 3, place_param2 = 3,
sounds = default.node_sound_leaves_defaults(), sounds = df_primordial_items.sounds.leaves,
use_texture_alpha = true, use_texture_alpha = "clip",
sunlight_propagates = true, sunlight_propagates = true,
}) })
@ -60,8 +58,8 @@ minetest.register_node("df_primordial_items:glow_orb", {
is_ground_content = false, is_ground_content = false,
walkable = false, walkable = false,
light_source = 9, light_source = 9,
sounds = default.node_sound_leaves_defaults(), sounds = df_primordial_items.sounds.leaves,
use_texture_alpha = true, use_texture_alpha = "clip",
sunlight_propagates = true, sunlight_propagates = true,
}) })
@ -79,8 +77,8 @@ minetest.register_node("df_primordial_items:glow_orb_stalks", {
is_ground_content = false, is_ground_content = false,
walkable = false, walkable = false,
light_source = 6, light_source = 6,
sounds = default.node_sound_leaves_defaults(), sounds = df_primordial_items.sounds.leaves,
use_texture_alpha = true, use_texture_alpha = "clip",
sunlight_propagates = true, sunlight_propagates = true,
}) })
@ -94,12 +92,25 @@ minetest.register_node("df_primordial_items:glow_pods", {
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_fungal_plant = 1, light_sensitive_fungus = 13}, groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_fungal_plant = 1, light_sensitive_fungus = 13},
paramtype = "light", paramtype = "light",
drawtype = "plantlike", drawtype = "plantlike",
drop = {
max_items = 2,
items = {
{
rarity = 3,
items = {"df_primordial_items:primordial_fruit"},
},
{
rarity = 3,
items = {"df_primordial_items:primordial_fruit"},
},
},
},
buildable_to = true, buildable_to = true,
is_ground_content = false, is_ground_content = false,
walkable = false, walkable = false,
light_source = 6, light_source = 6,
sounds = default.node_sound_leaves_defaults(), sounds = df_primordial_items.sounds.leaves,
use_texture_alpha = true, use_texture_alpha = "clip",
sunlight_propagates = true, sunlight_propagates = true,
}) })
@ -114,14 +125,14 @@ minetest.register_node("df_primordial_items:dirt_with_mycelium", {
groups = {crumbly = 3, soil = 1}, groups = {crumbly = 3, soil = 1},
is_ground_content = false, is_ground_content = false,
paramtype = "light", paramtype = "light",
drops = "default:dirt", drops = df_primordial_items.node_names.dirt,
sounds = default.node_sound_dirt_defaults(), sounds = df_primordial_items.sounds.dirt,
light_source = 3, light_source = 3,
}) })
minetest.register_abm{ minetest.register_abm{
label = "df_primordial_items:dirt_with_mycelium_spread", label = "df_primordial_items:dirt_with_mycelium_spread",
nodenames = {"default:dirt"}, nodenames = {df_primordial_items.node_names.dirt},
neighbors = {"df_mapitems:dirt_with_mycelium"}, neighbors = {"df_mapitems:dirt_with_mycelium"},
interval = 60, interval = 60,
chance = 50, chance = 50,
@ -131,14 +142,14 @@ minetest.register_abm{
end, end,
} }
if minetest.get_modpath("trail") and trail and trail.register_trample_node then if minetest.get_modpath("footprints") then
local HARDPACK_PROBABILITY = minetest.settings:get("trail_hardpack_probability") or 0.5 -- Chance walked dirt/grass is worn and compacted to trail:trail. local HARDPACK_PROBABILITY = minetest.settings:get("footprints_hardpack_probability") or 0.9 -- Chance walked dirt/grass is worn and compacted to footprints:trail.
local HARDPACK_COUNT = minetest.settings:get("trail_hardpack_count") or 5 -- Number of times the above chance needs to be passed for soil to compact. local HARDPACK_COUNT = minetest.settings:get("footprints_hardpack_count") or 10 -- Number of times the above chance needs to be passed for soil to compact.
trail.register_trample_node("df_primordial_items:dirt_with_mycelium", { footprints.register_trample_node("df_primordial_items:dirt_with_mycelium", {
trampled_node_def_override = {description = S("Dirt with Primordial Mycelium and Footprint"),}, trampled_node_def_override = {description = S("Dirt with Primordial Mycelium and Footprint"),},
footprint_opacity = 196, footprint_opacity = 196,
hard_pack_node_name = "trail:trail", hard_pack_node_name = "footprints:trail",
hard_pack_probability = HARDPACK_PROBABILITY, hard_pack_probability = HARDPACK_PROBABILITY,
hard_pack_count = HARDPACK_COUNT, hard_pack_count = HARDPACK_COUNT,
}) })

View File

@ -1,6 +1,4 @@
-- internationalization boilerplate local S = df_primordial_items.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
------------------------------------------------------------------------------------ ------------------------------------------------------------------------------------
-- Nodes -- Nodes
@ -14,7 +12,7 @@ minetest.register_node("df_primordial_items:giant_fern_tree", {
is_ground_content = false, is_ground_content = false,
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
sounds = default.node_sound_wood_defaults(), sounds = df_primordial_items.sounds.wood,
sunlight_propagates = true, sunlight_propagates = true,
on_place = minetest.rotate_node, on_place = minetest.rotate_node,
}) })
@ -37,7 +35,7 @@ minetest.register_node("df_primordial_items:giant_fern_tree_slant_bottom", {
paramtype = "light", paramtype = "light",
drop = "df_primordial_items:giant_fern_tree", drop = "df_primordial_items:giant_fern_tree",
groups = {choppy = 2, tree = 1, oddly_breakable_by_hand=1, flammable = 2, fern_stem = 1}, groups = {choppy = 2, tree = 1, oddly_breakable_by_hand=1, flammable = 2, fern_stem = 1},
sounds = default.node_sound_wood_defaults(), sounds = df_primordial_items.sounds.wood,
is_ground_content = false, is_ground_content = false,
on_place = minetest.rotate_node, on_place = minetest.rotate_node,
selection_box = { selection_box = {
@ -74,7 +72,7 @@ minetest.register_node("df_primordial_items:giant_fern_tree_slant_top", {
paramtype = "light", paramtype = "light",
drop = "df_primordial_items:giant_fern_tree", drop = "df_primordial_items:giant_fern_tree",
groups = {choppy = 2, tree = 1, oddly_breakable_by_hand=1, flammable = 2, fern_stem = 1}, groups = {choppy = 2, tree = 1, oddly_breakable_by_hand=1, flammable = 2, fern_stem = 1},
sounds = default.node_sound_wood_defaults(), sounds = df_primordial_items.sounds.wood,
is_ground_content = false, is_ground_content = false,
on_place = minetest.rotate_node, on_place = minetest.rotate_node,
selection_box = { selection_box = {
@ -111,7 +109,7 @@ minetest.register_node("df_primordial_items:giant_fern_tree_slant_full", {
paramtype = "light", paramtype = "light",
drop = "df_primordial_items:giant_fern_tree", drop = "df_primordial_items:giant_fern_tree",
groups = {choppy = 2, tree = 1, oddly_breakable_by_hand=1, flammable = 2, fern_stem = 1}, groups = {choppy = 2, tree = 1, oddly_breakable_by_hand=1, flammable = 2, fern_stem = 1},
sounds = default.node_sound_wood_defaults(), sounds = df_primordial_items.sounds.wood,
is_ground_content = false, is_ground_content = false,
on_place = minetest.rotate_node, on_place = minetest.rotate_node,
selection_box = { selection_box = {
@ -138,7 +136,7 @@ minetest.register_node("df_primordial_items:fern_wood", {
tiles = {"default_wood.png^[multiply:#10FF10"}, tiles = {"default_wood.png^[multiply:#10FF10"},
is_ground_content = false, is_ground_content = false,
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1}, groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
sounds = default.node_sound_wood_defaults(), sounds = df_primordial_items.sounds.wood,
}) })
minetest.register_craft({ minetest.register_craft({
@ -163,10 +161,10 @@ minetest.register_node("df_primordial_items:giant_fern_leaves", {
buildable_to = true, buildable_to = true,
walkable = false, walkable = false,
waving = 2, waving = 2,
sounds = default.node_sound_leaves_defaults(), sounds = df_primordial_items.sounds.leaves,
use_texture_alpha = true, use_texture_alpha = "clip",
sunlight_propagates = true, sunlight_propagates = true,
after_place_node = default.after_place_leaves, after_place_node = df_primordial_items.after_place_leaves,
drop = { drop = {
max_items = 1, max_items = 1,
items = { items = {
@ -182,7 +180,7 @@ minetest.register_node("df_primordial_items:giant_fern_leaves", {
}, },
}) })
default.register_leafdecay({ df_primordial_items.register_leafdecay({
trunks = {"df_primordial_items:giant_fern_tree_slant_full", "df_primordial_items:giant_fern_tree_slant_top", "df_primordial_items:giant_fern_tree_slant_bottom", "df_primordial_items:giant_fern_tree"}, trunks = {"df_primordial_items:giant_fern_tree_slant_full", "df_primordial_items:giant_fern_tree_slant_top", "df_primordial_items:giant_fern_tree_slant_bottom", "df_primordial_items:giant_fern_tree"},
leaves = {"df_primordial_items:giant_fern_leaves"}, leaves = {"df_primordial_items:giant_fern_leaves"},
radius = 2, radius = 2,
@ -271,7 +269,7 @@ minetest.register_node("df_primordial_items:fern_sapling", {
inventory_image = "dfcaverns_jungle_fern_03.png", inventory_image = "dfcaverns_jungle_fern_03.png",
wield_image = "dfcaverns_jungle_fern_03.png", wield_image = "dfcaverns_jungle_fern_03.png",
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, sapling = 1, light_sensitive_fungus = 13}, groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, sapling = 1, light_sensitive_fungus = 13},
_dfcaverns_dead_node = "default:dry_shrub", _dfcaverns_dead_node = df_primordial_items.node_names.dry_shrub,
selection_box = { selection_box = {
type = "fixed", type = "fixed",
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16} fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
@ -281,8 +279,8 @@ minetest.register_node("df_primordial_items:fern_sapling", {
buildable_to = true, buildable_to = true,
is_ground_content = false, is_ground_content = false,
walkable = false, walkable = false,
sounds = default.node_sound_leaves_defaults(), sounds = df_primordial_items.sounds.leaves,
use_texture_alpha = true, use_texture_alpha = "clip",
sunlight_propagates = true, sunlight_propagates = true,
on_construct = function(pos) on_construct = function(pos)
if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") == 0 then if minetest.get_item_group(minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}).name, "soil") == 0 then

View File

@ -1,8 +1,6 @@
-- This file defines a type of root-like growth that spreads over the surface of the ground in a random web-like pattern -- This file defines a type of root-like growth that spreads over the surface of the ground in a random web-like pattern
-- internationalization boilerplate local S = df_primordial_items.S
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
-- hub_thickness -- the bit in the middle that's seen at the ends and corners of long hypha runs -- hub_thickness -- the bit in the middle that's seen at the ends and corners of long hypha runs
-- connector_thickness -- connector_thickness

View File

@ -1,14 +1,18 @@
df_primordial_items = {} df_primordial_items = {}
df_primordial_items.doc = {} df_primordial_items.doc = {}
local MP = minetest.get_modpath(minetest.get_current_modname()) local modname = minetest.get_current_modname()
df_primordial_items.S = minetest.get_translator(modname)
local modpath = minetest.get_modpath(modname)
dofile(MP.."/doc.lua") dofile(modpath.."/dependencies.lua")
dofile(MP.."/jungle_nodes.lua") dofile(modpath.."/doc.lua")
dofile(MP.."/jungle_tree.lua") dofile(modpath.."/jungle_nodes.lua")
dofile(MP.."/jungle_mushroom.lua") dofile(modpath.."/jungle_tree.lua")
dofile(MP.."/giant_fern.lua") dofile(modpath.."/jungle_mushroom.lua")
dofile(MP.."/fungal_nodes.lua") dofile(modpath.."/giant_fern.lua")
dofile(MP.."/ceiling_fungus.lua") dofile(modpath.."/fungal_nodes.lua")
dofile(MP.."/primordial_mushroom.lua") dofile(modpath.."/ceiling_fungus.lua")
dofile(MP.."/giant_mycelium.lua") dofile(modpath.."/primordial_mushroom.lua")
dofile(modpath.."/giant_mycelium.lua")
dofile(modpath.."/edibles.lua")

View File

@ -1,45 +0,0 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

Some files were not shown because too many files have changed in this diff Show More