-
Notifications
You must be signed in to change notification settings - Fork 11
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* 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
- Loading branch information
Showing
184 changed files
with
2,781 additions
and
515 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
bones | ||
dungeon_loot? | ||
intllib? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 <[email protected]>\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 "" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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% |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -6,4 +6,5 @@ df_mapitems | |
ice_sprites? | ||
oil? | ||
df_underworld_items? | ||
magma_conduits? | ||
magma_conduits? | ||
bones_loot? |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.