From 9fc06da19d0cdf6063ba6edd661a5fbc87527a54 Mon Sep 17 00:00:00 2001 From: tenplus1 Date: Fri, 30 Sep 2022 17:26:44 +0100 Subject: [PATCH] tidy code, add recipe to cut coconut if farming redo found --- api.txt | 3 +- biomes.lua | 22 +- crystal.lua | 21 +- decor.lua | 75 +-- dirt.lua | 23 +- extra.lua | 166 ++--- fences.lua | 9 +- fishing.lua | 6 +- flight.lua | 8 +- food.lua | 135 +++- init.lua | 15 +- leaves.lua | 132 ++-- lucky_block.lua | 30 +- mushroom.lua | 28 - onion.lua | 39 +- ores.lua | 12 +- plantlife.lua | 97 ++- plantpack.lua | 5 +- sapling.lua | 30 +- schematics/bamboo_tree.lua | 2 +- schematics/bigtree.lua | 2 +- schematics/birch_tree.lua | 2 +- schematics/bush.lua | 2 +- schematics/frosttrees.lua | 2 +- schematics/lemon_tree.lua | 78 +-- schematics/mushroomone.lua | 2 +- schematics/olive_tree.lua | 140 ++--- schematics/orange_tree.lua | 2 +- schematics/palmtree.lua | 2 +- schematics/pinetree.lua | 2 +- schematics/redwood_small_tree.lua | 380 ++++++------ schematics/redwood_tree.lua | 992 +++++++++++++++--------------- schematics/sakura.lua | 4 +- schematics/vinetree.lua | 2 +- schematics/volcanol.lua | 2 +- schematics/volcanom.lua | 2 +- schematics/waterlily.lua | 5 +- schematics/willow.lua | 2 +- schematics/yellowtree.lua | 2 +- schems.lua | 1 + sealife.lua | 110 ++-- stairs.lua | 2 +- strawberry.lua | 52 +- water.lua | 89 +-- wood.lua | 13 + 45 files changed, 1416 insertions(+), 1334 deletions(-) delete mode 100644 mushroom.lua diff --git a/api.txt b/api.txt index e563715..059da3c 100644 --- a/api.txt +++ b/api.txt @@ -29,4 +29,5 @@ You may also use a table that not only adds an item but the biome it can be foun ethereal.add_item("", "", {"ethereal:crystal_spike", "frost"}) -Please note that only Ethereal biome names can be used for specific finds. +Please note that only Ethereal biome names can be used for specific finds, unless mod +specifically adds ethereal as an optional dependency. diff --git a/biomes.lua b/biomes.lua index b729e2a..fa1aaa7 100644 --- a/biomes.lua +++ b/biomes.lua @@ -101,6 +101,7 @@ add_biome("mesa_ocean", -192, 1, 25, 28, ethereal.mesa, tmp = "default:dirt_with_coniferous_litter" + if not minetest.registered_nodes[tmp] then tmp = "ethereal:cold_dirt" end @@ -135,6 +136,7 @@ add_biome("caves", 4, 41, 15, 25, ethereal.caves, tmp = "default:silver_sand" + if not minetest.registered_nodes[tmp] then tmp = "default:sand" end @@ -166,8 +168,8 @@ add_biome("jumble", 1, 71, 25, 50, ethereal.jumble, add_biome("jumble_ocean", -192, 1, 25, 50, ethereal.jumble, nil, "default:sand", 1, "default:sand", 2) - tmp = "default:dirt_with_rainforest_litter" + if not minetest.registered_nodes[tmp] then tmp = "ethereal:jungle_dirt" end @@ -216,9 +218,9 @@ add_biome("plains", 3, 25, 65, 25, ethereal.plains, add_biome("plains_ocean", -192, 2, 55, 25, ethereal.plains, nil, "default:sand", 1, "default:sand", 2) - tmp = "default:dry_dirt_with_dry_grass" tmp2 = "default:dry_dirt" + if not minetest.registered_nodes[tmp] then tmp = "default:dirt_with_dry_grass" tmp2 = "default:dirt" @@ -230,7 +232,6 @@ add_biome("savanna", 3, 50, 55, 25, ethereal.savanna, add_biome("savanna_ocean", -192, 1, 55, 25, ethereal.savanna, nil, "default:sand", 1, "default:sand", 2) - add_biome("fiery", 5, 20, 75, 10, ethereal.fiery, nil, "ethereal:fiery_dirt", 1, "default:dirt", 3) @@ -264,12 +265,12 @@ if ethereal.glacier == 1 then node_river_water = "default:ice", node_riverbed = "default:gravel", depth_riverbed = 2, - node_dungeon = "ethereal:icebrick",--"default:ice", + node_dungeon = "ethereal:icebrick", node_dungeon_stair = "stairs:stair_ice", y_min = -8, y_max = 31000, heat_point = 0, - humidity_point = 50, + humidity_point = 50 }) minetest.register_biome({ @@ -282,10 +283,11 @@ if ethereal.glacier == 1 then y_min = -112, y_max = -9, heat_point = 0, - humidity_point = 50, + humidity_point = 50 }) end + if ethereal.tundra == 1 and minetest.registered_nodes["default:permafrost"] then minetest.register_biome({ @@ -296,7 +298,7 @@ if ethereal.tundra == 1 and minetest.registered_nodes["default:permafrost"] then y_max = 180, y_min = 47, heat_point = 0, - humidity_point = 40, + humidity_point = 40 }) minetest.register_biome({ @@ -311,7 +313,7 @@ if ethereal.tundra == 1 and minetest.registered_nodes["default:permafrost"] then y_max = 46, y_min = 2, heat_point = 0, - humidity_point = 40, + humidity_point = 40 }) minetest.register_biome({ @@ -326,7 +328,7 @@ if ethereal.tundra == 1 and minetest.registered_nodes["default:permafrost"] then y_max = 1, y_min = -3, heat_point = 0, - humidity_point = 40, + humidity_point = 40 }) minetest.register_biome({ @@ -341,6 +343,6 @@ if ethereal.tundra == 1 and minetest.registered_nodes["default:permafrost"] then y_max = -4, y_min = -112, heat_point = 0, - humidity_point = 40, + humidity_point = 40 }) end diff --git a/crystal.lua b/crystal.lua index 1f62dc7..bb7cbeb 100644 --- a/crystal.lua +++ b/crystal.lua @@ -1,6 +1,7 @@ local S = ethereal.intllib + -- Crystal Spike (Hurts if you touch it) -- thanks to ZonerDarkRevention for his DokuCraft DeviantArt crystal texture minetest.register_node("ethereal:crystal_spike", { @@ -17,15 +18,14 @@ minetest.register_node("ethereal:crystal_spike", { groups = {cracky = 1, falling_node = 1, puts_out_fire = 1, cools_lava = 1}, sounds = default.node_sound_glass_defaults(), selection_box = { - type = "fixed", - fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 0, 5 / 16}, + type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 0, 5 / 16} }, node_box = { - type = "fixed", - fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 0, 5 / 16}, + type = "fixed", fixed = {-5 / 16, -0.5, -5 / 16, 5 / 16, 0, 5 / 16} } }) + -- Crystal Ingot minetest.register_craftitem("ethereal:crystal_ingot", { description = S("Crystal Ingot"), @@ -97,6 +97,7 @@ minetest.register_craft({ replacements = {{"bucket:bucket_water", "bucket:bucket_empty"}} }) + -- Crystal Block minetest.register_node("ethereal:crystal_block", { description = S("Crystal Block"), @@ -121,6 +122,7 @@ minetest.register_craft({ recipe = {{"ethereal:crystal_block"}} }) + -- Crystal Sword (Powerful wee beastie) minetest.register_tool("ethereal:sword_crystal", { description = S("Crystal Sword"), @@ -134,9 +136,9 @@ minetest.register_tool("ethereal:sword_crystal", { times = {[1] = 1.70, [2] = 0.70, [3] = 0.25}, uses = 50, maxlevel = 3 - }, + } }, - damage_groups = {fleshy = 10}, + damage_groups = {fleshy = 10} }, groups = {sword = 1}, sound = {breaks = "default_tool_breaks"} @@ -151,6 +153,7 @@ minetest.register_craft({ } }) + -- Crystal Axe minetest.register_tool("ethereal:axe_crystal", { description = S("Crystal Axe"), @@ -190,6 +193,7 @@ minetest.register_craft({ } }) + -- Crystal Pick (This will last a while) minetest.register_tool("ethereal:pick_crystal", { description = S("Crystal Pickaxe"), @@ -220,6 +224,8 @@ minetest.register_craft({ } }) + +-- dig override for crystal shovel's soft touch ability local old_handle_node_drops = minetest.handle_node_drops function minetest.handle_node_drops(pos, drops, digger) @@ -269,6 +275,7 @@ minetest.register_craft({ } }) + -- Crystal Gilly Staff (replenishes air supply when used) minetest.register_tool("ethereal:crystal_gilly_staff", { description = S("Crystal Gilly Staff"), @@ -276,6 +283,7 @@ minetest.register_tool("ethereal:crystal_gilly_staff", { wield_image = "ethereal_crystal_gilly_staff.png", on_use = function(itemstack, user, pointed_thing) + if user:get_breath() < 10 then user:set_breath(10) end @@ -292,6 +300,7 @@ minetest.register_craft({ }, }) + -- Add [toolranks] mod support if found if minetest.get_modpath("toolranks") then diff --git a/decor.lua b/decor.lua index a6c6786..557f4a7 100644 --- a/decor.lua +++ b/decor.lua @@ -657,36 +657,19 @@ if minetest.get_modpath("butterflies") then num_spawn_by = 1 }) - -- restart butterfly functions when generated + -- restart butterfly timers + minetest.register_lbm({ + name = ":butterflies:butterfly_timer", + nodenames = { + "butterflies:butterfly_white", "butterflies:butterfly_red", + "butterflies:butterfly_violet" + }, + run_at_every_load = false, - -- get decoration ID - local butterflies = minetest.get_decoration_id("butterflies:butterfly") - - minetest.set_gen_notify({decoration = true}, {butterflies}) - - -- start nodetimers - minetest.register_on_generated(function(minp, maxp, blockseed) - - local gennotify = minetest.get_mapgen_object("gennotify") - local poslist = {} - - for _, pos in ipairs(gennotify["decoration#" .. butterflies] or {}) do - - local deco_pos = {x = pos.x, y = pos.y + 3, z = pos.z} - - table.insert(poslist, deco_pos) + action = function(pos) + minetest.get_node_timer(pos):start(5) end - - if #poslist ~= 0 then - - for i = 1, #poslist do - - local pos = poslist[i] - - minetest.get_node_timer(pos):start(1) - end - end - end) + }) end @@ -712,36 +695,16 @@ if minetest.get_modpath("fireflies") then decoration = "fireflies:hidden_firefly" }) - -- restart firefly functions when generated + -- restart firefly timers + minetest.register_lbm({ + name = ":fireflies:firefly_timer", + nodenames = {"fireflies:firefly", "fireflies:hidden_firefly"}, + run_at_every_load = false, - -- get decoration IDs - local firefly_low = minetest.get_decoration_id("fireflies:firefly_low") - - minetest.set_gen_notify({decoration = true}, {firefly_low, firefly_high}) - - -- start nodetimers - minetest.register_on_generated(function(minp, maxp, blockseed) - - local gennotify = minetest.get_mapgen_object("gennotify") - local poslist = {} - - for _, pos in ipairs(gennotify["decoration#" .. firefly_low] or {}) do - - local firefly_low_pos = {x = pos.x, y = pos.y + 3, z = pos.z} - - table.insert(poslist, firefly_low_pos) + action = function(pos) + minetest.get_node_timer(pos):start(5) end - - if #poslist ~= 0 then - - for i = 1, #poslist do - - local pos = poslist[i] - - minetest.get_node_timer(pos):start(1) - end - end - end) + }) end diff --git a/dirt.lua b/dirt.lua index 6bd4697..e153d55 100644 --- a/dirt.lua +++ b/dirt.lua @@ -1,11 +1,13 @@ local S = ethereal.intllib + -- override default dirt (to stop caves cutting away dirt) minetest.override_item("default:dirt", {is_ground_content = ethereal.cavedirt}) minetest.register_alias("ethereal:green_dirt", "default:dirt_with_grass") + -- dry dirt minetest.register_node("ethereal:dry_dirt", { description = S("Dried Dirt"), @@ -22,6 +24,8 @@ minetest.register_craft({ cooktime = 3, }) + +-- register ethereal dirt types local dirts = { "Bamboo", "Jungle", "Grove", "Prairie", "Cold", "Crystal", "Mushroom", "Fiery", "Gray" @@ -32,28 +36,27 @@ for n = 1, #dirts do local desc = dirts[n] local name = desc:lower() - minetest.register_node("ethereal:"..name.."_dirt", { - description = S(desc.." Dirt"), + minetest.register_node("ethereal:" .. name .. "_dirt", { + description = S(desc .. " Dirt"), tiles = { - "ethereal_grass_"..name.."_top.png", + "ethereal_grass_" .. name .. "_top.png", "default_dirt.png", { - name = "default_dirt.png^ethereal_grass_" - .. name .."_side.png", + name = "default_dirt.png^ethereal_grass_" .. name .. "_side.png", tileable_vertical = false } }, is_ground_content = ethereal.cavedirt, groups = {crumbly = 3, soil = 1, spreading_dirt_type = 1}, soil = { - base = "ethereal:"..name.."_dirt", + base = "ethereal:" .. name .. "_dirt", dry = "farming:soil", wet = "farming:soil_wet" }, drop = "default:dirt", sounds = default.node_sound_dirt_defaults({ - footstep = {name = "default_grass_footstep", gain = 0.25}, - }), + footstep = {name = "default_grass_footstep", gain = 0.25} + }) }) end @@ -150,6 +153,7 @@ local flower_spread = function(pos, node) end end + -- grow papyrus up to 4 high and bamboo up to 8 high local grow_papyrus = function(pos, node) @@ -197,6 +201,7 @@ local grow_papyrus = function(pos, node) end + -- loop through active abm's for _, ab in pairs(minetest.registered_abms) do @@ -232,6 +237,7 @@ for _, ab in pairs(minetest.registered_abms) do end end + -- If Baked Clay mod not active, make Red, Orange and Grey nodes if not minetest.get_modpath("bakedclay") then @@ -260,6 +266,7 @@ if not minetest.get_modpath("bakedclay") then }) end + -- Quicksand (old style, sinking inside shows black instead of yellow effect, -- works ok with noclip enabled though) minetest.register_node("ethereal:quicksand", { diff --git a/extra.lua b/extra.lua index fee39e1..2b4c4cd 100644 --- a/extra.lua +++ b/extra.lua @@ -1,6 +1,7 @@ local S = ethereal.intllib + -- Etherium Dust minetest.register_craftitem("ethereal:etherium_dust", { description = S("Etherium Dust"), @@ -25,6 +26,7 @@ minetest.register_node("ethereal:stone_with_etherium_ore", { sounds = default.node_sound_stone_defaults() }) + -- Bamboo Flooring minetest.register_node("ethereal:bamboo_floor", { description = S("Bamboo Floor"), @@ -46,7 +48,6 @@ minetest.register_node("ethereal:bamboo_floor", { sounds = default.node_sound_wood_defaults() }) --- Craft Bamboo into Bamboo Flooring minetest.register_craft({ output = "ethereal:bamboo_floor 2", recipe = { @@ -55,13 +56,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "ethereal:bamboo_block", - recipe = { - {"ethereal:bamboo_floor"}, - {"ethereal:bamboo_floor"} - } -}) -- Bamboo Block minetest.register_node("ethereal:bamboo_block", { @@ -72,6 +66,14 @@ minetest.register_node("ethereal:bamboo_block", { sounds = default.node_sound_wood_defaults() }) +minetest.register_craft({ + output = "ethereal:bamboo_block", + recipe = { + {"ethereal:bamboo_floor"}, + {"ethereal:bamboo_floor"} + } +}) + minetest.register_craft({ output = "ethereal:bamboo_block", recipe = { @@ -81,7 +83,8 @@ minetest.register_craft({ } }) --- Craft Bamboo into Paper + +-- Paper recipes minetest.register_craft({ output = "default:paper 6", recipe = { @@ -91,33 +94,6 @@ minetest.register_craft({ } }) -if ethereal.xcraft == true then - --- X pattern craft recipes (5x 'a' in X pattern gives 5 of 'b') -local cheat = { - {"default:cobble", "default:gravel", 5}, - {"default:gravel", "default:dirt", 5}, - {"default:dirt", "default:sand", 5}, - {"default:ice", "default:snow", 20}, - {"ethereal:dry_dirt", "default:desert_sand", 5}, - {"default:stone", "default:silver_sandstone", 5} -} - -for n = 1, #cheat do - - minetest.register_craft({ - output = cheat[n][2] .. " " .. cheat[n][3], - recipe = { - {cheat[n][1], "", cheat[n][1]}, - {"", cheat[n][1], ""}, - {cheat[n][1], "", cheat[n][1]} - } - }) -end - -end -- END if - --- Paper (2x3 string = 4 paper) minetest.register_craft({ output = "default:paper 2", recipe = { @@ -125,6 +101,43 @@ minetest.register_craft({ } }) + +-- 4x red mushrooms make mushroom block +minetest.register_craft({ + output = "ethereal:mushroom", + recipe = { + {"flowers:mushroom_red", "flowers:mushroom_red"}, + {"flowers:mushroom_red", "flowers:mushroom_red"} + } +}) + + +-- X pattern craft recipes (5x 'a' in X pattern gives 5 of 'b') +if ethereal.xcraft == true then + + local cheat = { + {"default:cobble", "default:gravel", 5}, + {"default:gravel", "default:dirt", 5}, + {"default:dirt", "default:sand", 5}, + {"default:ice", "default:snow", 20}, + {"ethereal:dry_dirt", "default:desert_sand", 5}, + {"default:stone", "default:silver_sandstone", 5} + } + + for n = 1, #cheat do + + minetest.register_craft({ + output = cheat[n][2] .. " " .. cheat[n][3], + recipe = { + {cheat[n][1], "", cheat[n][1]}, + {"", cheat[n][1], ""}, + {cheat[n][1], "", cheat[n][1]} + } + }) + end +end + + -- Palm Wax minetest.register_craftitem("ethereal:palm_wax", { description = S("Palm Wax"), @@ -142,42 +155,43 @@ minetest.register_craft({ local function add_candle(col, dcol) -local rcol = "" - -if col ~= "" then - rcol = col - col = "_" .. col -end - -minetest.register_node("ethereal:candle" .. col, { - description = S(dcol .. "Candle"), - drawtype = "plantlike", - inventory_image = "ethereal_candle" .. col .. "_static.png", - wield_image = "ethereal_candle" .. col .. "_static.png", - tiles = { - { - name = "ethereal_candle" .. col .. ".png", - animation = { - type="vertical_frames", - aspect_w = 32, - aspect_h = 32, - length = 1.0 - } - } - }, - paramtype = "light", - light_source = 11, - sunlight_propagates = true, - walkable = false, - groups = {candle = 1, dig_immediate = 3, attached_node = 1}, - sounds = default.node_sound_defaults(), - selection_box = { - type = "fixed", - fixed = { -0.15, -0.5, -0.15, 0.15, 0, 0.15 } - } -}) + local rcol = "" if col ~= "" then + rcol = col + col = "_" .. col + end + + minetest.register_node("ethereal:candle" .. col, { + description = S(dcol .. "Candle"), + drawtype = "plantlike", + inventory_image = "ethereal_candle" .. col .. "_static.png", + wield_image = "ethereal_candle" .. col .. "_static.png", + tiles = { + { + name = "ethereal_candle" .. col .. ".png", + animation = { + type="vertical_frames", + aspect_w = 32, + aspect_h = 32, + length = 1.0 + } + } + }, + paramtype = "light", + light_source = 11, + sunlight_propagates = true, + walkable = false, + groups = {candle = 1, dig_immediate = 3, attached_node = 1}, + sounds = default.node_sound_defaults(), + selection_box = { + type = "fixed", + fixed = { -0.15, -0.5, -0.15, 0.15, 0, 0.15 } + } + }) + + if col ~= "" then + minetest.register_craft({ output = "ethereal:candle" .. col, recipe = { @@ -203,6 +217,7 @@ add_candle("red", "Red ") add_candle("violet", "Violet ") add_candle("yellow", "Yellow ") + -- white candle recipe minetest.register_craft({ output = "ethereal:candle", @@ -221,6 +236,7 @@ minetest.register_craft({ } }) + -- Wooden Bowl minetest.register_craftitem("ethereal:bowl", { description = S("Bowl"), @@ -240,6 +256,7 @@ if not minetest.registered_items["farming:bowl"] then }) end + -- stone Ladder minetest.register_node("ethereal:stone_ladder", { description = S("Stone Ladder"), @@ -270,6 +287,7 @@ minetest.register_craft({ } }) + -- Paper Wall minetest.register_node("ethereal:paper_wall", { drawtype = "nodebox", @@ -305,6 +323,7 @@ minetest.register_craft({ } }) + -- Glostone (A little bit of light decoration) minetest.register_node("ethereal:glostone", { description = S("Glo Stone"), @@ -316,7 +335,6 @@ minetest.register_node("ethereal:glostone", { }) minetest.register_craft({ --- type = "shapeless", output = "ethereal:glostone", recipe = { {"", "default:torch", ""}, @@ -325,6 +343,7 @@ minetest.register_craft({ } }) + -- Charcoal Lump minetest.register_craftitem("ethereal:charcoal_lump", { description = S("Lump of Charcoal"), @@ -360,6 +379,8 @@ minetest.register_craft({ } }) + +-- staff of light alternative node list ethereal.lightstaff_recipes = { ["nether:rack"] = "nether:glowstone", ["nether:rack_deep"] = "nether:glowstone_deep" @@ -369,10 +390,11 @@ ethereal.lightstaff_recipes = { minetest.register_tool("ethereal:light_staff", { description = S("Staff of Light"), inventory_image = "ethereal_light_staff.png", - light_source = 13, -- used by other mods + light_source = 13, wield_image = "ethereal_light_staff.png", sound = {breaks = "default_tool_breaks"}, stack_max = 1, + on_use = function(itemstack, user, pointed_thing) if pointed_thing.type ~= "node" then diff --git a/fences.lua b/fences.lua index 2d624b4..73d5c17 100644 --- a/fences.lua +++ b/fences.lua @@ -86,15 +86,12 @@ if door_mod then }, description = S("Sakura Wood Door"), inventory_image = "ethereal_sakura_door_inv.png", - groups = { - snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, - flammable = 2 - }, + groups = {snappy = 1, choppy = 2, oddly_breakable_by_hand = 2, flammable = 2}, sound_open = "doors_glass_door_open", sound_close = "doors_glass_door_close", recipe = { - {"group:stick", "default:paper"}, - {"default:paper", "group:stick"}, + {"group:stick", "default:paper"}, + {"default:paper", "group:stick"}, {"ethereal:sakura_wood", "ethereal:sakura_wood"} } }) diff --git a/fishing.lua b/fishing.lua index e5e087f..f6c8b07 100644 --- a/fishing.lua +++ b/fishing.lua @@ -1,6 +1,6 @@ --[[ -This fishing routine is inspired by the great work Rootyjr did for MineClone2 + This fishing routine is inspired by the great work Rootyjr did for MineClone2 ]]-- @@ -44,9 +44,9 @@ local bonus_items = { } local default_item = "default:dirt" - local random = math.random -- yup we use this a lot + -- add item function ethereal.add_item = function(fish, junk, bonus) @@ -529,7 +529,7 @@ minetest.register_craftitem("ethereal:worm", { minetest.register_craft({ output = "ethereal:worm", recipe = { - {"default:dirt","default:dirt"} + {"default:dirt", "default:dirt"} } }) diff --git a/flight.lua b/flight.lua index 0328db0..87fef73 100644 --- a/flight.lua +++ b/flight.lua @@ -41,9 +41,7 @@ end local function set_flight(user, set) - if not user then return end - - local name = user:get_player_name() + local name = user and user:get_player_name() ; if not name then return end local privs = minetest.get_player_privs(name) privs.fly = set @@ -109,10 +107,8 @@ minetest.register_on_joinplayer(function(player) -- wait 2 seconds before doing flight checks on player minetest.after(2.0, function(player) - if not player then return end - -- get player name and timer - local name = player:get_player_name() ; if not name then return end + local name = player and player:get_player_name() ; if not name then return end local timer = get_timer(player) -- if timer is blank and player can already fly then default and return diff --git a/food.lua b/food.lua index c2b8011..9133f9d 100644 --- a/food.lua +++ b/food.lua @@ -1,6 +1,7 @@ local S = ethereal.intllib + -- Banana (Heals one heart when eaten) minetest.register_node("ethereal:banana", { description = S("Banana"), @@ -22,7 +23,9 @@ minetest.register_node("ethereal:banana", { drop = "ethereal:banana", on_use = minetest.item_eat(2), sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer) + if placer:is_player() then minetest.set_node(pos, {name = "ethereal:banana", param2 = 1}) end @@ -50,6 +53,7 @@ minetest.register_node("ethereal:banana_bunch", { drop = "ethereal:banana_bunch", on_use = minetest.item_eat(6), sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer) if placer:is_player() then minetest.set_node(pos, {name = "ethereal:banana_bunch", param2 = 1}) @@ -86,6 +90,7 @@ minetest.register_craft({ recipe = "ethereal:banana_dough" }) + -- Orange (Heals 2 hearts when eaten) minetest.register_node("ethereal:orange", { description = S("Orange"), @@ -107,13 +112,16 @@ minetest.register_node("ethereal:orange", { drop = "ethereal:orange", on_use = minetest.item_eat(4), sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer) + if placer:is_player() then minetest.set_node(pos, {name = "ethereal:orange", param2 = 1}) end - end, + end }) + -- Pine Nuts (Heals 1/2 heart when eaten) minetest.register_craftitem("ethereal:pine_nuts", { description = S("Pine Nuts"), @@ -132,7 +140,15 @@ minetest.register_craftitem("ethereal:banana_bread", { on_use = minetest.item_eat(6) }) --- Coconut (Gives 4 coconut slices, each heal 1/2 heart) + +-- coconut settings if farming redo found +local fredo = minetest.get_modpath("farming") and farming and farming.mod + and farming.mod == "redo" + +local cdrp = fredo and "ethereal:coconut" or "ethereal:coconut_slice 4" +local cgrp = fredo and {3, 2} or {1, 1} + +-- Coconut (drops 4x coconut slice by default, whole coconut if farming redo found) minetest.register_node("ethereal:coconut", { description = S("Coconut"), drawtype = "plantlike", @@ -147,11 +163,19 @@ minetest.register_node("ethereal:coconut", { fixed = {-0.31, -0.43, -0.31, 0.31, 0.44, 0.31} }, groups = { - food_coconut = 1, snappy = 1, oddly_breakable_by_hand = 1, cracky = 1, - choppy = 1, flammable = 1, leafdecay = 3, leafdecay_drop = 1 + food_coconut = 1, snappy = cgrp[1], oddly_breakable_by_hand = cgrp[2], + cracky = cgrp[1], choppy = cgrp[1], flammable = 1, + leafdecay = 3, leafdecay_drop = 1 }, - drop = "ethereal:coconut_slice 4", - sounds = default.node_sound_wood_defaults() + drop = cdrp, + sounds = default.node_sound_wood_defaults(), + + after_place_node = function(pos, placer) + + if placer:is_player() then + minetest.set_node(pos, {name = "ethereal:coconut", param2 = 1}) + end + end }) -- Coconut Slice (Heals half heart when eaten) @@ -163,6 +187,17 @@ minetest.register_craftitem("ethereal:coconut_slice", { on_use = minetest.item_eat(1) }) +-- coconut slice recipe (farming redo) +if fredo then + + minetest.register_craft({ + output = "ethereal:coconut_slice 4", + recipe = {{"farming:cutting_board", "ethereal:coconut"}}, + replacements = {{"farming:cutting_board", "farming:cutting_board"}} + }) +end + +-- coconut slice into whole coconut minetest.register_craft({ output = "ethereal:coconut", recipe = { @@ -171,6 +206,7 @@ minetest.register_craft({ } }) + -- Golden Apple (Found on Healing Tree, heals all 10 hearts) minetest.register_node("ethereal:golden_apple", { description = S("Golden Apple"), @@ -190,21 +226,28 @@ minetest.register_node("ethereal:golden_apple", { leafdecay = 3,leafdecay_drop = 1 }, drop = "ethereal:golden_apple", + sounds = default.node_sound_leaves_defaults(), + on_use = function(itemstack, user, pointed_thing) + if user then + user:set_hp(20) + return minetest.do_item_eat(2, nil, itemstack, user, pointed_thing) end end, - sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer, itemstack) + if placer:is_player() then minetest.set_node(pos, {name = "ethereal:golden_apple", param2 = 1}) end end }) --- Hearty Stew (Heals 5 hearts - thanks to ZonerDarkRevention for his DokuCraft DeviantArt bowl texture) +-- Hearty Stew (Heals 5 hearts) +-- thanks to ZonerDarkRevention for his DokuCraft DeviantArt bowl texture) minetest.register_craftitem("ethereal:hearty_stew", { description = S("Hearty Stew"), inventory_image = "ethereal_hearty_stew.png", @@ -222,17 +265,19 @@ minetest.register_craft({ }) -- Extra recipe for hearty stew -if farming and farming.mod and farming.mod == "redo" then -minetest.register_craft({ - output = "ethereal:hearty_stew", - recipe = { - {"group:food_onion","flowers:mushroom_brown", "group:food_beans"}, - {"","flowers:mushroom_brown", ""}, - {"","group:food_bowl", ""} - } -}) +if fredo then + + minetest.register_craft({ + output = "ethereal:hearty_stew", + recipe = { + {"group:food_onion","flowers:mushroom_brown", "group:food_beans"}, + {"","flowers:mushroom_brown", ""}, + {"","group:food_bowl", ""} + } + }) end + -- Bucket of Cactus Pulp minetest.register_craftitem("ethereal:bucket_cactus", { description = S("Bucket of Cactus Pulp"), @@ -260,18 +305,18 @@ minetest.register_craftitem("ethereal:firethorn_jelly", { if minetest.registered_items["farming:bowl"] then -minetest.register_craft({ - output = "ethereal:firethorn_jelly", - recipe = { - {"farming:mortar_pestle","vessels:glass_bottle", ""}, - {"ethereal:firethorn", "ethereal:firethorn", "ethereal:firethorn"}, - {"bucket:bucket_water", "bucket:bucket_water", "bucket:bucket_water"} - }, - replacements = { - {"bucket:bucket_water", "bucket:bucket_empty 3"}, - {"farming:mortar_pestle", "farming:mortar_pestle"} - } -}) + minetest.register_craft({ + output = "ethereal:firethorn_jelly", + recipe = { + {"farming:mortar_pestle","vessels:glass_bottle", ""}, + {"ethereal:firethorn", "ethereal:firethorn", "ethereal:firethorn"}, + {"bucket:bucket_water", "bucket:bucket_water", "bucket:bucket_water"} + }, + replacements = { + {"bucket:bucket_water", "bucket:bucket_empty 3"}, + {"farming:mortar_pestle", "farming:mortar_pestle"} + } + }) end @@ -296,7 +341,9 @@ minetest.register_node("ethereal:lemon", { drop = "ethereal:lemon", on_use = minetest.item_eat(3), sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer) + if placer:is_player() then minetest.set_node(pos, {name = "ethereal:lemon", param2 = 1}) end @@ -351,6 +398,7 @@ minetest.register_craft({ } }) + -- Olive minetest.register_node("ethereal:olive", { description = S("Olive"), @@ -373,7 +421,9 @@ minetest.register_node("ethereal:olive", { drop = "ethereal:olive", on_use = minetest.item_eat(1), sounds = default.node_sound_leaves_defaults(), + after_place_node = function(pos, placer) + if placer:is_player() then minetest.set_node(pos, {name = "ethereal:olive", param2 = 1}) end @@ -400,6 +450,7 @@ minetest.register_craft({ } }) + -- Kappa Maki (sushi with cucumber) minetest.register_craftitem("ethereal:sushi_kappamaki", { description = S("Kappa Maki Sushi"), @@ -414,6 +465,7 @@ minetest.register_craft({ } }) + -- Nigiri (sushi with raw fish) minetest.register_craftitem("ethereal:sushi_nigiri", { description = S("Nigiri Sushi"), @@ -428,6 +480,7 @@ minetest.register_craft({ } }) + -- Tamago (sushi with sweet egg) minetest.register_craftitem("ethereal:sushi_tamago", { description = S("Tamago Sushi"), @@ -442,12 +495,16 @@ minetest.register_craft({ } }) + -- Fugu (prepared pufferfish) minetest.register_craftitem("ethereal:fugu", { description = S("Fugusashi"), inventory_image = "ethereal_fugu.png", + on_use = function(itemstack, user, pointed_thing) + if user then + if math.random(12) == 1 then return minetest.do_item_eat(-16, nil, itemstack, user, pointed_thing) else @@ -468,6 +525,7 @@ minetest.register_craft({ } }) + -- Teriyaki Chicken minetest.register_craftitem("ethereal:teriyaki_chicken", { description = S("Teriyaki Chicken"), @@ -487,6 +545,7 @@ minetest.register_craft({ } }) + -- Teriyaki Beef minetest.register_craftitem("ethereal:teriyaki_beef", { description = S("Teriyaki Beef"), @@ -506,3 +565,21 @@ minetest.register_craft({ {"group:food_saucepan", "farming:saucepan"} } }) + + +-- mushroom soup (Heals 1 heart) +minetest.register_craftitem("ethereal:mushroom_soup", { + description = S("Mushroom Soup"), + inventory_image = "ethereal_mushroom_soup.png", + groups = {drink = 1}, + on_use = minetest.item_eat(5, "ethereal:bowl") +}) + +minetest.register_craft({ + output = "ethereal:mushroom_soup", + recipe = { + {"group:food_mushroom"}, + {"group:food_mushroom"}, + {"group:food_bowl"} + } +}) diff --git a/init.lua b/init.lua index 1fea26a..b0a34ac 100644 --- a/init.lua +++ b/init.lua @@ -7,7 +7,7 @@ ]] -ethereal = {version = "20220424"} +ethereal = {version = "20220930"} local function setting(stype, name, default) @@ -75,12 +75,14 @@ local path = minetest.get_modpath("ethereal") -- Load settings.conf file if found local input = io.open(path.."/settings.conf", "r") + if input then dofile(path .. "/settings.conf") input:close() input = nil end + -- Intllib local S if minetest.get_translator then @@ -96,6 +98,7 @@ else end ethereal.intllib = S + -- Falling node function ethereal.check_falling = minetest.check_for_falling or nodeupdate @@ -105,8 +108,8 @@ function ethereal.check_creative(name) return creative_mode_cache or minetest.check_player_privs(name, {creative = true}) end + dofile(path .. "/plantlife.lua") -dofile(path .. "/mushroom.lua") dofile(path .. "/onion.lua") dofile(path .. "/crystal.lua") dofile(path .. "/water.lua") @@ -127,12 +130,17 @@ dofile(path .. "/schems.lua") dofile(path .. "/decor.lua") dofile(path .. "/compatibility.lua") dofile(path .. "/stairs.lua") -dofile(path .. "/lucky_block.lua") +-- add flight if enabled if ethereal.flight then dofile(path .. "/flight.lua") end +-- add lucky blocks if mod active +if minetest.get_modpath("lucky_block") then + dofile(path .. "/lucky_block.lua") +end + -- Set bonemeal aliases if minetest.get_modpath("bonemeal") then minetest.register_alias("ethereal:bone", "bonemeal:bone") @@ -146,4 +154,5 @@ if minetest.get_modpath("xanadu") then dofile(path .. "/plantpack.lua") end + print ("[MOD] Ethereal loaded") diff --git a/leaves.lua b/leaves.lua index a75e37d..0f37943 100644 --- a/leaves.lua +++ b/leaves.lua @@ -1,6 +1,7 @@ local S = ethereal.intllib + -- set leaftype (value inside init.lua) local leaftype = "plantlike" local leafscale = 1.4 @@ -486,83 +487,84 @@ minetest.register_craft({ burntime = 1 }) + -- compatibility check for new mt version with leafdecay function if minetest.registered_nodes["default:dirt_with_rainforest_litter"] then -default.register_leafdecay({ - trunks = {"default:tree"}, - leaves = { - "default:apple", "default:leaves", - "ethereal:orange", "ethereal:orange_leaves", - "ethereal:lemon", "ethereal:lemon_leaves", - "ethereal:vine" - }, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"default:tree"}, + leaves = { + "default:apple", "default:leaves", + "ethereal:orange", "ethereal:orange_leaves", + "ethereal:lemon", "ethereal:lemon_leaves", + "ethereal:vine" + }, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:willow_trunk"}, - leaves = {"ethereal:willow_twig"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:willow_trunk"}, + leaves = {"ethereal:willow_twig"}, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:redwood_trunk"}, - leaves = {"ethereal:redwood_leaves"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:redwood_trunk"}, + leaves = {"ethereal:redwood_leaves"}, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:frost_tree"}, - leaves = {"ethereal:frost_leaves"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:frost_tree"}, + leaves = {"ethereal:frost_leaves"}, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:yellow_trunk"}, - leaves = {"ethereal:yellowleaves", "ethereal:golden_apple"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:yellow_trunk"}, + leaves = {"ethereal:yellowleaves", "ethereal:golden_apple"}, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:palm_trunk"}, - leaves = {"ethereal:palmleaves", "ethereal:coconut"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:palm_trunk"}, + leaves = {"ethereal:palmleaves", "ethereal:coconut"}, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:banana_trunk"}, - leaves = {"ethereal:bananaleaves", "ethereal:banana", "ethereal:banana_bunch"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:banana_trunk"}, + leaves = {"ethereal:bananaleaves", "ethereal:banana", "ethereal:banana_bunch"}, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:birch_trunk"}, - leaves = {"ethereal:birch_leaves"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:birch_trunk"}, + leaves = {"ethereal:birch_leaves"}, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:bamboo"}, - leaves = {"ethereal:bamboo_leaves"}, - radius = 2 -}) + default.register_leafdecay({ + trunks = {"ethereal:bamboo"}, + leaves = {"ethereal:bamboo_leaves"}, + radius = 2 + }) -default.register_leafdecay({ - trunks = {"ethereal:sakura_trunk"}, - leaves = {"ethereal:sakura_leaves", "ethereal:sakura_leaves2"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:sakura_trunk"}, + leaves = {"ethereal:sakura_leaves", "ethereal:sakura_leaves2"}, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:olive_trunk"}, - leaves = {"ethereal:olive_leaves", "ethereal:olive"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:olive_trunk"}, + leaves = {"ethereal:olive_leaves", "ethereal:olive"}, + radius = 3 + }) -default.register_leafdecay({ - trunks = {"ethereal:mushroom_trunk"}, - leaves = {"ethereal:mushroom", "ethereal:mushroom_pore"}, - radius = 3 -}) + default.register_leafdecay({ + trunks = {"ethereal:mushroom_trunk"}, + leaves = {"ethereal:mushroom", "ethereal:mushroom_pore"}, + radius = 3 + }) end diff --git a/lucky_block.lua b/lucky_block.lua index e0dd2f4..7ed8c75 100644 --- a/lucky_block.lua +++ b/lucky_block.lua @@ -1,8 +1,4 @@ --- add lucky blocks - -if minetest.get_modpath("lucky_block") then - local epath = minetest.get_modpath("ethereal") .. "/schematics/" lucky_block:add_schematics({ @@ -94,20 +90,20 @@ lucky_block:add_blocks({ }) if minetest.get_modpath("3d_armor") then -lucky_block:add_blocks({ - {"dro", {"3d_armor:helmet_crystal"}}, - {"dro", {"3d_armor:chestplate_crystal"}}, - {"dro", {"3d_armor:leggings_crystal"}}, - {"dro", {"3d_armor:boots_crystal"}}, - {"lig"} -}) + + lucky_block:add_blocks({ + {"dro", {"3d_armor:helmet_crystal"}}, + {"dro", {"3d_armor:chestplate_crystal"}}, + {"dro", {"3d_armor:leggings_crystal"}}, + {"dro", {"3d_armor:boots_crystal"}}, + {"lig"} + }) end if minetest.get_modpath("shields") then -lucky_block:add_blocks({ - {"dro", {"shields:shield_crystal"}}, - {"exp"} -}) -end -end -- END IF + lucky_block:add_blocks({ + {"dro", {"shields:shield_crystal"}}, + {"exp"} + }) +end diff --git a/mushroom.lua b/mushroom.lua deleted file mode 100644 index 2e92c0e..0000000 --- a/mushroom.lua +++ /dev/null @@ -1,28 +0,0 @@ - -local S = ethereal.intllib - --- mushroom soup (Heals 1 heart) -minetest.register_craftitem("ethereal:mushroom_soup", { - description = S("Mushroom Soup"), - inventory_image = "ethereal_mushroom_soup.png", - groups = {drink = 1}, - on_use = minetest.item_eat(5, "ethereal:bowl") -}) - -minetest.register_craft({ - output = "ethereal:mushroom_soup", - recipe = { - {"group:food_mushroom"}, - {"group:food_mushroom"}, - {"group:food_bowl"} - } -}) - --- 4x red mushrooms make mushroom block -minetest.register_craft({ - output = "ethereal:mushroom", - recipe = { - {"flowers:mushroom_red", "flowers:mushroom_red"}, - {"flowers:mushroom_red", "flowers:mushroom_red"} - } -}) diff --git a/onion.lua b/onion.lua index aae064c..1d17855 100644 --- a/onion.lua +++ b/onion.lua @@ -1,20 +1,23 @@ local S = ethereal.intllib + -- wild onion minetest.register_craftitem("ethereal:wild_onion_plant", { description = S("Wild Onion"), inventory_image = "ethereal_wild_onion.png", wield_image = "ethereal_wild_onion.png", groups = {food_onion = 1, flammable = 2}, + on_use = minetest.item_eat(2), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:wild_onion_1") - end, - on_use = minetest.item_eat(2) + end }) + -- Define Onion growth stages -local crop_def = { +local def = { drawtype = "plantlike", tiles = {"ethereal_wild_onion_1.png"}, paramtype = "light", @@ -30,44 +33,45 @@ local crop_def = { snappy = 3, flammable = 2, plant = 1, attached_node = 1, growing = 1, not_in_creative_inventory = 1 }, - sounds = default.node_sound_leaves_defaults(), + sounds = default.node_sound_leaves_defaults() } + --stage 1 -minetest.register_node("ethereal:onion_1", table.copy(crop_def)) +minetest.register_node("ethereal:onion_1", table.copy(def)) --stage 2 -crop_def.tiles = {"ethereal_wild_onion_2.png"} -minetest.register_node("ethereal:onion_2", table.copy(crop_def)) +def.tiles = {"ethereal_wild_onion_2.png"} +minetest.register_node("ethereal:onion_2", table.copy(def)) --stage 3 -crop_def.tiles = {"ethereal_wild_onion_3.png"} -minetest.register_node("ethereal:onion_3", table.copy(crop_def)) +def.tiles = {"ethereal_wild_onion_3.png"} +minetest.register_node("ethereal:onion_3", table.copy(def)) --stage 4 -crop_def.tiles = {"ethereal_wild_onion_4.png"} -crop_def.drop = { +def.tiles = {"ethereal_wild_onion_4.png"} +def.drop = { items = { {items = {"ethereal:wild_onion_plant"}, rarity = 1}, {items = {"ethereal:wild_onion_plant 2"}, rarity = 3}, } } -minetest.register_node("ethereal:onion_4", table.copy(crop_def)) +minetest.register_node("ethereal:onion_4", table.copy(def)) --stage 5 -crop_def.tiles = {"ethereal_wild_onion_5.png"} -crop_def.groups.growing = nil -crop_def.selection_box = { +def.tiles = {"ethereal_wild_onion_5.png"} +def.groups.growing = nil +def.selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5} } -crop_def.drop = { +def.drop = { items = { {items = {"ethereal:wild_onion_plant 2"}, rarity = 1}, {items = {"ethereal:wild_onion_plant 3"}, rarity = 2}, } } -minetest.register_node("ethereal:onion_5", table.copy(crop_def)) +minetest.register_node("ethereal:onion_5", table.copy(def)) -- growing routine if farming redo isn't present @@ -94,6 +98,7 @@ else interval = 11, chance = 20, catch_up = false, + action = function(pos, node) -- are we on wet soil? diff --git a/ores.lua b/ores.lua index 0f108a1..6dd013e 100644 --- a/ores.lua +++ b/ores.lua @@ -4,12 +4,12 @@ local add_stratum = function(y_min, y_max, node) minetest.register_ore({ - ore_type = "stratum", - ore = node, - wherein = {"bakedclay:orange"}, - clust_scarcity = 1, - y_max = y_max, - y_min = y_min, + ore_type = "stratum", + ore = node, + wherein = {"bakedclay:orange"}, + clust_scarcity = 1, + y_max = y_max, + y_min = y_min, biomes = {"mesa"} }) end diff --git a/plantlife.lua b/plantlife.lua index 0fdbdb5..09a36d2 100644 --- a/plantlife.lua +++ b/plantlife.lua @@ -1,6 +1,7 @@ local S = ethereal.intllib + -- Firethorn (poisonous when eaten raw, must be crushed and washed in flowing water 1st) minetest.register_node("ethereal:firethorn", { description = S("Firethorn Shrub"), @@ -21,6 +22,7 @@ minetest.register_node("ethereal:firethorn", { } }) + -- Fire Flower minetest.register_node("ethereal:fire_flower", { description = S("Fire Flower"), @@ -56,6 +58,7 @@ minetest.register_craft({ burntime = 20 }) + -- Fire Dust minetest.register_craftitem("ethereal:fire_dust", { description = S("Fire Dust"), @@ -73,6 +76,7 @@ minetest.register_craft({ burntime = 10 }) + -- vines minetest.register_node("ethereal:vine", { description = S("Vine"), @@ -102,6 +106,7 @@ minetest.register_craft({ } }) + -- light strings (glowing vine) minetest.register_node("ethereal:lightstring", { description = S("Light String Vine"), @@ -132,6 +137,7 @@ minetest.register_craft({ } }) + -- Fern (boston) minetest.register_node("ethereal:fern", { description = S("Fern"), @@ -168,6 +174,7 @@ minetest.register_craftitem("ethereal:fern_tubers", { on_use = minetest.item_eat(1) }) + -- Red Shrub (not flammable) minetest.register_node("ethereal:dry_shrub", { description = S("Fiery Dry Shrub"), @@ -188,6 +195,7 @@ minetest.register_node("ethereal:dry_shrub", { } }) + -- Grey Shrub (not Flammable - too cold to burn) minetest.register_node("ethereal:snowygrass", { description = S("Snowy Grass"), @@ -209,6 +217,7 @@ minetest.register_node("ethereal:snowygrass", { } }) + -- Crystal Shrub (not Flammable - too cold to burn) minetest.register_node("ethereal:crystalgrass", { description = S("Crystal Grass"), @@ -230,6 +239,7 @@ minetest.register_node("ethereal:crystalgrass", { } }) + -- Define Moss Types (Has grass textures on all sides) local add_moss = function(typ, descr, texture, receipe_item) @@ -242,69 +252,40 @@ local add_moss = function(typ, descr, texture, receipe_item) }) minetest.register_craft({ - type = "shapeless", output = "ethereal:" .. typ .. "_moss", - recipe = {"default:dirt", receipe_item} + recipe = {{"default:dirt", receipe_item}} }) end -add_moss( "crystal", "Crystal", "ethereal_grass_crystal_top.png", "ethereal:frost_leaves") -add_moss( "mushroom", "Mushroom", "ethereal_grass_mushroom_top.png", "ethereal:mushroom") -add_moss( "fiery", "Fiery", "ethereal_grass_fiery_top.png", "ethereal:dry_shrub") -add_moss( "gray", "Gray", "ethereal_grass_gray_top.png", "ethereal:snowygrass") -add_moss( "green", "Green", "default_grass.png", "default:jungleleaves") +add_moss("crystal", "Crystal", "ethereal_grass_crystal_top.png", "ethereal:frost_leaves") +add_moss("mushroom", "Mushroom", "ethereal_grass_mushroom_top.png", "ethereal:mushroom") +add_moss("fiery", "Fiery", "ethereal_grass_fiery_top.png", "ethereal:dry_shrub") +add_moss("gray", "Gray", "ethereal_grass_gray_top.png", "ethereal:snowygrass") +add_moss("green", "Green", "default_grass.png", "default:jungleleaves") + -- Illuminated Cave Shrooms (Red, Green and Blue) -minetest.register_node("ethereal:illumishroom", { - description = S("Red Illumishroom"), - drawtype = "plantlike", - tiles = {"ethereal_illumishroom_red.png"}, - inventory_image = "ethereal_illumishroom_red.png", - wield_image = "ethereal_illumishroom_red.png", - paramtype = "light", - light_source = 5, - sunlight_propagates = true, - walkable = false, - groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16} - } -}) +local add_shroom = function(name, desc, ad) -minetest.register_node("ethereal:illumishroom2", { - description = S("Green Illumishroom"), - drawtype = "plantlike", - tiles = {"ethereal_illumishroom_green.png"}, - inventory_image = "ethereal_illumishroom_green.png", - wield_image = "ethereal_illumishroom_green.png", - paramtype = "light", - light_source = 5, - sunlight_propagates = true, - walkable = false, - groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16} - } -}) + minetest.register_node("ethereal:illumishroom" .. ad, { + description = S(desc .. " Illumishroom"), + drawtype = "plantlike", + tiles = {"ethereal_illumishroom_" .. name .. ".png"}, + inventory_image = "ethereal_illumishroom_" .. name .. ".png", + wield_image = "ethereal_illumishroom_" .. name .. ".png", + paramtype = "light", + light_source = 5, + sunlight_propagates = true, + walkable = false, + groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, + sounds = default.node_sound_leaves_defaults(), + selection_box = { + type = "fixed", + fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16} + } + }) +end -minetest.register_node("ethereal:illumishroom3", { - description = S("Cyan Illumishroom"), - drawtype = "plantlike", - tiles = {"ethereal_illumishroom_cyan.png"}, - inventory_image = "ethereal_illumishroom_cyan.png", - wield_image = "ethereal_illumishroom_cyan.png", - paramtype = "light", - light_source = 5, - sunlight_propagates = true, - walkable = false, - groups = {dig_immediate = 3, attached_node = 1, flammable = 3}, - sounds = default.node_sound_leaves_defaults(), - selection_box = { - type = "fixed", - fixed = {-6 / 16, -0.5, -6 / 16, 6 / 16, 0.47, 6 / 16} - } -}) +add_shroom("red", "Red", "") +add_shroom("green", "Green", "2") +add_shroom("cyan", "Cyan", "3") diff --git a/plantpack.lua b/plantpack.lua index b286cde..8df21e5 100644 --- a/plantpack.lua +++ b/plantpack.lua @@ -96,7 +96,10 @@ minetest.register_decoration({ minetest.register_decoration({ deco_type = "simple", - place_on = {"ethereal:jungle_dirt", "default:dirt_with_grass", "default:dirt_with_rainforest_litter"}, + place_on = { + "ethereal:jungle_dirt", "default:dirt_with_grass", + "default:dirt_with_rainforest_litter" + }, sidelen = 16, fill_ratio = 0.007, biomes = {"junglee", "jumble"}, diff --git a/sapling.lua b/sapling.lua index 9035d4b..270735b 100644 --- a/sapling.lua +++ b/sapling.lua @@ -1,6 +1,7 @@ local S = ethereal.intllib + -- Bamboo Sprout minetest.register_node("ethereal:bamboo_sprout", { description = S("Bamboo Sprout"), @@ -24,6 +25,7 @@ minetest.register_node("ethereal:bamboo_sprout", { grown_height = 11 }) + -- Register Saplings local register_sapling = function(name, desc, texture, height) @@ -68,21 +70,25 @@ register_sapling("ethereal:olive_tree", "Olive", "ethereal_olive_tree_sapling", local add_tree = function (pos, ofx, ofy, ofz, schem, replace) + -- check for schematic if not schem then print (S("Schematic not found")) return end + -- remove sapling and place schematic minetest.swap_node(pos, {name = "air"}) - minetest.place_schematic( - {x = pos.x - ofx, y = pos.y - ofy, z = pos.z - ofz}, - schem, 0, replace, false) + + minetest.place_schematic({x = pos.x - ofx, y = pos.y - ofy, z = pos.z - ofz}, + schem, 0, replace, false) end + local path = minetest.get_modpath("ethereal") .. "/schematics/" -- grow tree functions + function ethereal.grow_yellow_tree(pos) add_tree(pos, 4, 0, 4, ethereal.yellowtree) end @@ -92,10 +98,11 @@ function ethereal.grow_big_tree(pos) end function ethereal.grow_banana_tree(pos) - if math.random(3) == 1 - and minetest.find_node_near(pos, 1, {"farming:soil_wet"}) then + + if math.random(3) == 1 and minetest.find_node_near(pos, 1, {"farming:soil_wet"}) then + add_tree(pos, 3, 0, 3, ethereal.bananatree, - {{"ethereal:banana", "ethereal:banana_bunch"}}) + {{"ethereal:banana", "ethereal:banana_bunch"}}) else add_tree(pos, 3, 0, 3, ethereal.bananatree) end @@ -140,8 +147,9 @@ end function ethereal.grow_sakura_tree(pos) if math.random(10) == 1 then + add_tree(pos, 4, 0, 3, ethereal.sakura_tree, - {{"ethereal:sakura_leaves", "ethereal:sakura_leaves2"}}) + {{"ethereal:sakura_leaves", "ethereal:sakura_leaves2"}}) else add_tree(pos, 4, 0, 3, ethereal.sakura_tree) end @@ -155,6 +163,7 @@ function ethereal.grow_olive_tree(pos) add_tree(pos, 3, 0, 3, ethereal.olivetree) end + -- check if sapling has enough height room to grow local enough_height = function(pos, height) @@ -169,13 +178,10 @@ local enough_height = function(pos, height) end end + local grow_sapling = function(pos, node) - local under = minetest.get_node({ - x = pos.x, - y = pos.y - 1, - z = pos.z - }).name + local under = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name if not minetest.registered_nodes[node.name] then return diff --git a/schematics/bamboo_tree.lua b/schematics/bamboo_tree.lua index 565e552..00e0650 100644 --- a/schematics/bamboo_tree.lua +++ b/schematics/bamboo_tree.lua @@ -12,7 +12,7 @@ ethereal.bambootree = { {ypos = 0, prob = 127}, {ypos = 1, prob = 127}, {ypos = 2, prob = 127}, - {ypos = 3, prob = 127}, + {ypos = 3, prob = 127} }, data = { diff --git a/schematics/bigtree.lua b/schematics/bigtree.lua index 2ee6605..689149b 100644 --- a/schematics/bigtree.lua +++ b/schematics/bigtree.lua @@ -10,7 +10,7 @@ ethereal.bigtree = { yslice_prob = { {ypos = 0, prob = 127}, - {ypos = 1, prob = 127}, + {ypos = 1, prob = 127} }, data = { diff --git a/schematics/birch_tree.lua b/schematics/birch_tree.lua index afd190b..5fdd5b8 100644 --- a/schematics/birch_tree.lua +++ b/schematics/birch_tree.lua @@ -10,7 +10,7 @@ ethereal.birchtree = { yslice_prob = { {ypos = 0, prob = 127}, - {ypos = 3, prob = 127}, + {ypos = 3, prob = 127} }, data = { diff --git a/schematics/bush.lua b/schematics/bush.lua index d0a0ed3..67c3417 100644 --- a/schematics/bush.lua +++ b/schematics/bush.lua @@ -9,7 +9,7 @@ ethereal.bush = { yslice_prob = { {ypos = 0, prob = 127}, - {ypos = 2, prob = 127}, + {ypos = 2, prob = 127} }, data = { diff --git a/schematics/frosttrees.lua b/schematics/frosttrees.lua index 428a180..93f1256 100644 --- a/schematics/frosttrees.lua +++ b/schematics/frosttrees.lua @@ -15,7 +15,7 @@ ethereal.frosttrees = { {ypos = 4, prob = 127}, {ypos = 5, prob = 127}, {ypos = 13, prob = 127}, -- leaves - {ypos = 15, prob = 127}, + {ypos = 15, prob = 127} }, data = { diff --git a/schematics/lemon_tree.lua b/schematics/lemon_tree.lua index 859161d..bd95501 100644 --- a/schematics/lemon_tree.lua +++ b/schematics/lemon_tree.lua @@ -11,55 +11,55 @@ ethereal.lemontree = { yslice_prob = { {ypos = 0, prob = 127}, - {ypos = 3, prob = 127}, + {ypos = 3, prob = 127} }, data = { _,_,_,_,_, _,_,_,_,_, - _,_,_,_,_, - _,_,e,_,_, - _,L,L,L,e, - e,L,L,l,_, - _,l,L,L,_, - _,_,l,_,_, - - _,_,_,_,_, _,_,_,_,_, - _,_,_,_,_, - _,L,L,l,_, - l,L,l,L,L, - L,l,L,L,L, - L,L,L,l,L, - _,L,L,L,_, - - _,_,T,_,_, + _,_,e,_,_, + _,L,L,L,e, + e,L,L,l,_, + _,l,L,L,_, + _,_,l,_,_, + + _,_,_,_,_, + _,_,_,_,_, + _,_,_,_,_, + _,L,L,l,_, + l,L,l,L,L, + L,l,L,L,L, + L,L,L,l,L, + _,L,L,L,_, + _,_,T,_,_, - _,_,T,_,_, - l,e,T,l,l, - L,L,T,L,l, - l,L,T,L,L, - L,L,L,l,L, - l,L,L,L,l, - - _,_,_,_,_, + _,_,T,_,_, + _,_,T,_,_, + l,e,T,l,l, + L,L,T,L,l, + l,L,T,L,L, + L,L,L,l,L, + l,L,L,L,l, + _,_,_,_,_, - _,_,_,_,_, - _,L,L,L,_, - L,l,L,L,L, - L,L,L,L,L, - L,L,L,L,l, - _,l,L,L,_, - - _,_,_,_,_, _,_,_,_,_, - _,_,_,_,_, - _,_,l,_,_, - e,L,L,l,_, - _,l,L,L,_, - _,L,L,L,e, - _,_,l,_,_, + _,_,_,_,_, + _,L,L,L,_, + L,l,L,L,L, + L,L,L,L,L, + L,L,L,L,l, + _,l,L,L,_, + + _,_,_,_,_, + _,_,_,_,_, + _,_,_,_,_, + _,_,l,_,_, + e,L,L,l,_, + _,l,L,L,_, + _,L,L,L,e, + _,_,l,_,_, } } diff --git a/schematics/mushroomone.lua b/schematics/mushroomone.lua index b458737..f4535ba 100644 --- a/schematics/mushroomone.lua +++ b/schematics/mushroomone.lua @@ -11,7 +11,7 @@ ethereal.mushroomone = { yslice_prob = { {ypos = 0, prob = 127}, {ypos = 1, prob = 127}, - {ypos = 7, prob = 127}, + {ypos = 7, prob = 127} }, data = { diff --git a/schematics/olive_tree.lua b/schematics/olive_tree.lua index fe6d672..af6e2c3 100644 --- a/schematics/olive_tree.lua +++ b/schematics/olive_tree.lua @@ -8,81 +8,77 @@ ethereal.olivetree = { size = {x = 8, y = 9, z = 7}, - - data = { _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,L,_,_,_,_,L,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,L,_,L,L,o,_, - L,T,L,L,o,L,T,L, - _,L,_,_,_,_,L,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - - _,_,_,T,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,L,T,L,_,T,L,_, - _,L,L,_,L,L,L,_, - _,_,_,L,L,_,_,_, - _,_,o,L,L,_,_,_, - _,_,_,_,_,_,_,_, - - _,_,_,T,T,_,_,_, - _,_,_,T,T,_,_,_, - _,_,_,T,T,_,_,_, - _,_,L,T,T,_,_,_, - _,o,L,T,T,T,L,_, - _,L,L,T,T,L,o,_, - _,_,L,T,T,L,_,_, - _,_,L,T,T,L,_,_, - _,_,_,L,L,_,_,_, - - _,_,_,_,T,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,L,_,_,_, - _,_,L,T,L,L,_,_, - _,_,L,L,T,L,_,_, - _,_,_,L,L,L,_,_, - _,_,L,L,L,_,_,_, - _,_,_,_,_,_,_,_, - - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,o,L,_,_,_,_, - _,L,T,L,L,o,_,_, - _,_,L,_,L,T,L,_, - _,_,o,_,_,L,_,_, - _,_,_,_,_,_,_,_, - - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - _,_,L,_,_,_,_,_, - _,_,_,_,_,L,_,_, - _,_,_,_,_,_,_,_, - _,_,_,_,_,_,_,_, - - + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,L,_,_,_,_,L,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,L,_,L,L,o,_, + L,T,L,L,o,L,T,L, + _,L,_,_,_,_,L,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + + _,_,_,T,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,L,T,L,_,T,L,_, + _,L,L,_,L,L,L,_, + _,_,_,L,L,_,_,_, + _,_,o,L,L,_,_,_, + _,_,_,_,_,_,_,_, + + _,_,_,T,T,_,_,_, + _,_,_,T,T,_,_,_, + _,_,_,T,T,_,_,_, + _,_,L,T,T,_,_,_, + _,o,L,T,T,T,L,_, + _,L,L,T,T,L,o,_, + _,_,L,T,T,L,_,_, + _,_,L,T,T,L,_,_, + _,_,_,L,L,_,_,_, + + _,_,_,_,T,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,L,_,_,_, + _,_,L,T,L,L,_,_, + _,_,L,L,T,L,_,_, + _,_,_,L,L,L,_,_, + _,_,L,L,L,_,_,_, + _,_,_,_,_,_,_,_, + + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,o,L,_,_,_,_, + _,L,T,L,L,o,_,_, + _,_,L,_,L,T,L,_, + _,_,o,_,_,L,_,_, + _,_,_,_,_,_,_,_, + + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, + _,_,L,_,_,_,_,_, + _,_,_,_,_,L,_,_, + _,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_, } } diff --git a/schematics/orange_tree.lua b/schematics/orange_tree.lua index 4006f0b..3180109 100644 --- a/schematics/orange_tree.lua +++ b/schematics/orange_tree.lua @@ -10,7 +10,7 @@ ethereal.orangetree = { size = {x = 5, y = 6, z = 5}, yslice_prob = { - {ypos = 0, prob = 127}, + {ypos = 0, prob = 127} }, data = { diff --git a/schematics/palmtree.lua b/schematics/palmtree.lua index e890b10..88a9973 100644 --- a/schematics/palmtree.lua +++ b/schematics/palmtree.lua @@ -11,7 +11,7 @@ ethereal.palmtree = { size = {x = 9, y = 9, z = 9}, yslice_prob = { - {ypos = 3, prob = 127}, + {ypos = 3, prob = 127} }, data = { diff --git a/schematics/pinetree.lua b/schematics/pinetree.lua index f216c5b..6990f88 100644 --- a/schematics/pinetree.lua +++ b/schematics/pinetree.lua @@ -9,7 +9,7 @@ ethereal.pinetree = { yslice_prob = { {ypos = 0, prob = 127}, - {ypos = 4, prob = 127}, + {ypos = 4, prob = 127} }, data = { diff --git a/schematics/redwood_small_tree.lua b/schematics/redwood_small_tree.lua index 90a2622..5af4914 100644 --- a/schematics/redwood_small_tree.lua +++ b/schematics/redwood_small_tree.lua @@ -12,208 +12,208 @@ ethereal.redwood_small_tree = { {ypos = 1, prob = 127}, {ypos = 2, prob = 127}, {ypos = 3, prob = 127}, - {ypos = 4, prob = 127}, + {ypos = 4, prob = 127} }, data = { -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,L,L,T,L,L, -_,_,_,_,_,L,L,L,_, -_,_,_,_,_,_,_,_,_, -_,L,L,L,L,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,L,L,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,L,L,T,L,L, + _,_,_,_,_,L,L,L,_, + _,_,_,_,_,_,_,_,_, + _,L,L,L,L,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,L,L,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,T,_,_, -_,_,_,_,L,L,T,L,L, -_,_,_,_,_,L,L,L,_, -_,_,_,_,_,_,_,_,_, -L,L,L,L,L,L,_,_,_, -_,_,L,L,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,L,L,L,L,_,_, -_,_,_,L,L,L,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,T,_,_, + _,_,_,_,L,L,T,L,L, + _,_,_,_,_,L,L,L,_, + _,_,_,_,_,_,_,_,_, + L,L,L,L,L,L,_,_,_, + _,_,L,L,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,L,L,L,L,_,_, + _,_,_,L,L,L,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,T,T,_,_, -_,_,_,_,_,L,L,_,L, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -L,L,T,T,L,L,_,_,_, -_,L,L,L,_,_,_,_,_, -_,_,_,_,L,_,_,_,_, -_,L,L,L,L,L,L,_,_, -_,_,L,L,L,L,L,_,_, -_,_,_,L,L,L,_,_,_, -_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,T,T,_,_, + _,_,_,_,_,L,L,_,L, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + L,L,T,T,L,L,_,_,_, + _,L,L,L,_,_,_,_,_, + _,_,_,_,L,_,_,_,_, + _,L,L,L,L,L,L,_,_, + _,_,L,L,L,L,L,_,_, + _,_,_,L,L,L,_,_,_, + _,_,_,_,_,_,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,_,T,_,_,_,_, -_,_,_,_,T,_,_,_,_, -_,_,_,_,T,_,_,_,_, -_,_,_,_,T,_,_,L,L, -_,_,_,_,T,_,_,_,L, -_,_,_,_,T,_,_,_,_, -_,L,L,T,T,_,_,_,_, -_,L,_,_,T,_,_,_,_, -_,_,_,L,T,L,_,_,_, -_,L,L,L,L,L,L,L,_, -_,L,L,L,L,L,L,L,_, -_,_,L,L,L,L,L,_,_, -_,_,_,_,L,_,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,_,T,_,_,_,_, + _,_,_,_,T,_,_,_,_, + _,_,_,_,T,_,_,_,_, + _,_,_,_,T,_,_,L,L, + _,_,_,_,T,_,_,_,L, + _,_,_,_,T,_,_,_,_, + _,L,L,T,T,_,_,_,_, + _,L,_,_,T,_,_,_,_, + _,_,_,L,T,L,_,_,_, + _,L,L,L,L,L,L,L,_, + _,L,L,L,L,L,L,L,_, + _,_,L,L,L,L,L,_,_, + _,_,_,_,L,_,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,_,T,_,_,_,_, -_,_,_,_,T,_,_,_,_, -_,_,_,_,T,_,_,_,_, -_,_,_,T,T,T,T,T,T, -_,_,_,T,T,T,_,L,T, -_,_,_,T,T,T,_,_,L, -L,L,L,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,L,T,T,T,L,_,_, -_,L,L,L,T,L,L,L,_, -_,L,L,L,L,L,L,L,_, -_,_,L,L,L,L,L,_,_, -_,_,_,L,L,L,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,_,T,_,_,_,_, + _,_,_,_,T,_,_,_,_, + _,_,_,_,T,_,_,_,_, + _,_,_,T,T,T,T,T,T, + _,_,_,T,T,T,_,L,T, + _,_,_,T,T,T,_,_,L, + L,L,L,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,L,T,T,T,L,_,_, + _,L,L,L,T,L,L,L,_, + _,L,L,L,L,L,L,L,_, + _,_,L,L,L,L,L,_,_, + _,_,_,L,L,L,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,_,T,_,_,_,_, -_,_,_,_,T,_,_,_,_, -_,_,_,_,T,_,_,_,_, -_,_,_,T,T,T,_,_,_, -_,_,_,T,T,_,_,_,L, -_,T,T,T,T,_,_,_,L, -L,L,L,_,T,_,_,_,_, -L,L,_,_,T,L,L,L,L, -_,_,_,_,T,_,_,_,_, -_,_,_,L,T,L,_,_,_, -_,L,L,L,L,L,L,L,_, -_,L,L,L,L,L,L,_,_, -_,_,_,L,L,L,_,_,_, -_,_,_,_,L,L,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,_,T,_,_,_,_, + _,_,_,_,T,_,_,_,_, + _,_,_,_,T,_,_,_,_, + _,_,_,T,T,T,_,_,_, + _,_,_,T,T,_,_,_,L, + _,T,T,T,T,_,_,_,L, + L,L,L,_,T,_,_,_,_, + L,L,_,_,T,L,L,L,L, + _,_,_,_,T,_,_,_,_, + _,_,_,L,T,L,_,_,_, + _,L,L,L,L,L,L,L,_, + _,L,L,L,L,L,L,_,_, + _,_,_,L,L,L,_,_,_, + _,_,_,_,L,L,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,T,_,_,_,_,_,_,_, -T,T,L,L,T,T,T,_,_, -L,L,_,_,L,L,T,L,L, -_,_,_,_,_,L,L,L,_, -_,_,_,_,L,_,_,_,_, -_,_,L,L,L,L,L,_,_, -_,_,L,L,L,L,L,_,_, -_,_,_,L,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,T,_,_,_,_,_,_,_, + T,T,L,L,T,T,T,_,_, + L,L,_,_,L,L,T,L,L, + _,_,_,_,_,L,L,L,_, + _,_,_,_,L,_,_,_,_, + _,_,L,L,L,L,L,_,_, + _,_,L,L,L,L,L,_,_, + _,_,_,L,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -L,L,L,L,_,_,_,_,_, -L,L,_,_,L,L,T,L,L, -_,_,_,_,_,L,L,L,_, -_,_,_,_,_,_,_,_,_, -_,_,_,L,L,L,_,_,_, -_,_,_,L,L,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + L,L,L,L,_,_,_,_,_, + L,L,_,_,L,L,T,L,L, + _,_,_,_,_,L,L,L,_, + _,_,_,_,_,_,_,_,_, + _,_,_,L,L,L,_,_,_, + _,_,_,L,L,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -L,L,L,_,_,_,_,_,_, -_,_,_,_,L,L,L,L,L, -_,_,_,_,_,_,L,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,L,L,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + L,L,L,_,_,_,_,_,_, + _,_,_,_,L,L,L,L,L, + _,_,_,_,_,_,L,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,L,L,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_, } } diff --git a/schematics/redwood_tree.lua b/schematics/redwood_tree.lua index f7a86b0..43874ba 100644 --- a/schematics/redwood_tree.lua +++ b/schematics/redwood_tree.lua @@ -14,520 +14,520 @@ ethereal.redwood_tree = { {ypos = 7, prob = 127}, {ypos = 14, prob = 127}, {ypos = 15, prob = 127}, - {ypos = 16, prob = 127}, + {ypos = 16, prob = 127} }, data = { -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,L,L,L,L,L,_,_,_,_,_, -_,_,_,_,_,_,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, + _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,L,L,_,L,_,_,_,_,_,_, -_,_,_,_,L,L,L,T,L,L,_,_,_,_,_, -_,_,_,_,_,L,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,L,L,L,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,L,L,_,L,_,_,_,_,_,_, + _,_,_,_,L,L,L,T,L,L,_,_,_,_,_, + _,_,_,_,_,L,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,L,L,T,L,L,_,_,_,_,_, -_,_,_,_,L,L,L,T,L,L,_,_,_,_,_, -_,_,_,_,_,L,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,L,L,L,L,_,_,_, -_,_,_,_,_,_,_,_,L,L,L,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,L,L,T,L,L,_,_,_,_,_, + _,_,_,_,L,L,L,T,L,L,_,_,_,_,_, + _,_,_,_,_,L,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,L,L,L,L,_,_,_, + _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,L,L,T,L,L,_,_,_,_,_, -_,_,_,_,_,L,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,L,T,L,L,_,_,_, -_,_,_,_,_,_,_,_,L,L,L,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,L,L,L,L,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,L,L,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,L,L,T,L,L,_,_,_,_,_, + _,_,_,_,_,L,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,L,T,L,L,_,_,_, + _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,L,L,L,L,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,L,L,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,_,T,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,L,T,L,L,_,_,_,_,_, -_,_,_,_,_,_,L,L,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,T,_,_,_,_,_, -_,_,_,_,_,_,_,L,L,T,L,L,_,_,_, -_,_,_,_,_,_,_,_,L,L,L,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,L,L,L,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,L,L,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,L,L,L,L,_,_,_,_,_, -_,_,_,_,_,_,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,_,T,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,L,T,L,L,_,_,_,_,_, + _,_,_,_,_,_,L,L,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,T,_,_,_,_,_, + _,_,_,_,_,_,_,L,L,T,L,L,_,_,_, + _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,L,L,L,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,L,L,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,L,L,L,L,_,_,_,_,_, + _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,T,T,_,_,_,_,_, -_,_,_,_,_,_,_,_,L,L,_,L,L,L,L, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,L,L,T,T,L,L,_,_,_,_,_,_, -_,_,_,_,L,L,L,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,_,_,_,_,_,_,_, -_,_,_,_,L,L,L,L,L,L,_,_,_,_,_, -_,_,_,_,_,L,L,L,L,L,_,_,_,_,_, -_,_,_,_,_,_,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,T,T,_,_,_,_,_, + _,_,_,_,_,_,_,_,L,L,_,L,L,L,L, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,L,L,T,T,L,L,_,_,_,_,_,_, + _,_,_,_,L,L,L,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,_,_,_,_,_,_,_, + _,_,_,_,L,L,L,L,L,L,_,_,_,_,_, + _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, + _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,T,T,T,T,T,T,T,_,_,_,_, -_,_,_,_,T,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -L,L,L,L,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,_,_,L,L,L,L,L, -_,_,_,_,_,_,_,T,_,_,_,L,L,L,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,L,L,T,T,_,_,_,_,_,_,_, -_,_,_,_,L,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,L,T,L,_,_,_,_,_,_, -_,_,_,_,L,L,L,L,L,L,L,_,_,_,_, -_,_,_,_,L,L,L,L,L,L,L,_,_,_,_, -_,_,_,_,_,L,L,L,L,L,_,_,_,_,_, -_,_,_,_,_,_,_,L,_,_,_,_,_,_,_, + _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, + _,_,_,_,T,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + L,L,L,L,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,_,_,L,L,L,L,L, + _,_,_,_,_,_,_,T,_,_,_,L,L,L,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,L,L,T,T,_,_,_,_,_,_,_, + _,_,_,_,L,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,L,T,L,_,_,_,_,_,_, + _,_,_,_,L,L,L,L,L,L,L,_,_,_,_, + _,_,_,_,L,L,L,L,L,L,L,_,_,_,_, + _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, + _,_,_,_,_,_,_,L,_,_,_,_,_,_,_, -_,_,_,_,T,T,T,T,T,T,T,_,_,_,_, -_,_,_,_,T,T,T,T,T,T,T,_,_,_,_, -_,_,_,_,T,T,T,T,T,T,T,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,T,T,T,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,L,L,L,L, -_,_,_,_,_,_,T,T,T,_,_,_,L,L,L, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,T,T,T,T,T,T,_,_,_,_,_,_, -L,L,L,L,L,_,T,T,T,_,_,_,_,_,_, -L,L,L,L,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,T,T,T,_,_,_, -_,_,_,_,_,_,T,T,T,_,L,T,T,T,L, -_,_,_,_,_,_,T,T,T,_,_,L,L,L,L, -_,_,L,L,L,L,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,L,T,T,T,L,_,_,_,_,_, -_,_,_,_,L,L,L,T,L,L,L,_,_,_,_, -_,_,_,_,L,L,L,L,L,L,L,_,_,_,_, -_,_,_,_,_,L,L,L,L,L,_,_,_,_,_, -_,_,_,_,_,_,L,L,L,_,_,_,_,_,_, + _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, + _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, + _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,T,T,T,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,L,L,L,L, + _,_,_,_,_,_,T,T,T,_,_,_,L,L,L, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,T,T,T,T,T,T,_,_,_,_,_,_, + L,L,L,L,L,_,T,T,T,_,_,_,_,_,_, + L,L,L,L,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,T,T,T,_,_,_, + _,_,_,_,_,_,T,T,T,_,L,T,T,T,L, + _,_,_,_,_,_,T,T,T,_,_,L,L,L,L, + _,_,L,L,L,L,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,L,T,T,T,L,_,_,_,_,_, + _,_,_,_,L,L,L,T,L,L,L,_,_,_,_, + _,_,_,_,L,L,L,L,L,L,L,_,_,_,_, + _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, + _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, -_,_,_,_,T,T,T,T,T,T,T,_,_,_,_, -_,_,_,_,T,T,T,T,T,T,T,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,T,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,T,T,_,_, -_,_,_,_,_,_,T,T,T,_,_,L,T,T,L, -_,_,_,_,_,_,T,T,T,_,_,_,L,L,L, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,T,_,_,T,T,T,_,_,_,_,_,_, -L,T,T,T,L,_,T,T,T,_,_,_,_,_,_, -L,L,L,L,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,_,_,_,L,L,L,L, -_,_,_,_,T,T,T,T,_,_,_,L,L,L,_, -_,L,L,L,L,L,_,T,_,_,_,_,_,_,_, -_,_,_,L,L,_,_,T,L,L,L,L,_,_,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,L,T,L,_,_,_,_,_,_, -_,_,_,_,L,L,L,L,L,L,L,_,_,_,_, -_,_,_,_,L,L,L,L,L,L,_,_,_,_,_, -_,_,_,_,_,_,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,L,_,_,_,_,_,_, + _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, + _,_,_,_,T,T,T,T,T,T,T,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,T,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,T,T,_,_, + _,_,_,_,_,_,T,T,T,_,_,L,T,T,L, + _,_,_,_,_,_,T,T,T,_,_,_,L,L,L, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,T,_,_,T,T,T,_,_,_,_,_,_, + L,T,T,T,L,_,T,T,T,_,_,_,_,_,_, + L,L,L,L,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,_,_,_,L,L,L,L, + _,_,_,_,T,T,T,T,_,_,_,L,L,L,_, + _,L,L,L,L,L,_,T,_,_,_,_,_,_,_, + _,_,_,L,L,_,_,T,L,L,L,L,_,_,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,L,T,L,_,_,_,_,_,_, + _,_,_,_,L,L,L,L,L,L,L,_,_,_,_, + _,_,_,_,L,L,L,L,L,L,_,_,_,_,_, + _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,L,_,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,L,L,L,L, -_,_,_,_,_,_,_,_,_,_,_,_,L,L,L, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,L,L,_,_,_,_,_, -L,L,L,L,L,_,_,_,L,_,_,_,_,_,_, -L,L,L,L,_,_,T,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,L,L,L,L, -_,_,_,_,T,_,_,_,_,_,_,_,_,_,_, -_,L,L,T,T,L,L,T,T,T,_,_,_,_,_, -_,_,L,L,L,_,_,L,L,T,L,L,_,_,_, -_,_,_,_,_,_,_,_,L,L,L,_,_,_,_, -_,_,_,_,_,_,_,L,_,_,_,_,_,_,_, -_,_,_,_,_,L,L,L,L,L,_,_,_,_,_, -_,_,_,_,_,L,L,L,L,L,_,_,_,_,_, -_,_,_,_,_,_,L,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,L,L,L,L, + _,_,_,_,_,_,_,_,_,_,_,_,L,L,L, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,L,L,_,_,_,_,_, + L,L,L,L,L,_,_,_,L,_,_,_,_,_,_, + L,L,L,L,_,_,T,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,L,L,L,L, + _,_,_,_,T,_,_,_,_,_,_,_,_,_,_, + _,L,L,T,T,L,L,T,T,T,_,_,_,_,_, + _,_,L,L,L,_,_,L,L,T,L,L,_,_,_, + _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, + _,_,_,_,_,_,_,L,_,_,_,_,_,_,_, + _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, + _,_,_,_,_,L,L,L,L,L,_,_,_,_,_, + _,_,_,_,_,_,L,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,T,T,T,T,T,_,_,_,_,_, -_,_,_,_,_,_,T,T,T,_,_,_,_,_,_, -_,_,_,_,_,_,_,T,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,L,L,L,L, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,T,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,L,L,_,_,_,_,_, -L,L,L,L,_,_,_,_,L,L,_,_,_,_,_, -_,_,_,_,_,_,T,_,_,_,_,_,_,_,_, -_,_,_,_,_,L,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,L,L,L,L,L,L,_,_,_,_,_,_,_,_, -_,_,_,L,L,_,_,L,L,T,L,L,_,_,_, -_,_,_,_,_,_,_,_,L,L,L,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,L,L,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,T,T,T,T,T,_,_,_,_,_, + _,_,_,_,_,_,T,T,T,_,_,_,_,_,_, + _,_,_,_,_,_,_,T,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,L,L,L,L, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,T,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,L,L,_,_,_,_,_, + L,L,L,L,_,_,_,_,L,L,_,_,_,_,_, + _,_,_,_,_,_,T,_,_,_,_,_,_,_,_, + _,_,_,_,_,L,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,L,L,L,L,L,L,_,_,_,_,_,_,_,_, + _,_,_,L,L,_,_,L,L,T,L,L,_,_,_, + _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,L,L,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,L,L,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,T,_,_,_,_,_,_,_,_, -_,_,_,_,L,L,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,L,L,L,L,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,L,L,L,L,_,_,_, -_,_,_,_,_,_,_,_,_,L,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,L,L,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,T,_,_,_,_,_,_,_,_, + _,_,_,_,L,L,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,L,L,L,L,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,L,L,L,L,_,_,_, + _,_,_,_,_,_,_,_,_,L,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,T,_,_,_,_,_,_,_,_, -_,_,_,_,L,L,T,L,L,_,_,_,_,_,_, -_,_,_,_,_,L,L,L,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,L,L,L,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,T,_,_,_,_,_,_,_,_, + _,_,_,_,L,L,T,L,L,_,_,_,_,_,_, + _,_,_,_,_,L,L,L,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,L,L,L,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,L,L,T,L,L,_,_,_,_,_,_, -_,_,_,_,_,L,L,L,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,L,L,T,L,L,_,_,_,_,_,_, + _,_,_,_,_,L,L,L,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,L,L,L,L,L,_,_,_,_,_,_, -_,_,_,_,_,_,L,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, -_,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,L,L,L,L,L,_,_,_,_,_,_, + _,_,_,_,_,_,L,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, + _,_,_,_,_,_,_,_,_,_,_,_,_,_,_, } } diff --git a/schematics/sakura.lua b/schematics/sakura.lua index 70a5271..148149c 100644 --- a/schematics/sakura.lua +++ b/schematics/sakura.lua @@ -10,7 +10,7 @@ ethereal.sakura_tree = { yslice_prob = { {ypos = 0, prob = 127}, {ypos = 3, prob = 127}, - {ypos = 8, prob = 127}, + {ypos = 8, prob = 127} }, data = { @@ -92,5 +92,5 @@ _,_,_,P,P,P,_,_,_,_, _,_,_,_,P,_,_,_,_,_, _,_,_,_,_,_,_,_,_,_, - }, + } } diff --git a/schematics/vinetree.lua b/schematics/vinetree.lua index be54276..606cca8 100644 --- a/schematics/vinetree.lua +++ b/schematics/vinetree.lua @@ -12,7 +12,7 @@ ethereal.vinetree = { size = {x = 7, y = 7, z = 7}, yslice_prob = { - {ypos = 0, prob = 127}, + {ypos = 0, prob = 127} }, data = { diff --git a/schematics/volcanol.lua b/schematics/volcanol.lua index 78da28e..efcd73a 100644 --- a/schematics/volcanol.lua +++ b/schematics/volcanol.lua @@ -13,7 +13,7 @@ ethereal.volcanol = { yslice_prob = { {ypos = 0, prob = 127}, {ypos = 1, prob = 127}, - {ypos = 2, prob = 127}, + {ypos = 2, prob = 127} }, data = { diff --git a/schematics/volcanom.lua b/schematics/volcanom.lua index 346126b..b0a634e 100644 --- a/schematics/volcanom.lua +++ b/schematics/volcanom.lua @@ -9,7 +9,7 @@ ethereal.volcanom = { size = {x = 6, y = 2, z = 6}, yslice_prob = { - {ypos = 0, prob = 127}, + {ypos = 0, prob = 127} }, data = { diff --git a/schematics/waterlily.lua b/schematics/waterlily.lua index 31e4875..340e7c9 100644 --- a/schematics/waterlily.lua +++ b/schematics/waterlily.lua @@ -2,16 +2,19 @@ -- waterlily ethereal.waterlily = { + size = {x = 1, y = 3, z = 1}, + data = { {name = "default:sand", param1 = 255}, {name = "default:water_source", param1 = 255}, {name = "flowers:waterlily", param1 = 255}, - }, + } } + if ethereal.lilywalk == true then minetest.override_item("flowers:waterlily", { diff --git a/schematics/willow.lua b/schematics/willow.lua index c53b3ae..d3724f5 100644 --- a/schematics/willow.lua +++ b/schematics/willow.lua @@ -10,7 +10,7 @@ ethereal.willow = { yslice_prob = { {ypos = 0, prob = 127}, - {ypos = 1, prob = 127}, + {ypos = 1, prob = 127} }, data = { diff --git a/schematics/yellowtree.lua b/schematics/yellowtree.lua index bef7c25..91019ec 100644 --- a/schematics/yellowtree.lua +++ b/schematics/yellowtree.lua @@ -12,7 +12,7 @@ ethereal.yellowtree = { yslice_prob = { {ypos = 0, prob = 254}, {ypos = 3, prob = 254}, - {ypos = 5, prob = 254}, + {ypos = 5, prob = 254} }, data = { diff --git a/schems.lua b/schems.lua index f918c8e..1896bdd 100644 --- a/schems.lua +++ b/schems.lua @@ -163,6 +163,7 @@ add_schem({"ethereal:grove_dirt"}, 0.002, {"mediterranean"}, 5, 35, -- default large cactus if ethereal.desert == 1 then + minetest.register_decoration({ deco_type = "schematic", place_on = {"default:desert_sand"}, diff --git a/sealife.lua b/sealife.lua index 621a80a..a534e7d 100644 --- a/sealife.lua +++ b/sealife.lua @@ -1,6 +1,7 @@ local S = ethereal.intllib + -- Seaweed minetest.register_node("ethereal:seaweed", { description = S("Seaweed"), @@ -20,6 +21,7 @@ minetest.register_node("ethereal:seaweed", { groups = {food_seaweed = 1, snappy = 3, flammable = 3}, on_use = minetest.item_eat(1), sounds = default.node_sound_leaves_defaults(), + after_dig_node = function(pos, node, metadata, digger) default.dig_up(pos, node, digger) end @@ -31,6 +33,7 @@ minetest.register_craft( { recipe = {"ethereal:seaweed"} }) + -- agar powder minetest.register_craftitem("ethereal:agar_powder", { description = S("Agar Powder"), @@ -50,6 +53,7 @@ minetest.register_craft({ } }) + -- Blue Coral minetest.register_node("ethereal:coral2", { description = S("Blue Glow Coral"), @@ -72,6 +76,7 @@ minetest.register_craft( { recipe = {{"ethereal:coral2"}} }) + -- Orange Coral minetest.register_node("ethereal:coral3", { description = S("Orange Glow Coral"), @@ -94,6 +99,7 @@ minetest.register_craft( { recipe = {{"ethereal:coral3"}} }) + -- Pink Coral minetest.register_node("ethereal:coral4", { description = S("Pink Glow Coral"), @@ -116,6 +122,7 @@ minetest.register_craft( { recipe = {{"ethereal:coral4"}} }) + -- Green Coral minetest.register_node("ethereal:coral5", { description = S("Green Glow Coral"), @@ -138,7 +145,8 @@ minetest.register_craft( { recipe = {{"ethereal:coral5"}} }) --- Undersea Sand + +-- Undersea Sand (used for growing seaweed and corals) minetest.register_node("ethereal:sandy", { description = S("Sandy"), tiles = {"default_sand.png"}, @@ -150,64 +158,66 @@ minetest.register_node("ethereal:sandy", { sounds = default.node_sound_sand_defaults() }) + -- randomly generate coral or seaweed and have seaweed grow up to 14 high if ethereal.sealife == 1 then -minetest.register_abm({ - label = "Grow coral/seaweed", - nodenames = {"ethereal:sandy"}, - neighbors = {"group:water"}, - interval = 15, - chance = 10, - catch_up = false, - action = function(pos, node) + minetest.register_abm({ + label = "Grow coral/seaweed", + nodenames = {"ethereal:sandy"}, + neighbors = {"group:water"}, + interval = 15, + chance = 10, + catch_up = false, + action = function(pos, node) - local sel = math.random(6) + local sel = math.random(6) - pos.y = pos.y + 1 + pos.y = pos.y + 1 - local nod = minetest.get_node(pos).name + local nod = minetest.get_node(pos).name - if nod == "default:water_source" - and sel == 6 then + if nod == "default:water_source" + and sel == 6 then - minetest.swap_node(pos, {name = "ethereal:sponge_wet"}) + minetest.swap_node(pos, {name = "ethereal:sponge_wet"}) - return - end - - if nod == "default:water_source" - and sel > 1 then - - minetest.swap_node(pos, {name = "ethereal:coral" .. sel}) - - return - end - - if nod == "ethereal:seaweed" - or sel == 1 then - - local height = 0 - local high = 14 - - while height < high - and minetest.get_node(pos).name == "ethereal:seaweed" do - height = height + 1 - pos.y = pos.y + 1 + return end - if pos.y < 1 - and height < high - and minetest.get_node(pos).name == "default:water_source" then + if nod == "default:water_source" + and sel > 1 then - minetest.swap_node(pos, {name = "ethereal:seaweed"}) + minetest.swap_node(pos, {name = "ethereal:coral" .. sel}) + + return + end + + if nod == "ethereal:seaweed" + or sel == 1 then + + local height = 0 + local high = 14 + + while height < high + and minetest.get_node(pos).name == "ethereal:seaweed" do + height = height + 1 + pos.y = pos.y + 1 + end + + if pos.y < 1 + and height < high + and minetest.get_node(pos).name == "default:water_source" then + + minetest.swap_node(pos, {name = "ethereal:seaweed"}) + end end end - end -}) + }) end --- sponges + +-- sponge nodes minetest.register_node("ethereal:sponge_air", { drawtype = "airlike", @@ -220,6 +230,12 @@ minetest.register_node("ethereal:sponge_air", { groups = {not_in_creative_inventory = 1} }) +minetest.register_node("ethereal:sponge_wet", { + description = S("Wet sponge"), + tiles = {"ethereal_sponge_wet.png"}, + groups = {crumbly = 3}, + sounds = default.node_sound_sand_defaults() +}) minetest.register_node("ethereal:sponge", { description = S("Sponge"), @@ -259,14 +275,6 @@ minetest.register_node("ethereal:sponge", { end }) - -minetest.register_node("ethereal:sponge_wet", { - description = S("Wet sponge"), - tiles = {"ethereal_sponge_wet.png"}, - groups = {crumbly = 3}, - sounds = default.node_sound_sand_defaults() -}) - -- cook wet sponge into dry sponge minetest.register_craft({ type = "cooking", diff --git a/stairs.lua b/stairs.lua index 784c596..2e8be45 100644 --- a/stairs.lua +++ b/stairs.lua @@ -22,7 +22,7 @@ local do_stair = function(description, name, node, groups, texture, sound) description = S(description), tiles = texture, groups = groups, - sounds = sound, + sounds = sound }) -- aliases need to be set for previous stairs to avoid unknown nodes diff --git a/strawberry.lua b/strawberry.lua index 6a052a4..e6b40e0 100644 --- a/strawberry.lua +++ b/strawberry.lua @@ -1,20 +1,23 @@ local S = ethereal.intllib + -- Strawberry (can also be planted as seed) minetest.register_craftitem("ethereal:strawberry", { description = S("Strawberry"), inventory_image = "ethereal_strawberry.png", wield_image = "ethereal_strawberry.png", groups = {food_strawberry = 1, food_berry = 1, flammable = 2}, + on_use = minetest.item_eat(1), + on_place = function(itemstack, placer, pointed_thing) return farming.place_seed(itemstack, placer, pointed_thing, "ethereal:strawberry_1") - end, - on_use = minetest.item_eat(1) + end }) + -- Define Strawberry Bush growth stages -local crop_def = { +local def = { drawtype = "plantlike", tiles = {"ethereal_strawberry_1.png"}, paramtype = "light", @@ -35,58 +38,58 @@ local crop_def = { } --stage 1 -minetest.register_node("ethereal:strawberry_1", table.copy(crop_def)) +minetest.register_node("ethereal:strawberry_1", table.copy(def)) -- stage 2 -crop_def.tiles = {"ethereal_strawberry_2.png"} -minetest.register_node("ethereal:strawberry_2", table.copy(crop_def)) +def.tiles = {"ethereal_strawberry_2.png"} +minetest.register_node("ethereal:strawberry_2", table.copy(def)) -- stage 3 -crop_def.tiles = {"ethereal_strawberry_3.png"} -minetest.register_node("ethereal:strawberry_3", table.copy(crop_def)) +def.tiles = {"ethereal_strawberry_3.png"} +minetest.register_node("ethereal:strawberry_3", table.copy(def)) -- stage 4 -crop_def.tiles = {"ethereal_strawberry_4.png"} -minetest.register_node("ethereal:strawberry_4", table.copy(crop_def)) +def.tiles = {"ethereal_strawberry_4.png"} +minetest.register_node("ethereal:strawberry_4", table.copy(def)) -- stage 5 -crop_def.tiles = {"ethereal_strawberry_5.png"} -minetest.register_node("ethereal:strawberry_5", table.copy(crop_def)) +def.tiles = {"ethereal_strawberry_5.png"} +minetest.register_node("ethereal:strawberry_5", table.copy(def)) -- stage 6 -crop_def.tiles = {"ethereal_strawberry_6.png"} -crop_def.drop = { +def.tiles = {"ethereal_strawberry_6.png"} +def.drop = { items = { {items = {"ethereal:strawberry 1"}, rarity = 2}, {items = {"ethereal:strawberry 2"}, rarity = 3} } } -minetest.register_node("ethereal:strawberry_6", table.copy(crop_def)) +minetest.register_node("ethereal:strawberry_6", table.copy(def)) -- stage 7 -crop_def.tiles = {"ethereal_strawberry_7.png"} -crop_def.drop = { +def.tiles = {"ethereal_strawberry_7.png"} +def.drop = { items = { {items = {"ethereal:strawberry 1"}, rarity = 1}, {items = {"ethereal:strawberry 2"}, rarity = 3} } } -minetest.register_node("ethereal:strawberry_7", table.copy(crop_def)) +minetest.register_node("ethereal:strawberry_7", table.copy(def)) --- stage 8 -crop_def.tiles = {"ethereal_strawberry_8.png"} -crop_def.groups.growing = nil -crop_def.selection_box = { +-- stage 8 (final) +def.tiles = {"ethereal_strawberry_8.png"} +def.groups.growing = nil +def.selection_box = { type = "fixed", fixed = {-0.5, -0.5, -0.5, 0.5, -2.5/16, 0.5} } -crop_def.drop = { +def.drop = { items = { {items = {"ethereal:strawberry 2"}, rarity = 1}, {items = {"ethereal:strawberry 3"}, rarity = 3} } } -minetest.register_node("ethereal:strawberry_8", table.copy(crop_def)) +minetest.register_node("ethereal:strawberry_8", table.copy(def)) -- growing routine if farming redo isn't present @@ -114,6 +117,7 @@ else interval = 9, chance = 20, catch_up = false, + action = function(pos, node) -- are we on wet soil? diff --git a/water.lua b/water.lua index 0aad8e9..6c761a9 100644 --- a/water.lua +++ b/water.lua @@ -1,6 +1,7 @@ local S = ethereal.intllib + -- Ice Brick minetest.register_node("ethereal:icebrick", { description = S("Ice Brick"), @@ -19,6 +20,7 @@ minetest.register_craft({ } }) + -- Snow Brick minetest.register_node("ethereal:snowbrick", { description = S("Snow Brick"), @@ -41,6 +43,7 @@ minetest.register_craft({ } }) + -- If Crystal Spike, Snow near Water, change Water to Ice minetest.register_abm({ label = "Ethereal freeze water", @@ -52,6 +55,7 @@ minetest.register_abm({ interval = 15, chance = 4, catch_up = false, + action = function(pos, node) local near = minetest.find_node_near(pos, 1, @@ -60,9 +64,10 @@ minetest.register_abm({ if near then minetest.swap_node(near, {name = "default:ice"}) end - end, + end }) + -- If Heat Source near Ice or Snow then melt. minetest.register_abm({ label = "Ethereal melt snow/ice", @@ -78,6 +83,7 @@ minetest.register_abm({ interval = 5, chance = 4, catch_up = false, + action = function(pos, node) local water_node = "default:water" @@ -90,19 +96,20 @@ minetest.register_abm({ or node.name == "default:snowblock" or node.name == "ethereal:icebrick" or node.name == "ethereal:snowbrick" then - minetest.swap_node(pos, {name = water_node.."_source"}) + minetest.swap_node(pos, {name = water_node .. "_source"}) elseif node.name == "default:snow" then - minetest.swap_node(pos, {name = water_node.."_flowing"}) + minetest.swap_node(pos, {name = water_node .. "_flowing"}) elseif node.name == "default:dirt_with_snow" then minetest.swap_node(pos, {name = "default:dirt_with_grass"}) end ethereal.check_falling(pos) - end, + end }) + -- If Water Source near Dry Dirt, change to normal Dirt minetest.register_abm({ label = "Ethereal wet dry dirt", @@ -114,6 +121,7 @@ minetest.register_abm({ interval = 15, chance = 2, catch_up = false, + action = function(pos, node) if node.name == "ethereal:dry_dirt" @@ -127,46 +135,47 @@ minetest.register_abm({ end }) + -- when enabled, drop torches that are touching water if ethereal.torchdrop == true and not minetest.get_modpath("real_torch") then -minetest.register_abm({ - label = "Ethereal drop torch", - nodenames = {"default:torch", "default:torch_wall", "default:torch_ceiling"}, - neighbors = {"group:water"}, - interval = 5, - chance = 1, - catch_up = false, - action = function(pos, node) + minetest.register_abm({ + label = "Ethereal drop torch", + nodenames = {"default:torch", "default:torch_wall", "default:torch_ceiling"}, + neighbors = {"group:water"}, + interval = 5, + chance = 1, + catch_up = false, - local num = #minetest.find_nodes_in_area( - {x = pos.x - 1, y = pos.y, z = pos.z}, - {x = pos.x + 1, y = pos.y, z = pos.z}, - {"group:water"}) + action = function(pos, node) - if num == 0 then - num = num + #minetest.find_nodes_in_area( - {x = pos.x, y = pos.y, z = pos.z - 1}, - {x = pos.x, y = pos.y, z = pos.z + 1}, - {"group:water"}) + local num = #minetest.find_nodes_in_area( + {x = pos.x - 1, y = pos.y, z = pos.z}, + {x = pos.x + 1, y = pos.y, z = pos.z}, {"group:water"}) + + if num == 0 then + + num = num + #minetest.find_nodes_in_area( + {x = pos.x, y = pos.y, z = pos.z - 1}, + {x = pos.x, y = pos.y, z = pos.z + 1}, {"group:water"}) + end + + if num == 0 then + + num = num + #minetest.find_nodes_in_area( + {x = pos.x, y = pos.y + 1, z = pos.z}, + {x = pos.x, y = pos.y + 1, z = pos.z}, {"group:water"}) + end + + if num > 0 then + + minetest.set_node(pos, {name = "air"}) + + minetest.sound_play("fire_extinguish_flame", + {pos = pos, gain = 0.2, max_hear_distance = 10}, true) + + minetest.add_item(pos, {name = "default:torch"}) + end end - - if num == 0 then - num = num + #minetest.find_nodes_in_area( - {x = pos.x, y = pos.y + 1, z = pos.z}, - {x = pos.x, y = pos.y + 1, z = pos.z}, - {"group:water"}) - end - - if num > 0 then - - minetest.set_node(pos, {name = "air"}) - - minetest.sound_play("fire_extinguish_flame", - {pos = pos, gain = 0.2, max_hear_distance = 10}) - - minetest.add_item(pos, {name = "default:torch"}) - end - end -}) + }) end diff --git a/wood.lua b/wood.lua index 3e228e5..98f461b 100644 --- a/wood.lua +++ b/wood.lua @@ -1,6 +1,7 @@ local S = ethereal.intllib + -- sakura trunk minetest.register_node("ethereal:sakura_trunk", { description = S("Sakura Trunk"), @@ -31,6 +32,7 @@ minetest.register_craft({ recipe = {{"ethereal:sakura_trunk"}} }) + -- willow trunk minetest.register_node("ethereal:willow_trunk", { description = S("Willow Trunk"), @@ -61,6 +63,7 @@ minetest.register_craft({ recipe = {{"ethereal:willow_trunk"}} }) + -- redwood trunk minetest.register_node("ethereal:redwood_trunk", { description = S("Redwood Trunk"), @@ -91,6 +94,7 @@ minetest.register_craft({ recipe = {{"ethereal:redwood_trunk"}} }) + -- frost trunk minetest.register_node("ethereal:frost_tree", { description = S("Frost Tree"), @@ -121,6 +125,7 @@ minetest.register_craft({ recipe = {{"ethereal:frost_tree"}} }) + -- healing trunk minetest.register_node("ethereal:yellow_trunk", { description = S("Healing Tree Trunk"), @@ -151,6 +156,7 @@ minetest.register_craft({ recipe = {{"ethereal:yellow_trunk"}} }) + -- palm trunk (thanks to VanessaE for palm textures) minetest.register_node("ethereal:palm_trunk", { description = S("Palm Trunk"), @@ -181,6 +187,7 @@ minetest.register_craft({ recipe = {{"ethereal:palm_trunk"}} }) + -- banana trunk minetest.register_node("ethereal:banana_trunk", { description = S("Banana Trunk"), @@ -211,6 +218,7 @@ minetest.register_craft({ recipe = {{"ethereal:banana_trunk"}} }) + -- scorched trunk minetest.register_node("ethereal:scorched_tree", { description = S("Scorched Tree"), @@ -234,6 +242,7 @@ minetest.register_craft({ } }) + -- mushroom trunk minetest.register_node("ethereal:mushroom_trunk", { description = S("Mushroom"), @@ -248,6 +257,7 @@ minetest.register_node("ethereal:mushroom_trunk", { on_place = minetest.rotate_node }) + -- birch trunk (thanks to VanessaE for birch textures) minetest.register_node("ethereal:birch_trunk", { description = S("Birch Trunk"), @@ -278,6 +288,7 @@ minetest.register_craft({ recipe = {{"ethereal:birch_trunk"}} }) + -- Bamboo (thanks to Nelo-slay on DeviantArt for the free Bamboo base image) minetest.register_node("ethereal:bamboo", { description = S("Bamboo"), @@ -294,6 +305,7 @@ minetest.register_node("ethereal:bamboo", { }, groups = {choppy = 3, oddly_breakable_by_hand = 1, flammable = 2}, sounds = default.node_sound_leaves_defaults(), + after_dig_node = function(pos, node, metadata, digger) default.dig_up(pos, node, digger) end @@ -305,6 +317,7 @@ minetest.register_craft({ burntime = 2 }) + -- olive trunk minetest.register_node("ethereal:olive_trunk", { description = S("Olive Trunk"),