Chance to fill dirt room with random rails
parent
b02b5c868e
commit
2bd014a681
27
init.lua
27
init.lua
|
@ -105,11 +105,13 @@ local chaos_mode = minetest.settings:get_bool("tsm_railcorridors_chaos") or fals
|
||||||
-- End of parameters
|
-- End of parameters
|
||||||
|
|
||||||
-- Random Perlin noise generators
|
-- Random Perlin noise generators
|
||||||
local pr, pr_carts, pr_treasures, webperlin_major, webperlin_minor
|
local pr, pr_carts, pr_treasures, pr_deco, webperlin_major, webperlin_minor
|
||||||
|
|
||||||
local function InitRandomizer(seed)
|
local function InitRandomizer(seed)
|
||||||
-- Mostly used for corridor gen.
|
-- Mostly used for corridor gen.
|
||||||
pr = PseudoRandom(seed)
|
pr = PseudoRandom(seed)
|
||||||
|
-- Dirt room decorations
|
||||||
|
pr_deco = PseudoRandom(seed+25)
|
||||||
-- Separate randomizer for carts because spawning carts is very timing-dependent
|
-- Separate randomizer for carts because spawning carts is very timing-dependent
|
||||||
pr_carts = PseudoRandom(seed-654)
|
pr_carts = PseudoRandom(seed-654)
|
||||||
-- Chest contents randomizer
|
-- Chest contents randomizer
|
||||||
|
@ -299,7 +301,7 @@ local function Cube(p, radius, node, replace_air_only, wood, post)
|
||||||
return built_all
|
return built_all
|
||||||
end
|
end
|
||||||
|
|
||||||
local function DirtRoom(p, radius, height, dirt_mode)
|
local function DirtRoom(p, radius, height, dirt_mode, decorations_mode)
|
||||||
local y_bottom = p.y
|
local y_bottom = p.y
|
||||||
local y_top = y_bottom + height + 1
|
local y_top = y_bottom + height + 1
|
||||||
dirt_room_coords = {
|
dirt_room_coords = {
|
||||||
|
@ -321,7 +323,18 @@ local function DirtRoom(p, radius, height, dirt_mode)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
built = SetNodeIfCanBuild({x=xi,y=yi,z=zi}, {name="air"})
|
if yi == y_bottom + 1 then
|
||||||
|
-- crazy rails
|
||||||
|
if decorations_mode == 1 then
|
||||||
|
local r = pr_deco:next(1,3)
|
||||||
|
if r == 2 then
|
||||||
|
built = SetNodeIfCanBuild({x=xi,y=yi,z=zi}, {name=tsm_railcorridors.nodes.rail})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not built then
|
||||||
|
built = SetNodeIfCanBuild({x=xi,y=yi,z=zi}, {name="air"})
|
||||||
|
end
|
||||||
end
|
end
|
||||||
if not built then
|
if not built then
|
||||||
built_all = false
|
built_all = false
|
||||||
|
@ -981,10 +994,16 @@ local function create_corridor_system(main_cave_coords)
|
||||||
floor_diff = 0
|
floor_diff = 0
|
||||||
end
|
end
|
||||||
local dirt_mode = pr:next(1,2)
|
local dirt_mode = pr:next(1,2)
|
||||||
|
local rnd = pr:next(1,1000)
|
||||||
|
-- Small chance to fill dirt room with random rails
|
||||||
|
local decorations_mode = 0
|
||||||
|
if rnd == 1000 then
|
||||||
|
decorations_mode = 1
|
||||||
|
end
|
||||||
|
|
||||||
--[[ Starting point: A big hollow dirt cube from which the corridors will extend.
|
--[[ Starting point: A big hollow dirt cube from which the corridors will extend.
|
||||||
Corridor generation starts here. ]]
|
Corridor generation starts here. ]]
|
||||||
DirtRoom(main_cave_coords, size, height, dirt_mode)
|
DirtRoom(main_cave_coords, size, height, dirt_mode, decorations_mode)
|
||||||
main_cave_coords.y = main_cave_coords.y + 2 + floor_diff
|
main_cave_coords.y = main_cave_coords.y + 2 + floor_diff
|
||||||
|
|
||||||
-- Determine if this corridor system is “damaged” (some rails removed) and to which extent
|
-- Determine if this corridor system is “damaged” (some rails removed) and to which extent
|
||||||
|
|
Loading…
Reference in New Issue