Reintroduce adobe dungeons

Instead of just Winter's original adobe dungeons
which were an alternative to the at-the-time
boring and empty NC cobble-only dungeons,
create complex mixed adobe/brick dungeons
at shallower depths, leave stone dungeons for
deeper depths.

These now have bricks and bonded bricks,
loot, and there is a blended transition between
adobe/stone dungeon areas (we can't make a
single dungeon generate entirely of one or the
other material it seems).
This commit is contained in:
Aaron Suen 2021-09-06 21:24:49 -04:00
parent 7520d45516
commit ff2b3c44d5
5 changed files with 30 additions and 21 deletions

6
TODO
View File

@ -1,12 +1,8 @@
------------------------------------------------------------------------
- More code cleanup, reorganize by feature
- Use radiation to poison and kill moss en masse
- Fix dungeon registration so loot works too
- Review and unify generic spreading ABMs
- Reintroduce moss in dungeons?
- Shakedown mechanics
- Make sure each item has a method to...

View File

@ -3,8 +3,6 @@ local minetest
= minetest
-- LUALOCALS > ---------------------------------------------------------
local modname = minetest.get_current_modname()
minetest.register_biome({
name = "grassland",
node_top = "nc_terrain:dirt_with_grass",
@ -13,8 +11,6 @@ minetest.register_biome({
depth_filler = 2,
node_riverbed = "nc_terrain:sand",
depth_riverbed = 1,
node_dungeon = "nc_concrete:adobe",
node_dungeon_alt = modname .. ":mossy_dirt",
y_min = 1,
y_max = 31000,
vertical_blend = 16,
@ -31,8 +27,6 @@ minetest.register_biome({
depth_filler = 2,
node_riverbed = "nc_terrain:sand",
depth_riverbed = 4,
node_dungeon = "nc_stonework:bricks",
node_dungeon_alt = modname .. ":mossy_bricks",
y_min = 0,
y_max = 2,
vertical_blend = 2,
@ -49,8 +43,6 @@ minetest.register_biome({
depth_filler = 2,
node_riverbed = "nc_terrain:sand",
depth_riverbed = 2,
node_dungeon = "nc_concrete:adobe",
node_dungeon_alt = modname .. ":mossy_dirt",
y_min = 2,
y_max = 48,
vertical_blend = 4,
@ -67,8 +59,6 @@ minetest.register_biome({
depth_filler = 4,
node_riverbed = "nc_terrain:sand",
depth_riverbed = 2,
node_dungeon = "nc_stonework:bricks_bonded",
node_dungeon_alt = modname .. ":mossy_bricks_bonded",
y_min = 2,
y_max = 250,
vertical_blend = 16,
@ -85,8 +75,6 @@ minetest.register_biome({
depth_filler = 8,
node_riverbed = "nc_terrain:gravel",
depth_riverbed = 2,
node_dungeon = "nc_stonework:bricks_bonded",
node_dungeon_alt = modname .. ":mossy_bricks_bonded",
y_min = 4,
y_max = 200,
vertical_blend = 16,
@ -103,8 +91,6 @@ minetest.register_biome({
depth_filler = 12,
node_riverbed = "nc_terrain:gravel",
depth_riverbed = 2,
node_dungeon = "nc_stonework:bricks_bonded",
node_dungeon_alt = modname .. ":mossy_bricks_bonded",
y_min = 6,
y_max = 150,
vertical_blend = 16,

26
feature_dungeon.lua Normal file
View File

@ -0,0 +1,26 @@
-- LUALOCALS < ---------------------------------------------------------
local minetest, nodecore
= minetest, nodecore
-- LUALOCALS > ---------------------------------------------------------
local mapperlin
minetest.after(0, function() mapperlin = minetest.get_perlin(8658, 1, 0, 1) end)
nodecore.register_dungeongen({
label = "nature dungeons",
func = function(pos)
if pos.y < -10 then return end
local rng = nodecore.seeded_rng(mapperlin:get_3d(pos))
if pos.y < 0 and rng(-10, 0) > pos.y then return end
if rng(1, 4) ~= 1 then
return minetest.set_node(pos, {name = "nc_concrete:adobe"})
end
local below = {x = pos.x, y = pos.y - 1, z = pos.z}
local bnode = minetest.get_node(below)
local bdef = minetest.registered_nodes[bnode.name] or {}
return minetest.set_node(pos, {name = "nc_stonework"
.. (rng(1, 10) <= (bdef.walkable and 9 or 2)
and ":bricks_adobe"
or ":bricks_adobe_bonded")})
end
})

View File

@ -3,8 +3,9 @@ local include
= include
-- LUALOCALS > ---------------------------------------------------------
include("biomes")
include("cultivate")
include("feature_biomes")
include("feature_dungeon")
include("feature_spread")
include("item_fiber")
include("item_thatch")