Small stuff (#8)

* cave pearls and spindleshrooms (name subject to change) now are things. Not in mapgen yet.

* add the wandering "gas wisp" to light up some of the gas-filled caverns

* make wisps rarely spawned by gas explosions

* revamp spindlestems into a sort of mineral detector, add glowing extract bottles

* optimize pngs

* add gas wisps to mapgen

* add spindlestems to cavern level 1, most level 1 warrens are now lit up

* update internal names, adjust mineral detection range

* add cave pearls to some level 2 warrens and tunnels

* switch experimental simplecrafting_lib support to crafting mod

* Pearls don't grow on falling nodes

* put spindlestems with goblin caps, make them always grow red when near those

* bunch of documentation

* add castle coral to replace cave coral, which has been repurposed into column decoration

* documentation for cave coral, update some locale text

* add a recipe for cooking oil into paraffin

* add old bones to the underworld

* MIT license for bones_loot

* also cook black cap gills into paraffin, they're oily

* add salt crystals to the bloodthorn caverns, illuminating the floor

* documentation for salt crystals

* auto-generate minetestmapper colors.

need to update the spindlestem colours manually

* add spindlestem to fungiwood caverns too, and increase warren coverage

* in anticipation of eventually adding stuff below the Slade, making glowing pit erosion self-limiting.

* add a bit of displacement to the underside of the slade layer

* Unique images and names for cooking recipes.

* revamp bones loot

* add softer footsteps for some fungus types

* update mapgen_helper

* update cave coral screenshot

* mention glowing salts in bloodthorn caverns
This commit is contained in:
FaceDeer 2019-08-18 22:20:07 -05:00 committed by GitHub
parent 5e113ec200
commit 12919e9a16
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
184 changed files with 2787 additions and 521 deletions

22
bones_loot/LICENSE.txt Normal file
View File

@ -0,0 +1,22 @@
License for Code
----------------
Copyright (C) 2019 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.

3
bones_loot/depends.txt Normal file
View File

@ -0,0 +1,3 @@
bones
dungeon_loot?
intllib?

125
bones_loot/init.lua Normal file
View File

@ -0,0 +1,125 @@
-- internationalization boilerplate
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")
bones_loot = {}
local local_loot = {}
local local_loot_register = function(t)
if t.name ~= nil then
t = {t} -- single entry
end
for _, loot in ipairs(t) do
table.insert(local_loot, loot)
end
end
-- we could do this for the dungeon_loot registered loot table as well,
-- but best not to meddle in other mods' internals if it can be helped.
local clean_up_local_loot = function()
if local_loot == nil then return end
for i = #local_loot, 1, -1 do
if not minetest.registered_items[local_loot[i].name] then
table.remove(local_loot, i)
end
end
end
-- Uses same table format as dungeon_loot
-- eg, {name = "bucket:bucket_water", chance = 0.45, types = {"sandstone", "desert"}},
-- if dungeon_loot is installed it uses dungeon_loot's registration function directly.
if dungeon_loot_path then
bones_loot.register_loot = dungeon_loot.register
else
bones_loot.register_loot = local_loot_register
minetest.after(0, clean_up_local_loot)
end
local get_loot_list = function(pos, loot_type, exclusive_loot_type)
local loot_table
if dungeon_loot_path then
loot_table = dungeon_loot.registered_loot
else
loot_table = local_loot
end
local item_list = {}
local pos_y = pos.y
for _, loot in ipairs(loot_table) do
if loot.y == nil or (pos_y >= loot.y[1] and pos_y <= loot.y[2]) then
if (not exclusive_loot_type and loot.types == nil) or
(loot.types and table.indexof(loot.types, loot_type) ~= -1) then
table.insert(item_list, loot)
end
end
end
return item_list
end
local shuffle = function(tbl)
for i = #tbl, 2, -1 do
local rand = math.random(i)
tbl[i], tbl[rand] = tbl[rand], tbl[i]
end
return tbl
end
-- "exclusive" set to true means that loot table entries without a loot_type won't be considered.
bones_loot.get_loot = function(pos, loot_type, max_stacks, exclusive_loot_type)
local item_list = get_loot_list(pos, loot_type, exclusive_loot_type)
shuffle(item_list)
-- apply chances / randomized amounts and collect resulting items
local items = {}
for _, loot in ipairs(item_list) do
if math.random() <= loot.chance then
local itemdef = minetest.registered_items[loot.name]
if itemdef then
local amount = 1
if loot.count ~= nil then
amount = math.random(loot.count[1], loot.count[2])
end
if itemdef.tool_capabilities then
for n = 1, amount do
local wear = math.random(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear
table.insert(items, ItemStack({name = loot.name, wear = wear}))
max_stacks = max_stacks - 1
if max_stacks <= 0 then break end
end
else
local stack_max = itemdef.stack_max
while amount > 0 do
table.insert(items, ItemStack({name = loot.name, count = math.min(stack_max, amount)}))
amount = amount - stack_max
max_stacks = max_stacks - 1
if max_stacks <= 0 then break end
end
end
end
end
if max_stacks <= 0 then break end
end
return items
end
bones_loot.place_bones = function(pos, loot_type, max_stacks, infotext, exclusive_loot_type)
minetest.set_node(pos, {name="bones:bones", param2 = math.random(1,4)-1})
local meta = minetest.get_meta(pos)
if infotext == nil then
infotext = S("Someone's old bones")
end
meta:set_string("infotext", infotext)
if max_stacks and max_stacks > 0 then
local loot = bones_loot.get_loot(pos, loot_type, max_stacks, exclusive_loot_type)
local inv = meta:get_inventory()
inv:set_size("main", 8 * 4)
for _, item in ipairs(loot) do
inv:add_item("main", item)
end
end
end

45
bones_loot/intllib.lua Normal file
View File

@ -0,0 +1,45 @@
-- 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,22 @@
# 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 @@
@echo off
setlocal ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
cd ..
set LIST=
for /r %%X in (*.lua) do set LIST=!LIST! %%X
..\..\intllib\tools\xgettext.bat %LIST%

4
bones_loot/mod.conf Normal file
View File

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

View File

@ -6,4 +6,5 @@ df_mapitems
ice_sprites?
oil?
df_underworld_items?
magma_conduits?
magma_conduits?
bones_loot?

111
df_caverns/dungeon_loot.lua Normal file
View File

@ -0,0 +1,111 @@
if minetest.get_modpath("dungeon_loot") then
if df_caverns.config.enable_underworld then
dungeon_loot.register({
{name = "df_underworld_items:glow_amethyst", chance = 0.3, count = {1, 12}, y = {-32768, df_caverns.config.lava_sea_level}},
})
end
if df_caverns.config.enable_oil_sea and minetest.get_modpath("bucket") then
dungeon_loot.register({
{name = "oil:oil_bucket", chance = 0.5, count = {1, 3}, y = {-32768, df_caverns.config.ymax}},
})
end
if df_caverns.config.enable_lava_sea then
dungeon_loot.register({
{name = "df_mapitems:mese_crystal", chance = 0.25, count = {1, 5}, y = {-32768, df_caverns.config.sunless_sea_min}},
{name = "df_mapitems:glow_mese", chance = 0.1, count = {1, 3}, y = {-32768, df_caverns.config.sunless_sea_min}},
})
end
dungeon_loot.register({
{name = "df_farming:cave_wheat_seed", chance = 0.5, count = {1, 10}, y = {-32768, df_caverns.config.ymax}},
{name = "df_farming:cave_bread", chance = 0.8, count = {1, 10}, y = {-32768, df_caverns.config.ymax}},
{name = "df_farming:pig_tail_thread", chance = 0.7, count = {1, 10}, y = {-32768, df_caverns.config.ymax}},
{name = "df_farming:plump_helmet_spawn", chance = 0.4, count = {1, 8}, y = {-32768, df_caverns.config.ymax}},
{name = "df_farming:plump_helmet_4_picked", chance = 0.8, count = {1, 15}, y = {-32768, df_caverns.config.ymax}},
{name = "df_trees:glowing_bottle_red", chance = 0.6, count = {1, 20}, y = {-32768, df_caverns.config.ymax}},
{name = "df_trees:glowing_bottle_green", chance = 0.5, count = {1, 20}, y = {-32768, df_caverns.config.ymax}},
{name = "df_trees:glowing_bottle_cyan", chance = 0.4, count = {1, 15}, y = {-32768, df_caverns.config.ymax}},
{name = "df_trees:glowing_bottle_golden", chance = 0.3, count = {1, 5}, y = {-32768, df_caverns.config.ymax}},
{name = "df_farming:pig_tail_seed", chance = 0.5, count = {1, 10}, y = {-32768, df_caverns.config.level1_min}},
{name = "df_mapitems:med_crystal", chance = 0.2, count = {1, 2}, y = {-32768, df_caverns.config.level1_min}},
{name = "df_farming:dimple_cup_seed", chance = 0.3, count = {1, 10}, y = {-32768, df_caverns.config.level2_min}},
{name = "df_farming:quarry_bush_seed", chance = 0.3, count = {1, 5}, y = {-32768, df_caverns.config.level2_min}},
{name = "df_farming:sweet_pod_seed", chance = 0.3, count = {1, 5}, y = {-32768, df_caverns.config.level2_min}},
{name = "df_mapitems:big_crystal", chance = 0.1, count = {1, 1}, y = {-32768, df_caverns.config.level2_min}},
{name = "df_trees:torchspine_ember", chance = 0.3, count = {1, 3}, y = {-32768, df_caverns.config.level2_min}},
{name = "ice_sprites:ice_sprite_bottle", chance = 0.1, count = {1, 1}, y = {-32768, df_caverns.config.level2_min}},
})
end
if minetest.get_modpath("bones_loot") and df_caverns.config.enable_underworld then
bones_loot.register_loot({
{name = "binoculars:binoculars", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
{name = "boats:boat", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
{name = "bucket:bucket_empty", chance = 0.3, count = {1,1}, types = {"underworld_warrior"}},
{name = "fire:flint_and_steel", chance = 0.3, count = {1,2}, types = {"underworld_warrior"}},
{name = "flowers:tulip_black", chance = 0.01, count = {1,1}, types = {"underworld_warrior"}},
{name = "map:mapping_kit", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
{name = "screwdriver:screwdriver", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
-- don't give the player tnt:tnt, they can craft that from this if tnt is enabled for them
{name = "tnt:gunpowder", chance = 0.4, count = {1,10}, types = {"underworld_warrior"}},
{name = "tnt:tnt_stick", chance = 0.3, count = {1,6}, types = {"underworld_warrior"}},
{name = "vessels:steel_bottle", chance = 0.4, count = {1,3}, types = {"underworld_warrior"}},
{name = "vessels:glass_bottle", chance = 0.2, count = {1,2}, types = {"underworld_warrior"}},
{name = "vessels:glass_fragments", chance = 0.1, count = {1,4}, types = {"underworld_warrior"}},
{name = "default:book", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:paper", chance = 0.1, count = {1,6}, types = {"underworld_warrior"}},
{name = "default:skeleton_key", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:torch", chance = 0.75, count = {1,10}, types = {"underworld_warrior"}},
{name = "default:pick_bronze", chance = 0.15, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:pick_steel", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:pick_mese", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:pick_diamond", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:shovel_bronze", chance = 0.15, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:shovel_steel", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:shovel_mese", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:shovel_diamond", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:axe_bronze", chance = 0.3, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:axe_steel", chance = 0.5, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:axe_mese", chance = 0.15, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:axe_diamond", chance = 0.15, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:sword_bronze", chance = 0.5, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:sword_steel", chance = 0.75, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:sword_mese", chance = 0.35, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:sword_diamond", chance = 0.35, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:coal_lump", chance = 0.5, count = {1,5}, types = {"underworld_warrior"}},
{name = "default:mese_crystal", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:diamond", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:steel_ingot", chance = 0.2, count = {1,3}, types = {"underworld_warrior"}},
{name = "default:copper_ingot", chance = 0.1, count = {1,2}, types = {"underworld_warrior"}},
{name = "default:bronze_ingot", chance = 0.2, count = {1,5}, types = {"underworld_warrior"}},
{name = "default:gold_ingot", chance = 0.3, count = {1,3}, types = {"underworld_warrior"}},
{name = "default:mese_crystal_fragment", chance = 0.4, count = {1,5}, types = {"underworld_warrior"}},
{name = "default:obsidian_shard", chance = 0.4, count = {1,3}, types = {"underworld_warrior"}},
{name = "default:flint", chance = 0.3, count = {1,1}, types = {"underworld_warrior"}},
{name = "default:sign_wall_wood", chance = 0.1, count = {1,4}, types = {"underworld_warrior"}},
{name = "default:sign_wall_steel", chance = 0.1, count = {1,2}, types = {"underworld_warrior"}},
{name = "default:ladder_wood", chance = 0.5, count = {1,10}, types = {"underworld_warrior"}},
{name = "default:ladder_steel", chance = 0.2, count = {1,5}, types = {"underworld_warrior"}},
{name = "default:meselamp", chance = 0.1, count = {1,2}, types = {"underworld_warrior"}},
{name = "default:mese_post_light", chance = 0.25, count = {1,5}, types = {"underworld_warrior"}},
{name = "ice_sprites:ice_sprite_bottle", chance = 0.025, count = {1, 1}, types = {"underworld_warrior"}},
{name = "df_underworld_items:glow_amethyst", chance = 0.25, count = {1, 2}, types = {"underworld_warrior"}},
})
if df_caverns.config.enable_lava_sea then
bones_loot.register_loot({name = "df_mapitems:mese_crystal", chance = 0.25, count = {1, 2}, types = {"underworld_warrior"}})
end
end

View File

@ -15,3 +15,4 @@ dofile(modpath.."/sunless_sea.lua")
dofile(modpath.."/oil_sea.lua")
dofile(modpath.."/lava_sea.lua")
dofile(modpath.."/underworld.lua")
dofile(modpath.."/dungeon_loot.lua")

View File

@ -6,6 +6,8 @@ local c_dirt_moss = minetest.get_content_id("df_mapitems:dirt_with_cave_moss")
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_spindlestem_white = minetest.get_content_id("df_trees:spindlestem_cap_white")
local tower_cap_shrublist
local fungiwood_shrublist
@ -51,8 +53,12 @@ local tower_cap_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, d
if math.random() < 0.1 then
df_caverns.place_shrub(vi+ystride, area, data, data_param2, tower_cap_shrublist)
elseif math.random() < 0.01 and abs_cracks > 0.25 then
df_trees.spawn_tower_cap_vm(vi+ystride, area, data)
elseif abs_cracks > 0.25 then
if math.random() < 0.01 then
df_trees.spawn_tower_cap_vm(vi+ystride, area, data)
elseif math.random() < 0.04 then
df_trees.spawn_spindlestem_vm(vi+ystride, area, data, data_param2, c_spindlestem_white)
end
end
end
end
@ -71,6 +77,8 @@ local fungiwood_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, d
df_caverns.place_shrub(vi+ystride, area, data, data_param2, fungiwood_shrublist)
elseif math.random() < 0.03 and abs_cracks > 0.35 then
df_trees.spawn_fungiwood_vm(vi+ystride, area, data)
elseif math.random() < 0.04 then
df_trees.spawn_spindlestem_vm(vi+ystride, area, data, data_param2)
end
end
end
@ -203,6 +211,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
local flooded_caverns = nvals_cave[cave_area:transform(area, 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 flooded_caverns or biome_name ~= "barren" then
@ -211,6 +220,26 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
else
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false)
end
if biome_name ~= "barren" then
local cracks = nvals_cracks[index2d]
if cracks > 0.25 then
local rand = math.random()
if rand > cracks then
if math.random() < 0.25 then
data[vi] = c_dirt_moss
else
data[vi] = c_dirt
end
if data[vi+ystride] == c_air and math.random() < 0.25 then
df_caverns.place_shrub(vi+ystride, area, data, data_param2, tower_cap_shrublist)
end
end
if rand > cracks*2 then
df_trees.spawn_spindlestem_vm(vi+ystride, area, data, data_param2)
end
end
end
end
end

View File

@ -18,6 +18,8 @@ local wall_vein_perlin_params = {
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 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
@ -60,6 +62,8 @@ if minetest.get_modpath("df_farming") then
}
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 ystride = area.ystride
if abs_cracks < 0.1 then
@ -72,6 +76,8 @@ local goblin_cap_cavern_floor = function(abs_cracks, vert_rand, vi, area, data,
end
if math.random() < 0.1 then
df_caverns.place_shrub(vi+ystride, area, data, data_param2, goblin_cap_shrublist)
elseif math.random() < 0.02 then
df_trees.spawn_spindlestem_vm(vi+ystride, area, data, data_param2, c_red)
elseif math.random() < 0.015 then
df_trees.spawn_goblin_cap_vm(vi+ystride, area, data)
end
@ -243,21 +249,32 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
local flooded_caverns = nvals_cave[cave_area:transform(area, 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 flooded_caverns or biome_name ~= "barren" then
if flooded_caverns or biome_name ~= "barren" then
-- we're in flooded areas or are not barren
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
else
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, false)
end
if not flooded_caverns and (biome_name == "barren" or biome_name == "sporetree") and nvals_cracks[index2d] > 0.5 then
for i= 1, 4 do
if math.random() > 0.5 then
local index = vi-i*ystride
if data[index] == c_air then
df_mapitems.place_against_surface_vm(c_pearls, index, area, data, data_param2)
end
end
end
end
else
-- air pockets
local ystride = area.ystride
local cracks = nvals_cracks[index2d]
if cracks > 0.5 and data[vi-ystride] == c_water then
if cracks > 0.4 and data[vi-ystride] == c_water then
data[vi-ystride] = c_air
if cracks > 0.7 and data[vi-ystride*2] == c_water then
if cracks > 0.6 and data[vi-ystride*2] == c_water then
data[vi-ystride*2] = c_air
end
end
@ -289,6 +306,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
local flooded_caverns = nvals_cave[cave_area:transform(area, 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 flooded_caverns or biome_name ~= "barren" then
@ -297,8 +315,28 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
else
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, false)
end
if not flooded_caverns and (biome_name == "barren" or biome_name == "sporetree") and nvals_cracks[index2d] > 0.5 then
for i= 1, 4 do
if math.random() > 0.5 then
local index = vi-i*ystride
if data[index] == c_air then
df_mapitems.place_against_surface_vm(c_pearls, index, area, data, data_param2)
end
end
end
end
else
-- air pockets
local cracks = nvals_cracks[index2d]
if cracks > 0.4 and data[vi-ystride] == c_water then
data[vi-ystride] = c_air
if cracks > 0.6 and data[vi-ystride*2] == c_water then
data[vi-ystride*2] = c_air
end
end
end
-- else air pockets?
end
----------------------------------------------

View File

@ -20,6 +20,9 @@ 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")
@ -157,20 +160,28 @@ local nether_cap_cavern_ceiling = function(abs_cracks, vert_rand, vi, area, data
end
local blood_thorn_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2)
local ai = vi+area.ystride
if abs_cracks < 0.075 then
if vert_rand < 0.004 then
subterrane.big_stalagmite(vi+area.ystride, area, data, 6, 15, c_dry_flowstone, c_dry_flowstone, c_dry_flowstone)
subterrane.big_stalagmite(ai, area, data, 6, 15, c_dry_flowstone, c_dry_flowstone, c_dry_flowstone)
elseif data[vi] ~= air and math.random() < 0.5 then
data[vi] = c_salty_cobble
if data[ai] == c_air and math.random() < 0.25 then
data[ai] = c_salt_crystal
data_param2[ai] = math.random(1,4)-1
end
else
local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4
local height = math.floor(abs_cracks * 66)
subterrane.stalagmite(vi+area.ystride, area, data, data_param2, param2, height, df_mapitems.dry_stalagmite_ids)
subterrane.stalagmite(ai, area, data, data_param2, param2, height, df_mapitems.dry_stalagmite_ids)
end
elseif math.random() > abs_cracks + 0.66 then
df_trees.spawn_blood_thorn_vm(vi+area.ystride, area, data, data_param2)
df_trees.spawn_blood_thorn_vm(ai, area, data, data_param2)
data[vi] = c_desert_sand
else
if math.random() < 0.1 then
df_caverns.place_shrub(vi+area.ystride, area, data, data_param2, blood_thorn_shrublist)
df_caverns.place_shrub(ai, area, data, data_param2, blood_thorn_shrublist)
data[vi] = c_desert_sand
elseif math.random() > 0.25 then
data[vi] = c_desert_sand
@ -310,7 +321,16 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
else
-- bloodthorn ceiling
if abs_cracks < 0.075 then
df_caverns.stalactites(abs_cracks, vert_rand, vi, area, data, data_param2, false)
if data[vi] ~= air and math.random() < 0.5 then
data[vi] = c_salty_cobble
local bi = vi - area.ystride
if data[bi] == c_air and math.random() < 0.25 then
data[bi] = c_salt_crystal
data_param2[bi] = 19 + math.random(1,4)
end
else
df_caverns.stalactites(abs_cracks, vert_rand, vi, area, data, data_param2, false)
end
elseif abs_cracks > 0.75 and math.random() < 0.05 then
data[vi] = c_glow_ore
df_mapitems.place_big_crystal(data, data_param2, vi-area.ystride, true)

View File

@ -1 +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.
depends = default, subterrane, df_trees, df_mapitems
optional_depends = df_farming, ice_sprites, oil, df_underworld_items, magma_conduits, bones_loot

View File

@ -4,6 +4,7 @@ end
local c_oil = minetest.get_content_id("oil:oil_source")
local c_gas = minetest.get_content_id("mine_gas:gas")
local c_gas_wisp = minetest.get_content_id("mine_gas:gas_wisp")
local c_lava = minetest.get_content_id("default:lava_source")
local c_obsidian = minetest.get_content_id("default:obsidian")
@ -78,7 +79,11 @@ minetest.register_on_generated(function(minp, maxp, seed)
end
if y > floor_height and y < ceiling_height then
if y > median then
data[vi] = c_gas
if math.random() < 0.00025 and ((y < median + 3) or (y > ceiling_height - 3)) then
data[vi] = c_gas_wisp
else
data[vi] = c_gas
end
else
data[vi] = c_oil
end

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

View File

@ -108,6 +108,8 @@ local mushroom_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, da
df_trees.spawn_tower_cap_vm(vi+ystride, area, data)
elseif math.random() < 0.01 then
df_trees.spawn_goblin_cap_vm(vi+ystride, area, data)
elseif math.random() < 0.02 then
df_trees.spawn_spindlestem_vm(vi+ystride, area, data, data_param2)
end
end
end
@ -274,7 +276,7 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
if math.random() < 0.001 then
local iterations = math.random(1, 6)
df_mapitems.spawn_coral_pile(area, data, vi, iterations)
df_mapitems.spawn_cave_coral(area, data, vi+area.ystride, iterations)
df_mapitems.spawn_castle_coral(area, data, vi+area.ystride, iterations)
end
end
end
@ -372,6 +374,7 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
end
else
data[vi] = c_coral_table[math.random(1,3)]
data_param2[vi] = math.random(1,4)-1
end
end
end

View File

@ -1,7 +1,9 @@
if not df_caverns.config.enable_underworld then
if not df_caverns.config.enable_underworld or not minetest.get_modpath("df_underworld_items") then
return
end
local bones_loot_path = minetest.get_modpath("bones_loot")
local c_slade = minetest.get_content_id("df_underworld_items:slade")
local c_air = minetest.get_content_id("air")
local c_water = minetest.get_content_id("default:water_source")
@ -56,6 +58,8 @@ local wave_mult = 50
local y_max = median + 2*wave_mult + ceiling_displace + -2*ceiling_mult
local y_min = median - 2*wave_mult + floor_displace - 2*floor_mult
--df_caverns.config.underworld_min = y_min
---------------------------------------------------------
-- Buildings
@ -231,6 +235,17 @@ local perlin_pit = {
-------------------------------------
minetest.register_chatcommand("find_pit", {
params = "",
privs = {server=true},
decription = "find a nearby glowing pit",
func = function(name, param)
local player = minetest.get_player_by_name(name)
local pit = get_pit(player:get_pos())
minetest.chat_send_player(name, "Pit location: x=" .. math.floor(pit.location.x) .. " z=" .. math.floor(pit.location.z))
end,
})
minetest.register_on_generated(function(minp, maxp, seed)
@ -265,7 +280,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
if y <= floor_height then
if y < floor_height and y > y_min + math.abs(wave) / 5 then -- divide wave by five to smooth out the underside of the slade, we only want the interface to ripple a little down here
data[vi] = c_slade
if pit and
pit.location.x - radius_pit_max - radius_pit_variance < maxp.x and
@ -281,9 +296,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
local pit_value = nvals_pit[area_pit:index(x,y,z)] * pit.variance
local distance = vector.distance({x=x, y=y, z=z}, {x=pit.location.x, y=y, z=pit.location.z}) + pit_value
if distance < pit.radius -3 then
if y < y_min + 4 then -- make a layer of amethyst at the bottom of the pit to keep the plasma from digging infinitely downward.
data[vi] = c_amethyst
elseif y < median + floor_displace + wave - pit.depth then
if y < median + floor_displace + wave - pit.depth then
data[vi] = c_pit_plasma
else
data[vi] = c_air
@ -386,6 +399,40 @@ minetest.register_on_generated(function(minp, maxp, seed)
--write it to world
vm:write_to_map()
if bones_loot_path then
for i = 1, 30 do
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)
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
if floor_height < ceiling_height then
local zone = math.abs(nvals_zone[index2d])
if math.random() < zone then -- bones are more common in the built-up areas
local floor_node = minetest.get_node({x=x, y=floor_height, z=z})
local floor_node_def = minetest.registered_nodes[floor_node.name]
if floor_node_def and not floor_node_def.buildable_to then
local y = floor_height + 1
while y < ceiling_height do
local target_pos = {x=x, y=y, z=z}
local target_node = minetest.get_node(target_pos)
if target_node.name == "air" then
bones_loot.place_bones(target_pos, "underworld_warrior", math.random(3, 10), nil, true)
break
elseif target_node.name == "bones:bones" then
-- don't stack bones on bones, it looks silly
break
end
y = y + 1
end
end
end
end
end
end
local chunk_generation_time = math.ceil((os.clock() - t_start) * 1000) --grab how long it took
if chunk_generation_time < 1000 then
minetest.log("info", "[df_caverns] underworld mapblock generation took "..chunk_generation_time.." ms") --tell people how long

View File

@ -108,7 +108,7 @@ minetest.register_craftitem("df_farming:cave_bread", {
description = S("Dwarven Bread"),
_doc_items_longdesc = df_farming.doc.cave_bread_desc,
_doc_items_usagehelp = df_farming.doc.cave_bread_usage,
inventory_image = "dfcaverns_bread.png",
inventory_image = "dfcaverns_prepared_food13x16.png",
on_use = minetest.item_eat(5),
groups = {flammable = 2, food = 5},
})

View File

@ -2,97 +2,127 @@
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local register_cooking_recipes = function(prefix, item, name, returns)
minetest.register_craftitem("df_farming:"..item.."_biscuit", {
description = S("@1 Biscuit", name),
_doc_items_longdesc = df_farming.doc.biscuit_desc,
_doc_items_usagehelp = df_farming.doc.biscuit_usage,
inventory_image = "dfcaverns_biscuit.png",
local register_cooking_recipes = function(def)
local prefix = def.prefix
local item = def.item
local replacements = def.replacements
minetest.register_craftitem("df_farming:"..item.."_simple_meal", {
description = def.simple.name,
_doc_items_longdesc = df_farming.doc.simple_meal_desc,
_doc_items_usagehelp = df_farming.doc.simple_meal_usage,
inventory_image = def.simple.image,
on_use = minetest.item_eat(4),
groups = {food = 4},
})
minetest.register_craftitem("df_farming:"..item.."_stew", {
description = S("@1 Stew", name),
_doc_items_longdesc = df_farming.doc.stew_desc,
_doc_items_usagehelp = df_farming.doc.stew_usage,
inventory_image = "dfcaverns_stew.png",
minetest.register_craftitem("df_farming:"..item.."_medium_meal", {
description = def.medium.name,
_doc_items_longdesc = df_farming.doc.medium_meal_desc,
_doc_items_usagehelp = df_farming.doc.medium_meal_usage,
inventory_image = def.medium.image,
on_use = minetest.item_eat(6),
groups = {food = 6},
})
minetest.register_craftitem("df_farming:"..item.."_roast", {
description = S("@1 Roast", name),
_doc_items_longdesc = df_farming.doc.roast_desc,
_doc_items_usagehelp = df_farming.doc.roast_usage,
inventory_image = "dfcaverns_roast.png",
minetest.register_craftitem("df_farming:"..item.."_complex_meal", {
description = def.complex.name,
_doc_items_longdesc = df_farming.doc.complex_meal_desc,
_doc_items_usagehelp = df_farming.doc.complex_meal_usage,
inventory_image = def.complex.image,
on_use = minetest.item_eat(8),
groups = {food = 8},
})
minetest.register_alias("dfcaverns:"..item.."_biscuit", "df_farming:"..item.."_biscuit")
minetest.register_alias("dfcaverns:"..item.."_stew", "df_farming:"..item.."_stew")
minetest.register_alias("dfcaverns:"..item.."_roast", "df_farming:"..item.."_roast")
minetest.register_alias("dfcaverns:"..item.."_biscuit", "df_farming:"..item.."_simple_meal")
minetest.register_alias("dfcaverns:"..item.."_stew", "df_farming:"..item.."_medium_meal")
minetest.register_alias("dfcaverns:"..item.."_roast", "df_farming:"..item.."_complex_meal")
minetest.register_alias("df_farming:"..item.."_biscuit", "df_farming:"..item.."_simple_meal")
minetest.register_alias("df_farming:"..item.."_stew", "df_farming:"..item.."_medium_meal")
minetest.register_alias("df_farming:"..item.."_roast", "df_farming:"..item.."_complex_meal")
if minetest.get_modpath("simplecrafting_lib") then
simplecrafting_lib.register("cooking", {
input = {
["group:dfcaverns_cookable"] = 1,
[prefix..":"..item] = 1,
},
output = {
["df_farming:"..item.."_biscuit"] = 1,
},
cooktime = 5.0,
})
simplecrafting_lib.register("cooking", {
input = {
["group:dfcaverns_cookable"] = 2,
[prefix..":"..item] = 1,
},
output = {
["df_farming:"..item.."_stew"] = 1,
},
cooktime = 10.0,
})
simplecrafting_lib.register("cooking", {
input = {
["group:dfcaverns_cookable"] = 3,
[prefix..":"..item] = 1,
},
output = {
["df_farming:"..item.."_roast"] = 1,
},
cooktime = 15.0,
})
else
minetest.register_craft({
type = "shapeless",
output = "df_farming:"..item.."_biscuit",
recipe = {"group:dfcaverns_cookable", prefix..":"..item},
replacements = returns
})
minetest.register_craft({
type = "shapeless",
output = "df_farming:"..item.."_stew",
recipe = {"group:dfcaverns_cookable", "group:dfcaverns_cookable", prefix..":"..item},
replacements = returns
})
minetest.register_craft({
type = "shapeless",
output = "df_farming:"..item.."_roast",
recipe = {"group:dfcaverns_cookable", "group:dfcaverns_cookable", "group:dfcaverns_cookable", prefix..":"..item},
replacements = returns
})
end
minetest.register_craft({
type = "shapeless",
output = "df_farming:"..item.."_simple_meal",
recipe = {"group:dfcaverns_cookable", prefix..":"..item},
replacements = replacements
})
minetest.register_craft({
type = "shapeless",
output = "df_farming:"..item.."_medium_meal",
recipe = {"group:dfcaverns_cookable", "group:dfcaverns_cookable", prefix..":"..item},
replacements = replacements
})
minetest.register_craft({
type = "shapeless",
output = "df_farming:"..item.."_complex_meal",
recipe = {"group:dfcaverns_cookable", "group:dfcaverns_cookable", "group:dfcaverns_cookable", prefix..":"..item},
replacements = replacements
})
end
register_cooking_recipes("df_farming", "cave_flour", S("Cave Wheat Flour"))
register_cooking_recipes("df_farming", "cave_wheat_seed", S("Cave Wheat Seed"))
register_cooking_recipes("df_farming", "sweet_pod_seed", S("Sweet Pod Spore"))
register_cooking_recipes("df_farming", "sugar", S("Sweet Pod Sugar"))
register_cooking_recipes("group", "plump_helmet", S("Plump Helmet"))
register_cooking_recipes("df_farming", "plump_helmet_spawn", S("Plump Helmet Spawn"))
register_cooking_recipes("df_farming", "quarry_bush_leaves", S("Quarry Bush Leaf"))
register_cooking_recipes("df_farming", "quarry_bush_seed", S("Rock Nut"))
register_cooking_recipes("df_farming", "dimple_cup_seed", S("Dimple Cup Spore"))
register_cooking_recipes("df_farming", "pig_tail_seed", S("Pig Tail Spore"))
register_cooking_recipes("df_farming", "dwarven_syrup_bucket", S("Dwarven Syrup"), {{"df_farming:dwarven_syrup_bucket", "bucket:bucket_empty"}})
--{
-- prefix =,
-- item =,
-- replacements =,
-- simple = {name = , image = },
-- medium = {name = , image = },
-- complex = {name = , image = },
--}
register_cooking_recipes({prefix="df_farming", item="cave_flour",
simple = {name=S("Cave Wheat Flour Biscuit"), image="dfcaverns_prepared_food08x16.png"},
medium = {name=S("Cave Wheat Flour Bun"), image="dfcaverns_prepared_food11x16.png"},
complex = {name=S("Cave Wheat Flour Pancake"), image="dfcaverns_prepared_food07x16.png"},
})
register_cooking_recipes({prefix="df_farming", item="cave_wheat_seed",
simple = {name=S("Cave Wheat Seed Loaf"), image="dfcaverns_prepared_food17x16.png"},
medium = {name=S("Cave Wheat Seed Puffs"), image="dfcaverns_prepared_food33x16.png"},
complex = {name=S("Cave Wheat Seed Risotto"), image="dfcaverns_prepared_food14x16.png"},
})
register_cooking_recipes({prefix="df_farming", item="sweet_pod_seed",
simple = {name=S("Sweet Pod Spore Dumplings"), image="dfcaverns_prepared_food09x16.png"},
medium = {name=S("Sweet Pod Spore Single Crust Pie"), image="dfcaverns_prepared_food05x16.png"},
complex = {name=S("Sweet Pod Spore Brule"), image="dfcaverns_prepared_food22x16.png"},
})
register_cooking_recipes({prefix="df_farming", item="sugar",
simple = {name=S("Sweet Pod Sugar Cookie"), image="dfcaverns_prepared_food02x16.png"},
medium = {name=S("Sweet Pod Sugar Gingerbread"), image="dfcaverns_prepared_food21x16.png"},
complex = {name=S("Sweet Pod Sugar Roll"), image="dfcaverns_prepared_food25x16.png"},
})
register_cooking_recipes({prefix="group", item="plump_helmet",
simple = {name=S("Plump Helmet Mince"), image="dfcaverns_prepared_food15x16.png"},
medium = {name=S("Plump Helmet Stalk Sausage"), image="dfcaverns_prepared_food18x16.png"},
complex = {name=S("Plump Helmet Roast"), image="dfcaverns_prepared_food04x16.png"},
})
register_cooking_recipes({prefix="df_farming", item="plump_helmet_spawn",
simple = {name=S("Plump Helmet Spawn Soup"), image="dfcaverns_prepared_food10x16.png"},
medium = {name=S("Plump Helmet Spawn Jambalaya"), image="dfcaverns_prepared_food01x16.png"},
complex = {name=S("Plump Helmet Sprout Stew"), image="dfcaverns_prepared_food26x16.png"},
})
register_cooking_recipes({prefix="df_farming", item="quarry_bush_leaves",
simple = {name=S("Quarry Bush Leaf Spicy Bun"), image="dfcaverns_prepared_food23x16.png"},
medium = {name=S("Quarry Bush Leaf Croissant"), image="dfcaverns_prepared_food29x16.png"},
complex = {name=S("Stuffed Quarry Bush Leaf"), image="dfcaverns_prepared_food27x16.png"},
})
register_cooking_recipes({prefix="df_farming", item="quarry_bush_seed",
simple = {name=S("Rock Nut Bread"), image="dfcaverns_prepared_food16x16.png"},
medium = {name=S("Rock Nut Cookie"), image="dfcaverns_prepared_food07x16.png"},
complex = {name=S("Rock Nut Cake"), image="dfcaverns_prepared_food03x16.png"},
})
register_cooking_recipes({prefix="df_farming", item="dimple_cup_seed",
simple = {name=S("Dimple Cup Spore Flatbread"), image="dfcaverns_prepared_food12x16.png"},
medium = {name=S("Dimple Cup Spore Scone"), image="dfcaverns_prepared_food32x16.png"},
complex = {name=S("Dimple Cup Spore Roll"), image="dfcaverns_prepared_food31x16.png"},
})
register_cooking_recipes({prefix="df_farming", item="pig_tail_seed",
simple = {name=S("Pig Tail Spore Sandwich"), image="dfcaverns_prepared_food20x16.png"},
medium = {name=S("Pig Tail Spore Tofu"), image="dfcaverns_prepared_food30x16.png"},
complex = {name=S("Pig Tail Spore Casserole"), image="dfcaverns_prepared_food34x16.png"},
})
register_cooking_recipes({prefix="df_farming", item="dwarven_syrup_bucket", replacements={{"df_farming:dwarven_syrup_bucket", "bucket:bucket_empty"}},
simple = {name=S("Dwarven Syrup Taffy"), image="dfcaverns_prepared_food19x16.png"},
medium = {name=S("Dwarven Syrup Jellies"), image="dfcaverns_prepared_food06x16.png"},
complex = {name=S("Dwarven Syrup Delight"), image="dfcaverns_prepared_food24x16.png"},
})
-- dfcaverns_prepared_food28 is currently unused
-- dfcaverns_prepared_food13 is used for dwarven bread

View File

@ -6,4 +6,4 @@ dynamic_liquid?
wool?
intllib?
doc?
simplecrafting_lib?
crafting?

View File

@ -8,12 +8,12 @@ end
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
df_farming.doc.biscuit_desc = S("A meal made from the admixture of two ingredients, biscuits keep well but are not a rich source of nutrients.")
df_farming.doc.biscuit_usage = nil
df_farming.doc.stew_desc = S("Stews mix three ingredients together. They're more wholesome than biscuits, packing more nutrition into a single serving.")
df_farming.doc.stew_usage = nil
df_farming.doc.roast_desc = S("Four finely minced ingredients combine into a roast, which serves as a full meal.")
df_farming.doc.roast_usage = nil
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.medium_meal_desc = S("A meal made from three ingredients mixed together. They're more wholesome, packing more nutrition into a single serving.")
df_farming.doc.medium_meal_usage = nil
df_farming.doc.complex_meal_desc = S("Four finely minced ingredients combine into a fine, full meal.")
df_farming.doc.complex_meal_usage = nil
-- Plants

View File

@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: dfcaverns module's Italian locale\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-12-23 00:27-0700\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"
@ -19,104 +19,209 @@ msgstr ""
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: df_farming\cave_wheat.lua:10
#: df_farming\cave_wheat.lua:70
#: df_farming\cave_wheat.lua:87
msgid "Cave Wheat"
msgstr "Grano di caverna"
#: df_farming\cave_wheat.lua:62
#: df_farming\cooking.lua:89
#: df_farming\cave_wheat.lua:79
msgid "Cave Wheat Seed"
msgstr "Seme di grano di caverna"
#: df_farming\cave_wheat.lua:83
#: df_farming\cooking.lua:88
#: df_farming\cave_wheat.lua:100
msgid "Cave Wheat Flour"
msgstr "Farina di grano di caverna"
#: df_farming\cave_wheat.lua:91
#: df_farming\cave_wheat.lua:108
msgid "Dwarven Bread"
msgstr "Pane nanico"
#: df_farming\cooking.lua:7
msgid "@1 Biscuit"
msgstr "Biscotto di @1"
#: df_farming\cooking.lua:72
#, fuzzy
msgid "Cave Wheat Flour Biscuit"
msgstr "Farina di grano di caverna"
#: df_farming\cooking.lua:15
msgid "@1 Stew"
msgstr "Stufato di @1"
#: df_farming\cooking.lua:73
#, fuzzy
msgid "Cave Wheat Flour Bun"
msgstr "Farina di grano di caverna"
#: df_farming\cooking.lua:23
msgid "@1 Roast"
msgstr "Arrosto di @1"
#: df_farming\cooking.lua:74
#, fuzzy
msgid "Cave Wheat Flour Pancake"
msgstr "Farina di grano di caverna"
#: df_farming\cooking.lua:90
msgid "Sweet Pod Spore"
#: 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:91
#: df_farming\sweet_pod.lua:84
msgid "Sweet Pod Sugar"
#: 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
#: 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"
#, fuzzy
msgid "Plump Helmet Mince"
msgstr "Elmo rotondo"
#: df_farming\cooking.lua:93
#: df_farming\plump_helmet.lua:61
msgid "Plump Helmet Spawn"
#, fuzzy
msgid "Plump Helmet Stalk Sausage"
msgstr "Prole di elmo rotondo"
#: df_farming\cooking.lua:94
msgid "Quarry Bush Leaf"
msgstr "Foglia di cespuglio di cava"
#: df_farming\cooking.lua:95
msgid "Rock Nut"
msgstr "Noce di roccia"
#: df_farming\cooking.lua:96
msgid "Dimple Cup Spore"
msgstr "Spora di coppa increspata"
#, fuzzy
msgid "Plump Helmet Roast"
msgstr "Elmo rotondo"
#: df_farming\cooking.lua:97
#: df_farming\pig_tail.lua:62
msgid "Pig Tail Spore"
msgstr "Spora di coda di maiale"
#, fuzzy
msgid "Plump Helmet Spawn Soup"
msgstr "Prole di elmo rotondo"
#: df_farming\cooking.lua:98
msgid "Dwarven Syrup"
#, 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:56
#: 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, biscuits keep well but "
"are not a rich source of nutrients."
"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 ""
"Stews mix three ingredients together. They're more wholesome than biscuits, "
"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 roast, which serves as a full "
"meal."
msgid "Four finely minced ingredients combine into a fine, full meal."
msgstr ""
#: df_farming\doc.lua:21
@ -287,7 +392,11 @@ msgstr ""
msgid "Pig Tail"
msgstr "Coda di maiale"
#: df_farming\pig_tail.lua:70
#: 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"
@ -295,19 +404,31 @@ msgstr "Filo di coda di maiale"
msgid "Dead Fungus"
msgstr "Fungo morto"
#: df_farming\plants.lua:36
#: 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:62
#: df_farming\quarry_bush.lua:75
msgid "Rock Nuts"
msgstr "Noci di roccia"
#: df_farming\quarry_bush.lua:71
#: df_farming\quarry_bush.lua:84
msgid "Quarry Bush Leaves"
msgstr "Foglie di cespuglio di cava"
@ -315,22 +436,35 @@ msgstr "Foglie di cespuglio di cava"
msgid "Sweet Pod"
msgstr "Baccello dolce"
#: df_farming\sweet_pod.lua:60
#: df_farming\sweet_pod.lua:74
msgid "Sweet Pod Spores"
msgstr "Spore di baccello dolce"
#: df_farming\sweet_pod.lua:68
#: df_farming\sweet_pod.lua:82
msgid "Sweet Pods"
msgstr "Baccelli dolci"
#: df_farming\sweet_pod.lua:107
#: 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:155
#: df_farming\sweet_pod.lua:186
msgid "Flowing Dwarven Syrup"
msgstr "Sciroppo nanico che scorre"
#: df_farming\sweet_pod.lua:208
#: 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

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-12-23 00:27-0700\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"
@ -18,104 +18,176 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n"
#: df_farming\cave_wheat.lua:10
#: df_farming\cave_wheat.lua:70
#: df_farming\cave_wheat.lua:87
msgid "Cave Wheat"
msgstr ""
#: df_farming\cave_wheat.lua:62
#: df_farming\cooking.lua:89
#: df_farming\cave_wheat.lua:79
msgid "Cave Wheat Seed"
msgstr ""
#: df_farming\cave_wheat.lua:83
#: df_farming\cooking.lua:88
#: df_farming\cave_wheat.lua:100
msgid "Cave Wheat Flour"
msgstr ""
#: df_farming\cave_wheat.lua:91
#: df_farming\cave_wheat.lua:108
msgid "Dwarven Bread"
msgstr ""
#: df_farming\cooking.lua:7
msgid "@1 Biscuit"
#: df_farming\cooking.lua:72
msgid "Cave Wheat Flour Biscuit"
msgstr ""
#: df_farming\cooking.lua:15
msgid "@1 Stew"
#: df_farming\cooking.lua:73
msgid "Cave Wheat Flour Bun"
msgstr ""
#: df_farming\cooking.lua:23
msgid "@1 Roast"
#: df_farming\cooking.lua:74
msgid "Cave Wheat Flour Pancake"
msgstr ""
#: df_farming\cooking.lua:90
msgid "Sweet Pod Spore"
#: df_farming\cooking.lua:77
msgid "Cave Wheat Seed Loaf"
msgstr ""
#: df_farming\cooking.lua:91
#: df_farming\sweet_pod.lua:84
msgid "Sweet Pod Sugar"
#: 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
#: 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"
msgid "Plump Helmet Mince"
msgstr ""
#: df_farming\cooking.lua:93
#: df_farming\plump_helmet.lua:61
msgid "Plump Helmet Spawn"
msgid "Plump Helmet Stalk Sausage"
msgstr ""
#: df_farming\cooking.lua:94
msgid "Quarry Bush Leaf"
msgstr ""
#: df_farming\cooking.lua:95
msgid "Rock Nut"
msgstr ""
#: df_farming\cooking.lua:96
msgid "Dimple Cup Spore"
msgid "Plump Helmet Roast"
msgstr ""
#: df_farming\cooking.lua:97
#: df_farming\pig_tail.lua:62
msgid "Pig Tail Spore"
msgid "Plump Helmet Spawn Soup"
msgstr ""
#: df_farming\cooking.lua:98
msgid "Dwarven Syrup"
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:56
#: 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, biscuits keep well but "
"are not a rich source of nutrients."
"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 ""
"Stews mix three ingredients together. They're more wholesome than biscuits, "
"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 roast, which serves as a full "
"meal."
msgid "Four finely minced ingredients combine into a fine, full meal."
msgstr ""
#: df_farming\doc.lua:21
@ -286,7 +358,11 @@ msgstr ""
msgid "Pig Tail"
msgstr ""
#: df_farming\pig_tail.lua:70
#: df_farming\pig_tail.lua:78
msgid "Pig Tail Spore"
msgstr ""
#: df_farming\pig_tail.lua:86
msgid "Pig tail thread"
msgstr ""
@ -294,19 +370,31 @@ msgstr ""
msgid "Dead Fungus"
msgstr ""
#: df_farming\plants.lua:36
#: 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:62
#: df_farming\quarry_bush.lua:75
msgid "Rock Nuts"
msgstr ""
#: df_farming\quarry_bush.lua:71
#: df_farming\quarry_bush.lua:84
msgid "Quarry Bush Leaves"
msgstr ""
@ -314,22 +402,26 @@ msgstr ""
msgid "Sweet Pod"
msgstr ""
#: df_farming\sweet_pod.lua:60
#: df_farming\sweet_pod.lua:74
msgid "Sweet Pod Spores"
msgstr ""
#: df_farming\sweet_pod.lua:68
#: df_farming\sweet_pod.lua:82
msgid "Sweet Pods"
msgstr ""
#: df_farming\sweet_pod.lua:107
#: 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:155
#: df_farming\sweet_pod.lua:186
msgid "Flowing Dwarven Syrup"
msgstr ""
#: df_farming\sweet_pod.lua:208
#: df_farming\sweet_pod.lua:239
msgid "Dwarven Syrup Bucket"
msgstr ""

View File

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

View File

@ -239,16 +239,14 @@ if minetest.get_modpath("bucket") then
S("Dwarven Syrup Bucket")
)
if minetest.get_modpath("simplecrafting_lib") then
simplecrafting_lib.register("cooking", {
if minetest.get_modpath("crafting") then
simplecrafting_lib.register("furnace", {
input = {
["bucket:bucket_empty"] = 1,
["df_farming:sugar"] = 3,
["simplecrafting_lib:heat"] = 5,
},
output = {
["df_farming:dwarven_syrup_bucket"] = 1,
},
cooktime = 5.0,
output = "df_farming:dwarven_syrup_bucket",
})
else
minetest.register_craft({

Binary file not shown.

Before

Width:  |  Height:  |  Size: 550 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 391 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 174 B

After

Width:  |  Height:  |  Size: 173 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 188 B

After

Width:  |  Height:  |  Size: 185 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 211 B

After

Width:  |  Height:  |  Size: 207 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 267 B

After

Width:  |  Height:  |  Size: 208 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 383 B

After

Width:  |  Height:  |  Size: 380 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 634 B

After

Width:  |  Height:  |  Size: 633 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 818 B

After

Width:  |  Height:  |  Size: 802 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 820 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 928 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 804 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 666 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 908 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 757 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 706 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 904 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 993 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 999 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 873 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 773 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 623 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 773 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 840 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 533 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 978 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 759 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 718 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 782 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 832 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 694 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 927 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 705 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 595 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 818 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 544 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 888 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 746 B

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