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
113
df_primordial_items/ceiling_fungus.lua
Normal file
@ -0,0 +1,113 @@
|
||||
-- internationalization boilerplate
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(MP.."/intllib.lua")
|
||||
|
||||
---------------------------------------------------------------------------------------
|
||||
-- Glownode and stalk
|
||||
|
||||
minetest.register_node("df_primordial_items:glownode", {
|
||||
description = S("Primordial Fungal Lantern"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glownode_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glownode_usage,
|
||||
drawtype = "glasslike",
|
||||
tiles = {"dfcaverns_mush_glownode.png"},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = false,
|
||||
groups = {cracky = 3, oddly_breakable_by_hand = 3},
|
||||
sounds = default.node_sound_glass_defaults(),
|
||||
light_source = default.LIGHT_MAX,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:glownode_stalk", {
|
||||
description = S("Primordial Fungal Lantern Stalk"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glownode_stalk_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glownode_stalk_usage,
|
||||
tiles = {"dfcaverns_mush_stalk_top.png", "dfcaverns_mush_stalk_top.png", "dfcaverns_mush_stalk_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:glow_orb_hanging", {
|
||||
description = S("Primordial Fungal Orb"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glow_orb_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glow_orb_usage,
|
||||
tiles = {"dfcaverns_mush_orb_vert.png"},
|
||||
inventory_image = "dfcaverns_mush_orb_vert.png",
|
||||
wield_image = "dfcaverns_mush_orb_vert.png",
|
||||
groups = {snappy = 3, flora = 1, flammable = 1},
|
||||
paramtype = "light",
|
||||
paramtype2 = "degrotate",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
light_source = 6,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
local c_stalk = minetest.get_content_id("df_primordial_items:glownode_stalk")
|
||||
local c_node = minetest.get_content_id("df_primordial_items:glownode")
|
||||
local c_air = minetest.get_content_id("air")
|
||||
|
||||
df_primordial_items.spawn_ceiling_spire_vm = function(vi, area, data)
|
||||
local spire_height = math.random(1,10)
|
||||
|
||||
local ystride = area.ystride
|
||||
local zstride = area.zstride
|
||||
|
||||
for i = 0, spire_height do
|
||||
if data[vi-i*ystride] == c_air then
|
||||
data[vi-i*ystride] = c_stalk
|
||||
end
|
||||
end
|
||||
local bottom = vi - (spire_height +1) * ystride
|
||||
if data[bottom] == c_air then
|
||||
data[bottom] = c_node
|
||||
end
|
||||
|
||||
if spire_height > 4 then -- thicken it all up
|
||||
for i = 0, math.floor(spire_height/2) do
|
||||
local current_vi = vi-i*ystride
|
||||
if data[current_vi+1] == c_air then
|
||||
data[current_vi+1] = c_stalk
|
||||
end
|
||||
if data[current_vi-1] == c_air then
|
||||
data[current_vi-1] = c_stalk
|
||||
end
|
||||
if data[current_vi+zstride] == c_air then
|
||||
data[current_vi+zstride] = c_stalk
|
||||
end
|
||||
if data[current_vi-zstride] == c_air then
|
||||
data[current_vi-zstride] = c_stalk
|
||||
end
|
||||
end
|
||||
|
||||
if spire_height > 7 then
|
||||
bottom = bottom-ystride
|
||||
if data[bottom] == c_air then
|
||||
data[bottom] = c_node
|
||||
end
|
||||
if data[bottom-ystride] == c_air then
|
||||
data[bottom-ystride] = c_node
|
||||
end
|
||||
if data[bottom+1] == c_air then
|
||||
data[bottom+1] = c_node
|
||||
end
|
||||
if data[bottom-1] == c_air then
|
||||
data[bottom-1] = c_node
|
||||
end
|
||||
if data[bottom+zstride] == c_air then
|
||||
data[bottom+zstride] = c_node
|
||||
end
|
||||
if data[bottom-zstride] == c_air then
|
||||
data[bottom-zstride] = c_node
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
72
df_primordial_items/doc.lua
Normal file
@ -0,0 +1,72 @@
|
||||
if not minetest.get_modpath("doc") then
|
||||
return
|
||||
end
|
||||
|
||||
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.dirt_with_jungle_grass_desc = S("The soil of the primordial jungle is rife with strange life at every scale.")
|
||||
df_primordial_items.doc.dirt_with_jungle_grass_usage = S("When left uncultivated primordial jungle soil will sprout all manner of strange wild plants.")
|
||||
df_primordial_items.doc.dirt_with_mycelium_desc = S("Fungal fibers have infiltrated the ground in a spongy mass, making the soil half mineral and half living matter.")
|
||||
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_usage = S("")
|
||||
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.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.roots_desc = S("Somewhere above an enormous plant has wedged its roots down through the rock and emerged from the ceiling of another cavern.")
|
||||
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_usage = S("")
|
||||
|
||||
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_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.leaves_desc = S("")
|
||||
--df_primordial_items.doc.leaves_usage = S("")
|
||||
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.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_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.mycelial_fibers_desc = S("Fibers extracted from gigantic fungal hyphae.")
|
||||
--df_primordial_items.doc.mycelial_fibers_usage = S("")
|
||||
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.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.gills_desc = S("")
|
||||
--df_primordial_items.doc.gills_usage = S("")
|
||||
|
||||
--df_primordial_items.doc.glow_orb_desc = S("")
|
||||
--df_primordial_items.doc.glow_orb_usage = S("")
|
||||
--df_primordial_items.doc.glow_plant_desc = S("")
|
||||
--df_primordial_items.doc.glow_plant_usage = S("")
|
||||
--df_primordial_items.doc.glow_pod_desc = S("")
|
||||
--df_primordial_items.doc.glow_pod_usage = S("")
|
||||
|
||||
-- The giant hanging fungal structures from the ceiling
|
||||
--df_primordial_items.doc.glownode_desc = S("")
|
||||
--df_primordial_items.doc.glownode_usage = S("")
|
||||
--df_primordial_items.doc.glownode_stalk_desc = S("")
|
||||
--df_primordial_items.doc.glownode_stalk_usage = S("")
|
||||
|
||||
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.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.small_mushroom_desc = S("")
|
||||
--df_primordial_items.doc.small_mushroom_usage = S("")
|
||||
--
|
||||
--df_primordial_items.doc.thorn_desc = S("")
|
||||
--df_primordial_items.doc.thorn_usage = S("")
|
145
df_primordial_items/fungal_nodes.lua
Normal file
@ -0,0 +1,145 @@
|
||||
-- internationalization boilerplate
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(MP.."/intllib.lua")
|
||||
|
||||
-----------------------------------------------------------------------------------------------
|
||||
-- Plants
|
||||
|
||||
-- Grass
|
||||
|
||||
minetest.register_node("df_primordial_items:fungal_grass_1", {
|
||||
description = S("Primordial Fungal Grass"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.fungal_grass_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.fungal_grass_usage,
|
||||
tiles = {"dfcaverns_mush_grass_01.png"},
|
||||
inventory_image = "dfcaverns_mush_grass_01.png",
|
||||
wield_image = "dfcaverns_mush_grass_01.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_fungal_plant = 1, light_sensitive_fungus = 11},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:fungal_grass_2", {
|
||||
description = S("Primordial Fungal Grass"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.fungal_grass_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.fungal_grass_usage,
|
||||
tiles = {"dfcaverns_mush_grass_02.png"},
|
||||
inventory_image = "dfcaverns_mush_grass_02.png",
|
||||
wield_image = "dfcaverns_mush_grass_02.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_fungal_plant = 1, light_sensitive_fungus = 11},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
place_param2 = 3,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
-- Glowing
|
||||
|
||||
minetest.register_node("df_primordial_items:glow_orb", {
|
||||
description = S("Primordial Fungal Orb"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glow_orb_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glow_orb_usage,
|
||||
tiles = {"dfcaverns_mush_orb.png"},
|
||||
inventory_image = "dfcaverns_mush_orb.png",
|
||||
wield_image = "dfcaverns_mush_orb.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_fungal_plant = 1, light_sensitive_fungus = 13},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
light_source = 9,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:glow_orb_stalks", {
|
||||
description = S("Primordial Fungal Orb"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glow_orb_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glow_orb_usage,
|
||||
tiles = {"dfcaverns_mush_stalks.png"},
|
||||
inventory_image = "dfcaverns_mush_stalks.png",
|
||||
wield_image = "dfcaverns_mush_stalks.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_fungal_plant = 1, light_sensitive_fungus = 13},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
light_source = 6,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:glow_pods", {
|
||||
description = S("Primordial Fungal Pod"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glow_pod_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glow_pod_usage,
|
||||
tiles = {"dfcaverns_mush_pods.png"},
|
||||
inventory_image = "dfcaverns_mush_pods.png",
|
||||
wield_image = "dfcaverns_mush_pods.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_fungal_plant = 1, light_sensitive_fungus = 13},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
light_source = 6,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
------------------------------------------------------------------------------------
|
||||
-- Dirt
|
||||
|
||||
minetest.register_node("df_primordial_items:dirt_with_mycelium", {
|
||||
description = S("Dirt with Primordial Mycelium"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.dirt_with_mycelium_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.dirt_with_mycelium_usage,
|
||||
tiles = {"dfcaverns_mush_soil.png"},
|
||||
groups = {crumbly = 3, soil = 1},
|
||||
is_ground_content = false,
|
||||
paramtype = "light",
|
||||
drops = "default:dirt",
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
light_source = 3,
|
||||
})
|
||||
|
||||
minetest.register_abm{
|
||||
label = "df_primordial_items:dirt_with_mycelium_spread",
|
||||
nodenames = {"default:dirt"},
|
||||
neighbors = {"df_mapitems:dirt_with_mycelium"},
|
||||
interval = 60,
|
||||
chance = 50,
|
||||
catch_up = true,
|
||||
action = function(pos)
|
||||
minetest.swap_node(pos, {name="df_mapitems:dirt_with_mycelium"})
|
||||
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.
|
||||
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_primordial_items:dirt_with_mycelium", {
|
||||
trampled_node_def_override = {description = S("Dirt with Primordial Mycelium and Footprint"),},
|
||||
footprint_opacity = 196,
|
||||
hard_pack_node_name = "trail:trail",
|
||||
hard_pack_probability = HARDPACK_PROBABILITY,
|
||||
hard_pack_count = HARDPACK_COUNT,
|
||||
})
|
||||
end
|
312
df_primordial_items/giant_fern.lua
Normal file
@ -0,0 +1,312 @@
|
||||
-- internationalization boilerplate
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(MP.."/intllib.lua")
|
||||
|
||||
------------------------------------------------------------------------------------
|
||||
-- Nodes
|
||||
|
||||
minetest.register_node("df_primordial_items:giant_fern_tree", {
|
||||
description = S("Giant Fern Stem"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_fern_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_fern_usage,
|
||||
tiles = {"dfcaverns_jungle_fern_stem.png","dfcaverns_jungle_fern_stem.png","dfcaverns_jungle_fern_bark.png",},
|
||||
groups = {tree=1, choppy=2, oddly_breakable_by_hand=1, flammable= 2, fern_stem = 1},
|
||||
is_ground_content = false,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
sunlight_propagates = true,
|
||||
on_place = minetest.rotate_node,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:giant_fern_tree_slant_bottom", {
|
||||
description = S("Giant Fern Stem"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_fern_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_fern_usage,
|
||||
tiles = {
|
||||
"dfcaverns_jungle_fern_stem.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_stem.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
drawtype = "mesh",
|
||||
mesh = "dfcaverns_fern_slant.obj",
|
||||
paramtype = "light",
|
||||
drop = "df_primordial_items:giant_fern_tree",
|
||||
groups = {choppy = 2, tree = 1, oddly_breakable_by_hand=1, flammable = 2, fern_stem = 1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
is_ground_content = false,
|
||||
on_place = minetest.rotate_node,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.625, 0.5, 0.0, 0.375},
|
||||
{-0.5, 0.0, -0.875, 0.5, 0.5, 0.125},
|
||||
},
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.625, 0.5, 0.0, 0.375},
|
||||
{-0.5, 0.0, -0.875, 0.5, 0.5, 0.125},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:giant_fern_tree_slant_top", {
|
||||
description = S("Giant Fern Stem"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_fern_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_fern_usage,
|
||||
tiles = {
|
||||
"dfcaverns_jungle_fern_stem.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_stem.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
drawtype = "mesh",
|
||||
mesh = "dfcaverns_fern_slant_2.obj",
|
||||
paramtype = "light",
|
||||
drop = "df_primordial_items:giant_fern_tree",
|
||||
groups = {choppy = 2, tree = 1, oddly_breakable_by_hand=1, flammable = 2, fern_stem = 1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
is_ground_content = false,
|
||||
on_place = minetest.rotate_node,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.125, 0.5, 0.0, 0.875},
|
||||
{-0.5, 0.0, -0.375, 0.5, 0.5, 0.625},
|
||||
},
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.125, 0.5, 0.0, 0.875},
|
||||
{-0.5, 0.0, -0.375, 0.5, 0.5, 0.625},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:giant_fern_tree_slant_full", {
|
||||
description = S("Giant Fern Stem"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_fern_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_fern_usage,
|
||||
tiles = {
|
||||
"dfcaverns_jungle_fern_stem.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
"dfcaverns_jungle_fern_bark.png",
|
||||
},
|
||||
paramtype2 = "facedir",
|
||||
drawtype = "mesh",
|
||||
mesh = "dfcaverns_fern_slant_full.obj",
|
||||
paramtype = "light",
|
||||
drop = "df_primordial_items:giant_fern_tree",
|
||||
groups = {choppy = 2, tree = 1, oddly_breakable_by_hand=1, flammable = 2, fern_stem = 1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
is_ground_content = false,
|
||||
on_place = minetest.rotate_node,
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.75, 0.5, 0, 0.25},
|
||||
{-0.5, 0, -1.25, 0.5, 0.5, -0.25},
|
||||
},
|
||||
},
|
||||
collision_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.75, 0.5, 0, 0.25},
|
||||
{-0.5, 0, -1.25, 0.5, 0.5, -0.25},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:fern_wood", {
|
||||
description = S("Fern Wood"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_fern_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_fern_usage,
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"default_wood.png^[multiply:#10FF10"},
|
||||
is_ground_content = false,
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "df_primordial_items:fern_wood 4",
|
||||
recipe = {
|
||||
{"group:fern_stem"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:giant_fern_leaves", {
|
||||
description = S("Giant Fern Leaves"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_fern_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_fern_usage,
|
||||
tiles = {"dfcaverns_jungle_fern_leaves_01.png"},
|
||||
visual_scale = 1.41,
|
||||
inventory_image = "dfcaverns_jungle_fern_leaves_01.png",
|
||||
wield_image = "dfcaverns_jungle_fern_leaves_01.png",
|
||||
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
|
||||
is_ground_content = false,
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
walkable = false,
|
||||
waving = 2,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
after_place_node = default.after_place_leaves,
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
-- player will get sapling with 1/10 chance
|
||||
items = {"df_primordial_items:fern_sapling"},
|
||||
rarity = 10,
|
||||
},
|
||||
{
|
||||
items = {"df_primordial_items:giant_fern_leaves"},
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
default.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"},
|
||||
leaves = {"df_primordial_items:giant_fern_leaves"},
|
||||
radius = 2,
|
||||
})
|
||||
|
||||
------------------------------------------------------------------------------------
|
||||
-- Schematics
|
||||
|
||||
local n1 = { name = "air", prob = 0 }
|
||||
local n2 = { name = "df_primordial_items:giant_fern_leaves" }
|
||||
local n3 = { name = "df_primordial_items:giant_fern_tree_slant_top" }
|
||||
local n4 = { name = "df_primordial_items:giant_fern_tree_slant_full" }
|
||||
local n5 = { name = "df_primordial_items:giant_fern_tree" }
|
||||
local n6 = { name = "df_primordial_items:giant_fern_tree_slant_bottom" }
|
||||
|
||||
|
||||
local fern_4_nodes_tall = {
|
||||
size = {y = 4, x = 3, z = 4},
|
||||
center_pos = {y = 0, x = 1, z = 3},
|
||||
data = {
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1,
|
||||
n1, n2, n1, n2, n1, n1, n1, n1, n1, n1, n2, n3, n2, n1, n4, n1, n1,
|
||||
n1, n1, n1, n6, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
}
|
||||
}
|
||||
|
||||
local fern_5_nodes_tall = {
|
||||
size = {y = 5, x = 3, z = 4},
|
||||
center_pos = {y = 0, x = 1, z = 3},
|
||||
data = {
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n2, n1, n2, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n2, n3, n2, n1, n4, n1, n1, n1, n1, n1, n5, n1, n2, n6, n2,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
}
|
||||
}
|
||||
|
||||
local fern_6_nodes_tall = {
|
||||
size = {y = 6, x = 5, z = 4},
|
||||
center_pos = {y = 0, x = 2, z = 3},
|
||||
data = {
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n2, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n2, n2, n3, n2, n2, n1, n1, n4, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n2, n5, n2, n1, n2, n2,
|
||||
n6, n2, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1,
|
||||
}
|
||||
}
|
||||
|
||||
local fern_9_nodes_tall = {
|
||||
size = {y = 9, x = 5, z = 5},
|
||||
center_pos = {y = 0, x = 2, z = 4},
|
||||
data = {
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n2, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n2, n2, n3, n2, n2, n1, n1, n4, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n2, n2, n3, n2, n2, n2, n2, n6, n2, n2, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1,
|
||||
n5, n1, n1, n1, n2, n5, n2, n1, n1, n2, n6, n2, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1,
|
||||
}
|
||||
}
|
||||
|
||||
local ferns = {fern_4_nodes_tall, fern_5_nodes_tall, fern_6_nodes_tall, fern_9_nodes_tall}
|
||||
local rotations = {0, 90, 180, 270}
|
||||
|
||||
df_primordial_items.get_fern_schematic = function()
|
||||
return ferns[math.random(1,4)]
|
||||
end
|
||||
|
||||
minetest.register_node("df_primordial_items:fern_sapling", {
|
||||
description = S("Giant Fern Sapling"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_fern_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_fern_usage,
|
||||
tiles = {"dfcaverns_jungle_fern_03.png"},
|
||||
inventory_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},
|
||||
_dfcaverns_dead_node = "default:dry_shrub",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
|
||||
},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
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
|
||||
return
|
||||
end
|
||||
minetest.get_node_timer(pos):start(math.random(
|
||||
df_trees.config.tree_min_growth_delay,
|
||||
df_trees.config.tree_max_growth_delay))
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
minetest.get_node_timer(pos):stop()
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||
return
|
||||
end
|
||||
|
||||
if minetest.get_node_light(pos) > 6 then
|
||||
local fern = df_primordial_items.get_fern_schematic()
|
||||
local rotation = rotations[math.random(1,#rotations)]
|
||||
minetest.set_node(pos, {name="air"}) -- clear sapling so fern can replace it
|
||||
mapgen_helper.place_schematic(pos, fern, rotation)
|
||||
else
|
||||
minetest.get_node_timer(pos):start(df_trees.config.tree_min_growth_delay)
|
||||
end
|
||||
end,
|
||||
})
|
433
df_primordial_items/giant_mycelium.lua
Normal file
@ -0,0 +1,433 @@
|
||||
-- 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 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
|
||||
-- connector_thickness
|
||||
local get_node_box = function(hub_thickness, 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
|
||||
|
||||
minetest.register_node("df_primordial_items:giant_hypha_root", {
|
||||
description = S("Rooted Giant Hypha"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_hyphae_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_hyphae_usage,
|
||||
tiles = {
|
||||
{name="dfcaverns_mush_giant_hypha.png"},
|
||||
},
|
||||
connects_to = {"group:soil", "group:hypha"},
|
||||
connect_sides = { "top", "bottom", "front", "left", "back", "right" },
|
||||
drawtype = "nodebox",
|
||||
node_box = get_node_box(0.1875, 0.25),
|
||||
collision_box = get_node_box(0.125, 0.1875),
|
||||
paramtype = "light",
|
||||
light_source = 2,
|
||||
is_ground_content = false,
|
||||
climbable = true,
|
||||
groups = {oddly_breakable_by_hand = 1, choppy = 2, hypha = 1},
|
||||
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
items = {"df_primordial_items:mycelial_fibers","df_primordial_items:giant_hypha_apical_meristem"},
|
||||
rarity = 100,
|
||||
},
|
||||
{
|
||||
items = {"df_primordial_items:mycelial_fibers"},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
minetest.register_node("df_primordial_items:giant_hypha", {
|
||||
description = S("Giant Hypha"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_hyphae_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_hyphae_usage,
|
||||
tiles = {
|
||||
{name="dfcaverns_mush_giant_hypha.png"},
|
||||
},
|
||||
connects_to = {"group:hypha"},
|
||||
connect_sides = { "top", "bottom", "front", "left", "back", "right" },
|
||||
drawtype = "nodebox",
|
||||
node_box = get_node_box(0.1875, 0.25),
|
||||
collision_box = get_node_box(0.125, 0.1875),
|
||||
paramtype = "light",
|
||||
light_source = 2,
|
||||
is_ground_content = false,
|
||||
climbable = true,
|
||||
groups = {oddly_breakable_by_hand = 1, choppy = 2, hypha = 1},
|
||||
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
items = {"df_primordial_items:mycelial_fibers","df_primordial_items:giant_hypha_apical_meristem"},
|
||||
rarity = 100,
|
||||
},
|
||||
{
|
||||
items = {"df_primordial_items:mycelial_fibers"},
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("df_primordial_items:mycelial_fibers", {
|
||||
description = S("Giant Mycelial Fibers"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.mycelial_fibers_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.mycelial_fibers_usage,
|
||||
groups = {wool = 1},
|
||||
inventory_image = "dfcaverns_mush_mycelial_fibers.png",
|
||||
})
|
||||
|
||||
minetest.register_craftitem("df_primordial_items:mycelial_thread", {
|
||||
description = S("Mycelial thread"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.mycelial_thread_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.mycelial_thread_usage,
|
||||
inventory_image = "dfcaverns_pig_tail_thread.png",
|
||||
groups = {flammable = 1, thread = 1},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "df_primordial_items:mycelial_thread 4",
|
||||
type = "shapeless",
|
||||
recipe = { "df_primordial_items:mycelial_fibers"},
|
||||
})
|
||||
|
||||
-- Check each of the six cardinal directions to see if it's buildable-to,
|
||||
-- if it has an adjacent "soil" node (or if it's going out over the corner of an adjacent soil node),
|
||||
-- and does *not* have an adjacent hypha already.
|
||||
-- By growing with these conditions hyphae will hug the ground and will not immediately loop back on themselves
|
||||
-- (though they can run into other pre-existing growths, forming larger loops - which is fine, large loops are nice)
|
||||
|
||||
local ystride = 3
|
||||
local zstride = 9
|
||||
local get_item_group = minetest.get_item_group
|
||||
local get_node = minetest.get_node
|
||||
local registered_nodes = minetest.registered_nodes
|
||||
local math_random = math.random
|
||||
|
||||
local find_mycelium_growth_targets = function(pos)
|
||||
local nodes = {}
|
||||
local pos_x = pos.x
|
||||
local pos_y = pos.y
|
||||
local pos_z = pos.z
|
||||
|
||||
for x = -1, 1 do
|
||||
for y = -1, 1 do
|
||||
for z = -1, 1 do
|
||||
if not (x == y and y == z) then -- we don't care about the diagonals or the center node
|
||||
local node = get_node({x=pos_x+x, y=pos_y+y, z=pos_z+z})
|
||||
local node_name = node.name
|
||||
if node_name == "ignore" then
|
||||
-- Pause growth! We're at the edge of the known world.
|
||||
return nil
|
||||
end
|
||||
if get_item_group(node_name, "soil") > 0 or
|
||||
get_item_group(node_name, "stone") > 0 and math_random() < 0.5 then -- let hyphae explore out over stone
|
||||
nodes[x + y*ystride + z*zstride] = "soil"
|
||||
elseif get_item_group(node_name, "hypha") > 0 then
|
||||
nodes[x + y*ystride + z*zstride] = "hypha"
|
||||
elseif registered_nodes[node_name] and registered_nodes[node_name].buildable_to then
|
||||
nodes[x + y*ystride + z*zstride] = "buildable"
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
--TODO there's probably some clever way to turn this into a subroutine, but I'm tired right now and
|
||||
--copy and pasting is easy and nobody's going to decide whether to hire or fire me based on this
|
||||
--particular snippet of code so what the hell. I'll fix it later when that clever way comes to me.
|
||||
local valid_targets = {}
|
||||
if nodes[-1] == "buildable" and
|
||||
-- test for soil to directly support new growth
|
||||
(nodes[-1 -ystride] == "soil" or
|
||||
nodes[-1 +ystride] == "soil" or
|
||||
nodes[-1 -zstride] == "soil" or
|
||||
nodes[-1 +zstride] == "soil" or
|
||||
-- test for soil "around the corner" to allow for growth over an edge
|
||||
nodes[-ystride] == "soil" or
|
||||
nodes[ystride] == "soil" or
|
||||
nodes[-zstride] == "soil" or
|
||||
nodes[zstride] == "soil")
|
||||
and not -- no adjacent hypha
|
||||
(nodes[-1 -ystride] == "hypha" or
|
||||
nodes[-1 +ystride] == "hypha" or
|
||||
nodes[-1 -zstride] == "hypha" or
|
||||
nodes[-1 +zstride] == "hypha")
|
||||
then
|
||||
table.insert(valid_targets, {x=pos_x-1, y=pos_y, z=pos_z})
|
||||
end
|
||||
if nodes[1] == "buildable" and
|
||||
-- test for soil to directly support new growth
|
||||
(nodes[1 -ystride] == "soil" or
|
||||
nodes[1 +ystride] == "soil" or
|
||||
nodes[1 -zstride] == "soil" or
|
||||
nodes[1 +zstride] == "soil" or
|
||||
-- test for soil "around the corner" to allow for growth over an edge
|
||||
nodes[-ystride] == "soil" or
|
||||
nodes[ystride] == "soil" or
|
||||
nodes[-zstride] == "soil" or
|
||||
nodes[zstride] == "soil")
|
||||
and not -- no adjacent hypha
|
||||
(nodes[1 -ystride] == "hypha" or
|
||||
nodes[1 +ystride] == "hypha" or
|
||||
nodes[1 -zstride] == "hypha" or
|
||||
nodes[1 +zstride] == "hypha")
|
||||
then
|
||||
table.insert(valid_targets, {x=pos_x+1, y=pos_y, z=pos_z})
|
||||
end
|
||||
if nodes[-ystride] == "buildable" and
|
||||
-- test for soil to directly support new growth
|
||||
(nodes[-1 -ystride] == "soil" or
|
||||
nodes[1 -ystride] == "soil" or
|
||||
nodes[-ystride -zstride] == "soil" or
|
||||
nodes[-ystride +zstride] == "soil" or
|
||||
-- test for soil "around the corner" to allow for growth over an edge
|
||||
nodes[-1] == "soil" or
|
||||
nodes[1] == "soil" or
|
||||
nodes[-zstride] == "soil" or
|
||||
nodes[zstride] == "soil")
|
||||
and not -- no adjacent hypha
|
||||
(nodes[-1 -ystride] == "hypha" or
|
||||
nodes[1 -ystride] == "hypha" or
|
||||
nodes[-ystride -zstride] == "hypha" or
|
||||
nodes[-ystride +zstride] == "hypha")
|
||||
then
|
||||
table.insert(valid_targets, {x=pos_x, y=pos_y-1, z=pos_z})
|
||||
end
|
||||
if nodes[ystride] == "buildable" and
|
||||
-- test for soil to directly support new growth
|
||||
(nodes[-1 +ystride] == "soil" or
|
||||
nodes[1 +ystride] == "soil" or
|
||||
nodes[ystride -zstride] == "soil" or
|
||||
nodes[ystride +zstride] == "soil" or
|
||||
-- test for soil "around the corner" to allow for growth over an edge
|
||||
nodes[-1] == "soil" or
|
||||
nodes[1] == "soil" or
|
||||
nodes[-zstride] == "soil" or
|
||||
nodes[zstride] == "soil")
|
||||
and not -- no adjacent hypha
|
||||
(nodes[-1] == "hypha" or
|
||||
nodes[1 + ystride] == "hypha" or
|
||||
nodes[ystride -zstride] == "hypha" or
|
||||
nodes[ystride +zstride] == "hypha")
|
||||
then
|
||||
table.insert(valid_targets, {x=pos_x, y=pos_y+1, z=pos_z})
|
||||
end
|
||||
if nodes[-zstride] == "buildable" and
|
||||
-- test for soil to directly support new growth
|
||||
(nodes[-1 -zstride] == "soil" or
|
||||
nodes[1 -zstride] == "soil" or
|
||||
nodes[-ystride -zstride] == "soil" or
|
||||
nodes[ystride -zstride] == "soil" or
|
||||
-- test for soil "around the corner" to allow for growth over an edge
|
||||
nodes[-1] == "soil" or
|
||||
nodes[1] == "soil" or
|
||||
nodes[-ystride] == "soil" or
|
||||
nodes[ystride] == "soil")
|
||||
and not -- no adjacent hypha
|
||||
(nodes[-1 -zstride] == "hypha" or
|
||||
nodes[1 -zstride] == "hypha" or
|
||||
nodes[-ystride -zstride] == "hypha" or
|
||||
nodes[ystride -zstride] == "hypha")
|
||||
then
|
||||
table.insert(valid_targets, {x=pos_x, y=pos_y, z=pos_z-1})
|
||||
end
|
||||
if nodes[zstride] == "buildable" and
|
||||
-- test for soil to directly support new growth
|
||||
(nodes[-1 +zstride] == "soil" or
|
||||
nodes[1 +zstride] == "soil" or
|
||||
nodes[-ystride +zstride] == "soil" or
|
||||
nodes[ystride +zstride] == "soil" or
|
||||
-- test for soil "around the corner" to allow for growth over an edge
|
||||
nodes[-1] == "soil" or
|
||||
nodes[1] == "soil" or
|
||||
nodes[-ystride] == "soil" or
|
||||
nodes[ystride] == "soil")
|
||||
and not -- no adjacent hypha
|
||||
(nodes[-1 +zstride] == "hypha" or
|
||||
nodes[1 +zstride] == "hypha" or
|
||||
nodes[-ystride + zstride] == "hypha" or
|
||||
nodes[ystride +zstride] == "hypha")
|
||||
then
|
||||
table.insert(valid_targets, {x=pos_x, y=pos_y, z=pos_z+1})
|
||||
end
|
||||
|
||||
return valid_targets
|
||||
end
|
||||
|
||||
local grow_mycelium = function(pos, meristem_name)
|
||||
local new_meristems = {}
|
||||
-- Can we grow? If so, pick a random direction and add a new meristem there
|
||||
local targets = find_mycelium_growth_targets(pos)
|
||||
|
||||
if targets == nil then
|
||||
return nil -- We hit the edge of the known world, pause!
|
||||
end
|
||||
|
||||
local target_count = #targets
|
||||
if target_count > 0 then
|
||||
local target = targets[math.random(1,target_count)]
|
||||
minetest.set_node(target, {name=meristem_name})
|
||||
table.insert(new_meristems, target)
|
||||
else
|
||||
--nowhere to grow, turn into a rooted hypha and we're done
|
||||
minetest.set_node(pos, {name="df_primordial_items:giant_hypha_root"})
|
||||
return new_meristems
|
||||
end
|
||||
|
||||
if math.random() < 0.06 then -- Note: hypha growth pattern is very sensitive to this branching factor. Higher than about 0.06 will blanket the landscape with fungus.
|
||||
-- Split - try again from here next time
|
||||
table.insert(new_meristems, pos)
|
||||
-- Otherwise, just turn into a hypha and we're done
|
||||
elseif math.random() < 0.333 then
|
||||
minetest.set_node(pos, {name="df_primordial_items:giant_hypha_root"})
|
||||
else
|
||||
minetest.set_node(pos, {name="df_primordial_items:giant_hypha"})
|
||||
end
|
||||
return new_meristems
|
||||
end
|
||||
|
||||
local min_growth_delay = tonumber(minetest.settings:get("dfcaverns_mycelium_min_growth_delay")) or 240
|
||||
local max_growth_delay = tonumber(minetest.settings:get("dfcaverns_mycelium_max_growth_delay")) or 400
|
||||
local avg_growth_delay = (min_growth_delay + max_growth_delay) / 2
|
||||
|
||||
minetest.register_node("df_primordial_items:giant_hypha_apical_meristem", {
|
||||
description = S("Giant Hypha Apical Meristem"),
|
||||
tiles = {
|
||||
{name="dfcaverns_mush_giant_hypha.png^[brighten"},
|
||||
},
|
||||
connects_to = {"group:hypha"},
|
||||
connect_sides = { "top", "bottom", "front", "left", "back", "right" },
|
||||
drawtype = "nodebox",
|
||||
light_source = 6,
|
||||
node_box = get_node_box(0.25, 0.375),
|
||||
paramtype = "light",
|
||||
|
||||
is_ground_content = false,
|
||||
groups = {oddly_breakable_by_hand = 1, choppy = 2, hypha = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node = "df_primordial_items:giant_hypha_root",
|
||||
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
|
||||
on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(math.random(min_growth_delay, max_growth_delay))
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
minetest.get_node_timer(pos):stop()
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||
return
|
||||
end
|
||||
|
||||
if elapsed > max_growth_delay then
|
||||
-- We've been unloaded for a while, need to do multiple growth iterations.
|
||||
local iterations = math.floor(elapsed / avg_growth_delay) -- the number of iterations we've missed
|
||||
local stack = {pos} -- initialize with the current location
|
||||
for i = 1, iterations do
|
||||
local new_stack = {} -- populate this with new node output.
|
||||
for _, stackpos in ipairs(stack) do -- for each currently growing location
|
||||
local ret = grow_mycelium(stackpos, "df_primordial_items:giant_hypha_apical_meristem")
|
||||
if ret == nil then
|
||||
-- We hit the edge of the known world, stop and retry later
|
||||
minetest.get_node_timer(stackpos):start(math.random(min_growth_delay,max_growth_delay))
|
||||
else
|
||||
for _, retpos in ipairs(ret) do
|
||||
-- put the new locations into new_stack
|
||||
table.insert(new_stack, retpos)
|
||||
end
|
||||
end
|
||||
end
|
||||
stack = new_stack -- replace the old stack with the new
|
||||
end
|
||||
for _, donepos in ipairs(stack) do
|
||||
-- After all the iterations are done, if there's any leftover growing positions set a timer for each of them
|
||||
minetest.get_node_timer(donepos):start(math.random(min_growth_delay,max_growth_delay))
|
||||
end
|
||||
else
|
||||
-- just do one iteration.
|
||||
local new_meristems = grow_mycelium(pos, "df_primordial_items:giant_hypha_apical_meristem")
|
||||
if new_meristems == nil then
|
||||
-- We hit the end of the known world, try again later. Unlikely in this case, but theoretically possible I guess.
|
||||
minetest.get_node_timer(pos):start(math.random(min_growth_delay,max_growth_delay))
|
||||
else
|
||||
for _, newpos in ipairs(new_meristems) do
|
||||
minetest.get_node_timer(newpos):start(math.random(min_growth_delay,max_growth_delay))
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
-- this version grows instantly, it is meant for mapgen usage.
|
||||
|
||||
local grow_mycelium_immediately = function(pos)
|
||||
local stack = {pos}
|
||||
while #stack > 0 do
|
||||
local pos = table.remove(stack)
|
||||
if not (df_farming and df_farming.kill_if_sunlit(pos)) then
|
||||
local new_poses = grow_mycelium(pos, "df_primordial_items:giant_hypha_apical_mapgen")
|
||||
if new_poses then
|
||||
for _, new_pos in ipairs(new_poses) do
|
||||
table.insert(stack, new_pos)
|
||||
end
|
||||
else
|
||||
-- if we hit the end of the world, just stop. There'll be a mapgen meristem left here, re-trigger it.
|
||||
minetest.get_node_timer(pos):start(math.random(10,60))
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_node("df_primordial_items:giant_hypha_apical_mapgen", {
|
||||
description = S("Giant Hypha Apical Meristem"),
|
||||
tiles = {
|
||||
{name="dfcaverns_mush_giant_hypha.png^[brighten"},
|
||||
},
|
||||
connects_to = {"group:hypha"},
|
||||
connect_sides = { "top", "bottom", "front", "left", "back", "right" },
|
||||
drawtype = "nodebox",
|
||||
_dfcaverns_dead_node = "df_primordial_items:giant_hypha_root",
|
||||
light_source = 6,
|
||||
node_box = get_node_box(0.25, 0.375),
|
||||
paramtype = "light",
|
||||
|
||||
is_ground_content = false,
|
||||
groups = {oddly_breakable_by_hand = 1, choppy = 2, hypha = 1, not_in_creative_inventory = 1, light_sensitive_fungus = 13},
|
||||
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
|
||||
on_timer = function(pos, elapsed)
|
||||
grow_mycelium_immediately(pos)
|
||||
end,
|
||||
on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(1)
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
minetest.get_node_timer(pos):stop()
|
||||
end,
|
||||
})
|
||||
|
||||
-- Just in case mapgen fails to trigger the timer on a mapgen mycelium this ABM will clean up.
|
||||
minetest.register_abm({
|
||||
label = "df_primordial_items ensure giant mycelium growth",
|
||||
nodenames = {"df_primordial_items:giant_hypha_apical_mapgen"},
|
||||
interval = 10.0,
|
||||
chance = 1,
|
||||
action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
if not timer:is_started() then
|
||||
timer:start(math.random(1,10))
|
||||
end
|
||||
end,
|
||||
})
|
14
df_primordial_items/init.lua
Normal file
@ -0,0 +1,14 @@
|
||||
df_primordial_items = {}
|
||||
df_primordial_items.doc = {}
|
||||
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
|
||||
dofile(MP.."/doc.lua")
|
||||
dofile(MP.."/jungle_nodes.lua")
|
||||
dofile(MP.."/jungle_tree.lua")
|
||||
dofile(MP.."/jungle_mushroom.lua")
|
||||
dofile(MP.."/giant_fern.lua")
|
||||
dofile(MP.."/fungal_nodes.lua")
|
||||
dofile(MP.."/ceiling_fungus.lua")
|
||||
dofile(MP.."/primordial_mushroom.lua")
|
||||
dofile(MP.."/giant_mycelium.lua")
|
45
df_primordial_items/intllib.lua
Normal 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
|
176
df_primordial_items/jungle_mushroom.lua
Normal file
@ -0,0 +1,176 @@
|
||||
-- internationalization boilerplate
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(MP.."/intllib.lua")
|
||||
|
||||
------------------------------------------------------------------------------------------
|
||||
-- Big jungle mushroom
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_mushroom_trunk", {
|
||||
description = S("Primordial Jungle Mushroom Trunk"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.big_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.big_mushroom_usage,
|
||||
tiles = {"dfcaverns_jungle_mushroom_stem.png", "dfcaverns_jungle_mushroom_stem.png", "dfcaverns_jungle_mushroom_stem_02.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
|
||||
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_mushroom_cap_1", {
|
||||
description = S("Pale Jungle Mushroom Cap"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.big_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.big_mushroom_usage,
|
||||
tiles = {"dfcaverns_jungle_mushroom_top_02.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, primordial_mushroom_cap = 1},
|
||||
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
|
||||
on_place = minetest.rotate_node,
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
items = {"df_primordial_items:jungle_mushroom_sapling"},
|
||||
rarity = 10,
|
||||
},
|
||||
{
|
||||
items = {"df_primordial_items:jungle_mushroom_cap_1"},
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_mushroom_cap_2", {
|
||||
description = S("Dark Jungle Mushroom Cap"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.big_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.big_mushroom_usage,
|
||||
tiles = {"dfcaverns_jungle_mushroom_top_01.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, primordial_mushroom_cap = 1},
|
||||
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
|
||||
on_place = minetest.rotate_node,
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
items = {"df_primordial_items:jungle_mushroom_sapling"},
|
||||
rarity = 10,
|
||||
},
|
||||
{
|
||||
items = {"df_primordial_items:jungle_mushroom_cap_2"},
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("df_primordial_items:diced_mushroom", {
|
||||
description = S("Diced Mushroom"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.big_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.big_mushroom_usage,
|
||||
inventory_image = "dfcaverns_mush_diced_giant_mushroom.png",
|
||||
groups = {food = 1, dfcaverns_cookable = 1},
|
||||
sound = {eat = {name = "df_farming_gummy_chew", gain = 1.0}},
|
||||
on_use = minetest.item_eat(1),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "df_primordial_items:diced_mushroom 4",
|
||||
type = "shapeless",
|
||||
recipe = { "group:primordial_mushroom_cap"},
|
||||
})
|
||||
|
||||
-- Note: no wood-making recipe for the trunk, it's pretty useless
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "df_primordial_items:jungle_mushroom_trunk",
|
||||
burntime = 15,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_mushroom_sapling", {
|
||||
description = S("Primordial Jungle Mushroom Sapling"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.big_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.big_mushroom_usage,
|
||||
tiles = {"dfcaverns_jungle_mushroom_02.png^[brighten"},
|
||||
inventory_image = "dfcaverns_jungle_mushroom_02.png^[brighten",
|
||||
wield_image = "dfcaverns_jungle_mushroom_02.png^[brighten",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, light_sensitive_fungus = 13},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
|
||||
},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
|
||||
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
|
||||
return
|
||||
end
|
||||
minetest.get_node_timer(pos):start(math.random(
|
||||
df_trees.config.tree_min_growth_delay,
|
||||
df_trees.config.tree_max_growth_delay))
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
minetest.get_node_timer(pos):stop()
|
||||
end,
|
||||
|
||||
on_timer = function(pos)
|
||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||
return
|
||||
end
|
||||
minetest.set_node(pos, {name="air"})
|
||||
df_primordial_items.spawn_jungle_mushroom(pos)
|
||||
end,
|
||||
})
|
||||
|
||||
local c_stem = minetest.get_content_id("df_primordial_items:jungle_mushroom_trunk")
|
||||
local c_cap_1 = minetest.get_content_id("df_primordial_items:jungle_mushroom_cap_1")
|
||||
local c_cap_2 = minetest.get_content_id("df_primordial_items:jungle_mushroom_cap_2")
|
||||
local c_air = minetest.get_content_id("air")
|
||||
|
||||
df_primordial_items.spawn_jungle_mushroom = function(pos)
|
||||
local x, y, z = pos.x, pos.y, pos.z
|
||||
local stem_height = math.random(1,3)
|
||||
local cap_radius = math.random(2,3)
|
||||
local maxy = y + stem_height + 3
|
||||
|
||||
local c_cap
|
||||
if math.random() > 0.5 then
|
||||
c_cap = c_cap_1
|
||||
else
|
||||
c_cap = c_cap_2
|
||||
end
|
||||
|
||||
local vm = minetest.get_voxel_manip()
|
||||
local minp, maxp = vm:read_from_map(
|
||||
{x = x - cap_radius, y = y, z = z - cap_radius},
|
||||
{x = x + cap_radius, y = maxy + 3, z = z + cap_radius}
|
||||
)
|
||||
local area = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
|
||||
local data = vm:get_data()
|
||||
|
||||
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_air, stem_height, cap_radius)
|
||||
|
||||
vm:set_data(data)
|
||||
vm:write_to_map()
|
||||
vm:update_map()
|
||||
end
|
||||
|
||||
df_primordial_items.spawn_jungle_mushroom_vm = function(vi, area, data)
|
||||
local stem_height = math.random(1,3)
|
||||
local cap_radius = math.random(2,3)
|
||||
local c_cap
|
||||
if math.random() > 0.5 then
|
||||
c_cap = c_cap_1
|
||||
else
|
||||
c_cap = c_cap_2
|
||||
end
|
||||
subterrane.giant_mushroom(vi, area, data, c_stem, c_cap, c_air, stem_height, cap_radius)
|
||||
end
|
454
df_primordial_items/jungle_nodes.lua
Normal file
@ -0,0 +1,454 @@
|
||||
-- internationalization boilerplate
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(MP.."/intllib.lua")
|
||||
|
||||
local vegetation =
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
----------------------------------------------------
|
||||
-- Ferns
|
||||
|
||||
minetest.register_node("df_primordial_items:fern_1", {
|
||||
description = S("Primordial Fern"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.fern_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.fern_usage,
|
||||
tiles = {"dfcaverns_jungle_fern_01.png"},
|
||||
inventory_image = "dfcaverns_jungle_fern_01.png",
|
||||
wield_image = "dfcaverns_jungle_fern_01.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node = "default:dry_shrub",
|
||||
visual_scale = 1.69,
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:fern_2", {
|
||||
description = S("Primordial Fern"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.fern_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.fern_usage,
|
||||
tiles = {"dfcaverns_jungle_fern_02.png"},
|
||||
visual_scale = 1.69,
|
||||
inventory_image = "dfcaverns_jungle_fern_02.png",
|
||||
wield_image = "dfcaverns_jungle_fern_02.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node = "default:dry_shrub",
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
---------------------------------------------------------
|
||||
-- Glowing plants
|
||||
|
||||
minetest.register_node("df_primordial_items:glow_plant_1", {
|
||||
description = S("Primordial Flower"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glow_plant_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glow_plant_usage,
|
||||
tiles = {"dfcaverns_jungle_flower_01.png"},
|
||||
inventory_image = "dfcaverns_jungle_flower_01.png",
|
||||
wield_image = "dfcaverns_jungle_flower_01.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node = "default:dry_shrub",
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
light_source = 6,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:glow_plant_2", {
|
||||
description = S("Primordial Jungle Pod"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glow_plant_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glow_plant_usage,
|
||||
tiles = {"dfcaverns_jungle_glow_plant_01.png"},
|
||||
inventory_image = "dfcaverns_jungle_glow_plant_01.png",
|
||||
wield_image = "dfcaverns_jungle_glow_plant_01.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node = "default:dry_shrub",
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
light_source = 6,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:glow_plant_3", {
|
||||
description = S("Primordial Jungle Pod"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glow_plant_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glow_plant_usage,
|
||||
tiles = {"dfcaverns_jungle_glow_plant_02.png"},
|
||||
inventory_image = "dfcaverns_jungle_glow_plant_02.png",
|
||||
wield_image = "dfcaverns_jungle_glow_plant_02.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node = "default:dry_shrub",
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
light_source = 6,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
|
||||
-------------------------------------------------------------------
|
||||
-- Grass
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_grass_1", {
|
||||
description = S("Primordial Jungle Grass"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.grass_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.grass_usage,
|
||||
tiles = {"dfcaverns_jungle_grass_01.png"},
|
||||
inventory_image = "dfcaverns_jungle_grass_01.png",
|
||||
wield_image = "dfcaverns_jungle_grass_01.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node ="default:dry_grass_3",
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_grass_2", {
|
||||
description = S("Primordial Jungle Grass"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.grass_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.grass_usage,
|
||||
tiles = {"dfcaverns_jungle_grass_02.png"},
|
||||
inventory_image = "dfcaverns_jungle_grass_02.png",
|
||||
wield_image = "dfcaverns_jungle_grass_02.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node ="default:dry_grass_4",
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
place_param2 = 3,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_grass_3", {
|
||||
description = S("Primordial Jungle Grass"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.grass_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.grass_usage,
|
||||
tiles = {"dfcaverns_jungle_grass_03.png"},
|
||||
inventory_image = "dfcaverns_jungle_grass_03.png",
|
||||
wield_image = "dfcaverns_jungle_grass_03.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node ="default:dry_grass_4",
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
place_param2 = 3,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
|
||||
-----------------------------------------------------------------------------------------
|
||||
-- Ivy
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_ivy", {
|
||||
description = S("Primordial Jungle Ivy"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.ivy_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.ivy_usage,
|
||||
tiles = {"dfcaverns_jungle_ivy_01.png"},
|
||||
inventory_image = "dfcaverns_jungle_ivy_01.png",
|
||||
wield_image = "dfcaverns_jungle_ivy_01.png",
|
||||
groups = {snappy = 3, flora = 1, flammable = 1},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
place_param2 = 3,
|
||||
--paramtype2 = "wallmouinted",
|
||||
--drawtype = "signlike",
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
-- selection_box = {
|
||||
-- type = "wallmounted",
|
||||
-- },
|
||||
})
|
||||
|
||||
-------------------------------------------------------------------------------------
|
||||
-- Small jungle mushrooms
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_mushroom_1", {
|
||||
description = S("Primordial Jungle Mushroom"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.small_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.small_mushroom_usage,
|
||||
tiles = {"dfcaverns_jungle_mushroom_01.png^[multiply:#f3df2a"},
|
||||
inventory_image = "dfcaverns_jungle_mushroom_01.png^[multiply:#f3df2a",
|
||||
wield_image = "dfcaverns_jungle_mushroom_01.png^[multiply:#f3df2a",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 11},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_mushroom_2", {
|
||||
description = S("Large Primordial Jungle Mushroom"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.small_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.small_mushroom_usage,
|
||||
tiles = {"dfcaverns_jungle_mushroom_02.png"},
|
||||
inventory_image = "dfcaverns_jungle_mushroom_02.png",
|
||||
wield_image = "dfcaverns_jungle_mushroom_02.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, primordial_jungle_plant = 1, light_sensitive_fungus = 11},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
is_ground_content = false,
|
||||
walkable = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
})
|
||||
|
||||
----------------------------------------------------------------------------------------
|
||||
-- Dirt
|
||||
|
||||
minetest.register_node("df_primordial_items:dirt_with_jungle_grass", {
|
||||
description = S("Dirt With Primordial Jungle Grass"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.dirt_with_jungle_grass_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.dirt_with_jungle_grass_usage,
|
||||
tiles = {"dfcaverns_jungle_plant_grass_node_01.png"},
|
||||
paramtype = "light",
|
||||
groups = {crumbly = 3, soil = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node = "default:dirt",
|
||||
is_ground_content = false,
|
||||
drops = "default:dirt",
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_abm{
|
||||
label = "df_primordial_items:jungle_grass_spread",
|
||||
nodenames = {"default:dirt"},
|
||||
neighbors = {"df_mapitems:dirt_with_jungle_grass"},
|
||||
interval = 60,
|
||||
chance = 50,
|
||||
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_jungle_grass"})
|
||||
end
|
||||
end,
|
||||
}
|
||||
|
||||
minetest.register_node("df_primordial_items:plant_matter", {
|
||||
description = S("Primordial Plant Matter"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.plant_matter_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.plant_matter_usage,
|
||||
tiles = {"dfcaverns_jungle_plant_matter_01.png"},
|
||||
is_ground_content = false,
|
||||
paramtype = "light",
|
||||
groups = {crumbly = 3, soil = 1},
|
||||
sounds = default.node_sound_dirt_defaults(),
|
||||
on_timer = function(pos, elapsed)
|
||||
if elapsed > 130 then
|
||||
-- the timer triggered more than ten seconds after it was suppposed to,
|
||||
-- it may have been in an unloaded block. Rather than have all the timers
|
||||
-- go off at once now that the block's loaded, stagger them out again.
|
||||
minetest.get_node_timer(pos):start(math.random(10, 120))
|
||||
return
|
||||
end
|
||||
if minetest.find_node_near(pos, 1, {"air"}) == nil then
|
||||
minetest.set_node(pos, {name="df_primordial_items:packed_roots"})
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:packed_roots", {
|
||||
description = S("Packed Primordial Jungle Roots"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.packed_roots_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.packed_roots_usage,
|
||||
tiles = {"dfcaverns_jungle_plant_packed_roots_01.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
|
||||
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.
|
||||
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_primordial_items:dirt_with_jungle_grass", {
|
||||
trampled_node_def_override = {description = S("Dirt With Primordial Jungle Grass and Footprint"),},
|
||||
footprint_opacity = 128,
|
||||
hard_pack_node_name = "trail:trail",
|
||||
hard_pack_probability = HARDPACK_PROBABILITY,
|
||||
hard_pack_count = HARDPACK_COUNT,
|
||||
})
|
||||
trail.register_trample_node("df_primordial_items:plant_matter", {
|
||||
trampled_node_def_override = {description = S("Primordial Plant Matter with Footprint"),},
|
||||
footprint_opacity = 128,
|
||||
hard_pack_node_name = "df_primordial_items:packed_roots",
|
||||
hard_pack_probability = HARDPACK_PROBABILITY,
|
||||
hard_pack_count = HARDPACK_COUNT,
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "df_primordial_items:packed_roots",
|
||||
burntime = 40,
|
||||
})
|
||||
|
||||
----------------------------------------------------------------------------------------
|
||||
-- Roots
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_roots_1", {
|
||||
description = S("Primordial Jungle Roots"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.roots_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.roots_usage,
|
||||
tiles = {"dfcaverns_jungle_root_01.png"},
|
||||
inventory_image = "dfcaverns_jungle_root_01.png",
|
||||
wield_image = "dfcaverns_jungle_root_01.png",
|
||||
groups = {snappy = 3, flora = 1, flammable = 1},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
is_ground_content = false,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_roots_2", {
|
||||
description = S("Primordial Jungle Root"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.roots_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.roots_usage,
|
||||
tiles = {"dfcaverns_jungle_root_02.png"},
|
||||
inventory_image = "dfcaverns_jungle_root_02.png",
|
||||
wield_image = "dfcaverns_jungle_root_02.png",
|
||||
groups = {snappy = 3, flora = 1, flammable = 1},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
is_ground_content = false,
|
||||
sunlight_propagates = true,
|
||||
walkable = false,
|
||||
climbable = true,
|
||||
})
|
||||
|
||||
--------------------------------------------------------------------------------
|
||||
-- Thorns
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_thorns", {
|
||||
description = S("Primordial Jungle Thorns"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.thorn_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.thorn_usage,
|
||||
tiles = {"dfcaverns_jungle_thorns_01.png"},
|
||||
visual_scale = 1.41,
|
||||
inventory_image = "dfcaverns_jungle_thorns_01.png",
|
||||
wield_image = "dfcaverns_jungle_thorns_01.png",
|
||||
groups = {snappy = 3, flora = 1, flammable = 1, primordial_jungle_plant = 1},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
walkable = false,
|
||||
is_ground_content = false,
|
||||
place_param2 = 3,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
damage_per_second = 1,
|
||||
})
|
||||
|
||||
|
||||
-- TODO I had an idea to make thorns grow into mazes naturally using cellular automata rules, but it turned out to be
|
||||
-- complicated and probably not worth it right now. Deal with it later.
|
||||
|
||||
--local thorn_dir =
|
||||
--{
|
||||
-- {x=1,y=0,z=1},
|
||||
-- {x=-1,y=0,z=-1},
|
||||
-- {x=1,y=0,z=0},
|
||||
-- {x=1,y=0,z=-1},
|
||||
-- {x=-1,y=0,z=0},
|
||||
-- {x=-1,y=0,z=1},
|
||||
--}
|
||||
--
|
||||
--
|
||||
--local thorn_name = "df_primordial_items:jungle_thorns"
|
||||
--minetest.register_abm({
|
||||
-- label = "Primordial thorn growth",
|
||||
-- nodenames = {thorn_name},
|
||||
-- neighbors = {"group:soil"},
|
||||
-- interval = 1.0,
|
||||
-- chance = 5,
|
||||
-- catch_up = true,
|
||||
-- action = function(pos, node, active_object_count, active_object_count_wider)
|
||||
-- if math.random() < 0.1 then
|
||||
-- local above = vector.add({x=0,y=1,z=0},pos)
|
||||
-- local below = vector.add({x=0,y=-1,z=0},pos)
|
||||
-- local above_node = minetest.get_node(above)
|
||||
-- local below_node = minetest.get_node(below)
|
||||
-- if above_node.name == "air" and minetest.get_item_group(below_node.name, "soil") then
|
||||
-- minetest.set_node(above, {name=thorn_name})
|
||||
-- end
|
||||
-- if below_node.name == "air" then
|
||||
-- minetest.set_node(below, {name=thorn_name})
|
||||
-- end
|
||||
-- return
|
||||
-- end
|
||||
--
|
||||
-- local dir = thorn_dir[math.random(#thorn_dir)]
|
||||
-- local target_pos = vector.add(dir, pos)
|
||||
-- -- This gets the corners of the target zone
|
||||
-- local pos1 = vector.add(target_pos, thorn_dir[1])
|
||||
-- local pos2 = vector.add(target_pos, thorn_dir[2])
|
||||
--
|
||||
-- local list, counts = minetest.find_nodes_in_area(pos1, pos2, {thorn_name})
|
||||
-- local count = counts[thorn_name]
|
||||
-- local target_node = minetest.get_node(target_pos)
|
||||
-- -- Cellular automaton rule B3/S12345, approximately
|
||||
-- if count == 3 and target_node.name == "air" then
|
||||
-- minetest.set_node(target_pos, {name=thorn_name})
|
||||
-- elseif count > 5 then
|
||||
-- minetest.set_node(target_pos, {name="air"})
|
||||
-- end
|
||||
-- end
|
||||
--})
|
262
df_primordial_items/jungle_tree.lua
Normal file
@ -0,0 +1,262 @@
|
||||
-- internationalization boilerplate
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(MP.."/intllib.lua")
|
||||
|
||||
-- Leaves
|
||||
minetest.register_node("df_primordial_items:jungle_leaves", {
|
||||
description = S("Primordial Jungle Tree Leaves"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.leaves_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.leaves_usage,
|
||||
drawtype = "plantlike",
|
||||
walkable = false,
|
||||
waving = 2,
|
||||
visual_scale = 1.4,
|
||||
tiles = {"dfcaverns_jungle_leaves_01.png"},
|
||||
inventory_image = "dfcaverns_jungle_leaves_01.png",
|
||||
wield_image = "dfcaverns_jungle_leaves_01.png",
|
||||
paramtype = "light",
|
||||
is_ground_content = false,
|
||||
buildable_to = true,
|
||||
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
items = {"df_primordial_items:jungletree_sapling"},
|
||||
rarity = 10,
|
||||
},
|
||||
{
|
||||
items = {"df_primordial_items:jungle_leaves"},
|
||||
}
|
||||
}
|
||||
},
|
||||
after_place_node = default.after_place_leaves,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_leaves_glowing", {
|
||||
description = S("Phosphorescent Primordial Jungle Tree Leaves"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.glowing_leaves_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.glowing_leaves_usage,
|
||||
drawtype = "plantlike",
|
||||
walkable = false,
|
||||
waving = 2,
|
||||
visual_scale = 1.4,
|
||||
tiles = {"dfcaverns_jungle_leaves_02.png"},
|
||||
inventory_image = "dfcaverns_jungle_leaves_02.png",
|
||||
wield_image = "dfcaverns_jungle_leaves_02.png",
|
||||
paramtype = "light",
|
||||
is_ground_content = false,
|
||||
buildable_to = true,
|
||||
light_source = 2,
|
||||
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1},
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
items = {"df_primordial_items:jungletree_sapling"},
|
||||
rarity = 10,
|
||||
},
|
||||
{
|
||||
items = {"df_primordial_items:jungle_leaves_glowing"},
|
||||
}
|
||||
}
|
||||
},
|
||||
after_place_node = default.after_place_leaves,
|
||||
})
|
||||
|
||||
-- Trunk
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_tree", {
|
||||
description = S("Primordial Jungle Tree"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.tree_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.tree_usage,
|
||||
tiles = {"dfcaverns_jungle_wood_02.png", "dfcaverns_jungle_wood_02.png", "dfcaverns_jungle_wood_01.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, primordial_jungle_tree = 1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_tree_mossy", {
|
||||
description = S("Mossy Primordial Jungle Tree"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.tree_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.tree_usage,
|
||||
tiles = {"dfcaverns_jungle_wood_02.png", "dfcaverns_jungle_wood_02.png", "dfcaverns_jungle_wood_03.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, primordial_jungle_tree = 1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:jungle_tree_glowing", {
|
||||
description = S("Phosphorescent Primordial Jungle Tree"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.tree_glowing_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.tree_glowing_usage,
|
||||
tiles = {"dfcaverns_jungle_wood_02.png", "dfcaverns_jungle_wood_02.png", "dfcaverns_jungle_wood_04.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
light_source = 4,
|
||||
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2, primordial_jungle_tree = 1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
default.register_leafdecay({
|
||||
trunks = {"df_primordial_items:jungle_tree", "df_primordial_items:jungle_tree_mossy", "df_primordial_items:jungle_tree_glowing"},
|
||||
leaves = {"df_primordial_items:jungle_leaves", "df_primordial_items:jungle_leaves_glowing"},
|
||||
radius = 1,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "default:junglewood 4",
|
||||
recipe = {
|
||||
{"group:primordial_jungle_tree"},
|
||||
}
|
||||
})
|
||||
|
||||
----------------------------
|
||||
-- Spawn
|
||||
|
||||
-- TODO: make use of the variant trunk and leaf nodes
|
||||
local c_leaves = minetest.get_content_id("df_primordial_items:jungle_leaves")
|
||||
local c_leaves_glow = minetest.get_content_id("df_primordial_items:jungle_leaves_glowing")
|
||||
local c_trunk = minetest.get_content_id("df_primordial_items:jungle_tree")
|
||||
local c_trunk_mossy = minetest.get_content_id("df_primordial_items:jungle_tree_mossy")
|
||||
local c_trunk_glow = minetest.get_content_id("df_primordial_items:jungle_tree_glowing")
|
||||
|
||||
df_primordial_items.spawn_jungle_tree = function(pos)
|
||||
local x, y, z = pos.x, pos.y, pos.z
|
||||
local height = math.random(8,14)
|
||||
|
||||
local vm = minetest.get_voxel_manip()
|
||||
local minp, maxp = vm:read_from_map(
|
||||
{x = x - 2, y = y - 2, z = z - 2},
|
||||
{x = x + 2, y = y + height, z = z + 2}
|
||||
)
|
||||
local area = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
|
||||
local data = vm:get_data()
|
||||
local vi = area:indexp(pos)
|
||||
|
||||
df_primordial_items.spawn_jungle_tree_vm(height, vi, area, data)
|
||||
|
||||
vm:set_data(data)
|
||||
vm:write_to_map()
|
||||
vm:update_map()
|
||||
end
|
||||
|
||||
local get_tree_nodes = function()
|
||||
local rand = math.random()
|
||||
if rand < 0.5 then
|
||||
return c_trunk_glow, c_leaves_glow
|
||||
end
|
||||
if rand < 0.75 then
|
||||
return c_trunk_mossy, c_leaves
|
||||
end
|
||||
return c_trunk, c_leaves
|
||||
end
|
||||
|
||||
df_primordial_items.spawn_jungle_tree_vm = function(height, vi, area, data)
|
||||
local ystride = area.ystride
|
||||
local zstride = area.zstride
|
||||
local buildable_to = mapgen_helper.buildable_to
|
||||
|
||||
local roots_done = {[vi] = true}
|
||||
for i = 1, 6 do
|
||||
local root_column = vi + math.random(-1,1) + math.random(-1,1)*zstride
|
||||
if not roots_done[root_column] then
|
||||
local trunknode = get_tree_nodes()
|
||||
for y = -2, math.random(0,1) do -- root height is 1 to 2 nodes above ground
|
||||
local root_index = root_column + y * ystride
|
||||
if buildable_to(data[root_index]) then
|
||||
data[root_index] = trunknode
|
||||
end
|
||||
end
|
||||
end
|
||||
roots_done[root_column] = true
|
||||
end
|
||||
|
||||
-- puts a trunk node in the center and surrounds it with leaves
|
||||
local branch = function(bi, glow)
|
||||
local trunknode, leafnode
|
||||
if buildable_to(data[bi]) then
|
||||
trunknode, leafnode = get_tree_nodes()
|
||||
data[bi] = trunknode
|
||||
else
|
||||
return -- if a branch is placed in a non-viable place, don't add leaves
|
||||
end
|
||||
for x = -1, 1 do
|
||||
for z = -1, 1 do
|
||||
for y = -1, 1 do
|
||||
if math.random() < 0.75 then
|
||||
local li = bi + x + z*zstride + y*ystride
|
||||
if buildable_to(data[li]) then
|
||||
data[li] = leafnode
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
for i = 0, height-2 do
|
||||
local y_index = vi + i * ystride
|
||||
if buildable_to(data[y_index]) then
|
||||
data[y_index] = get_tree_nodes()
|
||||
else
|
||||
return -- if we hit something we can't grow through, stop.
|
||||
end
|
||||
if i > 4 then
|
||||
local branch_index = y_index + math.random(-1,1) + math.random(-1,1)*zstride
|
||||
branch(branch_index)
|
||||
end
|
||||
end
|
||||
branch(vi + (height-1)*ystride) -- topper
|
||||
end
|
||||
|
||||
minetest.register_node("df_primordial_items:jungletree_sapling", {
|
||||
description = S("Primordial Jungle Tree Sapling"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.tree_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.tree_usage,
|
||||
tiles = {"dfcaverns_jungle_sapling.png"},
|
||||
inventory_image = "dfcaverns_jungle_sapling.png",
|
||||
wield_image = "dfcaverns_jungle_sapling.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, sapling = 1, light_sensitive_fungus = 13},
|
||||
_dfcaverns_dead_node = "default:dry_shrub",
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
|
||||
},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
walkable = false,
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
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
|
||||
return
|
||||
end
|
||||
minetest.get_node_timer(pos):start(math.random(
|
||||
df_trees.config.tree_min_growth_delay,
|
||||
df_trees.config.tree_max_growth_delay))
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
minetest.get_node_timer(pos):stop()
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||
return
|
||||
end
|
||||
if minetest.get_node_light(pos) > 6 then
|
||||
df_primordial_items.spawn_jungle_tree(pos)
|
||||
else
|
||||
minetest.get_node_timer(pos):start(df_trees.config.tree_min_growth_delay)
|
||||
end
|
||||
end,
|
||||
})
|
24
df_primordial_items/license.txt
Normal 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) 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.
|
389
df_primordial_items/locale/template.pot
Normal file
@ -0,0 +1,389 @@
|
||||
# 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-26 16:09-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_primordial_items\ceiling_fungus.lua:9
|
||||
msgid "Primordial Fungal Lantern"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\ceiling_fungus.lua:23
|
||||
msgid "Primordial Fungal Lantern Stalk"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\ceiling_fungus.lua:35
|
||||
#: df_primordial_items\fungal_nodes.lua:50
|
||||
#: df_primordial_items\fungal_nodes.lua:69
|
||||
msgid "Primordial Fungal Orb"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:5
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:6
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:8
|
||||
msgid ""
|
||||
"The soil of the primordial jungle is rife with strange life at every scale."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:9
|
||||
msgid ""
|
||||
"When left uncultivated primordial jungle soil will sprout all manner of "
|
||||
"strange wild plants."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:10
|
||||
msgid ""
|
||||
"Fungal fibers have infiltrated the ground in a spongy mass, making the soil "
|
||||
"half mineral and half living matter."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:11
|
||||
msgid ""
|
||||
"When left uncultivated mycelial soil will sprout all manner of strange wild "
|
||||
"fungi."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:13
|
||||
msgid ""
|
||||
"The dark-leaved ferns of the primordial jungle harken back to an earlier era "
|
||||
"of life in the world."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:15
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:18
|
||||
msgid ""
|
||||
"Tangled weaves of ivy hang from the ceiling where there are wide enough gaps "
|
||||
"between the bright sources of light."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:19
|
||||
msgid ""
|
||||
"Ivy is climbable, if it hangs close enough to the ground it can serve as a "
|
||||
"path between floor and ceiling."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:20
|
||||
msgid ""
|
||||
"Somewhere above an enormous plant has wedged its roots down through the rock "
|
||||
"and emerged from the ceiling of another cavern."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:21
|
||||
msgid "These hanging roots are climbable."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:23
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:26
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:27
|
||||
msgid ""
|
||||
"Like wood of the surface world, primordial jungle trees can be chopped and "
|
||||
"carved as building material or as fuel."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:28
|
||||
msgid ""
|
||||
"The cracks in the bark of some primordial jungle trees become host to "
|
||||
"phosphorescent veins of symbiotic fungus."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:29
|
||||
msgid ""
|
||||
"The glowing bark fungus doesn't extend into the wood of the trunk, resulting "
|
||||
"in surprisingly mundane building material when hewn."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:32
|
||||
msgid ""
|
||||
"Some fronds of primordial jungle trees also become host to the "
|
||||
"phosphorescent fungus that creeps through cracks in the bark."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:35
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:36
|
||||
msgid ""
|
||||
"When a fern grows to such sizes its stem becomes dense enough to be used as "
|
||||
"a form of wood."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:38
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:39
|
||||
msgid ""
|
||||
"Much like a rope, hyphae have fibers inside that can be unraveled and used "
|
||||
"for a variety of crafts."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:40
|
||||
msgid "Fibers extracted from gigantic fungal hyphae."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:45
|
||||
msgid ""
|
||||
"The grandest of the great mushroom species can be found in the deepest "
|
||||
"primordial caverns. Their broad caps have hanging gills."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:46
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:63
|
||||
msgid ""
|
||||
"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."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\doc.lua:64
|
||||
msgid ""
|
||||
"The gnarled interwoven root-like foundations of this plant material is not "
|
||||
"useful as building material, but can serve as a fuel source."
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\fungal_nodes.lua:11
|
||||
#: df_primordial_items\fungal_nodes.lua:29
|
||||
msgid "Primordial Fungal Grass"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\fungal_nodes.lua:88
|
||||
msgid "Primordial Fungal Pod"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\fungal_nodes.lua:110
|
||||
msgid "Dirt with Primordial Mycelium"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\fungal_nodes.lua:126
|
||||
msgid "Dirt with Primordial Mycelium and Footprint"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\giant_fern.lua:9
|
||||
#: df_primordial_items\giant_fern.lua:23
|
||||
#: df_primordial_items\giant_fern.lua:60
|
||||
#: df_primordial_items\giant_fern.lua:97
|
||||
msgid "Giant Fern Stem"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\giant_fern.lua:134
|
||||
msgid "Fern Wood"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\giant_fern.lua:152
|
||||
msgid "Giant Fern Leaves"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\giant_fern.lua:267
|
||||
msgid "Giant Fern Sapling"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\giant_mycelium.lua:24
|
||||
msgid "Rooted Giant Hypha"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\giant_mycelium.lua:53
|
||||
msgid "Giant Hypha"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\giant_mycelium.lua:83
|
||||
msgid "Giant Mycelial Fibers"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\giant_mycelium.lua:91
|
||||
msgid "Mycelial thread"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\giant_mycelium.lua:297
|
||||
#: df_primordial_items\giant_mycelium.lua:362
|
||||
msgid "Giant Hypha Apical Meristem"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_mushroom.lua:9
|
||||
msgid "Primordial Jungle Mushroom Trunk"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_mushroom.lua:21
|
||||
msgid "Pale Jungle Mushroom Cap"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_mushroom.lua:45
|
||||
msgid "Dark Jungle Mushroom Cap"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_mushroom.lua:69
|
||||
msgid "Diced Mushroom"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_mushroom.lua:91
|
||||
msgid "Primordial Jungle Mushroom Sapling"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:14
|
||||
#: df_primordial_items\jungle_nodes.lua:33
|
||||
msgid "Primordial Fern"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:55
|
||||
msgid "Primordial Flower"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:74
|
||||
#: df_primordial_items\jungle_nodes.lua:93
|
||||
msgid "Primordial Jungle Pod"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:116
|
||||
#: df_primordial_items\jungle_nodes.lua:134
|
||||
#: df_primordial_items\jungle_nodes.lua:153
|
||||
msgid "Primordial Jungle Grass"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:176
|
||||
msgid "Primordial Jungle Ivy"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:203
|
||||
#: df_primordial_items\jungle_nodes.lua:221
|
||||
msgid "Primordial Jungle Mushroom"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:242
|
||||
msgid "Dirt With Primordial Jungle Grass"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:252
|
||||
msgid "Primordial Plant Matter"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:270
|
||||
msgid "Dirt With Primordial Jungle Grass and Footprint"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:277
|
||||
msgid "Primordial Plant Matter with Footprint"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:286
|
||||
msgid "Packed Primordial Jungle Roots"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:300
|
||||
msgid "Primordial Jungle Roots"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:318
|
||||
msgid "Primordial Jungle Root"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_nodes.lua:339
|
||||
msgid "Primordial Jungle Thorns"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_tree.lua:7
|
||||
msgid "Primordial Jungle Tree Leaves"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_tree.lua:38
|
||||
msgid "Phosphorescent Primordial Jungle Tree Leaves"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_tree.lua:72
|
||||
msgid "Primordial Jungle Tree"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_tree.lua:84
|
||||
msgid "Mossy Primordial Jungle Tree"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_tree.lua:96
|
||||
msgid "Phosphorescent Primordial Jungle Tree"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\jungle_tree.lua:225
|
||||
msgid "Primordial Jungle Tree Sapling"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\primordial_mushroom.lua:6
|
||||
msgid "Primordial Mushroom Trunk"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\primordial_mushroom.lua:18
|
||||
msgid "Primordial Mushroom Cap"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\primordial_mushroom.lua:30
|
||||
msgid "Primordial Mushroom Gills"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\primordial_mushroom.lua:61
|
||||
msgid "Glowing Primordial Mushroom Gills"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\primordial_mushroom.lua:99
|
||||
msgid "Primordial Mushroom Trunk Wood"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\primordial_mushroom.lua:117
|
||||
msgid "Primordial Cap Wood"
|
||||
msgstr ""
|
||||
|
||||
#: df_primordial_items\primordial_mushroom.lua:692
|
||||
msgid "Primordial Mushroom Spawn"
|
||||
msgstr ""
|
6
df_primordial_items/locale/update.bat
Normal 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
df_primordial_items/mod.conf
Normal file
@ -0,0 +1,4 @@
|
||||
name = df_primordial_items
|
||||
description = A collection of flora found in the "primordial" cavern layer of DF Caverns
|
||||
depends = default, mapgen_helper, subterrane, df_underworld_items, df_trees
|
||||
optional_depends = trail, df_farming
|
74
df_primordial_items/models/dfcaverns_fern_slant.obj
Normal file
@ -0,0 +1,74 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
g tunnel_tube_slant_2_Bottom_tunnel_tube_slant_Cube.002_Bottom
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v 0.500000 -0.500000 0.500000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
v -0.500000 -0.500000 0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
s 1
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
g tunnel_tube_slant_5_Front_tunnel_tube_slant_Cube.002_Front
|
||||
v 0.500000 -0.500000 0.500000
|
||||
v 0.500000 0.500000 0.000000
|
||||
v -0.500000 0.500000 0.000000
|
||||
v -0.500000 -0.500000 0.500000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vn 0.0000 0.4472 0.8944
|
||||
s 1
|
||||
f 5/5/2 6/6/2 7/7/2 8/8/2
|
||||
g tunnel_tube_slant_1_Top_tunnel_tube_slant_Cube.002_Top
|
||||
v 0.500000 0.500000 -1.000000
|
||||
v -0.500000 0.500000 -1.000000
|
||||
v 0.500000 0.500000 0.000000
|
||||
v -0.500000 0.500000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
s 1
|
||||
f 9/9/3 10/10/3 12/11/3 11/12/3
|
||||
g tunnel_tube_slant_3_Left_tunnel_tube_slant_Cube.002_Left
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.500000 0.500000 0.000000
|
||||
v -0.500000 0.500000 -1.000000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 1.500000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
s 1
|
||||
f 13/13/4 14/14/4 15/15/4 16/16/4
|
||||
g tunnel_tube_slant_6_Back_tunnel_tube_slant_Cube.002_Back
|
||||
v 0.500000 0.500000 -1.000000
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
v -0.500000 0.500000 -1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn 0.0000 -0.4472 -0.8944
|
||||
s 1
|
||||
f 17/17/5 18/18/5 19/19/5 20/20/5
|
||||
g tunnel_tube_slant_4_Right_tunnel_tube_slant_Cube.002_Right
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v 0.500000 0.500000 -1.000000
|
||||
v 0.500000 0.500000 0.000000
|
||||
v 0.500000 -0.500000 0.500000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.500000 1.000000
|
||||
vt 0.500000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vn 1.0000 0.0000 0.0000
|
||||
s 1
|
||||
f 21/21/6 22/22/6 23/23/6 24/24/6
|
74
df_primordial_items/models/dfcaverns_fern_slant_2.obj
Normal file
@ -0,0 +1,74 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
g tunnel_tube_slant_Cube.002_Bottom.001
|
||||
v 0.500000 -0.500000 -0.000000
|
||||
v 0.500000 -0.500000 1.000000
|
||||
v -0.500000 -0.500000 -0.000000
|
||||
v -0.500000 -0.500000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
s 1
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
g tunnel_tube_slant_Cube.002_Front.001
|
||||
v 0.500000 -0.500000 1.000000
|
||||
v 0.500000 0.500000 0.500000
|
||||
v -0.500000 0.500000 0.500000
|
||||
v -0.500000 -0.500000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vn 0.0000 0.4472 0.8944
|
||||
s 1
|
||||
f 5/5/2 6/6/2 7/7/2 8/8/2
|
||||
g tunnel_tube_slant_Cube.002_Top.001
|
||||
v 0.500000 0.500000 -0.500000
|
||||
v -0.500000 0.500000 -0.500000
|
||||
v 0.500000 0.500000 0.500000
|
||||
v -0.500000 0.500000 0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
s 1
|
||||
f 9/9/3 10/10/3 12/11/3 11/12/3
|
||||
g tunnel_tube_slant_Cube.002_Left.001
|
||||
v -0.500000 -0.500000 1.000000
|
||||
v -0.500000 0.500000 0.500000
|
||||
v -0.500000 0.500000 -0.500000
|
||||
v -0.500000 -0.500000 -0.000000
|
||||
vt -0.500000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.500000 0.000000
|
||||
vn -1.0000 -0.0000 0.0000
|
||||
s 1
|
||||
f 13/13/4 14/14/4 15/15/4 16/16/4
|
||||
g tunnel_tube_slant_Cube.002_Back.001
|
||||
v 0.500000 0.500000 -0.500000
|
||||
v 0.500000 -0.500000 -0.000000
|
||||
v -0.500000 -0.500000 -0.000000
|
||||
v -0.500000 0.500000 -0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn 0.0000 -0.4472 -0.8944
|
||||
s 1
|
||||
f 17/17/5 18/18/5 19/19/5 20/20/5
|
||||
g tunnel_tube_slant_Cube.002_Right.001
|
||||
v 0.500000 -0.500000 -0.000000
|
||||
v 0.500000 0.500000 -0.500000
|
||||
v 0.500000 0.500000 0.500000
|
||||
v 0.500000 -0.500000 1.000000
|
||||
vt 0.500000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.500000 0.000000
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
s 1
|
||||
f 21/21/6 22/22/6 23/23/6 24/24/6
|
74
df_primordial_items/models/dfcaverns_fern_slant_full.obj
Normal file
@ -0,0 +1,74 @@
|
||||
# Blender v2.79 (sub 0) OBJ File: ''
|
||||
# www.blender.org
|
||||
g tunnel_tube_slant_Cube.002_Bottom.002
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v 0.500000 -0.500000 0.500000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
v -0.500000 -0.500000 0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn 0.0000 -1.0000 -0.0000
|
||||
s 1
|
||||
f 1/1/1 2/2/1 4/3/1 3/4/1
|
||||
g tunnel_tube_slant_Cube.002_Front.002
|
||||
v 0.500000 -0.500000 0.500000
|
||||
v 0.500000 0.500000 -0.500000
|
||||
v -0.500000 0.500000 -0.500000
|
||||
v -0.500000 -0.500000 0.500000
|
||||
vt 1.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt -0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vn 0.0000 0.7071 0.7071
|
||||
s 1
|
||||
f 5/5/2 6/6/2 7/7/2 8/8/2
|
||||
g tunnel_tube_slant_Cube.002_Top.002
|
||||
v 0.500000 0.500000 -1.500000
|
||||
v -0.500000 0.500000 -1.500000
|
||||
v 0.500000 0.500000 -0.500000
|
||||
v -0.500000 0.500000 -0.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 1.000000
|
||||
vt -0.000000 0.000000
|
||||
vt 1.000000 -0.000000
|
||||
vn 0.0000 1.0000 0.0000
|
||||
s 1
|
||||
f 9/9/3 10/10/3 12/11/3 11/12/3
|
||||
g tunnel_tube_slant_Cube.002_Left.002
|
||||
v -0.500000 -0.500000 0.500000
|
||||
v -0.500000 0.500000 -0.500000
|
||||
v -0.500000 0.500000 -1.500000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
vt -0.000000 0.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 2.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vn -1.0000 0.0000 0.0000
|
||||
s 1
|
||||
f 13/13/4 14/14/4 15/15/4 16/16/4
|
||||
g tunnel_tube_slant_Cube.002_Back.002
|
||||
v 0.500000 0.500000 -1.500000
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v -0.500000 -0.500000 -0.500000
|
||||
v -0.500000 0.500000 -1.500000
|
||||
vt 1.000000 1.000000
|
||||
vt 1.000000 0.000000
|
||||
vt 0.000000 0.000000
|
||||
vt 0.000000 1.000000
|
||||
vn 0.0000 -0.7071 -0.7071
|
||||
s 1
|
||||
f 17/17/5 18/18/5 19/19/5 20/20/5
|
||||
g tunnel_tube_slant_Cube.002_Right.002
|
||||
v 0.500000 -0.500000 -0.500000
|
||||
v 0.500000 0.500000 -1.500000
|
||||
v 0.500000 0.500000 -0.500000
|
||||
v 0.500000 -0.500000 0.500000
|
||||
vt 1.000000 0.000000
|
||||
vt 2.000000 1.000000
|
||||
vt 1.000000 1.000000
|
||||
vt 0.000000 0.000000
|
||||
vn 1.0000 -0.0000 0.0000
|
||||
s 1
|
||||
f 21/21/6 22/22/6 23/23/6 24/24/6
|
728
df_primordial_items/primordial_mushroom.lua
Normal file
@ -0,0 +1,728 @@
|
||||
-- internationalization boilerplate
|
||||
local MP = minetest.get_modpath(minetest.get_current_modname())
|
||||
local S, NS = dofile(MP.."/intllib.lua")
|
||||
|
||||
minetest.register_node("df_primordial_items:mushroom_trunk", {
|
||||
description = S("Primordial Mushroom Trunk"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_mushroom_usage,
|
||||
tiles = {"dfcaverns_mush_shaft_top.png", "dfcaverns_mush_shaft_top.png", "dfcaverns_mush_shaft_side.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
|
||||
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:mushroom_cap", {
|
||||
description = S("Primordial Mushroom Cap"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_mushroom_usage,
|
||||
tiles = {"dfcaverns_mush_cap.png"},
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = false,
|
||||
groups = {tree = 1, choppy = 2, oddly_breakable_by_hand = 1, flammable = 2},
|
||||
sounds = df_trees.node_sound_tree_soft_fungus_defaults(),
|
||||
on_place = minetest.rotate_node
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:mushroom_gills", {
|
||||
description = S("Primordial Mushroom Gills"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.gills_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.gills_usage,
|
||||
tiles = {"dfcaverns_mush_gills.png"},
|
||||
inventory_image = "dfcaverns_mush_gills.png",
|
||||
wield_image = "dfcaverns_mush_gills.png",
|
||||
groups = {snappy = 3, flora = 1, flammable = 1, leaves = 1},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
waving = 2,
|
||||
walkable = false,
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
-- player will get sapling with 1/20 chance
|
||||
items = {"df_primordial_items:mush_sapling"},
|
||||
rarity = 20,
|
||||
},
|
||||
{
|
||||
items = {"df_primordial_items:mushroom_gills"},
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:mushroom_gills_glowing", {
|
||||
description = S("Glowing Primordial Mushroom Gills"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.gills_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.gills_usage,
|
||||
tiles = {"dfcaverns_mush_gills_glow.png"},
|
||||
inventory_image = "dfcaverns_mush_gills_glow.png",
|
||||
wield_image = "dfcaverns_mush_gills_glow.png",
|
||||
groups = {snappy = 3, flora = 1, flammable = 1, leaves = 1},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
waving = 2,
|
||||
walkable = false,
|
||||
is_ground_content = false,
|
||||
light_source = 6,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
drop = {
|
||||
max_items = 1,
|
||||
items = {
|
||||
{
|
||||
-- player will get sapling with 1/20 chance
|
||||
items = {"df_primordial_items:mush_sapling"},
|
||||
rarity = 20,
|
||||
},
|
||||
{
|
||||
items = {"df_primordial_items:mushroom_gills_glowing"},
|
||||
}
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
default.register_leafdecay({
|
||||
trunks = {"df_primordial_items:mushroom_trunk", "df_primordial_items:mushroom_cap"},
|
||||
leaves = {"df_primordial_items:mushroom_gills", "df_primordial_items:mushroom_gills_glowing"},
|
||||
radius = 5,
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:primordial_mush_trunk_wood", {
|
||||
description = S("Primordial Mushroom Trunk Wood"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_mushroom_usage,
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"dfcaverns_mush_shaft_side.png^(dfcaverns_mush_gills.png^[multiply:#888888)"},
|
||||
is_ground_content = false,
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "df_primordial_items:primordial_mush_trunk_wood 4",
|
||||
recipe = {
|
||||
{"df_primordial_items:mushroom_trunk"},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_node("df_primordial_items:primordial_mush_cap_wood", {
|
||||
description = S("Primordial Cap Wood"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_mushroom_usage,
|
||||
paramtype2 = "facedir",
|
||||
tiles = {"dfcaverns_mush_cap.png^dfcaverns_mush_gills.png"},
|
||||
is_ground_content = false,
|
||||
groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2, wood = 1},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "df_primordial_items:primordial_mush_cap_wood 4",
|
||||
recipe = {
|
||||
{"df_primordial_items:mushroom_cap"},
|
||||
}
|
||||
})
|
||||
|
||||
------
|
||||
-- Schematics:
|
||||
-- Originally created by ClockGen, released under CC-BY 4.0
|
||||
|
||||
local replace_on_buildable_to = function(old_node_id, data, area, vi)
|
||||
return mapgen_helper.buildable_to(old_node_id)
|
||||
end
|
||||
|
||||
local n1 = {name="air", prob=0}
|
||||
local n2 = {name="df_primordial_items:mushroom_gills"}
|
||||
local n3 = {name="df_primordial_items:mushroom_cap", place_on_condition = replace_on_buildable_to}
|
||||
local n4 = {name="df_primordial_items:mushroom_trunk", place_on_condition = replace_on_buildable_to}
|
||||
local n5 = {name="df_primordial_items:mushroom_gills_glowing"}
|
||||
|
||||
local bc_mushroom_3 = {
|
||||
size = {x=3, y=3, z=3},
|
||||
center_pos = {x=1, y=0, z=1},
|
||||
data = {
|
||||
n1, n1, n1, n2, n2, n1, n3, n3, n3, n1, n4, n1, n2, n4, n5, n3, n3,
|
||||
n3, n1, n1, n1, n1, n5, n1, n3, n3, n3,
|
||||
},
|
||||
}
|
||||
|
||||
local bc_mushroom_5 = {
|
||||
size = {x=5, y=5, z=5},
|
||||
center_pos = {x=2, y=0, z=2},
|
||||
data = {
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3,
|
||||
n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n2, n1, n1, n1, n3, n2, n5, n2, n3, n1, n3, n3, n3, n1, n1,
|
||||
n1, n4, n1, n1, n1, n1, n4, n1, n1, n1, n2, n4, n5, n1, n3, n2, n4,
|
||||
n5, n3, n1, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n5, n2, n1, n1, n3, n5, n2, n2, n3, n1, n3, n3, n3, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3,
|
||||
n1, n1, n1, n1, n1, n1,
|
||||
},
|
||||
}
|
||||
|
||||
local bc_mushroom_9 = {
|
||||
size = {x=9, y=9, z=9},
|
||||
center_pos = {x=4, y=0, z=4},
|
||||
data = {
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3,
|
||||
n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n2, n3, n3, n3, n1,
|
||||
n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n5,
|
||||
n2, n1, n1, n1, n1, n3, n3, n2, n5, n2, n3, n3, n1, n1, n1, n1, n3,
|
||||
n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||
n3, n3, n2, n2, n5, n2, n2, n3, n3, n1, n1, n3, n3, n3, n3, n3, n1,
|
||||
n1, n1, n1, n1, n1, n4, n1, n1, n1, n1, n1, n1, n1, n1, n4, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n4, n1, n1, n1, n1, n1, n1, n1, n1, n4, n1,
|
||||
n1, n5, n1, n1, n5, n1, n1, n4, n2, n1, n5, n1, n1, n5, n1, n5, n4,
|
||||
n2, n1, n5, n1, n1, n5, n1, n5, n4, n2, n2, n5, n1, n3, n5, n2, n5,
|
||||
n4, n2, n5, n5, n3, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1,
|
||||
n1, n1, n2, n1, n1, n2, n1, n1, n1, n1, n1, n2, n1, n2, n2, n1, n1,
|
||||
n1, n1, n1, n2, n5, n2, n2, n1, n1, n3, n3, n5, n2, n5, n2, n2, n3,
|
||||
n3, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n5,
|
||||
n1, n1, n1, n1, n1, n1, n3, n3, n5, n2, n2, n3, n3, n1, n1, n1, n1,
|
||||
n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1,
|
||||
n1, n1, n3, n3, n3, n5, n3, n3, n3, n1, n1, n1, n1, n1, n3, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
},
|
||||
}
|
||||
|
||||
local bc_mushroom_21 = {
|
||||
size = {y = 21, x = 19, z = 19},
|
||||
center_pos = {x=9, y=0, z=9},
|
||||
data = {
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n2, n3,
|
||||
n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3,
|
||||
n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5,
|
||||
n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n5, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n3, n3, n5, n5, n5, n5, n2, n3, n3, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n3, n3, n3, n3, n5, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n2, n1, n1, n2, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n2, n1, n1, n2, n1, n5, n2, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n2, n1, n5, n2, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n2, n1, n5, n2, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n2, n1, n1, n2, n1, n5,
|
||||
n2, n3, n3, n3, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n2, n5, n2,
|
||||
n2, n5, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3,
|
||||
n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1,
|
||||
n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1,
|
||||
n5, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n5, n1, n2, n2,
|
||||
n1, n1, n5, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n5, n1,
|
||||
n2, n2, n1, n1, n5, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1,
|
||||
n5, n1, n2, n2, n1, n2, n5, n1, n5, n1, n1, n1, n1, n1, n1, n1, n3,
|
||||
n5, n2, n5, n1, n2, n2, n1, n2, n5, n2, n5, n3, n1, n1, n1, n1, n1,
|
||||
n1, n3, n3, n3, n5, n2, n2, n2, n5, n2, n5, n3, n3, n3, n1, n1, n1,
|
||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n2, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n2, n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n5, n1, n2, n1, n1, n1, n2, n2, n2, n2, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n5, n1, n2, n1, n1, n1, n2, n2, n2, n2, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n5, n1, n2, n1, n1, n1, n2, n2, n2, n2,
|
||||
n1, n1, n1, n1, n1, n1, n3, n3, n2, n5, n1, n2, n1, n1, n1, n2, n2,
|
||||
n2, n2, n3, n3, n1, n1, n1, n1, n3, n3, n3, n5, n2, n2, n5, n5, n2,
|
||||
n2, n2, n2, n3, n3, n3, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n4,
|
||||
n4, n4, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3,
|
||||
n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n2, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1,
|
||||
n2, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n2, n1,
|
||||
n2, n1, n2, n1, n1, n1, n1, n1, n1, n2, n1, n1, n2, n1, n1, n1, n2,
|
||||
n2, n1, n2, n5, n2, n1, n1, n1, n1, n1, n1, n2, n1, n1, n2, n1, n1,
|
||||
n1, n2, n2, n2, n2, n5, n2, n1, n1, n1, n1, n1, n1, n2, n1, n1, n2,
|
||||
n1, n1, n1, n2, n2, n2, n2, n5, n2, n1, n1, n1, n1, n3, n3, n2, n1,
|
||||
n1, n2, n1, n1, n5, n2, n2, n2, n2, n5, n2, n3, n3, n1, n1, n3, n3,
|
||||
n3, n2, n2, n2, n2, n5, n4, n2, n2, n2, n2, n5, n3, n3, n3, n1, n1,
|
||||
n1, n1, n3, n3, n3, n3, n4, n4, n4, n4, n4, n3, n3, n3, n3, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2,
|
||||
n1, n1, n1, n1, n5, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n2, n1, n1, n1, n1, n5, n5, n1, n1, n1, n1, n2, n5, n1, n1, n1,
|
||||
n1, n1, n1, n2, n1, n1, n1, n1, n5, n5, n1, n1, n1, n1, n2, n5, n1,
|
||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n5, n5, n1, n2, n1, n1, n2,
|
||||
n5, n1, n1, n1, n3, n2, n1, n2, n1, n1, n1, n2, n4, n5, n1, n2, n1,
|
||||
n1, n2, n5, n3, n1, n1, n3, n3, n2, n2, n5, n5, n2, n4, n4, n4, n2,
|
||||
n2, n2, n2, n2, n3, n3, n1, n1, n1, n3, n3, n3, n3, n4, n4, n4, n4,
|
||||
n4, n4, n4, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3,
|
||||
n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4,
|
||||
n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n2, n2, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n4, n4, n4, n2, n2, n2,
|
||||
n1, n1, n2, n1, n1, n1, n1, n5, n5, n1, n1, n1, n1, n4, n4, n4, n2,
|
||||
n2, n2, n1, n1, n2, n1, n1, n1, n1, n5, n5, n1, n1, n5, n2, n4, n4,
|
||||
n4, n2, n2, n2, n1, n1, n2, n1, n1, n1, n1, n5, n5, n1, n1, n5, n2,
|
||||
n4, n4, n4, n2, n2, n2, n1, n5, n2, n1, n1, n3, n3, n5, n5, n1, n1,
|
||||
n5, n2, n4, n4, n4, n2, n2, n2, n1, n5, n2, n3, n3, n3, n3, n3, n5,
|
||||
n5, n2, n5, n4, n4, n4, n4, n4, n2, n2, n2, n5, n3, n3, n3, n1, n1,
|
||||
n3, n3, n3, n4, n4, n4, n4, n4, n4, n4, n4, n4, n3, n3, n3, n1, n1,
|
||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4,
|
||||
n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n4, n4,
|
||||
n4, n1, n1, n1, n1, n1, n1, n2, n1, n1, n2, n1, n1, n1, n1, n1, n5,
|
||||
n4, n4, n4, n1, n1, n1, n1, n1, n1, n2, n1, n1, n2, n1, n1, n1, n5,
|
||||
n1, n5, n4, n4, n4, n2, n1, n1, n1, n1, n1, n2, n1, n1, n2, n1, n1,
|
||||
n1, n5, n1, n5, n4, n4, n4, n2, n1, n1, n1, n2, n1, n2, n1, n1, n2,
|
||||
n1, n1, n1, n5, n1, n5, n4, n4, n4, n2, n1, n1, n1, n2, n1, n2, n1,
|
||||
n1, n2, n1, n1, n1, n5, n1, n5, n4, n4, n4, n2, n1, n1, n1, n2, n1,
|
||||
n2, n1, n3, n2, n1, n1, n1, n5, n2, n4, n4, n4, n4, n4, n5, n1, n1,
|
||||
n2, n1, n2, n3, n3, n3, n2, n2, n5, n5, n4, n4, n4, n4, n4, n4, n4,
|
||||
n2, n2, n2, n2, n3, n3, n1, n1, n3, n3, n3, n4, n4, n4, n4, n4, n4,
|
||||
n4, n4, n4, n3, n3, n3, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3,
|
||||
n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3,
|
||||
n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4,
|
||||
n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n4, n4, n4, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n4, n4, n4, n5, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n4, n4, n4, n5, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n4, n4, n4, n5, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n2, n4, n4, n4, n5, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n2, n4, n4, n4,
|
||||
n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n2, n4,
|
||||
n4, n4, n5, n1, n1, n1, n1, n1, n1, n1, n3, n3, n2, n2, n1, n1, n1,
|
||||
n2, n4, n4, n4, n5, n1, n1, n1, n1, n2, n3, n3, n3, n3, n3, n2, n2,
|
||||
n5, n5, n4, n4, n4, n4, n4, n2, n5, n5, n2, n3, n3, n3, n1, n1, n3,
|
||||
n3, n3, n4, n4, n4, n4, n4, n4, n4, n4, n4, n3, n3, n3, n1, n1, n1,
|
||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n2, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n2, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n5, n2, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n5, n2, n1, n1, n1, n1, n1, n1, n5, n1,
|
||||
n1, n1, n3, n5, n1, n1, n1, n1, n1, n5, n4, n2, n1, n1, n1, n1, n1,
|
||||
n5, n3, n1, n1, n3, n3, n5, n5, n2, n5, n2, n4, n4, n4, n2, n2, n2,
|
||||
n2, n5, n3, n3, n1, n1, n1, n3, n3, n3, n3, n4, n4, n4, n4, n4, n4,
|
||||
n4, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3,
|
||||
n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3,
|
||||
n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n5,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1,
|
||||
n5, n5, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n5, n1, n1, n1, n1,
|
||||
n1, n2, n5, n5, n1, n1, n1, n5, n3, n3, n1, n1, n3, n3, n3, n5, n2,
|
||||
n5, n2, n2, n4, n5, n5, n2, n2, n5, n3, n3, n3, n1, n1, n1, n1, n3,
|
||||
n3, n3, n3, n4, n4, n4, n4, n4, n3, n3, n3, n3, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1,
|
||||
n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1,
|
||||
n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n2, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n2, n5, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n2, n5, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n2, n5, n1, n2, n2, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n3, n3, n2, n1, n1, n1, n2, n5, n2, n2, n2, n1, n2, n3, n3,
|
||||
n1, n1, n1, n1, n3, n3, n3, n5, n2, n5, n2, n5, n2, n2, n2, n5, n3,
|
||||
n3, n3, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n4, n4, n4, n3, n3,
|
||||
n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3,
|
||||
n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5,
|
||||
n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n5, n1, n1, n1, n2, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n5, n1, n5, n1, n2, n1, n2, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n5, n1, n5, n1, n2, n1, n2, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n5, n1, n5, n1, n2, n1, n2, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n5, n1, n2, n1, n2, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n5, n1, n2, n2,
|
||||
n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n2, n5, n1, n5, n1,
|
||||
n2, n2, n2, n1, n5, n5, n3, n1, n1, n1, n1, n1, n1, n3, n3, n3, n2,
|
||||
n5, n2, n2, n2, n2, n5, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n3,
|
||||
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2,
|
||||
n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n2, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n2, n5, n2, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n3, n3, n3, n2, n5, n2, n2, n1, n1, n2, n3, n3, n3, n1, n1,
|
||||
n1, n1, n1, n1, n3, n3, n3, n3, n5, n2, n2, n5, n5, n3, n3, n3, n3,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n5, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1,
|
||||
n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1,
|
||||
n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n5, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n5, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n5, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n5, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n5, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n5, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n5, n1, n1, n1, n5,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n5, n5, n1,
|
||||
n2, n5, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3,
|
||||
n3, n2, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n3, n3, n3, n2, n3, n3, n3, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3,
|
||||
n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||
}
|
||||
}
|
||||
|
||||
df_primordial_items.get_primordial_mushroom = function()
|
||||
local rand = math.random()
|
||||
if rand < 0.3 then
|
||||
return bc_mushroom_3
|
||||
elseif rand < 0.7 then
|
||||
return bc_mushroom_5
|
||||
elseif rand < 0.975 then
|
||||
return bc_mushroom_9
|
||||
end
|
||||
return bc_mushroom_21
|
||||
end
|
||||
|
||||
minetest.register_node("df_primordial_items:mush_sapling", {
|
||||
description = S("Primordial Mushroom Spawn"),
|
||||
_doc_items_longdesc = df_primordial_items.doc.giant_mushroom_desc,
|
||||
_doc_items_usagehelp = df_primordial_items.doc.giant_mushroom_usage,
|
||||
tiles = {"dfcaverns_mush_sapling.png"},
|
||||
inventory_image = "dfcaverns_mush_sapling.png",
|
||||
wield_image = "dfcaverns_mush_sapling.png",
|
||||
groups = {snappy = 3, flora = 1, attached_node = 1, flammable = 1, sapling = 1, light_sensitive_fungus = 11},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-4 / 16, -0.5, -4 / 16, 4 / 16, 7 / 16, 4 / 16}
|
||||
},
|
||||
paramtype = "light",
|
||||
drawtype = "plantlike",
|
||||
buildable_to = true,
|
||||
walkable = false,
|
||||
is_ground_content = false,
|
||||
sounds = default.node_sound_leaves_defaults(),
|
||||
use_texture_alpha = true,
|
||||
sunlight_propagates = true,
|
||||
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
|
||||
return
|
||||
end
|
||||
minetest.get_node_timer(pos):start(math.random(
|
||||
df_trees.config.tree_min_growth_delay,
|
||||
df_trees.config.tree_max_growth_delay))
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
minetest.get_node_timer(pos):stop()
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||
return
|
||||
end
|
||||
local mushroom = df_primordial_items.get_primordial_mushroom()
|
||||
local rotation = (math.random(1,4)-1)*90
|
||||
minetest.set_node(pos, {name="air"}) -- clear sapling so mushroom can replace it
|
||||
mapgen_helper.place_schematic(pos, mushroom, rotation)
|
||||
end,
|
||||
})
|
||||
|
5
df_primordial_items/settingtypes.txt
Normal file
@ -0,0 +1,5 @@
|
||||
dfcaverns_mycelium_min_growth_delay (Minimum mycelium growth delay) int 240
|
||||
dfcaverns_mycelium_max_growth_delay (Maximum mycelium growth delay) int 400
|
||||
|
||||
dfcaverns_jungle_min_growth_delay (Minimum growth delay for large jungle plants) int 300
|
||||
dfcaverns_jungle_max_growth_delay (Maximum growth delay for large jungle plants) int 1500
|
BIN
df_primordial_items/textures/dfcaverns_jungle_fern_01.png
Normal file
After Width: | Height: | Size: 421 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_fern_02.png
Normal file
After Width: | Height: | Size: 239 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_fern_03.png
Normal file
After Width: | Height: | Size: 280 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_fern_bark.png
Normal file
After Width: | Height: | Size: 306 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_fern_leaves_01.png
Normal file
After Width: | Height: | Size: 293 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_fern_stem.png
Normal file
After Width: | Height: | Size: 557 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_flower_01.png
Normal file
After Width: | Height: | Size: 352 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_glow_plant_01.png
Normal file
After Width: | Height: | Size: 348 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_glow_plant_02.png
Normal file
After Width: | Height: | Size: 324 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_grass_01.png
Normal file
After Width: | Height: | Size: 436 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_grass_02.png
Normal file
After Width: | Height: | Size: 529 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_grass_03.png
Normal file
After Width: | Height: | Size: 522 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_ivy_01.png
Normal file
After Width: | Height: | Size: 307 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_leaves_01.png
Normal file
After Width: | Height: | Size: 331 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_leaves_02.png
Normal file
After Width: | Height: | Size: 368 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_mushroom_01.png
Normal file
After Width: | Height: | Size: 275 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_mushroom_02.png
Normal file
After Width: | Height: | Size: 355 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_mushroom_stem.png
Normal file
After Width: | Height: | Size: 601 B |
After Width: | Height: | Size: 598 B |
After Width: | Height: | Size: 301 B |
After Width: | Height: | Size: 384 B |
After Width: | Height: | Size: 398 B |
After Width: | Height: | Size: 395 B |
After Width: | Height: | Size: 673 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_root_01.png
Normal file
After Width: | Height: | Size: 421 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_root_02.png
Normal file
After Width: | Height: | Size: 291 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_sapling.png
Normal file
After Width: | Height: | Size: 200 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_thorns_01.png
Normal file
After Width: | Height: | Size: 416 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_wood_01.png
Normal file
After Width: | Height: | Size: 390 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_wood_02.png
Normal file
After Width: | Height: | Size: 458 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_wood_03.png
Normal file
After Width: | Height: | Size: 614 B |
BIN
df_primordial_items/textures/dfcaverns_jungle_wood_04.png
Normal file
After Width: | Height: | Size: 492 B |
BIN
df_primordial_items/textures/dfcaverns_mush_cap.png
Normal file
After Width: | Height: | Size: 441 B |
After Width: | Height: | Size: 1.1 KiB |
BIN
df_primordial_items/textures/dfcaverns_mush_giant_hypha.png
Normal file
After Width: | Height: | Size: 570 B |
BIN
df_primordial_items/textures/dfcaverns_mush_gills.png
Normal file
After Width: | Height: | Size: 325 B |
BIN
df_primordial_items/textures/dfcaverns_mush_gills_glow.png
Normal file
After Width: | Height: | Size: 417 B |
BIN
df_primordial_items/textures/dfcaverns_mush_glownode.png
Normal file
After Width: | Height: | Size: 521 B |
BIN
df_primordial_items/textures/dfcaverns_mush_grass_01.png
Normal file
After Width: | Height: | Size: 424 B |
BIN
df_primordial_items/textures/dfcaverns_mush_grass_02.png
Normal file
After Width: | Height: | Size: 501 B |
BIN
df_primordial_items/textures/dfcaverns_mush_mycelial_fibers.png
Normal file
After Width: | Height: | Size: 517 B |
BIN
df_primordial_items/textures/dfcaverns_mush_orb.png
Normal file
After Width: | Height: | Size: 527 B |
BIN
df_primordial_items/textures/dfcaverns_mush_orb_vert.png
Normal file
After Width: | Height: | Size: 286 B |
BIN
df_primordial_items/textures/dfcaverns_mush_pods.png
Normal file
After Width: | Height: | Size: 338 B |
BIN
df_primordial_items/textures/dfcaverns_mush_sapling.png
Normal file
After Width: | Height: | Size: 333 B |
BIN
df_primordial_items/textures/dfcaverns_mush_shaft_side.png
Normal file
After Width: | Height: | Size: 491 B |
BIN
df_primordial_items/textures/dfcaverns_mush_shaft_top.png
Normal file
After Width: | Height: | Size: 775 B |
BIN
df_primordial_items/textures/dfcaverns_mush_soil.png
Normal file
After Width: | Height: | Size: 504 B |
BIN
df_primordial_items/textures/dfcaverns_mush_stalk_side.png
Normal file
After Width: | Height: | Size: 437 B |
BIN
df_primordial_items/textures/dfcaverns_mush_stalk_top.png
Normal file
After Width: | Height: | Size: 518 B |
BIN
df_primordial_items/textures/dfcaverns_mush_stalks.png
Normal file
After Width: | Height: | Size: 298 B |
10
df_primordial_items/textures/license.txt
Normal file
@ -0,0 +1,10 @@
|
||||
All primordial item textures not explicitly listed here were created by ClockGen and licensed under the CC BY 4.0
|
||||
|
||||
Created by FaceDeer and also licened under CC BY 4.0 (as well as CC0 public domain):
|
||||
dfcaverns_mush_diced_giant_mushroom.png
|
||||
dfcaverns_mush_giant_hypha.png
|
||||
dfcaverns_mush_sapling.png
|
||||
dfcaverns_mush_mycelial_fibers.png
|
||||
|
||||
From Minetest default mod:
|
||||
dfcaverns_jungle_sapling.png
|