Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Switch dungeon type detection to biome name
see #2400, also removed a now unused alias
  • Loading branch information
sfan5 committed Jul 16, 2019
1 parent bfb84da commit 3771086
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 13 deletions.
1 change: 0 additions & 1 deletion mods/default/mapgen.lua
Expand Up @@ -35,7 +35,6 @@ minetest.register_alias("mapgen_cobble", "default:cobble")
minetest.register_alias("mapgen_stair_cobble", "stairs:stair_cobble")
minetest.register_alias("mapgen_mossycobble", "default:mossycobble")
minetest.register_alias("mapgen_stair_desert_stone", "stairs:stair_desert_stone")
minetest.register_alias("mapgen_sandstonebrick", "default:sandstonebrick")


--
Expand Down
23 changes: 11 additions & 12 deletions mods/dungeon_loot/mapgen.lua
Expand Up @@ -15,12 +15,8 @@ local function random_sample(rand, list, count)
end

local function find_walls(cpos)
local wall = minetest.registered_aliases["mapgen_cobble"]
local wall_alt = minetest.registered_aliases["mapgen_mossycobble"]
local wall_ss = minetest.registered_aliases["mapgen_sandstonebrick"]
local wall_ds = minetest.registered_aliases["mapgen_desert_stone"]
local is_wall = function(node)
return table.indexof({wall, wall_alt, wall_ss, wall_ds}, node.name) ~= -1
return node.name ~= "air" and node.name ~= "ignore"
end

local dirs = {{x=1, z=0}, {x=-1, z=0}, {x=0, z=1}, {x=0, z=-1}}
Expand All @@ -29,7 +25,6 @@ local function find_walls(cpos)
local ret = {}
local mindist = {x=0, z=0}
local min = function(a, b) return a ~= 0 and math.min(a, b) or b end
local wallnode
for _, dir in ipairs(dirs) do
for i = 1, 9 do -- 9 = max room size / 2
local pos = vector.add(cpos, {x=dir.x*i, y=0, z=dir.z*i})
Expand All @@ -50,22 +45,26 @@ local function find_walls(cpos)
else
mindist.z = min(mindist.z, i-1)
end
wallnode = node.name
end
-- abort even if it wasn't a wall cause something is in the way
break
end
end
end

local mapping = {
[wall_ss] = "sandstone",
[wall_ds] = "desert"
}
local biome = minetest.get_biome_data(cpos)
local biome = biome and minetest.get_biome_name(biome.biome) or ""
local type = "normal"
if biome:find("desert") == 1 then
type = "desert"
elseif biome:find("sandstone_desert") == 1 then
type = "sandstone"
end

return {
walls = ret,
size = {x=mindist.x*2, z=mindist.z*2},
type = mapping[wallnode] or "normal"
type = type,
}
end

Expand Down

0 comments on commit 3771086

Please sign in to comment.