mirror of
https://github.com/FaceDeer/dfcaverns.git
synced 2025-03-24 05:40:22 +01:00
cleaning up some stuff with luacheck.
This commit is contained in:
parent
c9dedef095
commit
f537af33bc
66
.luacheckrc
Normal file
66
.luacheckrc
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
read_globals = {
|
||||||
|
"minetest",
|
||||||
|
"ItemStack",
|
||||||
|
"VoxelArea",
|
||||||
|
"AreaStore",
|
||||||
|
table = {fields = {"copy", "indexof"}},
|
||||||
|
"vector",
|
||||||
|
"default",
|
||||||
|
"dump",
|
||||||
|
"core",
|
||||||
|
}
|
||||||
|
|
||||||
|
globals = {
|
||||||
|
"awards",
|
||||||
|
"big_webs",
|
||||||
|
"bones_loot",
|
||||||
|
"bubblesponge",
|
||||||
|
"bucket",
|
||||||
|
"chasms",
|
||||||
|
"collectible_lore",
|
||||||
|
"cottages",
|
||||||
|
"df_achievements",
|
||||||
|
"df_ambience",
|
||||||
|
"df_caverns",
|
||||||
|
"df_dependencies",
|
||||||
|
"df_dependencies",
|
||||||
|
"df_farming",
|
||||||
|
"df_mapitems",
|
||||||
|
"df_primordial_items",
|
||||||
|
"df_trees",
|
||||||
|
"df_underworld_items",
|
||||||
|
"doors",
|
||||||
|
"dungeon_loot",
|
||||||
|
"dynamic_liquid",
|
||||||
|
"footprints",
|
||||||
|
"hunter_statue",
|
||||||
|
"ice_sprites",
|
||||||
|
"looped_node_sound",
|
||||||
|
"mapgen_helper",
|
||||||
|
"mcl_buckets",
|
||||||
|
"mcl_explosions",
|
||||||
|
"mcl_fences",
|
||||||
|
"mcl_flowers",
|
||||||
|
"mcl_formspec",
|
||||||
|
"mcl_mapgen",
|
||||||
|
"mcl_sounds",
|
||||||
|
"mcl_stairs",
|
||||||
|
"mcl_vars",
|
||||||
|
"mcl_worlds",
|
||||||
|
"mesecon",
|
||||||
|
"name_generator",
|
||||||
|
"named_waypoints",
|
||||||
|
"oil",
|
||||||
|
"pit_caves",
|
||||||
|
"playerplus",
|
||||||
|
"radiant_damage",
|
||||||
|
"simplecrafting_lib",
|
||||||
|
"stairs",
|
||||||
|
"stairsplus",
|
||||||
|
"subterrane",
|
||||||
|
"tnt",
|
||||||
|
}
|
||||||
|
|
||||||
|
max_line_length = false
|
||||||
|
unused_args = false
|
||||||
|
unused = false
|
@ -73,8 +73,8 @@ local get_web_nodes = function(pos, webs, anchors)
|
|||||||
end
|
end
|
||||||
elseif in_anchor_group(check_node.name) then
|
elseif in_anchor_group(check_node.name) then
|
||||||
anchors[minetest.hash_node_position(check_pos)] = true
|
anchors[minetest.hash_node_position(check_pos)] = true
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local web_line = function(pos, dir, distance)
|
local web_line = function(pos, dir, distance)
|
||||||
@ -164,7 +164,7 @@ minetest.register_node("big_webs:webbing", {
|
|||||||
minetest.item_drop(ItemStack("big_webs:webbing"), nil, web_pos)
|
minetest.item_drop(ItemStack("big_webs:webbing"), nil, web_pos)
|
||||||
end
|
end
|
||||||
minetest.get_node_timer(web_pos):stop() -- no need to recheck
|
minetest.get_node_timer(web_pos):stop() -- no need to recheck
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
_mcl_blast_resistance = 1.0,
|
_mcl_blast_resistance = 1.0,
|
||||||
_mcl_hardness = 0.5,
|
_mcl_hardness = 0.5,
|
||||||
|
@ -47,7 +47,7 @@ else
|
|||||||
local inv = minetest.get_meta(pos):get_inventory()
|
local inv = minetest.get_meta(pos):get_inventory()
|
||||||
return inv:is_empty("main")
|
return inv:is_empty("main")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
meta:set_string("formspec", bones_formspec)
|
meta:set_string("formspec", bones_formspec)
|
||||||
@ -111,7 +111,7 @@ local get_loot_list = function(pos, loot_type, exclusive_loot_type)
|
|||||||
else
|
else
|
||||||
loot_table = local_loot
|
loot_table = local_loot
|
||||||
end
|
end
|
||||||
|
|
||||||
local item_list = {}
|
local item_list = {}
|
||||||
local pos_y = pos.y
|
local pos_y = pos.y
|
||||||
for _, loot in ipairs(loot_table) do
|
for _, loot in ipairs(loot_table) do
|
||||||
@ -138,7 +138,7 @@ end
|
|||||||
bones_loot.get_loot = function(pos, loot_type, max_stacks, exclusive_loot_type)
|
bones_loot.get_loot = function(pos, loot_type, max_stacks, exclusive_loot_type)
|
||||||
local item_list = get_loot_list(pos, loot_type, exclusive_loot_type)
|
local item_list = get_loot_list(pos, loot_type, exclusive_loot_type)
|
||||||
shuffle(item_list)
|
shuffle(item_list)
|
||||||
|
|
||||||
-- apply chances / randomized amounts and collect resulting items
|
-- apply chances / randomized amounts and collect resulting items
|
||||||
local items = {}
|
local items = {}
|
||||||
for _, loot in ipairs(item_list) do
|
for _, loot in ipairs(item_list) do
|
||||||
@ -149,7 +149,7 @@ bones_loot.get_loot = function(pos, loot_type, max_stacks, exclusive_loot_type)
|
|||||||
if loot.count ~= nil then
|
if loot.count ~= nil then
|
||||||
amount = math.random(loot.count[1], loot.count[2])
|
amount = math.random(loot.count[1], loot.count[2])
|
||||||
end
|
end
|
||||||
|
|
||||||
if itemdef.tool_capabilities then
|
if itemdef.tool_capabilities then
|
||||||
for n = 1, amount do
|
for n = 1, amount do
|
||||||
local wear = math.random(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear
|
local wear = math.random(0.20 * 65535, 0.75 * 65535) -- 20% to 75% wear
|
||||||
@ -169,7 +169,7 @@ bones_loot.get_loot = function(pos, loot_type, max_stacks, exclusive_loot_type)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
if max_stacks <= 0 then break end
|
if max_stacks <= 0 then break end
|
||||||
end
|
end
|
||||||
return items
|
return items
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -181,7 +181,7 @@ bones_loot.place_bones = function(pos, loot_type, max_stacks, infotext, exclusiv
|
|||||||
end
|
end
|
||||||
meta:set_string("infotext", infotext)
|
meta:set_string("infotext", infotext)
|
||||||
meta:set_string("formspec", bones_formspec)
|
meta:set_string("formspec", bones_formspec)
|
||||||
|
|
||||||
if max_stacks and max_stacks > 0 then
|
if max_stacks and max_stacks > 0 then
|
||||||
local loot = bones_loot.get_loot(pos, loot_type, max_stacks, exclusive_loot_type)
|
local loot = bones_loot.get_loot(pos, loot_type, max_stacks, exclusive_loot_type)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
@ -195,11 +195,11 @@ end
|
|||||||
minetest.register_lbm({
|
minetest.register_lbm({
|
||||||
label = "Repair underworld bones formspec",
|
label = "Repair underworld bones formspec",
|
||||||
name = "bones_loot:repair_underworld_bones_formspec",
|
name = "bones_loot:repair_underworld_bones_formspec",
|
||||||
nodenames = {bones_node},
|
nodenames = {bones_node},
|
||||||
action = function(pos, node)
|
action = function(pos, node)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
if not meta:get("formspec") then
|
if not meta:get("formspec") then
|
||||||
meta:set_string("formspec", bones_formspec)
|
meta:set_string("formspec", bones_formspec)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
@ -20,10 +20,10 @@ local function setting(stype, name, default, description)
|
|||||||
value = default
|
value = default
|
||||||
end
|
end
|
||||||
config[name] = value
|
config[name] = value
|
||||||
|
|
||||||
if print_settingtypes then
|
if print_settingtypes then
|
||||||
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
setting("int", "uses", 30, "Number of uses for a bubblesponge")
|
setting("int", "uses", 30, "Number of uses for a bubblesponge")
|
||||||
@ -59,7 +59,7 @@ minetest.register_tool("bubblesponge:tank", {
|
|||||||
wield_image = "bubblesponge_frond.png",
|
wield_image = "bubblesponge_frond.png",
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
groups = {bubblesponge_tank = 1},
|
groups = {bubblesponge_tank = 1},
|
||||||
|
|
||||||
on_place = function(itemstack, user, pointed_thing)
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
return use_airtank(itemstack, user)
|
return use_airtank(itemstack, user)
|
||||||
end,
|
end,
|
||||||
@ -78,7 +78,7 @@ minetest.register_tool("bubblesponge:bundle", {
|
|||||||
wield_image = "bubblesponge_bundle.png",
|
wield_image = "bubblesponge_bundle.png",
|
||||||
stack_max = 1,
|
stack_max = 1,
|
||||||
groups = {bubblesponge_tank = 1},
|
groups = {bubblesponge_tank = 1},
|
||||||
|
|
||||||
on_place = function(itemstack, user, pointed_thing)
|
on_place = function(itemstack, user, pointed_thing)
|
||||||
return use_airtank(itemstack, user)
|
return use_airtank(itemstack, user)
|
||||||
end,
|
end,
|
||||||
@ -119,27 +119,27 @@ minetest.register_node("bubblesponge:stem", {
|
|||||||
items = {"bubblesponge:stem"},
|
items = {"bubblesponge:stem"},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
drawtype = "normal",
|
drawtype = "normal",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
light_source = 6,
|
light_source = 6,
|
||||||
|
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
local timer = minetest.get_node_timer(pos)
|
local timer = minetest.get_node_timer(pos)
|
||||||
elapsed = elapsed - config.growth_seconds
|
elapsed = elapsed - config.growth_seconds
|
||||||
timer:set(config.growth_seconds, elapsed)
|
timer:set(config.growth_seconds, elapsed)
|
||||||
|
|
||||||
if pos.y > config.y_max then
|
if pos.y > config.y_max then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
pos.y = pos.y + 1
|
pos.y = pos.y + 1
|
||||||
|
|
||||||
if minetest.find_node_near(pos, 4, "air", true) then
|
if minetest.find_node_near(pos, 4, "air", true) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local tries = 0
|
local tries = 0
|
||||||
while tries < 3 do
|
while tries < 3 do
|
||||||
local this_node = minetest.get_node(pos).name
|
local this_node = minetest.get_node(pos).name
|
||||||
@ -152,7 +152,7 @@ minetest.register_node("bubblesponge:stem", {
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
minetest.get_node_timer(pos):start(config.growth_seconds + math.random(-0.1, 0.1)*config.growth_seconds)
|
minetest.get_node_timer(pos):start(config.growth_seconds + math.random(-0.1, 0.1)*config.growth_seconds)
|
||||||
--minetest.get_node_timer(pos):set(1, config.growth_seconds * 6) -- immediate growth
|
--minetest.get_node_timer(pos):set(1, config.growth_seconds * 6) -- immediate growth
|
||||||
|
@ -116,19 +116,19 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
if minp.y >= maxy or maxp.y <= miny then
|
if minp.y >= maxy or maxp.y <= miny then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- check if webs are present
|
-- check if webs are present
|
||||||
local webs
|
local webs
|
||||||
local webs_present = false
|
local webs_present = false
|
||||||
if big_webs_path then
|
if big_webs_path then
|
||||||
local seed = math.random()*10000000
|
local web_seed = math.random()*10000000
|
||||||
math.randomseed(minp.y + z_displace*minp.z) -- use consistent seeds across the x axis
|
math.randomseed(minp.y + z_displace*minp.z) -- use consistent seeds across the x axis
|
||||||
if math.random() < web_probability then
|
if math.random() < web_probability then
|
||||||
webs_present = true
|
webs_present = true
|
||||||
end
|
end
|
||||||
math.randomseed(seed)
|
math.randomseed(web_seed)
|
||||||
end
|
end
|
||||||
|
|
||||||
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
local vm, emin, emax = minetest.get_mapgen_object("voxelmanip")
|
||||||
vm:get_data(data)
|
vm:get_data(data)
|
||||||
|
|
||||||
@ -163,7 +163,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:calc_lighting()
|
vm:calc_lighting()
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
|
@ -7,7 +7,7 @@ collectible_lore.lorebooks = {}
|
|||||||
|
|
||||||
local ids = {}
|
local ids = {}
|
||||||
|
|
||||||
on_collected_callbacks = {}
|
local on_collected_callbacks = {}
|
||||||
|
|
||||||
collectible_lore.register_on_collected = function(callback)
|
collectible_lore.register_on_collected = function(callback)
|
||||||
table.insert(on_collected_callbacks, callback)
|
table.insert(on_collected_callbacks, callback)
|
||||||
@ -69,7 +69,7 @@ end
|
|||||||
|
|
||||||
collectible_lore.register_lorebook = function(def)
|
collectible_lore.register_lorebook = function(def)
|
||||||
if def.id == nil then
|
if def.id == nil then
|
||||||
minetest.log("error", "[collectible_lore] nil id for def " .. dump(def))
|
minetest.log("error", "[collectible_lore] nil id for def " .. dump(def))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
if ids[def.id] then
|
if ids[def.id] then
|
||||||
@ -101,7 +101,7 @@ minetest.register_chatcommand("collectible", {
|
|||||||
minetest.chat_send_player(name, dump(collectible_lore.get_player_collected(second)))
|
minetest.chat_send_player(name, dump(collectible_lore.get_player_collected(second)))
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.chat_send_player(name, S("error parsing command"))
|
minetest.chat_send_player(name, S("error parsing command"))
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
@ -15,7 +15,7 @@ end
|
|||||||
|
|
||||||
local get_itemslot_bg = df_dependencies.get_itemslot_bg
|
local get_itemslot_bg = df_dependencies.get_itemslot_bg
|
||||||
|
|
||||||
function get_cairn_formspec(pos)
|
local function get_cairn_formspec(pos)
|
||||||
local spos = pos.x .. "," .. pos.y .. "," .. pos.z
|
local spos = pos.x .. "," .. pos.y .. "," .. pos.z
|
||||||
local formspec =
|
local formspec =
|
||||||
"size[8,9]"
|
"size[8,9]"
|
||||||
@ -58,7 +58,7 @@ local cairn_loot = function(pos, player)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
list[player_name] = true
|
list[player_name] = true
|
||||||
|
|
||||||
local uncollected = collectible_lore.get_player_uncollected_list(player_name)
|
local uncollected = collectible_lore.get_player_uncollected_list(player_name)
|
||||||
--minetest.debug(dump(uncollected))
|
--minetest.debug(dump(uncollected))
|
||||||
if next(uncollected) then
|
if next(uncollected) then
|
||||||
@ -77,11 +77,11 @@ local cairn_loot = function(pos, player)
|
|||||||
minetest.show_formspec(player_name, "collectible_lore:cairn_inventory", get_cairn_formspec(pos))
|
minetest.show_formspec(player_name, "collectible_lore:cairn_inventory", get_cairn_formspec(pos))
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local leftover = player:get_inventory():add_item("main", "collectible_lore:satchel")
|
local leftover = player:get_inventory():add_item("main", "collectible_lore:satchel")
|
||||||
if not leftover:is_empty() then
|
if not leftover:is_empty() then
|
||||||
minetest.item_drop(leftover, player, vector.add(pos, vector.new(0,1,0)))
|
minetest.item_drop(leftover, player, vector.add(pos, vector.new(0,1,0)))
|
||||||
end
|
end
|
||||||
return true
|
return true
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -235,7 +235,7 @@ local get_formspec_for_player = function(player_name)
|
|||||||
end
|
end
|
||||||
table.insert(form, "label[0.5,7.5;" .. S("Collected: @1/@2", collected_count, #(collectible_lore.lorebooks)) .. "]")
|
table.insert(form, "label[0.5,7.5;" .. S("Collected: @1/@2", collected_count, #(collectible_lore.lorebooks)) .. "]")
|
||||||
table.insert(form, "button_exit[2.75,7.3;2,0.4;exit;"..S("Exit") .. "]")
|
table.insert(form, "button_exit[2.75,7.3;2,0.4;exit;"..S("Exit") .. "]")
|
||||||
|
|
||||||
return table.concat(form)
|
return table.concat(form)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -278,7 +278,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
function tour(player, loc_list)
|
local function tour(player, loc_list)
|
||||||
local pop = table.remove(loc_list)
|
local pop = table.remove(loc_list)
|
||||||
if pop then
|
if pop then
|
||||||
player:set_pos(pop)
|
player:set_pos(pop)
|
||||||
|
@ -143,7 +143,7 @@ awards.register_achievement("dfcaverns_plant_all_farmables", {
|
|||||||
.."^[combine:32x32:16,0=dfcaverns_dimple_cup_4.png"
|
.."^[combine:32x32:16,0=dfcaverns_dimple_cup_4.png"
|
||||||
.."^[combine:32x32:8,8=dfcaverns_plump_helmet_achievement.png"
|
.."^[combine:32x32:8,8=dfcaverns_plump_helmet_achievement.png"
|
||||||
.."^[combine:32x32:0,16=dfcaverns_sweet_pod_6.png"
|
.."^[combine:32x32:0,16=dfcaverns_sweet_pod_6.png"
|
||||||
.."^[combine:32x32:16,16=dfcaverns_quarry_bush_5.png"
|
.."^[combine:32x32:16,16=dfcaverns_quarry_bush_5.png"
|
||||||
.."^[combine:32x32:16,15="..hoe_texture.."^dfcaverns_awards_foregroundx32.png",
|
.."^[combine:32x32:16,15="..hoe_texture.."^dfcaverns_awards_foregroundx32.png",
|
||||||
difficulty = 1 / df_achievements.get_child_achievement_count("dfcaverns_plant_all_farmables"),
|
difficulty = 1 / df_achievements.get_child_achievement_count("dfcaverns_plant_all_farmables"),
|
||||||
trigger = {
|
trigger = {
|
||||||
|
@ -6,7 +6,7 @@ for itemname, def in pairs(minetest.registered_items) do
|
|||||||
local meal_name = string.sub(itemname, 12, -1)
|
local meal_name = string.sub(itemname, 12, -1)
|
||||||
local meal_desc = def.description
|
local meal_desc = def.description
|
||||||
local image = string.sub(def.inventory_image, 1, -7) .. "32.png"
|
local image = string.sub(def.inventory_image, 1, -7) .. "32.png"
|
||||||
|
|
||||||
awards.register_achievement("dfcaverns_meal_"..meal_name, {
|
awards.register_achievement("dfcaverns_meal_"..meal_name, {
|
||||||
title = S("Eat @1", meal_desc),
|
title = S("Eat @1", meal_desc),
|
||||||
description = S("One of the many delights that can be crafted only from fungal growths found deep underground."),
|
description = S("One of the many delights that can be crafted only from fungal growths found deep underground."),
|
||||||
|
@ -14,7 +14,7 @@ if awards.run_trigger_callbacks then
|
|||||||
-- this "run_trigger_callbacks" API call is present in those older versions, so using that
|
-- this "run_trigger_callbacks" API call is present in those older versions, so using that
|
||||||
-- as a fingerprint to discover them
|
-- as a fingerprint to discover them
|
||||||
old_awards_version = true
|
old_awards_version = true
|
||||||
|
|
||||||
minetest.register_on_dignode(function(pos, oldnode, digger)
|
minetest.register_on_dignode(function(pos, oldnode, digger)
|
||||||
-- the old version of awards doesn't handle groups when triggering dug nodes, use this to hack around that
|
-- the old version of awards doesn't handle groups when triggering dug nodes, use this to hack around that
|
||||||
local node_name = oldnode.name
|
local node_name = oldnode.name
|
||||||
@ -23,7 +23,7 @@ if awards.run_trigger_callbacks then
|
|||||||
elseif minetest.get_item_group(node_name, "dfcaverns_cave_coral") > 0 then
|
elseif minetest.get_item_group(node_name, "dfcaverns_cave_coral") > 0 then
|
||||||
awards.unlock(digger:get_player_name(), "dfcaverns_cave_coral")
|
awards.unlock(digger:get_player_name(), "dfcaverns_cave_coral")
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
else
|
else
|
||||||
-- used to track the progress of achievements that are based off of other achievements
|
-- used to track the progress of achievements that are based off of other achievements
|
||||||
awards.register_trigger("dfcaverns_achievements", {
|
awards.register_trigger("dfcaverns_achievements", {
|
||||||
@ -69,10 +69,10 @@ awards.register_on_unlock(function(player_name, def)
|
|||||||
local def_dfcaverns_achievements = def._dfcaverns_achievements
|
local def_dfcaverns_achievements = def._dfcaverns_achievements
|
||||||
if not def_dfcaverns_achievements then return end
|
if not def_dfcaverns_achievements then return end
|
||||||
local player_awards = awards.player(player_name)
|
local player_awards = awards.player(player_name)
|
||||||
if not player_awards then return end
|
if not player_awards then return end
|
||||||
local unlocked = player_awards.unlocked
|
local unlocked = player_awards.unlocked
|
||||||
if not unlocked then return end
|
if not unlocked then return end
|
||||||
|
|
||||||
-- the achievement that just got unlocked had one or more "parent" achievements associated with it.
|
-- the achievement that just got unlocked had one or more "parent" achievements associated with it.
|
||||||
for _, achievement_parent in pairs(def_dfcaverns_achievements) do
|
for _, achievement_parent in pairs(def_dfcaverns_achievements) do
|
||||||
player_awards.dfcaverns_achievements = player_awards.dfcaverns_achievements or {}
|
player_awards.dfcaverns_achievements = player_awards.dfcaverns_achievements or {}
|
||||||
@ -86,7 +86,7 @@ awards.register_on_unlock(function(player_name, def)
|
|||||||
awards.save()
|
awards.save()
|
||||||
if count >= total then
|
if count >= total then
|
||||||
minetest.after(4, awards.unlock, player_name, achievement_parent)
|
minetest.after(4, awards.unlock, player_name, achievement_parent)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -44,14 +44,14 @@ if minetest.get_modpath("df_underworld_items") then
|
|||||||
df_underworld_items.puzzle_seal_solved = function(pos, player)
|
df_underworld_items.puzzle_seal_solved = function(pos, player)
|
||||||
if player == nil then return end
|
if player == nil then return end
|
||||||
awards.unlock(player:get_player_name(), "dfcaverns_solved_puzzle_seal")
|
awards.unlock(player:get_player_name(), "dfcaverns_solved_puzzle_seal")
|
||||||
end
|
end
|
||||||
awards.register_achievement("dfcaverns_solved_puzzle_seal", {
|
awards.register_achievement("dfcaverns_solved_puzzle_seal", {
|
||||||
title = S("Solve a Puzzle Seal"),
|
title = S("Solve a Puzzle Seal"),
|
||||||
difficulty = 4,
|
difficulty = 4,
|
||||||
description = S("Decipher the code of the ancients. Do you dare turn the key?"),
|
description = S("Decipher the code of the ancients. Do you dare turn the key?"),
|
||||||
icon = "dfcaverns_puzzle_seal_solvedx32.png^dfcaverns_awards_foregroundx32.png",
|
icon = "dfcaverns_puzzle_seal_solvedx32.png^dfcaverns_awards_foregroundx32.png",
|
||||||
})
|
})
|
||||||
|
|
||||||
df_underworld_items.slade_breacher_triggered = function(pos, player)
|
df_underworld_items.slade_breacher_triggered = function(pos, player)
|
||||||
awards.unlock(player:get_player_name(), "dfcaverns_triggered_slade_breacher")
|
awards.unlock(player:get_player_name(), "dfcaverns_triggered_slade_breacher")
|
||||||
end
|
end
|
||||||
@ -62,7 +62,7 @@ if minetest.get_modpath("df_underworld_items") then
|
|||||||
icon = "dfcaverns_puzzle_seal_activex32.png^dfcaverns_awards_foregroundx32.png",
|
icon = "dfcaverns_puzzle_seal_activex32.png^dfcaverns_awards_foregroundx32.png",
|
||||||
secret=true,
|
secret=true,
|
||||||
})
|
})
|
||||||
|
|
||||||
df_underworld_items.ancient_lantern_fixed = function(pos, player)
|
df_underworld_items.ancient_lantern_fixed = function(pos, player)
|
||||||
awards.unlock(player:get_player_name(), "dfcaverns_repaired_lantern")
|
awards.unlock(player:get_player_name(), "dfcaverns_repaired_lantern")
|
||||||
end
|
end
|
||||||
@ -85,7 +85,7 @@ end
|
|||||||
if minetest.get_modpath("df_lorebooks") then
|
if minetest.get_modpath("df_lorebooks") then
|
||||||
collectible_lore.register_on_collected(function(player_name, id, state, collected)
|
collectible_lore.register_on_collected(function(player_name, id, state, collected)
|
||||||
local count = 0
|
local count = 0
|
||||||
for id, val in pairs(collected) do
|
for _id, val in pairs(collected) do
|
||||||
if val then count = count + 1 end
|
if val then count = count + 1 end
|
||||||
end
|
end
|
||||||
if count >= #(collectible_lore.lorebooks) then
|
if count >= #(collectible_lore.lorebooks) then
|
||||||
|
@ -29,12 +29,12 @@ local get_player_data = function(player)
|
|||||||
-- get head level node at player position
|
-- get head level node at player position
|
||||||
local pos = player:get_pos()
|
local pos = player:get_pos()
|
||||||
if not pos then return end
|
if not pos then return end
|
||||||
|
|
||||||
-- get all set nodes around player
|
-- get all set nodes around player
|
||||||
local ps, cn = minetest.find_nodes_in_area(
|
local ps, cn = minetest.find_nodes_in_area(
|
||||||
{x = pos.x - radius, y = pos.y - radius, z = pos.z - radius},
|
{x = pos.x - radius, y = pos.y - radius, z = pos.z - radius},
|
||||||
{x = pos.x + radius, y = pos.y + radius, z = pos.z + radius}, all_nodes)
|
{x = pos.x + radius, y = pos.y + radius, z = pos.z + radius}, all_nodes)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
pos = pos,
|
pos = pos,
|
||||||
biome = df_caverns.get_biome(pos) or "",
|
biome = df_caverns.get_biome(pos) or "",
|
||||||
@ -69,7 +69,7 @@ minetest.register_globalstep(function(dtime)
|
|||||||
player_name = player:get_player_name()
|
player_name = player:get_player_name()
|
||||||
player_awards = awards.player(player_name)
|
player_awards = awards.player(player_name)
|
||||||
unlocked = player_awards.unlocked or {}
|
unlocked = player_awards.unlocked or {}
|
||||||
|
|
||||||
if unlocked["dfcaverns_visit_all_caverns"] ~= "dfcaverns_visit_all_caverns" or
|
if unlocked["dfcaverns_visit_all_caverns"] ~= "dfcaverns_visit_all_caverns" or
|
||||||
unlocked["dfcaverns_visit_glowing_pit"] ~= "dfcaverns_visit_glowing_pit" then
|
unlocked["dfcaverns_visit_glowing_pit"] ~= "dfcaverns_visit_glowing_pit" then
|
||||||
player_data = get_player_data(player)
|
player_data = get_player_data(player)
|
||||||
@ -95,7 +95,7 @@ minetest.register_globalstep(function(dtime)
|
|||||||
(biome == "fungispore" and (
|
(biome == "fungispore" and (
|
||||||
check_nodes(node_types.fungiwood, totals) or
|
check_nodes(node_types.fungiwood, totals) or
|
||||||
check_nodes(node_types.sporetree, totals)))
|
check_nodes(node_types.sporetree, totals)))
|
||||||
or
|
or
|
||||||
(biome == "towergoblin" and (
|
(biome == "towergoblin" and (
|
||||||
check_nodes(node_types.towercap, totals) or
|
check_nodes(node_types.towercap, totals) or
|
||||||
check_nodes(node_types.goblincap, totals)))
|
check_nodes(node_types.goblincap, totals)))
|
||||||
@ -104,7 +104,7 @@ minetest.register_globalstep(function(dtime)
|
|||||||
then
|
then
|
||||||
awards.unlock(player_name, "dfcaverns_visit_sunless_sea")
|
awards.unlock(player_name, "dfcaverns_visit_sunless_sea")
|
||||||
elseif biome == "oil_sea" and (totals["oil:oil_source"] or 0) > 1 then
|
elseif biome == "oil_sea" and (totals["oil:oil_source"] or 0) > 1 then
|
||||||
awards.unlock(player_name, "dfcaverns_visit_oil_sea")
|
awards.unlock(player_name, "dfcaverns_visit_oil_sea")
|
||||||
elseif biome == "underworld" then
|
elseif biome == "underworld" then
|
||||||
if (totals["df_underworld_items:slade"] or 0) > 1 then
|
if (totals["df_underworld_items:slade"] or 0) > 1 then
|
||||||
awards.unlock(player_name, "dfcaverns_visit_underworld")
|
awards.unlock(player_name, "dfcaverns_visit_underworld")
|
||||||
@ -116,10 +116,10 @@ minetest.register_globalstep(function(dtime)
|
|||||||
pit.location.y = player_pos.y
|
pit.location.y = player_pos.y
|
||||||
if vector.distance(player_pos, pit.location) <= pit.radius+10 then
|
if vector.distance(player_pos, pit.location) <= pit.radius+10 then
|
||||||
awards.unlock(player_name, "dfcaverns_visit_glowing_pit")
|
awards.unlock(player_name, "dfcaverns_visit_glowing_pit")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
elseif biome == "lava_sea" and (totals[lava_node] or 0) > 1 then
|
elseif biome == "lava_sea" and (totals[lava_node] or 0) > 1 then
|
||||||
awards.unlock(player_name, "dfcaverns_visit_lava_sea")
|
awards.unlock(player_name, "dfcaverns_visit_lava_sea")
|
||||||
elseif biome == "primordial fungus" and check_nodes(node_types.primordial_fungus, totals) then
|
elseif biome == "primordial fungus" and check_nodes(node_types.primordial_fungus, totals) then
|
||||||
awards.unlock(player_name, "dfcaverns_visit_primordial_fungal")
|
awards.unlock(player_name, "dfcaverns_visit_primordial_fungal")
|
||||||
elseif biome == "primordial jungle" and check_nodes(node_types.primordial_jungle, totals) then
|
elseif biome == "primordial jungle" and check_nodes(node_types.primordial_jungle, totals) then
|
||||||
@ -138,7 +138,7 @@ minetest.register_globalstep(function(dtime)
|
|||||||
if pos_y >= nearest_pit.depth and pos_y <= nearest_pit.top and vector.distance(pos, nearest_pit.location) <= 20 then
|
if pos_y >= nearest_pit.depth and pos_y <= nearest_pit.top and vector.distance(pos, nearest_pit.location) <= 20 then
|
||||||
awards.unlock(player_name, "dfcaverns_visit_pit")
|
awards.unlock(player_name, "dfcaverns_visit_pit")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
@ -40,7 +40,7 @@ local get_player_data = function(player, name)
|
|||||||
if not pos then return end
|
if not pos then return end
|
||||||
local prop = player:get_properties()
|
local prop = player:get_properties()
|
||||||
local eyeh = prop.eye_height or 1.47 -- eye level with fallback
|
local eyeh = prop.eye_height or 1.47 -- eye level with fallback
|
||||||
|
|
||||||
pos.y = pos.y + eyeh
|
pos.y = pos.y + eyeh
|
||||||
local nod_head = pplus and name and playerplus[name]
|
local nod_head = pplus and name and playerplus[name]
|
||||||
and playerplus[name].nod_head or minetest.get_node(pos).name
|
and playerplus[name].nod_head or minetest.get_node(pos).name
|
||||||
@ -50,7 +50,7 @@ local get_player_data = function(player, name)
|
|||||||
local ps, cn = minetest.find_nodes_in_area(
|
local ps, cn = minetest.find_nodes_in_area(
|
||||||
{x = pos.x - radius, y = pos.y - radius, z = pos.z - radius},
|
{x = pos.x - radius, y = pos.y - radius, z = pos.z - radius},
|
||||||
{x = pos.x + radius, y = pos.y + radius, z = pos.z + radius}, set_nodes)
|
{x = pos.x + radius, y = pos.y + radius, z = pos.z + radius}, set_nodes)
|
||||||
|
|
||||||
return {
|
return {
|
||||||
pos = pos,
|
pos = pos,
|
||||||
head_node = nod_head,
|
head_node = nod_head,
|
||||||
@ -76,11 +76,11 @@ local get_ambience = function(player, name)
|
|||||||
if random() < set.frequency then
|
if random() < set.frequency then
|
||||||
local check_passed
|
local check_passed
|
||||||
local sound_check = set.sound_check
|
local sound_check = set.sound_check
|
||||||
local set_nodes = set.nodes
|
local nodes = set.nodes
|
||||||
if sound_check or set_nodes then
|
if sound_check or nodes then
|
||||||
player_data = player_data or get_player_data(player, name)
|
player_data = player_data or get_player_data(player, name)
|
||||||
end
|
end
|
||||||
if ((not set_nodes) or check_nodes(player_data.totals, set_nodes)) and
|
if ((not nodes) or check_nodes(player_data.totals, nodes)) and
|
||||||
((not sound_check) or sound_check(player_data)) then
|
((not sound_check) or sound_check(player_data)) then
|
||||||
return set
|
return set
|
||||||
end
|
end
|
||||||
|
@ -126,7 +126,7 @@ df_ambience.add_set({
|
|||||||
sounds = {
|
sounds = {
|
||||||
{name = "dfcaverns_massive_digging", gain = 1.0},
|
{name = "dfcaverns_massive_digging", gain = 1.0},
|
||||||
{name = "dfcaverns_avalanche", gain = 1.0},
|
{name = "dfcaverns_avalanche", gain = 1.0},
|
||||||
},
|
},
|
||||||
sound_check = function(def)
|
sound_check = function(def)
|
||||||
return df_caverns.get_biome(def.pos) == "lava_sea"
|
return df_caverns.get_biome(def.pos) == "lava_sea"
|
||||||
end,
|
end,
|
||||||
|
@ -67,12 +67,12 @@ bones_loot.register_loot({
|
|||||||
{name = "vessels:steel_bottle", chance = 0.4, count = {1,3}, types = {"underworld_warrior"}},
|
{name = "vessels:steel_bottle", chance = 0.4, count = {1,3}, types = {"underworld_warrior"}},
|
||||||
{name = "vessels:glass_bottle", chance = 0.2, count = {1,2}, types = {"underworld_warrior"}},
|
{name = "vessels:glass_bottle", chance = 0.2, count = {1,2}, types = {"underworld_warrior"}},
|
||||||
{name = "vessels:glass_fragments", chance = 0.1, count = {1,4}, types = {"underworld_warrior"}},
|
{name = "vessels:glass_fragments", chance = 0.1, count = {1,4}, types = {"underworld_warrior"}},
|
||||||
|
|
||||||
{name = "default:book", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:book", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
{name = "default:paper", chance = 0.1, count = {1,6}, types = {"underworld_warrior"}},
|
{name = "default:paper", chance = 0.1, count = {1,6}, types = {"underworld_warrior"}},
|
||||||
{name = "default:skeleton_key", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:skeleton_key", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
{name = "default:torch", chance = 0.75, count = {1,10}, types = {"underworld_warrior"}},
|
{name = "default:torch", chance = 0.75, count = {1,10}, types = {"underworld_warrior"}},
|
||||||
|
|
||||||
{name = "default:pick_bronze", chance = 0.15, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:pick_bronze", chance = 0.15, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
{name = "default:pick_steel", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:pick_steel", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
{name = "default:pick_mese", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:pick_mese", chance = 0.05, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
@ -89,7 +89,7 @@ bones_loot.register_loot({
|
|||||||
{name = "default:sword_steel", chance = 0.75, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:sword_steel", chance = 0.75, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
{name = "default:sword_mese", chance = 0.35, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:sword_mese", chance = 0.35, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
{name = "default:sword_diamond", chance = 0.35, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:sword_diamond", chance = 0.35, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
|
|
||||||
{name = "default:coal_lump", chance = 0.5, count = {1,5}, types = {"underworld_warrior"}},
|
{name = "default:coal_lump", chance = 0.5, count = {1,5}, types = {"underworld_warrior"}},
|
||||||
{name = "default:mese_crystal", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:mese_crystal", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
{name = "default:diamond", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:diamond", chance = 0.1, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
@ -97,7 +97,7 @@ bones_loot.register_loot({
|
|||||||
{name = "default:copper_ingot", chance = 0.1, count = {1,2}, types = {"underworld_warrior"}},
|
{name = "default:copper_ingot", chance = 0.1, count = {1,2}, types = {"underworld_warrior"}},
|
||||||
{name = "default:bronze_ingot", chance = 0.2, count = {1,5}, types = {"underworld_warrior"}},
|
{name = "default:bronze_ingot", chance = 0.2, count = {1,5}, types = {"underworld_warrior"}},
|
||||||
{name = "default:gold_ingot", chance = 0.3, count = {1,3}, types = {"underworld_warrior"}},
|
{name = "default:gold_ingot", chance = 0.3, count = {1,3}, types = {"underworld_warrior"}},
|
||||||
{name = "default:mese_crystal_fragment", chance = 0.4, count = {1,5}, types = {"underworld_warrior"}},
|
{name = "default:mese_crystal_fragment", chance = 0.4, count = {1,5}, types = {"underworld_warrior"}},
|
||||||
{name = "default:obsidian_shard", chance = 0.4, count = {1,3}, types = {"underworld_warrior"}},
|
{name = "default:obsidian_shard", chance = 0.4, count = {1,3}, types = {"underworld_warrior"}},
|
||||||
{name = "default:flint", chance = 0.3, count = {1,1}, types = {"underworld_warrior"}},
|
{name = "default:flint", chance = 0.3, count = {1,1}, types = {"underworld_warrior"}},
|
||||||
{name = "default:sign_wall_wood", chance = 0.1, count = {1,4}, types = {"underworld_warrior"}},
|
{name = "default:sign_wall_wood", chance = 0.1, count = {1,4}, types = {"underworld_warrior"}},
|
||||||
@ -156,4 +156,4 @@ if df_caverns.config.enable_lava_sea then
|
|||||||
bones_loot.register_loot({name = "df_mapitems:mese_crystal", chance = 0.25, count = {1, 2}, types = {"underworld_warrior"}})
|
bones_loot.register_loot({name = "df_mapitems:mese_crystal", chance = 0.25, count = {1, 2}, types = {"underworld_warrior"}})
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
@ -65,29 +65,29 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
if minp.y > y_max or maxp.y < y_min then
|
if minp.y > y_max or maxp.y < y_min then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local t_start = os.clock()
|
local t_start = os.clock()
|
||||||
|
|
||||||
math.randomseed(minp.x + minp.y*2^8 + minp.z*2^16 + seed) -- make decorations consistent between runs
|
math.randomseed(minp.x + minp.y*2^8 + minp.z*2^16 + seed) -- make decorations consistent between runs
|
||||||
|
|
||||||
local vm, data, data_param2, area = mapgen_helper.mapgen_vm_data_param2()
|
local vm, data, data_param2, area = mapgen_helper.mapgen_vm_data_param2()
|
||||||
|
|
||||||
local nvals_cave = mapgen_helper.perlin2d("df_caverns:lava_cave", minp, maxp, perlin_cave)
|
local nvals_cave = mapgen_helper.perlin2d("df_caverns:lava_cave", minp, maxp, perlin_cave)
|
||||||
local nvals_wave = mapgen_helper.perlin2d("df_caverns:lava_wave", minp, maxp, perlin_wave)
|
local nvals_wave = mapgen_helper.perlin2d("df_caverns:lava_wave", minp, maxp, perlin_wave)
|
||||||
local nvals_mese = mapgen_helper.perlin2d("df_caverns:lava_mese", minp, maxp, perlin_mese)
|
local nvals_mese = mapgen_helper.perlin2d("df_caverns:lava_mese", minp, maxp, perlin_mese)
|
||||||
local nvals_lavasurface = mapgen_helper.perlin2d("df_cavern:cracks", minp, maxp, df_caverns.np_cracks)
|
local nvals_lavasurface = mapgen_helper.perlin2d("df_cavern:cracks", minp, maxp, df_caverns.np_cracks)
|
||||||
|
|
||||||
for vi, x, y, z in area:iterp_yxz(minp, maxp) do
|
for vi, x, y, z in area:iterp_yxz(minp, maxp) do
|
||||||
local index2d = mapgen_helper.index2d(minp, maxp, x, z)
|
local index2d = mapgen_helper.index2d(minp, maxp, x, z)
|
||||||
|
|
||||||
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
||||||
local wave = nvals_wave[index2d] * wave_mult
|
local wave = nvals_wave[index2d] * wave_mult
|
||||||
local lava = nvals_lavasurface[index2d]
|
local lava = nvals_lavasurface[index2d]
|
||||||
|
|
||||||
local floor_height = math.floor(abs_cave * floor_mult + floor_displace + median + wave)
|
local floor_height = math.floor(abs_cave * floor_mult + floor_displace + median + wave)
|
||||||
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
||||||
local lava_height = math.floor(median + lava * 2)
|
local lava_height = math.floor(median + lava * 2)
|
||||||
|
|
||||||
if y >= floor_height - 2 and y >= ceiling_height and y < ceiling_height + 2 and y <= lava_height + 2 and not mapgen_helper.buildable_to(data[vi]) then
|
if y >= floor_height - 2 and y >= ceiling_height and y < ceiling_height + 2 and y <= lava_height + 2 and not mapgen_helper.buildable_to(data[vi]) then
|
||||||
data[vi] = c_obsidian -- obsidian ceiling
|
data[vi] = c_obsidian -- obsidian ceiling
|
||||||
elseif y > floor_height and y < ceiling_height then
|
elseif y > floor_height and y < ceiling_height then
|
||||||
@ -109,7 +109,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
for z = minp.z + 1, maxp.z -1 do
|
for z = minp.z + 1, maxp.z -1 do
|
||||||
local index2d = mapgen_helper.index2d(minp, maxp, x, z)
|
local index2d = mapgen_helper.index2d(minp, maxp, x, z)
|
||||||
local mese_intensity = math.abs(nvals_mese[index2d])
|
local mese_intensity = math.abs(nvals_mese[index2d])
|
||||||
|
|
||||||
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
||||||
local wave = nvals_wave[index2d] * wave_mult
|
local wave = nvals_wave[index2d] * wave_mult
|
||||||
local floor_height = math.floor(abs_cave * floor_mult + floor_displace + median + wave)
|
local floor_height = math.floor(abs_cave * floor_mult + floor_displace + median + wave)
|
||||||
@ -117,7 +117,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
|
|
||||||
local lava = nvals_lavasurface[index2d]
|
local lava = nvals_lavasurface[index2d]
|
||||||
local lava_height = math.floor(median + lava * 2)
|
local lava_height = math.floor(median + lava * 2)
|
||||||
|
|
||||||
if mese_intensity > 0.65 and ceiling_height > lava_height + 1 and ceiling_height > floor_height + 1 and ceiling_height <= maxp.y and ceiling_height >= minp.y then
|
if mese_intensity > 0.65 and ceiling_height > lava_height + 1 and ceiling_height > floor_height + 1 and ceiling_height <= maxp.y and ceiling_height >= minp.y then
|
||||||
local vi = area:index(x, ceiling_height, z)
|
local vi = area:index(x, ceiling_height, z)
|
||||||
if not mapgen_helper.buildable_to(data[vi]) then
|
if not mapgen_helper.buildable_to(data[vi]) then
|
||||||
@ -139,19 +139,19 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--send data back to voxelmanip
|
--send data back to voxelmanip
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:set_param2_data(data_param2)
|
vm:set_param2_data(data_param2)
|
||||||
--calc lighting
|
--calc lighting
|
||||||
vm:set_lighting({day = 0, night = 0})
|
vm:set_lighting({day = 0, night = 0})
|
||||||
vm:calc_lighting()
|
vm:calc_lighting()
|
||||||
|
|
||||||
vm:update_liquids()
|
vm:update_liquids()
|
||||||
--write it to world
|
--write it to world
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
|
|
||||||
local time_taken = os.clock() - t_start -- how long this chunk took, in seconds
|
local time_taken = os.clock() - t_start -- how long this chunk took, in seconds
|
||||||
mapgen_helper.record_time("df_caverns lava sea", time_taken)
|
mapgen_helper.record_time("df_caverns lava sea", time_taken)
|
||||||
end)
|
end)
|
@ -50,7 +50,7 @@ df_caverns.register_biome_check(function(pos, heat, humidity)
|
|||||||
if pos.y < df_caverns.config.level1_min or pos.y > df_caverns.config.ymax then
|
if pos.y < df_caverns.config.level1_min or pos.y > df_caverns.config.ymax then
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
return get_biome(heat, humidity)
|
return get_biome(heat, humidity)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local tower_cap_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2)
|
local tower_cap_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
@ -106,7 +106,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
local nvals_cracks = mapgen_helper.perlin2d("df_cavern:cracks", minp, maxp, df_caverns.np_cracks)
|
local nvals_cracks = mapgen_helper.perlin2d("df_cavern:cracks", minp, maxp, df_caverns.np_cracks)
|
||||||
local nvals_cave = node_arrays.nvals_cave
|
local nvals_cave = node_arrays.nvals_cave
|
||||||
local cave_area = node_arrays.cave_area
|
local cave_area = node_arrays.cave_area
|
||||||
|
|
||||||
-- Partly fill flooded caverns and warrens
|
-- Partly fill flooded caverns and warrens
|
||||||
if minp.y <= subsea_level then
|
if minp.y <= subsea_level then
|
||||||
for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do
|
for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do
|
||||||
@ -119,14 +119,14 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
|
|
||||||
---------------------------------------------------------
|
---------------------------------------------------------
|
||||||
-- Cavern floors
|
-- Cavern floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
||||||
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
local abs_cracks = math.abs(nvals_cracks[index2d])
|
local abs_cracks = math.abs(nvals_cracks[index2d])
|
||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
|
|
||||||
if minp.y < subsea_level and area:get_y(vi) < subsea_level and flooded_caverns then
|
if minp.y < subsea_level and area:get_y(vi) < subsea_level and flooded_caverns then
|
||||||
-- underwater floor
|
-- underwater floor
|
||||||
df_caverns.flooded_cavern_floor(abs_cracks, vert_rand, vi, area, data)
|
df_caverns.flooded_cavern_floor(abs_cracks, vert_rand, vi, area, data)
|
||||||
@ -145,12 +145,12 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
df_caverns.dry_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
df_caverns.dry_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
if log_location then log_location("level1_barren_dry", area:position(vi)) end
|
if log_location then log_location("level1_barren_dry", area:position(vi)) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
-- Cavern ceilings
|
-- Cavern ceilings
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.cavern_ceiling_nodes) do
|
for _, vi in ipairs(node_arrays.cavern_ceiling_nodes) do
|
||||||
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
@ -176,7 +176,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
df_caverns.glow_worm_cavern_ceiling(abs_cracks, vert_rand, vi, area, data, data_param2)
|
df_caverns.glow_worm_cavern_ceiling(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Tunnel floors
|
-- Tunnel floors
|
||||||
|
|
||||||
@ -186,7 +186,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
|
|
||||||
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
||||||
if flooded_caverns or biome_name ~= "barren" then
|
if flooded_caverns or biome_name ~= "barren" then
|
||||||
-- we're in flooded areas or are not barren
|
-- we're in flooded areas or are not barren
|
||||||
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
else
|
else
|
||||||
@ -194,17 +194,17 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Tunnel ceiling
|
-- Tunnel ceiling
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
|
|
||||||
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
||||||
if flooded_caverns or biome_name ~= "barren" then
|
if flooded_caverns or biome_name ~= "barren" then
|
||||||
-- we're in flooded areas or are not barren
|
-- we're in flooded areas or are not barren
|
||||||
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
else
|
else
|
||||||
@ -219,13 +219,13 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
if cracks > 0.7 and data[vi-ystride*2] == c_water then
|
if cracks > 0.7 and data[vi-ystride*2] == c_water then
|
||||||
data[vi-ystride*2] = c_air
|
data[vi-ystride*2] = c_air
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Warren floors
|
-- Warren floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
@ -239,13 +239,13 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
|
|
||||||
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
||||||
if flooded_caverns or biome_name ~= "barren" then
|
if flooded_caverns or biome_name ~= "barren" then
|
||||||
-- we're in flooded areas or are not barren
|
-- we're in flooded areas or are not barren
|
||||||
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
else
|
else
|
||||||
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false, c_gravel)
|
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, false, c_gravel)
|
||||||
end
|
end
|
||||||
|
|
||||||
if biome_name ~= "barren" then
|
if biome_name ~= "barren" then
|
||||||
local cracks = nvals_cracks[index2d]
|
local cracks = nvals_cracks[index2d]
|
||||||
if cracks > 0.25 then
|
if cracks > 0.25 then
|
||||||
@ -267,7 +267,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Warren ceiling
|
-- Warren ceiling
|
||||||
|
|
||||||
@ -277,7 +277,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
|
|
||||||
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
||||||
if flooded_caverns or biome_name ~= "barren" then
|
if flooded_caverns or biome_name ~= "barren" then
|
||||||
-- we're in flooded areas or are not barren
|
-- we're in flooded areas or are not barren
|
||||||
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
else
|
else
|
||||||
@ -289,7 +289,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Column material override for dry biome
|
-- Column material override for dry biome
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.column_nodes) do
|
for _, vi in ipairs(node_arrays.column_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
@ -298,7 +298,7 @@ local decorate_level_1 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
if dry and data[vi] == c_wet_flowstone then
|
if dry and data[vi] == c_wet_flowstone then
|
||||||
data[vi] = c_dry_flowstone
|
data[vi] = c_dry_flowstone
|
||||||
end
|
end
|
||||||
|
|
||||||
if chasms_path then
|
if chasms_path then
|
||||||
local pos = area:position(vi)
|
local pos = area:position(vi)
|
||||||
if chasms.is_in_chasm_without_taper(pos) then
|
if chasms.is_in_chasm_without_taper(pos) then
|
||||||
|
@ -51,7 +51,7 @@ df_caverns.register_biome_check(function(pos, heat, humidity)
|
|||||||
if pos.y < df_caverns.config.level2_min or pos.y >= df_caverns.config.level1_min then
|
if pos.y < df_caverns.config.level2_min or pos.y >= df_caverns.config.level1_min then
|
||||||
return nil
|
return nil
|
||||||
end
|
end
|
||||||
return get_biome(heat, humidity)
|
return get_biome(heat, humidity)
|
||||||
end)
|
end)
|
||||||
|
|
||||||
local goblin_cap_shrublist
|
local goblin_cap_shrublist
|
||||||
@ -71,7 +71,7 @@ if minetest.get_modpath("df_farming") then
|
|||||||
df_farming.spawn_cave_wheat_vm,
|
df_farming.spawn_cave_wheat_vm,
|
||||||
df_farming.spawn_dead_fungus_vm,
|
df_farming.spawn_dead_fungus_vm,
|
||||||
df_farming.spawn_cavern_fungi_vm,
|
df_farming.spawn_cavern_fungi_vm,
|
||||||
}
|
}
|
||||||
spore_tree_shrublist = {
|
spore_tree_shrublist = {
|
||||||
df_farming.spawn_pig_tail_vm,
|
df_farming.spawn_pig_tail_vm,
|
||||||
df_farming.spawn_pig_tail_vm,
|
df_farming.spawn_pig_tail_vm,
|
||||||
@ -102,7 +102,7 @@ local goblin_cap_cavern_floor = function(abs_cracks, vert_rand, vi, area, data,
|
|||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local spore_tree_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2)
|
local spore_tree_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
local ystride = area.ystride
|
local ystride = area.ystride
|
||||||
if abs_cracks < 0.1 then
|
if abs_cracks < 0.1 then
|
||||||
df_caverns.stalagmites(abs_cracks, vert_rand, vi, area, data, data_param2, true)
|
df_caverns.stalagmites(abs_cracks, vert_rand, vi, area, data, data_param2, true)
|
||||||
@ -150,10 +150,10 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
local nvals_cave = node_arrays.nvals_cave
|
local nvals_cave = node_arrays.nvals_cave
|
||||||
local cave_area = node_arrays.cave_area
|
local cave_area = node_arrays.cave_area
|
||||||
local cavern_def = node_arrays.cavern_def
|
local cavern_def = node_arrays.cavern_def
|
||||||
|
|
||||||
local vein_noise
|
local vein_noise
|
||||||
local vein_area
|
local vein_area
|
||||||
|
|
||||||
-- Partly fill flooded caverns and warrens
|
-- Partly fill flooded caverns and warrens
|
||||||
for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do
|
for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do
|
||||||
local cave_val = nvals_cave[vi]
|
local cave_val = nvals_cave[vi]
|
||||||
@ -162,7 +162,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
local cave_threshold = cavern_def.cave_threshold
|
local cave_threshold = cavern_def.cave_threshold
|
||||||
|
|
||||||
--check if we're just inside the boundary of the (negazone) cavern threshold
|
--check if we're just inside the boundary of the (negazone) cavern threshold
|
||||||
if biome_name == "barren" and cave_val < -cave_threshold and cave_val > -cave_threshold - 0.01 then
|
if biome_name == "barren" and cave_val < -cave_threshold and cave_val > -cave_threshold - 0.01 then
|
||||||
-- add giant rooty structures to the flooded barren caverns
|
-- add giant rooty structures to the flooded barren caverns
|
||||||
@ -179,18 +179,18 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
data[vi] = c_water -- otherwise, fill air with water when below sea level
|
data[vi] = c_water -- otherwise, fill air with water when below sea level
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------
|
---------------------------------------------------------
|
||||||
-- Cavern floors
|
-- Cavern floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
||||||
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
local abs_cracks = math.abs(nvals_cracks[index2d])
|
local abs_cracks = math.abs(nvals_cracks[index2d])
|
||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
|
|
||||||
if minp.y < subsea_level and area:get_y(vi) < subsea_level and flooded_caverns then
|
if minp.y < subsea_level and area:get_y(vi) < subsea_level and flooded_caverns then
|
||||||
-- underwater floor
|
-- underwater floor
|
||||||
df_caverns.flooded_cavern_floor(abs_cracks, vert_rand, vi, area, data)
|
df_caverns.flooded_cavern_floor(abs_cracks, vert_rand, vi, area, data)
|
||||||
@ -207,7 +207,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
goblin_cap_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
goblin_cap_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
if log_location then log_location("level2_goblincap", area:position(vi)) end
|
if log_location then log_location("level2_goblincap", area:position(vi)) end
|
||||||
elseif biome_name == "sporetree" then
|
elseif biome_name == "sporetree" then
|
||||||
spore_tree_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
spore_tree_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
if log_location then log_location("level2_sporetree", area:position(vi)) end
|
if log_location then log_location("level2_sporetree", area:position(vi)) end
|
||||||
elseif biome_name == "tunneltube" then
|
elseif biome_name == "tunneltube" then
|
||||||
tunnel_tube_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
tunnel_tube_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
@ -217,7 +217,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
-- Cavern ceilings
|
-- Cavern ceilings
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.cavern_ceiling_nodes) do
|
for _, vi in ipairs(node_arrays.cavern_ceiling_nodes) do
|
||||||
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
@ -243,22 +243,22 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
if abs_cracks * y_proportional > 0.3 and math.random() < 0.005 * y_proportional then
|
if abs_cracks * y_proportional > 0.3 and math.random() < 0.005 * y_proportional then
|
||||||
df_mapitems.place_big_crystal_cluster(area, data, data_param2, vi, math.random(0,1), true)
|
df_mapitems.place_big_crystal_cluster(area, data, data_param2, vi, math.random(0,1), true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
else -- all the other biomes
|
else -- all the other biomes
|
||||||
df_caverns.glow_worm_cavern_ceiling(abs_cracks, vert_rand, vi, area, data, data_param2)
|
df_caverns.glow_worm_cavern_ceiling(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Tunnel floors
|
-- Tunnel floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.tunnel_floor_nodes) do
|
for _, vi in ipairs(node_arrays.tunnel_floor_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
|
|
||||||
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
||||||
if flooded_caverns or biome_name ~= "barren" then
|
if flooded_caverns or biome_name ~= "barren" then
|
||||||
-- we're in flooded areas or are not barren
|
-- we're in flooded areas or are not barren
|
||||||
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
else
|
else
|
||||||
@ -266,10 +266,10 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Tunnel ceiling
|
-- Tunnel ceiling
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
@ -295,20 +295,19 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
else
|
else
|
||||||
-- air pockets
|
-- air pockets
|
||||||
local ystride = area.ystride
|
|
||||||
local cracks = nvals_cracks[index2d]
|
local cracks = nvals_cracks[index2d]
|
||||||
if cracks > 0.4 and data[vi-ystride] == c_water then
|
if cracks > 0.4 and data[vi-ystride] == c_water then
|
||||||
data[vi-ystride] = c_air
|
data[vi-ystride] = c_air
|
||||||
if cracks > 0.6 and data[vi-ystride*2] == c_water then
|
if cracks > 0.6 and data[vi-ystride*2] == c_water then
|
||||||
data[vi-ystride*2] = c_air
|
data[vi-ystride*2] = c_air
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Warren floors
|
-- Warren floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
@ -319,9 +318,9 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
if flooded_caverns then flood_name = "_flooded" end
|
if flooded_caverns then flood_name = "_flooded" end
|
||||||
log_location("level2_warren_"..biome_name..flood_name, area:position(vi))
|
log_location("level2_warren_"..biome_name..flood_name, area:position(vi))
|
||||||
end
|
end
|
||||||
|
|
||||||
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
||||||
if flooded_caverns or biome_name ~= "barren" then
|
if flooded_caverns or biome_name ~= "barren" then
|
||||||
-- we're in flooded areas or are not barren
|
-- we're in flooded areas or are not barren
|
||||||
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
else
|
else
|
||||||
@ -329,7 +328,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Warren ceiling
|
-- Warren ceiling
|
||||||
|
|
||||||
@ -340,7 +339,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
local ystride = area.ystride
|
local ystride = area.ystride
|
||||||
|
|
||||||
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
||||||
if flooded_caverns or biome_name ~= "barren" then
|
if flooded_caverns or biome_name ~= "barren" then
|
||||||
-- we're in flooded areas or are not barren
|
-- we're in flooded areas or are not barren
|
||||||
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
else
|
else
|
||||||
@ -365,14 +364,14 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
if cracks > 0.6 and data[vi-ystride*2] == c_water then
|
if cracks > 0.6 and data[vi-ystride*2] == c_water then
|
||||||
data[vi-ystride*2] = c_air
|
data[vi-ystride*2] = c_air
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Column material override for dry biome
|
-- Column material override for dry biome
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.column_nodes) do
|
for _, vi in ipairs(node_arrays.column_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
@ -381,7 +380,7 @@ local decorate_level_2 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
if dry and data[vi] == c_wet_flowstone then
|
if dry and data[vi] == c_wet_flowstone then
|
||||||
data[vi] = c_dry_flowstone
|
data[vi] = c_dry_flowstone
|
||||||
end
|
end
|
||||||
|
|
||||||
if chasms_path then
|
if chasms_path then
|
||||||
local pos = area:position(vi)
|
local pos = area:position(vi)
|
||||||
if chasms.is_in_chasm_without_taper(pos) then
|
if chasms.is_in_chasm_without_taper(pos) then
|
||||||
|
@ -98,7 +98,7 @@ local black_cap_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, d
|
|||||||
else
|
else
|
||||||
data[vi] = c_cobble_fungus
|
data[vi] = c_cobble_fungus
|
||||||
end
|
end
|
||||||
|
|
||||||
if abs_cracks < 0.1 then
|
if abs_cracks < 0.1 then
|
||||||
df_caverns.stalagmites(abs_cracks, vert_rand, vi, area, data, data_param2, false)
|
df_caverns.stalagmites(abs_cracks, vert_rand, vi, area, data, data_param2, false)
|
||||||
elseif abs_cracks < 0.15 and math.random() < 0.3 then
|
elseif abs_cracks < 0.15 and math.random() < 0.3 then
|
||||||
@ -127,7 +127,7 @@ local nether_cap_cavern_floor = function(cracks, abs_cracks, vert_rand, vi, area
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if cracks < -0.3 then
|
if cracks < -0.3 then
|
||||||
data[vi] = c_silver_sand
|
data[vi] = c_silver_sand
|
||||||
if math.random() < 0.025 then
|
if math.random() < 0.025 then
|
||||||
@ -149,7 +149,7 @@ local nether_cap_cavern_floor = function(cracks, abs_cracks, vert_rand, vi, area
|
|||||||
data[vi + 2*ystride] = c_ice
|
data[vi + 2*ystride] = c_ice
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local nether_cap_cavern_ceiling = function(abs_cracks, vert_rand, vi, area, data, data_param2)
|
local nether_cap_cavern_ceiling = function(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
@ -166,7 +166,7 @@ local nether_cap_cavern_ceiling = function(abs_cracks, vert_rand, vi, area, data
|
|||||||
subterrane.stalactite(vi-ystride, area, data, data_param2, param2, math.floor(height*0.5), df_mapitems.dry_stalagmite_ids)
|
subterrane.stalactite(vi-ystride, area, data, data_param2, param2, math.floor(height*0.5), df_mapitems.dry_stalagmite_ids)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
if c_sprite and abs_cracks < 0.5 and math.random() < 0.02 then
|
if c_sprite and abs_cracks < 0.5 and math.random() < 0.02 then
|
||||||
local sprite_vi = vi-ystride*math.random(1,5)
|
local sprite_vi = vi-ystride*math.random(1,5)
|
||||||
if data[sprite_vi] == c_air and area:containsi(sprite_vi) then
|
if data[sprite_vi] == c_air and area:containsi(sprite_vi) then
|
||||||
@ -221,7 +221,7 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
local nvals_cave = node_arrays.nvals_cave
|
local nvals_cave = node_arrays.nvals_cave
|
||||||
local cave_area = node_arrays.cave_area
|
local cave_area = node_arrays.cave_area
|
||||||
local cavern_def = node_arrays.cavern_def
|
local cavern_def = node_arrays.cavern_def
|
||||||
|
|
||||||
-- Partly fill flooded caverns and warrens
|
-- Partly fill flooded caverns and warrens
|
||||||
if minp.y <= subsea_level then
|
if minp.y <= subsea_level then
|
||||||
for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do
|
for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do
|
||||||
@ -230,8 +230,8 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
if data[vi] == c_air and y <= subsea_level then
|
if data[vi] == c_air and y <= subsea_level then
|
||||||
data[vi] = c_water
|
data[vi] = c_water
|
||||||
end
|
end
|
||||||
|
|
||||||
if (mapgen_helper.is_pos_within_box({x=x, y=y, z=z}, minp, maxp)) then
|
if (mapgen_helper.is_pos_within_box({x=x, y=y, z=z}, minp, maxp)) then
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
if biome_name == "blackcap" then
|
if biome_name == "blackcap" then
|
||||||
@ -249,10 +249,10 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
---------------------------------------------------------
|
---------------------------------------------------------
|
||||||
-- Cavern floors
|
-- Cavern floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
||||||
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
@ -293,15 +293,15 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
if log_location then log_location("level3_blackcap", area:position(vi)) end
|
if log_location then log_location("level3_blackcap", area:position(vi)) end
|
||||||
elseif biome_name == "bloodnether" then
|
elseif biome_name == "bloodnether" then
|
||||||
if flooded_caverns then
|
if flooded_caverns then
|
||||||
nether_cap_cavern_floor(cracks, abs_cracks, vert_rand, vi, area, data, data_param2)
|
nether_cap_cavern_floor(cracks, abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
if log_location then log_location("level3_nethercap", area:position(vi)) end
|
if log_location then log_location("level3_nethercap", area:position(vi)) end
|
||||||
else
|
else
|
||||||
blood_thorn_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
blood_thorn_cavern_floor(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
if log_location then log_location("level3_bloodthorn", area:position(vi)) end
|
if log_location then log_location("level3_bloodthorn", area:position(vi)) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
-- Cavern ceilings
|
-- Cavern ceilings
|
||||||
|
|
||||||
@ -318,7 +318,7 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
elseif biome_name == "blackcap" then
|
elseif biome_name == "blackcap" then
|
||||||
if abs_cracks < 0.1 then
|
if abs_cracks < 0.1 then
|
||||||
df_caverns.stalactites(abs_cracks, vert_rand, vi, area, data, data_param2, false)
|
df_caverns.stalactites(abs_cracks, vert_rand, vi, area, data, data_param2, false)
|
||||||
end
|
end
|
||||||
if math.random() < 0.25 then
|
if math.random() < 0.25 then
|
||||||
data[vi] = c_stone_with_coal
|
data[vi] = c_stone_with_coal
|
||||||
end
|
end
|
||||||
@ -363,7 +363,7 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Tunnel floors
|
-- Tunnel floors
|
||||||
@ -374,7 +374,7 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
|
|
||||||
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
||||||
if flooded_caverns or biome_name == "blackcap" then
|
if flooded_caverns or biome_name == "blackcap" then
|
||||||
-- we're in flooded areas or are not barren
|
-- we're in flooded areas or are not barren
|
||||||
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
else
|
else
|
||||||
@ -382,17 +382,17 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Tunnel ceiling
|
-- Tunnel ceiling
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local humidity = humiditymap[index2d]
|
local humidity = humiditymap[index2d]
|
||||||
local biome_name = get_biome(heatmap[index2d], humidity)
|
local biome_name = get_biome(heatmap[index2d], humidity)
|
||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
local ystride = area.ystride
|
local ystride = area.ystride
|
||||||
|
|
||||||
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
if not (flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level) then
|
||||||
if flooded_caverns or biome_name == "blackcap" then
|
if flooded_caverns or biome_name == "blackcap" then
|
||||||
-- we're in flooded areas or are not barren
|
-- we're in flooded areas or are not barren
|
||||||
@ -415,11 +415,11 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
if cracks > 0.7 and data[vi-ystride*2] == c_water then
|
if cracks > 0.7 and data[vi-ystride*2] == c_water then
|
||||||
data[vi-ystride*2] = c_air
|
data[vi-ystride*2] = c_air
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Warren ceiling
|
-- Warren ceiling
|
||||||
|
|
||||||
@ -427,13 +427,13 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
|
|
||||||
if log_location then
|
if log_location then
|
||||||
local flood_name = ""
|
local flood_name = ""
|
||||||
if flooded_caverns then flood_name = "_flooded" end
|
if flooded_caverns then flood_name = "_flooded" end
|
||||||
log_location("level3_warren_"..biome_name..flood_name, area:position(vi))
|
log_location("level3_warren_"..biome_name..flood_name, area:position(vi))
|
||||||
end
|
end
|
||||||
|
|
||||||
if flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level then
|
if flooded_caverns and minp.y < subsea_level and area:get_y(vi) < subsea_level then
|
||||||
-- underwater ceiling, do nothing
|
-- underwater ceiling, do nothing
|
||||||
elseif biome_name == "bloodnether" and flooded_caverns then
|
elseif biome_name == "bloodnether" and flooded_caverns then
|
||||||
@ -466,12 +466,12 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Warren floors
|
-- Warren floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
local biome_name = get_biome(heatmap[index2d], humiditymap[index2d])
|
||||||
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
local flooded_caverns = nvals_cave[vi] < 0 -- this indicates if we're in the "flooded" set of caves or not.
|
||||||
|
|
||||||
if minp.y < subsea_level and area:get_y(vi) < subsea_level and flooded_caverns then
|
if minp.y < subsea_level and area:get_y(vi) < subsea_level and flooded_caverns then
|
||||||
-- underwater floor, do nothing
|
-- underwater floor, do nothing
|
||||||
elseif biome_name == "bloodnether" and flooded_caverns then
|
elseif biome_name == "bloodnether" and flooded_caverns then
|
||||||
@ -506,7 +506,7 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Column material override for dry and icy biomes
|
-- Column material override for dry and icy biomes
|
||||||
for _, vi in ipairs(node_arrays.column_nodes) do
|
for _, vi in ipairs(node_arrays.column_nodes) do
|
||||||
@ -540,7 +540,7 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
elseif biome_name == "barren" and not flooded_caverns and data[vi] == c_wet_flowstone then
|
elseif biome_name == "barren" and not flooded_caverns and data[vi] == c_wet_flowstone then
|
||||||
data[vi] = c_dry_flowstone
|
data[vi] = c_dry_flowstone
|
||||||
end
|
end
|
||||||
|
|
||||||
if chasms_path then
|
if chasms_path then
|
||||||
local pos = area:position(vi)
|
local pos = area:position(vi)
|
||||||
if chasms.is_in_chasm_without_taper(pos) then
|
if chasms.is_in_chasm_without_taper(pos) then
|
||||||
@ -552,7 +552,7 @@ local decorate_level_3 = function(minp, maxp, seed, vm, node_arrays, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
vm:set_param2_data(data_param2)
|
vm:set_param2_data(data_param2)
|
||||||
|
@ -6,15 +6,15 @@ minetest.register_on_generated(function(minp, maxp, blockseed)
|
|||||||
if maxp.y > 0 or maxp.y < df_caverns.config.primordial_min then return end
|
if maxp.y > 0 or maxp.y < df_caverns.config.primordial_min then return end
|
||||||
|
|
||||||
-- using after so that all other mapgen should be finished fiddling with stuff by the time this runs
|
-- using after so that all other mapgen should be finished fiddling with stuff by the time this runs
|
||||||
minetest.after(1, function(minp, maxp)
|
minetest.after(1, function(minp_after, maxp_after)
|
||||||
local middle = vector.divide(vector.add(minp, maxp), 2)
|
local middle = vector.divide(vector.add(minp_after, maxp_after), 2)
|
||||||
if collectible_lore.are_cairns_close_to_pos(middle) then return end -- quick and dirty check to discard mapblocks close to other cairns
|
if collectible_lore.are_cairns_close_to_pos(middle) then return end -- quick and dirty check to discard mapblocks close to other cairns
|
||||||
local possibles = minetest.find_nodes_in_area_under_air(minp, maxp, foundations)
|
local possibles = minetest.find_nodes_in_area_under_air(minp_after, maxp_after, foundations)
|
||||||
if next(possibles) then
|
if next(possibles) then
|
||||||
local target = possibles[math.random(#possibles)]
|
local target = possibles[math.random(#possibles)]
|
||||||
target.y=target.y+1
|
target.y=target.y+1
|
||||||
collectible_lore.place_cairn(target)
|
collectible_lore.place_cairn(target)
|
||||||
end
|
end
|
||||||
end, minp, maxp)
|
end, minp, maxp)
|
||||||
|
|
||||||
end)
|
end)
|
@ -62,10 +62,10 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
local t_start = os.clock()
|
local t_start = os.clock()
|
||||||
|
|
||||||
local vm, data, area = mapgen_helper.mapgen_vm_data()
|
local vm, data, area = mapgen_helper.mapgen_vm_data()
|
||||||
|
|
||||||
local nvals_cave = mapgen_helper.perlin2d("df_caverns:oil_cave", minp, maxp, perlin_cave)
|
local nvals_cave = mapgen_helper.perlin2d("df_caverns:oil_cave", minp, maxp, perlin_cave)
|
||||||
local nvals_wave = mapgen_helper.perlin2d("df_caverns:oil_wave", minp, maxp, perlin_wave)
|
local nvals_wave = mapgen_helper.perlin2d("df_caverns:oil_wave", minp, maxp, perlin_wave)
|
||||||
|
|
||||||
if c_lava_set == nil then
|
if c_lava_set == nil then
|
||||||
c_lava_set = {}
|
c_lava_set = {}
|
||||||
for name, def in pairs(minetest.registered_nodes) do
|
for name, def in pairs(minetest.registered_nodes) do
|
||||||
@ -74,16 +74,16 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for vi, x, y, z in area:iterp_yxz(minp, maxp) do
|
for vi, x, y, z in area:iterp_yxz(minp, maxp) do
|
||||||
local index2d = mapgen_helper.index2d(minp, maxp, x, z)
|
local index2d = mapgen_helper.index2d(minp, maxp, x, z)
|
||||||
|
|
||||||
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
||||||
local wave = nvals_wave[index2d] * wave_mult
|
local wave = nvals_wave[index2d] * wave_mult
|
||||||
|
|
||||||
local floor_height = math.floor(abs_cave * floor_mult + floor_displace + median + wave)
|
local floor_height = math.floor(abs_cave * floor_mult + floor_displace + median + wave)
|
||||||
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
||||||
|
|
||||||
if y > floor_height - 5 and y < ceiling_height + 5 then
|
if y > floor_height - 5 and y < ceiling_height + 5 then
|
||||||
if c_lava_set[data[vi]] then
|
if c_lava_set[data[vi]] then
|
||||||
data[vi] = c_obsidian
|
data[vi] = c_obsidian
|
||||||
@ -101,20 +101,20 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
if log_location then log_location("oil_sea", area:position(vi)) end
|
if log_location then log_location("oil_sea", area:position(vi)) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
--send data back to voxelmanip
|
--send data back to voxelmanip
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
--calc lighting
|
--calc lighting
|
||||||
vm:set_lighting({day = 0, night = 0})
|
vm:set_lighting({day = 0, night = 0})
|
||||||
vm:calc_lighting()
|
vm:calc_lighting()
|
||||||
|
|
||||||
vm:update_liquids()
|
vm:update_liquids()
|
||||||
--write it to world
|
--write it to world
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
|
|
||||||
local time_taken = os.clock() - t_start -- how long this chunk took, in seconds
|
local time_taken = os.clock() - t_start -- how long this chunk took, in seconds
|
||||||
mapgen_helper.record_time("df_caverns oil sea", time_taken)
|
mapgen_helper.record_time("df_caverns oil sea", time_taken)
|
||||||
end)
|
end)
|
||||||
|
@ -164,7 +164,7 @@ local c_fireflies = df_caverns.node_id.fireflies
|
|||||||
local jungle_cavern_floor = function(abs_cracks, humidity, vi, area, data, data_param2)
|
local jungle_cavern_floor = function(abs_cracks, humidity, vi, area, data, data_param2)
|
||||||
local ystride = area.ystride
|
local ystride = area.ystride
|
||||||
local humidityfactor = humidity/100
|
local humidityfactor = humidity/100
|
||||||
|
|
||||||
if log_location then
|
if log_location then
|
||||||
local pos = area:position(vi)
|
local pos = area:position(vi)
|
||||||
log_location("primordial_jungle", pos)
|
log_location("primordial_jungle", pos)
|
||||||
@ -189,7 +189,7 @@ local jungle_cavern_floor = function(abs_cracks, humidity, vi, area, data, data_
|
|||||||
elseif rand < 0.3 then
|
elseif rand < 0.3 then
|
||||||
data[vi+ystride] = jungle_plants[math.random(1,#jungle_plants)]
|
data[vi+ystride] = jungle_plants[math.random(1,#jungle_plants)]
|
||||||
end
|
end
|
||||||
|
|
||||||
if c_fireflies and math.random() < 0.01 then
|
if c_fireflies and math.random() < 0.01 then
|
||||||
local firefly_vi = vi + ystride * math.random(1, 5)
|
local firefly_vi = vi + ystride * math.random(1, 5)
|
||||||
if data[firefly_vi] == c_air then
|
if data[firefly_vi] == c_air then
|
||||||
@ -258,7 +258,7 @@ local jungle_warren_floor = function(abs_cracks, vi, area, data, data_param2)
|
|||||||
elseif abs_cracks < 1 then
|
elseif abs_cracks < 1 then
|
||||||
data[vi] = c_dirt
|
data[vi] = c_dirt
|
||||||
end
|
end
|
||||||
|
|
||||||
if c_fireflies and math.random() < 0.005 then
|
if c_fireflies and math.random() < 0.005 then
|
||||||
local firefly_vi = vi + ystride * math.random(1, 5)
|
local firefly_vi = vi + ystride * math.random(1, 5)
|
||||||
if data[firefly_vi] == c_air then
|
if data[firefly_vi] == c_air then
|
||||||
@ -277,20 +277,20 @@ local decorate_primordial = function(minp, maxp, seed, vm, node_arrays, area, da
|
|||||||
local nvals_cracks = mapgen_helper.perlin2d("df_cavern:cracks", minp, maxp, df_caverns.np_cracks)
|
local nvals_cracks = mapgen_helper.perlin2d("df_cavern:cracks", minp, maxp, df_caverns.np_cracks)
|
||||||
local cave_area = node_arrays.cave_area
|
local cave_area = node_arrays.cave_area
|
||||||
local nvals_cave = node_arrays.nvals_cave
|
local nvals_cave = node_arrays.nvals_cave
|
||||||
|
|
||||||
local humiditymap = minetest.get_mapgen_object("humiditymap")
|
local humiditymap = minetest.get_mapgen_object("humiditymap")
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------
|
---------------------------------------------------------
|
||||||
-- Cavern floors
|
-- Cavern floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local cracks = nvals_cracks[index2d]
|
local cracks = nvals_cracks[index2d]
|
||||||
local abs_cracks = math.abs(cracks)
|
local abs_cracks = math.abs(cracks)
|
||||||
local humidity = humiditymap[index2d]
|
local humidity = humiditymap[index2d]
|
||||||
local jungle = nvals_cave[vi] < 0
|
local jungle = nvals_cave[vi] < 0
|
||||||
|
|
||||||
if jungle then
|
if jungle then
|
||||||
jungle_cavern_floor(abs_cracks, humidity, vi, area, data, data_param2)
|
jungle_cavern_floor(abs_cracks, humidity, vi, area, data, data_param2)
|
||||||
else
|
else
|
||||||
@ -298,7 +298,7 @@ local decorate_primordial = function(minp, maxp, seed, vm, node_arrays, area, da
|
|||||||
if log_location then log_location("primordial_mushrooms", area:position(vi)) end
|
if log_location then log_location("primordial_mushrooms", area:position(vi)) end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
-- Cavern ceilings
|
-- Cavern ceilings
|
||||||
|
|
||||||
@ -314,19 +314,19 @@ local decorate_primordial = function(minp, maxp, seed, vm, node_arrays, area, da
|
|||||||
mushroom_cavern_ceiling(abs_cracks, humidity, vi, area, data, data_param2)
|
mushroom_cavern_ceiling(abs_cracks, humidity, vi, area, data, data_param2)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Tunnel floors
|
-- Tunnel floors
|
||||||
|
|
||||||
-- for _, vi in ipairs(node_arrays.tunnel_floor_nodes) do
|
-- for _, vi in ipairs(node_arrays.tunnel_floor_nodes) do
|
||||||
-- end
|
-- end
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Tunnel ceiling
|
-- Tunnel ceiling
|
||||||
|
|
||||||
-- for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
-- for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
||||||
-- end
|
-- end
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Warren ceiling
|
-- Warren ceiling
|
||||||
|
|
||||||
@ -335,7 +335,7 @@ local decorate_primordial = function(minp, maxp, seed, vm, node_arrays, area, da
|
|||||||
local cracks = nvals_cracks[index2d]
|
local cracks = nvals_cracks[index2d]
|
||||||
local abs_cracks = math.abs(cracks)
|
local abs_cracks = math.abs(cracks)
|
||||||
local jungle = nvals_cave[vi] < 0
|
local jungle = nvals_cave[vi] < 0
|
||||||
|
|
||||||
if jungle then
|
if jungle then
|
||||||
jungle_warren_ceiling(abs_cracks, vi, area, data, data_param2)
|
jungle_warren_ceiling(abs_cracks, vi, area, data, data_param2)
|
||||||
else
|
else
|
||||||
@ -346,13 +346,13 @@ local decorate_primordial = function(minp, maxp, seed, vm, node_arrays, area, da
|
|||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Warren floors
|
-- Warren floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local cracks = nvals_cracks[index2d]
|
local cracks = nvals_cracks[index2d]
|
||||||
local abs_cracks = math.abs(cracks)
|
local abs_cracks = math.abs(cracks)
|
||||||
local jungle = nvals_cave[vi] < 0
|
local jungle = nvals_cave[vi] < 0
|
||||||
|
|
||||||
if jungle then
|
if jungle then
|
||||||
jungle_warren_floor(abs_cracks, vi, area, data, data_param2)
|
jungle_warren_floor(abs_cracks, vi, area, data, data_param2)
|
||||||
if log_location then log_location("primordial_jungle_warren", area:position(vi)) end
|
if log_location then log_location("primordial_jungle_warren", area:position(vi)) end
|
||||||
@ -377,7 +377,7 @@ local decorate_primordial = function(minp, maxp, seed, vm, node_arrays, area, da
|
|||||||
if data[rand_vi] == c_air then
|
if data[rand_vi] == c_air then
|
||||||
data[rand_vi] = c_giant_mycelium
|
data[rand_vi] = c_giant_mycelium
|
||||||
minetest.get_node_timer(area:position(rand_vi)):start(math.random(1,giant_mycelium_timer_spread))
|
minetest.get_node_timer(area:position(rand_vi)):start(math.random(1,giant_mycelium_timer_spread))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -44,6 +44,6 @@ return {
|
|||||||
n5, n5, n5,
|
n5, n5, n5,
|
||||||
n5, n5, n5,
|
n5, n5, n5,
|
||||||
n5, n11, n5,
|
n5, n11, n5,
|
||||||
n5, n5, n5,
|
n5, n5, n5,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -25,91 +25,91 @@ return {
|
|||||||
size = {x = 15, y = 12, z = 8},
|
size = {x = 15, y = 12, z = 8},
|
||||||
center_pos = {x = 10, y = 6, z = 3},
|
center_pos = {x = 10, y = 6, z = 3},
|
||||||
data = {
|
data = {
|
||||||
n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2,
|
n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3,
|
n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3,
|
||||||
n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n3, n4, n4, n4, n4,
|
n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n3, n4, n4, n4, n4,
|
||||||
n4, n4, n3, n1, n1, n1, n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n4,
|
n4, n4, n3, n1, n1, n1, n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n4,
|
||||||
n3, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n1,
|
n3, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n5, n6, n6, n6, n6, n6, n6, n7, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n5, n6, n6, n6, n6, n6, n6, n7, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
n1, n1, n1, n1, n8, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1,
|
n1, n1, n1, n1, n8, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1,
|
||||||
n1, n1, n8, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1,
|
n1, n1, n8, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n3, n9, n9, n9, n9, n9, n9, n3, n1, n1, n1, n1, n1, n1, n1, n4,
|
n1, n3, n9, n9, n9, n9, n9, n9, n3, n1, n1, n1, n1, n1, n1, n1, n4,
|
||||||
n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8,
|
n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8,
|
||||||
n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n10, n9, n9, n9, n9,
|
n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n10, n9, n9, n9, n9,
|
||||||
n9, n9, n11, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
n9, n9, n11, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n1, n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
n1, n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
||||||
n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
||||||
n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1,
|
n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1,
|
||||||
n12, n12, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1,
|
n12, n12, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1,
|
||||||
n12, n3, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n8, n3,
|
n12, n3, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n8, n3,
|
||||||
n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n3, n9, n9,
|
n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n3, n9, n9,
|
||||||
n9, n9, n9, n9, n3, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8, n8, n8,
|
n9, n9, n9, n9, n3, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8, n8, n8,
|
||||||
n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8, n8, n8, n8, n8,
|
n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8, n8, n8, n8, n8,
|
||||||
n4, n1, n1, n1, n1, n1, n1, n1, n10, n9, n9, n9, n9, n9, n9, n11, n1,
|
n4, n1, n1, n1, n1, n1, n1, n1, n10, n9, n9, n9, n9, n9, n9, n11, n1,
|
||||||
n13, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n13,
|
n13, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n13,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n13, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n13, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n13, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n13, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n13, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n13, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n13, n3, n3, n3, n3,
|
n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n13, n3, n3, n3, n3,
|
||||||
n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n8, n8, n8, n8, n8, n8, n8,
|
n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n8, n8, n8, n8, n8, n8, n8,
|
||||||
n8, n4, n1, n1, n1, n1, n1, n1, n8, n8, n8, n8, n8, n8, n8, n8, n4,
|
n8, n4, n1, n1, n1, n1, n1, n1, n8, n8, n8, n8, n8, n8, n8, n8, n4,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n3, n9, n9, n9, n9, n9, n9, n3, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n3, n9, n9, n9, n9, n9, n9, n3, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n10, n9, n9, n9, n9, n9, n9, n11, n1, n13, n2, n2, n2, n2, n2,
|
n1, n10, n9, n9, n9, n9, n9, n9, n11, n1, n13, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n13, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n13, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n1, n1, n1, n13, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n1, n1, n1, n13, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n1, n1, n1, n1, n13, n2, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n1, n1, n1, n1, n13, n2, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n1, n1, n1, n1, n1, n13, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n1, n1, n1, n1, n1, n13, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n1, n1, n1, n1, n1, n1, n13, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n1, n1, n1, n1, n13, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
n1, n1, n1, n1, n8, n8, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1,
|
n1, n1, n1, n1, n8, n8, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1,
|
||||||
n1, n1, n8, n8, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1,
|
n1, n1, n8, n8, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n3, n9, n9, n9, n9, n9, n9, n3, n1, n1, n1, n1, n1, n1, n1, n4,
|
n1, n3, n9, n9, n9, n9, n9, n9, n3, n1, n1, n1, n1, n1, n1, n1, n4,
|
||||||
n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8,
|
n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8,
|
||||||
n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n10, n9, n9, n9, n9,
|
n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n10, n9, n9, n9, n9,
|
||||||
n9, n9, n11, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
n9, n9, n11, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n1, n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
n1, n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
||||||
n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
n1, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
||||||
n12, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1,
|
n12, n12, n12, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1,
|
||||||
n12, n12, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1,
|
n12, n12, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1,
|
||||||
n12, n3, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n8, n3,
|
n12, n3, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n8, n3,
|
||||||
n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n3, n9, n9,
|
n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n3, n9, n9,
|
||||||
n9, n9, n9, n9, n3, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8, n8, n8,
|
n9, n9, n9, n9, n3, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8, n8, n8,
|
||||||
n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8, n8, n8, n8, n8,
|
n8, n8, n4, n1, n1, n1, n1, n1, n1, n1, n4, n8, n8, n8, n8, n8, n8,
|
||||||
n4, n1, n1, n1, n1, n1, n1, n1, n10, n9, n9, n9, n9, n9, n9, n11, n1,
|
n4, n1, n1, n1, n1, n1, n1, n1, n10, n9, n9, n9, n9, n9, n9, n11, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3,
|
n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n3,
|
||||||
n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n8, n4, n8, n8, n14, n11, n8,
|
n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n8, n4, n8, n8, n14, n11, n8,
|
||||||
n8, n4, n1, n1, n1, n1, n1, n1, n8, n4, n8, n14, n11, n8, n8, n8, n4,
|
n8, n4, n1, n1, n1, n1, n1, n1, n8, n4, n8, n14, n11, n8, n8, n8, n4,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n3, n14, n11, n8, n8, n8, n9, n3, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n3, n14, n11, n8, n8, n8, n9, n3, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n4, n8, n8, n8, n8, n8, n8, n4, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n10, n9, n9, n9, n9, n9, n9, n11, n1, n1, n1, n1, n1, n1, n1, n2,
|
n1, n10, n9, n9, n9, n9, n9, n9, n11, n1, n1, n1, n1, n1, n1, n1, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1,
|
n2, n1, n1, n1, n1, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n3, n4,
|
n3, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n3, n4,
|
||||||
n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n1, n1, n1, n3, n4, n4, n4,
|
n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n1, n1, n1, n3, n4, n4, n4,
|
||||||
n4, n4, n4, n3, n1, n1, n1, n1, n1, n1, n1, n15, n16, n16, n16, n16,
|
n4, n4, n4, n3, n1, n1, n1, n1, n1, n1, n1, n15, n16, n16, n16, n16,
|
||||||
n16, n16, n17,
|
n16, n16, n17,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,10 +15,10 @@ return {
|
|||||||
size = {x = 3, y = 9, z = 3},
|
size = {x = 3, y = 9, z = 3},
|
||||||
center_pos = {x = 1, y = 7, z = 1},
|
center_pos = {x = 1, y = 7, z = 1},
|
||||||
data = {
|
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, n2, n3, n4, n1, n1, n1, n1, n5, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n2, n3, n4, n1, n1, n1, n1, n5, n1, n1,
|
||||||
n5, n1, n1, n5, n1, n1, n5, n1, n1, n5, n1, n1, n5, n1, n1, n6, n1,
|
n5, n1, n1, n5, n1, n1, n5, n1, n1, n5, n1, n1, n5, n1, n1, n6, n1,
|
||||||
n7, n5, n8, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n7, n5, n8, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n9, n10, n11,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n9, n10, n11,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
@ -27,48 +27,48 @@ return {
|
|||||||
size = {x = 11, y = 9, z = 7},
|
size = {x = 11, y = 9, z = 7},
|
||||||
center_pos = {x = 7, y = 5, z = 3},
|
center_pos = {x = 7, y = 5, z = 3},
|
||||||
data = {
|
data = {
|
||||||
n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2,
|
n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1,
|
n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1,
|
||||||
n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n2, n2, n2,
|
n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n2, n2, n2, n2, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
n1, n1, n3, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n3, n4, n4, n4,
|
n1, n1, n3, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n3, n4, n4, n4,
|
||||||
n4, n4, n3, n1, n1, n1, n1, n5, n6, n6, n6, n6, n6, n7, n1, n1, n2,
|
n4, n4, n3, n1, n1, n1, n1, n5, n6, n6, n6, n6, n6, n7, n1, n1, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n8, n2,
|
n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n8, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n9, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n9, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n10, n4,
|
n2, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n10, n4,
|
||||||
n10, n10, n10, n10, n10, n4, n1, n1, n1, n10, n4, n10, n10, n10, n10,
|
n10, n10, n10, n10, n10, n4, n1, n1, n1, n10, n4, n10, n10, n10, n10,
|
||||||
n10, n4, n1, n1, n1, n1, n11, n12, n12, n12, n12, n12, n13, n1, n1,
|
n10, n4, n1, n1, n1, n1, n11, n12, n12, n12, n12, n12, n13, n1, n1,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n1, n1, n8, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
n2, n2, n2, n1, n1, n8, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n1, n1, n1, n9, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n10,
|
n2, n2, n1, n1, n1, n9, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1, n10,
|
||||||
n3, n10, n10, n10, n10, n10, n4, n1, n1, n1, n10, n3, n10, n10, n10,
|
n3, n10, n10, n10, n10, n10, n4, n1, n1, n1, n10, n3, n10, n10, n10,
|
||||||
n10, n10, n4, n1, n1, n1, n1, n11, n12, n12, n12, n12, n12, n13, n14,
|
n10, n10, n4, n1, n1, n1, n1, n11, n12, n12, n12, n12, n12, n13, n14,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n14, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n14, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
n2, n2, n2, n2, n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
||||||
n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n2, n2, n2, n2, n2,
|
n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n1, n1, n1, n2, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n2, n2, n2, n1, n1, n1, n2, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
n10, n10, n10, n10, n10, n10, n18, n4, n1, n1, n1, n10, n10, n10,
|
n10, n10, n10, n10, n10, n10, n18, n4, n1, n1, n1, n10, n10, n10,
|
||||||
n10, n10, n10, n10, n4, n1, n1, n1, n1, n11, n12, n12, n12, n12, n12,
|
n10, n10, n10, n10, n4, n1, n1, n1, n1, n11, n12, n12, n12, n12, n12,
|
||||||
n13, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2,
|
n13, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n1, n1, n9, n2, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n1, n1, n9, n2, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n2, n2, n2,
|
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n2, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n1, n1, n1, n8, n3, n3, n3, n3, n3, n3, n3, n1,
|
n2, n2, n2, n2, n2, n1, n1, n1, n8, n3, n3, n3, n3, n3, n3, n3, n1,
|
||||||
n1, n1, n10, n3, n10, n10, n10, n10, n10, n4, n1, n1, n1, n10, n3,
|
n1, n1, n10, n3, n10, n10, n10, n10, n10, n4, n1, n1, n1, n10, n3,
|
||||||
n10, n10, n10, n10, n10, n4, n1, n1, n1, n1, n11, n12, n12, n12, n12,
|
n10, n10, n10, n10, n10, n4, n1, n1, n1, n1, n11, n12, n12, n12, n12,
|
||||||
n12, n13, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2,
|
n12, n13, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n1, n1, n9, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n8, n2,
|
n2, n1, n1, n9, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n8, n2,
|
||||||
n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3,
|
n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n3, n3, n3, n3, n3, n3, n3,
|
||||||
n1, n1, n1, n10, n4, n10, n10, n10, n10, n10, n4, n1, n1, n1, n10,
|
n1, n1, n1, n10, n4, n10, n10, n10, n10, n10, n4, n1, n1, n1, n10,
|
||||||
n4, n10, n10, n10, n10, n10, n4, n1, n1, n1, n1, n11, n12, n12, n12,
|
n4, n10, n10, n10, n10, n10, n4, n1, n1, n1, n1, n11, n12, n12, n12,
|
||||||
n12, n12, n13, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
n12, n12, n13, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
||||||
n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2,
|
n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2,
|
||||||
n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
n2, n2, n2, n1, n1, n2, n2, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n3, n3, n3, n3, n3,
|
n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1, n1, n3, n3, n3, n3, n3,
|
||||||
n3, n3, n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1,
|
n3, n3, n1, n1, n1, n1, n3, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1,
|
||||||
n3, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n15, n16, n16, n16, n16,
|
n3, n4, n4, n4, n4, n4, n3, n1, n1, n1, n1, n15, n16, n16, n16, n16,
|
||||||
n16, n17,
|
n16, n17,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,6 @@ return {
|
|||||||
size = {y = 2, x = 2, z = 3},
|
size = {y = 2, x = 2, z = 3},
|
||||||
center_pos = {x = 1, y = 1, z = 1},
|
center_pos = {x = 1, y = 1, z = 1},
|
||||||
data = {
|
data = {
|
||||||
n1, n1, n2, n3, n1, n1, n4, n4, n1, n1, n5, n6,
|
n1, n1, n2, n3, n1, n1, n4, n4, n1, n1, n5, n6,
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -84,15 +84,15 @@ df_caverns.stalagmites = function(abs_cracks, vert_rand, vi, area, data, data_pa
|
|||||||
stalagmite_ids = df_mapitems.wet_stalagmite_ids
|
stalagmite_ids = df_mapitems.wet_stalagmite_ids
|
||||||
else
|
else
|
||||||
flowstone = c_dry_flowstone
|
flowstone = c_dry_flowstone
|
||||||
stalagmite_ids = df_mapitems.dry_stalagmite_ids
|
stalagmite_ids = df_mapitems.dry_stalagmite_ids
|
||||||
end
|
end
|
||||||
|
|
||||||
local height_mult = 1
|
local height_mult = 1
|
||||||
local ystride = area.ystride
|
local ystride = area.ystride
|
||||||
if reverse_sign then
|
if reverse_sign then
|
||||||
ystride = - ystride
|
ystride = - ystride
|
||||||
height_mult = -1
|
height_mult = -1
|
||||||
end
|
end
|
||||||
|
|
||||||
if vert_rand < 0.004 then
|
if vert_rand < 0.004 then
|
||||||
if reverse_sign then
|
if reverse_sign then
|
||||||
@ -132,14 +132,14 @@ df_caverns.flooded_cavern_floor = function(abs_cracks, vert_rand, vi, area, data
|
|||||||
data[vi] = c_sand_scum
|
data[vi] = c_sand_scum
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- put in only the large stalagmites that won't get in the way of the water
|
-- put in only the large stalagmites that won't get in the way of the water
|
||||||
if abs_cracks < 0.1 then
|
if abs_cracks < 0.1 then
|
||||||
if vert_rand < 0.004 then
|
if vert_rand < 0.004 then
|
||||||
subterrane.big_stalagmite(vi+ystride, area, data, 6, 15, c_wet_flowstone, c_wet_flowstone, c_wet_flowstone)
|
subterrane.big_stalagmite(vi+ystride, area, data, 6, 15, c_wet_flowstone, c_wet_flowstone, c_wet_flowstone)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
df_caverns.dry_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2)
|
df_caverns.dry_cavern_floor = function(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
@ -198,7 +198,7 @@ df_caverns.tunnel_floor = function(minp, maxp, area, vi, nvals_cracks, data, dat
|
|||||||
subterrane.stalagmite(vi+ystride, area, data, data_param2, param2, height, df_mapitems.wet_stalagmite_ids)
|
subterrane.stalagmite(vi+ystride, area, data, data_param2, param2, height, df_mapitems.wet_stalagmite_ids)
|
||||||
data[vi] = c_wet_flowstone
|
data[vi] = c_wet_flowstone
|
||||||
elseif dirt_node and abs_cracks > 0.5 and data[vi-ystride] ~= c_air then
|
elseif dirt_node and abs_cracks > 0.5 and data[vi-ystride] ~= c_air then
|
||||||
data[vi] = dirt_node
|
data[vi] = dirt_node
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
if abs_cracks < 0.025 and data[vi+ystride] == c_air and not dont_build_speleothems_on[data[vi]] then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites
|
if abs_cracks < 0.025 and data[vi+ystride] == c_air and not dont_build_speleothems_on[data[vi]] then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites
|
||||||
@ -220,7 +220,7 @@ df_caverns.tunnel_ceiling = function(minp, maxp, area, vi, nvals_cracks, data, d
|
|||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local cracks = nvals_cracks[index2d]
|
local cracks = nvals_cracks[index2d]
|
||||||
local abs_cracks = math.abs(cracks)
|
local abs_cracks = math.abs(cracks)
|
||||||
|
|
||||||
if wet then
|
if wet then
|
||||||
if abs_cracks < 0.05 and data[vi-ystride] == c_air and not dont_build_speleothems_on[data[vi]] then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites
|
if abs_cracks < 0.05 and data[vi-ystride] == c_air and not dont_build_speleothems_on[data[vi]] then -- make sure data[vi] is not already flowstone. Stalagmites from lower levels are acting as base for further stalagmites
|
||||||
local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4
|
local param2 = abs_cracks*1000000 - math.floor(abs_cracks*1000000/4)*4
|
||||||
@ -272,7 +272,7 @@ df_caverns.place_shrub = function(vi, area, data, param2_data, shrub_list)
|
|||||||
if shrub_list == nil then
|
if shrub_list == nil then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local shrub = shrub_list[math.random(#shrub_list)]
|
local shrub = shrub_list[math.random(#shrub_list)]
|
||||||
shrub(vi, area, data, param2_data)
|
shrub(vi, area, data, param2_data)
|
||||||
end
|
end
|
||||||
|
@ -199,22 +199,22 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
|
|
||||||
local minp_below = minp.y <= sea_level
|
local minp_below = minp.y <= sea_level
|
||||||
local maxp_above = maxp.y > sea_level
|
local maxp_above = maxp.y > sea_level
|
||||||
|
|
||||||
local nvals_cave = mapgen_helper.perlin2d("df_caverns:sunless_sea", minp, maxp, perlin_cave_rivers) --cave noise for structure
|
local nvals_cave = mapgen_helper.perlin2d("df_caverns:sunless_sea", minp, maxp, perlin_cave_rivers) --cave noise for structure
|
||||||
local nvals_wave = mapgen_helper.perlin2d("df_caverns:sunless_sea_wave", minp, maxp, perlin_wave_rivers) --cave noise for structure
|
local nvals_wave = mapgen_helper.perlin2d("df_caverns:sunless_sea_wave", minp, maxp, perlin_wave_rivers) --cave noise for structure
|
||||||
|
|
||||||
local skip_next = false -- mapgen is proceeding upward on the y axis,
|
local skip_next = false -- mapgen is proceeding upward on the y axis,
|
||||||
--if this is true it skips a step to allow for things to be placed above the floor
|
--if this is true it skips a step to allow for things to be placed above the floor
|
||||||
|
|
||||||
-- creates "river" caverns
|
-- creates "river" caverns
|
||||||
for vi, x, y, z in area:iterp_yxz(minp, maxp) do
|
for vi, x, y, z in area:iterp_yxz(minp, maxp) do
|
||||||
if not skip_next then
|
if not skip_next then
|
||||||
if y < y_max_river and y > y_min_river then
|
if y < y_max_river and y > y_min_river then
|
||||||
local index2d = mapgen_helper.index2d(minp, maxp, x, z)
|
local index2d = mapgen_helper.index2d(minp, maxp, x, z)
|
||||||
local abs_cave = math.abs(nvals_cave[index2d])
|
local abs_cave = math.abs(nvals_cave[index2d])
|
||||||
local wave = nvals_wave[index2d] * wave_mult
|
local wave = nvals_wave[index2d] * wave_mult
|
||||||
local cracks = nvals_cracks[index2d]
|
local cracks = nvals_cracks[index2d]
|
||||||
|
|
||||||
local ripple = cracks * ((y - y_min_river) / (y_max_river - y_min_river)) * ripple_mult
|
local ripple = cracks * ((y - y_min_river) / (y_max_river - y_min_river)) * ripple_mult
|
||||||
|
|
||||||
-- above floor and below ceiling
|
-- above floor and below ceiling
|
||||||
@ -225,7 +225,7 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
if y <= floor_height and y > floor_height - 3 and y < sea_level + 5 and data[vi] == c_lava then
|
if y <= floor_height and y > floor_height - 3 and y < sea_level + 5 and data[vi] == c_lava then
|
||||||
data[vi] = c_obsidian
|
data[vi] = c_obsidian
|
||||||
end
|
end
|
||||||
|
|
||||||
if y == floor_height and y < sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
if y == floor_height and y < sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
||||||
if cracks > 0.2 then
|
if cracks > 0.2 then
|
||||||
data[vi] = c_sand
|
data[vi] = c_sand
|
||||||
@ -243,7 +243,7 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
df_caverns.glow_worm_cavern_ceiling(math.abs(cracks),
|
df_caverns.glow_worm_cavern_ceiling(math.abs(cracks),
|
||||||
mapgen_helper.xz_consistent_randomi(area, vi), vi, area, data, data_param2)
|
mapgen_helper.xz_consistent_randomi(area, vi), vi, area, data, data_param2)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Deal with lava
|
-- Deal with lava
|
||||||
if y >= ceiling_height and y < ceiling_height + 5 and y > sea_level - 5 and data[vi] == c_lava then
|
if y >= ceiling_height and y < ceiling_height + 5 and y > sea_level - 5 and data[vi] == c_lava then
|
||||||
data[vi] = c_obsidian
|
data[vi] = c_obsidian
|
||||||
@ -253,7 +253,7 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
skip_next = false
|
skip_next = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if minp.y <= sea_level then
|
if minp.y <= sea_level then
|
||||||
for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do
|
for vi, x, y, z in area:iterp_yxz(area.MinEdge, area.MaxEdge) do
|
||||||
-- convert all air below sea level into water
|
-- convert all air below sea level into water
|
||||||
@ -263,10 +263,10 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
---------------------------------------------------------
|
---------------------------------------------------------
|
||||||
-- Cavern floors
|
-- Cavern floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
for _, vi in ipairs(node_arrays.cavern_floor_nodes) do
|
||||||
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
local index2d = mapgen_helper.index2di(minp, maxp, area, vi)
|
||||||
local heat = heatmap[index2d]
|
local heat = heatmap[index2d]
|
||||||
@ -274,7 +274,7 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
local abs_cracks = math.abs(cracks)
|
local abs_cracks = math.abs(cracks)
|
||||||
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
||||||
local y = area:get_y(vi)
|
local y = area:get_y(vi)
|
||||||
|
|
||||||
-- The vertically squished aspect of these caverns produces too many very thin shelves, this blunts them
|
-- The vertically squished aspect of these caverns produces too many very thin shelves, this blunts them
|
||||||
if mapgen_helper.buildable_to(data[vi-area.ystride]) then
|
if mapgen_helper.buildable_to(data[vi-area.ystride]) then
|
||||||
if y <= sea_level then
|
if y <= sea_level then
|
||||||
@ -282,8 +282,8 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
else
|
else
|
||||||
data[vi] = c_air
|
data[vi] = c_air
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- extra test is needed because the rivers can remove nodes that Subterrane marked as floor.
|
-- extra test is needed because the rivers can remove nodes that Subterrane marked as floor.
|
||||||
if not mapgen_helper.buildable_to(data[vi]) then
|
if not mapgen_helper.buildable_to(data[vi]) then
|
||||||
if y >= sea_level then
|
if y >= sea_level then
|
||||||
@ -317,7 +317,7 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--------------------------------------
|
--------------------------------------
|
||||||
-- Cavern ceilings
|
-- Cavern ceilings
|
||||||
|
|
||||||
@ -328,7 +328,7 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
local abs_cracks = math.abs(cracks)
|
local abs_cracks = math.abs(cracks)
|
||||||
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
local vert_rand = mapgen_helper.xz_consistent_randomi(area, vi)
|
||||||
local y = area:get_y(vi)
|
local y = area:get_y(vi)
|
||||||
|
|
||||||
if y > sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
if y > sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
||||||
if heat > hot_zone_boundary then
|
if heat > hot_zone_boundary then
|
||||||
hot_zone_ceiling(abs_cracks, vert_rand, vi, area, data, data_param2)
|
hot_zone_ceiling(abs_cracks, vert_rand, vi, area, data, data_param2)
|
||||||
@ -340,19 +340,19 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Tunnel floors
|
-- Tunnel floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.tunnel_floor_nodes) do
|
for _, vi in ipairs(node_arrays.tunnel_floor_nodes) do
|
||||||
if area:get_y(vi) >= sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
if area:get_y(vi) >= sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
||||||
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Tunnel ceiling
|
-- Tunnel ceiling
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
for _, vi in ipairs(node_arrays.tunnel_ceiling_nodes) do
|
||||||
if area:get_y(vi) > sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
if area:get_y(vi) > sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
||||||
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_ceiling(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
@ -366,10 +366,10 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
if cracks > 0.8 and data[vi-ystride*2] == c_water then
|
if cracks > 0.8 and data[vi-ystride*2] == c_water then
|
||||||
data[vi-ystride*2] = c_air
|
data[vi-ystride*2] = c_air
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
-- Warren ceiling
|
-- Warren ceiling
|
||||||
|
|
||||||
@ -386,13 +386,13 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
if cracks > 0.8 and data[vi-ystride*2] == c_water then
|
if cracks > 0.8 and data[vi-ystride*2] == c_water then
|
||||||
data[vi-ystride*2] = c_air
|
data[vi-ystride*2] = c_air
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
----------------------------------------------
|
----------------------------------------------
|
||||||
-- Warren floors
|
-- Warren floors
|
||||||
|
|
||||||
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
for _, vi in ipairs(node_arrays.warren_floor_nodes) do
|
||||||
if area:get_y(vi) >= sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
if area:get_y(vi) >= sea_level and not mapgen_helper.buildable_to(data[vi]) then
|
||||||
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
df_caverns.tunnel_floor(minp, maxp, area, vi, nvals_cracks, data, data_param2, true)
|
||||||
@ -414,7 +414,7 @@ local decorate_sunless_sea = function(minp, maxp, seed, vm, node_arrays, area, d
|
|||||||
data_param2[vi] = math.random(1,4)-1
|
data_param2[vi] = math.random(1,4)-1
|
||||||
minetest.get_node_timer(area:position(vi)):start(math.random(10, 60))
|
minetest.get_node_timer(area:position(vi)):start(math.random(10, 60))
|
||||||
end
|
end
|
||||||
|
|
||||||
if chasms_path then
|
if chasms_path then
|
||||||
local pos = area:position(vi)
|
local pos = area:position(vi)
|
||||||
if chasms.is_in_chasm(pos) then
|
if chasms.is_in_chasm(pos) then
|
||||||
|
@ -10,8 +10,8 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
--if out of range of cave definition limits, abort
|
--if out of range of cave definition limits, abort
|
||||||
if minp.y > y_max or maxp.y < y_min then
|
if minp.y > y_max or maxp.y < y_min then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local t_start = os.clock()
|
local t_start = os.clock()
|
||||||
|
|
||||||
local vm, data, data_param2, area = mapgen_helper.mapgen_vm_data_param2()
|
local vm, data, data_param2, area = mapgen_helper.mapgen_vm_data_param2()
|
||||||
@ -21,18 +21,18 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
local emaxp = {x=maxp.x, y=area.MaxEdge.y, z=maxp.z}
|
local emaxp = {x=maxp.x, y=area.MaxEdge.y, z=maxp.z}
|
||||||
local minp_y = minp.y
|
local minp_y = minp.y
|
||||||
local maxp_y = maxp.y
|
local maxp_y = maxp.y
|
||||||
|
|
||||||
local humiditymap = minetest.get_mapgen_object("humiditymap")
|
local humiditymap = minetest.get_mapgen_object("humiditymap")
|
||||||
local nvals_cracks = mapgen_helper.perlin2d("df_cavern:cracks", minp, maxp, df_caverns.np_cracks)
|
local nvals_cracks = mapgen_helper.perlin2d("df_cavern:cracks", minp, maxp, df_caverns.np_cracks)
|
||||||
|
|
||||||
local previous_y = eminp.y-1
|
local previous_y = eminp.y-1
|
||||||
|
|
||||||
local previous_potential_floor_vi
|
local previous_potential_floor_vi
|
||||||
local previous_potential_floor_y
|
local previous_potential_floor_y
|
||||||
local previous_node
|
local previous_node
|
||||||
|
|
||||||
for vi, x, y, z in area:iterp_yxz(eminp, emaxp) do
|
for vi, x, y, z in area:iterp_yxz(eminp, emaxp) do
|
||||||
|
|
||||||
if y < previous_y then
|
if y < previous_y then
|
||||||
-- we've started a new column, initialize everything
|
-- we've started a new column, initialize everything
|
||||||
previous_potential_floor_vi = nil
|
previous_potential_floor_vi = nil
|
||||||
@ -40,7 +40,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
previous_node = nil
|
previous_node = nil
|
||||||
end
|
end
|
||||||
previous_y = y
|
previous_y = y
|
||||||
|
|
||||||
local current_node = data[vi]
|
local current_node = data[vi]
|
||||||
if previous_node and y < y_max then
|
if previous_node and y < y_max then
|
||||||
if current_node == c_air and previous_node == c_stone then
|
if current_node == c_air and previous_node == c_stone then
|
||||||
@ -66,9 +66,9 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
previous_node = current_node
|
previous_node = current_node
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
if data_changed then
|
if data_changed then
|
||||||
--send data back to voxelmanip
|
--send data back to voxelmanip
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
@ -76,12 +76,12 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
--calc lighting
|
--calc lighting
|
||||||
vm:set_lighting({day = 0, night = 0})
|
vm:set_lighting({day = 0, night = 0})
|
||||||
vm:calc_lighting()
|
vm:calc_lighting()
|
||||||
|
|
||||||
vm:update_liquids()
|
vm:update_liquids()
|
||||||
--write it to world
|
--write it to world
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
end
|
end
|
||||||
|
|
||||||
local time_taken = os.clock() - t_start -- how long this chunk took, in seconds
|
local time_taken = os.clock() - t_start -- how long this chunk took, in seconds
|
||||||
mapgen_helper.record_time("df_caverns surface tunnels", time_taken)
|
mapgen_helper.record_time("df_caverns surface tunnels", time_taken)
|
||||||
end)
|
end)
|
||||||
|
@ -38,7 +38,7 @@ if named_waypoints_path then
|
|||||||
local setting_item_required = minetest.settings:get("dfcaverns_underworld_hud_item_required")
|
local setting_item_required = minetest.settings:get("dfcaverns_underworld_hud_item_required")
|
||||||
if setting_item_required == nil or setting_item_required == "" then
|
if setting_item_required == nil or setting_item_required == "" then
|
||||||
setting_item_required = "map:mapping_kit"
|
setting_item_required = "map:mapping_kit"
|
||||||
end
|
end
|
||||||
item_required = setting_item_required
|
item_required = setting_item_required
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -47,8 +47,8 @@ if named_waypoints_path then
|
|||||||
default_color = 0xFF88FF,
|
default_color = 0xFF88FF,
|
||||||
discovery_volume_radius = tonumber(minetest.settings:get("dfcaverns_pit_discovery_range")) or 60,
|
discovery_volume_radius = tonumber(minetest.settings:get("dfcaverns_pit_discovery_range")) or 60,
|
||||||
visibility_requires_item = item_required,
|
visibility_requires_item = item_required,
|
||||||
}
|
}
|
||||||
|
|
||||||
if minetest.settings:get_bool("dfcaverns_show_pits_in_hud", true) then
|
if minetest.settings:get_bool("dfcaverns_show_pits_in_hud", true) then
|
||||||
pit_waypoint_def.visibility_volume_radius = tonumber(minetest.settings:get("dfcaverns_pit_visibility_range")) or 500
|
pit_waypoint_def.visibility_volume_radius = tonumber(minetest.settings:get("dfcaverns_pit_visibility_range")) or 500
|
||||||
pit_waypoint_def.on_discovery = named_waypoints.default_discovery_popup
|
pit_waypoint_def.on_discovery = named_waypoints.default_discovery_popup
|
||||||
@ -70,14 +70,14 @@ if named_waypoints_path then
|
|||||||
|
|
||||||
if name_generator_path then
|
if name_generator_path then
|
||||||
name_generator.parse_lines(io.lines(modpath.."/underworld_names.cfg"))
|
name_generator.parse_lines(io.lines(modpath.."/underworld_names.cfg"))
|
||||||
|
|
||||||
name_pit = function()
|
name_pit = function()
|
||||||
return name_generator.generate("glowing_pits")
|
return name_generator.generate("glowing_pits")
|
||||||
end
|
end
|
||||||
name_ruin = function()
|
name_ruin = function()
|
||||||
return name_generator.generate("underworld_ruins")
|
return name_generator.generate("underworld_ruins")
|
||||||
end
|
end
|
||||||
|
|
||||||
local underworld_ruin_def = {
|
local underworld_ruin_def = {
|
||||||
default_name = S("Ancient ruin"),
|
default_name = S("Ancient ruin"),
|
||||||
discovery_volume_radius = tonumber(minetest.settings:get("dfcaverns_ruin_discovery_range")) or 40,
|
discovery_volume_radius = tonumber(minetest.settings:get("dfcaverns_ruin_discovery_range")) or 40,
|
||||||
@ -171,10 +171,10 @@ local get_buildings = function(emin, emax, nvals_zone)
|
|||||||
local buildings = {}
|
local buildings = {}
|
||||||
for x = emin.x, emax.x do
|
for x = emin.x, emax.x do
|
||||||
for z = emin.z, emax.z do
|
for z = emin.z, emax.z do
|
||||||
|
|
||||||
local index2d = mapgen_helper.index2d(emin, emax, x, z)
|
local index2d = mapgen_helper.index2d(emin, emax, x, z)
|
||||||
local zone = math.abs(nvals_zone[index2d])
|
local zone = math.abs(nvals_zone[index2d])
|
||||||
|
|
||||||
if zone > oubliette_threshold and zone < town_threshold then
|
if zone > oubliette_threshold and zone < town_threshold then
|
||||||
-- oubliette zone
|
-- oubliette zone
|
||||||
--zone = (zone - oubliette_threshold)/(town_threshold-oubliette_threshold) -- turn this into a 0-1 spread
|
--zone = (zone - oubliette_threshold)/(town_threshold-oubliette_threshold) -- turn this into a 0-1 spread
|
||||||
@ -195,7 +195,7 @@ local get_buildings = function(emin, emax, nvals_zone)
|
|||||||
building_type = building_type,
|
building_type = building_type,
|
||||||
bounding_box = {minpos={x=x-2, z=z-2}, maxpos={x=x+2, z=z+2}},
|
bounding_box = {minpos={x=x-2, z=z-2}, maxpos={x=x+2, z=z+2}},
|
||||||
priority = math.floor(building_val * 10000000) % 1000, -- indended to allow for deterministic removal of overlapping buildings
|
priority = math.floor(building_val * 10000000) % 1000, -- indended to allow for deterministic removal of overlapping buildings
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
elseif zone > town_threshold then
|
elseif zone > town_threshold then
|
||||||
@ -203,12 +203,12 @@ local get_buildings = function(emin, emax, nvals_zone)
|
|||||||
local building_val = local_random(x, z)
|
local building_val = local_random(x, z)
|
||||||
if building_val > 0.9925 then
|
if building_val > 0.9925 then
|
||||||
building_val = (building_val - 0.9925)/0.0075
|
building_val = (building_val - 0.9925)/0.0075
|
||||||
|
|
||||||
local building_type
|
local building_type
|
||||||
local bounding_box
|
local bounding_box
|
||||||
local priority = math.floor(building_val * 10000000) % 1000
|
local priority = math.floor(building_val * 10000000) % 1000
|
||||||
local rotation = (priority % 4) * 90
|
local rotation = (priority % 4) * 90
|
||||||
|
|
||||||
if building_val < 0.75 then
|
if building_val < 0.75 then
|
||||||
building_type = "small building"
|
building_type = "small building"
|
||||||
local boundmin, boundmax = mapgen_helper.get_schematic_bounding_box({x=x, y=0, z=z}, small_building_schematic, rotation)
|
local boundmin, boundmax = mapgen_helper.get_schematic_bounding_box({x=x, y=0, z=z}, small_building_schematic, rotation)
|
||||||
@ -216,13 +216,13 @@ local get_buildings = function(emin, emax, nvals_zone)
|
|||||||
elseif building_val < 0.85 then
|
elseif building_val < 0.85 then
|
||||||
building_type = "medium building"
|
building_type = "medium building"
|
||||||
local boundmin, boundmax = mapgen_helper.get_schematic_bounding_box({x=x, y=0, z=z}, medium_building_schematic, rotation)
|
local boundmin, boundmax = mapgen_helper.get_schematic_bounding_box({x=x, y=0, z=z}, medium_building_schematic, rotation)
|
||||||
bounding_box = {minpos=boundmin, maxpos=boundmax}
|
bounding_box = {minpos=boundmin, maxpos=boundmax}
|
||||||
else
|
else
|
||||||
building_type = "small slab"
|
building_type = "small slab"
|
||||||
local boundmin, boundmax = mapgen_helper.get_schematic_bounding_box({x=x, y=0, z=z}, small_slab_schematic, rotation)
|
local boundmin, boundmax = mapgen_helper.get_schematic_bounding_box({x=x, y=0, z=z}, small_slab_schematic, rotation)
|
||||||
bounding_box = {minpos=boundmin, maxpos=boundmax}
|
bounding_box = {minpos=boundmin, maxpos=boundmax}
|
||||||
end
|
end
|
||||||
|
|
||||||
table.insert(buildings,
|
table.insert(buildings,
|
||||||
{
|
{
|
||||||
pos = {x=x, y=0, z=z}, -- y to be determined later
|
pos = {x=x, y=0, z=z}, -- y to be determined later
|
||||||
@ -236,7 +236,7 @@ local get_buildings = function(emin, emax, nvals_zone)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- eliminate overlapping buildings
|
-- eliminate overlapping buildings
|
||||||
local building_count = table.getn(buildings)
|
local building_count = table.getn(buildings)
|
||||||
local overlap_count = 0
|
local overlap_count = 0
|
||||||
@ -249,7 +249,7 @@ local get_buildings = function(emin, emax, nvals_zone)
|
|||||||
curr_building.bounding_box.maxpos,
|
curr_building.bounding_box.maxpos,
|
||||||
test_building.bounding_box.minpos,
|
test_building.bounding_box.minpos,
|
||||||
test_building.bounding_box.maxpos) then
|
test_building.bounding_box.maxpos) then
|
||||||
|
|
||||||
if curr_building.priority < test_building.priority then -- this makes elimination of overlapping buildings deterministic
|
if curr_building.priority < test_building.priority then -- this makes elimination of overlapping buildings deterministic
|
||||||
buildings[i] = nil
|
buildings[i] = nil
|
||||||
j=building_count+1
|
j=building_count+1
|
||||||
@ -260,19 +260,19 @@ local get_buildings = function(emin, emax, nvals_zone)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if building_count > 50 and overlap_count > building_count * 2/3 then
|
if building_count > 50 and overlap_count > building_count * 2/3 then
|
||||||
minetest.log("warning", "[df_caverns] underworld mapgen generated " ..
|
minetest.log("warning", "[df_caverns] underworld mapgen generated " ..
|
||||||
tostring(building_count) .. " buildings and " .. tostring(overlap_count) ..
|
tostring(building_count) .. " buildings and " .. tostring(overlap_count) ..
|
||||||
" were eliminated as overlapping, if this happens a lot consider reducing building" ..
|
" were eliminated as overlapping, if this happens a lot consider reducing building" ..
|
||||||
" generation probability to improve efficiency.")
|
" generation probability to improve efficiency.")
|
||||||
end
|
end
|
||||||
|
|
||||||
local compacted_buildings = {}
|
local compacted_buildings = {}
|
||||||
for _, building in pairs(buildings) do
|
for _, building in pairs(buildings) do
|
||||||
compacted_buildings[minetest.hash_node_position(building.pos)] = building
|
compacted_buildings[minetest.hash_node_position(building.pos)] = building
|
||||||
end
|
end
|
||||||
|
|
||||||
return compacted_buildings
|
return compacted_buildings
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -314,7 +314,7 @@ local get_pit = function(pos)
|
|||||||
local variance_multiplier = math.random()
|
local variance_multiplier = math.random()
|
||||||
local radius = variance_multiplier * (radius_pit_max - 15) + 15
|
local radius = variance_multiplier * (radius_pit_max - 15) + 15
|
||||||
local variance = radius_pit_variance/2 + radius_pit_variance*variance_multiplier/2
|
local variance = radius_pit_variance/2 + radius_pit_variance*variance_multiplier/2
|
||||||
local depth = math.random(plasma_depth_min, plasma_depth_max)
|
local depth = math.random(plasma_depth_min, plasma_depth_max)
|
||||||
math.randomseed(next_seed)
|
math.randomseed(next_seed)
|
||||||
return {location = location, radius = radius, variance = variance, depth = depth}
|
return {location = location, radius = radius, variance = variance, depth = depth}
|
||||||
end
|
end
|
||||||
@ -364,27 +364,27 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
local vm, data, data_param2, area = mapgen_helper.mapgen_vm_data_param2()
|
local vm, data, data_param2, area = mapgen_helper.mapgen_vm_data_param2()
|
||||||
local emin = area.MinEdge
|
local emin = area.MinEdge
|
||||||
local emax = area.MaxEdge
|
local emax = area.MaxEdge
|
||||||
|
|
||||||
local nvals_cave = mapgen_helper.perlin2d("df_caverns:underworld_cave", emin, emax, perlin_cave) --cave noise for structure
|
local nvals_cave = mapgen_helper.perlin2d("df_caverns:underworld_cave", emin, emax, perlin_cave) --cave noise for structure
|
||||||
local nvals_wave = mapgen_helper.perlin2d("df_caverns:underworld_wave", emin, emax, perlin_wave) --cave noise for structure
|
local nvals_wave = mapgen_helper.perlin2d("df_caverns:underworld_wave", emin, emax, perlin_wave) --cave noise for structure
|
||||||
local nvals_zone = mapgen_helper.perlin2d("df_caverns:underworld_zone", emin, emax, perlin_zone) --building zones
|
local nvals_zone = mapgen_helper.perlin2d("df_caverns:underworld_zone", emin, emax, perlin_zone) --building zones
|
||||||
|
|
||||||
local pit = get_pit(minp)
|
local pit = get_pit(minp)
|
||||||
--minetest.chat_send_all(minetest.pos_to_string(pit.location))
|
--minetest.chat_send_all(minetest.pos_to_string(pit.location))
|
||||||
|
|
||||||
local buildings = get_buildings(emin, emax, nvals_zone)
|
local buildings = get_buildings(emin, emax, nvals_zone)
|
||||||
|
|
||||||
local pit_uninitialized = true
|
local pit_uninitialized = true
|
||||||
local nvals_pit, area_pit
|
local nvals_pit, area_pit
|
||||||
|
|
||||||
for vi, x, y, z in area:iterp_yxz(minp, maxp) do
|
for vi, x, y, z in area:iterp_yxz(minp, maxp) do
|
||||||
if y > y_min then
|
if y > y_min then
|
||||||
local index2d = mapgen_helper.index2d(emin, emax, x, z)
|
local index2d = mapgen_helper.index2d(emin, emax, x, z)
|
||||||
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
||||||
local wave = nvals_wave[index2d] * wave_mult
|
local wave = nvals_wave[index2d] * wave_mult
|
||||||
|
|
||||||
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)
|
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)
|
||||||
|
|
||||||
if named_waypoints_path and floor_height == y and pit and pit.location.x == x and pit.location.z == z then
|
if named_waypoints_path and floor_height == y and pit and pit.location.x == x and pit.location.z == z then
|
||||||
named_waypoints.add_waypoint("glowing_pits", {x=x, y=y, z=z}, {name=name_pit()})
|
named_waypoints.add_waypoint("glowing_pits", {x=x, y=y, z=z}, {name=name_pit()})
|
||||||
end
|
end
|
||||||
@ -393,7 +393,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
||||||
if (y == underside_height or y == underside_height - 1) and (x % 8 == 0 or z % 8 == 0) then
|
if (y == underside_height or y == underside_height - 1) and (x % 8 == 0 or z % 8 == 0) then
|
||||||
data[vi] = c_air
|
data[vi] = c_air
|
||||||
elseif y < floor_height and y > underside_height then
|
elseif y < floor_height and y > underside_height then
|
||||||
data[vi] = c_slade
|
data[vi] = c_slade
|
||||||
if pit and
|
if pit and
|
||||||
pit.location.x - radius_pit_max - radius_pit_variance < maxp.x and
|
pit.location.x - radius_pit_max - radius_pit_variance < maxp.x and
|
||||||
@ -439,7 +439,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
local wave = nvals_wave[index2d] * wave_mult
|
local wave = nvals_wave[index2d] * wave_mult
|
||||||
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)
|
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)
|
||||||
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
||||||
|
|
||||||
if ceiling_height > floor_height + 5 and ceiling_height < maxp.y and ceiling_height > minp.y then
|
if ceiling_height > floor_height + 5 and ceiling_height < maxp.y and ceiling_height > minp.y then
|
||||||
local vi = area:index(x, ceiling_height, z)
|
local vi = area:index(x, ceiling_height, z)
|
||||||
if (
|
if (
|
||||||
@ -457,7 +457,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
-- buildings
|
-- buildings
|
||||||
for x = emin.x + 5, emax.x - 5 do
|
for x = emin.x + 5, emax.x - 5 do
|
||||||
for z = emin.z + 5, emax.z - 5 do
|
for z = emin.z + 5, emax.z - 5 do
|
||||||
|
|
||||||
local skip = false
|
local skip = false
|
||||||
if pit and
|
if pit and
|
||||||
pit.location.x - radius_pit_max - radius_pit_variance < x and
|
pit.location.x - radius_pit_max - radius_pit_variance < x and
|
||||||
@ -476,7 +476,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
local wave = nvals_wave[index2d] * wave_mult
|
local wave = nvals_wave[index2d] * wave_mult
|
||||||
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)
|
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)
|
||||||
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
local ceiling_height = math.floor(abs_cave * ceiling_mult + median + ceiling_displace + wave)
|
||||||
|
|
||||||
if ceiling_height > floor_height and floor_height <= maxp.y and floor_height >= minp.y then
|
if ceiling_height > floor_height and floor_height <= maxp.y and floor_height >= minp.y then
|
||||||
local building = buildings[minetest.hash_node_position({x=x,y=0,z=z})]
|
local building = buildings[minetest.hash_node_position({x=x,y=0,z=z})]
|
||||||
if building ~= nil then
|
if building ~= nil then
|
||||||
@ -506,7 +506,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
local def = minetest.registered_nodes["df_underworld_items:puzzle_chest_closed"]
|
local def = minetest.registered_nodes["df_underworld_items:puzzle_chest_closed"]
|
||||||
def.can_dig(puzzle_chest) -- initializes the inventory
|
def.can_dig(puzzle_chest) -- initializes the inventory
|
||||||
df_caverns.populate_puzzle_chest(puzzle_chest)
|
df_caverns.populate_puzzle_chest(puzzle_chest)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
elseif building.building_type == "medium building" then
|
elseif building.building_type == "medium building" then
|
||||||
mapgen_helper.place_schematic_on_data(data, data_param2, area, building.pos, medium_building_schematic, building.rotation)
|
mapgen_helper.place_schematic_on_data(data, data_param2, area, building.pos, medium_building_schematic, building.rotation)
|
||||||
@ -522,18 +522,18 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
minetest.log("error", "unrecognized underworld building type: " .. tostring(building.building_type))
|
minetest.log("error", "unrecognized underworld building type: " .. tostring(building.building_type))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- puzzle seal
|
-- puzzle seal
|
||||||
local puzzle_seal = nil
|
local puzzle_seal = nil
|
||||||
if pit_uninitialized and math.random() < 0.05 then
|
if pit_uninitialized and math.random() < 0.05 then
|
||||||
local index2d = mapgen_helper.index2d(emin, emax, minp.x + 3, minp.z + 3)
|
local index2d = mapgen_helper.index2d(emin, emax, minp.x + 3, minp.z + 3)
|
||||||
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
local abs_cave = math.abs(nvals_cave[index2d]) -- range is from 0 to approximately 2, with 0 being connected and 2s being islands
|
||||||
local wave = nvals_wave[index2d] * wave_mult
|
local wave = nvals_wave[index2d] * wave_mult
|
||||||
|
|
||||||
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)
|
local floor_height = math.floor(abs_cave * floor_mult + median + floor_displace + wave)
|
||||||
local underside_height = math.floor(y_min + math.abs(wave) / 5)
|
local underside_height = math.floor(y_min + math.abs(wave) / 5)
|
||||||
|
|
||||||
@ -556,7 +556,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
vm:update_liquids()
|
vm:update_liquids()
|
||||||
--write it to world
|
--write it to world
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
|
|
||||||
if puzzle_seal ~= nil then
|
if puzzle_seal ~= nil then
|
||||||
if named_waypoints_path then
|
if named_waypoints_path then
|
||||||
named_waypoints.add_waypoint("puzzle_seals", puzzle_seal)
|
named_waypoints.add_waypoint("puzzle_seals", puzzle_seal)
|
||||||
@ -567,7 +567,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
local node_def = minetest.registered_nodes[node_name]
|
local node_def = minetest.registered_nodes[node_name]
|
||||||
node_def.on_construct(puzzle_seal)
|
node_def.on_construct(puzzle_seal)
|
||||||
end
|
end
|
||||||
|
|
||||||
if bones_loot_path then
|
if bones_loot_path then
|
||||||
for i = 1, 30 do
|
for i = 1, 30 do
|
||||||
local x = math.random(minp.x, maxp.x)
|
local x = math.random(minp.x, maxp.x)
|
||||||
@ -601,7 +601,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if hunters_enabled then
|
if hunters_enabled then
|
||||||
local x = math.random(minp.x, maxp.x)
|
local x = math.random(minp.x, maxp.x)
|
||||||
local z = math.random(minp.z, maxp.z)
|
local z = math.random(minp.z, maxp.z)
|
||||||
@ -620,9 +620,9 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
local time_taken = os.clock() - t_start -- how long this chunk took, in seconds
|
local time_taken = os.clock() - t_start -- how long this chunk took, in seconds
|
||||||
mapgen_helper.record_time("df_caverns underworld", time_taken)
|
mapgen_helper.record_time("df_caverns underworld", time_taken)
|
||||||
end)
|
end)
|
||||||
|
@ -19,10 +19,10 @@ local function setting(stype, name, default, description)
|
|||||||
value = default
|
value = default
|
||||||
end
|
end
|
||||||
config[name] = value
|
config[name] = value
|
||||||
|
|
||||||
if print_settingtypes then
|
if print_settingtypes then
|
||||||
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--Caverns
|
--Caverns
|
||||||
|
@ -55,7 +55,7 @@ local node_name_to_stair_properties = function(name, override_def)
|
|||||||
|
|
||||||
local node_def = minetest.registered_nodes[mod..":"..name]
|
local node_def = minetest.registered_nodes[mod..":"..name]
|
||||||
override_def = override_def or {}
|
override_def = override_def or {}
|
||||||
|
|
||||||
local node_copy = deep_copy(node_def)
|
local node_copy = deep_copy(node_def)
|
||||||
for index, value in pairs(override_def) do
|
for index, value in pairs(override_def) do
|
||||||
node_copy[index] = value
|
node_copy[index] = value
|
||||||
@ -98,11 +98,11 @@ df_dependencies.register_all_fences = function (name, override_def)
|
|||||||
local mod, node_def = node_name_to_stair_properties(name, override_def)
|
local mod, node_def = node_name_to_stair_properties(name, override_def)
|
||||||
|
|
||||||
override_def = override_def or {}
|
override_def = override_def or {}
|
||||||
|
|
||||||
local material = override_def.material or mod..":"..name
|
local material = override_def.material or mod..":"..name
|
||||||
local burntime = override_def.burntime
|
local burntime = override_def.burntime
|
||||||
local texture = override_def.texture or node_def.tiles[1]
|
local texture = override_def.texture or node_def.tiles[1]
|
||||||
|
|
||||||
if minetest.get_modpath("default") then
|
if minetest.get_modpath("default") then
|
||||||
if default.register_fence then
|
if default.register_fence then
|
||||||
default.register_fence(material .. "_fence", {
|
default.register_fence(material .. "_fence", {
|
||||||
@ -120,7 +120,7 @@ df_dependencies.register_all_fences = function (name, override_def)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if default.register_fence_rail then
|
if default.register_fence_rail then
|
||||||
default.register_fence_rail(material .. "_fence_rail", {
|
default.register_fence_rail(material .. "_fence_rail", {
|
||||||
description = S("@1 Fence Rail", node_def.description),
|
description = S("@1 Fence Rail", node_def.description),
|
||||||
@ -148,7 +148,7 @@ df_dependencies.register_all_fences = function (name, override_def)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.get_modpath("doors") and doors.register_fencegate then
|
if minetest.get_modpath("doors") and doors.register_fencegate then
|
||||||
doors.register_fencegate(material .. "_fence_gate", {
|
doors.register_fencegate(material .. "_fence_gate", {
|
||||||
description = S("@1 Fence Gate", node_def.description),
|
description = S("@1 Fence Gate", node_def.description),
|
||||||
@ -157,7 +157,7 @@ df_dependencies.register_all_fences = function (name, override_def)
|
|||||||
groups = deep_copy(node_def.groups or {}), -- the default register_fence_rail function modifies the groups table passed in, so send a copy instead to be on the safe side.
|
groups = deep_copy(node_def.groups or {}), -- the default register_fence_rail function modifies the groups table passed in, so send a copy instead to be on the safe side.
|
||||||
sounds = node_def.sounds
|
sounds = node_def.sounds
|
||||||
})
|
})
|
||||||
|
|
||||||
if burntime then
|
if burntime then
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type = "fuel",
|
type = "fuel",
|
||||||
@ -166,11 +166,11 @@ df_dependencies.register_all_fences = function (name, override_def)
|
|||||||
})
|
})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.get_modpath("mcl_fences") and mcl_fences.register_fence_and_fence_gate then
|
if minetest.get_modpath("mcl_fences") and mcl_fences.register_fence_and_fence_gate then
|
||||||
local groups = deep_copy(node_def.groups or {})
|
local groups = deep_copy(node_def.groups or {})
|
||||||
groups.fence_wood = 1
|
groups.fence_wood = 1
|
||||||
mcl_fences.register_fence_and_fence_gate(name .. "_fence",
|
mcl_fences.register_fence_and_fence_gate(name .. "_fence",
|
||||||
S("@1 Fence", node_def.description),
|
S("@1 Fence", node_def.description),
|
||||||
S("@1 Fence Gate", node_def.description),
|
S("@1 Fence Gate", node_def.description),
|
||||||
texture,
|
texture,
|
||||||
@ -205,7 +205,7 @@ df_dependencies.get_itemslot_bg = function(X,Y,W,H) return "" end
|
|||||||
df_dependencies.get_itemslot_bg_padded = function(X,Y,W,H) return "" end
|
df_dependencies.get_itemslot_bg_padded = function(X,Y,W,H) return "" end
|
||||||
if minetest.get_modpath("mcl_formspec") then
|
if minetest.get_modpath("mcl_formspec") then
|
||||||
df_dependencies.get_itemslot_bg = mcl_formspec.get_itemslot_bg
|
df_dependencies.get_itemslot_bg = mcl_formspec.get_itemslot_bg
|
||||||
|
|
||||||
df_dependencies.get_itemslot_bg_padded = function(x,y,w,h, padding)
|
df_dependencies.get_itemslot_bg_padded = function(x,y,w,h, padding)
|
||||||
local out = ""
|
local out = ""
|
||||||
for i = 0, w - 1, 1 do
|
for i = 0, w - 1, 1 do
|
||||||
|
@ -48,7 +48,7 @@ local extend_ores = function()
|
|||||||
|
|
||||||
local wherein_stonelike = {"mcl_core:stone"}
|
local wherein_stonelike = {"mcl_core:stone"}
|
||||||
local localseed = 12345
|
local localseed = 12345
|
||||||
|
|
||||||
local stone_blobs = {
|
local stone_blobs = {
|
||||||
wherein = wherein_stonelike,
|
wherein = wherein_stonelike,
|
||||||
clust_scarcity = 1000,
|
clust_scarcity = 1000,
|
||||||
@ -72,7 +72,7 @@ local extend_ores = function()
|
|||||||
scale = 1
|
scale = 1
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
local register_blob = function(ore, cluster_size, cluster_scarcity_cuberoot, ymin, ymax)
|
local register_blob = function(ore, cluster_size, cluster_scarcity_cuberoot, ymin, ymax)
|
||||||
localseed = localseed + 1 -- increment this every time it's called to ensure different distributions
|
localseed = localseed + 1 -- increment this every time it's called to ensure different distributions
|
||||||
local blob_copy = deep_copy(stone_blobs)
|
local blob_copy = deep_copy(stone_blobs)
|
||||||
@ -157,21 +157,21 @@ local extend_ores = function()
|
|||||||
register_blob("mcl_core:stone_with_coal", 80, 10, config.oil_sea_level-200, config.oil_sea_level+200) -- tons of coal in the oil sea
|
register_blob("mcl_core:stone_with_coal", 80, 10, config.oil_sea_level-200, config.oil_sea_level+200) -- tons of coal in the oil sea
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if ores_registered["mcl_core:stone_with_lapis"] then
|
if ores_registered["mcl_core:stone_with_lapis"] then
|
||||||
register_scattered("mcl_core:stone_with_lapis", 3, 25, config.sunless_sea_min, config.level3_min) -- Lapis is an ocean gem, I decided
|
register_scattered("mcl_core:stone_with_lapis", 3, 25, config.sunless_sea_min, config.level3_min) -- Lapis is an ocean gem, I decided
|
||||||
if config.enable_primordial then
|
if config.enable_primordial then
|
||||||
register_scattered("mcl_core:stone_with_lapis", 3, 25, config.primordial_min, config.primordial_max)
|
register_scattered("mcl_core:stone_with_lapis", 3, 25, config.primordial_min, config.primordial_max)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if ores_registered["mcl_core:stone_with_redstone"] then
|
if ores_registered["mcl_core:stone_with_redstone"] then
|
||||||
register_scattered("mcl_core:stone_with_redstone", 3, 15, config.level3_min, config.level2_min) -- Level 3 is the most magical, scatter redstone there
|
register_scattered("mcl_core:stone_with_redstone", 3, 15, config.level3_min, config.level2_min) -- Level 3 is the most magical, scatter redstone there
|
||||||
if config.enable_lava_sea then
|
if config.enable_lava_sea then
|
||||||
register_scattered("mcl_core:stone_with_redstone", 4, 15, config.lava_sea_level-200, config.lava_sea_level+100) -- and of course plenty of redstone in the lava sea
|
register_scattered("mcl_core:stone_with_redstone", 4, 15, config.lava_sea_level-200, config.lava_sea_level+100) -- and of course plenty of redstone in the lava sea
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if ores_registered["mcl_core:stone_with_diamond"] then
|
if ores_registered["mcl_core:stone_with_diamond"] then
|
||||||
register_scattered("mcl_core:stone_with_diamond", 2, 18, config.sunless_sea_min, config.level2_min)
|
register_scattered("mcl_core:stone_with_diamond", 2, 18, config.sunless_sea_min, config.level2_min)
|
||||||
if config.enable_oil_sea then
|
if config.enable_oil_sea then
|
||||||
@ -181,7 +181,7 @@ local extend_ores = function()
|
|||||||
register_scattered("mcl_core:stone_with_diamond", 3, 15, config.primordial_min, config.primordial_max)
|
register_scattered("mcl_core:stone_with_diamond", 3, 15, config.primordial_min, config.primordial_max)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if ores_registered["mcl_core:stone_with_gold"] then
|
if ores_registered["mcl_core:stone_with_gold"] then
|
||||||
register_scattered("mcl_core:stone_with_gold", 2, 18)
|
register_scattered("mcl_core:stone_with_gold", 2, 18)
|
||||||
if config.enable_primordial then
|
if config.enable_primordial then
|
||||||
@ -210,9 +210,9 @@ local extend_ores = function()
|
|||||||
end
|
end
|
||||||
|
|
||||||
if minetest.get_modpath("mcl_init") then -- Mineclone 2
|
if minetest.get_modpath("mcl_init") then -- Mineclone 2
|
||||||
|
|
||||||
old_overworld_min = mcl_vars.mg_overworld_min -- remember this for weather control
|
old_overworld_min = mcl_vars.mg_overworld_min -- remember this for weather control
|
||||||
|
|
||||||
mcl_vars.mg_overworld_min = lowest_elevation
|
mcl_vars.mg_overworld_min = lowest_elevation
|
||||||
mcl_vars.mg_bedrock_overworld_min = mcl_vars.mg_overworld_min
|
mcl_vars.mg_bedrock_overworld_min = mcl_vars.mg_overworld_min
|
||||||
mcl_vars.mg_lava_overworld_max = mcl_vars.mg_overworld_min + 10
|
mcl_vars.mg_lava_overworld_max = mcl_vars.mg_overworld_min + 10
|
||||||
@ -229,7 +229,7 @@ if minetest.get_modpath("mcl_init") then -- Mineclone 2
|
|||||||
--if minetest.get_modpath("mcl_structures") and minetest.get_modpath("mcl_strongholds") then
|
--if minetest.get_modpath("mcl_structures") and minetest.get_modpath("mcl_strongholds") then
|
||||||
-- local elevation_delta = old_overworld_min - lowest_elevation
|
-- local elevation_delta = old_overworld_min - lowest_elevation
|
||||||
-- local strongholds = mcl_structures.get_structure_data("stronghold")
|
-- local strongholds = mcl_structures.get_structure_data("stronghold")
|
||||||
-- mcl_structures.register_structure_data("stronghold", strongholds)
|
-- mcl_structures.register_structure_data("stronghold", strongholds)
|
||||||
--end
|
--end
|
||||||
end
|
end
|
||||||
if minetest.get_modpath("mcl_compatibility") then -- Mineclone 5
|
if minetest.get_modpath("mcl_compatibility") then -- Mineclone 5
|
||||||
@ -253,7 +253,7 @@ if minetest.get_modpath("mcl_mapgen") then -- Mineclone 5
|
|||||||
mcl_mapgen.overworld.lava_max = mcl_mapgen.overworld.min+6
|
mcl_mapgen.overworld.lava_max = mcl_mapgen.overworld.min+6
|
||||||
mcl_mapgen.overworld.railcorridors_height_min = -50
|
mcl_mapgen.overworld.railcorridors_height_min = -50
|
||||||
mcl_mapgen.overworld.railcorridors_height_max = -2
|
mcl_mapgen.overworld.railcorridors_height_max = -2
|
||||||
|
|
||||||
mcl_mapgen.end_.max = mcl_mapgen.overworld.min - 2000
|
mcl_mapgen.end_.max = mcl_mapgen.overworld.min - 2000
|
||||||
mcl_mapgen.realm_barrier_overworld_end_max = mcl_mapgen.end_.max
|
mcl_mapgen.realm_barrier_overworld_end_max = mcl_mapgen.end_.max
|
||||||
mcl_mapgen.realm_barrier_overworld_end_min = mcl_mapgen.end_.max - 11
|
mcl_mapgen.realm_barrier_overworld_end_min = mcl_mapgen.end_.max - 11
|
||||||
@ -265,7 +265,7 @@ if minetest.get_modpath("mcl_mapgen") then -- Mineclone 5
|
|||||||
.."does not have an mcl_mapgen.on_settings_changed method. This will likely result in "
|
.."does not have an mcl_mapgen.on_settings_changed method. This will likely result in "
|
||||||
.."altitudes below the original bedrock being inaccessible to players.")
|
.."altitudes below the original bedrock being inaccessible to players.")
|
||||||
end
|
end
|
||||||
|
|
||||||
extend_ores()
|
extend_ores()
|
||||||
end
|
end
|
||||||
if minetest.get_modpath("mcl_worlds") then
|
if minetest.get_modpath("mcl_worlds") then
|
||||||
|
@ -32,7 +32,7 @@ minetest.after(0, function()
|
|||||||
table.insert(problem_nodes, node_name)
|
table.insert(problem_nodes, node_name)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
assert(#problem_nodes == 0, "Nodes " .. table.concat(problem_nodes, ", ") .. " were returned by a selection call but are not registered.")
|
assert(#problem_nodes == 0, "Nodes " .. table.concat(problem_nodes, ", ") .. " were returned by a selection call but are not registered.")
|
||||||
end)
|
end)
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@ local register_cave_wheat = function(number)
|
|||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
df_farming.grow_underground_plant(pos, name, elapsed)
|
df_farming.grow_underground_plant(pos, name, elapsed)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
drop = {
|
drop = {
|
||||||
max_items = 1,
|
max_items = 1,
|
||||||
items = {
|
items = {
|
||||||
@ -48,11 +48,11 @@ local register_cave_wheat = function(number)
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
_mcl_blast_resistance = 0.2,
|
_mcl_blast_resistance = 0.2,
|
||||||
_mcl_hardness = 0.2,
|
_mcl_hardness = 0.2,
|
||||||
}
|
}
|
||||||
|
|
||||||
if number < 8 then
|
if number < 8 then
|
||||||
def._dfcaverns_next_stage_time = wheat_grow_time
|
def._dfcaverns_next_stage_time = wheat_grow_time
|
||||||
def._dfcaverns_next_stage = "df_farming:cave_wheat_"..tostring(number+1)
|
def._dfcaverns_next_stage = "df_farming:cave_wheat_"..tostring(number+1)
|
||||||
@ -215,7 +215,7 @@ if minetest.get_modpath("footprints") then
|
|||||||
_mcl_blast_resistance = 0.5,
|
_mcl_blast_resistance = 0.5,
|
||||||
_mcl_hardness = 0.5,
|
_mcl_hardness = 0.5,
|
||||||
})
|
})
|
||||||
|
|
||||||
footprints.register_trample_node("df_farming:cave_wheat_5", {
|
footprints.register_trample_node("df_farming:cave_wheat_5", {
|
||||||
trampled_node_name = "df_farming:wheat_trampled",
|
trampled_node_name = "df_farming:wheat_trampled",
|
||||||
randomize_trampled_param2 = true,
|
randomize_trampled_param2 = true,
|
||||||
|
@ -17,10 +17,10 @@ local function setting(stype, name, default, description)
|
|||||||
value = default
|
value = default
|
||||||
end
|
end
|
||||||
df_farming.config[name] = value
|
df_farming.config[name] = value
|
||||||
|
|
||||||
if print_settingtypes then
|
if print_settingtypes then
|
||||||
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local plants = {
|
local plants = {
|
||||||
|
@ -26,11 +26,11 @@ local register_dimple_cup = function(number)
|
|||||||
{-8/16, -8/16, -8/16, 8/16, -8/16 + 4*number/16, 8/16},
|
{-8/16, -8/16, -8/16, 8/16, -8/16 + 4*number/16, 8/16},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
df_farming.grow_underground_plant(pos, name, elapsed)
|
df_farming.grow_underground_plant(pos, name, elapsed)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
drop = {
|
drop = {
|
||||||
max_items = 1,
|
max_items = 1,
|
||||||
items = {
|
items = {
|
||||||
@ -47,12 +47,12 @@ local register_dimple_cup = function(number)
|
|||||||
_mcl_blast_resistance = 0.2,
|
_mcl_blast_resistance = 0.2,
|
||||||
_mcl_hardness = 0.2,
|
_mcl_hardness = 0.2,
|
||||||
}
|
}
|
||||||
|
|
||||||
if number < 4 then
|
if number < 4 then
|
||||||
def._dfcaverns_next_stage_time = dimple_grow_time
|
def._dfcaverns_next_stage_time = dimple_grow_time
|
||||||
def._dfcaverns_next_stage = "df_farming:dimple_cup_"..tostring(number+1)
|
def._dfcaverns_next_stage = "df_farming:dimple_cup_"..tostring(number+1)
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node(name, def)
|
minetest.register_node(name, def)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -26,11 +26,11 @@ local register_pig_tail = function(number)
|
|||||||
{-8/16, -8/16, -8/16, 8/16, -8/16 + 2*number/16, 8/16},
|
{-8/16, -8/16, -8/16, 8/16, -8/16 + 2*number/16, 8/16},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
df_farming.grow_underground_plant(pos, name, elapsed)
|
df_farming.grow_underground_plant(pos, name, elapsed)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
drop = {
|
drop = {
|
||||||
max_items = 1,
|
max_items = 1,
|
||||||
items = {
|
items = {
|
||||||
@ -51,12 +51,12 @@ local register_pig_tail = function(number)
|
|||||||
_mcl_blast_resistance = 0.2,
|
_mcl_blast_resistance = 0.2,
|
||||||
_mcl_hardness = 0.2,
|
_mcl_hardness = 0.2,
|
||||||
}
|
}
|
||||||
|
|
||||||
if number < 8 then
|
if number < 8 then
|
||||||
def._dfcaverns_next_stage_time = pig_tail_grow_time
|
def._dfcaverns_next_stage_time = pig_tail_grow_time
|
||||||
def._dfcaverns_next_stage = "df_farming:pig_tail_"..tostring(number+1)
|
def._dfcaverns_next_stage = "df_farming:pig_tail_"..tostring(number+1)
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node(name, def)
|
minetest.register_node(name, def)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -143,7 +143,7 @@ if minetest.get_modpath("footprints") then
|
|||||||
_mcl_blast_resistance = 0.2,
|
_mcl_blast_resistance = 0.2,
|
||||||
_mcl_hardness = 0.2,
|
_mcl_hardness = 0.2,
|
||||||
})
|
})
|
||||||
|
|
||||||
footprints.register_trample_node("df_farming:pig_tail_5", {
|
footprints.register_trample_node("df_farming:pig_tail_5", {
|
||||||
trampled_node_name = "df_farming:pig_tail_trampled",
|
trampled_node_name = "df_farming:pig_tail_trampled",
|
||||||
randomize_trampled_param2 = true,
|
randomize_trampled_param2 = true,
|
||||||
|
@ -80,7 +80,7 @@ end
|
|||||||
df_farming.plant_timer = function(pos, plantname, elapsed)
|
df_farming.plant_timer = function(pos, plantname, elapsed)
|
||||||
local next_stage_time = minetest.registered_nodes[plantname]._dfcaverns_next_stage_time
|
local next_stage_time = minetest.registered_nodes[plantname]._dfcaverns_next_stage_time
|
||||||
if not next_stage_time then return end
|
if not next_stage_time then return end
|
||||||
|
|
||||||
local growable_factor = df_farming.growth_factor(plantname, pos) or 1
|
local growable_factor = df_farming.growth_factor(plantname, pos) or 1
|
||||||
if growable_factor == true then growable_factor = 1 end -- backwards compatibility in case other mods are overriding growth factor to "true/false"
|
if growable_factor == true then growable_factor = 1 end -- backwards compatibility in case other mods are overriding growth factor to "true/false"
|
||||||
|
|
||||||
@ -141,7 +141,7 @@ local place_seed = function(itemstack, placer, pointed_thing, plantname)
|
|||||||
if not minetest.registered_nodes[above.name].buildable_to then
|
if not minetest.registered_nodes[above.name].buildable_to then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
-- if the plant can't grow here, don't permit the seed to be placed
|
-- if the plant can't grow here, don't permit the seed to be placed
|
||||||
local growth_permitted_function = df_farming.growth_permitted[plantname]
|
local growth_permitted_function = df_farming.growth_permitted[plantname]
|
||||||
if not growth_permitted_function or not growth_permitted_function(pt.above) then
|
if not growth_permitted_function or not growth_permitted_function(pt.above) then
|
||||||
@ -153,7 +153,7 @@ local place_seed = function(itemstack, placer, pointed_thing, plantname)
|
|||||||
local oldnode= above
|
local oldnode= above
|
||||||
minetest.add_node(pt.above, {name = plantname, param2 = 1})
|
minetest.add_node(pt.above, {name = plantname, param2 = 1})
|
||||||
df_farming.plant_timer(pt.above, plantname)
|
df_farming.plant_timer(pt.above, plantname)
|
||||||
|
|
||||||
-- Run script hook
|
-- Run script hook
|
||||||
local take_item = true
|
local take_item = true
|
||||||
for _, callback in ipairs(core.registered_on_placenodes) do
|
for _, callback in ipairs(core.registered_on_placenodes) do
|
||||||
@ -165,8 +165,8 @@ local place_seed = function(itemstack, placer, pointed_thing, plantname)
|
|||||||
if callback(place_to_copy, newnode_copy, placer, oldnode_copy, itemstack, pointed_thing_copy) then
|
if callback(place_to_copy, newnode_copy, placer, oldnode_copy, itemstack, pointed_thing_copy) then
|
||||||
take_item = false
|
take_item = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
end
|
end
|
||||||
@ -196,21 +196,21 @@ df_farming.register_seed = function(name, description, image, stage_one, grow_ti
|
|||||||
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
|
fixed = {-0.5, -0.5, -0.5, 0.5, -5/16, 0.5},
|
||||||
},
|
},
|
||||||
_mcl_blast_resistance = 0.2,
|
_mcl_blast_resistance = 0.2,
|
||||||
_mcl_hardness = 0.2,
|
_mcl_hardness = 0.2,
|
||||||
|
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
return place_seed(itemstack, placer, pointed_thing, "df_farming:"..name)
|
return place_seed(itemstack, placer, pointed_thing, "df_farming:"..name)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
df_farming.grow_underground_plant(pos, "df_farming:"..name, elapsed)
|
df_farming.grow_underground_plant(pos, "df_farming:"..name, elapsed)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
minetest.register_node("df_farming:"..name, def)
|
minetest.register_node("df_farming:"..name, def)
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type = "fuel",
|
type = "fuel",
|
||||||
@ -248,10 +248,10 @@ if df_farming.config.light_kills_fungus then
|
|||||||
end
|
end
|
||||||
local node_def = minetest.registered_nodes[node.name]
|
local node_def = minetest.registered_nodes[node.name]
|
||||||
local light_sensitive_fungus_level = node_def.groups.light_sensitive_fungus
|
local light_sensitive_fungus_level = node_def.groups.light_sensitive_fungus
|
||||||
|
|
||||||
-- This should never be the case, but I've received a report of it happening anyway in the ABM so guarding against it.
|
-- This should never be the case, but I've received a report of it happening anyway in the ABM so guarding against it.
|
||||||
if not light_sensitive_fungus_level then return false end
|
if not light_sensitive_fungus_level then return false end
|
||||||
|
|
||||||
local dead_node = node_def._dfcaverns_dead_node or "df_farming:dead_fungus"
|
local dead_node = node_def._dfcaverns_dead_node or "df_farming:dead_fungus"
|
||||||
-- 11 is the value adjacent to a torch
|
-- 11 is the value adjacent to a torch
|
||||||
local light_level = minetest.get_node_light(pos, 0.5) -- check at 0.5 to get how bright it would be here at noon,
|
local light_level = minetest.get_node_light(pos, 0.5) -- check at 0.5 to get how bright it would be here at noon,
|
||||||
|
@ -59,7 +59,7 @@ local plump_helmet_on_place = function(itemstack, placer, pointed_thing, plantn
|
|||||||
local newnode= {name = plantname, param2 = new_param2, param1=0}
|
local newnode= {name = plantname, param2 = new_param2, param1=0}
|
||||||
local oldnode= minetest.get_node(pt.above)
|
local oldnode= minetest.get_node(pt.above)
|
||||||
minetest.add_node(pt.above, newnode)
|
minetest.add_node(pt.above, newnode)
|
||||||
|
|
||||||
local growth_permitted_function = df_farming.growth_permitted["df_farming:plump_helmet_spawn"] -- use the same permitted function for all plump helmets
|
local growth_permitted_function = df_farming.growth_permitted["df_farming:plump_helmet_spawn"] -- use the same permitted function for all plump helmets
|
||||||
if not growth_permitted_function or growth_permitted_function(pt.above) then
|
if not growth_permitted_function or growth_permitted_function(pt.above) then
|
||||||
df_farming.plant_timer(pt.above, plantname)
|
df_farming.plant_timer(pt.above, plantname)
|
||||||
@ -108,16 +108,16 @@ minetest.register_node("df_farming:plump_helmet_spawn", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
_mcl_blast_resistance = 0.2,
|
_mcl_blast_resistance = 0.2,
|
||||||
_mcl_hardness = 0.2,
|
_mcl_hardness = 0.2,
|
||||||
|
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_spawn")
|
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_spawn")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
df_farming.grow_underground_plant(pos, "df_farming:plump_helmet_spawn", elapsed)
|
df_farming.grow_underground_plant(pos, "df_farming:plump_helmet_spawn", elapsed)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
@ -162,7 +162,7 @@ minetest.register_node("df_farming:plump_helmet_1", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
_mcl_blast_resistance = 0.3,
|
_mcl_blast_resistance = 0.3,
|
||||||
_mcl_hardness = 0.3,
|
_mcl_hardness = 0.3,
|
||||||
|
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_1")
|
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_1")
|
||||||
@ -206,12 +206,12 @@ minetest.register_node("df_farming:plump_helmet_2", {
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
_mcl_blast_resistance = 0.4,
|
_mcl_blast_resistance = 0.4,
|
||||||
_mcl_hardness = 0.4,
|
_mcl_hardness = 0.4,
|
||||||
|
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_2")
|
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_2")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_use = minetest.item_eat(2),
|
on_use = minetest.item_eat(2),
|
||||||
_hunger_ng = {satiates = 2},
|
_hunger_ng = {satiates = 2},
|
||||||
_mcl_saturation = 0.7,
|
_mcl_saturation = 0.7,
|
||||||
@ -254,7 +254,7 @@ minetest.register_node("df_farming:plump_helmet_3", {
|
|||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_3")
|
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_3")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_use = minetest.item_eat(3),
|
on_use = minetest.item_eat(3),
|
||||||
_hunger_ng = {satiates = 3},
|
_hunger_ng = {satiates = 3},
|
||||||
_mcl_saturation = 0.9,
|
_mcl_saturation = 0.9,
|
||||||
@ -317,7 +317,7 @@ minetest.register_node("df_farming:plump_helmet_4", {
|
|||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_4")
|
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_4")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_use = minetest.item_eat(4),
|
on_use = minetest.item_eat(4),
|
||||||
_hunger_ng = {satiates = 4},
|
_hunger_ng = {satiates = 4},
|
||||||
_mcl_saturation = 1,
|
_mcl_saturation = 1,
|
||||||
@ -363,7 +363,7 @@ minetest.register_node("df_farming:plump_helmet_4_picked", {
|
|||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_4_picked")
|
return plump_helmet_on_place(itemstack, placer, pointed_thing, "df_farming:plump_helmet_4_picked")
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_use = minetest.item_eat(4),
|
on_use = minetest.item_eat(4),
|
||||||
_hunger_ng = {satiates = 4},
|
_hunger_ng = {satiates = 4},
|
||||||
_mcl_saturation = 1,
|
_mcl_saturation = 1,
|
||||||
|
@ -31,7 +31,7 @@ local register_sweet_pod = function(number)
|
|||||||
},
|
},
|
||||||
_mcl_blast_resistance = 0.2,
|
_mcl_blast_resistance = 0.2,
|
||||||
_mcl_hardness = 0.2,
|
_mcl_hardness = 0.2,
|
||||||
|
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
df_farming.grow_underground_plant(pos, name, elapsed)
|
df_farming.grow_underground_plant(pos, name, elapsed)
|
||||||
end,
|
end,
|
||||||
@ -54,12 +54,12 @@ local register_sweet_pod = function(number)
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
if number < 6 then
|
if number < 6 then
|
||||||
def._dfcaverns_next_stage = "df_farming:sweet_pod_"..tostring(number+1)
|
def._dfcaverns_next_stage = "df_farming:sweet_pod_"..tostring(number+1)
|
||||||
def._dfcaverns_next_stage_time = sweet_pod_grow_time
|
def._dfcaverns_next_stage_time = sweet_pod_grow_time
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node(name, def)
|
minetest.register_node(name, def)
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -195,7 +195,7 @@ if df_dependencies.bucket_register_liquid then
|
|||||||
_mcl_blast_resistance = 100,
|
_mcl_blast_resistance = 100,
|
||||||
_mcl_hardness = -1,
|
_mcl_hardness = -1,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("df_farming:dwarven_syrup_flowing", {
|
minetest.register_node("df_farming:dwarven_syrup_flowing", {
|
||||||
description = S("Flowing Dwarven Syrup"),
|
description = S("Flowing Dwarven Syrup"),
|
||||||
_doc_items_longdesc = df_farming.doc.sweet_pod_syrup_desc,
|
_doc_items_longdesc = df_farming.doc.sweet_pod_syrup_desc,
|
||||||
@ -254,7 +254,7 @@ if df_dependencies.bucket_register_liquid then
|
|||||||
"dfcaverns_bucket_dwarven_syrup.png",
|
"dfcaverns_bucket_dwarven_syrup.png",
|
||||||
S("Dwarven Syrup Bucket")
|
S("Dwarven Syrup Bucket")
|
||||||
)
|
)
|
||||||
|
|
||||||
if minetest.get_modpath("crafting") then
|
if minetest.get_modpath("crafting") then
|
||||||
simplecrafting_lib.register("furnace", {
|
simplecrafting_lib.register("furnace", {
|
||||||
input = {
|
input = {
|
||||||
@ -271,7 +271,7 @@ if df_dependencies.bucket_register_liquid then
|
|||||||
recipe = {df_dependencies.node_name_bucket_empty, "df_farming:sugar", "df_farming:sugar", "df_farming:sugar"},
|
recipe = {df_dependencies.node_name_bucket_empty, "df_farming:sugar", "df_farming:sugar", "df_farming:sugar"},
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
|
||||||
if minetest.get_modpath("dynamic_liquid") then
|
if minetest.get_modpath("dynamic_liquid") then
|
||||||
dynamic_liquid.liquid_abm("df_farming:dwarven_syrup_source", "df_farming:dwarven_syrup_flowing", 5)
|
dynamic_liquid.liquid_abm("df_farming:dwarven_syrup_source", "df_farming:dwarven_syrup_flowing", 5)
|
||||||
end
|
end
|
||||||
|
@ -7,7 +7,7 @@ collectible_lore.register_lorebook({
|
|||||||
id = "rose fungiwood",
|
id = "rose fungiwood",
|
||||||
title = S("Fungiwood"),
|
title = S("Fungiwood"),
|
||||||
text = S([[Today we came across a truly extraordinary discovery. As we were exploring one of the deeper caverns, we stumbled upon a forest of enormous fungi. These towering structures, which I have named Fungiwood, stood at least twenty to thirty feet tall, with a central stalk that was incredibly strong and fine-grained. The spore-producing 'shelves' that surrounded the stalk were thin and irregular, but not particularly useful for either building or as a food source.
|
text = S([[Today we came across a truly extraordinary discovery. As we were exploring one of the deeper caverns, we stumbled upon a forest of enormous fungi. These towering structures, which I have named Fungiwood, stood at least twenty to thirty feet tall, with a central stalk that was incredibly strong and fine-grained. The spore-producing 'shelves' that surrounded the stalk were thin and irregular, but not particularly useful for either building or as a food source.
|
||||||
|
|
||||||
However, the central stalk proved to be an invaluable discovery. When cut, it produces smooth yellow-tinted lumber that is perfect for crafting. It is no wonder that so many carved wooden objects from the deeps are made from this Fungiwood. I have collected samples of the lumber and will study it further to see if it has any other unique properties. This discovery opens up a whole new realm of possibilities for subterranean exploration and commerce.
|
However, the central stalk proved to be an invaluable discovery. When cut, it produces smooth yellow-tinted lumber that is perfect for crafting. It is no wonder that so many carved wooden objects from the deeps are made from this Fungiwood. I have collected samples of the lumber and will study it further to see if it has any other unique properties. This discovery opens up a whole new realm of possibilities for subterranean exploration and commerce.
|
||||||
|
|
||||||
Sincerely,
|
Sincerely,
|
||||||
@ -23,7 +23,7 @@ collectible_lore.register_lorebook({
|
|||||||
When harvested the central stalk of a blood thorn can be cut into planks and used as wood. It has a purple-red hue that may or may not appeal, depending on one's artistic tastes.
|
When harvested the central stalk of a blood thorn can be cut into planks and used as wood. It has a purple-red hue that may or may not appeal, depending on one's artistic tastes.
|
||||||
|
|
||||||
Despite their fearsome reputation, I must admit, I was struck by the tenacity of these plants. The spikes can remain living even after they're severed from the parent stalk, continuing to drain anything they come into contact with. Even if killed by bright light they can still cause damage to creatures that fall on them.
|
Despite their fearsome reputation, I must admit, I was struck by the tenacity of these plants. The spikes can remain living even after they're severed from the parent stalk, continuing to drain anything they come into contact with. Even if killed by bright light they can still cause damage to creatures that fall on them.
|
||||||
|
|
||||||
But as I took notes and observed the blood thorns, I found it difficult to appreciate this species of plant. Its ruthless nature and actively harmful spines left me feeling uneasy, and I couldn't help but walk cautiously in its presence.
|
But as I took notes and observed the blood thorns, I found it difficult to appreciate this species of plant. Its ruthless nature and actively harmful spines left me feeling uneasy, and I couldn't help but walk cautiously in its presence.
|
||||||
|
|
||||||
Sincerely,
|
Sincerely,
|
||||||
@ -123,7 +123,7 @@ collectible_lore.register_lorebook({
|
|||||||
id = "banks tunnel tube",
|
id = "banks tunnel tube",
|
||||||
title = S("Tunnel Tube Resources"),
|
title = S("Tunnel Tube Resources"),
|
||||||
text = S([[I have been conducting experiments on the Tunnel Tubes, a species of fungi that can be found growing deep underground in the caverns. I have successfully harvested the fruiting bodies of the Tunnel Tubes and have been experimenting with refining a gunpowder-like explosive from them. This explosive has shown great potential in mining and construction, but I must note that my experiments were cut short due to several casualties among my crew caused by careless detonations.
|
text = S([[I have been conducting experiments on the Tunnel Tubes, a species of fungi that can be found growing deep underground in the caverns. I have successfully harvested the fruiting bodies of the Tunnel Tubes and have been experimenting with refining a gunpowder-like explosive from them. This explosive has shown great potential in mining and construction, but I must note that my experiments were cut short due to several casualties among my crew caused by careless detonations.
|
||||||
|
|
||||||
In addition to the explosive potential of the Tunnel Tubes, I have also discovered that the wood produced from their trunks has a unique cross-grained texture that makes it incredibly strong and flexible. This could have a wide range of uses in construction and carpentry. However, I must mention that the purple hue of the wood is unfortunately unpleasant and I have yet to devise a way to bleach the wood to make it more appealing.
|
In addition to the explosive potential of the Tunnel Tubes, I have also discovered that the wood produced from their trunks has a unique cross-grained texture that makes it incredibly strong and flexible. This could have a wide range of uses in construction and carpentry. However, I must mention that the purple hue of the wood is unfortunately unpleasant and I have yet to devise a way to bleach the wood to make it more appealing.
|
||||||
|
|
||||||
Overall, the Tunnel Tubes have a lot of potential for industrial use, but we must be careful in handling them and make sure to take proper safety precautions when working with them. I will continue my experiments and report any further findings.
|
Overall, the Tunnel Tubes have a lot of potential for industrial use, but we must be careful in handling them and make sure to take proper safety precautions when working with them. I will continue my experiments and report any further findings.
|
||||||
|
@ -65,7 +65,7 @@ I must stress the importance of caution when exploring these sinkholes, as the w
|
|||||||
|
|
||||||
Signed,
|
Signed,
|
||||||
Dr. Theodore Banks]]),
|
Dr. Theodore Banks]]),
|
||||||
sort = base + 3,
|
sort = base + 3,
|
||||||
})
|
})
|
||||||
--Chasms
|
--Chasms
|
||||||
|
|
||||||
@ -112,7 +112,7 @@ Additionally, mine gas mixed with breathable air can explode violently when expo
|
|||||||
|
|
||||||
Signed,
|
Signed,
|
||||||
Dr. Theodore Banks]]),
|
Dr. Theodore Banks]]),
|
||||||
sort = base + 6,
|
sort = base + 6,
|
||||||
})
|
})
|
||||||
|
|
||||||
--gas wisps
|
--gas wisps
|
||||||
|
@ -41,7 +41,7 @@ minetest.register_node("df_mapitems:castle_coral_skeleton", {
|
|||||||
|
|
||||||
local c_coral = minetest.get_content_id("df_mapitems:castle_coral")
|
local c_coral = minetest.get_content_id("df_mapitems:castle_coral")
|
||||||
local c_coral_skeleton = minetest.get_content_id("df_mapitems:castle_coral_skeleton")
|
local c_coral_skeleton = minetest.get_content_id("df_mapitems:castle_coral_skeleton")
|
||||||
|
|
||||||
local c_stone = minetest.get_content_id(df_dependencies.node_name_stone)
|
local c_stone = minetest.get_content_id(df_dependencies.node_name_stone)
|
||||||
local c_water = minetest.get_content_id(df_dependencies.node_name_water_source)
|
local c_water = minetest.get_content_id(df_dependencies.node_name_water_source)
|
||||||
|
|
||||||
@ -76,7 +76,7 @@ df_mapitems.spawn_castle_coral = function(area, data, vi, iterations)
|
|||||||
|
|
||||||
local newiterations = iterations - 1
|
local newiterations = iterations - 1
|
||||||
if newiterations == 0 then return end
|
if newiterations == 0 then return end
|
||||||
|
|
||||||
if math.random() > 0.5 then
|
if math.random() > 0.5 then
|
||||||
df_mapitems.spawn_castle_coral(area, data, index + 1 - ystride, newiterations)
|
df_mapitems.spawn_castle_coral(area, data, index + 1 - ystride, newiterations)
|
||||||
df_mapitems.spawn_castle_coral(area, data, index - 1 - ystride, newiterations)
|
df_mapitems.spawn_castle_coral(area, data, index - 1 - ystride, newiterations)
|
||||||
|
@ -17,10 +17,10 @@ local function setting(stype, name, default, description)
|
|||||||
value = default
|
value = default
|
||||||
end
|
end
|
||||||
df_mapitems.config[name] = value
|
df_mapitems.config[name] = value
|
||||||
|
|
||||||
if print_settingtypes then
|
if print_settingtypes then
|
||||||
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
setting("float", "glow_worm_delay_multiplier", 10.0, "glow worm growth delay multiplier")
|
setting("float", "glow_worm_delay_multiplier", 10.0, "glow worm growth delay multiplier")
|
||||||
|
@ -318,7 +318,7 @@ end
|
|||||||
df_mapitems.place_big_crystal_cluster = function(area, data, data_param2, vi, radius, ceiling)
|
df_mapitems.place_big_crystal_cluster = function(area, data, data_param2, vi, radius, ceiling)
|
||||||
local y
|
local y
|
||||||
if ceiling then y = -1 else y = 1 end
|
if ceiling then y = -1 else y = 1 end
|
||||||
local pos = area:position(vi)
|
local pos = area:position(vi)
|
||||||
for li in area:iterp(vector.add(pos, -radius), vector.add(pos, radius)) do
|
for li in area:iterp(vector.add(pos, -radius), vector.add(pos, radius)) do
|
||||||
local adjacent = li + y*area.ystride
|
local adjacent = li + y*area.ystride
|
||||||
if math.random() > 0.5 and data[li] == c_stone and data[adjacent] == c_air then
|
if math.random() > 0.5 and data[li] == c_stone and data[adjacent] == c_air then
|
||||||
|
@ -34,7 +34,7 @@ minetest.register_node("df_mapitems:glow_worm", {
|
|||||||
visual_scale = 1.0,
|
visual_scale = 1.0,
|
||||||
_mcl_blast_resistance = 0.2,
|
_mcl_blast_resistance = 0.2,
|
||||||
_mcl_hardness = 0.2,
|
_mcl_hardness = 0.2,
|
||||||
after_place_node = function(pos, placer)
|
after_place_node = function(pos, placer)
|
||||||
if df_mapitems.config.glow_worm_delay_multiplier > 0 then
|
if df_mapitems.config.glow_worm_delay_multiplier > 0 then
|
||||||
minetest.get_node_timer(pos):start(math.random(
|
minetest.get_node_timer(pos):start(math.random(
|
||||||
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 0.75,
|
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 0.75,
|
||||||
@ -48,7 +48,7 @@ minetest.register_node("df_mapitems:glow_worm", {
|
|||||||
if math.random() > 0.5 then
|
if math.random() > 0.5 then
|
||||||
minetest.get_node_timer(below):start(math.random(
|
minetest.get_node_timer(below):start(math.random(
|
||||||
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 0.75,
|
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 0.75,
|
||||||
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 1.25))
|
df_mapitems.config.glow_worm_delay_multiplier * growth_multiplier * 1.25))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
@ -38,7 +38,7 @@ minetest.register_node("df_mapitems:dirt_with_cave_moss", {
|
|||||||
description = S("Dirt with Cave Moss"),
|
description = S("Dirt with Cave Moss"),
|
||||||
_doc_items_longdesc = df_mapitems.doc.cave_moss_desc,
|
_doc_items_longdesc = df_mapitems.doc.cave_moss_desc,
|
||||||
_doc_items_usagehelp = df_mapitems.doc.cave_moss_usage,
|
_doc_items_usagehelp = df_mapitems.doc.cave_moss_usage,
|
||||||
tiles = {dirt_texture .. "^dfcaverns_cave_moss.png", dirt_texture,
|
tiles = {dirt_texture .. "^dfcaverns_cave_moss.png", dirt_texture,
|
||||||
{name = dirt_texture .. "^(dfcaverns_cave_moss.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
{name = dirt_texture .. "^(dfcaverns_cave_moss.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
||||||
tileable_vertical = false}},
|
tileable_vertical = false}},
|
||||||
drop = dirt_node,
|
drop = dirt_node,
|
||||||
@ -66,7 +66,7 @@ minetest.register_node("df_mapitems:sand_scum", {
|
|||||||
description = S("Sand Scum"),
|
description = S("Sand Scum"),
|
||||||
_doc_items_longdesc = df_mapitems.doc.sand_scum_desc,
|
_doc_items_longdesc = df_mapitems.doc.sand_scum_desc,
|
||||||
_doc_items_usagehelp = df_mapitems.doc.sand_scum_usage,
|
_doc_items_usagehelp = df_mapitems.doc.sand_scum_usage,
|
||||||
tiles = {"dfcaverns_ground_cover_sand_scum.png", sand_texture,
|
tiles = {"dfcaverns_ground_cover_sand_scum.png", sand_texture,
|
||||||
{name = sand_texture .. "^(dfcaverns_ground_cover_sand_scum.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
{name = sand_texture .. "^(dfcaverns_ground_cover_sand_scum.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
||||||
tileable_vertical = false}},
|
tileable_vertical = false}},
|
||||||
drop = sand_node,
|
drop = sand_node,
|
||||||
@ -89,7 +89,7 @@ minetest.register_node("df_mapitems:dirt_with_pebble_fungus", {
|
|||||||
description = S("Dirt with Pebble Fungus"),
|
description = S("Dirt with Pebble Fungus"),
|
||||||
_doc_items_longdesc = df_mapitems.doc.pebble_fungus_desc,
|
_doc_items_longdesc = df_mapitems.doc.pebble_fungus_desc,
|
||||||
_doc_items_usagehelp = df_mapitems.doc.pebble_fungus_usage,
|
_doc_items_usagehelp = df_mapitems.doc.pebble_fungus_usage,
|
||||||
tiles = {"dfcaverns_ground_cover_pebble_fungus.png", dirt_texture,
|
tiles = {"dfcaverns_ground_cover_pebble_fungus.png", dirt_texture,
|
||||||
{name = dirt_texture .. "^(dfcaverns_ground_cover_pebble_fungus.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
{name = dirt_texture .. "^(dfcaverns_ground_cover_pebble_fungus.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
||||||
tileable_vertical = false}},
|
tileable_vertical = false}},
|
||||||
drop = dirt_node,
|
drop = dirt_node,
|
||||||
@ -117,7 +117,7 @@ minetest.register_node("df_mapitems:dirt_with_stillworm", {
|
|||||||
description = S("Dirt with Stillworm"),
|
description = S("Dirt with Stillworm"),
|
||||||
_doc_items_longdesc = df_mapitems.doc.stillworm_desc,
|
_doc_items_longdesc = df_mapitems.doc.stillworm_desc,
|
||||||
_doc_items_usagehelp = df_mapitems.doc.stillworm_usage,
|
_doc_items_usagehelp = df_mapitems.doc.stillworm_usage,
|
||||||
tiles = {dirt_texture .. "^dfcaverns_ground_cover_stillworm.png", dirt_texture,
|
tiles = {dirt_texture .. "^dfcaverns_ground_cover_stillworm.png", dirt_texture,
|
||||||
{name = dirt_texture .. "^(dfcaverns_ground_cover_stillworm.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
{name = dirt_texture .. "^(dfcaverns_ground_cover_stillworm.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
||||||
tileable_vertical = false}},
|
tileable_vertical = false}},
|
||||||
drop = dirt_node,
|
drop = dirt_node,
|
||||||
@ -165,7 +165,7 @@ minetest.register_node("df_mapitems:rock_rot", {
|
|||||||
description = S("Rock Rot"),
|
description = S("Rock Rot"),
|
||||||
_doc_items_longdesc = df_mapitems.doc.rock_rot_desc,
|
_doc_items_longdesc = df_mapitems.doc.rock_rot_desc,
|
||||||
_doc_items_usagehelp = df_mapitems.doc.rock_rot_usage,
|
_doc_items_usagehelp = df_mapitems.doc.rock_rot_usage,
|
||||||
tiles = {df_dependencies.texture_stone .. "^dfcaverns_ground_cover_rock_rot.png", df_dependencies.texture_stone,
|
tiles = {df_dependencies.texture_stone .. "^dfcaverns_ground_cover_rock_rot.png", df_dependencies.texture_stone,
|
||||||
{name = df_dependencies.texture_stone .. "^(dfcaverns_ground_cover_rock_rot.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
{name = df_dependencies.texture_stone .. "^(dfcaverns_ground_cover_rock_rot.png^[mask:dfcaverns_ground_cover_side_mask.png)",
|
||||||
tileable_vertical = false}},
|
tileable_vertical = false}},
|
||||||
drop = df_dependencies.node_name_cobble,
|
drop = df_dependencies.node_name_cobble,
|
||||||
|
@ -19,7 +19,7 @@ minetest.register_node("df_mapitems:snareweed", {
|
|||||||
|
|
||||||
if df_mapitems.config.snareweed_damage then
|
if df_mapitems.config.snareweed_damage then
|
||||||
local timer = 0
|
local timer = 0
|
||||||
|
|
||||||
minetest.register_globalstep(function(dtime)
|
minetest.register_globalstep(function(dtime)
|
||||||
timer = timer + dtime
|
timer = timer + dtime
|
||||||
if timer >= 1 then
|
if timer >= 1 then
|
||||||
@ -39,7 +39,7 @@ if df_mapitems.config.snareweed_damage then
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
@ -64,7 +64,7 @@ df_mapitems.place_snareweed = function(area, data, bi, param2_data)
|
|||||||
end
|
end
|
||||||
|
|
||||||
df_mapitems.place_snareweed_patch = function(area, data, bi, param2_data, radius)
|
df_mapitems.place_snareweed_patch = function(area, data, bi, param2_data, radius)
|
||||||
local pos = area:position(bi)
|
local pos = area:position(bi)
|
||||||
for li in area:iterp(vector.add(pos, -radius), vector.add(pos, radius)) do
|
for li in area:iterp(vector.add(pos, -radius), vector.add(pos, radius)) do
|
||||||
local adjacent = li + area.ystride
|
local adjacent = li + area.ystride
|
||||||
local node_type = data[li]
|
local node_type = data[li]
|
||||||
|
@ -10,7 +10,7 @@ df_mapitems.place_against_surface = function(itemstack, placer, pointed_thing)
|
|||||||
if pointed_thing.type ~= "node" then
|
if pointed_thing.type ~= "node" then
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
|
|
||||||
local under_pos = pointed_thing.under
|
local under_pos = pointed_thing.under
|
||||||
local above_pos = pointed_thing.above
|
local above_pos = pointed_thing.above
|
||||||
|
|
||||||
@ -26,7 +26,7 @@ df_mapitems.place_against_surface = function(itemstack, placer, pointed_thing)
|
|||||||
local above_name = above_node.name
|
local above_name = above_node.name
|
||||||
local under_def = minetest.registered_nodes[under_name]
|
local under_def = minetest.registered_nodes[under_name]
|
||||||
local above_def = minetest.registered_nodes[above_name]
|
local above_def = minetest.registered_nodes[above_name]
|
||||||
|
|
||||||
-- return if any of the nodes is not registered
|
-- return if any of the nodes is not registered
|
||||||
if not under_def or not above_def then
|
if not under_def or not above_def then
|
||||||
return itemstack
|
return itemstack
|
||||||
@ -90,7 +90,7 @@ local is_valid_mounting_node = function(c_node)
|
|||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
--facing +x: 16, 17, 18, 19,
|
--facing +x: 16, 17, 18, 19,
|
||||||
--facing -x: 12, 13, 14, 15
|
--facing -x: 12, 13, 14, 15
|
||||||
--facing +z: 8, 9, 10, 11
|
--facing +z: 8, 9, 10, 11
|
||||||
--facing -z: 4, 5, 6, 7
|
--facing -z: 4, 5, 6, 7
|
||||||
|
@ -64,7 +64,7 @@ df_primordial_items.spawn_ceiling_spire_vm = function(vi, area, data)
|
|||||||
|
|
||||||
local ystride = area.ystride
|
local ystride = area.ystride
|
||||||
local zstride = area.zstride
|
local zstride = area.zstride
|
||||||
|
|
||||||
for i = 0, spire_height do
|
for i = 0, spire_height do
|
||||||
if data[vi-i*ystride] == c_air then
|
if data[vi-i*ystride] == c_air then
|
||||||
data[vi-i*ystride] = c_stalk
|
data[vi-i*ystride] = c_stalk
|
||||||
@ -74,7 +74,7 @@ df_primordial_items.spawn_ceiling_spire_vm = function(vi, area, data)
|
|||||||
if data[bottom] == c_air then
|
if data[bottom] == c_air then
|
||||||
data[bottom] = c_node
|
data[bottom] = c_node
|
||||||
end
|
end
|
||||||
|
|
||||||
if spire_height > 4 then -- thicken it all up
|
if spire_height > 4 then -- thicken it all up
|
||||||
for i = 0, math.floor(spire_height/2) do
|
for i = 0, math.floor(spire_height/2) do
|
||||||
local current_vi = vi-i*ystride
|
local current_vi = vi-i*ystride
|
||||||
@ -91,7 +91,7 @@ df_primordial_items.spawn_ceiling_spire_vm = function(vi, area, data)
|
|||||||
data[current_vi-zstride] = c_stalk
|
data[current_vi-zstride] = c_stalk
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if spire_height > 7 then
|
if spire_height > 7 then
|
||||||
bottom = bottom-ystride
|
bottom = bottom-ystride
|
||||||
if data[bottom] == c_air then
|
if data[bottom] == c_air then
|
||||||
@ -113,5 +113,5 @@ df_primordial_items.spawn_ceiling_spire_vm = function(vi, area, data)
|
|||||||
data[bottom-zstride] = c_node
|
data[bottom-zstride] = c_node
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
@ -170,5 +170,5 @@ if minetest.get_modpath("footprints") then
|
|||||||
hard_pack_node_name = "footprints:trail",
|
hard_pack_node_name = "footprints:trail",
|
||||||
hard_pack_probability = HARDPACK_PROBABILITY,
|
hard_pack_probability = HARDPACK_PROBABILITY,
|
||||||
hard_pack_count = HARDPACK_COUNT,
|
hard_pack_count = HARDPACK_COUNT,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -237,9 +237,9 @@ local fern_4_nodes_tall = {
|
|||||||
size = {y = 4, x = 3, z = 4},
|
size = {y = 4, x = 3, z = 4},
|
||||||
center_pos = {y = 0, x = 1, z = 3},
|
center_pos = {y = 0, x = 1, z = 3},
|
||||||
data = {
|
data = {
|
||||||
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, 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, 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,
|
n1, n1, n1, n6, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -247,10 +247,10 @@ local fern_5_nodes_tall = {
|
|||||||
size = {y = 5, x = 3, z = 4},
|
size = {y = 5, x = 3, z = 4},
|
||||||
center_pos = {y = 0, x = 1, z = 3},
|
center_pos = {y = 0, x = 1, z = 3},
|
||||||
data = {
|
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, 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, 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, n2, n3, n2, n1, n4, n1, n1, n1, n1, n1, n5, n1, n2, n6, n2,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -258,14 +258,14 @@ local fern_6_nodes_tall = {
|
|||||||
size = {y = 6, x = 5, z = 4},
|
size = {y = 6, x = 5, z = 4},
|
||||||
center_pos = {y = 0, x = 2, z = 3},
|
center_pos = {y = 0, x = 2, z = 3},
|
||||||
data = {
|
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, n2, 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, n1, n1,
|
||||||
n2, n1, n2, 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, 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,
|
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,
|
n6, n2, n2, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1,
|
n1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -273,20 +273,20 @@ local fern_9_nodes_tall = {
|
|||||||
size = {y = 9, x = 5, z = 5},
|
size = {y = 9, x = 5, z = 5},
|
||||||
center_pos = {y = 0, x = 2, z = 4},
|
center_pos = {y = 0, x = 2, z = 4},
|
||||||
data = {
|
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, n2, 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, 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, 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, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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, 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, 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, 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,
|
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,
|
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, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1,
|
n1, n1, n1, n1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -125,7 +125,7 @@ local find_mycelium_growth_targets = function(pos)
|
|||||||
local pos_x = pos.x
|
local pos_x = pos.x
|
||||||
local pos_y = pos.y
|
local pos_y = pos.y
|
||||||
local pos_z = pos.z
|
local pos_z = pos.z
|
||||||
|
|
||||||
for x = -1, 1 do
|
for x = -1, 1 do
|
||||||
for y = -1, 1 do
|
for y = -1, 1 do
|
||||||
for z = -1, 1 do
|
for z = -1, 1 do
|
||||||
@ -267,7 +267,7 @@ local find_mycelium_growth_targets = function(pos)
|
|||||||
then
|
then
|
||||||
table.insert(valid_targets, {x=pos_x, y=pos_y, z=pos_z+1})
|
table.insert(valid_targets, {x=pos_x, y=pos_y, z=pos_z+1})
|
||||||
end
|
end
|
||||||
|
|
||||||
return valid_targets
|
return valid_targets
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -275,11 +275,11 @@ local grow_mycelium = function(pos, meristem_name)
|
|||||||
local new_meristems = {}
|
local new_meristems = {}
|
||||||
-- Can we grow? If so, pick a random direction and add a new meristem there
|
-- Can we grow? If so, pick a random direction and add a new meristem there
|
||||||
local targets = find_mycelium_growth_targets(pos)
|
local targets = find_mycelium_growth_targets(pos)
|
||||||
|
|
||||||
if targets == nil then
|
if targets == nil then
|
||||||
return nil -- We hit the edge of the known world, pause!
|
return nil -- We hit the edge of the known world, pause!
|
||||||
end
|
end
|
||||||
|
|
||||||
local target_count = #targets
|
local target_count = #targets
|
||||||
if target_count > 0 then
|
if target_count > 0 then
|
||||||
local target = targets[math.random(1,target_count)]
|
local target = targets[math.random(1,target_count)]
|
||||||
@ -337,7 +337,7 @@ minetest.register_node("df_primordial_items:giant_hypha_apical_meristem", {
|
|||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
if elapsed > max_growth_delay then
|
if elapsed > max_growth_delay then
|
||||||
-- We've been unloaded for a while, need to do multiple growth iterations.
|
-- 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 iterations = math.floor(elapsed / avg_growth_delay) -- the number of iterations we've missed
|
||||||
@ -373,14 +373,14 @@ minetest.register_node("df_primordial_items:giant_hypha_apical_meristem", {
|
|||||||
minetest.get_node_timer(newpos):start(math.random(min_growth_delay,max_growth_delay))
|
minetest.get_node_timer(newpos):start(math.random(min_growth_delay,max_growth_delay))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- this version grows instantly, it is meant for mapgen usage.
|
-- this version grows instantly, it is meant for mapgen usage.
|
||||||
|
|
||||||
local grow_mycelium_immediately = function(pos)
|
local grow_mycelium_immediately = function(pos_spawn)
|
||||||
local stack = {pos}
|
local stack = {pos_spawn}
|
||||||
while #stack > 0 do
|
while #stack > 0 do
|
||||||
local pos = table.remove(stack)
|
local pos = table.remove(stack)
|
||||||
if not (df_farming and df_farming.kill_if_sunlit(pos)) then
|
if not (df_farming and df_farming.kill_if_sunlit(pos)) then
|
||||||
@ -394,7 +394,7 @@ local grow_mycelium_immediately = function(pos)
|
|||||||
minetest.get_node_timer(pos):start(math.random(10,60))
|
minetest.get_node_timer(pos):start(math.random(10,60))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node("df_primordial_items:giant_hypha_apical_mapgen", {
|
minetest.register_node("df_primordial_items:giant_hypha_apical_mapgen", {
|
||||||
|
@ -127,7 +127,7 @@ minetest.register_node("df_primordial_items:jungle_mushroom_sapling", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
@ -147,14 +147,14 @@ df_primordial_items.spawn_jungle_mushroom = function(pos)
|
|||||||
local stem_height = math.random(1,3)
|
local stem_height = math.random(1,3)
|
||||||
local cap_radius = math.random(2,3)
|
local cap_radius = math.random(2,3)
|
||||||
local maxy = y + stem_height + 3
|
local maxy = y + stem_height + 3
|
||||||
|
|
||||||
local c_cap
|
local c_cap
|
||||||
if math.random() > 0.5 then
|
if math.random() > 0.5 then
|
||||||
c_cap = c_cap_1
|
c_cap = c_cap_1
|
||||||
else
|
else
|
||||||
c_cap = c_cap_2
|
c_cap = c_cap_2
|
||||||
end
|
end
|
||||||
|
|
||||||
local vm = minetest.get_voxel_manip()
|
local vm = minetest.get_voxel_manip()
|
||||||
local minp, maxp = vm:read_from_map(
|
local minp, maxp = vm:read_from_map(
|
||||||
{x = x - cap_radius, y = y, z = z - cap_radius},
|
{x = x - cap_radius, y = y, z = z - cap_radius},
|
||||||
@ -164,7 +164,7 @@ df_primordial_items.spawn_jungle_mushroom = function(pos)
|
|||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
|
|
||||||
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_air, stem_height, cap_radius)
|
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_air, stem_height, cap_radius)
|
||||||
|
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
vm:update_map()
|
vm:update_map()
|
||||||
|
@ -366,7 +366,7 @@ if minetest.get_modpath("footprints") then
|
|||||||
hard_pack_node_name = "footprints:trail",
|
hard_pack_node_name = "footprints:trail",
|
||||||
hard_pack_probability = HARDPACK_PROBABILITY,
|
hard_pack_probability = HARDPACK_PROBABILITY,
|
||||||
hard_pack_count = HARDPACK_COUNT,
|
hard_pack_count = HARDPACK_COUNT,
|
||||||
})
|
})
|
||||||
footprints.register_trample_node("df_primordial_items:plant_matter", {
|
footprints.register_trample_node("df_primordial_items:plant_matter", {
|
||||||
trampled_node_def_override = {description = S("Primordial Plant Matter with Footprint"),},
|
trampled_node_def_override = {description = S("Primordial Plant Matter with Footprint"),},
|
||||||
footprint_opacity = 128,
|
footprint_opacity = 128,
|
||||||
@ -458,10 +458,10 @@ minetest.register_node("df_primordial_items:jungle_thorns", {
|
|||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
-- TODO I had an idea to make thorns grow into mazes naturally using cellular automata rules, but it turned out to be
|
-- 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.
|
-- complicated and probably not worth it right now. Deal with it later.
|
||||||
|
|
||||||
--local thorn_dir =
|
--local thorn_dir =
|
||||||
--{
|
--{
|
||||||
-- {x=1,y=0,z=1},
|
-- {x=1,y=0,z=1},
|
||||||
-- {x=-1,y=0,z=-1},
|
-- {x=-1,y=0,z=-1},
|
||||||
@ -494,7 +494,7 @@ minetest.register_node("df_primordial_items:jungle_thorns", {
|
|||||||
-- end
|
-- end
|
||||||
-- return
|
-- return
|
||||||
-- end
|
-- end
|
||||||
--
|
--
|
||||||
-- local dir = thorn_dir[math.random(#thorn_dir)]
|
-- local dir = thorn_dir[math.random(#thorn_dir)]
|
||||||
-- local target_pos = vector.add(dir, pos)
|
-- local target_pos = vector.add(dir, pos)
|
||||||
-- -- This gets the corners of the target zone
|
-- -- This gets the corners of the target zone
|
||||||
|
@ -140,7 +140,7 @@ local c_trunk_glow = minetest.get_content_id("df_primordial_items:jungle_tree_gl
|
|||||||
df_primordial_items.spawn_jungle_tree = function(pos)
|
df_primordial_items.spawn_jungle_tree = function(pos)
|
||||||
local x, y, z = pos.x, pos.y, pos.z
|
local x, y, z = pos.x, pos.y, pos.z
|
||||||
local height = math.random(8,14)
|
local height = math.random(8,14)
|
||||||
|
|
||||||
local vm = minetest.get_voxel_manip()
|
local vm = minetest.get_voxel_manip()
|
||||||
local minp, maxp = vm:read_from_map(
|
local minp, maxp = vm:read_from_map(
|
||||||
{x = x - 2, y = y - 2, z = z - 2},
|
{x = x - 2, y = y - 2, z = z - 2},
|
||||||
@ -149,9 +149,9 @@ df_primordial_items.spawn_jungle_tree = function(pos)
|
|||||||
local area = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
|
local area = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
|
||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
local vi = area:indexp(pos)
|
local vi = area:indexp(pos)
|
||||||
|
|
||||||
df_primordial_items.spawn_jungle_tree_vm(height, vi, area, data)
|
df_primordial_items.spawn_jungle_tree_vm(height, vi, area, data)
|
||||||
|
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
vm:update_map()
|
vm:update_map()
|
||||||
@ -187,7 +187,7 @@ df_primordial_items.spawn_jungle_tree_vm = function(height, vi, area, data)
|
|||||||
end
|
end
|
||||||
roots_done[root_column] = true
|
roots_done[root_column] = true
|
||||||
end
|
end
|
||||||
|
|
||||||
-- puts a trunk node in the center and surrounds it with leaves
|
-- puts a trunk node in the center and surrounds it with leaves
|
||||||
local branch = function(bi, glow)
|
local branch = function(bi, glow)
|
||||||
local trunknode, leafnode
|
local trunknode, leafnode
|
||||||
@ -210,7 +210,7 @@ df_primordial_items.spawn_jungle_tree_vm = function(height, vi, area, data)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = 0, height-2 do
|
for i = 0, height-2 do
|
||||||
local y_index = vi + i * ystride
|
local y_index = vi + i * ystride
|
||||||
if buildable_to(data[y_index]) then
|
if buildable_to(data[y_index]) then
|
||||||
@ -220,10 +220,10 @@ df_primordial_items.spawn_jungle_tree_vm = function(height, vi, area, data)
|
|||||||
end
|
end
|
||||||
if i > 4 then
|
if i > 4 then
|
||||||
local branch_index = y_index + math.random(-1,1) + math.random(-1,1)*zstride
|
local branch_index = y_index + math.random(-1,1) + math.random(-1,1)*zstride
|
||||||
branch(branch_index)
|
branch(branch_index)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
branch(vi + (height-1)*ystride) -- topper
|
branch(vi + (height-1)*ystride) -- topper
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node("df_primordial_items:jungletree_sapling", {
|
minetest.register_node("df_primordial_items:jungletree_sapling", {
|
||||||
|
@ -279,452 +279,452 @@ local bc_mushroom_21 = {
|
|||||||
size = {y = 21, x = 19, z = 19},
|
size = {y = 21, x = 19, z = 19},
|
||||||
center_pos = {x=9, y=0, z=9},
|
center_pos = {x=9, y=0, z=9},
|
||||||
data = {
|
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, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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, 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, 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, n2, 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, 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, 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, n2, 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, 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, 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, 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, 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, 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, n2, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n3, n2, n3,
|
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, 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,
|
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, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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, 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, 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, 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, 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, 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, n5,
|
||||||
n5, 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, n5, n5, 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, 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, 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, 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, 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, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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, 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, 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, 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, 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,
|
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, 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,
|
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,
|
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, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, 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, n5, n1,
|
||||||
n5, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, 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,
|
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,
|
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,
|
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, 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,
|
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, 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, 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, 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, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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, 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, 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, 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, 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, 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, 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, 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,
|
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, 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,
|
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,
|
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,
|
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, n2, 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, 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, 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, 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, n2, n1, n1, n1, n2, 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, n2, n1, n1, n1,
|
||||||
n2, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n1, n2, 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, 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,
|
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, 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, 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,
|
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,
|
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, 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, 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, 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, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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, 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, 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, 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, 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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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, 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, 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, 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, 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, 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, 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, n4, n4, n4,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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,
|
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, 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, 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, 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, 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, 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, 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,
|
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,
|
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, 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,
|
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, 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,
|
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,
|
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, 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, 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, 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, n4, n4, n4,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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,
|
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, 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, 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, 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, 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, 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, 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, n4, n4, n4, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1, n1, n4, n4,
|
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, 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,
|
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, 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, 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, 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,
|
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, 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, 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,
|
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,
|
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, n3,
|
||||||
n3, n3, n3, n3, n3, n3, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
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, 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, 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, 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, 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, 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, n4, n4, n4, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n4, n4,
|
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, 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,
|
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, 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, 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, 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, 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, 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, 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,
|
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,
|
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,
|
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,
|
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,
|
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,
|
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, 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, 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, n5, 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, 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, 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,
|
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, 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, 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, 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, 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,
|
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,
|
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,
|
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,
|
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, 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,
|
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, n5, 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, n5, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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,
|
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, 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, 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, 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, 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, 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,
|
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,
|
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,
|
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,
|
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, 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, 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, n2, 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, n2, 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, n2, n1, n1, n1,
|
||||||
n2, 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, n2, n1,
|
||||||
n1, n1, n2, 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,
|
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, 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, 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, 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, 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,
|
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, 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, 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,
|
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, n5, 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, n5,
|
||||||
n1, n1, n1, n2, 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, n5, n1, n1, n1, n2, n1, n2, 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, 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, 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, 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, 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,
|
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, 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,
|
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,
|
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,
|
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, 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, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, 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, n2,
|
||||||
n1, n1, n2, 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, n2, n1, n1, n2, 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, 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, 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, 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, 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, n5, 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, n5, n1, n1, n1, n5, 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, n5, n1, n1, n1,
|
||||||
n5, 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, n1, n1, n5, n1,
|
||||||
n1, n1, n5, 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,
|
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, 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, 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, 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, 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, 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, n5, n1, n1, n1, n5,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n3, n3, n5, n5, n1,
|
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,
|
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,
|
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, 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, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, 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, 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, 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, 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, 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, n2, 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, 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, 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, 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, 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, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, 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, n3, n3, n3,
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, 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,
|
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,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -58,7 +58,7 @@ minetest.register_node("df_trees:black_cap_gills", {
|
|||||||
df_dependencies.register_leafdecay({
|
df_dependencies.register_leafdecay({
|
||||||
trunks = {"df_trees:black_cap"}, -- don't need stem nodes here
|
trunks = {"df_trees:black_cap"}, -- don't need stem nodes here
|
||||||
leaves = {"df_trees:black_cap_gills"},
|
leaves = {"df_trees:black_cap_gills"},
|
||||||
radius = 1,
|
radius = 1,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- Wood
|
-- Wood
|
||||||
@ -170,7 +170,7 @@ minetest.register_node("df_trees:black_cap_sapling", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
@ -199,7 +199,7 @@ df_trees.spawn_black_cap = function(pos)
|
|||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
|
|
||||||
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
||||||
|
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
vm:update_map()
|
vm:update_map()
|
||||||
@ -208,7 +208,7 @@ end
|
|||||||
df_trees.spawn_black_cap_vm = function(vi, area, data)
|
df_trees.spawn_black_cap_vm = function(vi, area, data)
|
||||||
local stem_height = math.random(1,5)
|
local stem_height = math.random(1,5)
|
||||||
local cap_radius = math.random(2,3)
|
local cap_radius = math.random(2,3)
|
||||||
|
|
||||||
subterrane.giant_mushroom(vi, area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
subterrane.giant_mushroom(vi, area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -63,7 +63,7 @@ minetest.register_node("df_trees:blood_thorn", {
|
|||||||
below_node = minetest.get_node(below)
|
below_node = minetest.get_node(below)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
while elapsed > blood_thorn_max_delay do
|
while elapsed > blood_thorn_max_delay do
|
||||||
-- catch up if the block was unloaded for a long time
|
-- catch up if the block was unloaded for a long time
|
||||||
@ -76,7 +76,7 @@ minetest.register_node("df_trees:blood_thorn", {
|
|||||||
minetest.get_node_timer(pos):start(math.random(blood_thorn_min_delay, blood_thorn_max_delay))
|
minetest.get_node_timer(pos):start(math.random(blood_thorn_min_delay, blood_thorn_max_delay))
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("df_trees:blood_thorn_dead", {
|
minetest.register_node("df_trees:blood_thorn_dead", {
|
||||||
@ -231,12 +231,12 @@ function df_trees.grow_blood_thorn(pos, node)
|
|||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
-- node is tipped over
|
-- node is tipped over
|
||||||
if node.param2 >= 4 then
|
if node.param2 >= 4 then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local height = 0
|
local height = 0
|
||||||
local max_height = max_bloodthorn_height(pos)
|
local max_height = max_bloodthorn_height(pos)
|
||||||
while node.name == "df_trees:blood_thorn" and height < max_height do
|
while node.name == "df_trees:blood_thorn" and height < max_height do
|
||||||
@ -249,7 +249,7 @@ function df_trees.grow_blood_thorn(pos, node)
|
|||||||
end
|
end
|
||||||
|
|
||||||
minetest.set_node(pos, {name = "df_trees:blood_thorn"})
|
minetest.set_node(pos, {name = "df_trees:blood_thorn"})
|
||||||
|
|
||||||
local dir = spike_directions[math.random(1,4)]
|
local dir = spike_directions[math.random(1,4)]
|
||||||
local spike_pos = vector.add(pos, dir.dir)
|
local spike_pos = vector.add(pos, dir.dir)
|
||||||
if minetest.get_node(spike_pos).name == "air" then
|
if minetest.get_node(spike_pos).name == "air" then
|
||||||
@ -320,8 +320,8 @@ df_trees.spawn_blood_thorn_vm = function(vi, area, data, data_param2, height)
|
|||||||
local node_id = data[vi]
|
local node_id = data[vi]
|
||||||
if node_id == c_air or node_id == c_ignore then
|
if node_id == c_air or node_id == c_ignore then
|
||||||
data[vi] = c_blood_thorn
|
data[vi] = c_blood_thorn
|
||||||
|
|
||||||
for i = 1, 2 do
|
for j = 1, 2 do
|
||||||
local facedir = math.random(1,4)-1
|
local facedir = math.random(1,4)-1
|
||||||
local spike_vi = vi + facedir_to_increment(facedir, area)
|
local spike_vi = vi + facedir_to_increment(facedir, area)
|
||||||
if data[spike_vi] == c_air or data[spike_vi] == c_ignore then
|
if data[spike_vi] == c_air or data[spike_vi] == c_ignore then
|
||||||
@ -335,8 +335,3 @@ df_trees.spawn_blood_thorn_vm = function(vi, area, data, data_param2, height)
|
|||||||
vi = vi + area.ystride
|
vi = vi + area.ystride
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -17,10 +17,10 @@ local function setting(stype, name, default, description)
|
|||||||
value = default
|
value = default
|
||||||
end
|
end
|
||||||
df_trees.config[name] = value
|
df_trees.config[name] = value
|
||||||
|
|
||||||
if print_settingtypes then
|
if print_settingtypes then
|
||||||
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local trees = {
|
local trees = {
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
-- Fungiwood
|
-- Fungiwood
|
||||||
|
|
||||||
-- fine grain
|
-- fine grain
|
||||||
-- Max trunk height 8
|
-- Max trunk height 8
|
||||||
-- depth 1-2
|
-- depth 1-2
|
||||||
|
|
||||||
local S = minetest.get_translator(minetest.get_current_modname())
|
local S = minetest.get_translator(minetest.get_current_modname())
|
||||||
@ -140,7 +140,7 @@ minetest.register_node("df_trees:fungiwood_sapling", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
@ -175,14 +175,14 @@ function df_trees.spawn_fungiwood(pos)
|
|||||||
vm:update_map()
|
vm:update_map()
|
||||||
end
|
end
|
||||||
|
|
||||||
df_trees.spawn_fungiwood_vm = function(vi, area, data, height)
|
df_trees.spawn_fungiwood_vm = function(vi_spawn, area, data, height)
|
||||||
if height == nil then height = math.random(6, 10) end
|
if height == nil then height = math.random(6, 10) end
|
||||||
local pos = area:position(vi)
|
local pos = area:position(vi_spawn)
|
||||||
local x = pos.x
|
local x = pos.x
|
||||||
local y = pos.y
|
local y = pos.y
|
||||||
local z = pos.z
|
local z = pos.z
|
||||||
local maxy = y + height -- Trunk top
|
local maxy = y + height -- Trunk top
|
||||||
|
|
||||||
-- Upper branches layer
|
-- Upper branches layer
|
||||||
local dev = 3
|
local dev = 3
|
||||||
for yy = maxy - 2, maxy do
|
for yy = maxy - 2, maxy do
|
||||||
|
@ -64,7 +64,7 @@ minetest.register_node("df_trees:goblin_cap_gills", {
|
|||||||
df_dependencies.register_leafdecay({
|
df_dependencies.register_leafdecay({
|
||||||
trunks = {"df_trees:goblin_cap"}, -- don't need stem nodes here
|
trunks = {"df_trees:goblin_cap"}, -- don't need stem nodes here
|
||||||
leaves = {"df_trees:goblin_cap_gills"},
|
leaves = {"df_trees:goblin_cap_gills"},
|
||||||
radius = 1,
|
radius = 1,
|
||||||
})
|
})
|
||||||
|
|
||||||
--Wood
|
--Wood
|
||||||
@ -235,7 +235,7 @@ minetest.register_node("df_trees:goblin_cap_sapling", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
@ -270,11 +270,11 @@ df_trees.spawn_goblin_cap = function(pos)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local x, y, z = pos.x, pos.y, pos.z
|
local x, y, z = pos.x, pos.y, pos.z
|
||||||
|
|
||||||
local stem_height = math.random(1,3)
|
local stem_height = math.random(1,3)
|
||||||
local cap_radius = math.random(3,6)
|
local cap_radius = math.random(3,6)
|
||||||
local maxy = y + stem_height + 3
|
local maxy = y + stem_height + 3
|
||||||
|
|
||||||
local vm = minetest.get_voxel_manip()
|
local vm = minetest.get_voxel_manip()
|
||||||
local minp, maxp = vm:read_from_map(
|
local minp, maxp = vm:read_from_map(
|
||||||
{x = x - cap_radius, y = y, z = z - cap_radius},
|
{x = x - cap_radius, y = y, z = z - cap_radius},
|
||||||
@ -284,7 +284,7 @@ df_trees.spawn_goblin_cap = function(pos)
|
|||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
|
|
||||||
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
||||||
|
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
vm:update_map()
|
vm:update_map()
|
||||||
|
@ -61,7 +61,7 @@ minetest.register_node("df_trees:nether_cap_gills", {
|
|||||||
df_dependencies.register_leafdecay({
|
df_dependencies.register_leafdecay({
|
||||||
trunks = {"df_trees:nether_cap"}, -- don't need stem nodes here
|
trunks = {"df_trees:nether_cap"}, -- don't need stem nodes here
|
||||||
leaves = {"df_trees:nether_cap_gills"},
|
leaves = {"df_trees:nether_cap_gills"},
|
||||||
radius = 1,
|
radius = 1,
|
||||||
})
|
})
|
||||||
|
|
||||||
--Wood
|
--Wood
|
||||||
@ -130,7 +130,7 @@ minetest.register_node("df_trees:nether_cap_sapling", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
@ -150,7 +150,7 @@ df_trees.spawn_nether_cap = function(pos)
|
|||||||
local stem_height = math.random(1,3)
|
local stem_height = math.random(1,3)
|
||||||
local cap_radius = math.random(2,3)
|
local cap_radius = math.random(2,3)
|
||||||
local maxy = y + stem_height + 3
|
local maxy = y + stem_height + 3
|
||||||
|
|
||||||
local vm = minetest.get_voxel_manip()
|
local vm = minetest.get_voxel_manip()
|
||||||
local minp, maxp = vm:read_from_map(
|
local minp, maxp = vm:read_from_map(
|
||||||
{x = x - cap_radius, y = y, z = z - cap_radius},
|
{x = x - cap_radius, y = y, z = z - cap_radius},
|
||||||
@ -160,7 +160,7 @@ df_trees.spawn_nether_cap = function(pos)
|
|||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
|
|
||||||
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
||||||
|
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
vm:update_map()
|
vm:update_map()
|
||||||
|
@ -9,212 +9,212 @@ return {
|
|||||||
center_pos = {x=5, y=2, z=5},
|
center_pos = {x=5, y=2, z=5},
|
||||||
data = {
|
data = {
|
||||||
-- z=0, y=0
|
-- z=0, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=1
|
-- z=0, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=2
|
-- z=0, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=3
|
-- z=0, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=4
|
-- z=0, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=5
|
-- z=0, y=5
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=6
|
-- z=0, y=6
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=7
|
-- z=0, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=8
|
-- z=0, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=1, y=0
|
-- z=1, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=1
|
-- z=1, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=2
|
-- z=1, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=3
|
-- z=1, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=4
|
-- z=1, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=5
|
-- z=1, y=5
|
||||||
n1, n1, n2, n2, n2, n4, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n4, n2, n2, n2, n1, n1,
|
||||||
-- z=1, y=6
|
-- z=1, y=6
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=7
|
-- z=1, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=8
|
-- z=1, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=2, y=0
|
-- z=2, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=1
|
-- z=2, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=2
|
-- z=2, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=3
|
-- z=2, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=4
|
-- z=2, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=5
|
-- z=2, y=5
|
||||||
n1, n2, n2, n4, n4, n4, n4, n4, n2, n2, n1,
|
n1, n2, n2, n4, n4, n4, n4, n4, n2, n2, n1,
|
||||||
-- z=2, y=6
|
-- z=2, y=6
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=2, y=7
|
-- z=2, y=7
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=8
|
-- z=2, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=3, y=0
|
-- z=3, y=0
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=3, y=1
|
-- z=3, y=1
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=3, y=2
|
-- z=3, y=2
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=3, y=3
|
-- z=3, y=3
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=3, y=4
|
-- z=3, y=4
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=3, y=5
|
-- z=3, y=5
|
||||||
n1, n2, n4, n4, n6, n6, n6, n4, n4, n2, n1,
|
n1, n2, n4, n4, n6, n6, n6, n4, n4, n2, n1,
|
||||||
-- z=3, y=6
|
-- z=3, y=6
|
||||||
n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
||||||
-- z=3, y=7
|
-- z=3, y=7
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=3, y=8
|
-- z=3, y=8
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=4, y=0
|
-- z=4, y=0
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=4, y=1
|
-- z=4, y=1
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=4, y=2
|
-- z=4, y=2
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=4, y=3
|
-- z=4, y=3
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=4, y=4
|
-- z=4, y=4
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=4, y=5
|
-- z=4, y=5
|
||||||
n1, n2, n4, n6, n6, n6, n6, n6, n4, n2, n1,
|
n1, n2, n4, n6, n6, n6, n6, n6, n4, n2, n1,
|
||||||
-- z=4, y=6
|
-- z=4, y=6
|
||||||
n1, n1, n2, n2, n6, n6, n6, n2, n2, n1, n1,
|
n1, n1, n2, n2, n6, n6, n6, n2, n2, n1, n1,
|
||||||
-- z=4, y=7
|
-- z=4, y=7
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=4, y=8
|
-- z=4, y=8
|
||||||
n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1,
|
n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=5, y=0
|
-- z=5, y=0
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=5, y=1
|
-- z=5, y=1
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=5, y=2
|
-- z=5, y=2
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=5, y=3
|
-- z=5, y=3
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=5, y=4
|
-- z=5, y=4
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=5, y=5
|
-- z=5, y=5
|
||||||
n2, n4, n4, n6, n6, n6, n6, n6, n4, n4, n2,
|
n2, n4, n4, n6, n6, n6, n6, n6, n4, n4, n2,
|
||||||
-- z=5, y=6
|
-- z=5, y=6
|
||||||
n1, n2, n2, n2, n6, n6, n6, n2, n2, n2, n1,
|
n1, n2, n2, n2, n6, n6, n6, n2, n2, n2, n1,
|
||||||
-- z=5, y=7
|
-- z=5, y=7
|
||||||
n1, n1, n2, n2, n2, n6, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n6, n2, n2, n2, n1, n1,
|
||||||
-- z=5, y=8
|
-- z=5, y=8
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
|
|
||||||
-- z=6, y=0
|
-- z=6, y=0
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=6, y=1
|
-- z=6, y=1
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=6, y=2
|
-- z=6, y=2
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=6, y=3
|
-- z=6, y=3
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=6, y=4
|
-- z=6, y=4
|
||||||
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
n1, n1, n1, n6, n6, n6, n6, n6, n1, n1, n1,
|
||||||
-- z=6, y=5
|
-- z=6, y=5
|
||||||
n1, n2, n4, n6, n6, n6, n6, n6, n4, n2, n1,
|
n1, n2, n4, n6, n6, n6, n6, n6, n4, n2, n1,
|
||||||
-- z=6, y=6
|
-- z=6, y=6
|
||||||
n1, n1, n2, n2, n6, n6, n6, n2, n2, n1, n1,
|
n1, n1, n2, n2, n6, n6, n6, n2, n2, n1, n1,
|
||||||
-- z=6, y=7
|
-- z=6, y=7
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=6, y=8
|
-- z=6, y=8
|
||||||
n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1,
|
n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=7, y=0
|
-- z=7, y=0
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=7, y=1
|
-- z=7, y=1
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=7, y=2
|
-- z=7, y=2
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=7, y=3
|
-- z=7, y=3
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=7, y=4
|
-- z=7, y=4
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=7, y=5
|
-- z=7, y=5
|
||||||
n1, n2, n4, n4, n6, n6, n6, n4, n4, n2, n1,
|
n1, n2, n4, n4, n6, n6, n6, n4, n4, n2, n1,
|
||||||
-- z=7, y=6
|
-- z=7, y=6
|
||||||
n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
||||||
-- z=7, y=7
|
-- z=7, y=7
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=7, y=8
|
-- z=7, y=8
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=8, y=0
|
-- z=8, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=1
|
-- z=8, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=2
|
-- z=8, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=3
|
-- z=8, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=4
|
-- z=8, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=5
|
-- z=8, y=5
|
||||||
n1, n2, n2, n4, n4, n4, n4, n4, n2, n2, n1,
|
n1, n2, n2, n4, n4, n4, n4, n4, n2, n2, n1,
|
||||||
-- z=8, y=6
|
-- z=8, y=6
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=8, y=7
|
-- z=8, y=7
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=8
|
-- z=8, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=9, y=0
|
-- z=9, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=1
|
-- z=9, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=2
|
-- z=9, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=3
|
-- z=9, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=4
|
-- z=9, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=5
|
-- z=9, y=5
|
||||||
n1, n1, n2, n2, n2, n4, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n4, n2, n2, n2, n1, n1,
|
||||||
-- z=9, y=6
|
-- z=9, y=6
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=7
|
-- z=9, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=8
|
-- z=9, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=10, y=0
|
-- z=10, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=1
|
-- z=10, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=2
|
-- z=10, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=3
|
-- z=10, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=4
|
-- z=10, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=5
|
-- z=10, y=5
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=6
|
-- z=10, y=6
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=7
|
-- z=10, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=8
|
-- z=10, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -37,213 +37,213 @@ local schematic = {
|
|||||||
center_pos = {x=5, y=2, z=5},
|
center_pos = {x=5, y=2, z=5},
|
||||||
data = {
|
data = {
|
||||||
-- z=0, y=0
|
-- z=0, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=1
|
-- z=0, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=2
|
-- z=0, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=3
|
-- z=0, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=4
|
-- z=0, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=5
|
-- z=0, y=5
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=6
|
-- z=0, y=6
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=7
|
-- z=0, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=8
|
-- z=0, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=1, y=0
|
-- z=1, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=1
|
-- z=1, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=2
|
-- z=1, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=3
|
-- z=1, y=3
|
||||||
n1, n1, n1, n1, n1, n11, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n11, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=4
|
-- z=1, y=4
|
||||||
n1, n1, n1, n1, n1, n11, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n11, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=5
|
-- z=1, y=5
|
||||||
n1, n1, n2, n2, n2, n4, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n4, n2, n2, n2, n1, n1,
|
||||||
-- z=1, y=6
|
-- z=1, y=6
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=7
|
-- z=1, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=8
|
-- z=1, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=2, y=0
|
-- z=2, y=0
|
||||||
n1, n1, n1, n22, n1, n1, n1, n22, n1, n1, n1,
|
n1, n1, n1, n22, n1, n1, n1, n22, n1, n1, n1,
|
||||||
-- z=2, y=1
|
-- z=2, y=1
|
||||||
n1, n1, n1, n1, n20, n1, n21, n1, n1, n1, n1,
|
n1, n1, n1, n1, n20, n1, n21, n1, n1, n1, n1,
|
||||||
-- z=2, y=2
|
-- z=2, y=2
|
||||||
n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=3
|
-- z=2, y=3
|
||||||
n1, n1, n1, n1, n1, n11, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n11, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=4
|
-- z=2, y=4
|
||||||
n1, n1, n1, n1, n1, n11, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n11, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=5
|
-- z=2, y=5
|
||||||
n1, n2, n2, n4, n4, n4, n4, n4, n2, n2, n1,
|
n1, n2, n2, n4, n4, n4, n4, n4, n2, n2, n1,
|
||||||
-- z=2, y=6
|
-- z=2, y=6
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=2, y=7
|
-- z=2, y=7
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=8
|
-- z=2, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=3, y=0
|
-- z=3, y=0
|
||||||
n1, n1, n1, n3, n19, n19, n19, n3, n1, n1, n1,
|
n1, n1, n1, n3, n19, n19, n19, n3, n1, n1, n1,
|
||||||
-- z=3, y=1
|
-- z=3, y=1
|
||||||
n1, n1, n1, n1, n19, n19, n19, n1, n1, n1, n1,
|
n1, n1, n1, n1, n19, n19, n19, n1, n1, n1, n1,
|
||||||
-- z=3, y=2
|
-- z=3, y=2
|
||||||
n1, n1, n1, n1, n6, n7, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n7, n6, n1, n1, n1, n1,
|
||||||
-- z=3, y=3
|
-- z=3, y=3
|
||||||
n1, n1, n1, n1, n6, n8, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n8, n6, n1, n1, n1, n1,
|
||||||
-- z=3, y=4
|
-- z=3, y=4
|
||||||
n1, n1, n1, n1, n6, n9, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n9, n6, n1, n1, n1, n1,
|
||||||
-- z=3, y=5
|
-- z=3, y=5
|
||||||
n1, n2, n4, n4, n6, n6, n6, n4, n4, n2, n1,
|
n1, n2, n4, n4, n6, n6, n6, n4, n4, n2, n1,
|
||||||
-- z=3, y=6
|
-- z=3, y=6
|
||||||
n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
||||||
-- z=3, y=7
|
-- z=3, y=7
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=3, y=8
|
-- z=3, y=8
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=4, y=0
|
-- z=4, y=0
|
||||||
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
||||||
-- z=4, y=1
|
-- z=4, y=1
|
||||||
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
||||||
-- z=4, y=2
|
-- z=4, y=2
|
||||||
n1, n1, n1, n6, n7, n7, n7, n6, n1, n1, n1,
|
n1, n1, n1, n6, n7, n7, n7, n6, n1, n1, n1,
|
||||||
-- z=4, y=3
|
-- z=4, y=3
|
||||||
n1, n1, n1, n6, n10, n11, n11, n6, n1, n1, n1,
|
n1, n1, n1, n6, n10, n11, n11, n6, n1, n1, n1,
|
||||||
-- z=4, y=4
|
-- z=4, y=4
|
||||||
n1, n1, n1, n6, n11, n11, n11, n6, n1, n1, n1,
|
n1, n1, n1, n6, n11, n11, n11, n6, n1, n1, n1,
|
||||||
-- z=4, y=5
|
-- z=4, y=5
|
||||||
n1, n2, n4, n6, n11, n11, n11, n6, n4, n2, n1,
|
n1, n2, n4, n6, n11, n11, n11, n6, n4, n2, n1,
|
||||||
-- z=4, y=6
|
-- z=4, y=6
|
||||||
n1, n1, n2, n2, n6, n6, n6, n2, n2, n1, n1,
|
n1, n1, n2, n2, n6, n6, n6, n2, n2, n1, n1,
|
||||||
-- z=4, y=7
|
-- z=4, y=7
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=4, y=8
|
-- z=4, y=8
|
||||||
n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1,
|
n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=5, y=0
|
-- z=5, y=0
|
||||||
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
||||||
-- z=5, y=1
|
-- z=5, y=1
|
||||||
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
||||||
-- z=5, y=2
|
-- z=5, y=2
|
||||||
n1, n1, n1, n6, n7, n7, n7, n6, n1, n1, n1,
|
n1, n1, n1, n6, n7, n7, n7, n6, n1, n1, n1,
|
||||||
-- z=5, y=3
|
-- z=5, y=3
|
||||||
n1, n1, n1, n6, n11, n11, n12, n6, n1, n1, n1,
|
n1, n1, n1, n6, n11, n11, n12, n6, n1, n1, n1,
|
||||||
-- z=5, y=4
|
-- z=5, y=4
|
||||||
n1, n1, n1, n13, n11, n11, n11, n13, n1, n1, n1,
|
n1, n1, n1, n13, n11, n11, n11, n13, n1, n1, n1,
|
||||||
-- z=5, y=5
|
-- z=5, y=5
|
||||||
n2, n4, n4, n6, n11, n11, n11, n6, n4, n4, n2,
|
n2, n4, n4, n6, n11, n11, n11, n6, n4, n4, n2,
|
||||||
-- z=5, y=6
|
-- z=5, y=6
|
||||||
n1, n2, n2, n2, n6, n11, n6, n2, n2, n2, n1,
|
n1, n2, n2, n2, n6, n11, n6, n2, n2, n2, n1,
|
||||||
-- z=5, y=7
|
-- z=5, y=7
|
||||||
n1, n1, n2, n2, n2, n6, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n6, n2, n2, n2, n1, n1,
|
||||||
-- z=5, y=8
|
-- z=5, y=8
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
|
|
||||||
-- z=6, y=0
|
-- z=6, y=0
|
||||||
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
||||||
-- z=6, y=1
|
-- z=6, y=1
|
||||||
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
n1, n1, n1, n19, n19, n19, n19, n19, n1, n1, n1,
|
||||||
-- z=6, y=2
|
-- z=6, y=2
|
||||||
n1, n1, n1, n6, n7, n7, n7, n6, n1, n1, n1,
|
n1, n1, n1, n6, n7, n7, n7, n6, n1, n1, n1,
|
||||||
-- z=6, y=3
|
-- z=6, y=3
|
||||||
n1, n1, n1, n6, n16, n11, n17, n6, n1, n1, n1,
|
n1, n1, n1, n6, n16, n11, n17, n6, n1, n1, n1,
|
||||||
-- z=6, y=4
|
-- z=6, y=4
|
||||||
n1, n1, n1, n6, n18, n11, n11, n6, n1, n1, n1,
|
n1, n1, n1, n6, n18, n11, n11, n6, n1, n1, n1,
|
||||||
-- z=6, y=5
|
-- z=6, y=5
|
||||||
n1, n2, n4, n6, n11, n11, n11, n6, n4, n2, n1,
|
n1, n2, n4, n6, n11, n11, n11, n6, n4, n2, n1,
|
||||||
-- z=6, y=6
|
-- z=6, y=6
|
||||||
n1, n1, n2, n2, n6, n6, n6, n2, n2, n1, n1,
|
n1, n1, n2, n2, n6, n6, n6, n2, n2, n1, n1,
|
||||||
-- z=6, y=7
|
-- z=6, y=7
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=6, y=8
|
-- z=6, y=8
|
||||||
n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1,
|
n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=7, y=0
|
-- z=7, y=0
|
||||||
n1, n1, n1, n1, n19, n19, n19, n1, n1, n1, n1,
|
n1, n1, n1, n1, n19, n19, n19, n1, n1, n1, n1,
|
||||||
-- z=7, y=1
|
-- z=7, y=1
|
||||||
n1, n1, n1, n1, n19, n19, n19, n1, n1, n1, n1,
|
n1, n1, n1, n1, n19, n19, n19, n1, n1, n1, n1,
|
||||||
-- z=7, y=2
|
-- z=7, y=2
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=7, y=3
|
-- z=7, y=3
|
||||||
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n6, n6, n1, n1, n1, n1,
|
||||||
-- z=7, y=4
|
-- z=7, y=4
|
||||||
n1, n1, n1, n1, n6, n13, n6, n1, n1, n1, n1,
|
n1, n1, n1, n1, n6, n13, n6, n1, n1, n1, n1,
|
||||||
-- z=7, y=5
|
-- z=7, y=5
|
||||||
n1, n2, n4, n4, n6, n6, n6, n4, n4, n2, n1,
|
n1, n2, n4, n4, n6, n6, n6, n4, n4, n2, n1,
|
||||||
-- z=7, y=6
|
-- z=7, y=6
|
||||||
n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1,
|
||||||
-- z=7, y=7
|
-- z=7, y=7
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=7, y=8
|
-- z=7, y=8
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=8, y=0
|
-- z=8, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=1
|
-- z=8, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=2
|
-- z=8, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=3
|
-- z=8, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=4
|
-- z=8, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=5
|
-- z=8, y=5
|
||||||
n1, n2, n2, n4, n4, n4, n4, n4, n2, n2, n1,
|
n1, n2, n2, n4, n4, n4, n4, n4, n2, n2, n1,
|
||||||
-- z=8, y=6
|
-- z=8, y=6
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=8, y=7
|
-- z=8, y=7
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=8, y=8
|
-- z=8, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=9, y=0
|
-- z=9, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=1
|
-- z=9, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=2
|
-- z=9, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=3
|
-- z=9, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=4
|
-- z=9, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=5
|
-- z=9, y=5
|
||||||
n1, n1, n2, n2, n2, n4, n2, n2, n2, n1, n1,
|
n1, n1, n2, n2, n2, n4, n2, n2, n2, n1, n1,
|
||||||
-- z=9, y=6
|
-- z=9, y=6
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=7
|
-- z=9, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=8
|
-- z=9, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=10, y=0
|
-- z=10, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=1
|
-- z=10, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=2
|
-- z=10, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=3
|
-- z=10, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=4
|
-- z=10, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=5
|
-- z=10, y=5
|
||||||
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=6
|
-- z=10, y=6
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=7
|
-- z=10, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=8
|
-- z=10, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -9,276 +9,276 @@ return {
|
|||||||
center_pos = {x=6, y=2, z=6},
|
center_pos = {x=6, y=2, z=6},
|
||||||
data = {
|
data = {
|
||||||
-- z=0, y=0
|
-- z=0, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=1
|
-- z=0, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=2
|
-- z=0, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=3
|
-- z=0, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=4
|
-- z=0, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=5
|
-- z=0, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=6
|
-- z=0, y=6
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=7
|
-- z=0, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=8
|
-- z=0, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=9
|
-- z=0, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=1, y=0
|
-- z=1, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=1
|
-- z=1, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=2
|
-- z=1, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=3
|
-- z=1, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=4
|
-- z=1, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=5
|
-- z=1, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=6
|
-- z=1, y=6
|
||||||
n1, n1, n1, n3, n3, n3, n4, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n4, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=1, y=7
|
-- z=1, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=8
|
-- z=1, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=9
|
-- z=1, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=2, y=0
|
-- z=2, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=1
|
-- z=2, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=2
|
-- z=2, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=3
|
-- z=2, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=4
|
-- z=2, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=5
|
-- z=2, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=6
|
-- z=2, y=6
|
||||||
n1, n1, n3, n4, n4, n4, n4, n4, n4, n4, n3, n1, n1,
|
n1, n1, n3, n4, n4, n4, n4, n4, n4, n4, n3, n1, n1,
|
||||||
-- z=2, y=7
|
-- z=2, y=7
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=2, y=8
|
-- z=2, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=9
|
-- z=2, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=3, y=0
|
-- z=3, y=0
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=1
|
-- z=3, y=1
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=2
|
-- z=3, y=2
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=3
|
-- z=3, y=3
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=4
|
-- z=3, y=4
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=5
|
-- z=3, y=5
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=6
|
-- z=3, y=6
|
||||||
n1, n3, n4, n4, n4, n4, n5, n4, n4, n4, n4, n3, n1,
|
n1, n3, n4, n4, n4, n4, n5, n4, n4, n4, n4, n3, n1,
|
||||||
-- z=3, y=7
|
-- z=3, y=7
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=3, y=8
|
-- z=3, y=8
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
-- z=3, y=9
|
-- z=3, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=4, y=0
|
-- z=4, y=0
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=1
|
-- z=4, y=1
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=2
|
-- z=4, y=2
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=3
|
-- z=4, y=3
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=4
|
-- z=4, y=4
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=5
|
-- z=4, y=5
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=6
|
-- z=4, y=6
|
||||||
n1, n3, n4, n4, n4, n5, n5, n5, n4, n4, n4, n3, n1,
|
n1, n3, n4, n4, n4, n5, n5, n5, n4, n4, n4, n3, n1,
|
||||||
-- z=4, y=7
|
-- z=4, y=7
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=4, y=8
|
-- z=4, y=8
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=4, y=9
|
-- z=4, y=9
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=5, y=0
|
-- z=5, y=0
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=5, y=1
|
-- z=5, y=1
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=5, y=2
|
-- z=5, y=2
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=5, y=3
|
-- z=5, y=3
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=5, y=4
|
-- z=5, y=4
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=5, y=5
|
-- z=5, y=5
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=5, y=6
|
-- z=5, y=6
|
||||||
n1, n3, n4, n4, n5, n5, n5, n5, n5, n4, n4, n3, n1,
|
n1, n3, n4, n4, n5, n5, n5, n5, n5, n4, n4, n3, n1,
|
||||||
-- z=5, y=7
|
-- z=5, y=7
|
||||||
n1, n1, n3, n3, n3, n5, n5, n5, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n5, n5, n5, n3, n3, n3, n1, n1,
|
||||||
-- z=5, y=8
|
-- z=5, y=8
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=5, y=9
|
-- z=5, y=9
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=6, y=0
|
-- z=6, y=0
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=6, y=1
|
-- z=6, y=1
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=6, y=2
|
-- z=6, y=2
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=6, y=3
|
-- z=6, y=3
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=6, y=4
|
-- z=6, y=4
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=6, y=5
|
-- z=6, y=5
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=6, y=6
|
-- z=6, y=6
|
||||||
n3, n4, n4, n5, n5, n5, n5, n5, n5, n5, n4, n4, n3,
|
n3, n4, n4, n5, n5, n5, n5, n5, n5, n5, n4, n4, n3,
|
||||||
-- z=6, y=7
|
-- z=6, y=7
|
||||||
n1, n3, n3, n3, n3, n5, n5, n5, n3, n3, n3, n3, n1,
|
n1, n3, n3, n3, n3, n5, n5, n5, n3, n3, n3, n3, n1,
|
||||||
-- z=6, y=8
|
-- z=6, y=8
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=6, y=9
|
-- z=6, y=9
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
|
|
||||||
-- z=7, y=0
|
-- z=7, y=0
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=7, y=1
|
-- z=7, y=1
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=7, y=2
|
-- z=7, y=2
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=7, y=3
|
-- z=7, y=3
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=7, y=4
|
-- z=7, y=4
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=7, y=5
|
-- z=7, y=5
|
||||||
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n5, n5, n5, n5, n5, n1, n1, n1,
|
||||||
-- z=7, y=6
|
-- z=7, y=6
|
||||||
n1, n3, n4, n4, n5, n5, n5, n5, n5, n4, n4, n3, n1,
|
n1, n3, n4, n4, n5, n5, n5, n5, n5, n4, n4, n3, n1,
|
||||||
-- z=7, y=7
|
-- z=7, y=7
|
||||||
n1, n1, n3, n3, n3, n5, n5, n5, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n5, n5, n5, n3, n3, n3, n1, n1,
|
||||||
-- z=7, y=8
|
-- z=7, y=8
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=7, y=9
|
-- z=7, y=9
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=8, y=0
|
-- z=8, y=0
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=1
|
-- z=8, y=1
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=2
|
-- z=8, y=2
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=3
|
-- z=8, y=3
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=4
|
-- z=8, y=4
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=5
|
-- z=8, y=5
|
||||||
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n5, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=6
|
-- z=8, y=6
|
||||||
n1, n3, n4, n4, n4, n5, n5, n5, n4, n4, n4, n3, n1,
|
n1, n3, n4, n4, n4, n5, n5, n5, n4, n4, n4, n3, n1,
|
||||||
-- z=8, y=7
|
-- z=8, y=7
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=8, y=8
|
-- z=8, y=8
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=8, y=9
|
-- z=8, y=9
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=9, y=0
|
-- z=9, y=0
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=1
|
-- z=9, y=1
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=2
|
-- z=9, y=2
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=3
|
-- z=9, y=3
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=4
|
-- z=9, y=4
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=5
|
-- z=9, y=5
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=6
|
-- z=9, y=6
|
||||||
n1, n3, n4, n4, n4, n4, n5, n4, n4, n4, n4, n3, n1,
|
n1, n3, n4, n4, n4, n4, n5, n4, n4, n4, n4, n3, n1,
|
||||||
-- z=9, y=7
|
-- z=9, y=7
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=9, y=8
|
-- z=9, y=8
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
-- z=9, y=9
|
-- z=9, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=10, y=0
|
-- z=10, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=1
|
-- z=10, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=2
|
-- z=10, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=3
|
-- z=10, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=4
|
-- z=10, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=5
|
-- z=10, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=6
|
-- z=10, y=6
|
||||||
n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n3, n1, n1,
|
n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n3, n1, n1,
|
||||||
-- z=10, y=7
|
-- z=10, y=7
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=10, y=8
|
-- z=10, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=9
|
-- z=10, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=11, y=0
|
-- z=11, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=1
|
-- z=11, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=2
|
-- z=11, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=3
|
-- z=11, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=4
|
-- z=11, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=5
|
-- z=11, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=6
|
-- z=11, y=6
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=11, y=7
|
-- z=11, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=8
|
-- z=11, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=9
|
-- z=11, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=12, y=0
|
-- z=12, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=1
|
-- z=12, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=2
|
-- z=12, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=3
|
-- z=12, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=4
|
-- z=12, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=5
|
-- z=12, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=6
|
-- z=12, y=6
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=7
|
-- z=12, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=8
|
-- z=12, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=9
|
-- z=12, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -33,277 +33,277 @@ local schematic = {
|
|||||||
center_pos = {x=6, y=2, z=6},
|
center_pos = {x=6, y=2, z=6},
|
||||||
data = {
|
data = {
|
||||||
-- z=0, y=0
|
-- z=0, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=1
|
-- z=0, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=2
|
-- z=0, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=3
|
-- z=0, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=4
|
-- z=0, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=5
|
-- z=0, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=6
|
-- z=0, y=6
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=7
|
-- z=0, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=8
|
-- z=0, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=0, y=9
|
-- z=0, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=1, y=0
|
-- z=1, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=1
|
-- z=1, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=2
|
-- z=1, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=3
|
-- z=1, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=4
|
-- z=1, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=5
|
-- z=1, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=6
|
-- z=1, y=6
|
||||||
n1, n1, n1, n3, n3, n3, n4, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n4, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=1, y=7
|
-- z=1, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=8
|
-- z=1, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=1, y=9
|
-- z=1, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=2, y=0
|
-- z=2, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=1
|
-- z=2, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=2
|
-- z=2, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=3
|
-- z=2, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=4
|
-- z=2, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=5
|
-- z=2, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=6
|
-- z=2, y=6
|
||||||
n1, n1, n3, n4, n4, n4, n4, n4, n4, n4, n3, n1, n1,
|
n1, n1, n3, n4, n4, n4, n4, n4, n4, n4, n3, n1, n1,
|
||||||
-- z=2, y=7
|
-- z=2, y=7
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=2, y=8
|
-- z=2, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=2, y=9
|
-- z=2, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=3, y=0
|
-- z=3, y=0
|
||||||
n1, n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=1
|
-- z=3, y=1
|
||||||
n1, n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=2
|
-- z=3, y=2
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=3
|
-- z=3, y=3
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=4
|
-- z=3, y=4
|
||||||
n1, n1, n1, n1, n1, n5, n6, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n6, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=5
|
-- z=3, y=5
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=3, y=6
|
-- z=3, y=6
|
||||||
n1, n3, n4, n4, n4, n4, n5, n4, n4, n4, n4, n3, n1,
|
n1, n3, n4, n4, n4, n4, n5, n4, n4, n4, n4, n3, n1,
|
||||||
-- z=3, y=7
|
-- z=3, y=7
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=3, y=8
|
-- z=3, y=8
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
-- z=3, y=9
|
-- z=3, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=4, y=0
|
-- z=4, y=0
|
||||||
n1, n1, n1, n1, n2, n2, n2, n2, n2, n12, n22, n1, n1,
|
n1, n1, n1, n1, n2, n2, n2, n2, n2, n12, n22, n1, n1,
|
||||||
-- z=4, y=1
|
-- z=4, y=1
|
||||||
n1, n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
n1, n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
||||||
-- z=4, y=2
|
-- z=4, y=2
|
||||||
n1, n1, n1, n1, n5, n7, n7, n7, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n7, n7, n7, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=3
|
-- z=4, y=3
|
||||||
n1, n1, n1, n1, n5, n8, n9, n9, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n8, n9, n9, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=4
|
-- z=4, y=4
|
||||||
n1, n1, n1, n1, n5, n10, n9, n9, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n10, n9, n9, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=5
|
-- z=4, y=5
|
||||||
n1, n1, n1, n1, n5, n5, n9, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n9, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=4, y=6
|
-- z=4, y=6
|
||||||
n1, n3, n4, n4, n4, n5, n5, n5, n4, n4, n4, n3, n1,
|
n1, n3, n4, n4, n4, n5, n5, n5, n4, n4, n4, n3, n1,
|
||||||
-- z=4, y=7
|
-- z=4, y=7
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=4, y=8
|
-- z=4, y=8
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=4, y=9
|
-- z=4, y=9
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=5, y=0
|
-- z=5, y=0
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=5, y=1
|
-- z=5, y=1
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n20, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n20, n1, n1,
|
||||||
-- z=5, y=2
|
-- z=5, y=2
|
||||||
n1, n1, n1, n5, n7, n7, n7, n7, n7, n5, n1, n1, n1,
|
n1, n1, n1, n5, n7, n7, n7, n7, n7, n5, n1, n1, n1,
|
||||||
-- z=5, y=3
|
-- z=5, y=3
|
||||||
n1, n1, n1, n5, n9, n9, n9, n9, n9, n5, n1, n1, n1,
|
n1, n1, n1, n5, n9, n9, n9, n9, n9, n5, n1, n1, n1,
|
||||||
-- z=5, y=4
|
-- z=5, y=4
|
||||||
n1, n1, n1, n5, n9, n9, n9, n9, n9, n5, n1, n1, n1,
|
n1, n1, n1, n5, n9, n9, n9, n9, n9, n5, n1, n1, n1,
|
||||||
-- z=5, y=5
|
-- z=5, y=5
|
||||||
n1, n1, n1, n5, n5, n9, n9, n9, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n9, n9, n9, n5, n5, n1, n1, n1,
|
||||||
-- z=5, y=6
|
-- z=5, y=6
|
||||||
n1, n3, n4, n4, n5, n9, n9, n9, n5, n4, n4, n3, n1,
|
n1, n3, n4, n4, n5, n9, n9, n9, n5, n4, n4, n3, n1,
|
||||||
-- z=5, y=7
|
-- z=5, y=7
|
||||||
n1, n1, n3, n3, n3, n5, n5, n5, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n5, n5, n5, n3, n3, n3, n1, n1,
|
||||||
-- z=5, y=8
|
-- z=5, y=8
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=5, y=9
|
-- z=5, y=9
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=6, y=0
|
-- z=6, y=0
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=6, y=1
|
-- z=6, y=1
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=6, y=2
|
-- z=6, y=2
|
||||||
n1, n1, n1, n5, n7, n7, n7, n7, n7, n7, n12, n1, n1,
|
n1, n1, n1, n5, n7, n7, n7, n7, n7, n7, n12, n1, n1,
|
||||||
-- z=6, y=3
|
-- z=6, y=3
|
||||||
n1, n1, n1, n5, n9, n9, n9, n9, n9, n13, n9, n9, n1,
|
n1, n1, n1, n5, n9, n9, n9, n9, n9, n13, n9, n9, n1,
|
||||||
-- z=6, y=4
|
-- z=6, y=4
|
||||||
n1, n1, n1, n6, n9, n9, n9, n9, n9, n14, n9, n9, n1,
|
n1, n1, n1, n6, n9, n9, n9, n9, n9, n14, n9, n9, n1,
|
||||||
-- z=6, y=5
|
-- z=6, y=5
|
||||||
n1, n1, n1, n5, n9, n9, n9, n9, n9, n5, n1, n1, n1,
|
n1, n1, n1, n5, n9, n9, n9, n9, n9, n5, n1, n1, n1,
|
||||||
-- z=6, y=6
|
-- z=6, y=6
|
||||||
n3, n4, n4, n5, n5, n9, n9, n9, n5, n5, n4, n4, n3,
|
n3, n4, n4, n5, n5, n9, n9, n9, n5, n5, n4, n4, n3,
|
||||||
-- z=6, y=7
|
-- z=6, y=7
|
||||||
n1, n3, n3, n3, n3, n5, n5, n5, n3, n3, n3, n3, n1,
|
n1, n3, n3, n3, n3, n5, n5, n5, n3, n3, n3, n3, n1,
|
||||||
-- z=6, y=8
|
-- z=6, y=8
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=6, y=9
|
-- z=6, y=9
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
|
|
||||||
-- z=7, y=0
|
-- z=7, y=0
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n1, n1, n1,
|
||||||
-- z=7, y=1
|
-- z=7, y=1
|
||||||
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n21, n1, n1,
|
n1, n1, n1, n2, n2, n2, n2, n2, n2, n2, n21, n1, n1,
|
||||||
-- z=7, y=2
|
-- z=7, y=2
|
||||||
n1, n1, n1, n5, n7, n7, n7, n7, n7, n5, n1, n1, n1,
|
n1, n1, n1, n5, n7, n7, n7, n7, n7, n5, n1, n1, n1,
|
||||||
-- z=7, y=3
|
-- z=7, y=3
|
||||||
n1, n1, n1, n5, n15, n9, n9, n9, n9, n5, n1, n1, n1,
|
n1, n1, n1, n5, n15, n9, n9, n9, n9, n5, n1, n1, n1,
|
||||||
-- z=7, y=4
|
-- z=7, y=4
|
||||||
n1, n1, n1, n5, n9, n9, n9, n9, n9, n5, n1, n1, n1,
|
n1, n1, n1, n5, n9, n9, n9, n9, n9, n5, n1, n1, n1,
|
||||||
-- z=7, y=5
|
-- z=7, y=5
|
||||||
n1, n1, n1, n5, n5, n9, n9, n9, n5, n5, n1, n1, n1,
|
n1, n1, n1, n5, n5, n9, n9, n9, n5, n5, n1, n1, n1,
|
||||||
-- z=7, y=6
|
-- z=7, y=6
|
||||||
n1, n3, n4, n4, n5, n9, n9, n9, n5, n4, n4, n3, n1,
|
n1, n3, n4, n4, n5, n9, n9, n9, n5, n4, n4, n3, n1,
|
||||||
-- z=7, y=7
|
-- z=7, y=7
|
||||||
n1, n1, n3, n3, n3, n5, n5, n5, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n5, n5, n5, n3, n3, n3, n1, n1,
|
||||||
-- z=7, y=8
|
-- z=7, y=8
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=7, y=9
|
-- z=7, y=9
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=8, y=0
|
-- z=8, y=0
|
||||||
n1, n1, n1, n1, n2, n2, n2, n2, n2, n12, n22, n1, n1,
|
n1, n1, n1, n1, n2, n2, n2, n2, n2, n12, n22, n1, n1,
|
||||||
-- z=8, y=1
|
-- z=8, y=1
|
||||||
n1, n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
n1, n1, n1, n1, n2, n2, n2, n2, n2, n1, n1, n1, n1,
|
||||||
-- z=8, y=2
|
-- z=8, y=2
|
||||||
n1, n1, n1, n1, n5, n7, n7, n7, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n7, n7, n7, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=3
|
-- z=8, y=3
|
||||||
n1, n1, n1, n1, n5, n16, n17, n18, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n16, n17, n18, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=4
|
-- z=8, y=4
|
||||||
n1, n1, n1, n1, n5, n9, n9, n19, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n9, n9, n19, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=5
|
-- z=8, y=5
|
||||||
n1, n1, n1, n1, n5, n5, n9, n5, n5, n1, n1, n1, n1,
|
n1, n1, n1, n1, n5, n5, n9, n5, n5, n1, n1, n1, n1,
|
||||||
-- z=8, y=6
|
-- z=8, y=6
|
||||||
n1, n3, n4, n4, n4, n5, n5, n5, n4, n4, n4, n3, n1,
|
n1, n3, n4, n4, n4, n5, n5, n5, n4, n4, n4, n3, n1,
|
||||||
-- z=8, y=7
|
-- z=8, y=7
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=8, y=8
|
-- z=8, y=8
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=8, y=9
|
-- z=8, y=9
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=9, y=0
|
-- z=9, y=0
|
||||||
n1, n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=1
|
-- z=9, y=1
|
||||||
n1, n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n2, n2, n2, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=2
|
-- z=9, y=2
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=3
|
-- z=9, y=3
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=4
|
-- z=9, y=4
|
||||||
n1, n1, n1, n1, n1, n5, n6, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n6, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=5
|
-- z=9, y=5
|
||||||
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n5, n5, n5, n1, n1, n1, n1, n1,
|
||||||
-- z=9, y=6
|
-- z=9, y=6
|
||||||
n1, n3, n4, n4, n4, n4, n5, n4, n4, n4, n4, n3, n1,
|
n1, n3, n4, n4, n4, n4, n5, n4, n4, n4, n4, n3, n1,
|
||||||
-- z=9, y=7
|
-- z=9, y=7
|
||||||
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
n1, n1, n3, n3, n3, n3, n3, n3, n3, n3, n3, n1, n1,
|
||||||
-- z=9, y=8
|
-- z=9, y=8
|
||||||
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
n1, n1, n1, n1, n3, n3, n3, n3, n3, n1, n1, n1, n1,
|
||||||
-- z=9, y=9
|
-- z=9, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=10, y=0
|
-- z=10, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=1
|
-- z=10, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=2
|
-- z=10, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=3
|
-- z=10, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=4
|
-- z=10, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=5
|
-- z=10, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=6
|
-- z=10, y=6
|
||||||
n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n3, n1, n1,
|
n1, n1, n3, n4, n4, n4, n4, n4, n4, n3, n3, n1, n1,
|
||||||
-- z=10, y=7
|
-- z=10, y=7
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=10, y=8
|
-- z=10, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=10, y=9
|
-- z=10, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=11, y=0
|
-- z=11, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=1
|
-- z=11, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=2
|
-- z=11, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=3
|
-- z=11, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=4
|
-- z=11, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=5
|
-- z=11, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=6
|
-- z=11, y=6
|
||||||
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
n1, n1, n1, n3, n3, n3, n3, n3, n3, n3, n1, n1, n1,
|
||||||
-- z=11, y=7
|
-- z=11, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=8
|
-- z=11, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=11, y=9
|
-- z=11, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
|
|
||||||
-- z=12, y=0
|
-- z=12, y=0
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=1
|
-- z=12, y=1
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=2
|
-- z=12, y=2
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=3
|
-- z=12, y=3
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=4
|
-- z=12, y=4
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=5
|
-- z=12, y=5
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=6
|
-- z=12, y=6
|
||||||
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n3, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=7
|
-- z=12, y=7
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=8
|
-- z=12, y=8
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
-- z=12, y=9
|
-- z=12, y=9
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -56,7 +56,7 @@ local stem_on_place = function(itemstack, placer, pointed_thing)
|
|||||||
local newnode= {name = itemstack:get_name(), param2 = new_param2, param1=0}
|
local newnode= {name = itemstack:get_name(), param2 = new_param2, param1=0}
|
||||||
local oldnode= minetest.get_node(pt.above)
|
local oldnode= minetest.get_node(pt.above)
|
||||||
minetest.add_node(pt.above, newnode)
|
minetest.add_node(pt.above, newnode)
|
||||||
|
|
||||||
-- Run script hook
|
-- Run script hook
|
||||||
local take_item = true
|
local take_item = true
|
||||||
for _, callback in ipairs(core.registered_on_placenodes) do
|
for _, callback in ipairs(core.registered_on_placenodes) do
|
||||||
@ -69,7 +69,7 @@ local stem_on_place = function(itemstack, placer, pointed_thing)
|
|||||||
take_item = false
|
take_item = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not minetest.is_creative_enabled(placer:get_player_name()) and take_item then
|
if not minetest.is_creative_enabled(placer:get_player_name()) and take_item then
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
end
|
end
|
||||||
@ -119,7 +119,7 @@ minetest.register_craft({
|
|||||||
local register_spindlestem_type = function(item_suffix, colour_name, colour_code, light_level, extract_color_group)
|
local register_spindlestem_type = function(item_suffix, colour_name, colour_code, light_level, extract_color_group)
|
||||||
local cap_item = "df_trees:spindlestem_cap_"..item_suffix
|
local cap_item = "df_trees:spindlestem_cap_"..item_suffix
|
||||||
local cap_item_harvested = "df_trees:spindlestem_cap_harvested_"..item_suffix
|
local cap_item_harvested = "df_trees:spindlestem_cap_harvested_"..item_suffix
|
||||||
|
|
||||||
local cap_def = {
|
local cap_def = {
|
||||||
description = S("@1 Spindlestem Cap", colour_name),
|
description = S("@1 Spindlestem Cap", colour_name),
|
||||||
is_ground_content = false,
|
is_ground_content = false,
|
||||||
@ -151,7 +151,7 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
|
|||||||
},
|
},
|
||||||
_mcl_blast_resistance = 2,
|
_mcl_blast_resistance = 2,
|
||||||
_mcl_hardness = 2,
|
_mcl_hardness = 2,
|
||||||
|
|
||||||
drop = {
|
drop = {
|
||||||
-- Maximum number of items to drop
|
-- Maximum number of items to drop
|
||||||
max_items = 1,
|
max_items = 1,
|
||||||
@ -175,7 +175,7 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
on_place = stem_on_place,
|
on_place = stem_on_place,
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
@ -185,7 +185,7 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
|
|||||||
delay = growth_delay() -- compatibility code to ensure no crash for previous version
|
delay = growth_delay() -- compatibility code to ensure no crash for previous version
|
||||||
end
|
end
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
|
|
||||||
while height > 0 and elapsed >= delay do
|
while height > 0 and elapsed >= delay do
|
||||||
elapsed = elapsed - delay
|
elapsed = elapsed - delay
|
||||||
local this_pos = pos
|
local this_pos = pos
|
||||||
@ -200,7 +200,7 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
|
|||||||
minetest.set_node(pos, {name=cap_item, param2 = node.param2})
|
minetest.set_node(pos, {name=cap_item, param2 = node.param2})
|
||||||
height = height - 1
|
height = height - 1
|
||||||
end
|
end
|
||||||
|
|
||||||
if height > 0 then
|
if height > 0 then
|
||||||
meta = minetest.get_meta(pos)
|
meta = minetest.get_meta(pos)
|
||||||
meta:set_int("spindlestem_to_grow", height)
|
meta:set_int("spindlestem_to_grow", height)
|
||||||
@ -209,7 +209,7 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
|
|||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
local cap_def_harvested = {}
|
local cap_def_harvested = {}
|
||||||
for key, val in pairs(cap_def) do
|
for key, val in pairs(cap_def) do
|
||||||
cap_def_harvested[key] = val
|
cap_def_harvested[key] = val
|
||||||
@ -221,7 +221,7 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
|
|||||||
cap_def_harvested.drop = nil -- harvested caps shouldn't drop spawn
|
cap_def_harvested.drop = nil -- harvested caps shouldn't drop spawn
|
||||||
cap_def_harvested.on_timer = nil -- harvested caps shouldn't grow, just in case a timer and node metadata are set up where it's placed
|
cap_def_harvested.on_timer = nil -- harvested caps shouldn't grow, just in case a timer and node metadata are set up where it's placed
|
||||||
cap_def_harvested.groups.not_in_creative_inventory = nil
|
cap_def_harvested.groups.not_in_creative_inventory = nil
|
||||||
|
|
||||||
minetest.register_node(cap_item, cap_def)
|
minetest.register_node(cap_item, cap_def)
|
||||||
minetest.register_node(cap_item_harvested, cap_def_harvested)
|
minetest.register_node(cap_item_harvested, cap_def_harvested)
|
||||||
|
|
||||||
@ -230,16 +230,16 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
|
|||||||
recipe = cap_item_harvested,
|
recipe = cap_item_harvested,
|
||||||
burntime = 10,
|
burntime = 10,
|
||||||
})
|
})
|
||||||
|
|
||||||
if glass_bottle and light_level > 0 then
|
if glass_bottle and light_level > 0 then
|
||||||
local tex = "dfcaverns_vessels_glowing_liquid.png^[multiply:#"..colour_code.."^"..df_dependencies.texture_glass_bottle
|
local tex = "dfcaverns_vessels_glowing_liquid.png^[multiply:#"..colour_code.."^"..df_dependencies.texture_glass_bottle
|
||||||
local new_light = light_level + math.floor((minetest.LIGHT_MAX-light_level)/2)
|
local new_light = light_level + math.floor((minetest.LIGHT_MAX-light_level)/2)
|
||||||
|
|
||||||
local groups = {vessel = 1, dig_immediate = 3, attached_node = 1, material_glass = 1, destroy_by_lava_flow=1}
|
local groups = {vessel = 1, dig_immediate = 3, attached_node = 1, material_glass = 1, destroy_by_lava_flow=1}
|
||||||
if extract_color_group then
|
if extract_color_group then
|
||||||
groups[extract_color_group] = 1
|
groups[extract_color_group] = 1
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node("df_trees:glowing_bottle_"..item_suffix, {
|
minetest.register_node("df_trees:glowing_bottle_"..item_suffix, {
|
||||||
description = S("@1 Spindlestem Extract", colour_name),
|
description = S("@1 Spindlestem Extract", colour_name),
|
||||||
drawtype = "plantlike",
|
drawtype = "plantlike",
|
||||||
@ -261,7 +261,7 @@ local register_spindlestem_type = function(item_suffix, colour_name, colour_code
|
|||||||
_mcl_blast_resistance = 0.5,
|
_mcl_blast_resistance = 0.5,
|
||||||
_mcl_hardness = 0.5,
|
_mcl_hardness = 0.5,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_craft( {
|
minetest.register_craft( {
|
||||||
output = "df_trees:glowing_bottle_"..item_suffix.." 3",
|
output = "df_trees:glowing_bottle_"..item_suffix.." 3",
|
||||||
type = "shapeless",
|
type = "shapeless",
|
||||||
@ -305,7 +305,7 @@ minetest.register_node("df_trees:spindlestem_seedling", {
|
|||||||
},
|
},
|
||||||
_mcl_blast_resistance = 0.2,
|
_mcl_blast_resistance = 0.2,
|
||||||
_mcl_hardness = 0.2,
|
_mcl_hardness = 0.2,
|
||||||
|
|
||||||
on_place = stem_on_place,
|
on_place = stem_on_place,
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
if df_trees.spindlestem_growth_permitted(pos) then
|
if df_trees.spindlestem_growth_permitted(pos) then
|
||||||
@ -315,7 +315,7 @@ minetest.register_node("df_trees:spindlestem_seedling", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
@ -328,8 +328,8 @@ df_trees.spawn_spindlestem = function(pos)
|
|||||||
local cap_item = minetest.get_name_from_content_id(get_spindlestem_cap_type(pos))
|
local cap_item = minetest.get_name_from_content_id(get_spindlestem_cap_type(pos))
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
minetest.set_node(pos, {name=cap_item, param2 = node.param2})
|
minetest.set_node(pos, {name=cap_item, param2 = node.param2})
|
||||||
local disp = {x=3, y=3, z=3}
|
local range = {x=3, y=3, z=3}
|
||||||
local nearby = minetest.find_nodes_in_area(vector.add(pos, disp), vector.subtract(pos, disp), {"group:spindlestem"})
|
local nearby = minetest.find_nodes_in_area(vector.add(pos, range), vector.subtract(pos, range), {"group:spindlestem"})
|
||||||
local count = #nearby
|
local count = #nearby
|
||||||
local height = math.random(1,3)
|
local height = math.random(1,3)
|
||||||
if count > 10 then height = height + 2 end -- if there are a lot of nearby spindlestems, grow taller
|
if count > 10 then height = height + 2 end -- if there are a lot of nearby spindlestems, grow taller
|
||||||
@ -353,12 +353,12 @@ local c_stem = minetest.get_content_id("df_trees:spindlestem_stem")
|
|||||||
|
|
||||||
df_trees.spawn_spindlestem_vm = function(vi, area, data, data_param2, c_cap)
|
df_trees.spawn_spindlestem_vm = function(vi, area, data, data_param2, c_cap)
|
||||||
if data[vi] ~= c_air then return end
|
if data[vi] ~= c_air then return end
|
||||||
|
|
||||||
if c_cap == nil then
|
if c_cap == nil then
|
||||||
-- note: this won't account for rock removed by subterrane, so may not be entirely accurate. Good enough!
|
-- note: this won't account for rock removed by subterrane, so may not be entirely accurate. Good enough!
|
||||||
c_cap = get_spindlestem_cap_type(area:position(vi))
|
c_cap = get_spindlestem_cap_type(area:position(vi))
|
||||||
end
|
end
|
||||||
|
|
||||||
local stem_height = math.random(1,3)
|
local stem_height = math.random(1,3)
|
||||||
local param2 = math.random(1,4)-1
|
local param2 = math.random(1,4)-1
|
||||||
local i = 0
|
local i = 0
|
||||||
@ -396,7 +396,7 @@ get_spindlestem_cap_type = function(pos)
|
|||||||
if minetest.find_node_near(pos, 15, "group:goblin_cap") then
|
if minetest.find_node_near(pos, 15, "group:goblin_cap") then
|
||||||
return c_red
|
return c_red
|
||||||
end
|
end
|
||||||
|
|
||||||
local iron = minetest.find_node_near(pos, 5, iron_nodes)
|
local iron = minetest.find_node_near(pos, 5, iron_nodes)
|
||||||
local copper = minetest.find_node_near(pos, 5, copper_nodes)
|
local copper = minetest.find_node_near(pos, 5, copper_nodes)
|
||||||
local mese = minetest.find_node_near(pos, 5, mese_nodes)
|
local mese = minetest.find_node_near(pos, 5, mese_nodes)
|
||||||
@ -411,5 +411,5 @@ get_spindlestem_cap_type = function(pos)
|
|||||||
else
|
else
|
||||||
local pick = math.random(1, #possibilities)
|
local pick = math.random(1, #possibilities)
|
||||||
return possibilities[pick]
|
return possibilities[pick]
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -83,7 +83,7 @@ minetest.register_node("df_trees:spore_tree_hyphae", {
|
|||||||
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, spore_tree_hyphae = 1,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30, compostability=30},
|
groups = {snappy = 3, leafdecay = 3, flammable = 2, leaves = 1, spore_tree_hyphae = 1,handy=1, hoey=1, shearsy=1, swordy=1, deco_block=1, dig_by_piston=1, fire_encouragement=15, fire_flammability=30, compostability=30},
|
||||||
walkable = false,
|
walkable = false,
|
||||||
climbable = true,
|
climbable = true,
|
||||||
|
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
node_box = {
|
node_box = {
|
||||||
@ -114,19 +114,19 @@ minetest.register_node("df_trees:spore_tree_fruiting_body", {
|
|||||||
climbable = true,
|
climbable = true,
|
||||||
_mcl_blast_resistance = 0.7,
|
_mcl_blast_resistance = 0.7,
|
||||||
_mcl_hardness = 0.7,
|
_mcl_hardness = 0.7,
|
||||||
|
|
||||||
drawtype = "nodebox",
|
drawtype = "nodebox",
|
||||||
paramtype = "light",
|
paramtype = "light",
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
{-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625},
|
{-0.0625, -0.5, -0.0625, 0.0625, 0.5, 0.0625},
|
||||||
{-0.0625, -0.0625, -0.5, 0.0625, 0.0625, 0.5},
|
{-0.0625, -0.0625, -0.5, 0.0625, 0.0625, 0.5},
|
||||||
{-0.5, -0.0625, -0.0625, 0.5, 0.0625, 0.0625},
|
{-0.5, -0.0625, -0.0625, 0.5, 0.0625, 0.0625},
|
||||||
{-0.25, -0.25, -0.25, 0.25, 0.25, 0.25},
|
{-0.25, -0.25, -0.25, 0.25, 0.25, 0.25},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
drop = {
|
drop = {
|
||||||
max_items = 1,
|
max_items = 1,
|
||||||
items = {
|
items = {
|
||||||
@ -148,7 +148,7 @@ minetest.register_node("df_trees:spore_tree_fruiting_body", {
|
|||||||
df_dependencies.register_leafdecay({
|
df_dependencies.register_leafdecay({
|
||||||
trunks = {"df_trees:spore_tree"},
|
trunks = {"df_trees:spore_tree"},
|
||||||
leaves = {"df_trees:spore_tree_hyphae", "df_trees:spore_tree_fruiting_body"},
|
leaves = {"df_trees:spore_tree_hyphae", "df_trees:spore_tree_fruiting_body"},
|
||||||
radius = 3,
|
radius = 3,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("df_trees:spore_tree_sapling", {
|
minetest.register_node("df_trees:spore_tree_sapling", {
|
||||||
@ -185,7 +185,7 @@ minetest.register_node("df_trees:spore_tree_sapling", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
@ -201,16 +201,14 @@ local c_spore_pod = minetest.get_content_id("df_trees:spore_tree_fruiting_body")
|
|||||||
local c_tree = minetest.get_content_id("df_trees:spore_tree")
|
local c_tree = minetest.get_content_id("df_trees:spore_tree")
|
||||||
local c_spore_frond = minetest.get_content_id("df_trees:spore_tree_hyphae")
|
local c_spore_frond = minetest.get_content_id("df_trees:spore_tree_hyphae")
|
||||||
|
|
||||||
df_trees.spawn_spore_tree_vm = function(vi, area, data, data_param2, height, size, iters, has_fruiting_bodies)
|
df_trees.spawn_spore_tree_vm = function(vi_spawn, area, data, data_param2, height, size, iters, has_fruiting_bodies)
|
||||||
if height == nil then height = math.random(3,6) end
|
if height == nil then height = math.random(3,6) end
|
||||||
if size == nil then size = 2 end
|
if size == nil then size = 2 end
|
||||||
if iters == nil then iters = 10 end
|
if iters == nil then iters = 10 end
|
||||||
if has_fruiting_bodies == nil then has_fruiting_bodies = math.random() < 0.5 end
|
if has_fruiting_bodies == nil then has_fruiting_bodies = math.random() < 0.5 end
|
||||||
|
|
||||||
local pos = area:position(vi)
|
local pos = area:position(vi_spawn)
|
||||||
local x, y, z = pos.x, pos.y, pos.z
|
local x, y, z = pos.x, pos.y, pos.z
|
||||||
|
|
||||||
local has_fruiting_bodies = true
|
|
||||||
|
|
||||||
-- Trunk
|
-- Trunk
|
||||||
for yy = y, y + height - 1 do
|
for yy = y, y + height - 1 do
|
||||||
|
@ -57,7 +57,7 @@ local stal_on_place = function(itemstack, placer, pointed_thing)
|
|||||||
local newnode= {name = itemstack:get_name(), param2 = new_param2, param1=0}
|
local newnode= {name = itemstack:get_name(), param2 = new_param2, param1=0}
|
||||||
local oldnode= minetest.get_node(pt.above)
|
local oldnode= minetest.get_node(pt.above)
|
||||||
minetest.add_node(pt.above, {name = itemstack:get_name(), param2 = new_param2})
|
minetest.add_node(pt.above, {name = itemstack:get_name(), param2 = new_param2})
|
||||||
|
|
||||||
-- Run script hook
|
-- Run script hook
|
||||||
local take_item = true
|
local take_item = true
|
||||||
for _, callback in ipairs(core.registered_on_placenodes) do
|
for _, callback in ipairs(core.registered_on_placenodes) do
|
||||||
@ -70,7 +70,7 @@ local stal_on_place = function(itemstack, placer, pointed_thing)
|
|||||||
take_item = false
|
take_item = false
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if not minetest.is_creative_enabled(placer:get_player_name()) and take_item then
|
if not minetest.is_creative_enabled(placer:get_player_name()) and take_item then
|
||||||
itemstack:take_item()
|
itemstack:take_item()
|
||||||
end
|
end
|
||||||
@ -85,11 +85,11 @@ local stal_box_4 = {{-0.375+x_disp, -0.5, -0.375+z_disp, 0.375+x_disp, 0.5, 0.37
|
|||||||
local torchspine_list = {"df_trees:torchspine_1","df_trees:torchspine_2","df_trees:torchspine_3","df_trees:torchspine_4"}
|
local torchspine_list = {"df_trees:torchspine_1","df_trees:torchspine_2","df_trees:torchspine_3","df_trees:torchspine_4"}
|
||||||
local grow_torchspine = function(pos)
|
local grow_torchspine = function(pos)
|
||||||
local param2 = minetest.get_node(pos).param2
|
local param2 = minetest.get_node(pos).param2
|
||||||
|
|
||||||
if param2 > 3 then
|
if param2 > 3 then
|
||||||
return -- tipped over, don't grow
|
return -- tipped over, don't grow
|
||||||
end
|
end
|
||||||
|
|
||||||
local node_above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
|
local node_above = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
|
||||||
local node_above_def = minetest.registered_nodes[node_above.name]
|
local node_above_def = minetest.registered_nodes[node_above.name]
|
||||||
if not node_above_def.buildable_to then
|
if not node_above_def.buildable_to then
|
||||||
@ -151,7 +151,7 @@ minetest.register_node("df_trees:torchspine_1", {
|
|||||||
minetest.swap_node(pos, {name = "df_trees:torchspine_1_lit", param2 = node.param2})
|
minetest.swap_node(pos, {name = "df_trees:torchspine_1_lit", param2 = node.param2})
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
local above_def = minetest.registered_nodes[minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z}).name]
|
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 then
|
if above_def and above_def.buildable_to then
|
||||||
@ -160,7 +160,7 @@ minetest.register_node("df_trees:torchspine_1", {
|
|||||||
end
|
end
|
||||||
minetest.get_node_timer(pos):start(math.random(torchspine_min_delay, torchspine_max_delay))
|
minetest.get_node_timer(pos):start(math.random(torchspine_min_delay, torchspine_max_delay))
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
@ -186,11 +186,11 @@ minetest.register_node("df_trees:torchspine_1_lit", {
|
|||||||
_mcl_hardness = 2,
|
_mcl_hardness = 2,
|
||||||
|
|
||||||
on_place = stal_on_place,
|
on_place = stal_on_place,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
grow_torchspine(pos)
|
grow_torchspine(pos)
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
@ -322,7 +322,7 @@ minetest.register_node("df_trees:torchspine_ember", {
|
|||||||
_mcl_hardness = 1,
|
_mcl_hardness = 1,
|
||||||
|
|
||||||
on_place = stal_on_place,
|
on_place = stal_on_place,
|
||||||
|
|
||||||
on_construct = function(pos)
|
on_construct = function(pos)
|
||||||
if df_trees.torchspine_growth_permitted(pos) then
|
if df_trees.torchspine_growth_permitted(pos) then
|
||||||
minetest.get_node_timer(pos):start(math.random(torchspine_min_delay, torchspine_max_delay))
|
minetest.get_node_timer(pos):start(math.random(torchspine_min_delay, torchspine_max_delay))
|
||||||
@ -331,7 +331,7 @@ minetest.register_node("df_trees:torchspine_ember", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
minetest.swap_node(pos, {name="df_trees:torchspine_1", param2=minetest.get_node(pos).param2})
|
minetest.swap_node(pos, {name="df_trees:torchspine_1", param2=minetest.get_node(pos).param2})
|
||||||
minetest.get_node_timer(pos):start(math.random(torchspine_min_delay, torchspine_max_delay))
|
minetest.get_node_timer(pos):start(math.random(torchspine_min_delay, torchspine_max_delay))
|
||||||
@ -346,14 +346,15 @@ df_trees.spawn_torchspine = function(pos)
|
|||||||
local vm = minetest.get_voxel_manip()
|
local vm = minetest.get_voxel_manip()
|
||||||
local minp, maxp = vm:read_from_map(
|
local minp, maxp = vm:read_from_map(
|
||||||
{x = x, y = y, z = z},
|
{x = x, y = y, z = z},
|
||||||
{x = x, y = y+height-1, z = z}
|
{x = x, y = y+stem_height-1, z = z}
|
||||||
)
|
)
|
||||||
local area = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
|
local area = VoxelArea:new({MinEdge = minp, MaxEdge = maxp})
|
||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
local data_param2 = vm:get_param2_data()
|
local data_param2 = vm:get_param2_data()
|
||||||
|
local vi = area:index(pos)
|
||||||
|
|
||||||
|
df_trees.spawn_torchspine_vm(vi, area, data, data_param2, stem_height)
|
||||||
|
|
||||||
df_trees.spawn_torchspine_vm(vi, area, data, data_param2, height)
|
|
||||||
|
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
vm:update_map()
|
vm:update_map()
|
||||||
@ -380,20 +381,20 @@ df_trees.spawn_torchspine_vm = function(vi, area, data, data_param2, height, lit
|
|||||||
local param2 = math.random(0,3)
|
local param2 = math.random(0,3)
|
||||||
local list
|
local list
|
||||||
if lit then list = torchspine_lit_c else list = torchspine_c end
|
if lit then list = torchspine_lit_c else list = torchspine_c end
|
||||||
|
|
||||||
for i = 0, height-1 do
|
for i = 0, height-1 do
|
||||||
if not minetest.registered_nodes[minetest.get_name_from_content_id(data[vi + area.ystride*i])].buildable_to then
|
if not minetest.registered_nodes[minetest.get_name_from_content_id(data[vi + area.ystride*i])].buildable_to then
|
||||||
height = i
|
height = i
|
||||||
break
|
break
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
for i = 0, height-1 do
|
for i = 0, height-1 do
|
||||||
local index = vi + area.ystride*i
|
local index = vi + area.ystride*i
|
||||||
data[index] = list[height-i]
|
data[index] = list[height-i]
|
||||||
data_param2[index] = param2
|
data_param2[index] = param2
|
||||||
end
|
end
|
||||||
|
|
||||||
local pos = area:position(vi)
|
local pos = area:position(vi)
|
||||||
pos.y = pos.y+height-1
|
pos.y = pos.y+height-1
|
||||||
local node = minetest.get_node(pos)
|
local node = minetest.get_node(pos)
|
||||||
|
@ -57,7 +57,7 @@ minetest.register_node("df_trees:tower_cap_gills", {
|
|||||||
df_dependencies.register_leafdecay({
|
df_dependencies.register_leafdecay({
|
||||||
trunks = {"df_trees:tower_cap"}, -- don't need stem nodes here
|
trunks = {"df_trees:tower_cap"}, -- don't need stem nodes here
|
||||||
leaves = {"df_trees:tower_cap_gills"},
|
leaves = {"df_trees:tower_cap_gills"},
|
||||||
radius = 1,
|
radius = 1,
|
||||||
})
|
})
|
||||||
|
|
||||||
--Wood
|
--Wood
|
||||||
@ -145,7 +145,7 @@ minetest.register_node("df_trees:tower_cap_sapling", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
@ -164,7 +164,7 @@ df_trees.spawn_tower_cap = function(pos)
|
|||||||
local stem_height = math.random(4,10)
|
local stem_height = math.random(4,10)
|
||||||
local cap_radius = math.random(4,6)
|
local cap_radius = math.random(4,6)
|
||||||
local maxy = y + stem_height + 3
|
local maxy = y + stem_height + 3
|
||||||
|
|
||||||
local vm = minetest.get_voxel_manip()
|
local vm = minetest.get_voxel_manip()
|
||||||
local minp, maxp = vm:read_from_map(
|
local minp, maxp = vm:read_from_map(
|
||||||
{x = x - cap_radius, y = y, z = z - cap_radius},
|
{x = x - cap_radius, y = y, z = z - cap_radius},
|
||||||
@ -174,7 +174,7 @@ df_trees.spawn_tower_cap = function(pos)
|
|||||||
local data = vm:get_data()
|
local data = vm:get_data()
|
||||||
|
|
||||||
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
subterrane.giant_mushroom(area:indexp(pos), area, data, c_stem, c_cap, c_gills, stem_height, cap_radius)
|
||||||
|
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
vm:update_map()
|
vm:update_map()
|
||||||
|
@ -22,7 +22,7 @@ minetest.register_node("df_trees:tunnel_tube", {
|
|||||||
on_place = minetest.rotate_node,
|
on_place = minetest.rotate_node,
|
||||||
_mcl_blast_resistance = 2,
|
_mcl_blast_resistance = 2,
|
||||||
_mcl_hardness = 2,
|
_mcl_hardness = 2,
|
||||||
|
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
@ -190,7 +190,7 @@ if df_trees.config.enable_tnt then
|
|||||||
local tnt_radius = tonumber(minetest.settings:get("tnt_radius") or 3) * 2/3
|
local tnt_radius = tonumber(minetest.settings:get("tnt_radius") or 3) * 2/3
|
||||||
local tnt_def = {radius = tnt_radius, damage_radius = tnt_radius * 2}
|
local tnt_def = {radius = tnt_radius, damage_radius = tnt_radius * 2}
|
||||||
local torch_item = df_dependencies.node_name_torch
|
local torch_item = df_dependencies.node_name_torch
|
||||||
|
|
||||||
local drop_items = {
|
local drop_items = {
|
||||||
max_items = 1,
|
max_items = 1,
|
||||||
items = {
|
items = {
|
||||||
@ -216,7 +216,7 @@ if df_trees.config.enable_tnt then
|
|||||||
minetest.swap_node(pos, {name = "df_trees:tunnel_tube_fruiting_body_burning"})
|
minetest.swap_node(pos, {name = "df_trees:tunnel_tube_fruiting_body_burning"})
|
||||||
minetest.registered_nodes["df_trees:tunnel_tube_fruiting_body_burning"].on_construct(pos)
|
minetest.registered_nodes["df_trees:tunnel_tube_fruiting_body_burning"].on_construct(pos)
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node("df_trees:tunnel_tube_fruiting_body", {
|
minetest.register_node("df_trees:tunnel_tube_fruiting_body", {
|
||||||
description = S("Tunnel Tube Fruiting Body"),
|
description = S("Tunnel Tube Fruiting Body"),
|
||||||
_doc_items_longdesc = df_trees.doc.tunnel_tube_desc,
|
_doc_items_longdesc = df_trees.doc.tunnel_tube_desc,
|
||||||
@ -230,7 +230,7 @@ if df_trees.config.enable_tnt then
|
|||||||
drop = drop_items,
|
drop = drop_items,
|
||||||
_mcl_blast_resistance = 12,
|
_mcl_blast_resistance = 12,
|
||||||
_mcl_hardness = 2,
|
_mcl_hardness = 2,
|
||||||
|
|
||||||
on_punch = function(pos, node, puncher)
|
on_punch = function(pos, node, puncher)
|
||||||
if puncher:get_wielded_item():get_name() == torch_item then
|
if puncher:get_wielded_item():get_name() == torch_item then
|
||||||
minetest.swap_node(pos, {name = "df_trees:tunnel_tube_fruiting_body_burning"})
|
minetest.swap_node(pos, {name = "df_trees:tunnel_tube_fruiting_body_burning"})
|
||||||
@ -256,7 +256,7 @@ if df_trees.config.enable_tnt then
|
|||||||
on_ignite = on_burn,
|
on_ignite = on_burn,
|
||||||
_on_burn = on_burn,
|
_on_burn = on_burn,
|
||||||
})
|
})
|
||||||
|
|
||||||
minetest.register_node("df_trees:tunnel_tube_fruiting_body_burning", {
|
minetest.register_node("df_trees:tunnel_tube_fruiting_body_burning", {
|
||||||
description = S("Tunnel Tube Fruiting Body"),
|
description = S("Tunnel Tube Fruiting Body"),
|
||||||
_doc_items_longdesc = df_trees.doc.tunnel_tube_desc,
|
_doc_items_longdesc = df_trees.doc.tunnel_tube_desc,
|
||||||
@ -297,7 +297,7 @@ else
|
|||||||
on_place = minetest.rotate_node,
|
on_place = minetest.rotate_node,
|
||||||
_mcl_blast_resistance = 12,
|
_mcl_blast_resistance = 12,
|
||||||
_mcl_hardness = 2,
|
_mcl_hardness = 2,
|
||||||
|
|
||||||
drop = {
|
drop = {
|
||||||
max_items = 3,
|
max_items = 3,
|
||||||
items = {
|
items = {
|
||||||
@ -354,7 +354,7 @@ minetest.register_node("df_trees:tunnel_tube_sapling", {
|
|||||||
on_destruct = function(pos)
|
on_destruct = function(pos)
|
||||||
minetest.get_node_timer(pos):stop()
|
minetest.get_node_timer(pos):stop()
|
||||||
end,
|
end,
|
||||||
|
|
||||||
on_timer = function(pos)
|
on_timer = function(pos)
|
||||||
if df_farming and df_farming.kill_if_sunlit(pos) then
|
if df_farming and df_farming.kill_if_sunlit(pos) then
|
||||||
return
|
return
|
||||||
@ -398,7 +398,7 @@ df_trees.spawn_tunnel_tube = function(pos)
|
|||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
vm:set_param2_data(param2_data)
|
vm:set_param2_data(param2_data)
|
||||||
vm:write_to_map()
|
vm:write_to_map()
|
||||||
vm:update_map()
|
vm:update_map()
|
||||||
end
|
end
|
||||||
|
|
||||||
local c_air = minetest.get_content_id("air")
|
local c_air = minetest.get_content_id("air")
|
||||||
|
@ -17,10 +17,10 @@ local function setting(stype, name, default, description)
|
|||||||
value = default
|
value = default
|
||||||
end
|
end
|
||||||
df_underworld_items.config[name] = value
|
df_underworld_items.config[name] = value
|
||||||
|
|
||||||
if print_settingtypes then
|
if print_settingtypes then
|
||||||
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
minetest.debug(CONFIG_FILE_PREFIX..name.." ("..description..") "..stype.." "..tostring(default))
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
setting("bool", "invulnerable_slade", true, "Slade is invulnerable to players")
|
setting("bool", "invulnerable_slade", true, "Slade is invulnerable to players")
|
||||||
|
@ -35,7 +35,7 @@ df_underworld_items.underworld_shard = function(data, area, vi, x_slant, z_slant
|
|||||||
if z_slant == nil then z_slant = math.random(-1,1) end
|
if z_slant == nil then z_slant = math.random(-1,1) end
|
||||||
if rotated == nil then rotated = math.random() > 0.5 end
|
if rotated == nil then rotated = math.random() > 0.5 end
|
||||||
if length == nil then length = math.random(4, 12) end
|
if length == nil then length = math.random(4, 12) end
|
||||||
|
|
||||||
length = math.ceil(length/2) * 2 -- make it an even multiple of 2
|
length = math.ceil(length/2) * 2 -- make it an even multiple of 2
|
||||||
|
|
||||||
local xstride, ystride, zstride
|
local xstride, ystride, zstride
|
||||||
@ -47,16 +47,16 @@ df_underworld_items.underworld_shard = function(data, area, vi, x_slant, z_slant
|
|||||||
xstride = 1
|
xstride = 1
|
||||||
zstride = area.zstride
|
zstride = area.zstride
|
||||||
end
|
end
|
||||||
|
|
||||||
-- bottom end
|
-- bottom end
|
||||||
safe_write(data, area, vi, c_amethyst)
|
safe_write(data, area, vi, c_amethyst)
|
||||||
safe_write(data, area, vi+xstride, c_amethyst)
|
safe_write(data, area, vi+xstride, c_amethyst)
|
||||||
|
|
||||||
for i = 1, length do
|
for i = 1, length do
|
||||||
vi = vi + ystride
|
vi = vi + ystride
|
||||||
|
|
||||||
safe_write(data, area, vi-xstride, c_amethyst)
|
safe_write(data, area, vi-xstride, c_amethyst)
|
||||||
|
|
||||||
safe_write(data, area, vi+zstride, c_amethyst)
|
safe_write(data, area, vi+zstride, c_amethyst)
|
||||||
safe_write(data, area, vi, c_amethyst)
|
safe_write(data, area, vi, c_amethyst)
|
||||||
safe_write(data, area, vi-zstride, c_amethyst)
|
safe_write(data, area, vi-zstride, c_amethyst)
|
||||||
@ -73,7 +73,7 @@ df_underworld_items.underworld_shard = function(data, area, vi, x_slant, z_slant
|
|||||||
end
|
end
|
||||||
|
|
||||||
vi = vi + ystride
|
vi = vi + ystride
|
||||||
|
|
||||||
safe_write(data, area, vi, c_amethyst)
|
safe_write(data, area, vi, c_amethyst)
|
||||||
safe_write(data, area, vi+xstride, c_amethyst)
|
safe_write(data, area, vi+xstride, c_amethyst)
|
||||||
end
|
end
|
@ -32,7 +32,7 @@ if tnt_boom then
|
|||||||
glowstone_def.on_dig = function(pos, node, digger)
|
glowstone_def.on_dig = function(pos, node, digger)
|
||||||
if minetest.node_dig(pos, node, digger) then
|
if minetest.node_dig(pos, node, digger) then
|
||||||
tnt_boom(pos, {radius=3})
|
tnt_boom(pos, {radius=3})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
minetest.register_node("df_underworld_items:glowstone", glowstone_def)
|
minetest.register_node("df_underworld_items:glowstone", glowstone_def)
|
@ -18,7 +18,7 @@ minetest.register_node("df_underworld_items:pit_plasma", {
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
groups={pit_plasma=1, pit_plasma_resistant=1,destroys_items=1, set_on_fire=15, fire_damage=1, liquid=1},
|
groups={pit_plasma=1, pit_plasma_resistant=1,destroys_items=1, set_on_fire=15, fire_damage=1, liquid=1},
|
||||||
walkable = false,
|
walkable = false,
|
||||||
pointable = false,
|
pointable = false,
|
||||||
@ -161,7 +161,7 @@ if df_underworld_items.config.destructive_pit_plasma then
|
|||||||
end
|
end
|
||||||
if sparkle_pos then
|
if sparkle_pos then
|
||||||
sparkle(sparkle_pos)
|
sparkle(sparkle_pos)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
|
@ -7,7 +7,7 @@ end
|
|||||||
local initialize = function(pos, meta)
|
local initialize = function(pos, meta)
|
||||||
if not meta:contains("key") then
|
if not meta:contains("key") then
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
inv:set_size("main", 8)
|
inv:set_size("main", 8)
|
||||||
local next_seed = math.random() * 2^21
|
local next_seed = math.random() * 2^21
|
||||||
math.randomseed(pos.x + pos.y^8 + pos.z^16)
|
math.randomseed(pos.x + pos.y^8 + pos.z^16)
|
||||||
-- Key is consistent with location
|
-- Key is consistent with location
|
||||||
@ -66,9 +66,9 @@ local show_formspec = function(pos, node, clicker, itemstack, pointed_thing)
|
|||||||
.. "container[3,0]" .. formspec_dial("dial2", state[2]) .. "container_end[]"
|
.. "container[3,0]" .. formspec_dial("dial2", state[2]) .. "container_end[]"
|
||||||
.. "container[0,1.5]" .. formspec_dial("dial3", state[3]) .. "container_end[]"
|
.. "container[0,1.5]" .. formspec_dial("dial3", state[3]) .. "container_end[]"
|
||||||
.. "container[3,1.5]" .. formspec_dial("dial4", state[4]) .. "container_end[]"
|
.. "container[3,1.5]" .. formspec_dial("dial4", state[4]) .. "container_end[]"
|
||||||
.. "container[6.1,0]" .. formspec_bar(true, state_sum[1], key_sum[1]) .. "container_end[]"
|
.. "container[6.1,0]" .. formspec_bar(true, state_sum[1], key_sum[1]) .. "container_end[]"
|
||||||
.. "container[6.1,1.5]" .. formspec_bar(true, state_sum[2], key_sum[2]) .. "container_end[]"
|
.. "container[6.1,1.5]" .. formspec_bar(true, state_sum[2], key_sum[2]) .. "container_end[]"
|
||||||
.. "container[1,2.75]" .. formspec_bar(false, state_sum[3], key_sum[3]) .. "container_end[]"
|
.. "container[1,2.75]" .. formspec_bar(false, state_sum[3], key_sum[3]) .. "container_end[]"
|
||||||
.. "container[4,2.75]" .. formspec_bar(false, state_sum[4], key_sum[4]) .. "container_end[]"
|
.. "container[4,2.75]" .. formspec_bar(false, state_sum[4], key_sum[4]) .. "container_end[]"
|
||||||
.. "container_end[]"
|
.. "container_end[]"
|
||||||
.. itemslot_bg(0.6,6.7,8,4,0.25)
|
.. itemslot_bg(0.6,6.7,8,4,0.25)
|
||||||
@ -139,7 +139,7 @@ minetest.register_node("df_underworld_items:puzzle_chest_closed", {
|
|||||||
sounds = df_dependencies.sound_stone({ footstep = { name = "bedrock2_step", gain = 1 } }),
|
sounds = df_dependencies.sound_stone({ footstep = { name = "bedrock2_step", gain = 1 } }),
|
||||||
_mcl_blast_resistance = 1200,
|
_mcl_blast_resistance = 1200,
|
||||||
_mcl_hardness = 50,
|
_mcl_hardness = 50,
|
||||||
|
|
||||||
on_rightclick = show_formspec,
|
on_rightclick = show_formspec,
|
||||||
can_dig = puzzle_chest_can_dig,
|
can_dig = puzzle_chest_can_dig,
|
||||||
})
|
})
|
||||||
@ -166,7 +166,7 @@ minetest.register_node("df_underworld_items:puzzle_chest_opened", {
|
|||||||
sounds = df_dependencies.sound_stone({ footstep = { name = "bedrock2_step", gain = 1 } }),
|
sounds = df_dependencies.sound_stone({ footstep = { name = "bedrock2_step", gain = 1 } }),
|
||||||
_mcl_blast_resistance = 1200,
|
_mcl_blast_resistance = 1200,
|
||||||
_mcl_hardness = 50,
|
_mcl_hardness = 50,
|
||||||
|
|
||||||
on_rightclick = show_formspec,
|
on_rightclick = show_formspec,
|
||||||
can_dig = puzzle_chest_can_dig,
|
can_dig = puzzle_chest_can_dig,
|
||||||
})
|
})
|
||||||
|
@ -40,7 +40,7 @@ local ensure_meta = function(pos)
|
|||||||
meta:set_string("key", minetest.serialize(key))
|
meta:set_string("key", minetest.serialize(key))
|
||||||
meta:mark_as_private("key")
|
meta:mark_as_private("key")
|
||||||
end
|
end
|
||||||
|
|
||||||
local timer = minetest.get_node_timer(pos)
|
local timer = minetest.get_node_timer(pos)
|
||||||
if not timer:is_started() then
|
if not timer:is_started() then
|
||||||
timer:start(4)
|
timer:start(4)
|
||||||
@ -76,7 +76,7 @@ local cull_colour_groups = function()
|
|||||||
table.insert(culled_colour_groups, new_set)
|
table.insert(culled_colour_groups, new_set)
|
||||||
end
|
end
|
||||||
colour_groups = culled_colour_groups
|
colour_groups = culled_colour_groups
|
||||||
|
|
||||||
-- collect a list of all items with useful colour groups
|
-- collect a list of all items with useful colour groups
|
||||||
-- to be used for treasure generation
|
-- to be used for treasure generation
|
||||||
local colour_item_set = {}
|
local colour_item_set = {}
|
||||||
@ -109,7 +109,7 @@ local test_key = function(pos, player)
|
|||||||
if not meta:contains("key") then
|
if not meta:contains("key") then
|
||||||
return false
|
return false
|
||||||
end
|
end
|
||||||
|
|
||||||
local keystring = meta:get_string("key")
|
local keystring = meta:get_string("key")
|
||||||
local key = minetest.deserialize(keystring)
|
local key = minetest.deserialize(keystring)
|
||||||
local inv = meta:get_inventory()
|
local inv = meta:get_inventory()
|
||||||
@ -150,7 +150,7 @@ end
|
|||||||
local formspec_prefix = "df_underworld_items_puzzle_seal:"
|
local formspec_prefix = "df_underworld_items_puzzle_seal:"
|
||||||
local itemslot_bg = df_dependencies.get_itemslot_bg
|
local itemslot_bg = df_dependencies.get_itemslot_bg
|
||||||
local get_formspec = function(pos, unlocked)
|
local get_formspec = function(pos, unlocked)
|
||||||
local formspec =
|
local formspec =
|
||||||
"size[8,8]"
|
"size[8,8]"
|
||||||
.."image[0,0;2.5,4;dfcaverns_puzzle_inscription_background.png^dfcaverns_puzzle_inscription_1.png]"
|
.."image[0,0;2.5,4;dfcaverns_puzzle_inscription_background.png^dfcaverns_puzzle_inscription_1.png]"
|
||||||
.."image[5.8,0;2.5,4;dfcaverns_puzzle_inscription_background.png^[transformR180^dfcaverns_puzzle_inscription_2.png]"
|
.."image[5.8,0;2.5,4;dfcaverns_puzzle_inscription_background.png^[transformR180^dfcaverns_puzzle_inscription_2.png]"
|
||||||
@ -176,7 +176,7 @@ local get_formspec = function(pos, unlocked)
|
|||||||
else
|
else
|
||||||
formspec = formspec .. "image[1.25,1.25;1,1;dfcaverns_seal.png]"
|
formspec = formspec .. "image[1.25,1.25;1,1;dfcaverns_seal.png]"
|
||||||
end
|
end
|
||||||
|
|
||||||
formspec = formspec
|
formspec = formspec
|
||||||
.."container_end[]"
|
.."container_end[]"
|
||||||
-- .."container[5,0.5]"
|
-- .."container[5,0.5]"
|
||||||
@ -277,7 +277,7 @@ local puzzle_seal_def = {
|
|||||||
ensure_meta(pos)
|
ensure_meta(pos)
|
||||||
refresh_formspec(pos, clicker)
|
refresh_formspec(pos, clicker)
|
||||||
end,
|
end,
|
||||||
on_timer = function(pos, elapsed)
|
on_timer = function(pos, elapsed)
|
||||||
local meta = minetest.get_meta(pos)
|
local meta = minetest.get_meta(pos)
|
||||||
local unlocked = meta:get_int("unlocked")
|
local unlocked = meta:get_int("unlocked")
|
||||||
if unlocked > 0 then
|
if unlocked > 0 then
|
||||||
@ -352,7 +352,7 @@ local digging_seal_def = {
|
|||||||
gain = 1.0,
|
gain = 1.0,
|
||||||
max_hear_distance = 32,
|
max_hear_distance = 32,
|
||||||
})
|
})
|
||||||
|
|
||||||
local minpos = vector.add(pos, {x=0, y=-1, z=0})
|
local minpos = vector.add(pos, {x=0, y=-1, z=0})
|
||||||
minetest.add_particlespawner({
|
minetest.add_particlespawner({
|
||||||
amount = 100,
|
amount = 100,
|
||||||
@ -372,7 +372,7 @@ local digging_seal_def = {
|
|||||||
collision_removal = true,
|
collision_removal = true,
|
||||||
glow = 15,
|
glow = 15,
|
||||||
})
|
})
|
||||||
|
|
||||||
if minetest.get_item_group(below_node.name, "slade") == 0 then
|
if minetest.get_item_group(below_node.name, "slade") == 0 then
|
||||||
if df_underworld_items.config.enable_slade_drill then
|
if df_underworld_items.config.enable_slade_drill then
|
||||||
minetest.set_node(pos, {name="air"})
|
minetest.set_node(pos, {name="air"})
|
||||||
@ -385,7 +385,7 @@ local digging_seal_def = {
|
|||||||
end
|
end
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local rot = node.param2
|
local rot = node.param2
|
||||||
if rot == 0 then
|
if rot == 0 then
|
||||||
minetest.place_schematic({x=pos.x-3, y=pos.y-2, z=pos.z-3}, df_underworld_items.seal_stair_schem, 0, {}, true)
|
minetest.place_schematic({x=pos.x-3, y=pos.y-2, z=pos.z-3}, df_underworld_items.seal_stair_schem, 0, {}, true)
|
||||||
@ -420,7 +420,7 @@ minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|||||||
if formname:sub(1,prefix_len) ~= formspec_prefix or not fields.open then
|
if formname:sub(1,prefix_len) ~= formspec_prefix or not fields.open then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
local pos_string = formname:sub(prefix_len+1)
|
local pos_string = formname:sub(prefix_len+1)
|
||||||
local pos = minetest.string_to_pos(pos_string)
|
local pos = minetest.string_to_pos(pos_string)
|
||||||
if test_key(pos) then
|
if test_key(pos) then
|
||||||
if named_waypoints_path then
|
if named_waypoints_path then
|
||||||
@ -525,7 +525,7 @@ df_dependencies.register_stairs("slade_block")
|
|||||||
|
|
||||||
if invulnerable then
|
if invulnerable then
|
||||||
for name, def in pairs(minetest.registered_nodes) do
|
for name, def in pairs(minetest.registered_nodes) do
|
||||||
if (name:sub(1,7) == "stairs:" and name:sub(-11) == "slade_block") or
|
if (name:sub(1,7) == "stairs:" and name:sub(-11) == "slade_block") or
|
||||||
name:sub(1,11) == "mcl_stairs:" and name:sub(-11) == "slade_block" then
|
name:sub(1,11) == "mcl_stairs:" and name:sub(-11) == "slade_block" then
|
||||||
minetest.override_item(name, {can_dig = can_dig})
|
minetest.override_item(name, {can_dig = can_dig})
|
||||||
end
|
end
|
||||||
@ -540,7 +540,7 @@ if df_dependencies.node_name_stair_slade_block then
|
|||||||
n11 = { name = df_dependencies.node_name_slab_slade_block, param2 = 1 }
|
n11 = { name = df_dependencies.node_name_slab_slade_block, param2 = 1 }
|
||||||
n10 = { name = df_dependencies.node_name_slab_slade_block, param2 = 21 }
|
n10 = { name = df_dependencies.node_name_slab_slade_block, param2 = 21 }
|
||||||
|
|
||||||
if df_dependencies.node_name_slab_slade_block_top then
|
if df_dependencies.node_name_slab_slade_block_top then
|
||||||
-- Mineclone slabs don't support full rotation, this is how to flip them over
|
-- Mineclone slabs don't support full rotation, this is how to flip them over
|
||||||
n10.name = df_dependencies.node_name_slab_slade_block_top
|
n10.name = df_dependencies.node_name_slab_slade_block_top
|
||||||
n10.param2 = 1
|
n10.param2 = 1
|
||||||
@ -551,35 +551,35 @@ end
|
|||||||
df_underworld_items.seal_temple_schem = {
|
df_underworld_items.seal_temple_schem = {
|
||||||
size = {y = 6, x = 7, z = 7},
|
size = {y = 6, x = 7, z = 7},
|
||||||
data = {
|
data = {
|
||||||
n15, n2, n3, n3, n3, n4, n14, n14, n3, n3, n3, n3, n3, n15, n13, n3, n3,
|
n15, n2, n3, n3, n3, n4, n14, n14, n3, n3, n3, n3, n3, n15, n13, n3, n3,
|
||||||
n3, n3, n3, n13, n16, n3, n3, n3, n3, n3, n16, n6, n6, n6, n6, n6, n6,
|
n3, n3, n3, n13, n16, n3, n3, n3, n3, n3, n16, n6, n6, n6, n6, n6, n6,
|
||||||
n6, n6, n6, n6, n6, n6, n6, n6, n7, n3, n3, n3, n3, n3, n7, n3, n3,
|
n6, n6, n6, n6, n6, n6, n6, n6, n7, n3, n3, n3, n3, n3, n7, n3, n3,
|
||||||
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
||||||
n3, n3, n6, n3, n3, n3, n3, n3, n6, n6, n6, n6, n6, n6, n6, n6, n3,
|
n3, n3, n6, n3, n3, n3, n3, n3, n6, n6, n6, n6, n6, n6, n6, n6, n3,
|
||||||
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
||||||
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n6, n3, n3, n3, n3, n3, n6,
|
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n6, n3, n3, n3, n3, n3, n6,
|
||||||
n6, n6, n3, n3, n3, n6, n6, n3, n3, n3, n8, n3, n3, n3, n3, n3, n3,
|
n6, n6, n3, n3, n3, n6, n6, n3, n3, n3, n8, n3, n3, n3, n3, n3, n3,
|
||||||
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
||||||
n3, n6, n3, n3, n3, n3, n3, n6, n6, n6, n3, n3, n3, n6, n6, n3, n3,
|
n3, n6, n3, n3, n3, n3, n3, n6, n6, n6, n3, n3, n3, n6, n6, n3, n3,
|
||||||
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
||||||
n3, n3, n3, n3, n3, n3, n3, n3, n3, n6, n3, n3, n3, n3, n3, n6, n6,
|
n3, n3, n3, n3, n3, n3, n3, n3, n3, n6, n3, n3, n3, n3, n3, n6, n6,
|
||||||
n6, n3, n3, n3, n6, n6, n9, n3, n3, n3, n3, n3, n9, n3, n3, n3, n3,
|
n6, n3, n3, n3, n6, n6, n9, n3, n3, n3, n3, n3, n9, n3, n3, n3, n3,
|
||||||
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3, n3,
|
||||||
n6, n3, n3, n3, n3, n3, n6, n6, n6, n6, n6, n6, n6, n6, n12, n2, n3,
|
n6, n3, n3, n3, n3, n3, n6, n6, n6, n6, n6, n6, n6, n6, n12, n2, n3,
|
||||||
n3, n3, n4, n12, n14, n3, n3, n3, n3, n3, n15, n13, n3, n3, n3, n3, n3,
|
n3, n3, n4, n12, n14, n3, n3, n3, n3, n3, n15, n13, n3, n3, n3, n3, n3,
|
||||||
n12, n16, n3, n3, n3, n3, n3, n16, n6, n6, n6, n6, n6, n6, n6, n6, n6,
|
n12, n16, n3, n3, n3, n3, n3, n16, n6, n6, n6, n6, n6, n6, n6, n6, n6,
|
||||||
n6, n6, n6, n6, n6,
|
n6, n6, n6, n6, n6,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
df_underworld_items.seal_stair_schem = {
|
df_underworld_items.seal_stair_schem = {
|
||||||
size = {y = 2, x = 7, z = 7},
|
size = {y = 2, x = 7, z = 7},
|
||||||
data = {
|
data = {
|
||||||
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n10,
|
n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n1, n10,
|
||||||
n3, n3, n3, n1, n1, n3, n11, n1, n10, n3, n1, n1, n11, n3, n3, n3, n3,
|
n3, n3, n3, n1, n1, n3, n11, n1, n10, n3, n1, n1, n11, n3, n3, n3, n3,
|
||||||
n1, n1, n3, n3, n3, n3, n3, n1, n1, n3, n3, n3, n3, n3, n1, n1, n3,
|
n1, n1, n3, n3, n3, n3, n3, n1, n1, n3, n3, n3, n3, n3, n1, n1, n3,
|
||||||
n3, n3, n3, n3, n1, n1, n3, n3, n3, n3, n3, n1, n1, n3, n3, n3, n3,
|
n3, n3, n3, n3, n1, n1, n3, n3, n3, n3, n3, n1, n1, n3, n3, n3, n3,
|
||||||
n3, n1, n1, n3, n3, n3, n3, n3, n1, n1, n3, n3, n3, n3, n3, n1, n1,
|
n3, n1, n1, n3, n3, n3, 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,
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -171,9 +171,9 @@ df_dependencies.register_stairs("slade_brick")
|
|||||||
|
|
||||||
if invulnerable then
|
if invulnerable then
|
||||||
for name, def in pairs(minetest.registered_nodes) do
|
for name, def in pairs(minetest.registered_nodes) do
|
||||||
if (name:sub(1,7) == "stairs:" and name:sub(-11) == "slade_block") or
|
if (name:sub(1,7) == "stairs:" and name:sub(-11) == "slade_block") or
|
||||||
name:sub(1,11) == "mcl_stairs:" and name:sub(-11) == "slade_brick" then
|
name:sub(1,11) == "mcl_stairs:" and name:sub(-11) == "slade_brick" then
|
||||||
minetest.override_item(name, {can_dig = server_diggable_only})
|
minetest.override_item(name, {can_dig = server_diggable_only})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -57,7 +57,7 @@ local slade_drill_def = {
|
|||||||
drill_particles(pointed_thing.above)
|
drill_particles(pointed_thing.above)
|
||||||
return itemstack
|
return itemstack
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,13 +39,13 @@ local test_array = {
|
|||||||
-- damage = 8
|
-- damage = 8
|
||||||
-- knockback = 16
|
-- knockback = 16
|
||||||
-- tnt_vulnerable = false
|
-- tnt_vulnerable = false
|
||||||
-- tnt_debris =
|
-- tnt_debris =
|
||||||
-- hunters_allowed_here = -- function(pos)
|
-- hunters_allowed_here = -- function(pos)
|
||||||
-- other_overrides =
|
-- other_overrides =
|
||||||
--}
|
--}
|
||||||
|
|
||||||
hunter_statue.register_hunter_statue = function(node_name, statue_def)
|
hunter_statue.register_hunter_statue = function(node_name, statue_def)
|
||||||
|
|
||||||
local def = {
|
local def = {
|
||||||
description = statue_def.description or S("Hunter Statue"),
|
description = statue_def.description or S("Hunter Statue"),
|
||||||
-- _doc_items_longdesc = long_description,
|
-- _doc_items_longdesc = long_description,
|
||||||
@ -60,7 +60,7 @@ hunter_statue.register_hunter_statue = function(node_name, statue_def)
|
|||||||
groups = statue_def.groups or {falling_node = 1},
|
groups = statue_def.groups or {falling_node = 1},
|
||||||
sounds = statue_def.sounds or default_sounds,
|
sounds = statue_def.sounds or default_sounds,
|
||||||
}
|
}
|
||||||
|
|
||||||
if statue_def.tnt_vulnerable then
|
if statue_def.tnt_vulnerable then
|
||||||
def.on_blast = function(pos, intensity)
|
def.on_blast = function(pos, intensity)
|
||||||
if intensity >= 1.0 then
|
if intensity >= 1.0 then
|
||||||
@ -69,19 +69,19 @@ hunter_statue.register_hunter_statue = function(node_name, statue_def)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if statue_def.other_overrides then
|
if statue_def.other_overrides then
|
||||||
for k, v in pairs(statue_def.other_overrides) do
|
for k, v in pairs(statue_def.other_overrides) do
|
||||||
def[k] = v
|
def[k] = v
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
local knockback = statue_def.knockback or 16
|
local knockback = statue_def.knockback or 16
|
||||||
local damage = statue_def.damage or 8
|
local damage = statue_def.damage or 8
|
||||||
local hunters_allowed_here = statue_def.hunters_allowed_here
|
local hunters_allowed_here = statue_def.hunters_allowed_here
|
||||||
|
|
||||||
minetest.register_node(node_name, def)
|
minetest.register_node(node_name, def)
|
||||||
|
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
label = node_name .. " ABM",
|
label = node_name .. " ABM",
|
||||||
nodenames = {node_name},
|
nodenames = {node_name},
|
||||||
@ -109,9 +109,9 @@ hunter_statue.register_hunter_statue = function(node_name, statue_def)
|
|||||||
nearest_player = player
|
nearest_player = player
|
||||||
nearest_pos = player_pos
|
nearest_pos = player_pos
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
if nearest_player then
|
if nearest_player then
|
||||||
if nearest_distance < 2 then
|
if nearest_distance < 2 then
|
||||||
local armour_multiplier = 1
|
local armour_multiplier = 1
|
||||||
|
@ -19,9 +19,9 @@ if minetest.get_modpath("doc") then
|
|||||||
end
|
end
|
||||||
ice_sprite_bottle_desc = S("A bottle containing a captured ice sprite.")
|
ice_sprite_bottle_desc = S("A bottle containing a captured ice sprite.")
|
||||||
ice_sprite_bottle_usage = S("Ice sprites radiate both light and freezing cold.")
|
ice_sprite_bottle_usage = S("Ice sprites radiate both light and freezing cold.")
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_node("ice_sprites:ice_sprite", {
|
minetest.register_node("ice_sprites:ice_sprite", {
|
||||||
description = S("Ice Sprite"),
|
description = S("Ice Sprite"),
|
||||||
_doc_items_longdesc = ice_sprite_desc,
|
_doc_items_longdesc = ice_sprite_desc,
|
||||||
|
@ -7,13 +7,13 @@ looped_node_sound = {}
|
|||||||
-- cycle_time =,
|
-- cycle_time =,
|
||||||
-- gain_per_node =,
|
-- gain_per_node =,
|
||||||
-- max_gain =,
|
-- max_gain =,
|
||||||
-- max_hear_distance =,
|
-- max_hear_distance =,
|
||||||
--})
|
--})
|
||||||
|
|
||||||
looped_node_sound.register = function(def)
|
looped_node_sound.register = function(def)
|
||||||
local handles = {}
|
local handles = {}
|
||||||
local timer = 0
|
local timer = 0
|
||||||
|
|
||||||
-- Parameters
|
-- Parameters
|
||||||
local radius = def.radius or 8 -- node search radius around player
|
local radius = def.radius or 8 -- node search radius around player
|
||||||
local cycle = def.cycle_time or 3 -- Cycle time for sound updates
|
local cycle = def.cycle_time or 3 -- Cycle time for sound updates
|
||||||
|
@ -16,7 +16,7 @@ if minetest.get_modpath("doc") then
|
|||||||
if minetest.get_modpath("tnt") then
|
if minetest.get_modpath("tnt") then
|
||||||
gas_usage = gas_usage .. " " .. S("When exposed to air and an ignition source it can produce a deadly explosion.")
|
gas_usage = gas_usage .. " " .. S("When exposed to air and an ignition source it can produce a deadly explosion.")
|
||||||
end
|
end
|
||||||
|
|
||||||
seep_desc = S("Some coal deposits have cracks that seep a steady flow of mine gas.")
|
seep_desc = S("Some coal deposits have cracks that seep a steady flow of mine gas.")
|
||||||
seep_usage = S("Mining out such a deposit seals the crack.")
|
seep_usage = S("Mining out such a deposit seals the crack.")
|
||||||
end
|
end
|
||||||
@ -98,11 +98,11 @@ minetest.register_abm({
|
|||||||
next_node = minetest.get_node(next_pos)
|
next_node = minetest.get_node(next_pos)
|
||||||
if next_node.name == "air" then
|
if next_node.name == "air" then
|
||||||
minetest.swap_node(next_pos, gas_node)
|
minetest.swap_node(next_pos, gas_node)
|
||||||
minetest.swap_node(pos, next_node)
|
minetest.swap_node(pos, next_node)
|
||||||
else
|
else
|
||||||
local dir = directions[math.random(1,4)]
|
local dir = directions[math.random(1,4)]
|
||||||
local next_pos = vector.add(pos, dir)
|
next_pos = vector.add(pos, dir)
|
||||||
local next_node = minetest.get_node(next_pos)
|
next_node = minetest.get_node(next_pos)
|
||||||
if next_node.name == "air" or minetest.get_item_group(next_node.name, "liquid") > 0 then
|
if next_node.name == "air" or minetest.get_item_group(next_node.name, "liquid") > 0 then
|
||||||
if next_node.name == "air" or math.random() < 0.5 then -- gas never "climbs" above air.
|
if next_node.name == "air" or math.random() < 0.5 then -- gas never "climbs" above air.
|
||||||
minetest.swap_node(next_pos, gas_node)
|
minetest.swap_node(next_pos, gas_node)
|
||||||
@ -143,7 +143,7 @@ minetest.register_abm({
|
|||||||
soundfile_cool_lava,
|
soundfile_cool_lava,
|
||||||
{pos = pos, max_hear_distance = 16, gain = 0.1}
|
{pos = pos, max_hear_distance = 16, gain = 0.1}
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
@ -164,7 +164,7 @@ if tnt_boom then
|
|||||||
if math.random() < 0.01 then
|
if math.random() < 0.01 then
|
||||||
minetest.set_node(pos, {name="mine_gas:gas_wisp"})
|
minetest.set_node(pos, {name="mine_gas:gas_wisp"})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
end
|
end
|
||||||
@ -210,6 +210,6 @@ minetest.register_abm({
|
|||||||
{pos = pos, max_hear_distance = 8, gain = 0.05}
|
{pos = pos, max_hear_distance = 8, gain = 0.05}
|
||||||
)
|
)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
@ -167,11 +167,11 @@ if minetest.get_modpath("dynamic_liquid") then
|
|||||||
minetest.swap_node(pos, next_node)
|
minetest.swap_node(pos, next_node)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
-- If oil is wandering around on top of a layer of water that isn't full, drop it down
|
-- If oil is wandering around on top of a layer of water that isn't full, drop it down
|
||||||
-- into the water layer. This helps drive the system toward a more static state with a flat-looking surface.
|
-- into the water layer. This helps drive the system toward a more static state with a flat-looking surface.
|
||||||
minetest.register_abm({
|
minetest.register_abm({
|
||||||
@ -208,7 +208,7 @@ if df_dependencies.bucket_register_liquid then
|
|||||||
burntime = 370, -- same as coalblock
|
burntime = 370, -- same as coalblock
|
||||||
replacements = {{"oil:oil_bucket", bucket_empty}},
|
replacements = {{"oil:oil_bucket", bucket_empty}},
|
||||||
})
|
})
|
||||||
|
|
||||||
if minetest.get_modpath("basic_materials") then
|
if minetest.get_modpath("basic_materials") then
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
type = "cooking",
|
type = "cooking",
|
||||||
|
@ -67,7 +67,7 @@ local get_pit = function(pos)
|
|||||||
local location = scatter_2d(corner_xz, pit_region_size, 0)
|
local location = scatter_2d(corner_xz, pit_region_size, 0)
|
||||||
local depth = math.floor(math.random() * (max_depth - min_depth) + min_depth)
|
local depth = math.floor(math.random() * (max_depth - min_depth) + min_depth)
|
||||||
local top = math.floor(math.random() * (max_top - min_top) + min_top)
|
local top = math.floor(math.random() * (max_top - min_top) + min_top)
|
||||||
|
|
||||||
math.randomseed(next_seed)
|
math.randomseed(next_seed)
|
||||||
return {location = location, depth = depth, top = top}
|
return {location = location, depth = depth, top = top}
|
||||||
end
|
end
|
||||||
@ -90,24 +90,24 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local pit = get_pit(minp)
|
local pit = get_pit(minp)
|
||||||
|
|
||||||
if pit == nil then
|
if pit == nil then
|
||||||
return -- no pit in this map region
|
return -- no pit in this map region
|
||||||
end
|
end
|
||||||
|
|
||||||
local location_x = pit.location.x
|
local location_x = pit.location.x
|
||||||
local location_z = pit.location.z
|
local location_z = pit.location.z
|
||||||
|
|
||||||
-- early out if the pit is too far away to matter
|
-- early out if the pit is too far away to matter
|
||||||
-- The plus 20 is because the noise being added will generally be in the 0-20 range, see the "distance" calculation below
|
-- The plus 20 is because the noise being added will generally be in the 0-20 range, see the "distance" calculation below
|
||||||
if location_x - 20 > maxp.x or
|
if location_x - 20 > maxp.x or
|
||||||
location_x + 20 < minp.x or
|
location_x + 20 < minp.x or
|
||||||
location_z - 20 > maxp.z or
|
location_z - 20 > maxp.z or
|
||||||
location_z + 20 < minp.z
|
location_z + 20 < minp.z
|
||||||
then
|
then
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local top = pit.top
|
local top = pit.top
|
||||||
local depth = pit.depth
|
local depth = pit.depth
|
||||||
|
|
||||||
@ -128,7 +128,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
end
|
end
|
||||||
|
|
||||||
local nvals_perlin = mapgen_helper.perlin3d("pit_caves:pit", emin, emax, perlin_params)
|
local nvals_perlin = mapgen_helper.perlin3d("pit_caves:pit", emin, emax, perlin_params)
|
||||||
|
|
||||||
for vi, x, y, z in area:iterp_xyz(emin, emax) do
|
for vi, x, y, z in area:iterp_xyz(emin, emax) do
|
||||||
if not (ignore and ignore(data[vi])) then
|
if not (ignore and ignore(data[vi])) then
|
||||||
local distance_perturbation = (nvals_perlin[vi]+1)*10
|
local distance_perturbation = (nvals_perlin[vi]+1)*10
|
||||||
@ -140,7 +140,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
-- taper the top end
|
-- taper the top end
|
||||||
distance = distance - ((taper_min - y)/2)
|
distance = distance - ((taper_min - y)/2)
|
||||||
end
|
end
|
||||||
|
|
||||||
if distance < pit_radius then
|
if distance < pit_radius then
|
||||||
if y < depth + 20 and data[vi] ~= c_air then
|
if y < depth + 20 and data[vi] ~= c_air then
|
||||||
data[vi] = c_gravel
|
data[vi] = c_gravel
|
||||||
@ -152,7 +152,7 @@ minetest.register_on_generated(function(minp, maxp, seed)
|
|||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
--send data back to voxelmanip
|
--send data back to voxelmanip
|
||||||
vm:set_data(data)
|
vm:set_data(data)
|
||||||
--calc lighting
|
--calc lighting
|
||||||
@ -166,14 +166,6 @@ end)
|
|||||||
----------------------------------------------------------------------------------------------
|
----------------------------------------------------------------------------------------------
|
||||||
-- Debugging and sightseeing commands
|
-- Debugging and sightseeing commands
|
||||||
|
|
||||||
function round(val, decimal)
|
|
||||||
if (decimal) then
|
|
||||||
return math.floor( (val * 10^decimal) + 0.5) / (10^decimal)
|
|
||||||
else
|
|
||||||
return math.floor(val+0.5)
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local send_pit_state = function(pos, name)
|
local send_pit_state = function(pos, name)
|
||||||
local pit = get_pit(pos)
|
local pit = get_pit(pos)
|
||||||
if pit == nil then
|
if pit == nil then
|
||||||
|
Loading…
x
Reference in New Issue
Block a user