From aa601daf67ca220290e03608fbaa4bcddbfcfbd8 Mon Sep 17 00:00:00 2001 From: Vanessa Ezekowitz Date: Sun, 12 Feb 2017 20:05:50 -0500 Subject: [PATCH] update boost_cart, homedecor, mesecons, moretrees, unified_inventory, and worldedit --- boost_cart/functions.lua | 6 +- colormachine/depends.txt | 6 - colormachine/init.lua | 10 +- fake_fire/init.lua | 20 +- homedecor/clocks.lua | 26 +- homedecor/cobweb.lua | 11 +- homedecor/electrics.lua | 9 +- homedecor/foyer.lua | 17 +- homedecor/gastronomy.lua | 49 +- homedecor/handlers/expansion.lua | 14 +- homedecor/kitchen_furniture.lua | 4 +- homedecor/lighting.lua | 2 +- homedecor/office.lua | 26 +- homedecor/trash_cans.lua | 8 +- homedecor/wardrobe.lua | 10 +- homedecor_i18n/locale/de.po | 427 ++-- homedecor_i18n/locale/es.po | 438 ++-- homedecor_i18n/locale/fr.po | 415 ++-- homedecor_i18n/locale/it.po | 427 ++-- homedecor_i18n/locale/ms.po | 427 ++-- homedecor_i18n/locale/pt.po | 462 ++-- homedecor_i18n/locale/template.pot | 367 ++- mesecons/init.lua | 26 +- mesecons/presets.lua | 13 +- .../textures/jeija_microcontroller_LED_A.png | Bin 0 -> 1240 bytes .../textures/jeija_microcontroller_LED_B.png | Bin 0 -> 1239 bytes .../textures/jeija_microcontroller_LED_C.png | Bin 0 -> 1240 bytes .../textures/jeija_microcontroller_LED_D.png | Bin 0 -> 1239 bytes mesecons/util.lua | 5 - .../doc/blinkyplant/preview.png | Bin mesecons_button/init.lua | 2 + mesecons_delayer/init.lua | 6 +- mesecons_extrawires/corner.lua | 2 +- mesecons_extrawires/crossover.lua | 91 +- .../models/mesecons_extrawires_crossover.b3d | Bin 0 -> 3233 bytes .../src/mesecons_extrawires_crossover.blend | Bin 0 -> 498592 bytes mesecons_extrawires/tjunction.lua | 2 +- mesecons_fpga/depends.txt | 1 + mesecons_fpga/doc/fpga/description.html | 5 + mesecons_fpga/doc/fpga/preview.png | Bin 0 -> 21329 bytes mesecons_fpga/doc/fpga/recipe.png | Bin 0 -> 3210 bytes mesecons_fpga/doc/programmer/description.html | 3 + mesecons_fpga/doc/programmer/preview.png | Bin 0 -> 598 bytes mesecons_fpga/doc/programmer/recipe.png | Bin 0 -> 1908 bytes mesecons_fpga/init.lua | 375 +++ mesecons_fpga/logic.lua | 210 ++ .../textures/jeija_fpga_programmer.png | Bin 0 -> 311 bytes mesecons_fpga/textures/jeija_fpga_sides.png | Bin 0 -> 536 bytes mesecons_fpga/textures/jeija_fpga_top.png | Bin 0 -> 816 bytes mesecons_fpga/tool.lua | 62 + mesecons_gates/init.lua | 2 +- mesecons_hydroturbine/init.lua | 25 +- .../models/jeija_hydro_turbine_off.obj | 429 ++++ .../models/jeija_hydro_turbine_on.obj | 2061 +++++++++++++++++ .../jeija_hydro_turbine_turbine_misc_off.png | Bin 0 -> 820 bytes .../jeija_hydro_turbine_turbine_misc_on.png | Bin 0 -> 6957 bytes ...a_hydro_turbine_turbine_top_bottom_off.png | Bin 0 -> 496 bytes ...ja_hydro_turbine_turbine_top_bottom_on.png | Bin 0 -> 5128 bytes mesecons_insulated/init.lua | 2 +- mesecons_lamp/init.lua | 2 +- mesecons_luacontroller/init.lua | 17 + mesecons_microcontroller/init.lua | 128 +- mesecons_movestones/init.lua | 8 +- mesecons_pistons/init.lua | 27 +- mesecons_pressureplates/init.lua | 2 +- mesecons_receiver/init.lua | 197 +- mesecons_walllever/init.lua | 2 + mesecons_wires/doc/mesecon/preview.png | Bin mesecons_wires/init.lua | 2 +- moretrees/node_defs.lua | 6 +- unified_inventory/api.lua | 2 +- worldedit_commands/wand.lua | 6 +- 72 files changed, 5639 insertions(+), 1263 deletions(-) create mode 100644 mesecons/textures/jeija_microcontroller_LED_A.png create mode 100644 mesecons/textures/jeija_microcontroller_LED_B.png create mode 100644 mesecons/textures/jeija_microcontroller_LED_C.png create mode 100644 mesecons/textures/jeija_microcontroller_LED_D.png mode change 100644 => 100755 mesecons_blinkyplant/doc/blinkyplant/preview.png create mode 100644 mesecons_extrawires/models/mesecons_extrawires_crossover.b3d create mode 100644 mesecons_extrawires/src/mesecons_extrawires_crossover.blend create mode 100644 mesecons_fpga/depends.txt create mode 100644 mesecons_fpga/doc/fpga/description.html create mode 100644 mesecons_fpga/doc/fpga/preview.png create mode 100644 mesecons_fpga/doc/fpga/recipe.png create mode 100644 mesecons_fpga/doc/programmer/description.html create mode 100644 mesecons_fpga/doc/programmer/preview.png create mode 100644 mesecons_fpga/doc/programmer/recipe.png create mode 100644 mesecons_fpga/init.lua create mode 100644 mesecons_fpga/logic.lua create mode 100644 mesecons_fpga/textures/jeija_fpga_programmer.png create mode 100644 mesecons_fpga/textures/jeija_fpga_sides.png create mode 100644 mesecons_fpga/textures/jeija_fpga_top.png create mode 100644 mesecons_fpga/tool.lua create mode 100644 mesecons_hydroturbine/models/jeija_hydro_turbine_off.obj create mode 100644 mesecons_hydroturbine/models/jeija_hydro_turbine_on.obj create mode 100644 mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_off.png create mode 100644 mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_on.png create mode 100644 mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_off.png create mode 100644 mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_top_bottom_on.png mode change 100644 => 100755 mesecons_wires/doc/mesecon/preview.png diff --git a/boost_cart/functions.lua b/boost_cart/functions.lua index fcdd1adf..9876eb27 100644 --- a/boost_cart/functions.lua +++ b/boost_cart/functions.lua @@ -192,8 +192,8 @@ function boost_cart:boost_rail(pos, amount) end end -function boost_cart:register_rail(name, def) - local def_default = { +function boost_cart:register_rail(name, def_overwrite) + local def = { drawtype = "raillike", paramtype = "light", sunlight_propagates = true, @@ -204,7 +204,7 @@ function boost_cart:register_rail(name, def) fixed = {-1/2, -1/2, -1/2, 1/2, -1/2+1/16, 1/2}, } } - for k, v in pairs(def_default) do + for k, v in pairs(def_overwrite) do def[k] = v end if not def.inventory_image then diff --git a/colormachine/depends.txt b/colormachine/depends.txt index deb2ecc5..bd97bb54 100644 --- a/colormachine/depends.txt +++ b/colormachine/depends.txt @@ -1,15 +1,9 @@ dye default? unifieddyes? -coloredwood? -unifiedbricks? -stained_glass? cotton? wool? flags? -blox? -homedecor? -plasticbox? kerova? hardenedclay? clstone? diff --git a/colormachine/init.lua b/colormachine/init.lua index dceff54e..6a617693 100644 --- a/colormachine/init.lua +++ b/colormachine/init.lua @@ -23,6 +23,9 @@ -- Version 0.6 -- Changelog: +-- 08.02.17 Removed support for homedecor, blox, plasticbox, stainedglass, coloredwood and unifiedbricks +-- as those now use a new feature of newer versions of MT that makes the colormachine +-- obsolete for them. -- 22.04.16 Added support for myfences: https://forum.minetest.net/viewtopic.php?f=9&t=14275 -- 28.09.15 Added support for cblocks: https://forum.minetest.net/viewtopic.php?f=9&t=13303 -- 23.05.15 As all dyes can be crafted into other dyes, only white dye is consumed - provided the @@ -156,6 +159,7 @@ colormachine.data = { -- the dyes as such unifieddyes_ = { nr=1, modname='unifieddyes', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="ufdye", block="dye:white", add="", p=1 }, +--[[ -- coloredwood: sticks not supported (they are only craftitems) coloredwood_wood_ = { nr=2, modname='coloredwood', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="planks", block="default:wood", add="wood_", p=2 }, coloredwood_fence_ = { nr=3, modname='coloredwood', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="fence", block="default:fence_wood", add="fence_", p=2}, @@ -165,6 +169,7 @@ colormachine.data = { unifiedbricks_brickblock_ = { nr=5, modname='unifiedbricks', shades={1,0,1,1,1,1,1,1}, grey_shades={1,1,1,1,1}, u=1, descr="brick", block="default:brick", add="brickblock_",p=1}, -- the multicolored bricks come in fewer intensities (only 3 shades) and support only 3 insted of 5 shades of grey unifiedbricks_multicolor_ = { nr=6, modname='unifiedbricks', shades={1,0,0,0,1,0,1,0}, grey_shades={0,1,1,1,0}, u=1, descr="mbrick", block="default:brick", add="multicolor_",p=1}, +--]] hardenedclay_ = { nr=3.5, modname='hardenedclay', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="hclay", block="hardenedclay:hardened_clay_white", add="hardened_clay_", p=16}, colouredstonebricks_ = { nr=3.6, modname='colouredstonebricks', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="cbrick", block="default:stonebrick", add="", p=1}, @@ -177,12 +182,14 @@ colormachine.data = { colorcubes_window_ = { nr=3.93,modname='colorcubes', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="ccubew",block="default:stone", add="", p=1, obj_postfix='_window' }, +--[[ -- stained_glass: has a "faint" and "pastel" version as well (which are kind of additional shades used only by this mod) -- no shades of grey for the glass stained_glass_ = { nr=7, modname='stained_glass', shades={1,0,1,1,1,1,1,1}, grey_shades={0,0,0,0,0}, u=1, descr="glass", block="moreblocks:super_glow_glass", add="",p=2}, stained_glass_faint_ = { nr=8, modname='stained_glass', shades={0,0,1,0,0,0,0,0}, grey_shades={0,0,0,0,0}, u=1, descr="fglass", block="moreblocks:super_glow_glass", add="",p=2}, stained_glass_pastel_ = { nr=9, modname='stained_glass', shades={0,0,1,0,0,0,0,0}, grey_shades={0,0,0,0,0}, u=1, descr="pglass", block="moreblocks:super_glow_glass", add="",p=2}, +--]] -- use 9.5 to insert it between stained glass and cotton framedglass_ = { nr=9.5, modname='framedglass', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="fglass", block="framedglass:steel_framed_obsidian_glass", add="steel_framed_obsidian_glass",p=1}, @@ -215,6 +222,7 @@ colormachine.data = { -- grey variants do not seem to exist, even though the textures arethere (perhaps nobody wants a grey flag!) flags_ = { nr=17, modname='flags', shades={0,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=1, descr="flags", block="flags:white", add="", p=3 }, +--[[ blox_stone_ = { nr=18, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="SnBlox", block="default:stone", add="stone", p=2 }, blox_quarter_ = { nr=19, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="S4Blox", block="default:stone", add="quarter", p=4 }, blox_checker_ = { nr=20, modname='blox', shades={1,0,1,0,0,0,0,0}, grey_shades={1,0,0,0,1}, u=0, descr="S8Blox", block="default:stone", add="checker", p=4 }, @@ -261,8 +269,8 @@ colormachine.data = { homedecor_bottle_ = { nr=16.66, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,0,0,0}, u=0, descr="hbottle", block="vessels:glass_bottle", add="bottle_", composed=1}, homedecor_welcome_mat_ = { nr=16.67, modname='homedecor', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,0,0}, u=0, descr="hwmat", block="homedecor:welcome_mat_grey", add="welcome_mat_", composed=1}, - plasticbox_ = { nr=16.7, modname='plasticbox', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="plastic", block="plasticbox:plasticbox", add="plasticbox_",p=16}, +--]] kerova_chest_front_ = { nr=16.8, modname='kerova', shades={1,0,1,0,0,0,1,0}, grey_shades={1,0,1,1,1}, u=0, descr="kerova", block="default:chest", add="chest_",p=16}, diff --git a/fake_fire/init.lua b/fake_fire/init.lua index ffedce7d..20cd4421 100644 --- a/fake_fire/init.lua +++ b/fake_fire/init.lua @@ -155,12 +155,16 @@ minetest.register_node("fake_fire:embers", { }) -- CHIMNEYS -local materials = {"stone", "sandstone"} +local materials = { + { "stone", S("Stone chimney top") }, + { "sandstone", S("Sandstone chimney top") }, +} -for _, m in ipairs(materials) do - minetest.register_node("fake_fire:chimney_top_"..m, { - description = "Chimney Top - "..m, - tiles = {"default_"..m..".png^chimney_top.png", "default_"..m..".png"}, +for _, mat in ipairs(materials) do + local name, desc = unpack(mat) + minetest.register_node("fake_fire:chimney_top_"..name, { + description = desc, + tiles = {"default_"..name..".png^chimney_top.png", "default_"..name..".png"}, groups = {snappy=3}, paramtype = "light", sounds = default.node_sound_stone_defaults(), @@ -181,8 +185,8 @@ for _, m in ipairs(materials) do minetest.register_craft({ type = "shapeless", - output = 'fake_fire:chimney_top_'..m, - recipe = {"default:torch", "stairs:slab_"..m} + output = 'fake_fire:chimney_top_'..name, + recipe = {"default:torch", "stairs:slab_"..name} }) end @@ -206,7 +210,7 @@ minetest.register_tool("fake_fire:flint_and_steel", { minetest.set_node(pointed_thing.above, {name="fake_fire:fake_fire"}) end else - minetest.chat_send_player(user:get_player_name(), "This area is protected!") + minetest.chat_send_player(user:get_player_name(), S("This area is protected!")) end else return diff --git a/homedecor/clocks.lua b/homedecor/clocks.lua index b2a594a0..71d7ecde 100644 --- a/homedecor/clocks.lua +++ b/homedecor/clocks.lua @@ -1,25 +1,27 @@ + +local S = homedecor_i18n.gettext + local clock_sbox = { type = "fixed", fixed = { -8/32, -8/32, 14/32, 8/32, 8/32, 16/32 } } local clock_materials = { - { "plastic", "homedecor_generic_plastic.png" }, - { "wood", "default_wood.png" } + { "plastic", S("Plastic analog clock"), "homedecor_generic_plastic.png" }, + { "wood", S("Wooden analog clock"), "default_wood.png" } } -for i in ipairs(clock_materials) do - local m1 = clock_materials[i][1] - local m2 = clock_materials[i][2] - homedecor.register("analog_clock_"..m1, { - description = "Analog clock ("..m1..")", +for _, mat in ipairs(clock_materials) do + local name, desc, tex = unpack(mat) + homedecor.register("analog_clock_"..name, { + description = desc, mesh = "homedecor_analog_clock.obj", tiles = { "homedecor_analog_clock_face.png", - m2, + tex, "homedecor_analog_clock_back.png" }, - inventory_image = "homedecor_analog_clock_"..m1.."_inv.png", + inventory_image = "homedecor_analog_clock_"..name.."_inv.png", walkable = false, selection_box = clock_sbox, groups = {snappy=3}, @@ -28,7 +30,7 @@ for i in ipairs(clock_materials) do end homedecor.register("digital_clock", { - description = "Digital clock", + description = S("Digital clock"), tiles = { "homedecor_digital_clock_edges.png", "homedecor_digital_clock_edges.png", @@ -50,7 +52,7 @@ homedecor.register("digital_clock", { }) homedecor.register("alarm_clock", { - description = "Alarm clock", + description = S("Alarm clock"), tiles = { "homedecor_alarm_clock_top.png", "homedecor_alarm_clock_bottom.png", @@ -77,7 +79,7 @@ local gf_cbox = { } homedecor.register("grandfather_clock", { - description = "Grandfather Clock", + description = S("Grandfather Clock"), mesh = "homedecor_grandfather_clock.obj", tiles = { "default_glass.png", diff --git a/homedecor/cobweb.lua b/homedecor/cobweb.lua index 97310328..43b7794f 100644 --- a/homedecor/cobweb.lua +++ b/homedecor/cobweb.lua @@ -1,5 +1,8 @@ + +local S = homedecor_i18n.gettext + minetest.register_node("homedecor:cobweb_corner", { - description = "Cobweb", + description = S("Cobweb"), drawtype = "torchlike", tiles = { "homedecor_cobweb_torchlike.png" }, inventory_image = "homedecor_cobweb.png", @@ -23,7 +26,7 @@ minetest.register_node("homedecor:cobweb_corner", { }) minetest.register_node("homedecor:cobweb_centered", { - description = "Cobweb", + description = S("Cobweb"), drawtype = "nodebox", tiles = { "homedecor_cobweb.png" }, inventory_image = "homedecor_cobweb.png", @@ -50,7 +53,7 @@ minetest.register_node("homedecor:cobweb_centered", { }) minetest.register_node("homedecor:cobweb_flat", { - description = "Cobweb", + description = S("Cobweb"), drawtype = "nodebox", tiles = { "homedecor_cobweb.png" }, inventory_image = "homedecor_cobweb.png", @@ -77,7 +80,7 @@ minetest.register_node("homedecor:cobweb_flat", { }) minetest.register_node("homedecor:cobweb_plantlike", { - description = "Cobweb", + description = S("Cobweb"), drawtype = "plantlike", tiles = { "homedecor_cobweb_plantlike.png" }, inventory_image = "homedecor_cobweb.png", diff --git a/homedecor/electrics.lua b/homedecor/electrics.lua index 001c7035..d8cfa93a 100644 --- a/homedecor/electrics.lua +++ b/homedecor/electrics.lua @@ -1,5 +1,8 @@ + +local S = homedecor_i18n.gettext + homedecor.register("power_outlet", { - description = "Power Outlet", + description = S("Power Outlet"), tiles = { "homedecor_outlet_edges.png", "homedecor_outlet_edges.png", @@ -26,7 +29,7 @@ homedecor.register("power_outlet", { }) homedecor.register("light_switch", { - description = "Light switch", + description = S("Light switch"), tiles = { "homedecor_light_switch_edges.png", "homedecor_light_switch_edges.png", @@ -58,7 +61,7 @@ homedecor.register("light_switch", { homedecor.register("doorbell", { tiles = { "homedecor_doorbell.png" }, inventory_image = "homedecor_doorbell_inv.png", - description = "Doorbell", + description = S("Doorbell"), groups = {snappy=3}, walkable = false, node_box = { diff --git a/homedecor/foyer.lua b/homedecor/foyer.lua index ad2d54af..c6fb401c 100644 --- a/homedecor/foyer.lua +++ b/homedecor/foyer.lua @@ -1,8 +1,10 @@ +local S = homedecor_i18n.gettext + homedecor.register("coatrack_wallmount", { tiles = { homedecor.plain_wood }, inventory_image = "homedecor_coatrack_wallmount_inv.png", - description = "Coatrack (wallmounted)", + description = S("Wall-mounted coat rack"), groups = {snappy=3}, sounds = default.node_sound_wood_defaults(), node_box = { @@ -28,7 +30,7 @@ homedecor.register("coat_tree", { "homedecor_generic_wood_old.png" }, inventory_image = "homedecor_coatrack_inv.png", - description = "Coat tree", + description = S("Coat tree"), groups = {snappy=3}, sounds = default.node_sound_wood_defaults(), expand = { top="placeholder" }, @@ -40,9 +42,16 @@ homedecor.register("coat_tree", { on_rotate = screwdriver.rotate_simple }) -for _, color in pairs({ "green", "brown", "grey" }) do +local mat_colors = { + { "green", S("Green welcome mat") }, + { "brown", S("Brown welcome mat") }, + { "grey", S("Grey welcome mat") }, +} + +for _, mat in ipairs(mat_colors) do + local color, desc = unpack(mat) homedecor.register("welcome_mat_"..color, { - description = "Welcome Mat ("..color..")", + description = desc, tiles = { "homedecor_welcome_mat_"..color..".png", "homedecor_welcome_mat_bottom.png", diff --git a/homedecor/gastronomy.lua b/homedecor/gastronomy.lua index 052e526e..b08ca5c6 100644 --- a/homedecor/gastronomy.lua +++ b/homedecor/gastronomy.lua @@ -1,4 +1,6 @@ +local S = homedecor_i18n.gettext + local cutlery_cbox = { type = "fixed", fixed = { @@ -12,7 +14,7 @@ homedecor.register("cutlery_set", { mesh = "homedecor_cutlery_set.obj", tiles = { "homedecor_cutlery_set.png" }, inventory_image = "homedecor_cutlery_set_inv.png", - description = "Cutlery set", + description = S("Cutlery set"), groups = {snappy=3}, selection_box = cutlery_cbox, walkable = false, @@ -33,14 +35,19 @@ local fbottle_cbox = { } } -local bottle_colors = {"brown", "green"} +local bottle_colors = { + { "brown", S("Brown bottle"), S("Four brown bottles") }, + { "green", S("Green bottle"), S("Four green bottles") }, +} for _, b in ipairs(bottle_colors) do - homedecor.register("bottle_"..b, { - tiles = { "homedecor_bottle_"..b..".png" }, - inventory_image = "homedecor_bottle_"..b.."_inv.png", - description = "Bottle ("..b..")", + local name, desc, desc4 = unpack(b) + + homedecor.register("bottle_"..name, { + tiles = { "homedecor_bottle_"..name..".png" }, + inventory_image = "homedecor_bottle_"..name.."_inv.png", + description = desc, mesh = "homedecor_bottle.obj", walkable = false, groups = {snappy=3}, @@ -50,13 +57,13 @@ for _, b in ipairs(bottle_colors) do -- 4-bottle sets - homedecor.register("4_bottles_"..b, { + homedecor.register("4_bottles_"..name, { tiles = { - "homedecor_bottle_"..b..".png", - "homedecor_bottle_"..b..".png" + "homedecor_bottle_"..name..".png", + "homedecor_bottle_"..name..".png" }, - inventory_image = "homedecor_4_bottles_"..b.."_inv.png", - description = "Four "..b.." bottles", + inventory_image = "homedecor_4_bottles_"..name.."_inv.png", + description = desc4, mesh = "homedecor_4_bottles.obj", walkable = false, groups = {snappy=3}, @@ -71,7 +78,7 @@ homedecor.register("4_bottles_multi", { "homedecor_bottle_green.png" }, inventory_image = "homedecor_4_bottles_multi_inv.png", - description = "Four misc brown/green bottles", + description = S("Four misc brown/green bottles"), mesh = "homedecor_4_bottles.obj", groups = {snappy=3}, walkable = false, @@ -81,7 +88,7 @@ homedecor.register("4_bottles_multi", { local wine_cbox = homedecor.nodebox.slab_z(-0.75) homedecor.register("wine_rack", { - description = "Wine Rack", + description = S("Wine rack"), mesh = "homedecor_wine_rack.obj", tiles = { "homedecor_generic_wood_red.png", @@ -98,7 +105,7 @@ homedecor.register("wine_rack", { }) homedecor.register("dartboard", { - description = "Dartboard", + description = S("Dartboard"), mesh = "homedecor_dartboard.obj", tiles = { "homedecor_dartboard.png" }, inventory_image = "homedecor_dartboard_inv.png", @@ -114,7 +121,7 @@ homedecor.register("dartboard", { }) homedecor.register("beer_tap", { - description = "Beer tap", + description = S("Beer tap"), mesh = "homedecor_beer_taps.obj", tiles = { "homedecor_generic_metal_bright.png", @@ -137,9 +144,11 @@ homedecor.register("beer_tap", { wielditem:take_item() puncher:set_wielded_item(wielditem) inv:add_item("main", "homedecor:beer_mug 1") - minetest.chat_send_player(puncher:get_player_name(), "Ahh, a frosty cold beer - look in your inventory for it!") + minetest.chat_send_player(puncher:get_player_name(), + S("Ahh, a frosty cold beer - look in your inventory for it!")) else - minetest.chat_send_player(puncher:get_player_name(), "No room in your inventory to add a beer mug!") + minetest.chat_send_player(puncher:get_player_name(), + S("No room in your inventory to add a beer mug!")) end end end @@ -160,7 +169,7 @@ local beer_cbox = { } homedecor.register("beer_mug", { - description = "Beer mug", + description = S("Beer mug"), drawtype = "mesh", mesh = "homedecor_beer_mug.obj", tiles = { "homedecor_beer_mug.png" }, @@ -178,7 +187,7 @@ local svm_cbox = { } homedecor.register("soda_machine", { - description = "Soda Vending Machine", + description = S("Soda vending machine"), mesh = "homedecor_soda_machine.obj", tiles = {"homedecor_soda_machine.png"}, groups = {snappy=3}, @@ -201,7 +210,7 @@ homedecor.register("soda_machine", { pos=pos, max_hear_distance = 5 }) else - minetest.chat_send_player(puncher:get_player_name(), "Please insert a coin in the machine.") + minetest.chat_send_player(puncher:get_player_name(), S("Please insert a coin in the machine.")) end end }) diff --git a/homedecor/handlers/expansion.lua b/homedecor/handlers/expansion.lua index b3e78c81..13c69f99 100644 --- a/homedecor/handlers/expansion.lua +++ b/homedecor/handlers/expansion.lua @@ -1,4 +1,6 @@ +local S = homedecor_i18n.gettext + -- vectors to place one node next to or behind another homedecor.fdir_to_right = { @@ -53,7 +55,7 @@ homedecor.wall_fdir_to_fwd = { local placeholder_node = "homedecor:expansion_placeholder" minetest.register_node(placeholder_node, { - description = "Expansion placeholder (you hacker you!)", + description = S("Expansion placeholder (you hacker you!)"), groups = { not_in_creative_inventory=1 }, drawtype = "airlike", paramtype = "light", @@ -193,13 +195,15 @@ function homedecor.bed_expansion(pos, placer, itemstack, pointed_thing, trybunks local placer_name = placer:get_player_name() if not (def and def.buildable_to) then - minetest.chat_send_player( placer:get_player_name(), "Not enough room - the space for the headboard is occupied!" ) + minetest.chat_send_player( placer:get_player_name(), + S("Not enough room - the space for the headboard is occupied!")) minetest.set_node(pos, {name = "air"}) return true end if minetest.is_protected(forwardpos, placer_name) then - minetest.chat_send_player( placer:get_player_name(), "Someone already owns the spot where the headboard goes." ) + minetest.chat_send_player( placer:get_player_name(), + S("Someone already owns the spot where the headboard goes.")) return true end @@ -270,12 +274,12 @@ function homedecor.place_banister(itemstack, placer, pointed_thing) local placer_name = placer:get_player_name() if not (adef and adef.buildable_to) then - minetest.chat_send_player(placer_name, "Not enough room - the upper space is occupied!" ) + minetest.chat_send_player(placer_name, S("Not enough room - the upper space is occupied!" )) return itemstack end if minetest.is_protected(abovepos, placer_name) then - minetest.chat_send_player(placer_name, "Someone already owns that spot." ) + minetest.chat_send_player(placer_name, S("Someone already owns that spot.")) return itemstack end diff --git a/homedecor/kitchen_furniture.lua b/homedecor/kitchen_furniture.lua index d0712cf7..2ecb7bf5 100644 --- a/homedecor/kitchen_furniture.lua +++ b/homedecor/kitchen_furniture.lua @@ -96,7 +96,7 @@ local cp_cbox = { } homedecor.register("copper_pans", { - description = "Copper pans", + description = S("Copper pans"), mesh = "homedecor_copper_pans.obj", tiles = { "homedecor_polished_copper.png" }, inventory_image = "homedecor_copper_pans_inv.png", @@ -115,7 +115,7 @@ homedecor.register("kitchen_faucet", { mesh = "homedecor_kitchen_faucet.obj", tiles = { "homedecor_generic_metal_bright.png" }, inventory_image = "homedecor_kitchen_faucet_inv.png", - description = "Kitchen Faucet", + description = S("Kitchen Faucet"), groups = {snappy=3}, selection_box = kf_cbox, walkable = false, diff --git a/homedecor/lighting.lua b/homedecor/lighting.lua index 0a1edaf3..f7314d0f 100644 --- a/homedecor/lighting.lua +++ b/homedecor/lighting.lua @@ -331,7 +331,7 @@ homedecor.register("ceiling_lantern", { tiles = { "homedecor_light.png", "homedecor_generic_metal_wrought_iron.png" }, use_texture_alpha = true, inventory_image = "homedecor_ceiling_lantern_inv.png", - description = "Ceiling Lantern", + description = S("Ceiling Lantern"), groups = {snappy=3}, light_source = 11, selection_box = cl_cbox, diff --git a/homedecor/office.lua b/homedecor/office.lua index b28c3a30..6e9bbc1b 100644 --- a/homedecor/office.lua +++ b/homedecor/office.lua @@ -23,7 +23,7 @@ local desk_cbox = { fixed = { -0.5, -0.5, -0.5, 1.5, 0.5, 0.5 } } homedecor.register("desk", { - description = "Desk", + description = S("Desk"), mesh = "homedecor_desk.obj", tiles = { homedecor.plain_wood, @@ -49,7 +49,7 @@ local globe_cbox = { } homedecor.register("desk_globe", { - description = "Desk globe", + description = S("Desk globe"), mesh = "homedecor_desk_globe.obj", tiles = { "homedecor_generic_wood_red.png", @@ -65,7 +65,7 @@ homedecor.register("desk_globe", { }) homedecor.register("calendar", { - description = "Calendar", + description = S("Calendar"), mesh = "homedecor_calendar.obj", tiles = {"homedecor_calendar.png"}, inventory_image = "homedecor_calendar_inv.png", @@ -81,11 +81,11 @@ homedecor.register("calendar", { groups = {choppy=2,attached_node=1}, legacy_wallmounted = true, sounds = default.node_sound_defaults(), - infotext = "Date (right-click to update):\n" .. os.date("%Y-%m-%d"), -- ISO 8601 format + infotext = S("Date (right-click to update):\n@1", os.date("%Y-%m-%d")), -- ISO 8601 format on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local meta = minetest.get_meta(pos) local date = os.date("%Y-%m-%d") - meta:set_string("infotext", "Date (right-click to update):\n"..date) + meta:set_string("infotext", S("Date (right-click to update):\n@1", date)) return itemstack end }) @@ -104,12 +104,18 @@ local ofchairs_cbox = { } } -for _, c in pairs({"basic", "upscale"}) do - homedecor.register("office_chair_"..c, { - description = "Office chair ("..c..")", +local chairs = { + { "basic", S("Basic office chair") }, + { "upscale", S("Upscale office chair") }, +} + +for _, c in pairs(chairs) do + local name, desc = unpack(c) + homedecor.register("office_chair_"..name, { + description = desc, drawtype = "mesh", - tiles = { "homedecor_office_chair_"..c..".png" }, - mesh = "homedecor_office_chair_"..c..".obj", + tiles = { "homedecor_office_chair_"..name..".png" }, + mesh = "homedecor_office_chair_"..name..".obj", groups = { snappy = 3 }, sounds = default.node_sound_wood_defaults(), selection_box = ofchairs_sbox, diff --git a/homedecor/trash_cans.lua b/homedecor/trash_cans.lua index 54057003..7da6c045 100644 --- a/homedecor/trash_cans.lua +++ b/homedecor/trash_cans.lua @@ -1,4 +1,6 @@ +local S = homedecor_i18n.gettext + local tg_cbox = { type = "fixed", fixed = { -0.35, -0.5, -0.35, 0.35, 0.4, 0.35 } @@ -9,7 +11,7 @@ homedecor.register("trash_can_green", { mesh = "homedecor_trash_can_green.obj", tiles = { "homedecor_pool_table_baize.png" }, inventory_image = "homedecor_trash_can_green_inv.png", - description = "Trash Can (green)", + description = S("Green Trash Can"), groups = {snappy=3}, selection_box = tg_cbox, collision_box = tg_cbox, @@ -29,7 +31,7 @@ homedecor.register("trash_can_green_open", { on_punch = function(pos, node, puncher, pointed_thing) minetest.set_node(pos, {name = "homedecor:trash_can_green", param2 = node.param2}) end, - infotext="Trash Can", + infotext=S("Trash Can"), inventory= { size = 9, formspec = "size[8,9]" .. default.gui_bg .. default.gui_bg_img .. default.gui_slots .. @@ -57,7 +59,7 @@ homedecor.register("trash_can", { mesh = "homedecor_trash_can.obj", tiles = { "homedecor_trash_can.png" }, inventory_image = "homedecor_trash_can_inv.png", - description = "Trash Can (small)", + description = S("Small Trash Can"), groups = {snappy=3}, selection_box = trash_cbox, collision_box = trash_cbox, diff --git a/homedecor/wardrobe.lua b/homedecor/wardrobe.lua index 986eed57..d0e35380 100644 --- a/homedecor/wardrobe.lua +++ b/homedecor/wardrobe.lua @@ -1,4 +1,6 @@ +local S = homedecor_i18n.gettext + local wd_cbox = { type = "fixed", fixed = { -0.5, -0.5, -0.5, 0.5, 1.5, 0.5 } @@ -12,14 +14,14 @@ homedecor.register("wardrobe", { "homedecor_wardrobe_doors.png" }, inventory_image = "homedecor_wardrobe_inv.png", - description = "Wardrobe", + description = S("Wardrobe"), groups = {snappy=3}, selection_box = wd_cbox, collision_box = wd_cbox, sounds = default.node_sound_wood_defaults(), expand = { top="placeholder" }, on_rotate = screwdriver.rotate_simple, - infotext = "Wardrobe", + infotext = S("Wardrobe"), inventory = { size = 10 }, @@ -34,9 +36,9 @@ homedecor.register("wardrobe", { "image_button_exit["..(i-1)..".5,2;1.1,2;homedecor_clothes_fe"..skins[i].."_preview.png;fe"..skins[i]..";]" end meta:set_string("formspec", "size[5.5,8.5]"..default.gui_bg..default.gui_bg_img..default.gui_slots.. - "vertlabel[0,0.5;CLOTHES]".. + "vertlabel[0,0.5;"..minetest.formspec_escape(S("Clothes")).."]".. clothes_strings.. - "vertlabel[0,5.2;STORAGE]".. + "vertlabel[0,5.2;"..minetest.formspec_escape(S("Storage")).."]".. "list[current_name;main;0.5,4.5;5,2;]".. "list[current_player;main;0.5,6.8;5,2;]" .. "listring[]") diff --git a/homedecor_i18n/locale/de.po b/homedecor_i18n/locale/de.po index ad927d06..7d1f2dd8 100644 --- a/homedecor_i18n/locale/de.po +++ b/homedecor_i18n/locale/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-30 21:31-0300\n" +"POT-Creation-Date: 2017-02-10 05:34-0300\n" "PO-Revision-Date: 2017-01-25 00:03-0300\n" "Last-Translator: Xanthin \n" "Language-Team: German\n" @@ -288,7 +288,7 @@ msgstr "" msgid "Loaded!" msgstr "Geladen!" -#: ../lrfurn/armchairs.lua +#: ../lrfurn/armchairs.lua ../homedecor/furniture.lua #, fuzzy msgid "Armchair" msgstr "Sessel (%s)" @@ -327,99 +327,32 @@ msgstr "" msgid "Glowing Embers" msgstr "" +#: ../fake_fire/init.lua +msgid "Stone chimney top" +msgstr "" + +#: ../fake_fire/init.lua +msgid "Sandstone chimney top" +msgstr "" + #: ../fake_fire/init.lua msgid "Flint and steel" msgstr "" -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua -#, fuzzy -msgid "black" -msgstr "schwarz" - -#: ../homedecor/bedroom.lua ../homedecor/books.lua -msgid "brown" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua -#, fuzzy -msgid "blue" -msgstr "blau" - -#: ../homedecor/bedroom.lua -msgid "cyan" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#, fuzzy -msgid "dark grey" -msgstr "dunkelgruen" - -#: ../homedecor/bedroom.lua ../homedecor/furniture.lua -#, fuzzy -msgid "dark green" -msgstr "dunkelgruen" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/exterior.lua -#: ../homedecor/misc-nodes.lua ../homedecor/books.lua -#, fuzzy -msgid "green" -msgstr "gruen" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua -msgid "grey" +#: ../fake_fire/init.lua +msgid "This area is protected!" msgstr "" #: ../homedecor/bedroom.lua -msgid "magenta" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "orange" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/furniture.lua #, fuzzy -msgid "pink" -msgstr "rosa" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua -#, fuzzy -msgid "red" +msgid "Bed" msgstr "rot" -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua -#: ../homedecor/furniture.lua -#, fuzzy -msgid "violet" -msgstr "violett" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#, fuzzy -msgid "white" -msgstr "weiss" - -#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua -msgid "yellow" +#: ../homedecor/bedroom.lua +msgid "Bed (king sized)" msgstr "" #: ../homedecor/bedroom.lua -msgid "Bed (@1)" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "Bed (@1, king sized)" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua msgid "mahogany" msgstr "" @@ -484,6 +417,15 @@ msgstr "Unterschrank mit Spuele" msgid "Under-sink cabinet" msgstr "Unterschrank" +#: ../homedecor/kitchen_furniture.lua +msgid "Copper pans" +msgstr "" + +#: ../homedecor/kitchen_furniture.lua +#, fuzzy +msgid "Kitchen Faucet" +msgstr "Kuechenschrank" + #: ../homedecor/kitchen_furniture.lua msgid "Paper towels" msgstr "" @@ -617,6 +559,18 @@ msgstr "Asphaltschindeln" msgid "Chimney" msgstr "" +#: ../homedecor/electrics.lua +msgid "Power Outlet" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Light switch" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Doorbell" +msgstr "" + #: ../homedecor/window_treatments.lua msgid "Window (quartered)" msgstr "" @@ -664,6 +618,38 @@ msgstr "" msgid "Stained Glass" msgstr "" +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/furniture.lua +#, fuzzy +msgid "red" +msgstr "rot" + +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/misc-nodes.lua +#, fuzzy +msgid "green" +msgstr "gruen" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "blue" +msgstr "blau" + +#: ../homedecor/window_treatments.lua ../homedecor/lighting.lua +#, fuzzy +msgid "white" +msgstr "weiss" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "pink" +msgstr "rosa" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "violet" +msgstr "violett" + #: ../homedecor/crafts.lua #, fuzzy msgid "Uncooked Terracotta Base" @@ -816,6 +802,34 @@ msgstr "" msgid "Telephone" msgstr "" +#: ../homedecor/cobweb.lua +msgid "Cobweb" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Plastic analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Wooden analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Digital clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Alarm clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Grandfather Clock" +msgstr "" + +#: ../homedecor/lighting.lua ../homedecor/exterior.lua +msgid "yellow" +msgstr "" + #: ../homedecor/lighting.lua #, fuzzy msgid "Thick Glowlight" @@ -876,6 +890,11 @@ msgstr "" msgid "Hanging Lantern" msgstr "" +#: ../homedecor/lighting.lua +#, fuzzy +msgid "Ceiling Lantern" +msgstr "Unterschrank" + #: ../homedecor/lighting.lua msgid "Lattice lantern (large)" msgstr "" @@ -894,8 +913,9 @@ msgid "Standing Lamp" msgstr "" #: ../homedecor/lighting.lua -msgid "Desk Lamp (@1)" -msgstr "" +#, fuzzy +msgid "Desk Lamp" +msgstr "Tischlampe" #: ../homedecor/lighting.lua msgid "Ceiling Lamp" @@ -975,22 +995,9 @@ msgstr "Schmiedeeiserner Zaun/Gelaender" msgid "Wrought Iron fence (type 2) Corner" msgstr "Schmiedeeiserner Zaun/Gelaender" -#: ../homedecor/shutters.lua -msgid "unpainted oak" -msgstr "" - -#: ../homedecor/shutters.lua -msgid "forest green" -msgstr "" - #: ../homedecor/shutters.lua #, fuzzy -msgid "light blue" -msgstr "rechts" - -#: ../homedecor/shutters.lua -#, fuzzy -msgid "Wooden Shutter (@1)" +msgid "Wooden Shutter" msgstr "Holzjalousie (rot)" #: ../homedecor/exterior.lua @@ -1108,6 +1115,86 @@ msgstr "" msgid "Radiator heater" msgstr "" +#: ../homedecor/wardrobe.lua +msgid "Wardrobe" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Clothes" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Storage" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Green Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Small Trash Can" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Cutlery set" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Brown bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four brown bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Green bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four misc brown/green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Wine rack" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Dartboard" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer tap" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Ahh, a frosty cold beer - look in your inventory for it!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "No room in your inventory to add a beer mug!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer mug" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Soda vending machine" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Please insert a coin in the machine." +msgstr "" + #: ../homedecor/doors_and_gates.lua #, fuzzy msgid "Mahogany Closet Door (@1 opening)" @@ -1215,6 +1302,26 @@ msgstr "" msgid "Japanese-style door" msgstr "" +#: ../homedecor/foyer.lua +msgid "Wall-mounted coat rack" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Coat tree" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Green welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Brown welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Grey welcome mat" +msgstr "" + #: ../homedecor/misc-nodes.lua #, fuzzy msgid "Textured Ceiling Paint" @@ -1241,6 +1348,11 @@ msgstr "" msgid "Rug (@1)" msgstr "" +#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua +#, fuzzy +msgid "black" +msgstr "schwarz" + #: ../homedecor/misc-nodes.lua msgid "Flower Pot (@1)" msgstr "" @@ -1408,7 +1520,7 @@ msgid "Legs for Utility Table" msgstr "Tischbeine fuer Arbeitsplatte" #: ../homedecor/books.lua -msgid "Writable Book (@1)" +msgid "Writable Book" msgstr "" #: ../homedecor/books.lua @@ -1436,13 +1548,13 @@ msgstr "" #: ../homedecor/furniture.lua #, fuzzy -msgid "Kitchen chair (@1)" -msgstr "Kuechenschrank" +msgid "dark green" +msgstr "dunkelgruen" #: ../homedecor/furniture.lua #, fuzzy -msgid "Armchair (@1)" -msgstr "Sessel (%s)" +msgid "Kitchen chair" +msgstr "Kuechenschrank" #: ../homedecor/furniture.lua msgid "Bookshelf (open-frame)" @@ -1480,6 +1592,27 @@ msgstr "%s versuchte Zugang zu %s von %s zu bekommen bei %s" msgid "@1 (Locked)" msgstr "%s (verschlossen)" +#: ../homedecor/handlers/expansion.lua +msgid "Expansion placeholder (you hacker you!)" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the space for the headboard is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Someone already owns the spot where the headboard goes." +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the upper space is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +#, fuzzy +msgid "Someone already owns that spot." +msgstr "Tut mir leid, %s gehoert diese Stelle." + #: ../homedecor/handlers/furnaces.lua msgid "Furnace" msgstr "" @@ -1512,48 +1645,43 @@ msgstr ": Produktfelder sind voll" msgid "Filing cabinet" msgstr "Unterschrank" -#: ../homedecor/bathroom_furniture.lua +#: ../homedecor/office.lua #, fuzzy -msgid "white/grey" -msgstr "weiss" +msgid "Desk" +msgstr "Tischlampe" -#: ../homedecor/bathroom_furniture.lua -msgid "white/dark grey" +#: ../homedecor/office.lua +msgid "Desk globe" +msgstr "" + +#: ../homedecor/office.lua +msgid "Calendar" +msgstr "" + +#: ../homedecor/office.lua +msgid "" +"Date (right-click to update):\n" +"@1" +msgstr "" + +#: ../homedecor/office.lua +msgid "Basic office chair" +msgstr "" + +#: ../homedecor/office.lua +msgid "Upscale office chair" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "white/black" +msgid "Bathroom/kitchen tiles (dark)" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "black/dark grey" +msgid "Bathroom/kitchen tiles (medium)" msgstr "" #: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/red" -msgstr "weiss" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/green" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/blue" -msgstr "weiss" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/yellow" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/tan" -msgstr "weiss" - -#: ../homedecor/bathroom_furniture.lua -msgid "Bathroom/kitchen tiles (@1)" +msgid "Bathroom/kitchen tiles (light)" msgstr "" #: ../homedecor/bathroom_furniture.lua @@ -1565,6 +1693,34 @@ msgstr "" msgid "Medicine cabinet" msgstr "Unterschrank" +#, fuzzy +#~ msgid "white/grey" +#~ msgstr "weiss" + +#, fuzzy +#~ msgid "white/red" +#~ msgstr "weiss" + +#, fuzzy +#~ msgid "white/blue" +#~ msgstr "weiss" + +#, fuzzy +#~ msgid "white/tan" +#~ msgstr "weiss" + +#, fuzzy +#~ msgid "dark grey" +#~ msgstr "dunkelgruen" + +#, fuzzy +#~ msgid "light blue" +#~ msgstr "rechts" + +#, fuzzy +#~ msgid "Armchair (@1)" +#~ msgstr "Sessel (%s)" + #, fuzzy #~ msgid "dark_grey" #~ msgstr "dunkelgruen" @@ -1697,9 +1853,6 @@ msgstr "Unterschrank" #~ msgid "someone " #~ msgstr "jemand" -#~ msgid "Sorry, %s owns that spot. " -#~ msgstr "Tut mir leid, %s gehoert diese Stelle." - #~ msgid "White Glowlight (small cube) " #~ msgstr "Weisse Gluehlampe (kleiner Wuerfel)" diff --git a/homedecor_i18n/locale/es.po b/homedecor_i18n/locale/es.po index 5c52b50c..75944ad7 100644 --- a/homedecor_i18n/locale/es.po +++ b/homedecor_i18n/locale/es.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-30 21:31-0300\n" +"POT-Creation-Date: 2017-02-10 05:34-0300\n" "PO-Revision-Date: 2017-01-24 20:24-0300\n" "Last-Translator: Diego Martínez \n" "Language-Team: Spanish\n" @@ -276,7 +276,7 @@ msgstr "¡No hay lugar para colocar el sofá!" msgid "Loaded!" msgstr "¡Cargado!" -#: ../lrfurn/armchairs.lua +#: ../lrfurn/armchairs.lua ../homedecor/furniture.lua msgid "Armchair" msgstr "Sillón" @@ -312,90 +312,31 @@ msgstr "Fuego fantasía" msgid "Glowing Embers" msgstr "Brasas ardientes" +#: ../fake_fire/init.lua +msgid "Stone chimney top" +msgstr "Chimenea de piedra" + +#: ../fake_fire/init.lua +msgid "Sandstone chimney top" +msgstr "Chimenea de arenisca" + #: ../fake_fire/init.lua msgid "Flint and steel" msgstr "Pedernal y acero" -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua -msgid "black" -msgstr "negra" - -#: ../homedecor/bedroom.lua ../homedecor/books.lua -msgid "brown" -msgstr "marrón" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua -msgid "blue" -msgstr "azul" +#: ../fake_fire/init.lua +msgid "This area is protected!" +msgstr "¡Ésta área está protegida!" #: ../homedecor/bedroom.lua -msgid "cyan" -msgstr "cian" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -msgid "dark grey" -msgstr "gris oscuro" - -#: ../homedecor/bedroom.lua ../homedecor/furniture.lua -msgid "dark green" -msgstr "verde oscuro" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/exterior.lua -#: ../homedecor/misc-nodes.lua ../homedecor/books.lua -msgid "green" -msgstr "verde" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua -msgid "grey" -msgstr "gris" +msgid "Bed" +msgstr "Cama" #: ../homedecor/bedroom.lua -msgid "magenta" -msgstr "magenta" +msgid "Bed (king sized)" +msgstr "Cama (tamaño grande)" #: ../homedecor/bedroom.lua -msgid "orange" -msgstr "naranja" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/furniture.lua -msgid "pink" -msgstr "rosa" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua -msgid "red" -msgstr "roja" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua -#: ../homedecor/furniture.lua -msgid "violet" -msgstr "violeta" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -msgid "white" -msgstr "blanca" - -#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua -msgid "yellow" -msgstr "amarilla" - -#: ../homedecor/bedroom.lua -msgid "Bed (@1)" -msgstr "Cama (@1)" - -#: ../homedecor/bedroom.lua -msgid "Bed (@1, king sized)" -msgstr "Cama (@1, tamaño rey)" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua msgid "mahogany" msgstr "caoba" @@ -451,6 +392,14 @@ msgstr "Gabinete de cocina con lavabo" msgid "Under-sink cabinet" msgstr "Gabinete bajo lavabo" +#: ../homedecor/kitchen_furniture.lua +msgid "Copper pans" +msgstr "Sartenes de cobre" + +#: ../homedecor/kitchen_furniture.lua +msgid "Kitchen Faucet" +msgstr "Grifo de cocina" + #: ../homedecor/kitchen_furniture.lua msgid "Paper towels" msgstr "Toallas de papel" @@ -565,6 +514,18 @@ msgstr "Claraboya de cristal" msgid "Chimney" msgstr "Chimenea" +#: ../homedecor/electrics.lua +msgid "Power Outlet" +msgstr "Toma de corriente" + +#: ../homedecor/electrics.lua +msgid "Light switch" +msgstr "Interruptor de luz" + +#: ../homedecor/electrics.lua +msgid "Doorbell" +msgstr "Timbre" + #: ../homedecor/window_treatments.lua msgid "Window (quartered)" msgstr "Ventana (cuarteada)" @@ -583,7 +544,7 @@ msgstr "Persianas (finas)" #: ../homedecor/window_treatments.lua msgid "Curtains" -msgstr "Cortinas (@1)" +msgstr "Cortinas" #: ../homedecor/window_treatments.lua ../homedecor/fences.lua #: ../homedecor/misc-nodes.lua ../homedecor/tables.lua @@ -607,6 +568,32 @@ msgstr "Caja de flores de ventana" msgid "Stained Glass" msgstr "Vídrio coloreado" +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/furniture.lua +msgid "red" +msgstr "roja" + +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/misc-nodes.lua +msgid "green" +msgstr "verde" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +msgid "blue" +msgstr "azul" + +#: ../homedecor/window_treatments.lua ../homedecor/lighting.lua +msgid "white" +msgstr "blanca" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +msgid "pink" +msgstr "rosa" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +msgid "violet" +msgstr "violeta" + #: ../homedecor/crafts.lua msgid "Uncooked Terracotta Base" msgstr "Base de terracota sin cocer" @@ -743,17 +730,45 @@ msgstr "DVD y reproductor de vídeo" msgid "Telephone" msgstr "Teléfono" +#: ../homedecor/cobweb.lua +msgid "Cobweb" +msgstr "Telaraña" + +#: ../homedecor/clocks.lua +msgid "Plastic analog clock" +msgstr "Reloj análogo de plástico" + +#: ../homedecor/clocks.lua +msgid "Wooden analog clock" +msgstr "Reloj análogo de madera" + +#: ../homedecor/clocks.lua +msgid "Digital clock" +msgstr "Reloj digital" + +#: ../homedecor/clocks.lua +msgid "Alarm clock" +msgstr "Reloj de alarma" + +#: ../homedecor/clocks.lua +msgid "Grandfather Clock" +msgstr "Reloj de péndulo" + +#: ../homedecor/lighting.lua ../homedecor/exterior.lua +msgid "yellow" +msgstr "amarilla" + #: ../homedecor/lighting.lua msgid "Thick Glowlight" -msgstr "Luz brillante gruesa (@1)" +msgstr "Luz brillante gruesa" #: ../homedecor/lighting.lua msgid "Thin Glowlight" -msgstr "Luz brillante fina (@1)" +msgstr "Luz brillante fina" #: ../homedecor/lighting.lua msgid "Small Glowlight Cube" -msgstr "Cubo pequeño de luz brillante (@1)" +msgstr "Cubo pequeño de luz brillante" #: ../homedecor/lighting.lua msgid "Plasma Lamp" @@ -799,6 +814,10 @@ msgstr "Linterna de piso" msgid "Hanging Lantern" msgstr "Linterna colgante" +#: ../homedecor/lighting.lua +msgid "Ceiling Lantern" +msgstr "Linterna de techo" + #: ../homedecor/lighting.lua msgid "Lattice lantern (large)" msgstr "Linterna enrejada (grande)" @@ -809,15 +828,15 @@ msgstr "Linterna enrejada (pequeña)" #: ../homedecor/lighting.lua msgid "Table Lamp" -msgstr "Lámpara de mesa (@1)" +msgstr "Lámpara de mesa" #: ../homedecor/lighting.lua msgid "Standing Lamp" msgstr "Lámpara de pié" #: ../homedecor/lighting.lua -msgid "Desk Lamp (@1)" -msgstr "Lámpara de escritorio (@1)" +msgid "Desk Lamp" +msgstr "Lámpara de escritorio" #: ../homedecor/lighting.lua msgid "Ceiling Lamp" @@ -884,20 +903,8 @@ msgid "Wrought Iron fence (type 2) Corner" msgstr "Esquina de cerca de hierro forjado (tipo 2)" #: ../homedecor/shutters.lua -msgid "unpainted oak" -msgstr "roble sin pintar" - -#: ../homedecor/shutters.lua -msgid "forest green" -msgstr "verde bosque" - -#: ../homedecor/shutters.lua -msgid "light blue" -msgstr "azul claro" - -#: ../homedecor/shutters.lua -msgid "Wooden Shutter (@1)" -msgstr "Postigo de madera (@1)" +msgid "Wooden Shutter" +msgstr "Postigo de madera" #: ../homedecor/exterior.lua msgid "Barbecue" @@ -1007,6 +1014,86 @@ msgstr "Calentador de espacios" msgid "Radiator heater" msgstr "Radiador" +#: ../homedecor/wardrobe.lua +msgid "Wardrobe" +msgstr "Guardarropa" + +#: ../homedecor/wardrobe.lua +msgid "Clothes" +msgstr "Ropa" + +#: ../homedecor/wardrobe.lua +msgid "Storage" +msgstr "Almacenamiento" + +#: ../homedecor/trash_cans.lua +msgid "Green Trash Can" +msgstr "Bote de basura verde" + +#: ../homedecor/trash_cans.lua +msgid "Trash Can" +msgstr "Bote de basura" + +#: ../homedecor/trash_cans.lua +msgid "Small Trash Can" +msgstr "Bote de basura pequeño" + +#: ../homedecor/gastronomy.lua +msgid "Cutlery set" +msgstr "Cubertería" + +#: ../homedecor/gastronomy.lua +msgid "Brown bottle" +msgstr "Botella marrón" + +#: ../homedecor/gastronomy.lua +msgid "Four brown bottles" +msgstr "Cuatro botellas marrones" + +#: ../homedecor/gastronomy.lua +msgid "Green bottle" +msgstr "Botella verde" + +#: ../homedecor/gastronomy.lua +msgid "Four green bottles" +msgstr "Cuatro botellas verdes" + +#: ../homedecor/gastronomy.lua +msgid "Four misc brown/green bottles" +msgstr "Cuatro botellas verdes/marrones" + +#: ../homedecor/gastronomy.lua +msgid "Wine rack" +msgstr "Estantería de vino" + +#: ../homedecor/gastronomy.lua +msgid "Dartboard" +msgstr "Diana" + +#: ../homedecor/gastronomy.lua +msgid "Beer tap" +msgstr "Grifo de cerveza" + +#: ../homedecor/gastronomy.lua +msgid "Ahh, a frosty cold beer - look in your inventory for it!" +msgstr "¡Ah, una cerveza fría! La encontrarás en tu inventario." + +#: ../homedecor/gastronomy.lua +msgid "No room in your inventory to add a beer mug!" +msgstr "¡No hay lugar para tomar una jarra de cerveza!" + +#: ../homedecor/gastronomy.lua +msgid "Beer mug" +msgstr "Jarra de cerveza" + +#: ../homedecor/gastronomy.lua +msgid "Soda vending machine" +msgstr "Máquina expendedora de refrescos" + +#: ../homedecor/gastronomy.lua +msgid "Please insert a coin in the machine." +msgstr "Por favor introduzca una moneda en la máquina." + #: ../homedecor/doors_and_gates.lua msgid "Mahogany Closet Door (@1 opening)" msgstr "Puerta de armario de caoba (abre a la @1)" @@ -1099,6 +1186,26 @@ msgstr "Tatami" msgid "Japanese-style door" msgstr "Puerta estilo japonés" +#: ../homedecor/foyer.lua +msgid "Wall-mounted coat rack" +msgstr "Perchero de pared" + +#: ../homedecor/foyer.lua +msgid "Coat tree" +msgstr "Perchero de piso" + +#: ../homedecor/foyer.lua +msgid "Green welcome mat" +msgstr "Tapete verde de bienvenida" + +#: ../homedecor/foyer.lua +msgid "Brown welcome mat" +msgstr "Tapete marrón de bienvenida" + +#: ../homedecor/foyer.lua +msgid "Grey welcome mat" +msgstr "Tapete gris de bienvenida" + #: ../homedecor/misc-nodes.lua msgid "Textured Ceiling Paint" msgstr "Pintura de techo con textura" @@ -1123,6 +1230,10 @@ msgstr "persa" msgid "Rug (@1)" msgstr "Tapete (@1)" +#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua +msgid "black" +msgstr "negra" + #: ../homedecor/misc-nodes.lua msgid "Flower Pot (@1)" msgstr "Maceta (@1)" @@ -1280,8 +1391,8 @@ msgid "Legs for Utility Table" msgstr "Patas para mesa utilitaria" #: ../homedecor/books.lua -msgid "Writable Book (@1)" -msgstr "Libro (@1)" +msgid "Writable Book" +msgstr "Libro" #: ../homedecor/books.lua msgid "@1 has written in a book (title: \"@2\"): \"@3\" at location @4" @@ -1304,12 +1415,12 @@ msgid "plain" msgstr "liso" #: ../homedecor/furniture.lua -msgid "Kitchen chair (@1)" -msgstr "Silla de cocina (@1)" +msgid "dark green" +msgstr "verde oscuro" #: ../homedecor/furniture.lua -msgid "Armchair (@1)" -msgstr "Sillón (@1)" +msgid "Kitchen chair" +msgstr "Silla de cocina" #: ../homedecor/furniture.lua msgid "Bookshelf (open-frame)" @@ -1343,6 +1454,26 @@ msgstr "@1 intentó acceder a @2 perteneciente a @3 en @4" msgid "@1 (Locked)" msgstr "@1 (Cerrado)" +#: ../homedecor/handlers/expansion.lua +msgid "Expansion placeholder (you hacker you!)" +msgstr "Marcador temporal de expansión (¡Tu, hacker!)" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the space for the headboard is occupied!" +msgstr "No hay suficiente espacio - ¡El espacio para la cabecera está ocupado!" + +#: ../homedecor/handlers/expansion.lua +msgid "Someone already owns the spot where the headboard goes." +msgstr "Alguien ya es dueño del lugar donde va la cabecera." + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the upper space is occupied!" +msgstr "No hay suficiente espacio - ¡El espacio de encima está ocupado!" + +#: ../homedecor/handlers/expansion.lua +msgid "Someone already owns that spot." +msgstr "Alguien ya es dueño de ese lugar." + #: ../homedecor/handlers/furnaces.lua msgid "Furnace" msgstr "Horno" @@ -1365,51 +1496,51 @@ msgstr "@1 (sin combustible)" #: ../homedecor/handlers/furnaces.lua msgid "@1 (output bins are full)" -msgstr "@1 (output bins are full)" +msgstr "@1 (ranuras de salida llenas)" #: ../homedecor/office.lua msgid "Filing cabinet" msgstr "Archivador" -#: ../homedecor/bathroom_furniture.lua -msgid "white/grey" -msgstr "blanco/gris" +#: ../homedecor/office.lua +msgid "Desk" +msgstr "Escritorio" + +#: ../homedecor/office.lua +msgid "Desk globe" +msgstr "Globo terráqueo" + +#: ../homedecor/office.lua +msgid "Calendar" +msgstr "Calendario" + +#: ../homedecor/office.lua +msgid "" +"Date (right-click to update):\n" +"@1" +msgstr "" +"Fecha (clic derecho para actualizar):\n" +"@1" + +#: ../homedecor/office.lua +msgid "Basic office chair" +msgstr "Silla básica de oficina" + +#: ../homedecor/office.lua +msgid "Upscale office chair" +msgstr "Silla grande de oficina" #: ../homedecor/bathroom_furniture.lua -msgid "white/dark grey" -msgstr "blanco/gris oscuro" +msgid "Bathroom/kitchen tiles (dark)" +msgstr "Azulejo de baño/cocina (tonos oscuros)" #: ../homedecor/bathroom_furniture.lua -msgid "white/black" -msgstr "blanco/negro" +msgid "Bathroom/kitchen tiles (medium)" +msgstr "Azulejo de baño/cocina (tonos medios)" #: ../homedecor/bathroom_furniture.lua -msgid "black/dark grey" -msgstr "negro/gris oscuro" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/red" -msgstr "blanco/rojo" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/green" -msgstr "blanco/verde" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/blue" -msgstr "blanco/azul" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/yellow" -msgstr "blanco/amarillo" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/tan" -msgstr "blanco/marrón" - -#: ../homedecor/bathroom_furniture.lua -msgid "Bathroom/kitchen tiles (@1)" -msgstr "Azulejo de baño/cocina (@1)" +msgid "Bathroom/kitchen tiles (light)" +msgstr "Azulejo de baño/cocina (tonos claros)" #: ../homedecor/bathroom_furniture.lua msgid "Towel rod with towel" @@ -1418,3 +1549,36 @@ msgstr "Toallero con toalla" #: ../homedecor/bathroom_furniture.lua msgid "Medicine cabinet" msgstr "Gabinete de medicinas" + +#~ msgid "grey" +#~ msgstr "gris" + +#~ msgid "brown" +#~ msgstr "marrón" + +#~ msgid "white/grey" +#~ msgstr "blanco/gris" + +#~ msgid "white/dark grey" +#~ msgstr "blanco/gris oscuro" + +#~ msgid "white/black" +#~ msgstr "blanco/negro" + +#~ msgid "black/dark grey" +#~ msgstr "negro/gris oscuro" + +#~ msgid "white/red" +#~ msgstr "blanco/rojo" + +#~ msgid "white/green" +#~ msgstr "blanco/verde" + +#~ msgid "white/blue" +#~ msgstr "blanco/azul" + +#~ msgid "white/yellow" +#~ msgstr "blanco/amarillo" + +#~ msgid "white/tan" +#~ msgstr "blanco/marrón" diff --git a/homedecor_i18n/locale/fr.po b/homedecor_i18n/locale/fr.po index 30a78090..a69fcd08 100644 --- a/homedecor_i18n/locale/fr.po +++ b/homedecor_i18n/locale/fr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-30 21:31-0300\n" +"POT-Creation-Date: 2017-02-10 05:34-0300\n" "PO-Revision-Date: 2017-01-25 00:03-0300\n" "Last-Translator: Calinou \n" "Language-Team: French\n" @@ -285,7 +285,7 @@ msgstr "" msgid "Loaded!" msgstr "Chargé !" -#: ../lrfurn/armchairs.lua +#: ../lrfurn/armchairs.lua ../homedecor/furniture.lua msgid "Armchair" msgstr "" @@ -323,97 +323,32 @@ msgstr "" msgid "Glowing Embers" msgstr "" +#: ../fake_fire/init.lua +msgid "Stone chimney top" +msgstr "" + +#: ../fake_fire/init.lua +msgid "Sandstone chimney top" +msgstr "" + #: ../fake_fire/init.lua msgid "Flint and steel" msgstr "" -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua -msgid "black" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/books.lua -msgid "brown" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua -#, fuzzy -msgid "blue" -msgstr "bleues" - -#: ../homedecor/bedroom.lua -msgid "cyan" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -msgid "dark grey" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/furniture.lua -#, fuzzy -msgid "dark green" -msgstr "vertes" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/exterior.lua -#: ../homedecor/misc-nodes.lua ../homedecor/books.lua -#, fuzzy -msgid "green" -msgstr "vertes" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua -msgid "grey" +#: ../fake_fire/init.lua +msgid "This area is protected!" msgstr "" #: ../homedecor/bedroom.lua -msgid "magenta" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "orange" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/furniture.lua #, fuzzy -msgid "pink" -msgstr "roses" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua -#, fuzzy -msgid "red" +msgid "Bed" msgstr "rouges" -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua -#: ../homedecor/furniture.lua -#, fuzzy -msgid "violet" -msgstr "violettes" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#, fuzzy -msgid "white" -msgstr "blanches" - -#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua -msgid "yellow" +#: ../homedecor/bedroom.lua +msgid "Bed (king sized)" msgstr "" #: ../homedecor/bedroom.lua -msgid "Bed (@1)" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "Bed (@1, king sized)" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua msgid "mahogany" msgstr "" @@ -478,6 +413,15 @@ msgstr "Meuble de cuisine avec lavabo" msgid "Under-sink cabinet" msgstr "Meuble sous évier" +#: ../homedecor/kitchen_furniture.lua +msgid "Copper pans" +msgstr "" + +#: ../homedecor/kitchen_furniture.lua +#, fuzzy +msgid "Kitchen Faucet" +msgstr "Meuble de cuisine" + #: ../homedecor/kitchen_furniture.lua msgid "Paper towels" msgstr "" @@ -603,6 +547,18 @@ msgstr "Bardeaux d'asphalte" msgid "Chimney" msgstr "" +#: ../homedecor/electrics.lua +msgid "Power Outlet" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Light switch" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Doorbell" +msgstr "" + #: ../homedecor/window_treatments.lua msgid "Window (quartered)" msgstr "" @@ -650,6 +606,38 @@ msgstr "" msgid "Stained Glass" msgstr "" +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/furniture.lua +#, fuzzy +msgid "red" +msgstr "rouges" + +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/misc-nodes.lua +#, fuzzy +msgid "green" +msgstr "vertes" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "blue" +msgstr "bleues" + +#: ../homedecor/window_treatments.lua ../homedecor/lighting.lua +#, fuzzy +msgid "white" +msgstr "blanches" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "pink" +msgstr "roses" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "violet" +msgstr "violettes" + #: ../homedecor/crafts.lua #, fuzzy msgid "Uncooked Terracotta Base" @@ -802,6 +790,34 @@ msgstr "" msgid "Telephone" msgstr "" +#: ../homedecor/cobweb.lua +msgid "Cobweb" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Plastic analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Wooden analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Digital clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Alarm clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Grandfather Clock" +msgstr "" + +#: ../homedecor/lighting.lua ../homedecor/exterior.lua +msgid "yellow" +msgstr "" + #: ../homedecor/lighting.lua #, fuzzy msgid "Thick Glowlight" @@ -861,6 +877,11 @@ msgstr "" msgid "Hanging Lantern" msgstr "" +#: ../homedecor/lighting.lua +#, fuzzy +msgid "Ceiling Lantern" +msgstr "Meuble sous évier" + #: ../homedecor/lighting.lua msgid "Lattice lantern (large)" msgstr "" @@ -878,7 +899,7 @@ msgid "Standing Lamp" msgstr "" #: ../homedecor/lighting.lua -msgid "Desk Lamp (@1)" +msgid "Desk Lamp" msgstr "" #: ../homedecor/lighting.lua @@ -959,22 +980,9 @@ msgstr "Barrière en fer forgé" msgid "Wrought Iron fence (type 2) Corner" msgstr "Barrière en fer forgé" -#: ../homedecor/shutters.lua -msgid "unpainted oak" -msgstr "" - -#: ../homedecor/shutters.lua -msgid "forest green" -msgstr "" - #: ../homedecor/shutters.lua #, fuzzy -msgid "light blue" -msgstr "droite" - -#: ../homedecor/shutters.lua -#, fuzzy -msgid "Wooden Shutter (@1)" +msgid "Wooden Shutter" msgstr "Volet en bois (rouge)" #: ../homedecor/exterior.lua @@ -1086,6 +1094,86 @@ msgstr "" msgid "Radiator heater" msgstr "" +#: ../homedecor/wardrobe.lua +msgid "Wardrobe" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Clothes" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Storage" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Green Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Small Trash Can" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Cutlery set" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Brown bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four brown bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Green bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four misc brown/green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Wine rack" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Dartboard" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer tap" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Ahh, a frosty cold beer - look in your inventory for it!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "No room in your inventory to add a beer mug!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer mug" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Soda vending machine" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Please insert a coin in the machine." +msgstr "" + #: ../homedecor/doors_and_gates.lua #, fuzzy msgid "Mahogany Closet Door (@1 opening)" @@ -1193,6 +1281,26 @@ msgstr "" msgid "Japanese-style door" msgstr "" +#: ../homedecor/foyer.lua +msgid "Wall-mounted coat rack" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Coat tree" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Green welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Brown welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Grey welcome mat" +msgstr "" + #: ../homedecor/misc-nodes.lua #, fuzzy msgid "Textured Ceiling Paint" @@ -1219,6 +1327,10 @@ msgstr "" msgid "Rug (@1)" msgstr "" +#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua +msgid "black" +msgstr "" + #: ../homedecor/misc-nodes.lua msgid "Flower Pot (@1)" msgstr "" @@ -1386,7 +1498,7 @@ msgid "Legs for Utility Table" msgstr "Pieds pour table basse" #: ../homedecor/books.lua -msgid "Writable Book (@1)" +msgid "Writable Book" msgstr "" #: ../homedecor/books.lua @@ -1413,12 +1525,13 @@ msgstr "" #: ../homedecor/furniture.lua #, fuzzy -msgid "Kitchen chair (@1)" -msgstr "Meuble de cuisine" +msgid "dark green" +msgstr "vertes" #: ../homedecor/furniture.lua -msgid "Armchair (@1)" -msgstr "" +#, fuzzy +msgid "Kitchen chair" +msgstr "Meuble de cuisine" #: ../homedecor/furniture.lua msgid "Bookshelf (open-frame)" @@ -1456,6 +1569,27 @@ msgstr "%s a essayé d'accéder à %s qui est propriété de %s à %s" msgid "@1 (Locked)" msgstr "%s (verrouillé)" +#: ../homedecor/handlers/expansion.lua +msgid "Expansion placeholder (you hacker you!)" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the space for the headboard is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Someone already owns the spot where the headboard goes." +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the upper space is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +#, fuzzy +msgid "Someone already owns that spot." +msgstr "Désolé, %s est propriétaire de cette zone." + #: ../homedecor/handlers/furnaces.lua msgid "Furnace" msgstr "" @@ -1486,48 +1620,42 @@ msgstr "" msgid "Filing cabinet" msgstr "Meuble sous évier" -#: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/grey" -msgstr "blanches" +#: ../homedecor/office.lua +msgid "Desk" +msgstr "" -#: ../homedecor/bathroom_furniture.lua -msgid "white/dark grey" +#: ../homedecor/office.lua +msgid "Desk globe" +msgstr "" + +#: ../homedecor/office.lua +msgid "Calendar" +msgstr "" + +#: ../homedecor/office.lua +msgid "" +"Date (right-click to update):\n" +"@1" +msgstr "" + +#: ../homedecor/office.lua +msgid "Basic office chair" +msgstr "" + +#: ../homedecor/office.lua +msgid "Upscale office chair" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "white/black" +msgid "Bathroom/kitchen tiles (dark)" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "black/dark grey" +msgid "Bathroom/kitchen tiles (medium)" msgstr "" #: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/red" -msgstr "blanches" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/green" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/blue" -msgstr "blanches" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/yellow" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/tan" -msgstr "blanches" - -#: ../homedecor/bathroom_furniture.lua -msgid "Bathroom/kitchen tiles (@1)" +msgid "Bathroom/kitchen tiles (light)" msgstr "" #: ../homedecor/bathroom_furniture.lua @@ -1539,6 +1667,26 @@ msgstr "" msgid "Medicine cabinet" msgstr "Meuble sous évier" +#, fuzzy +#~ msgid "white/grey" +#~ msgstr "blanches" + +#, fuzzy +#~ msgid "white/red" +#~ msgstr "blanches" + +#, fuzzy +#~ msgid "white/blue" +#~ msgstr "blanches" + +#, fuzzy +#~ msgid "white/tan" +#~ msgstr "blanches" + +#, fuzzy +#~ msgid "light blue" +#~ msgstr "droite" + #, fuzzy #~ msgid "dark_grey" #~ msgstr "vertes" @@ -1640,9 +1788,6 @@ msgstr "Meuble sous évier" #~ msgid "someone " #~ msgstr "quelqu'un" -#~ msgid "Sorry, %s owns that spot. " -#~ msgstr "Désolé, %s est propriétaire de cette zone." - #~ msgid "White Glowlight (small cube) " #~ msgstr "Lampe blanche (petit cube)" diff --git a/homedecor_i18n/locale/it.po b/homedecor_i18n/locale/it.po index 74924649..74cb57e7 100644 --- a/homedecor_i18n/locale/it.po +++ b/homedecor_i18n/locale/it.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-30 21:31-0300\n" +"POT-Creation-Date: 2017-02-10 05:34-0300\n" "PO-Revision-Date: 2017-01-25 00:03-0300\n" "Last-Translator: Emon \n" "Language-Team: Italian\n" @@ -286,7 +286,7 @@ msgstr "" msgid "Loaded!" msgstr "Caricato!" -#: ../lrfurn/armchairs.lua +#: ../lrfurn/armchairs.lua ../homedecor/furniture.lua #, fuzzy msgid "Armchair" msgstr "Poltrona (%s)" @@ -325,99 +325,32 @@ msgstr "" msgid "Glowing Embers" msgstr "" +#: ../fake_fire/init.lua +msgid "Stone chimney top" +msgstr "" + +#: ../fake_fire/init.lua +msgid "Sandstone chimney top" +msgstr "" + #: ../fake_fire/init.lua msgid "Flint and steel" msgstr "" -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua -#, fuzzy -msgid "black" -msgstr "nero" - -#: ../homedecor/bedroom.lua ../homedecor/books.lua -msgid "brown" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua -#, fuzzy -msgid "blue" -msgstr "blu" - -#: ../homedecor/bedroom.lua -msgid "cyan" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#, fuzzy -msgid "dark grey" -msgstr "verde scuro" - -#: ../homedecor/bedroom.lua ../homedecor/furniture.lua -#, fuzzy -msgid "dark green" -msgstr "verde scuro" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/exterior.lua -#: ../homedecor/misc-nodes.lua ../homedecor/books.lua -#, fuzzy -msgid "green" -msgstr "verde" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua -msgid "grey" +#: ../fake_fire/init.lua +msgid "This area is protected!" msgstr "" #: ../homedecor/bedroom.lua -msgid "magenta" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "orange" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/furniture.lua #, fuzzy -msgid "pink" -msgstr "rosa" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua -#, fuzzy -msgid "red" +msgid "Bed" msgstr "rosso" -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua -#: ../homedecor/furniture.lua -#, fuzzy -msgid "violet" -msgstr "viola" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#, fuzzy -msgid "white" -msgstr "bianco" - -#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua -msgid "yellow" +#: ../homedecor/bedroom.lua +msgid "Bed (king sized)" msgstr "" #: ../homedecor/bedroom.lua -msgid "Bed (@1)" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "Bed (@1, king sized)" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua msgid "mahogany" msgstr "" @@ -482,6 +415,15 @@ msgstr "Armadietto della cucina con il lavandino" msgid "Under-sink cabinet" msgstr "Armadietto sotto il lavandino" +#: ../homedecor/kitchen_furniture.lua +msgid "Copper pans" +msgstr "" + +#: ../homedecor/kitchen_furniture.lua +#, fuzzy +msgid "Kitchen Faucet" +msgstr "Armadietto della cucina" + #: ../homedecor/kitchen_furniture.lua msgid "Paper towels" msgstr "" @@ -615,6 +557,18 @@ msgstr "Mattonelle di asfalto" msgid "Chimney" msgstr "" +#: ../homedecor/electrics.lua +msgid "Power Outlet" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Light switch" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Doorbell" +msgstr "" + #: ../homedecor/window_treatments.lua msgid "Window (quartered)" msgstr "" @@ -662,6 +616,38 @@ msgstr "" msgid "Stained Glass" msgstr "" +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/furniture.lua +#, fuzzy +msgid "red" +msgstr "rosso" + +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/misc-nodes.lua +#, fuzzy +msgid "green" +msgstr "verde" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "blue" +msgstr "blu" + +#: ../homedecor/window_treatments.lua ../homedecor/lighting.lua +#, fuzzy +msgid "white" +msgstr "bianco" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "pink" +msgstr "rosa" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "violet" +msgstr "viola" + #: ../homedecor/crafts.lua #, fuzzy msgid "Uncooked Terracotta Base" @@ -814,6 +800,34 @@ msgstr "" msgid "Telephone" msgstr "" +#: ../homedecor/cobweb.lua +msgid "Cobweb" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Plastic analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Wooden analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Digital clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Alarm clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Grandfather Clock" +msgstr "" + +#: ../homedecor/lighting.lua ../homedecor/exterior.lua +msgid "yellow" +msgstr "" + #: ../homedecor/lighting.lua #, fuzzy msgid "Thick Glowlight" @@ -874,6 +888,11 @@ msgstr "" msgid "Hanging Lantern" msgstr "" +#: ../homedecor/lighting.lua +#, fuzzy +msgid "Ceiling Lantern" +msgstr "Armadietto sotto il lavandino" + #: ../homedecor/lighting.lua msgid "Lattice lantern (large)" msgstr "" @@ -892,8 +911,9 @@ msgid "Standing Lamp" msgstr "" #: ../homedecor/lighting.lua -msgid "Desk Lamp (@1)" -msgstr "" +#, fuzzy +msgid "Desk Lamp" +msgstr "Lampada da tavolo" #: ../homedecor/lighting.lua msgid "Ceiling Lamp" @@ -973,22 +993,9 @@ msgstr "Recinzione/ringhiera in ferro battuto" msgid "Wrought Iron fence (type 2) Corner" msgstr "Recinzione/ringhiera in ferro battuto" -#: ../homedecor/shutters.lua -msgid "unpainted oak" -msgstr "" - -#: ../homedecor/shutters.lua -msgid "forest green" -msgstr "" - #: ../homedecor/shutters.lua #, fuzzy -msgid "light blue" -msgstr "destra" - -#: ../homedecor/shutters.lua -#, fuzzy -msgid "Wooden Shutter (@1)" +msgid "Wooden Shutter" msgstr "Persiana in legno (rossa)" #: ../homedecor/exterior.lua @@ -1106,6 +1113,86 @@ msgstr "" msgid "Radiator heater" msgstr "" +#: ../homedecor/wardrobe.lua +msgid "Wardrobe" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Clothes" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Storage" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Green Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Small Trash Can" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Cutlery set" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Brown bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four brown bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Green bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four misc brown/green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Wine rack" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Dartboard" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer tap" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Ahh, a frosty cold beer - look in your inventory for it!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "No room in your inventory to add a beer mug!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer mug" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Soda vending machine" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Please insert a coin in the machine." +msgstr "" + #: ../homedecor/doors_and_gates.lua #, fuzzy msgid "Mahogany Closet Door (@1 opening)" @@ -1213,6 +1300,26 @@ msgstr "" msgid "Japanese-style door" msgstr "" +#: ../homedecor/foyer.lua +msgid "Wall-mounted coat rack" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Coat tree" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Green welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Brown welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Grey welcome mat" +msgstr "" + #: ../homedecor/misc-nodes.lua #, fuzzy msgid "Textured Ceiling Paint" @@ -1239,6 +1346,11 @@ msgstr "" msgid "Rug (@1)" msgstr "" +#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua +#, fuzzy +msgid "black" +msgstr "nero" + #: ../homedecor/misc-nodes.lua msgid "Flower Pot (@1)" msgstr "" @@ -1406,7 +1518,7 @@ msgid "Legs for Utility Table" msgstr "Gambe per il tavolo da lavoro" #: ../homedecor/books.lua -msgid "Writable Book (@1)" +msgid "Writable Book" msgstr "" #: ../homedecor/books.lua @@ -1434,13 +1546,13 @@ msgstr "" #: ../homedecor/furniture.lua #, fuzzy -msgid "Kitchen chair (@1)" -msgstr "Armadietto della cucina" +msgid "dark green" +msgstr "verde scuro" #: ../homedecor/furniture.lua #, fuzzy -msgid "Armchair (@1)" -msgstr "Poltrona (%s)" +msgid "Kitchen chair" +msgstr "Armadietto della cucina" #: ../homedecor/furniture.lua msgid "Bookshelf (open-frame)" @@ -1478,6 +1590,27 @@ msgstr "%s ha provato ad accedere a %s di proprietà di %s alla posizione %s" msgid "@1 (Locked)" msgstr "%s (Con lucchetto)" +#: ../homedecor/handlers/expansion.lua +msgid "Expansion placeholder (you hacker you!)" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the space for the headboard is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Someone already owns the spot where the headboard goes." +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the upper space is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +#, fuzzy +msgid "Someone already owns that spot." +msgstr "Spiacente, quel punto è di proprietà di %s." + #: ../homedecor/handlers/furnaces.lua msgid "Furnace" msgstr "" @@ -1509,48 +1642,43 @@ msgstr "i contenitori sono pieni" msgid "Filing cabinet" msgstr "Armadietto sotto il lavandino" -#: ../homedecor/bathroom_furniture.lua +#: ../homedecor/office.lua #, fuzzy -msgid "white/grey" -msgstr "bianco" +msgid "Desk" +msgstr "Lampada da tavolo" -#: ../homedecor/bathroom_furniture.lua -msgid "white/dark grey" +#: ../homedecor/office.lua +msgid "Desk globe" +msgstr "" + +#: ../homedecor/office.lua +msgid "Calendar" +msgstr "" + +#: ../homedecor/office.lua +msgid "" +"Date (right-click to update):\n" +"@1" +msgstr "" + +#: ../homedecor/office.lua +msgid "Basic office chair" +msgstr "" + +#: ../homedecor/office.lua +msgid "Upscale office chair" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "white/black" +msgid "Bathroom/kitchen tiles (dark)" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "black/dark grey" +msgid "Bathroom/kitchen tiles (medium)" msgstr "" #: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/red" -msgstr "bianco" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/green" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/blue" -msgstr "bianco" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/yellow" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/tan" -msgstr "bianco" - -#: ../homedecor/bathroom_furniture.lua -msgid "Bathroom/kitchen tiles (@1)" +msgid "Bathroom/kitchen tiles (light)" msgstr "" #: ../homedecor/bathroom_furniture.lua @@ -1562,6 +1690,34 @@ msgstr "" msgid "Medicine cabinet" msgstr "Armadietto sotto il lavandino" +#, fuzzy +#~ msgid "white/grey" +#~ msgstr "bianco" + +#, fuzzy +#~ msgid "white/red" +#~ msgstr "bianco" + +#, fuzzy +#~ msgid "white/blue" +#~ msgstr "bianco" + +#, fuzzy +#~ msgid "white/tan" +#~ msgstr "bianco" + +#, fuzzy +#~ msgid "dark grey" +#~ msgstr "verde scuro" + +#, fuzzy +#~ msgid "light blue" +#~ msgstr "destra" + +#, fuzzy +#~ msgid "Armchair (@1)" +#~ msgstr "Poltrona (%s)" + #, fuzzy #~ msgid "dark_grey" #~ msgstr "verde scuro" @@ -1699,9 +1855,6 @@ msgstr "Armadietto sotto il lavandino" #~ msgid "someone " #~ msgstr "qualcuno" -#~ msgid "Sorry, %s owns that spot. " -#~ msgstr "Spiacente, quel punto è di proprietà di %s." - #~ msgid "White Glowlight (small cube) " #~ msgstr "Luce fosforescente bianca (cubo piccolo)" diff --git a/homedecor_i18n/locale/ms.po b/homedecor_i18n/locale/ms.po index c550a465..e4b1ec20 100644 --- a/homedecor_i18n/locale/ms.po +++ b/homedecor_i18n/locale/ms.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-30 21:31-0300\n" +"POT-Creation-Date: 2017-02-10 05:34-0300\n" "PO-Revision-Date: 2017-01-25 00:03-0300\n" "Last-Translator: muhdnurhidayat \n" "Language-Team: Malay\n" @@ -285,7 +285,7 @@ msgstr "" msgid "Loaded!" msgstr "Telah Dimuatkan!" -#: ../lrfurn/armchairs.lua +#: ../lrfurn/armchairs.lua ../homedecor/furniture.lua #, fuzzy msgid "Armchair" msgstr "Kerusi Tangan (%s)" @@ -324,99 +324,32 @@ msgstr "" msgid "Glowing Embers" msgstr "" +#: ../fake_fire/init.lua +msgid "Stone chimney top" +msgstr "" + +#: ../fake_fire/init.lua +msgid "Sandstone chimney top" +msgstr "" + #: ../fake_fire/init.lua msgid "Flint and steel" msgstr "" -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua -#, fuzzy -msgid "black" -msgstr "Hitam" - -#: ../homedecor/bedroom.lua ../homedecor/books.lua -msgid "brown" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua -#, fuzzy -msgid "blue" -msgstr "biru" - -#: ../homedecor/bedroom.lua -msgid "cyan" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#, fuzzy -msgid "dark grey" -msgstr "Hijau Gelap" - -#: ../homedecor/bedroom.lua ../homedecor/furniture.lua -#, fuzzy -msgid "dark green" -msgstr "Hijau Gelap" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/exterior.lua -#: ../homedecor/misc-nodes.lua ../homedecor/books.lua -#, fuzzy -msgid "green" -msgstr "hijau" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua -msgid "grey" +#: ../fake_fire/init.lua +msgid "This area is protected!" msgstr "" #: ../homedecor/bedroom.lua -msgid "magenta" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "orange" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/furniture.lua #, fuzzy -msgid "pink" -msgstr "merah jambu" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua -#, fuzzy -msgid "red" +msgid "Bed" msgstr "merah" -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua -#: ../homedecor/furniture.lua -#, fuzzy -msgid "violet" -msgstr "ungu" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#, fuzzy -msgid "white" -msgstr "putih" - -#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua -msgid "yellow" +#: ../homedecor/bedroom.lua +msgid "Bed (king sized)" msgstr "" #: ../homedecor/bedroom.lua -msgid "Bed (@1)" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "Bed (@1, king sized)" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua msgid "mahogany" msgstr "" @@ -481,6 +414,15 @@ msgstr "Kabinet Dapur dengan Sinki" msgid "Under-sink cabinet" msgstr "Kabinet Bawah Sinki" +#: ../homedecor/kitchen_furniture.lua +msgid "Copper pans" +msgstr "" + +#: ../homedecor/kitchen_furniture.lua +#, fuzzy +msgid "Kitchen Faucet" +msgstr "Kabinet Dapur" + #: ../homedecor/kitchen_furniture.lua msgid "Paper towels" msgstr "" @@ -614,6 +556,18 @@ msgstr "Genting Asfalt" msgid "Chimney" msgstr "" +#: ../homedecor/electrics.lua +msgid "Power Outlet" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Light switch" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Doorbell" +msgstr "" + #: ../homedecor/window_treatments.lua msgid "Window (quartered)" msgstr "" @@ -661,6 +615,38 @@ msgstr "" msgid "Stained Glass" msgstr "" +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/furniture.lua +#, fuzzy +msgid "red" +msgstr "merah" + +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/misc-nodes.lua +#, fuzzy +msgid "green" +msgstr "hijau" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "blue" +msgstr "biru" + +#: ../homedecor/window_treatments.lua ../homedecor/lighting.lua +#, fuzzy +msgid "white" +msgstr "putih" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "pink" +msgstr "merah jambu" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +#, fuzzy +msgid "violet" +msgstr "ungu" + #: ../homedecor/crafts.lua #, fuzzy msgid "Uncooked Terracotta Base" @@ -813,6 +799,34 @@ msgstr "" msgid "Telephone" msgstr "" +#: ../homedecor/cobweb.lua +msgid "Cobweb" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Plastic analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Wooden analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Digital clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Alarm clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Grandfather Clock" +msgstr "" + +#: ../homedecor/lighting.lua ../homedecor/exterior.lua +msgid "yellow" +msgstr "" + #: ../homedecor/lighting.lua #, fuzzy msgid "Thick Glowlight" @@ -873,6 +887,11 @@ msgstr "" msgid "Hanging Lantern" msgstr "" +#: ../homedecor/lighting.lua +#, fuzzy +msgid "Ceiling Lantern" +msgstr "Kabinet Bawah Sinki" + #: ../homedecor/lighting.lua msgid "Lattice lantern (large)" msgstr "" @@ -891,8 +910,9 @@ msgid "Standing Lamp" msgstr "" #: ../homedecor/lighting.lua -msgid "Desk Lamp (@1)" -msgstr "" +#, fuzzy +msgid "Desk Lamp" +msgstr "Lampu Meja" #: ../homedecor/lighting.lua msgid "Ceiling Lamp" @@ -972,22 +992,9 @@ msgstr "Pagar/Kisi-kisi Besi Tempaan" msgid "Wrought Iron fence (type 2) Corner" msgstr "Pagar/Kisi-kisi Besi Tempaan" -#: ../homedecor/shutters.lua -msgid "unpainted oak" -msgstr "" - -#: ../homedecor/shutters.lua -msgid "forest green" -msgstr "" - #: ../homedecor/shutters.lua #, fuzzy -msgid "light blue" -msgstr "kanan" - -#: ../homedecor/shutters.lua -#, fuzzy -msgid "Wooden Shutter (@1)" +msgid "Wooden Shutter" msgstr "Pengatup Kayu (Merah)" #: ../homedecor/exterior.lua @@ -1105,6 +1112,86 @@ msgstr "" msgid "Radiator heater" msgstr "" +#: ../homedecor/wardrobe.lua +msgid "Wardrobe" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Clothes" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Storage" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Green Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Small Trash Can" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Cutlery set" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Brown bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four brown bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Green bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four misc brown/green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Wine rack" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Dartboard" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer tap" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Ahh, a frosty cold beer - look in your inventory for it!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "No room in your inventory to add a beer mug!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer mug" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Soda vending machine" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Please insert a coin in the machine." +msgstr "" + #: ../homedecor/doors_and_gates.lua #, fuzzy msgid "Mahogany Closet Door (@1 opening)" @@ -1212,6 +1299,26 @@ msgstr "" msgid "Japanese-style door" msgstr "" +#: ../homedecor/foyer.lua +msgid "Wall-mounted coat rack" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Coat tree" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Green welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Brown welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Grey welcome mat" +msgstr "" + #: ../homedecor/misc-nodes.lua #, fuzzy msgid "Textured Ceiling Paint" @@ -1238,6 +1345,11 @@ msgstr "" msgid "Rug (@1)" msgstr "" +#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua +#, fuzzy +msgid "black" +msgstr "Hitam" + #: ../homedecor/misc-nodes.lua msgid "Flower Pot (@1)" msgstr "" @@ -1405,7 +1517,7 @@ msgid "Legs for Utility Table" msgstr "Kaki untuk Meja Utiliti" #: ../homedecor/books.lua -msgid "Writable Book (@1)" +msgid "Writable Book" msgstr "" #: ../homedecor/books.lua @@ -1433,13 +1545,13 @@ msgstr "" #: ../homedecor/furniture.lua #, fuzzy -msgid "Kitchen chair (@1)" -msgstr "Kabinet Dapur" +msgid "dark green" +msgstr "Hijau Gelap" #: ../homedecor/furniture.lua #, fuzzy -msgid "Armchair (@1)" -msgstr "Kerusi Tangan (%s)" +msgid "Kitchen chair" +msgstr "Kabinet Dapur" #: ../homedecor/furniture.lua msgid "Bookshelf (open-frame)" @@ -1477,6 +1589,27 @@ msgstr "%s cuba untuk pakai %s milik %s dekat %s" msgid "@1 (Locked)" msgstr "%s (Berkunci)" +#: ../homedecor/handlers/expansion.lua +msgid "Expansion placeholder (you hacker you!)" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the space for the headboard is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Someone already owns the spot where the headboard goes." +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the upper space is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +#, fuzzy +msgid "Someone already owns that spot." +msgstr "Maaf, ini kawasan %s." + #: ../homedecor/handlers/furnaces.lua msgid "Furnace" msgstr "" @@ -1509,48 +1642,43 @@ msgstr ": dulang keluar penuh" msgid "Filing cabinet" msgstr "Kabinet Bawah Sinki" -#: ../homedecor/bathroom_furniture.lua +#: ../homedecor/office.lua #, fuzzy -msgid "white/grey" -msgstr "putih" +msgid "Desk" +msgstr "Lampu Meja" -#: ../homedecor/bathroom_furniture.lua -msgid "white/dark grey" +#: ../homedecor/office.lua +msgid "Desk globe" +msgstr "" + +#: ../homedecor/office.lua +msgid "Calendar" +msgstr "" + +#: ../homedecor/office.lua +msgid "" +"Date (right-click to update):\n" +"@1" +msgstr "" + +#: ../homedecor/office.lua +msgid "Basic office chair" +msgstr "" + +#: ../homedecor/office.lua +msgid "Upscale office chair" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "white/black" +msgid "Bathroom/kitchen tiles (dark)" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "black/dark grey" +msgid "Bathroom/kitchen tiles (medium)" msgstr "" #: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/red" -msgstr "putih" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/green" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/blue" -msgstr "putih" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/yellow" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -#, fuzzy -msgid "white/tan" -msgstr "putih" - -#: ../homedecor/bathroom_furniture.lua -msgid "Bathroom/kitchen tiles (@1)" +msgid "Bathroom/kitchen tiles (light)" msgstr "" #: ../homedecor/bathroom_furniture.lua @@ -1562,6 +1690,34 @@ msgstr "" msgid "Medicine cabinet" msgstr "Kabinet Bawah Sinki" +#, fuzzy +#~ msgid "white/grey" +#~ msgstr "putih" + +#, fuzzy +#~ msgid "white/red" +#~ msgstr "putih" + +#, fuzzy +#~ msgid "white/blue" +#~ msgstr "putih" + +#, fuzzy +#~ msgid "white/tan" +#~ msgstr "putih" + +#, fuzzy +#~ msgid "dark grey" +#~ msgstr "Hijau Gelap" + +#, fuzzy +#~ msgid "light blue" +#~ msgstr "kanan" + +#, fuzzy +#~ msgid "Armchair (@1)" +#~ msgstr "Kerusi Tangan (%s)" + #, fuzzy #~ msgid "dark_grey" #~ msgstr "Hijau Gelap" @@ -1699,9 +1855,6 @@ msgstr "Kabinet Bawah Sinki" #~ msgid "someone " #~ msgstr "seseorang" -#~ msgid "Sorry, %s owns that spot. " -#~ msgstr "Maaf, ini kawasan %s." - #~ msgid "White Glowlight (small cube) " #~ msgstr "Lampu Bara Putih (kiub kecil)" diff --git a/homedecor_i18n/locale/pt.po b/homedecor_i18n/locale/pt.po index a343f54b..ccd4cd5f 100644 --- a/homedecor_i18n/locale/pt.po +++ b/homedecor_i18n/locale/pt.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-30 21:31-0300\n" +"POT-Creation-Date: 2017-02-10 05:34-0300\n" "PO-Revision-Date: 2017-01-29 00:21-0200\n" "Last-Translator: Aracnus \n" "Language-Team: Portuguese\n" @@ -298,7 +298,7 @@ msgstr "" msgid "Loaded!" msgstr "Carregado!" -#: ../lrfurn/armchairs.lua +#: ../lrfurn/armchairs.lua ../homedecor/furniture.lua #, fuzzy msgid "Armchair" msgstr "Poltrona (@1)" @@ -337,90 +337,33 @@ msgstr "" msgid "Glowing Embers" msgstr "" +#: ../fake_fire/init.lua +msgid "Stone chimney top" +msgstr "" + +#: ../fake_fire/init.lua +msgid "Sandstone chimney top" +msgstr "" + #: ../fake_fire/init.lua msgid "Flint and steel" msgstr "" -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua -msgid "black" -msgstr "preto" - -#: ../homedecor/bedroom.lua ../homedecor/books.lua -msgid "brown" -msgstr "marrom" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua -msgid "blue" -msgstr "azul" +#: ../fake_fire/init.lua +msgid "This area is protected!" +msgstr "" #: ../homedecor/bedroom.lua -msgid "cyan" -msgstr "ciano\t\t" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -msgid "dark grey" -msgstr "cinza escuro" - -#: ../homedecor/bedroom.lua ../homedecor/furniture.lua -msgid "dark green" -msgstr "verde escuro" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/exterior.lua -#: ../homedecor/misc-nodes.lua ../homedecor/books.lua -msgid "green" -msgstr "verde" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua -msgid "grey" -msgstr "cinza" - -#: ../homedecor/bedroom.lua -msgid "magenta" -msgstr "magenta" - -#: ../homedecor/bedroom.lua -msgid "orange" -msgstr "laranja" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/furniture.lua -msgid "pink" -msgstr "rosa" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua -msgid "red" +#, fuzzy +msgid "Bed" msgstr "vermelho" -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua -#: ../homedecor/furniture.lua -msgid "violet" -msgstr "violeta" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -msgid "white" -msgstr "branco" - -#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua -msgid "yellow" -msgstr "amarelo" - #: ../homedecor/bedroom.lua -msgid "Bed (@1)" -msgstr "Cama (@1)" - -#: ../homedecor/bedroom.lua -msgid "Bed (@1, king sized)" +#, fuzzy +msgid "Bed (king sized)" msgstr "Cama (@1, aumentada)" -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua +#: ../homedecor/bedroom.lua msgid "mahogany" msgstr "mogno" @@ -476,6 +419,16 @@ msgstr "Armário de Cozinha com Pia" msgid "Under-sink cabinet" msgstr "Armário sob a Pia" +#: ../homedecor/kitchen_furniture.lua +#, fuzzy +msgid "Copper pans" +msgstr "Tira de Cobre" + +#: ../homedecor/kitchen_furniture.lua +#, fuzzy +msgid "Kitchen Faucet" +msgstr "Armário de Cozinha" + #: ../homedecor/kitchen_furniture.lua msgid "Paper towels" msgstr "Papel toalha" @@ -590,6 +543,19 @@ msgstr "Telhas de Vidro" msgid "Chimney" msgstr "Chaminé" +#: ../homedecor/electrics.lua +#, fuzzy +msgid "Power Outlet" +msgstr "Cristal de Força" + +#: ../homedecor/electrics.lua +msgid "Light switch" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Doorbell" +msgstr "" + #: ../homedecor/window_treatments.lua msgid "Window (quartered)" msgstr "Janela Dividida" @@ -633,6 +599,32 @@ msgstr "Janela com Caixa de Flores" msgid "Stained Glass" msgstr "Vitral" +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/furniture.lua +msgid "red" +msgstr "vermelho" + +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/misc-nodes.lua +msgid "green" +msgstr "verde" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +msgid "blue" +msgstr "azul" + +#: ../homedecor/window_treatments.lua ../homedecor/lighting.lua +msgid "white" +msgstr "branco" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +msgid "pink" +msgstr "rosa" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +msgid "violet" +msgstr "violeta" + #: ../homedecor/crafts.lua msgid "Uncooked Terracotta Base" msgstr "Base Bruta de Terracota" @@ -769,6 +761,34 @@ msgstr "DVD e VCR" msgid "Telephone" msgstr "Telefone" +#: ../homedecor/cobweb.lua +msgid "Cobweb" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Plastic analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Wooden analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Digital clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Alarm clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Grandfather Clock" +msgstr "" + +#: ../homedecor/lighting.lua ../homedecor/exterior.lua +msgid "yellow" +msgstr "amarelo" + #: ../homedecor/lighting.lua #, fuzzy msgid "Thick Glowlight" @@ -828,6 +848,11 @@ msgstr "Lanterna de Chão" msgid "Hanging Lantern" msgstr "Lanterna de Parede" +#: ../homedecor/lighting.lua +#, fuzzy +msgid "Ceiling Lantern" +msgstr "Ventilador de Teto" + #: ../homedecor/lighting.lua msgid "Lattice lantern (large)" msgstr "Lanterna com gelosia (grande)" @@ -847,7 +872,8 @@ msgid "Standing Lamp" msgstr "Luminária Elevada (@1)" #: ../homedecor/lighting.lua -msgid "Desk Lamp (@1)" +#, fuzzy +msgid "Desk Lamp" msgstr "Luminária de Escritório (@1)" #: ../homedecor/lighting.lua @@ -915,19 +941,8 @@ msgid "Wrought Iron fence (type 2) Corner" msgstr "Cerca de Ferro Forjado (tipo 2) de Canto" #: ../homedecor/shutters.lua -msgid "unpainted oak" -msgstr "carvalho não pintado" - -#: ../homedecor/shutters.lua -msgid "forest green" -msgstr "verde floresta" - -#: ../homedecor/shutters.lua -msgid "light blue" -msgstr "azul claro" - -#: ../homedecor/shutters.lua -msgid "Wooden Shutter (@1)" +#, fuzzy +msgid "Wooden Shutter" msgstr "Persiana de Madeira (@1)" #: ../homedecor/exterior.lua @@ -1038,6 +1053,89 @@ msgstr "Aquecedor de ambiente" msgid "Radiator heater" msgstr "Aquecedor de radiador" +#: ../homedecor/wardrobe.lua +msgid "Wardrobe" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Clothes" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Storage" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Green Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +#, fuzzy +msgid "Trash Can" +msgstr "Vela Fina" + +#: ../homedecor/trash_cans.lua +msgid "Small Trash Can" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Cutlery set" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Brown bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four brown bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Green bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four misc brown/green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Wine rack" +msgstr "" + +#: ../homedecor/gastronomy.lua +#, fuzzy +msgid "Dartboard" +msgstr "Skate" + +#: ../homedecor/gastronomy.lua +msgid "Beer tap" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Ahh, a frosty cold beer - look in your inventory for it!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "No room in your inventory to add a beer mug!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer mug" +msgstr "" + +#: ../homedecor/gastronomy.lua +#, fuzzy +msgid "Soda vending machine" +msgstr "Moeda de Ouro (para máquina de venda de refrigerante)" + +#: ../homedecor/gastronomy.lua +msgid "Please insert a coin in the machine." +msgstr "" + #: ../homedecor/doors_and_gates.lua msgid "Mahogany Closet Door (@1 opening)" msgstr "Porta de Closet em Mogno (abre para @1)" @@ -1130,6 +1228,26 @@ msgstr "Tatami Japonês" msgid "Japanese-style door" msgstr "Porta estilo japonês" +#: ../homedecor/foyer.lua +msgid "Wall-mounted coat rack" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Coat tree" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Green welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Brown welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Grey welcome mat" +msgstr "" + #: ../homedecor/misc-nodes.lua msgid "Textured Ceiling Paint" msgstr "Pintura Texturizada do Teto" @@ -1154,6 +1272,10 @@ msgstr "persiana" msgid "Rug (@1)" msgstr "Carpete (@1)" +#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua +msgid "black" +msgstr "preto" + #: ../homedecor/misc-nodes.lua msgid "Flower Pot (@1)" msgstr "Vaso de Flores" @@ -1311,7 +1433,8 @@ msgid "Legs for Utility Table" msgstr "Pernas para Mesa de Trabalho" #: ../homedecor/books.lua -msgid "Writable Book (@1)" +#, fuzzy +msgid "Writable Book" msgstr "Livro Consumível (@1)" #: ../homedecor/books.lua @@ -1335,12 +1458,13 @@ msgid "plain" msgstr "Sem Acabamento" #: ../homedecor/furniture.lua -msgid "Kitchen chair (@1)" -msgstr "Cadeira de Cozinha (@1)" +msgid "dark green" +msgstr "verde escuro" #: ../homedecor/furniture.lua -msgid "Armchair (@1)" -msgstr "Poltrona (@1)" +#, fuzzy +msgid "Kitchen chair" +msgstr "Cadeira de Cozinha (@1)" #: ../homedecor/furniture.lua msgid "Bookshelf (open-frame)" @@ -1374,6 +1498,27 @@ msgstr "@1 tentou acessar @2 pertencente a @3 em @4" msgid "@1 (Locked)" msgstr "@1 (trancado)" +#: ../homedecor/handlers/expansion.lua +msgid "Expansion placeholder (you hacker you!)" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the space for the headboard is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Someone already owns the spot where the headboard goes." +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the upper space is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +#, fuzzy +msgid "Someone already owns that spot." +msgstr "Desculpe, mas esse local pertence a %s." + #: ../homedecor/handlers/furnaces.lua msgid "Furnace" msgstr "Forno" @@ -1402,44 +1547,46 @@ msgstr "@1 (saída de itens está lotada)" msgid "Filing cabinet" msgstr "Armário sob a Pia" -#: ../homedecor/bathroom_furniture.lua -msgid "white/grey" -msgstr "branco/cinza" +#: ../homedecor/office.lua +#, fuzzy +msgid "Desk" +msgstr "Ventilador de Escritório" + +#: ../homedecor/office.lua +msgid "Desk globe" +msgstr "" + +#: ../homedecor/office.lua +msgid "Calendar" +msgstr "" + +#: ../homedecor/office.lua +msgid "" +"Date (right-click to update):\n" +"@1" +msgstr "" + +#: ../homedecor/office.lua +msgid "Basic office chair" +msgstr "" + +#: ../homedecor/office.lua +msgid "Upscale office chair" +msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "white/dark grey" -msgstr "branco/cinza escuro" +#, fuzzy +msgid "Bathroom/kitchen tiles (dark)" +msgstr "Azulejo de Banheiro/Cozinha (@1)" #: ../homedecor/bathroom_furniture.lua -msgid "white/black" -msgstr "branco/preto" +#, fuzzy +msgid "Bathroom/kitchen tiles (medium)" +msgstr "Azulejo de Banheiro/Cozinha (@1)" #: ../homedecor/bathroom_furniture.lua -msgid "black/dark grey" -msgstr "preto/cinza escuro" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/red" -msgstr "branco/vermelho" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/green" -msgstr "branco/verde" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/blue" -msgstr "branco/azul" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/yellow" -msgstr "branco/amarelo" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/tan" -msgstr "branco/bronzeado" - -#: ../homedecor/bathroom_furniture.lua -msgid "Bathroom/kitchen tiles (@1)" +#, fuzzy +msgid "Bathroom/kitchen tiles (light)" msgstr "Azulejo de Banheiro/Cozinha (@1)" #: ../homedecor/bathroom_furniture.lua @@ -1450,6 +1597,66 @@ msgstr "Tolo de Toalha com Toalha" msgid "Medicine cabinet" msgstr "Gabinete Medicinal" +#~ msgid "grey" +#~ msgstr "cinza" + +#~ msgid "brown" +#~ msgstr "marrom" + +#~ msgid "white/grey" +#~ msgstr "branco/cinza" + +#~ msgid "white/dark grey" +#~ msgstr "branco/cinza escuro" + +#~ msgid "white/black" +#~ msgstr "branco/preto" + +#~ msgid "black/dark grey" +#~ msgstr "preto/cinza escuro" + +#~ msgid "white/red" +#~ msgstr "branco/vermelho" + +#~ msgid "white/green" +#~ msgstr "branco/verde" + +#~ msgid "white/blue" +#~ msgstr "branco/azul" + +#~ msgid "white/yellow" +#~ msgstr "branco/amarelo" + +#~ msgid "white/tan" +#~ msgstr "branco/bronzeado" + +#~ msgid "cyan" +#~ msgstr "ciano\t\t" + +#~ msgid "dark grey" +#~ msgstr "cinza escuro" + +#~ msgid "magenta" +#~ msgstr "magenta" + +#~ msgid "orange" +#~ msgstr "laranja" + +#~ msgid "Bed (@1)" +#~ msgstr "Cama (@1)" + +#~ msgid "unpainted oak" +#~ msgstr "carvalho não pintado" + +#~ msgid "forest green" +#~ msgstr "verde floresta" + +#~ msgid "light blue" +#~ msgstr "azul claro" + +#~ msgid "Armchair (@1)" +#~ msgstr "Poltrona (@1)" + #, fuzzy #~ msgid "dark_grey" #~ msgstr "cinza escuro" @@ -1557,9 +1764,6 @@ msgstr "Gabinete Medicinal" #~ msgid "someone " #~ msgstr "alguém" -#~ msgid "Sorry, %s owns that spot. " -#~ msgstr "Desculpe, mas esse local pertence a %s." - #~ msgid "White Glowlight (small cube) " #~ msgstr "Arandela branca (cubo pequeno)" diff --git a/homedecor_i18n/locale/template.pot b/homedecor_i18n/locale/template.pot index bde49c57..b4d754f2 100644 --- a/homedecor_i18n/locale/template.pot +++ b/homedecor_i18n/locale/template.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2017-01-30 21:31-0300\n" +"POT-Creation-Date: 2017-02-10 05:34-0300\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -276,7 +276,7 @@ msgstr "" msgid "Loaded!" msgstr "" -#: ../lrfurn/armchairs.lua +#: ../lrfurn/armchairs.lua ../homedecor/furniture.lua msgid "Armchair" msgstr "" @@ -312,90 +312,31 @@ msgstr "" msgid "Glowing Embers" msgstr "" +#: ../fake_fire/init.lua +msgid "Stone chimney top" +msgstr "" + +#: ../fake_fire/init.lua +msgid "Sandstone chimney top" +msgstr "" + #: ../fake_fire/init.lua msgid "Flint and steel" msgstr "" -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua -msgid "black" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/books.lua -msgid "brown" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/books.lua ../homedecor/furniture.lua -msgid "blue" +#: ../fake_fire/init.lua +msgid "This area is protected!" msgstr "" #: ../homedecor/bedroom.lua -msgid "cyan" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua -msgid "dark grey" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/furniture.lua -msgid "dark green" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/exterior.lua -#: ../homedecor/misc-nodes.lua ../homedecor/books.lua -msgid "green" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua ../homedecor/books.lua -msgid "grey" +msgid "Bed" msgstr "" #: ../homedecor/bedroom.lua -msgid "magenta" +msgid "Bed (king sized)" msgstr "" #: ../homedecor/bedroom.lua -msgid "orange" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/furniture.lua -msgid "pink" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua ../homedecor/books.lua ../homedecor/furniture.lua -msgid "red" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua ../homedecor/books.lua -#: ../homedecor/furniture.lua -msgid "violet" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/window_treatments.lua -#: ../homedecor/lighting.lua ../homedecor/shutters.lua -msgid "white" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/lighting.lua ../homedecor/shutters.lua -#: ../homedecor/exterior.lua -msgid "yellow" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "Bed (@1)" -msgstr "" - -#: ../homedecor/bedroom.lua -msgid "Bed (@1, king sized)" -msgstr "" - -#: ../homedecor/bedroom.lua ../homedecor/shutters.lua msgid "mahogany" msgstr "" @@ -451,6 +392,14 @@ msgstr "" msgid "Under-sink cabinet" msgstr "" +#: ../homedecor/kitchen_furniture.lua +msgid "Copper pans" +msgstr "" + +#: ../homedecor/kitchen_furniture.lua +msgid "Kitchen Faucet" +msgstr "" + #: ../homedecor/kitchen_furniture.lua msgid "Paper towels" msgstr "" @@ -565,6 +514,18 @@ msgstr "" msgid "Chimney" msgstr "" +#: ../homedecor/electrics.lua +msgid "Power Outlet" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Light switch" +msgstr "" + +#: ../homedecor/electrics.lua +msgid "Doorbell" +msgstr "" + #: ../homedecor/window_treatments.lua msgid "Window (quartered)" msgstr "" @@ -607,6 +568,32 @@ msgstr "" msgid "Stained Glass" msgstr "" +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/furniture.lua +msgid "red" +msgstr "" + +#: ../homedecor/window_treatments.lua ../homedecor/exterior.lua +#: ../homedecor/misc-nodes.lua +msgid "green" +msgstr "" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +msgid "blue" +msgstr "" + +#: ../homedecor/window_treatments.lua ../homedecor/lighting.lua +msgid "white" +msgstr "" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +msgid "pink" +msgstr "" + +#: ../homedecor/window_treatments.lua ../homedecor/furniture.lua +msgid "violet" +msgstr "" + #: ../homedecor/crafts.lua msgid "Uncooked Terracotta Base" msgstr "" @@ -743,6 +730,34 @@ msgstr "" msgid "Telephone" msgstr "" +#: ../homedecor/cobweb.lua +msgid "Cobweb" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Plastic analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Wooden analog clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Digital clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Alarm clock" +msgstr "" + +#: ../homedecor/clocks.lua +msgid "Grandfather Clock" +msgstr "" + +#: ../homedecor/lighting.lua ../homedecor/exterior.lua +msgid "yellow" +msgstr "" + #: ../homedecor/lighting.lua msgid "Thick Glowlight" msgstr "" @@ -799,6 +814,10 @@ msgstr "" msgid "Hanging Lantern" msgstr "" +#: ../homedecor/lighting.lua +msgid "Ceiling Lantern" +msgstr "" + #: ../homedecor/lighting.lua msgid "Lattice lantern (large)" msgstr "" @@ -816,7 +835,7 @@ msgid "Standing Lamp" msgstr "" #: ../homedecor/lighting.lua -msgid "Desk Lamp (@1)" +msgid "Desk Lamp" msgstr "" #: ../homedecor/lighting.lua @@ -884,19 +903,7 @@ msgid "Wrought Iron fence (type 2) Corner" msgstr "" #: ../homedecor/shutters.lua -msgid "unpainted oak" -msgstr "" - -#: ../homedecor/shutters.lua -msgid "forest green" -msgstr "" - -#: ../homedecor/shutters.lua -msgid "light blue" -msgstr "" - -#: ../homedecor/shutters.lua -msgid "Wooden Shutter (@1)" +msgid "Wooden Shutter" msgstr "" #: ../homedecor/exterior.lua @@ -1007,6 +1014,86 @@ msgstr "" msgid "Radiator heater" msgstr "" +#: ../homedecor/wardrobe.lua +msgid "Wardrobe" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Clothes" +msgstr "" + +#: ../homedecor/wardrobe.lua +msgid "Storage" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Green Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Trash Can" +msgstr "" + +#: ../homedecor/trash_cans.lua +msgid "Small Trash Can" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Cutlery set" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Brown bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four brown bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Green bottle" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Four misc brown/green bottles" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Wine rack" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Dartboard" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer tap" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Ahh, a frosty cold beer - look in your inventory for it!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "No room in your inventory to add a beer mug!" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Beer mug" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Soda vending machine" +msgstr "" + +#: ../homedecor/gastronomy.lua +msgid "Please insert a coin in the machine." +msgstr "" + #: ../homedecor/doors_and_gates.lua msgid "Mahogany Closet Door (@1 opening)" msgstr "" @@ -1099,6 +1186,26 @@ msgstr "" msgid "Japanese-style door" msgstr "" +#: ../homedecor/foyer.lua +msgid "Wall-mounted coat rack" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Coat tree" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Green welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Brown welcome mat" +msgstr "" + +#: ../homedecor/foyer.lua +msgid "Grey welcome mat" +msgstr "" + #: ../homedecor/misc-nodes.lua msgid "Textured Ceiling Paint" msgstr "" @@ -1123,6 +1230,10 @@ msgstr "" msgid "Rug (@1)" msgstr "" +#: ../homedecor/misc-nodes.lua ../homedecor/furniture.lua +msgid "black" +msgstr "" + #: ../homedecor/misc-nodes.lua msgid "Flower Pot (@1)" msgstr "" @@ -1280,7 +1391,7 @@ msgid "Legs for Utility Table" msgstr "" #: ../homedecor/books.lua -msgid "Writable Book (@1)" +msgid "Writable Book" msgstr "" #: ../homedecor/books.lua @@ -1304,11 +1415,11 @@ msgid "plain" msgstr "" #: ../homedecor/furniture.lua -msgid "Kitchen chair (@1)" +msgid "dark green" msgstr "" #: ../homedecor/furniture.lua -msgid "Armchair (@1)" +msgid "Kitchen chair" msgstr "" #: ../homedecor/furniture.lua @@ -1343,6 +1454,26 @@ msgstr "" msgid "@1 (Locked)" msgstr "" +#: ../homedecor/handlers/expansion.lua +msgid "Expansion placeholder (you hacker you!)" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the space for the headboard is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Someone already owns the spot where the headboard goes." +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Not enough room - the upper space is occupied!" +msgstr "" + +#: ../homedecor/handlers/expansion.lua +msgid "Someone already owns that spot." +msgstr "" + #: ../homedecor/handlers/furnaces.lua msgid "Furnace" msgstr "" @@ -1371,44 +1502,42 @@ msgstr "" msgid "Filing cabinet" msgstr "" -#: ../homedecor/bathroom_furniture.lua -msgid "white/grey" +#: ../homedecor/office.lua +msgid "Desk" +msgstr "" + +#: ../homedecor/office.lua +msgid "Desk globe" +msgstr "" + +#: ../homedecor/office.lua +msgid "Calendar" +msgstr "" + +#: ../homedecor/office.lua +msgid "" +"Date (right-click to update):\n" +"@1" +msgstr "" + +#: ../homedecor/office.lua +msgid "Basic office chair" +msgstr "" + +#: ../homedecor/office.lua +msgid "Upscale office chair" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "white/dark grey" +msgid "Bathroom/kitchen tiles (dark)" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "white/black" +msgid "Bathroom/kitchen tiles (medium)" msgstr "" #: ../homedecor/bathroom_furniture.lua -msgid "black/dark grey" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/red" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/green" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/blue" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/yellow" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -msgid "white/tan" -msgstr "" - -#: ../homedecor/bathroom_furniture.lua -msgid "Bathroom/kitchen tiles (@1)" +msgid "Bathroom/kitchen tiles (light)" msgstr "" #: ../homedecor/bathroom_furniture.lua diff --git a/mesecons/init.lua b/mesecons/init.lua index 7da35834..83e611b5 100644 --- a/mesecons/init.lua +++ b/mesecons/init.lua @@ -3,7 +3,7 @@ -- | \/ | |___ ____ |___ | | | | \ | |____ -- | | | | | | | | | \ | | -- | | |___ ____| |___ |____ |____| | \| ____| --- by Jeija, Uberi (Temperest), sfan5, VanessaE +-- by Jeija, Uberi (Temperest), sfan5, VanessaE, Hawk777 and contributors -- -- -- @@ -11,7 +11,7 @@ -- See the documentation on the forum for additional information, especially about crafting -- -- --- For developer documentation see the Developers' section on mesecons.TK +-- For basic development resources, see http://mesecons.net/developers.html -- -- -- @@ -74,17 +74,7 @@ mesecon.queue:add_function("receptor_on", function (pos, rules) rules = rules or mesecon.rules.default - -- if area (any of the rule targets) is not loaded, keep trying and call this again later - for _, rule in ipairs(mesecon.flattenrules(rules)) do - local np = vector.add(pos, rule) - -- if area is not loaded, keep trying - if minetest.get_node_or_nil(np) == nil then - mesecon.queue:add_action(pos, "receptor_on", {rules}, nil, rules) - return - end - end - - -- execute action + -- Call turnon on all linking positions for _, rule in ipairs(mesecon.flattenrules(rules)) do local np = vector.add(pos, rule) local rulenames = mesecon.rules_link_rule_all(pos, rule) @@ -103,15 +93,7 @@ end mesecon.queue:add_function("receptor_off", function (pos, rules) rules = rules or mesecon.rules.default - -- if area (any of the rule targets) is not loaded, keep trying and call this again later - for _, rule in ipairs(mesecon.flattenrules(rules)) do - local np = vector.add(pos, rule) - if minetest.get_node_or_nil(np) == nil then - mesecon.queue:add_action(pos, "receptor_off", {rules}, nil, rules) - return - end - end - + -- Call turnoff on all linking positions for _, rule in ipairs(mesecon.flattenrules(rules)) do local np = vector.add(pos, rule) local rulenames = mesecon.rules_link_rule_all(pos, rule) diff --git a/mesecons/presets.lua b/mesecons/presets.lua index 2f2f6433..8c3ed67b 100644 --- a/mesecons/presets.lua +++ b/mesecons/presets.lua @@ -41,12 +41,19 @@ mesecon.rules.alldirs = mesecon.rules.buttonlike_get = function(node) local rules = mesecon.rules.buttonlike - if node.param2 == 2 then + local dir = minetest.facedir_to_dir(node.param2) + if dir.x == 1 then + -- No action needed + elseif dir.z == -1 then rules=mesecon.rotate_rules_left(rules) - elseif node.param2 == 3 then + elseif dir.x == -1 then rules=mesecon.rotate_rules_right(mesecon.rotate_rules_right(rules)) - elseif node.param2 == 0 then + elseif dir.z == 1 then rules=mesecon.rotate_rules_right(rules) + elseif dir.y == -1 then + rules=mesecon.rotate_rules_up(rules) + elseif dir.y == 1 then + rules=mesecon.rotate_rules_down(rules) end return rules end diff --git a/mesecons/textures/jeija_microcontroller_LED_A.png b/mesecons/textures/jeija_microcontroller_LED_A.png new file mode 100644 index 0000000000000000000000000000000000000000..64526cf2d6e63b2fba720809a40fe2eb2a41740d GIT binary patch literal 1240 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 node position -local function unhash_blockpos(hash) - return vector.multiply(minetest.get_position_from_hash(hash), BLOCKSIZE) -end - -- Maps from a hashed mapblock position (as returned by hash_blockpos) to a -- table. -- diff --git a/mesecons_blinkyplant/doc/blinkyplant/preview.png b/mesecons_blinkyplant/doc/blinkyplant/preview.png old mode 100644 new mode 100755 diff --git a/mesecons_button/init.lua b/mesecons_button/init.lua index f287d52b..11c328c2 100644 --- a/mesecons_button/init.lua +++ b/mesecons_button/init.lua @@ -26,6 +26,7 @@ minetest.register_node("mesecons_button:button_off", { paramtype2 = "facedir", legacy_wallmounted = true, walkable = false, + on_rotate = mesecon.buttonlike_onrotate, sunlight_propagates = true, selection_box = { type = "fixed", @@ -67,6 +68,7 @@ minetest.register_node("mesecons_button:button_on", { paramtype2 = "facedir", legacy_wallmounted = true, walkable = false, + on_rotate = false, light_source = default.LIGHT_MAX-7, sunlight_propagates = true, selection_box = { diff --git a/mesecons_delayer/init.lua b/mesecons_delayer/init.lua index da576ada..7c480c1e 100644 --- a/mesecons_delayer/init.lua +++ b/mesecons_delayer/init.lua @@ -47,7 +47,8 @@ elseif i == 2 then delaytime = 0.3 elseif i == 3 then delaytime = 0.5 elseif i == 4 then delaytime = 1.0 end -boxes = {{ -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 }, -- the main slab +local boxes = { + { -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 }, -- the main slab { -2/16, -7/16, -4/16, 2/16, -26/64, -3/16 }, -- the jeweled "on" indicator { -3/16, -7/16, -3/16, 3/16, -26/64, -2/16 }, @@ -57,7 +58,8 @@ boxes = {{ -6/16, -8/16, -6/16, 6/16, -7/16, 6/16 }, -- the main slab { -6/16, -7/16, -6/16, -4/16, -27/64, -4/16 }, -- the timer indicator { -8/16, -8/16, -1/16, -6/16, -7/16, 1/16 }, -- the two wire stubs - { 6/16, -8/16, -1/16, 8/16, -7/16, 1/16 }} + { 6/16, -8/16, -1/16, 8/16, -7/16, 1/16 } +} minetest.register_node("mesecons_delayer:delayer_off_"..tostring(i), { description = "Delayer", diff --git a/mesecons_extrawires/corner.lua b/mesecons_extrawires/corner.lua index 1e298707..60338932 100644 --- a/mesecons_extrawires/corner.lua +++ b/mesecons_extrawires/corner.lua @@ -49,7 +49,7 @@ minetest.register_node("mesecons_extrawires:corner_on", { minetest.register_node("mesecons_extrawires:corner_off", { drawtype = "nodebox", - description = "Mesecon Corner", + description = "Insulated Mesecon Corner", tiles = { "jeija_insulated_wire_curved_tb_off.png", "jeija_insulated_wire_curved_tb_off.png^[transformR270", diff --git a/mesecons_extrawires/crossover.lua b/mesecons_extrawires/crossover.lua index 4ecfc12b..8f3b8c22 100644 --- a/mesecons_extrawires/crossover.lua +++ b/mesecons_extrawires/crossover.lua @@ -1,4 +1,4 @@ -function crossover_get_rules(node) +local function crossover_get_rules(node) return { {--first wire {x=-1,y=0,z=0}, @@ -19,28 +19,19 @@ local crossover_states = { } minetest.register_node("mesecons_extrawires:crossover_off", { - description = "Insulated Crossover", - drawtype = "nodebox", + description = "Insulated Mesecon Crossover", + drawtype = "mesh", + mesh = "mesecons_extrawires_crossover.b3d", tiles = { - "jeija_insulated_wire_crossing_tb_off.png", - "jeija_insulated_wire_crossing_tb_off.png", + "jeija_insulated_wire_ends_off.png", + "jeija_insulated_wire_sides_off.png", + "jeija_insulated_wire_sides_off.png", "jeija_insulated_wire_ends_off.png" }, paramtype = "light", walkable = false, stack_max = 99, selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}}, - node_box = { - type = "fixed", - fixed = { - { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }, - { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 }, - { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 }, - { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 }, - { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 }, - { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 }, - }, - }, groups = {dig_immediate=3, mesecon=3}, mesecons = { conductor = { @@ -53,30 +44,18 @@ minetest.register_node("mesecons_extrawires:crossover_off", { minetest.register_node("mesecons_extrawires:crossover_01", { description = "You hacker you!", drop = "mesecons_extrawires:crossover_off", - drawtype = "nodebox", + drawtype = "mesh", + mesh = "mesecons_extrawires_crossover.b3d", tiles = { - "jeija_insulated_wire_crossing_tb_01.png", - "jeija_insulated_wire_crossing_tb_01.png", - "jeija_insulated_wire_ends_01x.png", - "jeija_insulated_wire_ends_01x.png", - "jeija_insulated_wire_ends_01z.png", - "jeija_insulated_wire_ends_01z.png" + "jeija_insulated_wire_ends_on.png", + "jeija_insulated_wire_sides_on.png", + "jeija_insulated_wire_sides_off.png", + "jeija_insulated_wire_ends_off.png" }, paramtype = "light", walkable = false, stack_max = 99, selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}}, - node_box = { - type = "fixed", - fixed = { - { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }, - { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 }, - { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 }, - { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 }, - { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 }, - { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 }, - }, - }, groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1}, mesecons = { conductor = { @@ -89,30 +68,18 @@ minetest.register_node("mesecons_extrawires:crossover_01", { minetest.register_node("mesecons_extrawires:crossover_10", { description = "You hacker you!", drop = "mesecons_extrawires:crossover_off", - drawtype = "nodebox", + drawtype = "mesh", + mesh = "mesecons_extrawires_crossover.b3d", tiles = { - "jeija_insulated_wire_crossing_tb_10.png", - "jeija_insulated_wire_crossing_tb_10.png", - "jeija_insulated_wire_ends_10x.png", - "jeija_insulated_wire_ends_10x.png", - "jeija_insulated_wire_ends_10z.png", - "jeija_insulated_wire_ends_10z.png" + "jeija_insulated_wire_ends_off.png", + "jeija_insulated_wire_sides_off.png", + "jeija_insulated_wire_sides_on.png", + "jeija_insulated_wire_ends_on.png" }, paramtype = "light", walkable = false, stack_max = 99, selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}}, - node_box = { - type = "fixed", - fixed = { - { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }, - { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 }, - { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 }, - { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 }, - { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 }, - { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 }, - }, - }, groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1}, mesecons = { conductor = { @@ -125,30 +92,18 @@ minetest.register_node("mesecons_extrawires:crossover_10", { minetest.register_node("mesecons_extrawires:crossover_on", { description = "You hacker you!", drop = "mesecons_extrawires:crossover_off", - drawtype = "nodebox", + drawtype = "mesh", + mesh = "mesecons_extrawires_crossover.b3d", tiles = { - "jeija_insulated_wire_crossing_tb_on.png", - "jeija_insulated_wire_crossing_tb_on.png", - "jeija_insulated_wire_ends_on.png", - "jeija_insulated_wire_ends_on.png", "jeija_insulated_wire_ends_on.png", + "jeija_insulated_wire_sides_on.png", + "jeija_insulated_wire_sides_on.png", "jeija_insulated_wire_ends_on.png" }, paramtype = "light", walkable = false, stack_max = 99, selection_box = {type="fixed", fixed={-16/32-0.0001, -18/32, -16/32-0.001, 16/32+0.001, -5/32, 16/32+0.001}}, - node_box = { - type = "fixed", - fixed = { - { -16/32-0.001, -17/32, -3/32, 16/32+0.001, -13/32, 3/32 }, - { -3/32, -17/32, -16/32-0.001, 3/32, -13/32, -6/32 }, - { -3/32, -13/32, -9/32, 3/32, -6/32, -6/32 }, - { -3/32, -9/32, -9/32, 3/32, -6/32, 9/32 }, - { -3/32, -13/32, 6/32, 3/32, -6/32, 9/32 }, - { -3/32, -17/32, 6/32, 3/32, -13/32, 16/32+0.001 }, - }, - }, groups = {dig_immediate=3, mesecon=3, not_in_creative_inventory=1}, mesecons = { conductor = { diff --git a/mesecons_extrawires/models/mesecons_extrawires_crossover.b3d b/mesecons_extrawires/models/mesecons_extrawires_crossover.b3d new file mode 100644 index 0000000000000000000000000000000000000000..e776535ad95942121239bd31e06f2c67b6e79376 GIT binary patch literal 3233 zcma)8O>5<>qbQkd5aku7N53pY8 zWWOiQEu|6HbZ!`X8`o}OU9$u(%dY4;&-vKR+&=@2QH{kOvhL^Itkds@Z^`?M=dQ+i zD-!FuJeGO8U4d(Eac$IWoZqh*^^xc3WJ8vBP4hPI7V48&sm1D(e#v!74#W!g_h4f* z^eeG9b~IM;dlKna5pI~h<+VtT0@ozRUSwU!OZ_9RBC(c3G%e?e2M_A`#!8E5*D^Rq;(?I-sw?yVHGw;YIDNxE`P zeU7A)-A=yE=V5uvY2bo>I$vnuIqb)N{d|!laML9}U*lTrVM@3>mfCgs8mZO&^pjeO zI!n#GGeLXdBK?rpxLiMQUMsEF?t*dh+!g(V%b-hqp7~r@99Z(toapSPi~UQh;p|H6 z24Vx(M*qvmJDbGknftBd{s#U0xlgO$`lIvA*nhK`B<2{)=Z)S~=qIrw;r@d2_cA57 z>8|?NaHl1f&nrH6r8lWrG&W9p;~mQ6d6nm|{~6IwVmqi=_k;G5qcYf74V=_h=_6M- z&(Ml@%VuQfkN<;qe}y}S-U8?Iw#fZe>;w7_r+*5ET5P`>bSUhX+(XTJf3a>EaaHuN z0?yw-!pvBh(GKmA0jNN1}LeGOT^c@92{wO?=&OHTVmtZ*BM4V=_c z?89rYsb7gL&P{5zc}z{7svptU9lp=-y@sD|fIdGD1KR<<`ruW_`?MK5hi}Gg1GWNN zfQQtl-3L4h;GNMuratW*zyQz>460B23E**HCorTwZRYw3iCEK9z>~l*@U;50p97u+ zo&k2LPy1!yCE!J1ullt21N(qifLGP0eE@hJcnvtHKJ5{JZ;oZ)u==!*0&f7+@lEw< zj{$$XfcMp>eHJ(a zoCeORPkS1;089ZF)u;Ut@F8#s_*i|~mx0fLS>OwRKJ71od0-B>qCV~Gzyk0Ma6^6C vc22rsKM(8yb^|W}^l485=YbD^y85&~13m>l0cO;v{S|NxxC(r&KJEVi_4yzj literal 0 HcmV?d00001 diff --git a/mesecons_extrawires/src/mesecons_extrawires_crossover.blend b/mesecons_extrawires/src/mesecons_extrawires_crossover.blend new file mode 100644 index 0000000000000000000000000000000000000000..9ad37496a37e242ce364e38139a362432dcc35dc GIT binary patch literal 498592 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 zmPcfHM3zTnc|?{+WO+oEM`U?KmPcfHM3zTnc|?{+WO+oEM`U?KmPcfHM3zUdjyxjE zBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJP zJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq z%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@ zvOFToBeFaq%OkQpBFm%J$Rn~mBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFTo zBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJP zJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq z%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOGFA@`x;t$nuCRkI3?fERV?Y zh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD@`x;t$nuCR zkI3?fERV?Yh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD z@`x;t$nuCRkI3?fERV?Yh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD@`x;t$nuCRkI3?f zERRl&JR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFTo zBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJP zJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq%OkQpBFiJPJR-{@vOFToBeFaq z%OkQpBFiJPJR-{@vOFToBeFaq%cHX*kI3?fERV?Yh%ArD@`x;t$nuCRkI3?fERV?Y zh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD@`x;t$nuCR zkI3?fERV?Yh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD z@`x;t$nuCRkI3?fERV?Yh%ArD@`x;t$nuCRkI3?fERV?Yh%ArD@~A!Xh%ArD@`x;t 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

TgIzbiUyn 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 +Supported gate types: AND, OR, NOT, XOR, NAND, XNOR, Buffer (=)
+I/O ports: A B C D; Registers: numbered 0 to 9 diff --git a/mesecons_fpga/doc/fpga/preview.png b/mesecons_fpga/doc/fpga/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..c1563211c914cc71d20fb936604c94d2820805c4 GIT binary patch literal 21329 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∋wfdZFXofW3b%J%J>f$+S`8f~` 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 Z5o^{f?o~DW3bHSO3pN<*MoV1E{{eN^P=Wve literal 0 HcmV?d00001 diff --git a/mesecons_fpga/doc/fpga/recipe.png b/mesecons_fpga/doc/fpga/recipe.png new file mode 100644 index 0000000000000000000000000000000000000000..1140bfac90b3b46f7de1d97fefdb7fafd1491f75 GIT binary patch literal 3210 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 literal 0 HcmV?d00001 diff --git a/mesecons_fpga/doc/programmer/description.html b/mesecons_fpga/doc/programmer/description.html new file mode 100644 index 00000000..39e23744 --- /dev/null +++ b/mesecons_fpga/doc/programmer/description.html @@ -0,0 +1,3 @@ +The FPGA programmer can be used to copy gate configurations from one FPGA to another.
+Shift+Right-Click an FPGA to read its configuration and "remember" it. +Left-click (punch) FPGAs to write the saved configuration to them. diff --git a/mesecons_fpga/doc/programmer/preview.png b/mesecons_fpga/doc/programmer/preview.png new file mode 100644 index 0000000000000000000000000000000000000000..7437d3968ac796be45bf0e2f4d6c5295f485b088 GIT binary patch literal 598 zcmeAS@N?(olHy`uVBq!ia0y~yU<5K58911MRQ8&P5Fo`_;1OBOz`*0jz`!lcSgN~o zKTwdp#M9T6{UM{IAS3_OzuUF~h3o@-LR|m<{|{u!$jGRvsp;n513{3Aag=(X zhH{9yN~nfvq>lQE6)RS*T)Ar1s@1DkuUWHZ?b@~L)~(yHVZ(w;#URreOM?7@862M7 zNCR<_yxmoh;O%J@}*FuwEkY*@( zQ1GR(jaE(`{R^a0c#%TSFo~xjULI%2l)z4*}Q$iB}LSvt! literal 0 HcmV?d00001 diff --git a/mesecons_fpga/doc/programmer/recipe.png b/mesecons_fpga/doc/programmer/recipe.png new file mode 100644 index 0000000000000000000000000000000000000000..778ec5fc6232a39b20b8126fe1af83b0cc45ba3c GIT binary patch literal 1908 zcmd6nX;4#F6vtmeWf71yhRuMoBuapg5CU02@<~c5E-=^ zLBJUpR0xS^r7Qxq&#G;)*ito9HR!8tiCU1hV3f7j5!-(9bANO1yUV;Y_nbNB{FQMc zf%S5iwZg%Ag}t4li=%^+BhDGO(glZKg?A=6xe(mk+}r_P zWDgII)t)}9ef+(=yu7`=eE{nyK4cn^NF)J#$t2%Ek{@mD+O_Kdz7$_T0D}w=t?~2o z^9Ka6{o_3Y0My_BT1Wt$6_DUXp|U7J>_7l5B#_1mq_e01I-45Iq6Twl00x^TAqD{$ ztRMy_h`|kF@aPOCJ%kg?3=3w3F<9$EnH(mQ$K*sXxiFI($>P8)9?TAp;e^55hz-2( zNZ$IWun6J$NFg5N7sPm&}gN)p7WVxm_P$vY`U zk}AncBNHVONmkC*tsmxY+n)b%;cl4>Ba>lea;#j2mCG@5uqnrs%dzF)TaGQSz*baX zDioM==gzgYwY9gmtJUg`jt-4Rqt$9VJ3AK_7b8jzTY;2d-j5dWOJYa5<{)U<{wRL9 zxcJ_-5x`8cMd^%B6v9>*!1ydUZ=OY_QsP>CegNsU4S2`r6Q#CT~MR zH=?K4ygg(icd&C#^R{+xf~Bn_Sed$B!)GJao^u&f1-Buze0NSu*52ccreafK)q*qr zyl4(Tzp7QG81qb@e6i;$+Npc4q62fOMo}_ewEDrsbQOz^{$^pE)pvDex9fa&J2SFE z&@*k(Nc>T^%L}gac015B3x~{ah4&Op8H7E0|J^OG?FST_H0YMr{M!oPM#lAu5d;q_ zwcT4S*n?jzAi2oJ(41VP+Kb&6Z!}Z5k{=xIt!+~Uf($()v)Q3h8KvaL$Zu88)9i7!YIBF-#NwHn`pLOU!O%?W(;{6;@_yE-i}k{j(h1}tKTGg2PBb*57uDU>rKnUy z^Vqb2QSJ%Rvr6yEznr3V8O0RRLeC1Dhxx~DgK}u9yjjSe}9V~VrDy0D7j;9oOJ~@!_)o)efM^$GN+CtM^u*89%{Xj^W+cH z{!5GbdCxNL9qS(dfROWK#u85>I2p|(WXlyuD1BhkmCl?zOt*qI&uAjn>pl+GW5sG)d!@Rh~^kx`l_)QJgq%8Iau@+ zL;O-l;)vC|kZa5O7ma>3r=Lmp6_$M}I%*4;?0r=Z&_ZKfs?KvC!-iVLep zb%_L*bs#``raM<3yUm$*{_$PIb<&a2l>_)4)*9N(P9+6RR|sNbPF<7;L-Nq&O?gp0 zPmoPF&wfrHytjj?)*`vYQDeNPqWU{*W4^I7)*WPca<4)?(_n^7<5v7U4>@GUpjS_a z>$%3xwV$0ZJNTy8nr4MV#7*{Z%29EOn7)fuHut*?r3C${;mZ-Ac!&Z{T^bhZ3&<9~ zFN5-*>I^l8qs=AF1udw;B00000 literal 0 HcmV?d00001 diff --git a/mesecons_fpga/init.lua b/mesecons_fpga/init.lua new file mode 100644 index 00000000..6c462e65 --- /dev/null +++ b/mesecons_fpga/init.lua @@ -0,0 +1,375 @@ +local plg = {} +plg.rules = {} + +local lcore = dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/logic.lua") +dofile(minetest.get_modpath(minetest.get_current_modname()) .. "/tool.lua")(plg) + + +plg.register_nodes = function(template) + -- each loop is for one of the 4 IO ports + for a = 0, 1 do + for b = 0, 1 do + for c = 0, 1 do + for d = 0, 1 do + local ndef = table.copy(template) + local nodename = "mesecons_fpga:fpga" + .. tostring(d) .. tostring(c) .. tostring(b) .. tostring(a) + + -- build top texture string + local texture = "jeija_fpga_top.png" + if a == 1 then texture = texture .. "^jeija_microcontroller_LED_A.png" end + if b == 1 then texture = texture .. "^jeija_microcontroller_LED_B.png" end + if c == 1 then texture = texture .. "^jeija_microcontroller_LED_C.png" end + if d == 1 then texture = texture .. "^jeija_microcontroller_LED_D.png" end + ndef.tiles[1] = texture + ndef.inventory_image = texture + + if (a + b + c + d) > 0 then + ndef.groups["not_in_creative_inventory"] = 1 + end + + -- interaction with mesecons (input / output) + local rules_out = {} + if a == 1 then table.insert(rules_out, {x = -1, y = 0, z = 0}) end + if b == 1 then table.insert(rules_out, {x = 0, y = 0, z = 1}) end + if c == 1 then table.insert(rules_out, {x = 1, y = 0, z = 0}) end + if d == 1 then table.insert(rules_out, {x = 0, y = 0, z = -1}) end + plg.rules[nodename] = rules_out + + local rules_in = {} + if a == 0 then table.insert(rules_in, {x = -1, y = 0, z = 0}) end + if b == 0 then table.insert(rules_in, {x = 0, y = 0, z = 1}) end + if c == 0 then table.insert(rules_in, {x = 1, y = 0, z = 0}) end + if d == 0 then table.insert(rules_in, {x = 0, y = 0, z = -1}) end + ndef.mesecons.effector.rules = rules_in + + if (a + b + c + d) > 0 then + ndef.mesecons.receptor = { + state = mesecon.state.on, + rules = rules_out, + } + end + + minetest.register_node(nodename, ndef) + end + end + end + end +end + +plg.register_nodes({ + description = "FPGA", + drawtype = "nodebox", + tiles = { + "", -- replaced later + "jeija_microcontroller_bottom.png", + "jeija_fpga_sides.png", + "jeija_fpga_sides.png", + "jeija_fpga_sides.png", + "jeija_fpga_sides.png" + }, + inventory_image = "", -- replaced later + sunlight_propagates = true, + paramtype = "light", + walkable = true, + groups = {dig_immediate = 2, mesecon = 3}, + drop = "mesecons_fpga:fpga0000", + selection_box = { + type = "fixed", + fixed = { -8/16, -8/16, -8/16, 8/16, -5/16, 8/16 }, + }, + node_box = { + type = "fixed", + fixed = { + { -8/16, -8/16, -8/16, 8/16, -7/16, 8/16 }, -- bottom slab + { -5/16, -7/16, -5/16, 5/16, -6/16, 5/16 }, -- circuit board + { -3/16, -6/16, -3/16, 3/16, -5/16, 3/16 }, -- IC + } + }, + on_construct = function(pos) + local meta = minetest.get_meta(pos) + local is = { {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {}, {} } + + meta:set_string("instr", lcore.serialize(is)) + meta:set_int("valid", 0) + meta:set_string("formspec", plg.to_formspec_string(is)) + meta:set_string("infotext", "FPGA") + end, + on_receive_fields = function(pos, formname, fields, sender) + if fields.program == nil then return end -- we only care when the user clicks "Program" + local meta = minetest.get_meta(pos) + local is = plg.from_formspec_fields(fields) + + meta:set_string("instr", lcore.serialize(is)) + plg.update_formspec(pos, is) + end, + sounds = default.node_sound_stone_defaults(), + mesecons = { + effector = { + rules = {}, -- replaced later + action_change = function(pos, node, rule, newstate) + plg.ports_changed(pos, rule, newstate) + plg.update(pos) + end + } + }, + after_dig_node = function(pos, node) + mesecon.receptor_off(pos, plg.rules[node.name]) + end, +}) + + +plg.to_formspec_string = function(is) + local function dropdown_op(x, y, name, val) + local s = "dropdown[" .. tostring(x) .. "," .. tostring(y) .. ";" + .. "0.75,0.5;" .. name .. ";" -- the height seems to be ignored? + s = s .. " ,A,B,C,D,0,1,2,3,4,5,6,7,8,9;" + if val == nil then + s = s .. "0" -- actually selects no field at all + elseif val.type == "io" then + local mapping = { + ["A"] = 1, + ["B"] = 2, + ["C"] = 3, + ["D"] = 4, + } + s = s .. tostring(1 + mapping[val.port]) + else -- "reg" + s = s .. tostring(6 + val.n) + end + return s .. "]" + end + local function dropdown_action(x, y, name, val) + local s = "dropdown[" .. tostring(x) .. "," .. tostring(y) .. ";" + .. "1.125,0.5;" .. name .. ";" -- the height seems to be ignored? + s = s .. " , AND, OR, NOT, XOR,NAND, =,XNOR;" + if val == nil then + return s .. "0]" -- actually selects no field at all + end + local mapping = { + ["and"] = 1, + ["or"] = 2, + ["not"] = 3, + ["xor"] = 4, + ["nand"] = 5, + ["buf"] = 6, + ["xnor"] = 7, + } + return s .. tostring(1 + mapping[val]) .. "]" + end + local s = "size[9,9]".. + "label[3.4,-0.15;FPGA gate configuration]".. + "button_exit[7,7.5;2,2.5;program;Program]".. + "box[4.2,0.5;0.03,7;#ffffff]".. + "label[0.25,0.25;op. 1]".. + "label[1.0,0.25;gate type]".. + "label[2.125,0.25;op. 2]".. + "label[3.15,0.25;dest]".. + "label[4.5,0.25;op. 1]".. + "label[5.25,0.25;gate type]".. + "label[6.375,0.25;op. 2]".. + "label[7.4,0.25;dest]" + local x = 1 - 0.75 + local y = 1 - 0.25 + for i = 1, 14 do + local cur = is[i] + s = s .. dropdown_op (x , y, tostring(i).."op1", cur.op1) + s = s .. dropdown_action(x+0.75 , y, tostring(i).."act", cur.action) + s = s .. dropdown_op (x+1.875, y, tostring(i).."op2", cur.op2) + s = s .. "label[" .. tostring(x+2.625) .. "," .. tostring(y+0.1) .. "; ->]" + s = s .. dropdown_op (x+2.9 , y, tostring(i).."dst", cur.dst) + y = y + 1 + + if i == 7 then + x = 4.5 + y = 1 - 0.25 + end + end + return s +end + +plg.from_formspec_fields = function(fields) + local function read_op(s) + if s == nil or s == " " then + return nil + elseif s == "A" or s == "B" or s == "C" or s == "D" then + return {type = "io", port = s} + else + return {type = "reg", n = tonumber(s)} + end + end + local function read_action(s) + if s == nil or s == " " then + return nil + end + local mapping = { + ["AND"] = "and", + ["OR"] = "or", + ["NOT"] = "not", + ["XOR"] = "xor", + ["NAND"] = "nand", + ["="] = "buf", + ["XNOR"] = "xnor", + } + s = s:gsub("^%s*", "") -- remove leading spaces + return mapping[s] + end + local is = {} + for i = 1, 14 do + local cur = {} + cur.op1 = read_op(fields[tonumber(i) .. "op1"]) + cur.action = read_action(fields[tonumber(i) .. "act"]) + cur.op2 = read_op(fields[tonumber(i) .. "op2"]) + cur.dst = read_op(fields[tonumber(i) .. "dst"]) + is[#is + 1] = cur + end + return is +end + +plg.update_formspec = function(pos, is) + if type(is) == "string" then -- serialized string + is = lcore.deserialize(is) + end + local meta = minetest.get_meta(pos) + local form = plg.to_formspec_string(is) + + local err = lcore.validate(is) + if err == nil then + meta:set_int("valid", 1) + meta:set_string("infotext", "FPGA (functional)") + else + meta:set_int("valid", 0) + meta:set_string("infotext", "FPGA") + local fmsg = minetest.colorize("#ff0000", minetest.formspec_escape(err.msg)) + form = form .. plg.red_box_around(err.i) .. + "label[0.25,8.25;The gate configuration is erroneous in the marked area:]".. + "label[0.25,8.5;" .. fmsg .. "]" + end + + meta:set_string("formspec", form) + + -- reset ports and run programmed logic + plg.setports(pos, false, false, false, false) + plg.update(pos) +end + +plg.red_box_around = function(i) + local x, y + if i > 7 then + x = 4.5 + y = 0.75 + (i - 8) + else + x = 0.25 + y = 0.75 + (i - 1) + end + return string.format("box[%f,%f;3.8,0.8;#ff0000]", x-0.1, y-0.05) +end + + +plg.update = function(pos) + local meta = minetest.get_meta(pos) + if meta:get_int("valid") ~= 1 then + return + end + + local is = lcore.deserialize(meta:get_string("instr")) + local A, B, C, D = plg.getports(pos) + A, B, C, D = lcore.interpret(is, A, B, C, D) + plg.setports(pos, A, B, C, D) +end + +plg.ports_changed = function(pos, rule, newstate) + if rule == nil then return end + local meta = minetest.get_meta(pos) + local states + + local s = meta:get_string("portstates") + if s == nil then + states = {false, false, false, false} + else + states = { + s:sub(1, 1) == "1", + s:sub(2, 2) == "1", + s:sub(3, 3) == "1", + s:sub(4, 4) == "1", + } + end + + -- trick to transform rules (see register_node) into port number + local portno = ({4, 1, nil, 3, 2})[3 + rule.x + 2*rule.z] + states[portno] = (newstate == "on") + + meta:set_string("portstates", + (states[1] and "1" or "0") .. (states[2] and "1" or "0") .. + (states[3] and "1" or "0") .. (states[4] and "1" or "0") + ) +end + +plg.getports = function(pos) -- gets merged states of INPUT & OUTPUT + local sin, sout + + local s = minetest.get_meta(pos):get_string("portstates") + if s == nil then + sin = {false, false, false, false} + else + sin = { + s:sub(1, 1) == "1", + s:sub(2, 2) == "1", + s:sub(3, 3) == "1", + s:sub(4, 4) == "1", + } + end + + local name = minetest.get_node(pos).name + assert(name:find("mesecons_fpga:fpga") == 1) + local off = #"mesecons_fpga:fpga" + sout = { + name:sub(off+4, off+4) == "1", + name:sub(off+3, off+3) == "1", + name:sub(off+2, off+2) == "1", + name:sub(off+1, off+1) == "1", + } + + return unpack({ + sin[1] or sout[1], + sin[2] or sout[2], + sin[3] or sout[3], + sin[4] or sout[4], + }) +end + +plg.setports = function(pos, A, B, C, D) -- sets states of OUTPUT + local base = "mesecons_fpga:fpga" + + local name = base + .. (D and "1" or "0") .. (C and "1" or "0") + .. (B and "1" or "0") .. (A and "1" or "0") + minetest.swap_node(pos, {name = name, param2 = minetest.get_node(pos).param2}) + + if A ~= nil then + local ru = plg.rules[base .. "0001"] + if A then mesecon.receptor_on(pos, ru) else mesecon.receptor_off(pos, ru) end + end + if B ~= nil then + local ru = plg.rules[base .. "0010"] + if B then mesecon.receptor_on(pos, ru) else mesecon.receptor_off(pos, ru) end + end + if C ~= nil then + local ru = plg.rules[base .. "0100"] + if C then mesecon.receptor_on(pos, ru) else mesecon.receptor_off(pos, ru) end + end + if D ~= nil then + local ru = plg.rules[base .. "1000"] + if D then mesecon.receptor_on(pos, ru) else mesecon.receptor_off(pos, ru) end + end +end + + +minetest.register_craft({ + output = "mesecons_fpga:fpga0000 2", + recipe = { + {'group:mesecon_conductor_craftable', 'group:mesecon_conductor_craftable'}, + {'mesecons_materials:silicon', 'mesecons_materials:silicon'}, + {'group:mesecon_conductor_craftable', 'group:mesecon_conductor_craftable'}, + } +}) diff --git a/mesecons_fpga/logic.lua b/mesecons_fpga/logic.lua new file mode 100644 index 00000000..3dca1546 --- /dev/null +++ b/mesecons_fpga/logic.lua @@ -0,0 +1,210 @@ +local lg = {} + +-- (de)serialize +lg.serialize = function(t) + local function _op(t) + if t == nil then + return " " + elseif t.type == "io" then + return t.port + else -- t.type == "reg" + return tostring(t.n) + end + end + local function _action(s) + if s == nil then + return " " + end + local mapping = { + ["and"] = "&", + ["or"] = "|", + ["not"] = "~", + ["xor"] = "^", + ["nand"] = "?", --dunno + ["buf"] = "_", + ["xnor"] = "=", + } + return mapping[s] + end + + local s = "" + for i = 1, 14 do + local cur = t[i] + if next(cur) ~= nil then + s = s .. _op(cur.op1) .. _action(cur.action) .. _op(cur.op2) .. _op(cur.dst) + end + s = s .. "/" + end + return s +end + +lg.deserialize = function(s) + local function _op(c) + if c == "A" or c == "B" or c == "C" or c == "D" then + return {type = "io", port = c} + elseif c == " " then + return nil + else + return {type = "reg", n = tonumber(c)} + end + end + local function _action(c) + local mapping = { + ["&"] = "and", + ["|"] = "or", + ["~"] = "not", + ["^"] = "xor", + ["?"] = "nand", + ["_"] = "buf", + ["="] = "xnor", + [" "] = nil, + } + return mapping[c] + end + + local ret = {} + for part in s:gmatch("(.-)/") do + local parsed + if part == "" then + parsed = {} + else + parsed = { + action = _action( part:sub(2,2) ), + op1 = _op( part:sub(1,1) ), + op2 = _op( part:sub(3,3) ), + dst = _op( part:sub(4,4) ), + } + end + ret[#ret + 1] = parsed + end + -- More than 14 instructions (write to all 10 regs + 4 outputs) + -- will not pass the write-once requirement of the validator + assert(#ret == 14) + return ret +end + +-- validation +lg.validate_single = function(t, i) + local function is_reg_written_to(t, n, max) + for i = 1, max-1 do + if next(t[i]) ~= nil + and t[i].dst and t[i].dst.type == "reg" + and t[i].dst.n == n then + return true + end + end + return false + end + local function compare_op(t1, t2, allow_same_io) + if t1 == nil or t2 == nil then + return false + elseif t1.type ~= t2.type then + return false + end + if t1.type == "reg" and t1.n == t2.n then + return true + elseif t1.type == "io" and t1.port == t2.port then + return not allow_same_io + end + return false + end + local elem = t[i] + -- check for completeness + if elem.action == nil then + return {i = i, msg = "Gate type required"} + elseif elem.action == "not" or elem.action == "buf" then + if elem.op1 ~= nil or elem.op2 == nil or elem.dst == nil then + return {i = i, msg = "Second operand (only) and destination required"} + end + else + if elem.op1 == nil or elem.op2 == nil or elem.dst == nil then + return {i = i, msg = "Operands and destination required"} + end + end + -- check whether operands/destination are identical + if compare_op(elem.op1, elem.op2) then + return {i = i, msg = "Operands cannot be identical"} + end + if compare_op(elem.op1, elem.dst, true) or compare_op(elem.op2, elem.dst, true) then + return {i = i, msg = "Destination and operands must be different"} + end + -- check whether operands point to defined registers + if elem.op1 ~= nil and elem.op1.type == "reg" + and not is_reg_written_to(t, elem.op1.n, i) then + return {i = i, msg = "First operand is undefined register"} + end + if elem.op2.type == "reg" and not is_reg_written_to(t, elem.op2.n, i) then + return {i = i, msg = "Second operand is undefined register"} + end + -- check whether destination points to undefined register + if elem.dst.type == "reg" and is_reg_written_to(t, elem.dst.n, i) then + return {i = i, msg = "Destination is already used register"} + end + + return nil +end + +lg.validate = function(t) + for i = 1, 14 do + if next(t[i]) ~= nil then + local r = lg.validate_single(t, i) + if r ~= nil then + return r + end + end + end + return nil +end + +-- interpreter +lg.interpret = function(t, a, b, c, d) + local function _action(s, v1, v2) + if s == "and" then + return v1 and v2 + elseif s == "or" then + return v1 or v2 + elseif s == "not" then + return not v2 + elseif s == "xor" then + return v1 ~= v2 + elseif s == "nand" then + return not (v1 and v2) + elseif s == "buf" then + return v2 + else -- s == "xnor" + return v1 == v2 + end + end + local function _op(t, regs, io_in) + if t.type == "reg" then + return regs[t.n] + else -- t.type == "io" + return io_in[t.port] + end + end + + local io_in = {A=a, B=b, C=c, D=d} + local regs = {} + local io_out = {} + for i = 1, 14 do + local cur = t[i] + if next(cur) ~= nil then + local v1, v2 + if cur.op1 ~= nil then + v1 = _op(cur.op1, regs, io_in) + end + v2 = _op(cur.op2, regs, io_in) + + local result = _action(cur.action, v1, v2) + + if cur.dst.type == "reg" then + regs[cur.dst.n] = result + else -- cur.dst.type == "io" + io_out[cur.dst.port] = result + end + end + end + return io_out.A, io_out.B, io_out.C, io_out.D +end + +return lg diff --git a/mesecons_fpga/textures/jeija_fpga_programmer.png b/mesecons_fpga/textures/jeija_fpga_programmer.png new file mode 100644 index 0000000000000000000000000000000000000000..9c0ba8f77b084732731cf7bd000abb72da2de9d5 GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJXMsm#F#`j)FbFd;%$g$s6l5>) z^mS!_$S5hGU~GPV>ocH`cYsfbE0C6vky*KNey7)B`n?L)2A5HB=*Y)K{!n0aU+g)hf7_b?eq`*s$Tj&;i2iaxJ< j`nkoC{r<*dE9TcQ%H*=eSt#VxfE?iI>gTe~DWM4fI$vgN literal 0 HcmV?d00001 diff --git a/mesecons_fpga/textures/jeija_fpga_sides.png b/mesecons_fpga/textures/jeija_fpga_sides.png new file mode 100644 index 0000000000000000000000000000000000000000..e2d8e15daaeafde621172d4cdb8b8946957f4284 GIT binary patch literal 536 zcmV+z0_XjSP)a^d zQY0@@Brj7WFH|HjRV6T1B{5bdF;^xsS0*x8CNfzkGg>D!TPUcgsHv%`s;a81tE;T6 ztgWrBuCA`HudlGMu(7eRva+(Xv$M3cw6(Rhx3{;rxVX8wxw^W#ySux*yu7`=y}rJ_ zzrVl0z`()5!NS7A!^6YG#KgtL#m2_Q$H&LW$jHgb$;->j%*@RH|Nn^c@4x^600Cl4 zM?^K=w%Ka{008_+L_t&-8HK^iZqq;%0MK)}!~pTg)(VrO!+TI{^I2s^1Ge);VyW=(Z+b(Ib_tM5`r8SRZYszNiOAutK4qg;Gu zmO9GWUA0NgU@;(V(pl;#f4vBVCah9ZR29`t>L_8cM?<%f@<(E z_%C&o)!inLRt&;JwMZRha8^B3gN7P4vp3(+keWo37BpX^j`D7`B7`QrKbR>sHmu_0I910t*x!E zudlGMu(7eRv$M0cwY9gmx4F5wy1Kf&yu7`=y}rJ_zrVl0z`()5!NS7A!^6YG#KgtL z#mC3T$;rw8|Nj(``r|km zgkCFD!qm|}*VhlWrlL2vN8L6MXnb*T*=II<{AZZGoASDXt=slvGK8k4Svs? zS(!vqzi=l>HFkbA^UzLb-aWT!qb^Tg{<-3j(!tsj@pqO!e;8?b&JgxSgVD}XDxasX z;`Xb1&1K4&PaJ$B)mpmvAWGHNnA-c$C_%V3tS+pYxPL#iF07Rf)}DCR1EU!ATGw_O zJDr_OuapU|eeWX&UpulFtwLd8@Z+h?@TnjAwM`+Fctb1PAPS9KkN#{>Y%24obFEq@ z(F!++PAHuk4f4PGSry|+sJ!%)-_J{gwCI%j~!^7$p+5Fg4c=u2v>u uX;h=O)GS|)qav-0SQrrg@6x@wss8{QA-HSxTlm%h0000 0 + local is_flowing = minetest.registered_items[name].liquidtype == "flowing" + return (is_water and is_flowing) +end + minetest.register_abm({ nodenames = {"mesecons_hydroturbine:hydro_turbine_off"}, interval = 1, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local waterpos={x=pos.x, y=pos.y+1, z=pos.z} - if minetest.get_node(waterpos).name=="default:water_flowing" then + if is_flowing_water(waterpos) then minetest.set_node(pos, {name="mesecons_hydroturbine:hydro_turbine_on"}) nodeupdate(pos) mesecon.receptor_on(pos) @@ -73,7 +82,7 @@ nodenames = {"mesecons_hydroturbine:hydro_turbine_on"}, chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) local waterpos={x=pos.x, y=pos.y+1, z=pos.z} - if minetest.get_node(waterpos).name~="default:water_flowing" then + if not is_flowing_water(waterpos) then minetest.set_node(pos, {name="mesecons_hydroturbine:hydro_turbine_off"}) nodeupdate(pos) mesecon.receptor_off(pos) diff --git a/mesecons_hydroturbine/models/jeija_hydro_turbine_off.obj b/mesecons_hydroturbine/models/jeija_hydro_turbine_off.obj new file mode 100644 index 00000000..5cd5c969 --- /dev/null +++ b/mesecons_hydroturbine/models/jeija_hydro_turbine_off.obj @@ -0,0 +1,429 @@ +# Blender v2.72 (sub 0) OBJ File: 'mesecons-water-turbine.blend' +# www.blender.org +o Cylinder.002_Cylinder.003 +v 0.000000 0.496094 -0.150000 +v 0.000000 0.562500 -0.150000 +v 0.106066 0.496094 -0.106066 +v 0.106066 0.562500 -0.106066 +v 0.150000 0.496094 0.000000 +v 0.150000 0.562500 0.000000 +v 0.106066 0.496094 0.106066 +v 0.106066 0.562500 0.106066 +v -0.000000 0.496094 0.150000 +v -0.000000 0.562500 0.150000 +v -0.106066 0.496094 0.106066 +v -0.106066 0.562500 0.106066 +v -0.150000 0.496094 -0.000000 +v -0.150000 0.562500 -0.000000 +v -0.106066 0.496094 -0.106066 +v -0.106066 0.562500 -0.106066 +v 0.097545 0.625000 -0.490393 +v -0.097545 0.625000 -0.490393 +v -0.277785 0.625000 -0.415735 +v -0.415735 0.625000 -0.277785 +v -0.490393 0.625000 -0.097545 +v -0.490393 0.625000 0.097545 +v -0.415735 0.625000 0.277785 +v -0.277785 0.625000 0.415735 +v -0.097545 0.625000 0.490393 +v 0.097545 0.625000 0.490393 +v 0.277785 0.625000 0.415735 +v 0.415735 0.625000 0.277785 +v 0.490393 0.625000 0.097545 +v 0.490393 0.625000 -0.097545 +v 0.415735 0.625000 -0.277785 +v 0.277785 0.625000 -0.415735 +v 0.097545 0.656250 -0.490393 +v -0.097545 0.656250 -0.490393 +v -0.277785 0.656250 -0.415735 +v -0.415735 0.656250 -0.277785 +v -0.490393 0.656250 -0.097545 +v -0.490393 0.656250 0.097545 +v -0.415735 0.656250 0.277785 +v -0.277785 0.656250 0.415735 +v -0.097545 0.656250 0.490393 +v 0.097545 0.656250 0.490393 +v 0.277785 0.656250 0.415735 +v 0.415735 0.656250 0.277785 +v 0.490393 0.656250 0.097545 +v 0.490393 0.656250 -0.097545 +v 0.415735 0.656250 -0.277785 +v 0.277785 0.656250 -0.415735 +v 0.116233 0.634645 -0.436100 +v 0.116233 1.482640 -0.436100 +v 0.299524 0.634645 -0.186124 +v 0.299524 1.482640 -0.186124 +v 0.343405 0.634645 0.080186 +v 0.343405 1.482640 0.080186 +v 0.186124 0.634645 0.299524 +v 0.186124 1.482640 0.299524 +v -0.080186 0.634645 0.343405 +v -0.080186 1.482640 0.343405 +v -0.299524 0.634645 0.186124 +v -0.299524 1.482640 0.186124 +v -0.343405 0.634645 -0.080186 +v -0.343405 1.482640 -0.080186 +v -0.186124 0.634645 -0.299524 +v -0.186124 1.482640 -0.299524 +v 0.080186 0.634645 -0.343405 +v 0.080186 1.482640 -0.343405 +v 0.390559 1.482640 -0.226180 +v 0.390559 0.634645 -0.226180 +v 0.436100 1.482640 0.116233 +v 0.436100 0.634645 0.116233 +v 0.226180 1.482640 0.390559 +v 0.226180 0.634645 0.390559 +v -0.116233 1.482640 0.436100 +v -0.116233 0.634645 0.436100 +v -0.390559 1.482640 0.226180 +v -0.390559 0.634645 0.226180 +v -0.436100 1.482640 -0.116233 +v -0.436100 0.634645 -0.116233 +v -0.226180 1.482640 -0.390559 +v -0.226180 0.634645 -0.390559 +v 0.108975 0.634645 -0.430778 +v 0.292266 0.634645 -0.180802 +v 0.292266 1.482640 -0.180802 +v 0.108975 1.482640 -0.430778 +v 0.381664 0.634645 -0.227549 +v 0.334509 0.634645 0.078817 +v 0.334509 1.482640 0.078817 +v 0.381664 1.482640 -0.227549 +v 0.430778 0.634645 0.108975 +v 0.180802 0.634645 0.292266 +v 0.180802 1.482640 0.292266 +v 0.430778 1.482640 0.108975 +v 0.227549 0.634645 0.381664 +v -0.078817 0.634645 0.334509 +v -0.078817 1.482640 0.334509 +v 0.227549 1.482640 0.381664 +v -0.108975 0.634645 0.430778 +v -0.292266 0.634645 0.180802 +v -0.292266 1.482640 0.180802 +v -0.108975 1.482640 0.430778 +v -0.381664 0.634645 0.227549 +v -0.334509 0.634645 -0.078817 +v -0.334509 1.482640 -0.078817 +v -0.381664 1.482640 0.227549 +v -0.227549 0.634645 -0.381663 +v 0.078817 0.634645 -0.334509 +v 0.078817 1.482640 -0.334509 +v -0.227549 1.482640 -0.381663 +v -0.430779 0.634645 -0.108975 +v -0.180802 0.634645 -0.292266 +v -0.180802 1.482640 -0.292266 +v -0.430779 1.482640 -0.108975 +v 0.097545 1.496094 -0.490393 +v -0.097545 1.496094 -0.490393 +v -0.277785 1.496094 -0.415735 +v -0.415735 1.496094 -0.277785 +v -0.490393 1.496094 -0.097545 +v -0.490393 1.496094 0.097545 +v -0.415735 1.496094 0.277785 +v -0.277785 1.496094 0.415735 +v -0.097545 1.496094 0.490393 +v 0.097545 1.496094 0.490393 +v 0.277785 1.496094 0.415735 +v 0.415735 1.496094 0.277785 +v 0.490393 1.496094 0.097545 +v 0.490393 1.496094 -0.097545 +v 0.415735 1.496094 -0.277785 +v 0.277785 1.496094 -0.415735 +v 0.097545 1.464844 -0.490393 +v -0.097545 1.464844 -0.490393 +v -0.277785 1.464844 -0.415735 +v -0.415735 1.464844 -0.277785 +v -0.490393 1.464844 -0.097545 +v -0.490393 1.464844 0.097545 +v -0.415735 1.464844 0.277785 +v -0.277785 1.464844 0.415735 +v -0.097545 1.464844 0.490393 +v 0.097545 1.464844 0.490393 +v 0.277785 1.464844 0.415735 +v 0.415735 1.464844 0.277785 +v 0.490393 1.464844 0.097545 +v 0.490393 1.464844 -0.097545 +v 0.415735 1.464844 -0.277785 +v 0.277785 1.464844 -0.415735 +v 0.025624 0.559630 -0.061863 +v 0.025624 1.481372 -0.061863 +v 0.061863 0.559630 -0.025624 +v 0.061863 1.481372 -0.025624 +v 0.061863 0.559630 0.025624 +v 0.061863 1.481372 0.025624 +v 0.025624 0.559630 0.061863 +v 0.025624 1.481372 0.061863 +v -0.025624 0.559630 0.061863 +v -0.025624 1.481372 0.061863 +v -0.061863 0.559630 0.025624 +v -0.061863 1.481372 0.025624 +v -0.061863 0.559630 -0.025624 +v -0.061863 1.481372 -0.025624 +v -0.025624 0.559630 -0.061863 +v -0.025624 1.481372 -0.061863 +v 0.496094 -0.496094 -0.496094 +v 0.496094 -0.496094 0.496094 +v -0.496094 -0.496094 0.496094 +v -0.496094 -0.496094 -0.496094 +v 0.496094 0.496094 -0.496094 +v 0.496094 0.496094 0.496094 +v -0.496094 0.496094 0.496094 +v -0.496094 0.496094 -0.496094 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.400544 1.000000 +vt 0.599456 1.000000 +vt 0.783227 0.923880 +vt 0.923880 0.783227 +vt 1.000000 0.599456 +vt 1.000000 0.400544 +vt 0.923880 0.216773 +vt 0.783227 0.076120 +vt 0.599456 0.000000 +vt 0.400544 0.000000 +vt 0.216773 0.076121 +vt 0.076120 0.216773 +vt 0.000000 0.400544 +vt 0.000000 0.599456 +vt 0.076121 0.783227 +vt 0.216773 0.923880 +vt 0.500000 0.343750 +vt 0.531250 0.343750 +vt 0.531250 0.375000 +vt 0.500000 0.375000 +vt 0.531250 0.406250 +vt 0.500000 0.406250 +vt 0.500000 0.531250 +vt 0.531250 0.531250 +vt 0.531250 0.500000 +vt 0.500000 0.500000 +vt 0.531250 0.468750 +vt 0.500000 0.468750 +vt 0.531250 0.437500 +vt 0.500000 0.437500 +vt 0.593750 0.468750 +vt 0.625000 0.437500 +vt 0.656250 0.437500 +vt 0.687500 0.468750 +vt 0.687500 0.500000 +vt 0.656250 0.531250 +vt 0.625000 0.531250 +vt 0.593750 0.500000 +vt 0.500000 0.312500 +vt 0.531250 0.312500 +vt 0.500000 0.281250 +vt 0.531250 0.281250 +vt 0.156250 0.750000 +vt 0.156250 0.875000 +vt 0.125000 0.875000 +vt 0.125000 0.750000 +vt 0.156250 0.625000 +vt 0.125000 0.625000 +vt 0.156250 0.500000 +vt 0.125000 0.500000 +vt 0.156250 0.375000 +vt 0.125000 0.375000 +vt 0.156250 0.250000 +vt 0.125000 0.250000 +vt 0.250000 0.500000 +vt 0.250000 0.625000 +vt 0.218750 0.625000 +vt 0.218750 0.500000 +vt 0.156250 0.125000 +vt 0.125000 0.125000 +vt 0.156250 -0.000000 +vt 0.125000 -0.000000 +vt 0.250000 0.375000 +vt 0.218750 0.375000 +vt 0.250000 0.875000 +vt 0.250000 1.000000 +vt 0.218750 1.000000 +vt 0.218750 0.875000 +vt 0.250000 0.250000 +vt 0.218750 0.250000 +vt 0.250000 0.750000 +vt 0.218750 0.750000 +vt 0.250000 0.125000 +vt 0.218750 0.125000 +vt 0.250000 -0.000000 +vt 0.218750 -0.000000 +vt 0.156250 1.000000 +vt 0.125000 1.000000 +vt 0.781250 0.593750 +vt 0.781250 0.968750 +vt 0.656250 0.968750 +vt 0.656250 0.593750 +vt 0.625000 0.593750 +vt 0.625000 0.968750 +vt 0.500000 0.968750 +vt 0.500000 0.593750 +vt 0.406250 -0.000000 +vt 0.437500 -0.000000 +vt 0.437500 0.125000 +vt 0.406250 0.125000 +vt 0.312500 0.875000 +vt 0.343750 0.875000 +vt 0.343750 1.000000 +vt 0.312500 1.000000 +vt 0.312500 0.750000 +vt 0.343750 0.750000 +vt 0.312500 0.625000 +vt 0.343750 0.625000 +vt 0.312500 0.500000 +vt 0.343750 0.500000 +vt 0.406250 0.750000 +vt 0.437500 0.750000 +vt 0.437500 0.875000 +vt 0.406250 0.875000 +vt 0.312500 0.375000 +vt 0.343750 0.375000 +vt 0.312500 0.250000 +vt 0.343750 0.250000 +vt 0.406250 0.625000 +vt 0.437500 0.625000 +vt 0.312500 0.125000 +vt 0.343750 0.125000 +vt 0.406250 0.500000 +vt 0.437500 0.500000 +vt 0.312500 -0.000000 +vt 0.343750 -0.000000 +vt 0.406250 0.375000 +vt 0.437500 0.375000 +vt 0.437500 1.000000 +vt 0.406250 1.000000 +vt 0.406250 0.250000 +vt 0.437500 0.250000 +vt 0.031250 0.937500 +vt 0.062500 0.937500 +vt 0.062500 0.968750 +vt 0.031250 0.968750 +vt 0.031250 0.718750 +vt 0.062500 0.718750 +vt 0.062500 0.750000 +vt 0.031250 0.750000 +vt 0.062500 0.781250 +vt 0.031250 0.781250 +vt 0.062500 0.812500 +vt 0.031250 0.812500 +vt 0.062500 0.843750 +vt 0.031250 0.843750 +vt 0.062500 0.875000 +vt 0.031250 0.875000 +vt 0.031250 0.906250 +vt 0.062500 0.906250 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.382700 0.000000 -0.923900 +vn 0.923900 0.000000 -0.382700 +vn 0.923900 0.000000 0.382700 +vn 0.382700 0.000000 0.923900 +vn -0.382700 0.000000 0.923900 +vn -0.923900 0.000000 0.382700 +vn -0.382700 0.000000 -0.923900 +vn -0.923900 0.000000 -0.382700 +vn 0.707100 0.000000 0.707100 +vn -0.707100 0.000000 0.707100 +vn 0.707100 0.000000 -0.707100 +vn -0.707100 0.000000 -0.707100 +vn 0.806400 0.000000 -0.591300 +vn 0.988400 0.000000 0.152100 +vn 0.591300 0.000000 0.806400 +vn -0.152100 0.000000 0.988400 +vn -0.806400 0.000000 0.591300 +vn -0.988400 0.000000 -0.152100 +vn 0.152100 0.000000 -0.988400 +vn -0.591300 0.000000 -0.806400 +g Cylinder.002_Cylinder.003_sides +s off +f 161/1/1 165/2/1 166/3/1 162/4/1 +f 162/1/2 166/2/2 167/3/2 163/4/2 +f 163/4/3 167/3/3 168/2/3 164/1/3 +f 165/2/4 161/1/4 164/4/4 168/3/4 +g Cylinder.002_Cylinder.003_top-bottom +f 161/2/5 162/1/5 163/4/5 164/3/5 +f 165/2/6 168/3/6 167/4/6 166/1/6 +g Cylinder.002_Cylinder.003_turbine-top-bottom +f 130/5/5 129/6/5 144/7/5 143/8/5 142/9/5 141/10/5 140/11/5 139/12/5 138/13/5 137/14/5 136/15/5 135/16/5 134/17/5 133/18/5 132/19/5 131/20/5 +f 18/5/5 17/6/5 32/7/5 31/8/5 30/9/5 29/10/5 28/11/5 27/12/5 26/13/5 25/14/5 24/15/5 23/16/5 22/17/5 21/18/5 20/19/5 19/20/5 +f 33/6/6 34/5/6 35/20/6 36/19/6 37/18/6 38/17/6 39/16/6 40/15/6 41/14/6 42/13/6 43/12/6 44/11/6 45/10/6 46/9/6 47/8/6 48/7/6 +f 113/6/6 114/5/6 115/20/6 116/19/6 117/18/6 118/17/6 119/16/6 120/15/6 121/14/6 122/13/6 123/12/6 124/11/6 125/10/6 126/9/6 127/8/6 128/7/6 +g Cylinder.002_Cylinder.003_turbine-blades-etc +f 1/21/7 2/22/7 4/23/7 3/24/7 +f 3/24/8 4/23/8 6/25/8 5/26/8 +f 5/27/9 6/28/9 8/29/9 7/30/9 +f 7/30/10 8/29/10 10/31/10 9/32/10 +f 9/32/11 10/31/11 12/33/11 11/34/11 +f 11/34/12 12/33/12 14/25/12 13/26/12 +f 4/35/6 2/36/6 16/37/6 14/38/6 12/39/6 10/40/6 8/41/6 6/42/6 +f 15/43/13 16/44/13 2/22/13 1/21/13 +f 13/45/14 14/46/14 16/44/14 15/43/14 +f 27/47/15 28/48/15 44/49/15 43/50/15 +f 26/51/10 27/47/10 43/50/10 42/52/10 +f 25/53/2 26/51/2 42/52/2 41/54/2 +f 24/55/11 25/53/11 41/54/11 40/56/11 +f 23/57/16 24/55/16 40/56/16 39/58/16 +f 17/59/4 18/60/4 34/61/4 33/62/4 +f 22/63/12 23/57/12 39/58/12 38/64/12 +f 21/65/3 22/63/3 38/64/3 37/66/3 +f 32/67/7 17/59/7 33/62/7 48/68/7 +f 20/69/14 21/70/14 37/71/14 36/72/14 +f 31/73/17 32/67/17 48/68/17 47/74/17 +f 19/75/18 20/69/18 36/72/18 35/76/18 +f 30/77/8 31/73/8 47/74/8 46/78/8 +f 18/60/13 19/75/13 35/76/13 34/61/13 +f 29/79/1 30/77/1 46/78/1 45/80/1 +f 28/48/9 29/81/9 45/82/9 44/49/9 +f 49/83/19 50/84/19 52/85/19 51/86/19 +f 68/86/20 67/83/20 54/84/20 53/85/20 +f 70/83/21 69/84/21 56/85/21 55/86/21 +f 72/84/22 71/85/22 58/86/22 57/83/22 +f 74/83/23 73/84/23 60/85/23 59/86/23 +f 76/83/24 75/84/24 62/85/24 61/86/24 +f 80/84/25 79/85/25 66/86/25 65/83/25 +f 78/83/26 77/84/26 64/85/26 63/86/26 +f 81/87/23 82/88/23 83/89/23 84/90/23 +f 85/88/24 86/89/24 87/90/24 88/87/24 +f 89/89/26 90/90/26 91/87/26 92/88/26 +f 93/90/25 94/87/25 95/88/25 96/89/25 +f 97/90/19 98/87/19 99/88/19 100/89/19 +f 101/87/20 102/88/20 103/89/20 104/90/20 +f 105/90/22 106/87/22 107/88/22 108/89/22 +f 109/89/21 110/90/21 111/87/21 112/88/21 +f 75/88/22 76/87/22 101/86/22 104/85/22 +f 71/88/20 72/87/20 93/86/20 96/85/20 +f 67/86/25 68/85/25 85/88/25 88/87/25 +f 79/86/24 80/85/24 105/88/24 108/87/24 +f 77/88/23 78/87/23 109/86/23 112/85/23 +f 73/88/21 74/87/21 97/86/21 100/85/21 +f 69/86/19 70/85/19 89/88/19 92/87/19 +f 50/86/26 49/85/26 81/88/26 84/87/26 +f 123/91/15 139/92/15 140/93/15 124/94/15 +f 122/95/10 138/96/10 139/97/10 123/98/10 +f 121/99/2 137/100/2 138/96/2 122/95/2 +f 120/101/11 136/102/11 137/100/11 121/99/11 +f 119/103/16 135/104/16 136/102/16 120/101/16 +f 113/105/4 129/106/4 130/107/4 114/108/4 +f 118/109/12 134/110/12 135/104/12 119/103/12 +f 117/111/3 133/112/3 134/110/3 118/109/3 +f 128/113/7 144/114/7 129/106/7 113/105/7 +f 116/115/14 132/116/14 133/112/14 117/111/14 +f 127/117/17 143/118/17 144/114/17 128/113/17 +f 115/119/18 131/120/18 132/116/18 116/115/18 +f 126/121/8 142/122/8 143/118/8 127/117/8 +f 114/108/13 130/107/13 131/123/13 115/124/13 +f 125/125/1 141/126/1 142/122/1 126/121/1 +f 124/94/9 140/93/9 141/126/9 125/125/9 +f 145/127/17 146/128/17 148/129/17 147/130/17 +f 147/131/1 148/132/1 150/133/1 149/134/1 +f 149/134/15 150/133/15 152/135/15 151/136/15 +f 151/136/2 152/135/2 154/137/2 153/138/2 +f 153/138/16 154/137/16 156/139/16 155/140/16 +f 155/140/3 156/139/3 158/141/3 157/142/3 +f 159/143/4 160/144/4 146/128/4 145/127/4 +f 157/142/18 158/141/18 160/144/18 159/143/18 diff --git a/mesecons_hydroturbine/models/jeija_hydro_turbine_on.obj b/mesecons_hydroturbine/models/jeija_hydro_turbine_on.obj new file mode 100644 index 00000000..e02501b0 --- /dev/null +++ b/mesecons_hydroturbine/models/jeija_hydro_turbine_on.obj @@ -0,0 +1,2061 @@ +# Blender v2.72 (sub 0) OBJ File: 'mesecons-water-turbine_on.blend' +# www.blender.org +o Cylinder.002_Cylinder.003 +v 0.000000 0.496094 -0.150000 +v 0.000000 0.562500 -0.150000 +v 0.106066 0.496094 -0.106066 +v 0.106066 0.562500 -0.106066 +v 0.150000 0.496094 0.000000 +v 0.150000 0.562500 0.000000 +v 0.106066 0.496094 0.106066 +v 0.106066 0.562500 0.106066 +v -0.000000 0.496094 0.150000 +v -0.000000 0.562500 0.150000 +v -0.106066 0.496094 0.106066 +v -0.106066 0.562500 0.106066 +v -0.150000 0.496094 -0.000000 +v -0.150000 0.562500 -0.000000 +v -0.106066 0.496094 -0.106066 +v -0.106066 0.562500 -0.106066 +v 0.097545 0.625000 -0.490393 +v -0.097545 0.625000 -0.490393 +v -0.277785 0.625000 -0.415735 +v -0.415735 0.625000 -0.277785 +v -0.490393 0.625000 -0.097545 +v -0.490393 0.625000 0.097545 +v -0.415735 0.625000 0.277785 +v -0.277785 0.625000 0.415735 +v -0.097545 0.625000 0.490393 +v 0.097545 0.625000 0.490393 +v 0.277785 0.625000 0.415735 +v 0.415735 0.625000 0.277785 +v 0.490393 0.625000 0.097545 +v 0.490393 0.625000 -0.097545 +v 0.415735 0.625000 -0.277785 +v 0.277785 0.625000 -0.415735 +v 0.097545 0.656250 -0.490393 +v -0.097545 0.656250 -0.490393 +v -0.277785 0.656250 -0.415735 +v -0.415735 0.656250 -0.277785 +v -0.490393 0.656250 -0.097545 +v -0.490393 0.656250 0.097545 +v -0.415735 0.656250 0.277785 +v -0.277785 0.656250 0.415735 +v -0.097545 0.656250 0.490393 +v 0.097545 0.656250 0.490393 +v 0.277785 0.656250 0.415735 +v 0.415735 0.656250 0.277785 +v 0.490393 0.656250 0.097545 +v 0.490393 0.656250 -0.097545 +v 0.415735 0.656250 -0.277785 +v 0.277785 0.656250 -0.415735 +v 0.116233 0.634645 -0.436100 +v 0.116233 1.482640 -0.436100 +v 0.299524 0.634645 -0.186124 +v 0.299524 1.482640 -0.186124 +v 0.343405 0.634645 0.080186 +v 0.343405 1.482640 0.080186 +v 0.186124 0.634645 0.299524 +v 0.186124 1.482640 0.299524 +v -0.080186 0.634645 0.343405 +v -0.080186 1.482640 0.343405 +v -0.299524 0.634645 0.186124 +v -0.299524 1.482640 0.186124 +v -0.343405 0.634645 -0.080186 +v -0.343405 1.482640 -0.080186 +v -0.186124 0.634645 -0.299524 +v -0.186124 1.482640 -0.299524 +v 0.080186 0.634645 -0.343405 +v 0.080186 1.482640 -0.343405 +v 0.390559 1.482640 -0.226180 +v 0.390559 0.634645 -0.226180 +v 0.436100 1.482640 0.116233 +v 0.436100 0.634645 0.116233 +v 0.226180 1.482640 0.390559 +v 0.226180 0.634645 0.390559 +v -0.116233 1.482640 0.436100 +v -0.116233 0.634645 0.436100 +v -0.390559 1.482640 0.226180 +v -0.390559 0.634645 0.226180 +v -0.436100 1.482640 -0.116233 +v -0.436100 0.634645 -0.116233 +v -0.226180 1.482640 -0.390559 +v -0.226180 0.634645 -0.390559 +v 0.108975 0.634645 -0.430778 +v 0.292266 0.634645 -0.180802 +v 0.292266 1.482640 -0.180802 +v 0.108975 1.482640 -0.430778 +v 0.381664 0.634645 -0.227549 +v 0.334509 0.634645 0.078817 +v 0.334509 1.482640 0.078817 +v 0.381664 1.482640 -0.227549 +v 0.430778 0.634645 0.108975 +v 0.180802 0.634645 0.292266 +v 0.180802 1.482640 0.292266 +v 0.430778 1.482640 0.108975 +v 0.227549 0.634645 0.381664 +v -0.078817 0.634645 0.334509 +v -0.078817 1.482640 0.334509 +v 0.227549 1.482640 0.381664 +v -0.108975 0.634645 0.430778 +v -0.292266 0.634645 0.180802 +v -0.292266 1.482640 0.180802 +v -0.108975 1.482640 0.430778 +v -0.381664 0.634645 0.227549 +v -0.334509 0.634645 -0.078817 +v -0.334509 1.482640 -0.078817 +v -0.381664 1.482640 0.227549 +v -0.227549 0.634645 -0.381663 +v 0.078817 0.634645 -0.334509 +v 0.078817 1.482640 -0.334509 +v -0.227549 1.482640 -0.381663 +v -0.430779 0.634645 -0.108975 +v -0.180802 0.634645 -0.292266 +v -0.180802 1.482640 -0.292266 +v -0.430779 1.482640 -0.108975 +v 0.097545 1.496094 -0.490393 +v -0.097545 1.496094 -0.490393 +v -0.277785 1.496094 -0.415735 +v -0.415735 1.496094 -0.277785 +v -0.490393 1.496094 -0.097545 +v -0.490393 1.496094 0.097545 +v -0.415735 1.496094 0.277785 +v -0.277785 1.496094 0.415735 +v -0.097545 1.496094 0.490393 +v 0.097545 1.496094 0.490393 +v 0.277785 1.496094 0.415735 +v 0.415735 1.496094 0.277785 +v 0.490393 1.496094 0.097545 +v 0.490393 1.496094 -0.097545 +v 0.415735 1.496094 -0.277785 +v 0.277785 1.496094 -0.415735 +v 0.097545 1.464844 -0.490393 +v -0.097545 1.464844 -0.490393 +v -0.277785 1.464844 -0.415735 +v -0.415735 1.464844 -0.277785 +v -0.490393 1.464844 -0.097545 +v -0.490393 1.464844 0.097545 +v -0.415735 1.464844 0.277785 +v -0.277785 1.464844 0.415735 +v -0.097545 1.464844 0.490393 +v 0.097545 1.464844 0.490393 +v 0.277785 1.464844 0.415735 +v 0.415735 1.464844 0.277785 +v 0.490393 1.464844 0.097545 +v 0.490393 1.464844 -0.097545 +v 0.415735 1.464844 -0.277785 +v 0.277785 1.464844 -0.415735 +v 0.025624 0.559630 -0.061863 +v 0.025624 1.481372 -0.061863 +v 0.061863 0.559630 -0.025624 +v 0.061863 1.481372 -0.025624 +v 0.061863 0.559630 0.025624 +v 0.061863 1.481372 0.025624 +v 0.025624 0.559630 0.061863 +v 0.025624 1.481372 0.061863 +v -0.025624 0.559630 0.061863 +v -0.025624 1.481372 0.061863 +v -0.061863 0.559630 0.025624 +v -0.061863 1.481372 0.025624 +v -0.061863 0.559630 -0.025624 +v -0.061863 1.481372 -0.025624 +v -0.025624 0.559630 -0.061863 +v -0.025624 1.481372 -0.061863 +v 0.496094 -0.496094 -0.496094 +v 0.496094 -0.496094 0.496094 +v -0.496094 -0.496094 0.496094 +v -0.496094 -0.496094 -0.496094 +v 0.496094 0.496094 -0.496094 +v 0.496094 0.496094 0.496094 +v -0.496094 0.496094 0.496094 +v -0.496094 0.496094 -0.496094 +v 0.199079 0.634645 -0.405045 +v 0.199079 1.482640 -0.405045 +v 0.330079 0.634645 -0.124113 +v 0.330079 1.482640 -0.124113 +v 0.321163 0.634645 0.145640 +v 0.321163 1.482640 0.145640 +v 0.124113 0.634645 0.330079 +v 0.124113 1.482640 0.330079 +v -0.145640 0.634645 0.321163 +v -0.145640 1.482640 0.321163 +v -0.330079 0.634645 0.124113 +v -0.330079 1.482640 0.124113 +v -0.321163 0.634645 -0.145640 +v -0.321163 1.482640 -0.145640 +v -0.124113 0.634645 -0.330079 +v -0.124113 1.482640 -0.330079 +v 0.145640 0.634645 -0.321163 +v 0.145640 1.482640 -0.321163 +v 0.427180 1.482640 -0.145640 +v 0.427180 0.634645 -0.145640 +v 0.405045 1.482640 0.199079 +v 0.405045 0.634645 0.199079 +v 0.145640 1.482640 0.427180 +v 0.145640 0.634645 0.427180 +v -0.199079 1.482640 0.405045 +v -0.199079 0.634645 0.405045 +v -0.427180 1.482640 0.145640 +v -0.427180 0.634645 0.145640 +v -0.405045 1.482640 -0.199079 +v -0.405045 0.634645 -0.199079 +v -0.145640 1.482640 -0.427180 +v -0.145640 0.634645 -0.427180 +v 0.190922 0.634645 -0.401241 +v 0.321922 0.634645 -0.120310 +v 0.321922 1.482640 -0.120310 +v 0.190922 1.482640 -0.401241 +v 0.418723 0.634645 -0.148718 +v 0.312705 0.634645 0.142562 +v 0.312705 1.482640 0.142562 +v 0.418723 1.482640 -0.148718 +v 0.401241 0.634645 0.190922 +v 0.120310 0.634645 0.321923 +v 0.120310 1.482640 0.321923 +v 0.401241 1.482640 0.190922 +v 0.148718 0.634645 0.418723 +v -0.142562 0.634645 0.312705 +v -0.142562 1.482640 0.312705 +v 0.148718 1.482640 0.418723 +v -0.190922 0.634645 0.401241 +v -0.321923 0.634645 0.120310 +v -0.321923 1.482640 0.120310 +v -0.190922 1.482640 0.401241 +v -0.418723 0.634645 0.148718 +v -0.312705 0.634645 -0.142562 +v -0.312705 1.482640 -0.142562 +v -0.418723 1.482640 0.148718 +v -0.148718 0.634645 -0.418723 +v 0.142562 0.634645 -0.312705 +v 0.142562 1.482640 -0.312705 +v -0.148718 1.482640 -0.418723 +v -0.401241 0.634645 -0.190922 +v -0.120310 0.634645 -0.321923 +v -0.120310 1.482640 -0.321923 +v -0.401241 1.482640 -0.190922 +v 0.274274 0.634645 -0.358424 +v 0.274274 1.482640 -0.358424 +v 0.347950 0.634645 -0.057333 +v 0.347950 1.482640 -0.057333 +v 0.286579 0.634645 0.205497 +v 0.286579 1.482640 0.205497 +v 0.057333 0.634645 0.347950 +v 0.057333 1.482640 0.347950 +v -0.205497 0.634645 0.286579 +v -0.205497 1.482640 0.286579 +v -0.347950 0.634645 0.057333 +v -0.347950 1.482640 0.057333 +v -0.286579 0.634645 -0.205497 +v -0.286579 1.482640 -0.205497 +v -0.057333 0.634645 -0.347950 +v -0.057333 1.482640 -0.347950 +v 0.205497 0.634645 -0.286579 +v 0.205497 1.482640 -0.286579 +v 0.447385 1.482640 -0.059503 +v 0.447385 0.634645 -0.059503 +v 0.358424 1.482640 0.274274 +v 0.358424 0.634645 0.274274 +v 0.059503 1.482640 0.447385 +v 0.059503 0.634645 0.447385 +v -0.274274 1.482640 0.358424 +v -0.274274 0.634645 0.358424 +v -0.447385 1.482640 0.059503 +v -0.447385 0.634645 0.059503 +v -0.358424 1.482640 -0.274274 +v -0.358424 0.634645 -0.274274 +v -0.059503 1.482640 -0.447385 +v -0.059503 0.634645 -0.447385 +v 0.265532 0.634645 -0.356284 +v 0.339208 0.634645 -0.055194 +v 0.339208 1.482640 -0.055194 +v 0.265532 1.482640 -0.356284 +v 0.439690 0.634645 -0.064172 +v 0.278885 0.634645 0.200828 +v 0.278885 1.482640 0.200828 +v 0.439690 1.482640 -0.064172 +v 0.356284 0.634645 0.265532 +v 0.055194 0.634645 0.339208 +v 0.055194 1.482640 0.339208 +v 0.356284 1.482640 0.265532 +v 0.064172 0.634645 0.439690 +v -0.200828 0.634645 0.278884 +v -0.200828 1.482640 0.278884 +v 0.064172 1.482640 0.439690 +v -0.265532 0.634645 0.356284 +v -0.339208 0.634645 0.055194 +v -0.339208 1.482640 0.055194 +v -0.265532 1.482640 0.356284 +v -0.439690 0.634645 0.064172 +v -0.278885 0.634645 -0.200828 +v -0.278885 1.482640 -0.200828 +v -0.439690 1.482640 0.064172 +v -0.064172 0.634645 -0.439690 +v 0.200828 0.634645 -0.278884 +v 0.200828 1.482640 -0.278884 +v -0.064172 1.482640 -0.439690 +v -0.356284 0.634645 -0.265532 +v -0.055194 0.634645 -0.339208 +v -0.055194 1.482640 -0.339208 +v -0.356284 1.482640 -0.265532 +v 0.338929 0.634645 -0.298028 +v 0.338929 1.482640 -0.298028 +v 0.352449 0.634645 0.011650 +v 0.352449 1.482640 0.011650 +v 0.240981 0.634645 0.257457 +v 0.240981 1.482640 0.257457 +v -0.011650 0.634645 0.352450 +v -0.011650 1.482640 0.352450 +v -0.257458 0.634645 0.240982 +v -0.257458 1.482640 0.240982 +v -0.352450 0.634645 -0.011650 +v -0.352450 1.482640 -0.011650 +v -0.240982 0.634645 -0.257457 +v -0.240982 1.482640 -0.257457 +v 0.011650 0.634645 -0.352450 +v 0.011650 1.482640 -0.352450 +v 0.257457 0.634645 -0.240982 +v 0.257457 1.482640 -0.240982 +v 0.450397 1.482640 0.028921 +v 0.450397 0.634645 0.028921 +v 0.298028 1.482640 0.338929 +v 0.298028 0.634645 0.338929 +v -0.028921 1.482640 0.450397 +v -0.028921 0.634645 0.450397 +v -0.338929 1.482640 0.298028 +v -0.338929 0.634645 0.298028 +v -0.450397 1.482640 -0.028921 +v -0.450397 0.634645 -0.028921 +v -0.298029 1.482640 -0.338929 +v -0.298029 0.634645 -0.338929 +v 0.028921 1.482640 -0.450397 +v 0.028921 0.634645 -0.450397 +v 0.329937 0.634645 -0.297636 +v 0.343458 0.634645 0.012043 +v 0.343458 1.482640 0.012043 +v 0.329937 1.482640 -0.297636 +v 0.443761 0.634645 0.022841 +v 0.234346 0.634645 0.251377 +v 0.234346 1.482640 0.251377 +v 0.443761 1.482640 0.022841 +v 0.297636 0.634645 0.329937 +v -0.012043 0.634645 0.343458 +v -0.012043 1.482640 0.343458 +v 0.297636 1.482640 0.329937 +v -0.022841 0.634645 0.443761 +v -0.251377 0.634645 0.234346 +v -0.251377 1.482640 0.234346 +v -0.022841 1.482640 0.443761 +v -0.329938 0.634645 0.297636 +v -0.343458 0.634645 -0.012043 +v -0.343458 1.482640 -0.012043 +v -0.329938 1.482640 0.297636 +v -0.443762 0.634645 -0.022841 +v -0.234346 0.634645 -0.251377 +v -0.234346 1.482640 -0.251377 +v -0.443762 1.482640 -0.022841 +v 0.022840 0.634645 -0.443761 +v 0.251377 0.634645 -0.234346 +v 0.251377 1.482640 -0.234346 +v 0.022840 1.482640 -0.443761 +v -0.297636 0.634645 -0.329937 +v 0.012042 0.634645 -0.343458 +v 0.012042 1.482640 -0.343458 +v -0.297636 1.482640 -0.329937 +v 0.191342 0.625000 -0.461940 +v 0.000000 0.625000 -0.500000 +v -0.191342 0.625000 -0.461940 +v -0.353553 0.625000 -0.353554 +v -0.461940 0.625000 -0.191342 +v -0.500000 0.625000 0.000000 +v -0.461940 0.625000 0.191342 +v -0.353554 0.625000 0.353553 +v -0.191342 0.625000 0.461940 +v -0.000000 0.625000 0.500000 +v 0.191342 0.625000 0.461940 +v 0.353553 0.625000 0.353554 +v 0.461940 0.625000 0.191342 +v 0.500000 0.625000 0.000000 +v 0.461940 0.625000 -0.191342 +v 0.353553 0.625000 -0.353554 +v 0.191342 0.656250 -0.461940 +v 0.000000 0.656250 -0.500000 +v -0.191342 0.656250 -0.461940 +v -0.353553 0.656250 -0.353554 +v -0.461940 0.656250 -0.191342 +v -0.500000 0.656250 0.000000 +v -0.461940 0.656250 0.191342 +v -0.353554 0.656250 0.353553 +v -0.191342 0.656250 0.461940 +v -0.000000 0.656250 0.500000 +v 0.191342 0.656250 0.461940 +v 0.353553 0.656250 0.353554 +v 0.461940 0.656250 0.191342 +v 0.500000 0.656250 0.000000 +v 0.461940 0.656250 -0.191342 +v 0.353553 0.656250 -0.353554 +v 0.191342 1.496094 -0.461940 +v 0.000000 1.496094 -0.500000 +v -0.191342 1.496094 -0.461940 +v -0.353553 1.496094 -0.353554 +v -0.461940 1.496094 -0.191342 +v -0.500000 1.496094 -0.000000 +v -0.461940 1.496094 0.191342 +v -0.353554 1.496094 0.353553 +v -0.191342 1.496094 0.461940 +v -0.000000 1.496094 0.500000 +v 0.191342 1.496094 0.461940 +v 0.353553 1.496094 0.353553 +v 0.461940 1.496094 0.191342 +v 0.500000 1.496094 0.000000 +v 0.461940 1.496094 -0.191342 +v 0.353553 1.496094 -0.353554 +v 0.191342 1.464844 -0.461940 +v 0.000000 1.464844 -0.500000 +v -0.191342 1.464844 -0.461940 +v -0.353553 1.464844 -0.353554 +v -0.461940 1.464844 -0.191342 +v -0.500000 1.464844 -0.000000 +v -0.461940 1.464844 0.191342 +v -0.353554 1.464844 0.353553 +v -0.191342 1.464844 0.461940 +v -0.000000 1.464844 0.500000 +v 0.191342 1.464844 0.461940 +v 0.353553 1.464844 0.353553 +v 0.461940 1.464844 0.191342 +v 0.500000 1.464844 0.000000 +v 0.461940 1.464844 -0.191342 +v 0.353553 1.464844 -0.353554 +v 0.277785 0.625000 -0.415735 +v 0.097545 0.625000 -0.490393 +v -0.097545 0.625000 -0.490393 +v -0.277785 0.625000 -0.415735 +v -0.415735 0.625000 -0.277785 +v -0.490393 0.625000 -0.097545 +v -0.490393 0.625000 0.097545 +v -0.415735 0.625000 0.277785 +v -0.277785 0.625000 0.415735 +v -0.097545 0.625000 0.490393 +v 0.097545 0.625000 0.490393 +v 0.277785 0.625000 0.415735 +v 0.415735 0.625000 0.277785 +v 0.490393 0.625000 0.097545 +v 0.490393 0.625000 -0.097545 +v 0.415735 0.625000 -0.277785 +v 0.277785 0.656250 -0.415735 +v 0.097545 0.656250 -0.490393 +v -0.097545 0.656250 -0.490393 +v -0.277785 0.656250 -0.415735 +v -0.415735 0.656250 -0.277785 +v -0.490393 0.656250 -0.097545 +v -0.490393 0.656250 0.097545 +v -0.415735 0.656250 0.277785 +v -0.277785 0.656250 0.415735 +v -0.097545 0.656250 0.490393 +v 0.097545 0.656250 0.490393 +v 0.277785 0.656250 0.415735 +v 0.415735 0.656250 0.277785 +v 0.490393 0.656250 0.097545 +v 0.490393 0.656250 -0.097545 +v 0.415735 0.656250 -0.277785 +v 0.277785 1.496094 -0.415735 +v 0.097545 1.496094 -0.490393 +v -0.097545 1.496094 -0.490393 +v -0.277785 1.496094 -0.415735 +v -0.415735 1.496094 -0.277785 +v -0.490393 1.496094 -0.097545 +v -0.490393 1.496094 0.097545 +v -0.415735 1.496094 0.277785 +v -0.277785 1.496094 0.415735 +v -0.097545 1.496094 0.490393 +v 0.097545 1.496094 0.490393 +v 0.277785 1.496094 0.415735 +v 0.415735 1.496094 0.277785 +v 0.490393 1.496094 0.097545 +v 0.490393 1.496094 -0.097545 +v 0.415735 1.496094 -0.277785 +v 0.277785 1.464844 -0.415735 +v 0.097545 1.464844 -0.490393 +v -0.097545 1.464844 -0.490393 +v -0.277785 1.464844 -0.415735 +v -0.415735 1.464844 -0.277785 +v -0.490393 1.464844 -0.097545 +v -0.490393 1.464844 0.097545 +v -0.415735 1.464844 0.277785 +v -0.277785 1.464844 0.415735 +v -0.097545 1.464844 0.490393 +v 0.097545 1.464844 0.490393 +v 0.277785 1.464844 0.415735 +v 0.415735 1.464844 0.277785 +v 0.490393 1.464844 0.097545 +v 0.490393 1.464844 -0.097545 +v 0.415735 1.464844 -0.277785 +v 0.353553 0.625000 -0.353553 +v 0.191342 0.625000 -0.461940 +v 0.000000 0.625000 -0.500000 +v -0.191342 0.625000 -0.461940 +v -0.353553 0.625000 -0.353554 +v -0.461940 0.625000 -0.191342 +v -0.500000 0.625000 0.000000 +v -0.461940 0.625000 0.191342 +v -0.353554 0.625000 0.353553 +v -0.191342 0.625000 0.461940 +v -0.000001 0.625000 0.500000 +v 0.191341 0.625000 0.461940 +v 0.353553 0.625000 0.353554 +v 0.461940 0.625000 0.191342 +v 0.500000 0.625000 0.000000 +v 0.461940 0.625000 -0.191342 +v 0.353553 0.656250 -0.353553 +v 0.191342 0.656250 -0.461940 +v 0.000000 0.656250 -0.500000 +v -0.191342 0.656250 -0.461940 +v -0.353553 0.656250 -0.353554 +v -0.461940 0.656250 -0.191342 +v -0.500000 0.656250 0.000000 +v -0.461940 0.656250 0.191342 +v -0.353554 0.656250 0.353553 +v -0.191342 0.656250 0.461940 +v -0.000001 0.656250 0.500000 +v 0.191341 0.656250 0.461940 +v 0.353553 0.656250 0.353554 +v 0.461940 0.656250 0.191342 +v 0.500000 0.656250 0.000000 +v 0.461940 0.656250 -0.191342 +v 0.353553 1.496094 -0.353553 +v 0.191341 1.496094 -0.461940 +v -0.000001 1.496094 -0.500000 +v -0.191342 1.496094 -0.461940 +v -0.353554 1.496094 -0.353554 +v -0.461940 1.496094 -0.191342 +v -0.500000 1.496094 0.000000 +v -0.461940 1.496094 0.191342 +v -0.353554 1.496094 0.353553 +v -0.191342 1.496094 0.461940 +v -0.000001 1.496094 0.500000 +v 0.191341 1.496094 0.461940 +v 0.353553 1.496094 0.353554 +v 0.461939 1.496094 0.191342 +v 0.500000 1.496094 0.000000 +v 0.461939 1.496094 -0.191342 +v 0.353553 1.464844 -0.353553 +v 0.191341 1.464844 -0.461940 +v -0.000001 1.464844 -0.500000 +v -0.191342 1.464844 -0.461940 +v -0.353554 1.464844 -0.353554 +v -0.461940 1.464844 -0.191342 +v -0.500000 1.464844 0.000000 +v -0.461940 1.464844 0.191342 +v -0.353554 1.464844 0.353553 +v -0.191342 1.464844 0.461940 +v -0.000001 1.464844 0.500000 +v 0.191341 1.464844 0.461940 +v 0.353553 1.464844 0.353554 +v 0.461939 1.464844 0.191342 +v 0.500000 1.464844 0.000000 +v 0.461939 1.464844 -0.191342 +v 0.415735 0.625000 -0.277785 +v 0.277785 0.625000 -0.415735 +v 0.097545 0.625000 -0.490393 +v -0.097545 0.625000 -0.490393 +v -0.277785 0.625000 -0.415735 +v -0.415735 0.625000 -0.277785 +v -0.490393 0.625000 -0.097545 +v -0.490393 0.625000 0.097545 +v -0.415735 0.625000 0.277785 +v -0.277785 0.625000 0.415735 +v -0.097545 0.625000 0.490393 +v 0.097545 0.625000 0.490393 +v 0.277785 0.625000 0.415735 +v 0.415735 0.625000 0.277785 +v 0.490393 0.625000 0.097545 +v 0.490393 0.625000 -0.097545 +v 0.415735 0.656250 -0.277785 +v 0.277785 0.656250 -0.415735 +v 0.097545 0.656250 -0.490393 +v -0.097545 0.656250 -0.490393 +v -0.277785 0.656250 -0.415735 +v -0.415735 0.656250 -0.277785 +v -0.490393 0.656250 -0.097545 +v -0.490393 0.656250 0.097545 +v -0.415735 0.656250 0.277785 +v -0.277785 0.656250 0.415735 +v -0.097545 0.656250 0.490393 +v 0.097545 0.656250 0.490393 +v 0.277785 0.656250 0.415735 +v 0.415735 0.656250 0.277785 +v 0.490393 0.656250 0.097545 +v 0.490393 0.656250 -0.097545 +v 0.415735 1.496094 -0.277785 +v 0.277785 1.496094 -0.415735 +v 0.097545 1.496094 -0.490393 +v -0.097545 1.496094 -0.490393 +v -0.277785 1.496094 -0.415735 +v -0.415734 1.496094 -0.277785 +v -0.490392 1.496094 -0.097545 +v -0.490392 1.496094 0.097545 +v -0.415735 1.496094 0.277785 +v -0.277785 1.496094 0.415735 +v -0.097545 1.496094 0.490392 +v 0.097545 1.496094 0.490393 +v 0.277785 1.496094 0.415735 +v 0.415735 1.496094 0.277785 +v 0.490393 1.496094 0.097545 +v 0.490393 1.496094 -0.097545 +v 0.415735 1.464844 -0.277785 +v 0.277785 1.464844 -0.415735 +v 0.097545 1.464844 -0.490393 +v -0.097545 1.464844 -0.490393 +v -0.277785 1.464844 -0.415735 +v -0.415734 1.464844 -0.277785 +v -0.490392 1.464844 -0.097545 +v -0.490392 1.464844 0.097545 +v -0.415735 1.464844 0.277785 +v -0.277785 1.464844 0.415735 +v -0.097545 1.464844 0.490392 +v 0.097545 1.464844 0.490393 +v 0.277785 1.464844 0.415735 +v 0.415735 1.464844 0.277785 +v 0.490393 1.464844 0.097545 +v 0.490393 1.464844 -0.097545 +v 0.461940 0.625000 -0.191342 +v 0.353553 0.625000 -0.353554 +v 0.191342 0.625000 -0.461940 +v 0.000000 0.625000 -0.500000 +v -0.191342 0.625000 -0.461940 +v -0.353553 0.625000 -0.353554 +v -0.461940 0.625000 -0.191342 +v -0.500000 0.625000 -0.000000 +v -0.461940 0.625000 0.191341 +v -0.353554 0.625000 0.353553 +v -0.191342 0.625000 0.461940 +v 0.000000 0.625000 0.500000 +v 0.191342 0.625000 0.461940 +v 0.353553 0.625000 0.353553 +v 0.461940 0.625000 0.191342 +v 0.500000 0.625000 -0.000000 +v 0.461940 0.656250 -0.191342 +v 0.353553 0.656250 -0.353554 +v 0.191342 0.656250 -0.461940 +v 0.000000 0.656250 -0.500000 +v -0.191342 0.656250 -0.461940 +v -0.353553 0.656250 -0.353554 +v -0.461940 0.656250 -0.191342 +v -0.500000 0.656250 -0.000000 +v -0.461940 0.656250 0.191341 +v -0.353554 0.656250 0.353553 +v -0.191342 0.656250 0.461940 +v 0.000000 0.656250 0.500000 +v 0.191342 0.656250 0.461940 +v 0.353553 0.656250 0.353553 +v 0.461940 0.656250 0.191342 +v 0.500000 0.656250 -0.000000 +v 0.461940 1.496094 -0.191342 +v 0.353553 1.496094 -0.353554 +v 0.191342 1.496094 -0.461940 +v 0.000000 1.496094 -0.500000 +v -0.191342 1.496094 -0.461940 +v -0.353553 1.496094 -0.353554 +v -0.461940 1.496094 -0.191342 +v -0.500000 1.496094 -0.000000 +v -0.461940 1.496094 0.191342 +v -0.353554 1.496094 0.353553 +v -0.191342 1.496094 0.461940 +v 0.000000 1.496094 0.500000 +v 0.191342 1.496094 0.461940 +v 0.353553 1.496094 0.353553 +v 0.461940 1.496094 0.191342 +v 0.500000 1.496094 -0.000000 +v 0.461940 1.464844 -0.191342 +v 0.353553 1.464844 -0.353554 +v 0.191342 1.464844 -0.461940 +v 0.000000 1.464844 -0.500000 +v -0.191342 1.464844 -0.461940 +v -0.353553 1.464844 -0.353554 +v -0.461940 1.464844 -0.191342 +v -0.500000 1.464844 -0.000000 +v -0.461940 1.464844 0.191342 +v -0.353554 1.464844 0.353553 +v -0.191342 1.464844 0.461940 +v 0.000000 1.464844 0.500000 +v 0.191342 1.464844 0.461940 +v 0.353553 1.464844 0.353553 +v 0.461940 1.464844 0.191342 +v 0.500000 1.464844 -0.000000 +v 0.490393 0.625000 -0.097545 +v 0.415735 0.625000 -0.277785 +v 0.277786 0.625000 -0.415735 +v 0.097545 0.625000 -0.490392 +v -0.097545 0.625000 -0.490392 +v -0.277785 0.625000 -0.415735 +v -0.415734 0.625000 -0.277785 +v -0.490392 0.625000 -0.097545 +v -0.490392 0.625000 0.097545 +v -0.415734 0.625000 0.277785 +v -0.277785 0.625000 0.415735 +v -0.097545 0.625000 0.490393 +v 0.097546 0.625000 0.490393 +v 0.277786 0.625000 0.415735 +v 0.415735 0.625000 0.277785 +v 0.490393 0.625000 0.097545 +v 0.490393 0.656250 -0.097545 +v 0.415735 0.656250 -0.277785 +v 0.277786 0.656250 -0.415735 +v 0.097545 0.656250 -0.490392 +v -0.097545 0.656250 -0.490392 +v -0.277785 0.656250 -0.415735 +v -0.415734 0.656250 -0.277785 +v -0.490392 0.656250 -0.097545 +v -0.490392 0.656250 0.097545 +v -0.415734 0.656250 0.277785 +v -0.277785 0.656250 0.415735 +v -0.097545 0.656250 0.490393 +v 0.097546 0.656250 0.490393 +v 0.277786 0.656250 0.415735 +v 0.415735 0.656250 0.277785 +v 0.490393 0.656250 0.097545 +v 0.490392 1.496094 -0.097545 +v 0.415735 1.496094 -0.277785 +v 0.277785 1.496094 -0.415735 +v 0.097545 1.496094 -0.490393 +v -0.097546 1.496094 -0.490393 +v -0.277785 1.496094 -0.415735 +v -0.415735 1.496094 -0.277785 +v -0.490393 1.496094 -0.097545 +v -0.490393 1.496094 0.097545 +v -0.415735 1.496094 0.277785 +v -0.277785 1.496094 0.415735 +v -0.097546 1.496094 0.490393 +v 0.097545 1.496094 0.490393 +v 0.277785 1.496094 0.415735 +v 0.415735 1.496094 0.277785 +v 0.490392 1.496094 0.097545 +v 0.490392 1.464844 -0.097545 +v 0.415735 1.464844 -0.277785 +v 0.277785 1.464844 -0.415735 +v 0.097545 1.464844 -0.490393 +v -0.097546 1.464844 -0.490393 +v -0.277785 1.464844 -0.415735 +v -0.415735 1.464844 -0.277785 +v -0.490393 1.464844 -0.097545 +v -0.490393 1.464844 0.097545 +v -0.415735 1.464844 0.277785 +v -0.277785 1.464844 0.415735 +v -0.097546 1.464844 0.490393 +v 0.097545 1.464844 0.490393 +v 0.277785 1.464844 0.415735 +v 0.415735 1.464844 0.277785 +v 0.490392 1.464844 0.097545 +v 0.500000 0.625000 0.000000 +v 0.461940 0.625000 -0.191342 +v 0.353554 0.625000 -0.353553 +v 0.191343 0.625000 -0.461939 +v 0.000001 0.625000 -0.500000 +v -0.191341 0.625000 -0.461939 +v -0.353553 0.625000 -0.353553 +v -0.461939 0.625000 -0.191342 +v -0.500000 0.625000 0.000000 +v -0.461939 0.625000 0.191342 +v -0.353553 0.625000 0.353554 +v -0.191341 0.625000 0.461940 +v 0.000001 0.625000 0.500000 +v 0.191343 0.625000 0.461940 +v 0.353555 0.625000 0.353554 +v 0.461940 0.625000 0.191342 +v 0.500000 0.656250 0.000000 +v 0.461940 0.656250 -0.191342 +v 0.353554 0.656250 -0.353553 +v 0.191343 0.656250 -0.461939 +v 0.000001 0.656250 -0.500000 +v -0.191341 0.656250 -0.461939 +v -0.353553 0.656250 -0.353553 +v -0.461939 0.656250 -0.191342 +v -0.500000 0.656250 0.000000 +v -0.461939 0.656250 0.191342 +v -0.353553 0.656250 0.353554 +v -0.191341 0.656250 0.461940 +v 0.000001 0.656250 0.500000 +v 0.191343 0.656250 0.461940 +v 0.353555 0.656250 0.353554 +v 0.461940 0.656250 0.191342 +v 0.500000 1.496094 0.000000 +v 0.461940 1.496094 -0.191342 +v 0.353554 1.496094 -0.353553 +v 0.191343 1.496094 -0.461939 +v 0.000001 1.496094 -0.500000 +v -0.191341 1.496094 -0.461939 +v -0.353553 1.496094 -0.353553 +v -0.461939 1.496094 -0.191342 +v -0.500000 1.496094 0.000000 +v -0.461939 1.496094 0.191342 +v -0.353553 1.496094 0.353554 +v -0.191341 1.496094 0.461940 +v 0.000001 1.496094 0.500000 +v 0.191343 1.496094 0.461940 +v 0.353555 1.496094 0.353554 +v 0.461940 1.496094 0.191342 +v 0.500000 1.464844 0.000000 +v 0.461940 1.464844 -0.191342 +v 0.353554 1.464844 -0.353553 +v 0.191343 1.464844 -0.461939 +v 0.000001 1.464844 -0.500000 +v -0.191341 1.464844 -0.461939 +v -0.353553 1.464844 -0.353553 +v -0.461939 1.464844 -0.191342 +v -0.500000 1.464844 0.000000 +v -0.461939 1.464844 0.191342 +v -0.353553 1.464844 0.353554 +v -0.191341 1.464844 0.461940 +v 0.000001 1.464844 0.500000 +v 0.191343 1.464844 0.461940 +v 0.353555 1.464844 0.353554 +v 0.461940 1.464844 0.191342 +vt 1.000000 0.000000 +vt 1.000000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.000000 +vt 0.050068 0.998878 +vt 0.074932 0.998878 +vt 0.097903 0.922758 +vt 0.115485 0.782105 +vt 0.125000 0.598334 +vt 0.125000 0.399421 +vt 0.115485 0.215651 +vt 0.097903 0.074998 +vt 0.074932 -0.001122 +vt 0.050068 -0.001122 +vt 0.027097 0.074998 +vt 0.009515 0.215650 +vt 0.000000 0.399421 +vt 0.000000 0.598334 +vt 0.009515 0.782105 +vt 0.027097 0.922758 +vt 0.175068 1.000041 +vt 0.199932 1.000041 +vt 0.222903 0.923920 +vt 0.240485 0.783268 +vt 0.250000 0.599497 +vt 0.250000 0.400584 +vt 0.240485 0.216814 +vt 0.222903 0.076161 +vt 0.199932 0.000041 +vt 0.175068 0.000041 +vt 0.152097 0.076161 +vt 0.134515 0.216813 +vt 0.125000 0.400584 +vt 0.125000 0.599497 +vt 0.134515 0.783268 +vt 0.152097 0.923920 +vt 0.300068 1.000041 +vt 0.324932 1.000041 +vt 0.347903 0.923920 +vt 0.365485 0.783268 +vt 0.375000 0.599497 +vt 0.375000 0.400584 +vt 0.365485 0.216814 +vt 0.347903 0.076161 +vt 0.324932 0.000041 +vt 0.300068 0.000041 +vt 0.277097 0.076161 +vt 0.259515 0.216813 +vt 0.259515 0.783268 +vt 0.277097 0.923920 +vt 0.425068 1.000041 +vt 0.449932 1.000041 +vt 0.472903 0.923920 +vt 0.490485 0.783268 +vt 0.500000 0.599497 +vt 0.500000 0.400584 +vt 0.490485 0.216814 +vt 0.472903 0.076161 +vt 0.449932 0.000041 +vt 0.425068 0.000041 +vt 0.402097 0.076161 +vt 0.384515 0.216813 +vt 0.384515 0.783268 +vt 0.402097 0.923920 +vt 0.550068 1.000041 +vt 0.574932 1.000041 +vt 0.597903 0.923920 +vt 0.615485 0.783268 +vt 0.625000 0.599497 +vt 0.625000 0.400584 +vt 0.615485 0.216814 +vt 0.597903 0.076161 +vt 0.574932 0.000041 +vt 0.550068 0.000041 +vt 0.527097 0.076161 +vt 0.509515 0.216813 +vt 0.509515 0.783268 +vt 0.527097 0.923920 +vt 0.675068 1.000041 +vt 0.699932 1.000041 +vt 0.722903 0.923920 +vt 0.740485 0.783268 +vt 0.750000 0.599497 +vt 0.750000 0.400584 +vt 0.740485 0.216814 +vt 0.722903 0.076161 +vt 0.699932 0.000041 +vt 0.675068 0.000041 +vt 0.652097 0.076161 +vt 0.634515 0.216813 +vt 0.634515 0.783268 +vt 0.652097 0.923920 +vt 0.800068 1.000041 +vt 0.824932 1.000041 +vt 0.847903 0.923920 +vt 0.865485 0.783268 +vt 0.875000 0.599497 +vt 0.875000 0.400584 +vt 0.865485 0.216814 +vt 0.847903 0.076161 +vt 0.824932 0.000041 +vt 0.800068 0.000041 +vt 0.777097 0.076161 +vt 0.759515 0.216813 +vt 0.759515 0.783268 +vt 0.777097 0.923920 +vt 0.925068 1.000041 +vt 0.949932 1.000041 +vt 0.972903 0.923920 +vt 0.990485 0.783268 +vt 1.000000 0.599497 +vt 1.000000 0.400584 +vt 0.990485 0.216814 +vt 0.972903 0.076161 +vt 0.949932 0.000041 +vt 0.925068 0.000041 +vt 0.902097 0.076161 +vt 0.884515 0.216813 +vt 0.884515 0.783268 +vt 0.902097 0.923920 +vt 0.062500 0.343750 +vt 0.066406 0.343750 +vt 0.066406 0.375000 +vt 0.062500 0.375000 +vt 0.066406 0.406250 +vt 0.062500 0.406250 +vt 0.062500 0.531250 +vt 0.066406 0.531250 +vt 0.066406 0.500000 +vt 0.062500 0.500000 +vt 0.066406 0.468750 +vt 0.062500 0.468750 +vt 0.066406 0.437500 +vt 0.062500 0.437500 +vt 0.074219 0.468750 +vt 0.078125 0.437500 +vt 0.082031 0.437500 +vt 0.085938 0.468750 +vt 0.085938 0.500000 +vt 0.082031 0.531250 +vt 0.078125 0.531250 +vt 0.074219 0.500000 +vt 0.062500 0.312500 +vt 0.066406 0.312500 +vt 0.062500 0.281250 +vt 0.066406 0.281250 +vt 0.023438 0.750000 +vt 0.023438 0.875000 +vt 0.019531 0.875000 +vt 0.019531 0.750000 +vt 0.023438 0.625000 +vt 0.019531 0.625000 +vt 0.023438 0.500000 +vt 0.019531 0.500000 +vt 0.023438 0.375000 +vt 0.019531 0.375000 +vt 0.023438 0.250000 +vt 0.019531 0.250000 +vt 0.035156 0.500000 +vt 0.035156 0.625000 +vt 0.027344 0.625000 +vt 0.027344 0.500000 +vt 0.023438 0.125000 +vt 0.019531 0.125000 +vt 0.023438 0.000000 +vt 0.019531 0.000000 +vt 0.035156 0.375000 +vt 0.027344 0.375000 +vt 0.035156 0.875000 +vt 0.035156 1.000000 +vt 0.027344 1.000000 +vt 0.027344 0.875000 +vt 0.035156 0.250000 +vt 0.027344 0.250000 +vt 0.035156 0.750000 +vt 0.027344 0.750000 +vt 0.035156 0.125000 +vt 0.027344 0.125000 +vt 0.035156 0.000000 +vt 0.027344 0.000000 +vt 0.023438 1.000000 +vt 0.019531 1.000000 +vt 0.097656 0.593750 +vt 0.097656 0.968750 +vt 0.082031 0.968750 +vt 0.082031 0.593750 +vt 0.078125 0.593750 +vt 0.078125 0.968750 +vt 0.062500 0.968750 +vt 0.062500 0.593750 +vt 0.046875 0.000000 +vt 0.054688 0.000000 +vt 0.054688 0.125000 +vt 0.046875 0.125000 +vt 0.039062 0.875000 +vt 0.042969 0.875000 +vt 0.042969 1.000000 +vt 0.039062 1.000000 +vt 0.039062 0.750000 +vt 0.042969 0.750000 +vt 0.039062 0.625000 +vt 0.042969 0.625000 +vt 0.039062 0.500000 +vt 0.042969 0.500000 +vt 0.046875 0.750000 +vt 0.054688 0.750000 +vt 0.054688 0.875000 +vt 0.046875 0.875000 +vt 0.039062 0.375000 +vt 0.042969 0.375000 +vt 0.039062 0.250000 +vt 0.042969 0.250000 +vt 0.046875 0.625000 +vt 0.054688 0.625000 +vt 0.039062 0.125000 +vt 0.042969 0.125000 +vt 0.046875 0.500000 +vt 0.054688 0.500000 +vt 0.039062 0.000000 +vt 0.042969 0.000000 +vt 0.046875 0.375000 +vt 0.054688 0.375000 +vt 0.054688 1.000000 +vt 0.046875 1.000000 +vt 0.046875 0.250000 +vt 0.054688 0.250000 +vt 0.003906 0.937500 +vt 0.007812 0.937500 +vt 0.007812 0.968750 +vt 0.003906 0.968750 +vt 0.003906 0.718750 +vt 0.007812 0.718750 +vt 0.007812 0.750000 +vt 0.003906 0.750000 +vt 0.007812 0.781250 +vt 0.003906 0.781250 +vt 0.007812 0.812500 +vt 0.003906 0.812500 +vt 0.007812 0.843750 +vt 0.003906 0.843750 +vt 0.007812 0.875000 +vt 0.003906 0.875000 +vt 0.003906 0.906250 +vt 0.007812 0.906250 +vt 0.222656 0.593750 +vt 0.222656 0.968750 +vt 0.207031 0.968750 +vt 0.207031 0.593750 +vt 0.203125 0.593750 +vt 0.203125 0.968750 +vt 0.187500 0.968750 +vt 0.187500 0.593750 +vt 0.347656 0.593750 +vt 0.347656 0.968750 +vt 0.332031 0.968750 +vt 0.332031 0.593750 +vt 0.328125 0.593750 +vt 0.328125 0.968750 +vt 0.312500 0.968750 +vt 0.312500 0.593750 +vt 0.472656 0.593750 +vt 0.472656 0.968750 +vt 0.457031 0.968750 +vt 0.457031 0.593750 +vt 0.453125 0.593750 +vt 0.453125 0.968750 +vt 0.437500 0.968750 +vt 0.437500 0.593750 +vt 0.148438 0.750000 +vt 0.148438 0.875000 +vt 0.144531 0.875000 +vt 0.144531 0.750000 +vt 0.148438 0.625000 +vt 0.144531 0.625000 +vt 0.148438 0.500000 +vt 0.144531 0.500000 +vt 0.148438 0.375000 +vt 0.144531 0.375000 +vt 0.148438 0.250000 +vt 0.144531 0.250000 +vt 0.160156 0.500000 +vt 0.160156 0.625000 +vt 0.152344 0.625000 +vt 0.152344 0.500000 +vt 0.148438 0.125000 +vt 0.144531 0.125000 +vt 0.148438 0.000000 +vt 0.144531 0.000000 +vt 0.160156 0.375000 +vt 0.152344 0.375000 +vt 0.160156 0.875000 +vt 0.160156 1.000000 +vt 0.152344 1.000000 +vt 0.152344 0.875000 +vt 0.160156 0.250000 +vt 0.152344 0.250000 +vt 0.160156 0.750000 +vt 0.152344 0.750000 +vt 0.160156 0.125000 +vt 0.152344 0.125000 +vt 0.160156 0.000000 +vt 0.152344 0.000000 +vt 0.148438 1.000000 +vt 0.144531 1.000000 +vt 0.171875 0.000000 +vt 0.179688 0.000000 +vt 0.179688 0.125000 +vt 0.171875 0.125000 +vt 0.164062 0.875000 +vt 0.167969 0.875000 +vt 0.167969 1.000000 +vt 0.164062 1.000000 +vt 0.164062 0.750000 +vt 0.167969 0.750000 +vt 0.164062 0.625000 +vt 0.167969 0.625000 +vt 0.164062 0.500000 +vt 0.167969 0.500000 +vt 0.171875 0.750000 +vt 0.179688 0.750000 +vt 0.179688 0.875000 +vt 0.171875 0.875000 +vt 0.164062 0.375000 +vt 0.167969 0.375000 +vt 0.164062 0.250000 +vt 0.167969 0.250000 +vt 0.171875 0.625000 +vt 0.179688 0.625000 +vt 0.164062 0.125000 +vt 0.167969 0.125000 +vt 0.171875 0.500000 +vt 0.179688 0.500000 +vt 0.164062 0.000000 +vt 0.167969 0.000000 +vt 0.171875 0.375000 +vt 0.179688 0.375000 +vt 0.179688 1.000000 +vt 0.171875 1.000000 +vt 0.171875 0.250000 +vt 0.179688 0.250000 +vt 0.273438 0.750000 +vt 0.273438 0.875000 +vt 0.269531 0.875000 +vt 0.269531 0.750000 +vt 0.273438 0.625000 +vt 0.269531 0.625000 +vt 0.273438 0.500000 +vt 0.269531 0.500000 +vt 0.273438 0.375000 +vt 0.269531 0.375000 +vt 0.273438 0.250000 +vt 0.269531 0.250000 +vt 0.285156 0.500000 +vt 0.285156 0.625000 +vt 0.277344 0.625000 +vt 0.277344 0.500000 +vt 0.273438 0.125000 +vt 0.269531 0.125000 +vt 0.273438 0.000000 +vt 0.269531 0.000000 +vt 0.285156 0.375000 +vt 0.277344 0.375000 +vt 0.285156 0.875000 +vt 0.285156 1.000000 +vt 0.277344 1.000000 +vt 0.277344 0.875000 +vt 0.285156 0.250000 +vt 0.277344 0.250000 +vt 0.285156 0.750000 +vt 0.277344 0.750000 +vt 0.285156 0.125000 +vt 0.277344 0.125000 +vt 0.285156 0.000000 +vt 0.277344 0.000000 +vt 0.273438 1.000000 +vt 0.269531 1.000000 +vt 0.296875 0.000000 +vt 0.304688 0.000000 +vt 0.304688 0.125000 +vt 0.296875 0.125000 +vt 0.289062 0.875000 +vt 0.292969 0.875000 +vt 0.292969 1.000000 +vt 0.289062 1.000000 +vt 0.289062 0.750000 +vt 0.292969 0.750000 +vt 0.289062 0.625000 +vt 0.292969 0.625000 +vt 0.289062 0.500000 +vt 0.292969 0.500000 +vt 0.296875 0.750000 +vt 0.304688 0.750000 +vt 0.304688 0.875000 +vt 0.296875 0.875000 +vt 0.289062 0.375000 +vt 0.292969 0.375000 +vt 0.289062 0.250000 +vt 0.292969 0.250000 +vt 0.296875 0.625000 +vt 0.304688 0.625000 +vt 0.289062 0.125000 +vt 0.292969 0.125000 +vt 0.296875 0.500000 +vt 0.304688 0.500000 +vt 0.289062 0.000000 +vt 0.292969 0.000000 +vt 0.296875 0.375000 +vt 0.304688 0.375000 +vt 0.304688 1.000000 +vt 0.296875 1.000000 +vt 0.296875 0.250000 +vt 0.304688 0.250000 +vt 0.398438 0.750000 +vt 0.398438 0.875000 +vt 0.394531 0.875000 +vt 0.394531 0.750000 +vt 0.398438 0.625000 +vt 0.394531 0.625000 +vt 0.398438 0.500000 +vt 0.394531 0.500000 +vt 0.398438 0.375000 +vt 0.394531 0.375000 +vt 0.398438 0.250000 +vt 0.394531 0.250000 +vt 0.410156 0.500000 +vt 0.410156 0.625000 +vt 0.402344 0.625000 +vt 0.402344 0.500000 +vt 0.398438 0.125000 +vt 0.394531 0.125000 +vt 0.398438 0.000000 +vt 0.394531 0.000000 +vt 0.410156 0.375000 +vt 0.402344 0.375000 +vt 0.410156 0.875000 +vt 0.410156 1.000000 +vt 0.402344 1.000000 +vt 0.402344 0.875000 +vt 0.410156 0.250000 +vt 0.402344 0.250000 +vt 0.410156 0.750000 +vt 0.402344 0.750000 +vt 0.410156 0.125000 +vt 0.402344 0.125000 +vt 0.410156 0.000000 +vt 0.402344 0.000000 +vt 0.398438 1.000000 +vt 0.394531 1.000000 +vt 0.421875 0.000000 +vt 0.429688 0.000000 +vt 0.429688 0.125000 +vt 0.421875 0.125000 +vt 0.414062 0.875000 +vt 0.417969 0.875000 +vt 0.417969 1.000000 +vt 0.414062 1.000000 +vt 0.414062 0.750000 +vt 0.417969 0.750000 +vt 0.414062 0.625000 +vt 0.417969 0.625000 +vt 0.414062 0.500000 +vt 0.417969 0.500000 +vt 0.421875 0.750000 +vt 0.429688 0.750000 +vt 0.429688 0.875000 +vt 0.421875 0.875000 +vt 0.414062 0.375000 +vt 0.417969 0.375000 +vt 0.414062 0.250000 +vt 0.417969 0.250000 +vt 0.421875 0.625000 +vt 0.429688 0.625000 +vt 0.414062 0.125000 +vt 0.417969 0.125000 +vt 0.421875 0.500000 +vt 0.429688 0.500000 +vt 0.414062 0.000000 +vt 0.417969 0.000000 +vt 0.421875 0.375000 +vt 0.429688 0.375000 +vt 0.429688 1.000000 +vt 0.421875 1.000000 +vt 0.421875 0.250000 +vt 0.429688 0.250000 +vt 0.523438 0.750000 +vt 0.523438 0.875000 +vt 0.519531 0.875000 +vt 0.519531 0.750000 +vt 0.523438 0.625000 +vt 0.519531 0.625000 +vt 0.523438 0.500000 +vt 0.519531 0.500000 +vt 0.523438 0.375000 +vt 0.519531 0.375000 +vt 0.523438 0.250000 +vt 0.519531 0.250000 +vt 0.535156 0.500000 +vt 0.535156 0.625000 +vt 0.527344 0.625000 +vt 0.527344 0.500000 +vt 0.523438 0.125000 +vt 0.519531 0.125000 +vt 0.523438 0.000000 +vt 0.519531 0.000000 +vt 0.535156 0.375000 +vt 0.527344 0.375000 +vt 0.535156 0.875000 +vt 0.535156 1.000000 +vt 0.527344 1.000000 +vt 0.527344 0.875000 +vt 0.535156 0.250000 +vt 0.527344 0.250000 +vt 0.535156 0.750000 +vt 0.527344 0.750000 +vt 0.535156 0.125000 +vt 0.527344 0.125000 +vt 0.535156 0.000000 +vt 0.527344 0.000000 +vt 0.523438 1.000000 +vt 0.519531 1.000000 +vt 0.546875 0.000000 +vt 0.554688 0.000000 +vt 0.554688 0.125000 +vt 0.546875 0.125000 +vt 0.539062 0.875000 +vt 0.542969 0.875000 +vt 0.542969 1.000000 +vt 0.539062 1.000000 +vt 0.539062 0.750000 +vt 0.542969 0.750000 +vt 0.539062 0.625000 +vt 0.542969 0.625000 +vt 0.539062 0.500000 +vt 0.542969 0.500000 +vt 0.546875 0.750000 +vt 0.554688 0.750000 +vt 0.554688 0.875000 +vt 0.546875 0.875000 +vt 0.539062 0.375000 +vt 0.542969 0.375000 +vt 0.539062 0.250000 +vt 0.542969 0.250000 +vt 0.546875 0.625000 +vt 0.554688 0.625000 +vt 0.539062 0.125000 +vt 0.542969 0.125000 +vt 0.546875 0.500000 +vt 0.554688 0.500000 +vt 0.539062 0.000000 +vt 0.542969 0.000000 +vt 0.546875 0.375000 +vt 0.554688 0.375000 +vt 0.554688 1.000000 +vt 0.546875 1.000000 +vt 0.546875 0.250000 +vt 0.554688 0.250000 +vt 0.648438 0.750000 +vt 0.648438 0.875000 +vt 0.644531 0.875000 +vt 0.644531 0.750000 +vt 0.648438 0.625000 +vt 0.644531 0.625000 +vt 0.648438 0.500000 +vt 0.644531 0.500000 +vt 0.648438 0.375000 +vt 0.644531 0.375000 +vt 0.648438 0.250000 +vt 0.644531 0.250000 +vt 0.660156 0.500000 +vt 0.660156 0.625000 +vt 0.652344 0.625000 +vt 0.652344 0.500000 +vt 0.648438 0.125000 +vt 0.644531 0.125000 +vt 0.648438 0.000000 +vt 0.644531 0.000000 +vt 0.660156 0.375000 +vt 0.652344 0.375000 +vt 0.660156 0.875000 +vt 0.660156 1.000000 +vt 0.652344 1.000000 +vt 0.652344 0.875000 +vt 0.660156 0.250000 +vt 0.652344 0.250000 +vt 0.660156 0.750000 +vt 0.652344 0.750000 +vt 0.660156 0.125000 +vt 0.652344 0.125000 +vt 0.660156 0.000000 +vt 0.652344 0.000000 +vt 0.648438 1.000000 +vt 0.644531 1.000000 +vt 0.671875 0.000000 +vt 0.679688 0.000000 +vt 0.679688 0.125000 +vt 0.671875 0.125000 +vt 0.664062 0.875000 +vt 0.667969 0.875000 +vt 0.667969 1.000000 +vt 0.664062 1.000000 +vt 0.664062 0.750000 +vt 0.667969 0.750000 +vt 0.664062 0.625000 +vt 0.667969 0.625000 +vt 0.664062 0.500000 +vt 0.667969 0.500000 +vt 0.671875 0.750000 +vt 0.679688 0.750000 +vt 0.679688 0.875000 +vt 0.671875 0.875000 +vt 0.664062 0.375000 +vt 0.667969 0.375000 +vt 0.664062 0.250000 +vt 0.667969 0.250000 +vt 0.671875 0.625000 +vt 0.679688 0.625000 +vt 0.664062 0.125000 +vt 0.667969 0.125000 +vt 0.671875 0.500000 +vt 0.679688 0.500000 +vt 0.664062 0.000000 +vt 0.667969 0.000000 +vt 0.671875 0.375000 +vt 0.679688 0.375000 +vt 0.679688 1.000000 +vt 0.671875 1.000000 +vt 0.671875 0.250000 +vt 0.679688 0.250000 +vt 0.773438 0.750000 +vt 0.773438 0.875000 +vt 0.769531 0.875000 +vt 0.769531 0.750000 +vt 0.773438 0.625000 +vt 0.769531 0.625000 +vt 0.773438 0.500000 +vt 0.769531 0.500000 +vt 0.773438 0.375000 +vt 0.769531 0.375000 +vt 0.773438 0.250000 +vt 0.769531 0.250000 +vt 0.785156 0.500000 +vt 0.785156 0.625000 +vt 0.777344 0.625000 +vt 0.777344 0.500000 +vt 0.773438 0.125000 +vt 0.769531 0.125000 +vt 0.773438 0.000000 +vt 0.769531 0.000000 +vt 0.785156 0.375000 +vt 0.777344 0.375000 +vt 0.785156 0.875000 +vt 0.785156 1.000000 +vt 0.777344 1.000000 +vt 0.777344 0.875000 +vt 0.785156 0.250000 +vt 0.777344 0.250000 +vt 0.785156 0.750000 +vt 0.777344 0.750000 +vt 0.785156 0.125000 +vt 0.777344 0.125000 +vt 0.785156 0.000000 +vt 0.777344 0.000000 +vt 0.773438 1.000000 +vt 0.769531 1.000000 +vt 0.796875 0.000000 +vt 0.804688 0.000000 +vt 0.804688 0.125000 +vt 0.796875 0.125000 +vt 0.789062 0.875000 +vt 0.792969 0.875000 +vt 0.792969 1.000000 +vt 0.789062 1.000000 +vt 0.789062 0.750000 +vt 0.792969 0.750000 +vt 0.789062 0.625000 +vt 0.792969 0.625000 +vt 0.789062 0.500000 +vt 0.792969 0.500000 +vt 0.796875 0.750000 +vt 0.804688 0.750000 +vt 0.804688 0.875000 +vt 0.796875 0.875000 +vt 0.789062 0.375000 +vt 0.792969 0.375000 +vt 0.789062 0.250000 +vt 0.792969 0.250000 +vt 0.796875 0.625000 +vt 0.804688 0.625000 +vt 0.789062 0.125000 +vt 0.792969 0.125000 +vt 0.796875 0.500000 +vt 0.804688 0.500000 +vt 0.789062 0.000000 +vt 0.792969 0.000000 +vt 0.796875 0.375000 +vt 0.804688 0.375000 +vt 0.804688 1.000000 +vt 0.796875 1.000000 +vt 0.796875 0.250000 +vt 0.804688 0.250000 +vt 0.898438 0.750000 +vt 0.898438 0.875000 +vt 0.894531 0.875000 +vt 0.894531 0.750000 +vt 0.898438 0.625000 +vt 0.894531 0.625000 +vt 0.898438 0.500000 +vt 0.894531 0.500000 +vt 0.898438 0.375000 +vt 0.894531 0.375000 +vt 0.898438 0.250000 +vt 0.894531 0.250000 +vt 0.910156 0.500000 +vt 0.910156 0.625000 +vt 0.902344 0.625000 +vt 0.902344 0.500000 +vt 0.898438 0.125000 +vt 0.894531 0.125000 +vt 0.898438 0.000000 +vt 0.894531 0.000000 +vt 0.910156 0.375000 +vt 0.902344 0.375000 +vt 0.910156 0.875000 +vt 0.910156 1.000000 +vt 0.902344 1.000000 +vt 0.902344 0.875000 +vt 0.910156 0.250000 +vt 0.902344 0.250000 +vt 0.910156 0.750000 +vt 0.902344 0.750000 +vt 0.910156 0.125000 +vt 0.902344 0.125000 +vt 0.910156 0.000000 +vt 0.902344 0.000000 +vt 0.898438 1.000000 +vt 0.894531 1.000000 +vt 0.921875 0.000000 +vt 0.929688 0.000000 +vt 0.929688 0.125000 +vt 0.921875 0.125000 +vt 0.914062 0.875000 +vt 0.917969 0.875000 +vt 0.917969 1.000000 +vt 0.914062 1.000000 +vt 0.914062 0.750000 +vt 0.917969 0.750000 +vt 0.914062 0.625000 +vt 0.917969 0.625000 +vt 0.914062 0.500000 +vt 0.917969 0.500000 +vt 0.921875 0.750000 +vt 0.929688 0.750000 +vt 0.929688 0.875000 +vt 0.921875 0.875000 +vt 0.914062 0.375000 +vt 0.917969 0.375000 +vt 0.914062 0.250000 +vt 0.917969 0.250000 +vt 0.921875 0.625000 +vt 0.929688 0.625000 +vt 0.914062 0.125000 +vt 0.917969 0.125000 +vt 0.921875 0.500000 +vt 0.929688 0.500000 +vt 0.914062 0.000000 +vt 0.917969 0.000000 +vt 0.921875 0.375000 +vt 0.929688 0.375000 +vt 0.929688 1.000000 +vt 0.921875 1.000000 +vt 0.921875 0.250000 +vt 0.929688 0.250000 +vn 1.000000 0.000000 0.000000 +vn 0.000000 0.000000 1.000000 +vn -1.000000 0.000000 0.000000 +vn 0.000000 0.000000 -1.000000 +vn 0.000000 -1.000000 0.000000 +vn 0.000000 1.000000 0.000000 +vn 0.382700 0.000000 -0.923900 +vn 0.923900 0.000000 -0.382700 +vn 0.923900 0.000000 0.382700 +vn 0.382700 0.000000 0.923900 +vn -0.382700 0.000000 0.923900 +vn -0.923900 0.000000 0.382700 +vn -0.382700 0.000000 -0.923900 +vn -0.923900 0.000000 -0.382700 +vn 0.707100 0.000000 0.707100 +vn -0.707100 0.000000 0.707100 +vn 0.707100 0.000000 -0.707100 +vn -0.707100 0.000000 -0.707100 +vn 0.806400 0.000000 -0.591300 +vn 0.988400 0.000000 0.152100 +vn 0.591300 0.000000 0.806400 +vn -0.152100 0.000000 0.988400 +vn -0.806400 0.000000 0.591300 +vn -0.988400 0.000000 -0.152100 +vn 0.152100 0.000000 -0.988400 +vn -0.591300 0.000000 -0.806400 +vn 0.906300 0.000000 -0.422600 +vn 0.939700 0.000000 0.342000 +vn 0.422600 0.000000 0.906300 +vn -0.342000 0.000000 0.939700 +vn -0.906300 0.000000 0.422600 +vn -0.939700 0.000000 -0.342000 +vn 0.342000 0.000000 -0.939700 +vn -0.422600 0.000000 -0.906300 +vn 0.971300 0.000000 -0.237700 +vn 0.854900 0.000000 0.518800 +vn 0.237700 0.000000 0.971300 +vn -0.518800 0.000000 0.854900 +vn -0.971300 0.000000 0.237700 +vn -0.854900 0.000000 -0.518800 +vn 0.518800 0.000000 -0.854900 +vn -0.237700 0.000000 -0.971300 +vn 0.999000 0.000000 -0.043600 +vn 0.737300 0.000000 0.675600 +vn 0.043600 0.000000 0.999000 +vn -0.675600 0.000000 0.737300 +vn -0.999000 0.000000 0.043600 +vn -0.737300 0.000000 -0.675600 +vn 0.675600 0.000000 -0.737300 +vn -0.043600 0.000000 -0.999000 +vn 0.555600 0.000000 0.831500 +vn 0.195100 0.000000 0.980800 +vn -0.195100 0.000000 0.980800 +vn -0.555600 0.000000 0.831500 +vn -0.831500 0.000000 0.555600 +vn 0.195100 0.000000 -0.980800 +vn -0.980800 0.000000 0.195100 +vn -0.980800 0.000000 -0.195100 +vn 0.555600 0.000000 -0.831500 +vn -0.831500 0.000000 -0.555600 +vn 0.831500 0.000000 -0.555600 +vn -0.555600 0.000000 -0.831500 +vn 0.980800 0.000000 -0.195100 +vn -0.195100 0.000000 -0.980800 +vn 0.980800 0.000000 0.195100 +vn 0.831500 0.000000 0.555600 +g Cylinder.002_Cylinder.003_sides +s off +f 161/1/1 165/2/1 166/3/1 162/4/1 +f 162/1/2 166/2/2 167/3/2 163/4/2 +f 163/4/3 167/3/3 168/2/3 164/1/3 +f 165/2/4 161/1/4 164/4/4 168/3/4 +g Cylinder.002_Cylinder.003_top-bottom +f 161/2/5 162/1/5 163/4/5 164/3/5 +f 165/2/6 168/3/6 167/4/6 166/1/6 +g Cylinder.002_Cylinder.003_turbine-top-bottom +f 130/5/5 129/6/5 144/7/5 143/8/5 142/9/5 141/10/5 140/11/5 139/12/5 138/13/5 137/14/5 136/15/5 135/16/5 134/17/5 133/18/5 132/19/5 131/20/5 +f 18/5/5 17/6/5 32/7/5 31/8/5 30/9/5 29/10/5 28/11/5 27/12/5 26/13/5 25/14/5 24/15/5 23/16/5 22/17/5 21/18/5 20/19/5 19/20/5 +f 33/6/6 34/5/6 35/20/6 36/19/6 37/18/6 38/17/6 39/16/6 40/15/6 41/14/6 42/13/6 43/12/6 44/11/6 45/10/6 46/9/6 47/8/6 48/7/6 +f 113/6/6 114/5/6 115/20/6 116/19/6 117/18/6 118/17/6 119/16/6 120/15/6 121/14/6 122/13/6 123/12/6 124/11/6 125/10/6 126/9/6 127/8/6 128/7/6 +f 410/21/5 409/22/5 424/23/5 423/24/5 422/25/5 421/26/5 420/27/5 419/28/5 418/29/5 417/30/5 416/31/5 415/32/5 414/33/5 413/34/5 412/35/5 411/36/5 +f 362/21/5 361/22/5 376/23/5 375/24/5 374/25/5 373/26/5 372/27/5 371/28/5 370/29/5 369/30/5 368/31/5 367/32/5 366/33/5 365/34/5 364/35/5 363/36/5 +f 377/22/6 378/21/6 379/36/6 380/35/6 381/34/6 382/33/6 383/32/6 384/31/6 385/30/6 386/29/6 387/28/6 388/27/6 389/26/6 390/25/6 391/24/6 392/23/6 +f 393/22/6 394/21/6 395/36/6 396/35/6 397/34/6 398/33/6 399/32/6 400/31/6 401/30/6 402/29/6 403/28/6 404/27/6 405/26/6 406/25/6 407/24/6 408/23/6 +f 474/37/5 473/38/5 488/39/5 487/40/5 486/41/5 485/42/5 484/43/5 483/44/5 482/45/5 481/46/5 480/47/5 479/48/5 478/26/5 477/25/5 476/49/5 475/50/5 +f 426/37/5 425/38/5 440/39/5 439/40/5 438/41/5 437/42/5 436/43/5 435/44/5 434/45/5 433/46/5 432/47/5 431/48/5 430/26/5 429/25/5 428/49/5 427/50/5 +f 441/38/6 442/37/6 443/50/6 444/49/6 445/25/6 446/26/6 447/48/6 448/47/6 449/46/6 450/45/6 451/44/6 452/43/6 453/42/6 454/41/6 455/40/6 456/39/6 +f 457/38/6 458/37/6 459/50/6 460/49/6 461/25/6 462/26/6 463/48/6 464/47/6 465/46/6 466/45/6 467/44/6 468/43/6 469/42/6 470/41/6 471/40/6 472/39/6 +f 538/51/5 537/52/5 552/53/5 551/54/5 550/55/5 549/56/5 548/57/5 547/58/5 546/59/5 545/60/5 544/61/5 543/62/5 542/42/5 541/41/5 540/63/5 539/64/5 +f 490/51/5 489/52/5 504/53/5 503/54/5 502/55/5 501/56/5 500/57/5 499/58/5 498/59/5 497/60/5 496/61/5 495/62/5 494/42/5 493/41/5 492/63/5 491/64/5 +f 505/52/6 506/51/6 507/64/6 508/63/6 509/41/6 510/42/6 511/62/6 512/61/6 513/60/6 514/59/6 515/58/6 516/57/6 517/56/6 518/55/6 519/54/6 520/53/6 +f 521/52/6 522/51/6 523/64/6 524/63/6 525/41/6 526/42/6 527/62/6 528/61/6 529/60/6 530/59/6 531/58/6 532/57/6 533/56/6 534/55/6 535/54/6 536/53/6 +f 602/65/5 601/66/5 616/67/5 615/68/5 614/69/5 613/70/5 612/71/5 611/72/5 610/73/5 609/74/5 608/75/5 607/76/5 606/56/5 605/55/5 604/77/5 603/78/5 +f 554/65/5 553/66/5 568/67/5 567/68/5 566/69/5 565/70/5 564/71/5 563/72/5 562/73/5 561/74/5 560/75/5 559/76/5 558/56/5 557/55/5 556/77/5 555/78/5 +f 569/66/6 570/65/6 571/78/6 572/77/6 573/55/6 574/56/6 575/76/6 576/75/6 577/74/6 578/73/6 579/72/6 580/71/6 581/70/6 582/69/6 583/68/6 584/67/6 +f 585/66/6 586/65/6 587/78/6 588/77/6 589/55/6 590/56/6 591/76/6 592/75/6 593/74/6 594/73/6 595/72/6 596/71/6 597/70/6 598/69/6 599/68/6 600/67/6 +f 666/79/5 665/80/5 680/81/5 679/82/5 678/83/5 677/84/5 676/85/5 675/86/5 674/87/5 673/88/5 672/89/5 671/90/5 670/70/5 669/69/5 668/91/5 667/92/5 +f 618/79/5 617/80/5 632/81/5 631/82/5 630/83/5 629/84/5 628/85/5 627/86/5 626/87/5 625/88/5 624/89/5 623/90/5 622/70/5 621/69/5 620/91/5 619/92/5 +f 633/80/6 634/79/6 635/92/6 636/91/6 637/69/6 638/70/6 639/90/6 640/89/6 641/88/6 642/87/6 643/86/6 644/85/6 645/84/6 646/83/6 647/82/6 648/81/6 +f 649/80/6 650/79/6 651/92/6 652/91/6 653/69/6 654/70/6 655/90/6 656/89/6 657/88/6 658/87/6 659/86/6 660/85/6 661/84/6 662/83/6 663/82/6 664/81/6 +f 730/93/5 729/94/5 744/95/5 743/96/5 742/97/5 741/98/5 740/99/5 739/100/5 738/101/5 737/102/5 736/103/5 735/104/5 734/84/5 733/83/5 732/105/5 731/106/5 +f 682/93/5 681/94/5 696/95/5 695/96/5 694/97/5 693/98/5 692/99/5 691/100/5 690/101/5 689/102/5 688/103/5 687/104/5 686/84/5 685/83/5 684/105/5 683/106/5 +f 697/94/6 698/93/6 699/106/6 700/105/6 701/83/6 702/84/6 703/104/6 704/103/6 705/102/6 706/101/6 707/100/6 708/99/6 709/98/6 710/97/6 711/96/6 712/95/6 +f 713/94/6 714/93/6 715/106/6 716/105/6 717/83/6 718/84/6 719/104/6 720/103/6 721/102/6 722/101/6 723/100/6 724/99/6 725/98/6 726/97/6 727/96/6 728/95/6 +f 794/107/5 793/108/5 808/109/5 807/110/5 806/111/5 805/112/5 804/113/5 803/114/5 802/115/5 801/116/5 800/117/5 799/118/5 798/98/5 797/97/5 796/119/5 795/120/5 +f 746/107/5 745/108/5 760/109/5 759/110/5 758/111/5 757/112/5 756/113/5 755/114/5 754/115/5 753/116/5 752/117/5 751/118/5 750/98/5 749/97/5 748/119/5 747/120/5 +f 761/108/6 762/107/6 763/120/6 764/119/6 765/97/6 766/98/6 767/118/6 768/117/6 769/116/6 770/115/6 771/114/6 772/113/6 773/112/6 774/111/6 775/110/6 776/109/6 +f 777/108/6 778/107/6 779/120/6 780/119/6 781/97/6 782/98/6 783/118/6 784/117/6 785/116/6 786/115/6 787/114/6 788/113/6 789/112/6 790/111/6 791/110/6 792/109/6 +g Cylinder.002_Cylinder.003_turbine-blades-etc +f 1/121/7 2/122/7 4/123/7 3/124/7 +f 3/124/8 4/123/8 6/125/8 5/126/8 +f 5/127/9 6/128/9 8/129/9 7/130/9 +f 7/130/10 8/129/10 10/131/10 9/132/10 +f 9/132/11 10/131/11 12/133/11 11/134/11 +f 11/134/12 12/133/12 14/125/12 13/126/12 +f 4/135/6 2/136/6 16/137/6 14/138/6 12/139/6 10/140/6 8/141/6 6/142/6 +f 15/143/13 16/144/13 2/122/13 1/121/13 +f 13/145/14 14/146/14 16/144/14 15/143/14 +f 27/147/15 28/148/15 44/149/15 43/150/15 +f 26/151/10 27/147/10 43/150/10 42/152/10 +f 25/153/2 26/151/2 42/152/2 41/154/2 +f 24/155/11 25/153/11 41/154/11 40/156/11 +f 23/157/16 24/155/16 40/156/16 39/158/16 +f 17/159/4 18/160/4 34/161/4 33/162/4 +f 22/163/12 23/157/12 39/158/12 38/164/12 +f 21/165/3 22/163/3 38/164/3 37/166/3 +f 32/167/7 17/159/7 33/162/7 48/168/7 +f 20/169/14 21/170/14 37/171/14 36/172/14 +f 31/173/17 32/167/17 48/168/17 47/174/17 +f 19/175/18 20/169/18 36/172/18 35/176/18 +f 30/177/8 31/173/8 47/174/8 46/178/8 +f 18/160/13 19/175/13 35/176/13 34/161/13 +f 29/179/1 30/177/1 46/178/1 45/180/1 +f 28/148/9 29/181/9 45/182/9 44/149/9 +f 49/183/19 50/184/19 52/185/19 51/186/19 +f 68/186/20 67/183/20 54/184/20 53/185/20 +f 70/183/21 69/184/21 56/185/21 55/186/21 +f 72/184/22 71/185/22 58/186/22 57/183/22 +f 74/183/23 73/184/23 60/185/23 59/186/23 +f 76/183/24 75/184/24 62/185/24 61/186/24 +f 80/184/25 79/185/25 66/186/25 65/183/25 +f 78/183/26 77/184/26 64/185/26 63/186/26 +f 81/187/23 82/188/23 83/189/23 84/190/23 +f 85/188/24 86/189/24 87/190/24 88/187/24 +f 89/189/26 90/190/26 91/187/26 92/188/26 +f 93/190/25 94/187/25 95/188/25 96/189/25 +f 97/190/19 98/187/19 99/188/19 100/189/19 +f 101/187/20 102/188/20 103/189/20 104/190/20 +f 105/190/22 106/187/22 107/188/22 108/189/22 +f 109/189/21 110/190/21 111/187/21 112/188/21 +f 75/188/22 76/187/22 101/186/22 104/185/22 +f 71/188/20 72/187/20 93/186/20 96/185/20 +f 67/186/25 68/185/25 85/188/25 88/187/25 +f 79/186/24 80/185/24 105/188/24 108/187/24 +f 77/188/23 78/187/23 109/186/23 112/185/23 +f 73/188/21 74/187/21 97/186/21 100/185/21 +f 69/186/19 70/185/19 89/188/19 92/187/19 +f 50/186/26 49/185/26 81/188/26 84/187/26 +f 123/191/15 139/192/15 140/193/15 124/194/15 +f 122/195/10 138/196/10 139/197/10 123/198/10 +f 121/199/2 137/200/2 138/196/2 122/195/2 +f 120/201/11 136/202/11 137/200/11 121/199/11 +f 119/203/16 135/204/16 136/202/16 120/201/16 +f 113/205/4 129/206/4 130/207/4 114/208/4 +f 118/209/12 134/210/12 135/204/12 119/203/12 +f 117/211/3 133/212/3 134/210/3 118/209/3 +f 128/213/7 144/214/7 129/206/7 113/205/7 +f 116/215/14 132/216/14 133/212/14 117/211/14 +f 127/217/17 143/218/17 144/214/17 128/213/17 +f 115/219/18 131/220/18 132/216/18 116/215/18 +f 126/221/8 142/222/8 143/218/8 127/217/8 +f 114/208/13 130/207/13 131/223/13 115/224/13 +f 125/225/1 141/226/1 142/222/1 126/221/1 +f 124/194/9 140/193/9 141/226/9 125/225/9 +f 145/227/17 146/228/17 148/229/17 147/230/17 +f 147/231/1 148/232/1 150/233/1 149/234/1 +f 149/234/15 150/233/15 152/235/15 151/236/15 +f 151/236/2 152/235/2 154/237/2 153/238/2 +f 153/238/16 154/237/16 156/239/16 155/240/16 +f 155/240/3 156/239/3 158/241/3 157/242/3 +f 159/243/4 160/244/4 146/228/4 145/227/4 +f 157/242/18 158/241/18 160/244/18 159/243/18 +f 169/245/27 170/246/27 172/247/27 171/248/27 +f 188/248/28 187/245/28 174/246/28 173/247/28 +f 190/245/29 189/246/29 176/247/29 175/248/29 +f 192/246/30 191/247/30 178/248/30 177/245/30 +f 194/245/31 193/246/31 180/247/31 179/248/31 +f 196/245/32 195/246/32 182/247/32 181/248/32 +f 200/246/33 199/247/33 186/248/33 185/245/33 +f 198/245/34 197/246/34 184/247/34 183/248/34 +f 201/249/31 202/250/31 203/251/31 204/252/31 +f 205/250/32 206/251/32 207/252/32 208/249/32 +f 209/251/34 210/252/34 211/249/34 212/250/34 +f 213/252/33 214/249/33 215/250/33 216/251/33 +f 217/252/27 218/249/27 219/250/27 220/251/27 +f 221/249/28 222/250/28 223/251/28 224/252/28 +f 225/252/30 226/249/30 227/250/30 228/251/30 +f 229/251/29 230/252/29 231/249/29 232/250/29 +f 195/250/30 196/249/30 221/248/30 224/247/30 +f 191/250/28 192/249/28 213/248/28 216/247/28 +f 187/248/33 188/247/33 205/250/33 208/249/33 +f 199/248/32 200/247/32 225/250/32 228/249/32 +f 197/250/31 198/249/31 229/248/31 232/247/31 +f 193/250/29 194/249/29 217/248/29 220/247/29 +f 189/248/27 190/247/27 209/250/27 212/249/27 +f 170/248/34 169/247/34 201/250/34 204/249/34 +f 233/253/35 234/254/35 236/255/35 235/256/35 +f 252/256/36 251/253/36 238/254/36 237/255/36 +f 254/253/37 253/254/37 240/255/37 239/256/37 +f 256/254/38 255/255/38 242/256/38 241/253/38 +f 258/253/39 257/254/39 244/255/39 243/256/39 +f 260/253/40 259/254/40 246/255/40 245/256/40 +f 264/254/41 263/255/41 250/256/41 249/253/41 +f 262/253/42 261/254/42 248/255/42 247/256/42 +f 265/257/39 266/258/39 267/259/39 268/260/39 +f 269/258/40 270/259/40 271/260/40 272/257/40 +f 273/259/42 274/260/42 275/257/42 276/258/42 +f 277/260/41 278/257/41 279/258/41 280/259/41 +f 281/260/35 282/257/35 283/258/35 284/259/35 +f 285/257/36 286/258/36 287/259/36 288/260/36 +f 289/260/38 290/257/38 291/258/38 292/259/38 +f 293/259/37 294/260/37 295/257/37 296/258/37 +f 259/258/38 260/257/38 285/256/38 288/255/38 +f 255/258/36 256/257/36 277/256/36 280/255/36 +f 251/256/41 252/255/41 269/258/41 272/257/41 +f 263/256/40 264/255/40 289/258/40 292/257/40 +f 261/258/39 262/257/39 293/256/39 296/255/39 +f 257/258/37 258/257/37 281/256/37 284/255/37 +f 253/256/35 254/255/35 273/258/35 276/257/35 +f 234/256/42 233/255/42 265/258/42 268/257/42 +f 297/261/43 298/262/43 300/263/43 299/264/43 +f 316/264/44 315/261/44 302/262/44 301/263/44 +f 318/261/45 317/262/45 304/263/45 303/264/45 +f 320/262/46 319/263/46 306/264/46 305/261/46 +f 322/261/47 321/262/47 308/263/47 307/264/47 +f 324/261/48 323/262/48 310/263/48 309/264/48 +f 328/262/49 327/263/49 314/264/49 313/261/49 +f 326/261/50 325/262/50 312/263/50 311/264/50 +f 329/265/47 330/266/47 331/267/47 332/268/47 +f 333/266/48 334/267/48 335/268/48 336/265/48 +f 337/267/50 338/268/50 339/265/50 340/266/50 +f 341/268/49 342/265/49 343/266/49 344/267/49 +f 345/268/43 346/265/43 347/266/43 348/267/43 +f 349/265/44 350/266/44 351/267/44 352/268/44 +f 353/268/46 354/265/46 355/266/46 356/267/46 +f 357/267/45 358/268/45 359/265/45 360/266/45 +f 323/266/46 324/265/46 349/264/46 352/263/46 +f 319/266/44 320/265/44 341/264/44 344/263/44 +f 315/264/49 316/263/49 333/266/49 336/265/49 +f 327/264/48 328/263/48 353/266/48 356/265/48 +f 325/266/47 326/265/47 357/264/47 360/263/47 +f 321/266/45 322/265/45 345/264/45 348/263/45 +f 317/264/43 318/263/43 337/266/43 340/265/43 +f 298/264/50 297/263/50 329/266/50 332/265/50 +f 371/269/51 372/270/51 388/271/51 387/272/51 +f 370/273/52 371/269/52 387/272/52 386/274/52 +f 369/275/53 370/273/53 386/274/53 385/276/53 +f 368/277/54 369/275/54 385/276/54 384/278/54 +f 367/279/55 368/277/55 384/278/55 383/280/55 +f 361/281/56 362/282/56 378/283/56 377/284/56 +f 366/285/57 367/279/57 383/280/57 382/286/57 +f 365/287/58 366/285/58 382/286/58 381/288/58 +f 376/289/59 361/281/59 377/284/59 392/290/59 +f 364/291/60 365/292/60 381/293/60 380/294/60 +f 375/295/61 376/289/61 392/290/61 391/296/61 +f 363/297/62 364/291/62 380/294/62 379/298/62 +f 374/299/63 375/295/63 391/296/63 390/300/63 +f 362/282/64 363/297/64 379/298/64 378/283/64 +f 373/301/65 374/299/65 390/300/65 389/302/65 +f 372/270/66 373/303/66 389/304/66 388/271/66 +f 403/305/51 419/306/51 420/307/51 404/308/51 +f 402/309/52 418/310/52 419/311/52 403/312/52 +f 401/313/53 417/314/53 418/310/53 402/309/53 +f 400/315/54 416/316/54 417/314/54 401/313/54 +f 399/317/55 415/318/55 416/316/55 400/315/55 +f 393/319/56 409/320/56 410/321/56 394/322/56 +f 398/323/57 414/324/57 415/318/57 399/317/57 +f 397/325/58 413/326/58 414/324/58 398/323/58 +f 408/327/59 424/328/59 409/320/59 393/319/59 +f 396/329/60 412/330/60 413/326/60 397/325/60 +f 407/331/61 423/332/61 424/328/61 408/327/61 +f 395/333/62 411/334/62 412/330/62 396/329/62 +f 406/335/63 422/336/63 423/332/63 407/331/63 +f 394/322/64 410/321/64 411/337/64 395/338/64 +f 405/339/65 421/340/65 422/336/65 406/335/65 +f 404/308/66 420/307/66 421/340/66 405/339/66 +f 435/341/10 436/342/10 452/343/10 451/344/10 +f 434/345/2 435/341/2 451/344/2 450/346/2 +f 433/347/11 434/345/11 450/346/11 449/348/11 +f 432/349/16 433/347/16 449/348/16 448/350/16 +f 431/351/12 432/349/12 448/350/12 447/352/12 +f 425/353/7 426/354/7 442/355/7 441/356/7 +f 430/357/3 431/351/3 447/352/3 446/358/3 +f 429/359/14 430/357/14 446/358/14 445/360/14 +f 440/361/17 425/353/17 441/356/17 456/362/17 +f 428/363/18 429/364/18 445/365/18 444/366/18 +f 439/367/8 440/361/8 456/362/8 455/368/8 +f 427/369/13 428/363/13 444/366/13 443/370/13 +f 438/371/1 439/367/1 455/368/1 454/372/1 +f 426/354/4 427/369/4 443/370/4 442/355/4 +f 437/373/9 438/371/9 454/372/9 453/374/9 +f 436/342/15 437/375/15 453/376/15 452/343/15 +f 467/377/10 483/378/10 484/379/10 468/380/10 +f 466/381/2 482/382/2 483/383/2 467/384/2 +f 465/385/11 481/386/11 482/382/11 466/381/11 +f 464/387/16 480/388/16 481/386/16 465/385/16 +f 463/389/12 479/390/12 480/388/12 464/387/12 +f 457/391/7 473/392/7 474/393/7 458/394/7 +f 462/395/3 478/396/3 479/390/3 463/389/3 +f 461/397/14 477/398/14 478/396/14 462/395/14 +f 472/399/17 488/400/17 473/392/17 457/391/17 +f 460/401/18 476/402/18 477/398/18 461/397/18 +f 471/403/8 487/404/8 488/400/8 472/399/8 +f 459/405/13 475/406/13 476/402/13 460/401/13 +f 470/407/1 486/408/1 487/404/1 471/403/1 +f 458/394/4 474/393/4 475/409/4 459/410/4 +f 469/411/9 485/412/9 486/408/9 470/407/9 +f 468/380/15 484/379/15 485/412/15 469/411/15 +f 499/413/52 500/414/52 516/415/52 515/416/52 +f 498/417/53 499/413/53 515/416/53 514/418/53 +f 497/419/54 498/417/54 514/418/54 513/420/54 +f 496/421/55 497/419/55 513/420/55 512/422/55 +f 495/423/57 496/421/57 512/422/57 511/424/57 +f 489/425/59 490/426/59 506/427/59 505/428/59 +f 494/429/58 495/423/58 511/424/58 510/430/58 +f 493/431/60 494/429/60 510/430/60 509/432/60 +f 504/433/61 489/425/61 505/428/61 520/434/61 +f 492/435/62 493/436/62 509/437/62 508/438/62 +f 503/439/63 504/433/63 520/434/63 519/440/63 +f 491/441/64 492/435/64 508/438/64 507/442/64 +f 502/443/65 503/439/65 519/440/65 518/444/65 +f 490/426/56 491/441/56 507/442/56 506/427/56 +f 501/445/66 502/443/66 518/444/66 517/446/66 +f 500/414/51 501/447/51 517/448/51 516/415/51 +f 531/449/52 547/450/52 548/451/52 532/452/52 +f 530/453/53 546/454/53 547/455/53 531/456/53 +f 529/457/54 545/458/54 546/454/54 530/453/54 +f 528/459/55 544/460/55 545/458/55 529/457/55 +f 527/461/57 543/462/57 544/460/57 528/459/57 +f 521/463/59 537/464/59 538/465/59 522/466/59 +f 526/467/58 542/468/58 543/462/58 527/461/58 +f 525/469/60 541/470/60 542/468/60 526/467/60 +f 536/471/61 552/472/61 537/464/61 521/463/61 +f 524/473/62 540/474/62 541/470/62 525/469/62 +f 535/475/63 551/476/63 552/472/63 536/471/63 +f 523/477/64 539/478/64 540/474/64 524/473/64 +f 534/479/65 550/480/65 551/476/65 535/475/65 +f 522/466/56 538/465/56 539/481/56 523/482/56 +f 533/483/66 549/484/66 550/480/66 534/479/66 +f 532/452/51 548/451/51 549/484/51 533/483/51 +f 563/485/2 564/486/2 580/487/2 579/488/2 +f 562/489/11 563/485/11 579/488/11 578/490/11 +f 561/491/16 562/489/16 578/490/16 577/492/16 +f 560/493/12 561/491/12 577/492/12 576/494/12 +f 559/495/3 560/493/3 576/494/3 575/496/3 +f 553/497/17 554/498/17 570/499/17 569/500/17 +f 558/501/14 559/495/14 575/496/14 574/502/14 +f 557/503/18 558/501/18 574/502/18 573/504/18 +f 568/505/8 553/497/8 569/500/8 584/506/8 +f 556/507/13 557/508/13 573/509/13 572/510/13 +f 567/511/1 568/505/1 584/506/1 583/512/1 +f 555/513/4 556/507/4 572/510/4 571/514/4 +f 566/515/9 567/511/9 583/512/9 582/516/9 +f 554/498/7 555/513/7 571/514/7 570/499/7 +f 565/517/15 566/515/15 582/516/15 581/518/15 +f 564/486/10 565/519/10 581/520/10 580/487/10 +f 595/521/2 611/522/2 612/523/2 596/524/2 +f 594/525/11 610/526/11 611/527/11 595/528/11 +f 593/529/16 609/530/16 610/526/16 594/525/16 +f 592/531/12 608/532/12 609/530/12 593/529/12 +f 591/533/3 607/534/3 608/532/3 592/531/3 +f 585/535/17 601/536/17 602/537/17 586/538/17 +f 590/539/14 606/540/14 607/534/14 591/533/14 +f 589/541/18 605/542/18 606/540/18 590/539/18 +f 600/543/8 616/544/8 601/536/8 585/535/8 +f 588/545/13 604/546/13 605/542/13 589/541/13 +f 599/547/1 615/548/1 616/544/1 600/543/1 +f 587/549/4 603/550/4 604/546/4 588/545/4 +f 598/551/9 614/552/9 615/548/9 599/547/9 +f 586/538/7 602/537/7 603/553/7 587/554/7 +f 597/555/15 613/556/15 614/552/15 598/551/15 +f 596/524/10 612/523/10 613/556/10 597/555/10 +f 627/557/53 628/558/53 644/559/53 643/560/53 +f 626/561/54 627/557/54 643/560/54 642/562/54 +f 625/563/55 626/561/55 642/562/55 641/564/55 +f 624/565/57 625/563/57 641/564/57 640/566/57 +f 623/567/58 624/565/58 640/566/58 639/568/58 +f 617/569/61 618/570/61 634/571/61 633/572/61 +f 622/573/60 623/567/60 639/568/60 638/574/60 +f 621/575/62 622/573/62 638/574/62 637/576/62 +f 632/577/63 617/569/63 633/572/63 648/578/63 +f 620/579/64 621/580/64 637/581/64 636/582/64 +f 631/583/65 632/577/65 648/578/65 647/584/65 +f 619/585/56 620/579/56 636/582/56 635/586/56 +f 630/587/66 631/583/66 647/584/66 646/588/66 +f 618/570/59 619/585/59 635/586/59 634/571/59 +f 629/589/51 630/587/51 646/588/51 645/590/51 +f 628/558/52 629/591/52 645/592/52 644/559/52 +f 659/593/53 675/594/53 676/595/53 660/596/53 +f 658/597/54 674/598/54 675/599/54 659/600/54 +f 657/601/55 673/602/55 674/598/55 658/597/55 +f 656/603/57 672/604/57 673/602/57 657/601/57 +f 655/605/58 671/606/58 672/604/58 656/603/58 +f 649/607/61 665/608/61 666/609/61 650/610/61 +f 654/611/60 670/612/60 671/606/60 655/605/60 +f 653/613/62 669/614/62 670/612/62 654/611/62 +f 664/615/63 680/616/63 665/608/63 649/607/63 +f 652/617/64 668/618/64 669/614/64 653/613/64 +f 663/619/65 679/620/65 680/616/65 664/615/65 +f 651/621/56 667/622/56 668/618/56 652/617/56 +f 662/623/66 678/624/66 679/620/66 663/619/66 +f 650/610/59 666/609/59 667/625/59 651/626/59 +f 661/627/51 677/628/51 678/624/51 662/623/51 +f 660/596/52 676/595/52 677/628/52 661/627/52 +f 691/629/11 692/630/11 708/631/11 707/632/11 +f 690/633/16 691/629/16 707/632/16 706/634/16 +f 689/635/12 690/633/12 706/634/12 705/636/12 +f 688/637/3 689/635/3 705/636/3 704/638/3 +f 687/639/14 688/637/14 704/638/14 703/640/14 +f 681/641/8 682/642/8 698/643/8 697/644/8 +f 686/645/18 687/639/18 703/640/18 702/646/18 +f 685/647/13 686/645/13 702/646/13 701/648/13 +f 696/649/1 681/641/1 697/644/1 712/650/1 +f 684/651/4 685/652/4 701/653/4 700/654/4 +f 695/655/9 696/649/9 712/650/9 711/656/9 +f 683/657/7 684/651/7 700/654/7 699/658/7 +f 694/659/15 695/655/15 711/656/15 710/660/15 +f 682/642/17 683/657/17 699/658/17 698/643/17 +f 693/661/10 694/659/10 710/660/10 709/662/10 +f 692/630/2 693/663/2 709/664/2 708/631/2 +f 723/665/11 739/666/11 740/667/11 724/668/11 +f 722/669/16 738/670/16 739/671/16 723/672/16 +f 721/673/12 737/674/12 738/670/12 722/669/12 +f 720/675/3 736/676/3 737/674/3 721/673/3 +f 719/677/14 735/678/14 736/676/14 720/675/14 +f 713/679/8 729/680/8 730/681/8 714/682/8 +f 718/683/18 734/684/18 735/678/18 719/677/18 +f 717/685/13 733/686/13 734/684/13 718/683/13 +f 728/687/1 744/688/1 729/680/1 713/679/1 +f 716/689/4 732/690/4 733/686/4 717/685/4 +f 727/691/9 743/692/9 744/688/9 728/687/9 +f 715/693/7 731/694/7 732/690/7 716/689/7 +f 726/695/15 742/696/15 743/692/15 727/691/15 +f 714/682/17 730/681/17 731/697/17 715/698/17 +f 725/699/10 741/700/10 742/696/10 726/695/10 +f 724/668/2 740/667/2 741/700/2 725/699/2 +f 755/701/54 756/702/54 772/703/54 771/704/54 +f 754/705/55 755/701/55 771/704/55 770/706/55 +f 753/707/57 754/705/57 770/706/57 769/708/57 +f 752/709/58 753/707/58 769/708/58 768/710/58 +f 751/711/60 752/709/60 768/710/60 767/712/60 +f 745/713/63 746/714/63 762/715/63 761/716/63 +f 750/717/62 751/711/62 767/712/62 766/718/62 +f 749/719/64 750/717/64 766/718/64 765/720/64 +f 760/721/65 745/713/65 761/716/65 776/722/65 +f 748/723/56 749/724/56 765/725/56 764/726/56 +f 759/727/66 760/721/66 776/722/66 775/728/66 +f 747/729/59 748/723/59 764/726/59 763/730/59 +f 758/731/51 759/727/51 775/728/51 774/732/51 +f 746/714/61 747/729/61 763/730/61 762/715/61 +f 757/733/52 758/731/52 774/732/52 773/734/52 +f 756/702/53 757/735/53 773/736/53 772/703/53 +f 787/737/54 803/738/54 804/739/54 788/740/54 +f 786/741/55 802/742/55 803/743/55 787/744/55 +f 785/745/57 801/746/57 802/742/57 786/741/57 +f 784/747/58 800/748/58 801/746/58 785/745/58 +f 783/749/60 799/750/60 800/748/60 784/747/60 +f 777/751/63 793/752/63 794/753/63 778/754/63 +f 782/755/62 798/756/62 799/750/62 783/749/62 +f 781/757/64 797/758/64 798/756/64 782/755/64 +f 792/759/65 808/760/65 793/752/65 777/751/65 +f 780/761/56 796/762/56 797/758/56 781/757/56 +f 791/763/66 807/764/66 808/760/66 792/759/66 +f 779/765/59 795/766/59 796/762/59 780/761/59 +f 790/767/51 806/768/51 807/764/51 791/763/51 +f 778/754/61 794/753/61 795/769/61 779/770/61 +f 789/771/52 805/772/52 806/768/52 790/767/52 +f 788/740/53 804/739/53 805/772/53 789/771/53 diff --git a/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_off.png b/mesecons_hydroturbine/textures/jeija_hydro_turbine_turbine_misc_off.png new file mode 100644 index 0000000000000000000000000000000000000000..45a720b177d8c79c378dd3b1b22e4f14d7fd1f1e GIT binary patch literal 820 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 k!! mesecon.setting("luacontroller_digiline_maxlen", 50000) then + return false + end + minetest.after(0, function() digiline:receptor_send(pos, digiline.rules.default, channel, msg) end) + return true end end @@ -284,6 +300,7 @@ local safe_globals = { "assert", "error", "ipairs", "next", "pairs", "select", "tonumber", "tostring", "type", "unpack", "_VERSION" } + local function create_environment(pos, mem, event) -- Gather variables for the environment local vports = minetest.registered_nodes[minetest.get_node(pos).name].virtual_portstates diff --git a/mesecons_microcontroller/init.lua b/mesecons_microcontroller/init.lua index 6778a10b..b241713f 100644 --- a/mesecons_microcontroller/init.lua +++ b/mesecons_microcontroller/init.lua @@ -1,6 +1,7 @@ -EEPROM_SIZE = 255 +local EEPROM_SIZE = 255 local microc_rules = {} +local yc = {} for a = 0, 1 do for b = 0, 1 do @@ -20,6 +21,7 @@ end if tostring(d) == "1" then top = top.."^jeija_microcontroller_LED_D.png" end +local groups if tostring(d)..tostring(c)..tostring(b)..tostring(a) ~= "0000" then groups = {dig_immediate=2, not_in_creative_inventory=1, mesecon = 3, overheat = 1} else @@ -42,8 +44,8 @@ local mesecons = {effector = { rules = input_rules, action_change = function (pos, node, rulename, newstate) - yc_update_real_portstates(pos, node, rulename, newstate) - update_yc(pos) + yc.update_real_portstates(pos, node, rulename, newstate) + yc.update(pos) end }} if nodename ~= "mesecons_microcontroller:microcontroller0000" then @@ -127,8 +129,8 @@ minetest.register_node(nodename, { "button[7.5,0.2;1.5,3;brsflop;RS-Flop]".. "button_exit[3.5,1;2,3;program;Program]") meta:set_string("infotext", "Programmed Microcontroller") - yc_reset (pos) - update_yc(pos) + yc.reset (pos) + yc.update(pos) end, sounds = default.node_sound_stone_defaults(), mesecons = mesecons, @@ -151,8 +153,8 @@ minetest.register_craft({ } }) -function yc_reset(pos) - yc_action(pos, {a=false, b=false, c=false, d=false}) +yc.reset = function(pos) + yc.action(pos, {a=false, b=false, c=false, d=false}) local meta = minetest.get_meta(pos) meta:set_int("afterid", 0) local r = "" @@ -160,7 +162,7 @@ function yc_reset(pos) meta:set_string("eeprom", r) end -function update_yc(pos) +yc.update = function(pos) local meta = minetest.get_meta(pos) if (mesecon.do_overheat(pos)) then @@ -172,10 +174,10 @@ function update_yc(pos) end local code = meta:get_string("code") - code = yc_code_remove_commentary(code) + code = yc.code_remove_commentary(code) code = string.gsub(code, " ", "") --Remove all spaces code = string.gsub(code, " ", "") --Remove all tabs - if yc_parsecode(code, pos) == nil then + if yc.parsecode(code, pos) == nil then meta:set_string("infotext", "Code not valid!\n"..code) else meta:set_string("infotext", "Working Microcontroller\n"..code) @@ -184,7 +186,7 @@ end --Code Parsing -function yc_code_remove_commentary(code) +yc.code_remove_commentary = function(code) local is_string = false for i = 1, #code do if code:sub(i, i) == '"' then @@ -196,50 +198,50 @@ function yc_code_remove_commentary(code) return code end -function yc_parsecode(code, pos) +yc.parsecode = function(code, pos) local meta = minetest.get_meta(pos) local endi = 1 - local Lreal = yc_get_real_portstates(pos) - local Lvirtual = yc_get_virtual_portstates(pos) + local Lreal = yc.get_real_portstates(pos) + local Lvirtual = yc.get_virtual_portstates(pos) if Lvirtual == nil then return nil end local c local eeprom = meta:get_string("eeprom") while true do local command, params - command, endi = parse_get_command(code, endi) + command, endi = yc.parse_get_command(code, endi) if command == nil then return nil end if command == true then break end --end of code if command == "if" then local r - r, endi = yc_command_if(code, endi, yc_merge_portstates(Lreal, Lvirtual), eeprom) + r, endi = yc.command_if(code, endi, yc.merge_portstates(Lreal, Lvirtual), eeprom) if r == nil then return nil end if r == true then -- nothing elseif r == false then - local endi_new = yc_skip_to_else (code, endi) + local endi_new = yc.skip_to_else (code, endi) if endi_new == nil then --else > not found - endi = yc_skip_to_endif(code, endi) + endi = yc.skip_to_endif(code, endi) else endi = endi_new end if endi == nil then return nil end end else - params, endi = parse_get_params(code, endi) + params, endi = yc.parse_get_params(code, endi) if not params then return nil end end if command == "on" then - L = yc_command_on (params, Lvirtual) + L = yc.command_on (params, Lvirtual) elseif command == "off" then - L = yc_command_off(params, Lvirtual) + L = yc.command_off(params, Lvirtual) elseif command == "print" then - local su = yc_command_print(params, eeprom, yc_merge_portstates(Lreal, Lvirtual)) + local su = yc.command_print(params, eeprom, yc.merge_portstates(Lreal, Lvirtual)) if su ~= true then return nil end elseif command == "after" then - local su = yc_command_after(params, pos) + local su = yc.command_after(params, pos) if su == nil then return nil end elseif command == "sbi" then local new_eeprom - new_eeprom, Lvirtual = yc_command_sbi (params, eeprom, yc_merge_portstates(Lreal, Lvirtual), Lvirtual) + new_eeprom, Lvirtual = yc.command_sbi (params, eeprom, yc.merge_portstates(Lreal, Lvirtual), Lvirtual) if new_eeprom == nil then return nil else eeprom = new_eeprom end elseif command == "if" then --nothing @@ -250,11 +252,11 @@ function yc_parsecode(code, pos) if eeprom == nil then return nil else minetest.get_meta(pos):set_string("eeprom", eeprom) end end - yc_action(pos, Lvirtual) + yc.action(pos, Lvirtual) return true end -function parse_get_command(code, starti) +yc.parse_get_command = function(code, starti) i = starti local s while s ~= "" do @@ -266,7 +268,7 @@ function parse_get_command(code, starti) starti = starti + 1 i = starti elseif s == ">" then - starti = yc_skip_to_endif(code, starti) + starti = yc.skip_to_endif(code, starti) if starti == nil then return nil end i = starti else @@ -280,7 +282,7 @@ function parse_get_command(code, starti) return nil, nil end -function parse_get_params(code, starti) +yc.parse_get_params = function(code, starti) i = starti local s local params = {} @@ -303,7 +305,7 @@ function parse_get_params(code, starti) return nil, nil end -function yc_parse_get_eeprom_param(cond, starti) +yc.parse_get_eeprom_param = function(cond, starti) i = starti local s local addr @@ -319,7 +321,7 @@ function yc_parse_get_eeprom_param(cond, starti) return nil, nil end -function yc_skip_to_endif(code, starti) +yc.skip_to_endif = function(code, starti) local i = starti local s = false local open_ifs = 1 @@ -339,7 +341,7 @@ function yc_skip_to_endif(code, starti) return nil end -function yc_skip_to_else(code, starti) +yc.skip_to_else = function(code, starti) local i = starti local s = false local open_ifs = 1 @@ -360,29 +362,29 @@ function yc_skip_to_else(code, starti) end --Commands -function yc_command_on(params, L) +yc.command_on = function(params, L) local rules = {} for i, port in ipairs(params) do - L = yc_set_portstate (port, true, L) + L = yc.set_portstate (port, true, L) end return L end -function yc_command_off(params, L) +yc.command_off = function(params, L) local rules = {} for i, port in ipairs(params) do - L = yc_set_portstate (port, false, L) + L = yc.set_portstate (port, false, L) end return L end -function yc_command_print(params, eeprom, L) +yc.command_print = function(params, eeprom, L) local s = "" for i, param in ipairs(params) do if param:sub(1,1) == '"' and param:sub(#param, #param) == '"' then s = s..param:sub(2, #param-1) else - r = yc_command_parsecondition(param, L, eeprom) + r = yc.command_parsecondition(param, L, eeprom) if r == "1" or r == "0" then s = s..r else return nil end @@ -392,17 +394,17 @@ function yc_command_print(params, eeprom, L) return true end -function yc_command_sbi(params, eeprom, L, Lv) +yc.command_sbi = function(params, eeprom, L, Lv) if params[1]==nil or params[2]==nil or params[3] ~=nil then return nil end - local status = yc_command_parsecondition(params[2], L, eeprom) + local status = yc.command_parsecondition(params[2], L, eeprom) if status == nil then return nil, nil end if string.find("ABCD", params[1])~=nil and #params[1]==1 then --is a port if status == "1" then - Lv = yc_set_portstate (params[1], true, Lv) + Lv = yc.set_portstate (params[1], true, Lv) else - Lv = yc_set_portstate (params[1], false, Lv) + Lv = yc.set_portstate (params[1], false, Lv) end return eeprom, Lv; end @@ -420,7 +422,7 @@ function yc_command_sbi(params, eeprom, L, Lv) end -- after (delay) -function yc_command_after(params, pos) +yc.command_after = function(params, pos) if params[1] == nil or params[2] == nil or params[3] ~= nil then return nil end --get time (maximum time is 200) @@ -436,14 +438,14 @@ function yc_command_after(params, pos) local afterid = math.random(10000) local meta = minetest.get_meta(pos) meta:set_int("afterid", afterid) - minetest.after(time, yc_command_after_execute, {pos = pos, code = code, afterid = afterid}) + minetest.after(time, yc.command_after_execute, {pos = pos, code = code, afterid = afterid}) return true end -function yc_command_after_execute(params) +yc.command_after_execute = function(params) local meta = minetest.get_meta(params.pos) if meta:get_int("afterid") == params.afterid then --make sure the node has not been changed - if yc_parsecode(params.code, params.pos) == nil then + if yc.parsecode(params.code, params.pos) == nil then meta:set_string("infotext", "Code in after() not valid!") else if code ~= nil then @@ -456,21 +458,21 @@ function yc_command_after_execute(params) end --If -function yc_command_if(code, starti, L, eeprom) - local cond, endi = yc_command_if_getcondition(code, starti) +yc.command_if = function(code, starti, L, eeprom) + local cond, endi = yc.command_if_getcondition(code, starti) if cond == nil then return nil end - cond = yc_command_parsecondition(cond, L, eeprom) + cond = yc.command_parsecondition(cond, L, eeprom) local result if cond == "0" then result = false elseif cond == "1" then result = true end if not result then end - return result, endi --endi from local cond, endi = yc_command_if_getcondition(code, starti) + return result, endi --endi from local cond, endi = yc.command_if_getcondition(code, starti) end --Condition parsing -function yc_command_if_getcondition(code, starti) +yc.command_if_getcondition = function(code, starti) i = starti local s local brackets = 1 --1 Bracket to close @@ -494,7 +496,7 @@ function yc_command_if_getcondition(code, starti) return nil, nil end -function yc_command_parsecondition(cond, L, eeprom) +yc.command_parsecondition = function(cond, L, eeprom) cond = string.gsub(cond, "A", tonumber(L.a and 1 or 0)) cond = string.gsub(cond, "B", tonumber(L.b and 1 or 0)) cond = string.gsub(cond, "C", tonumber(L.c and 1 or 0)) @@ -506,8 +508,8 @@ function yc_command_parsecondition(cond, L, eeprom) while i<=l do local s = cond:sub(i,i) if s == "#" then - local addr, endi = yc_parse_get_eeprom_param(cond, i+1) - local buf = yc_eeprom_read(tonumber(addr), eeprom) + local addr, endi = yc.parse_get_eeprom_param(cond, i+1) + local buf = yc.eeprom_read(tonumber(addr), eeprom) if buf == nil then return nil end local call = cond:sub(i, endi-1) cond = string.gsub(cond, call, buf) @@ -580,14 +582,14 @@ function yc_command_parsecondition(cond, L, eeprom) end --Virtual-Hardware functions -function yc_eeprom_read(number, eeprom) +yc.eeprom_read = function(number, eeprom) if not number then return end return eeprom:sub(number, number) end --Real I/O functions -function yc_action(pos, L) --L-->Lvirtual - local Lv = yc_get_virtual_portstates(pos) +yc.action = function(pos, L) --L-->Lvirtual + local Lv = yc.get_virtual_portstates(pos) local name = "mesecons_microcontroller:microcontroller" ..tonumber(L.d and 1 or 0) ..tonumber(L.c and 1 or 0) @@ -596,10 +598,10 @@ function yc_action(pos, L) --L-->Lvirtual local node = minetest.get_node(pos) minetest.swap_node(pos, {name = name, param2 = node.param2}) - yc_action_setports(pos, L, Lv) + yc.action_setports(pos, L, Lv) end -function yc_action_setports(pos, L, Lv) +yc.action_setports = function(pos, L, Lv) local name = "mesecons_microcontroller:microcontroller" local rules if Lv.a ~= L.a then @@ -624,7 +626,7 @@ function yc_action_setports(pos, L, Lv) end end -function yc_set_portstate(port, state, L) +yc.set_portstate = function(port, state, L) if port == "A" then L.a = state elseif port == "B" then L.b = state elseif port == "C" then L.c = state @@ -633,7 +635,7 @@ function yc_set_portstate(port, state, L) return L end -function yc_update_real_portstates(pos, node, rulename, newstate) +yc.update_real_portstates = function(pos, node, rulename, newstate) local meta = minetest.get_meta(pos) if rulename == nil then meta:set_int("real_portstates", 1) @@ -657,7 +659,7 @@ function yc_update_real_portstates(pos, node, rulename, newstate) meta:set_int("real_portstates", 1 + L[1] + 2*L[2] + 4*L[3] + 8*L[4]) end -function yc_get_real_portstates(pos) -- determine if ports are powered (by itself or from outside) +yc.get_real_portstates = function(pos) -- determine if ports are powered (by itself or from outside) local meta = minetest.get_meta(pos) local L = {} local n = meta:get_int("real_portstates") - 1 @@ -668,7 +670,7 @@ function yc_get_real_portstates(pos) -- determine if ports are powered (by itsel return L end -function yc_get_virtual_portstates(pos) -- portstates according to the name +yc.get_virtual_portstates = function(pos) -- portstates according to the name local name = minetest.get_node(pos).name local b, a = string.find(name, ":microcontroller") if a == nil then return nil end @@ -682,7 +684,7 @@ function yc_get_virtual_portstates(pos) -- portstates according to the name return Lvirtual end -function yc_merge_portstates(Lreal, Lvirtual) +yc.merge_portstates = function(Lreal, Lvirtual) local L = {a=false, b=false, c=false, d=false} if Lvirtual.a or Lreal.a then L.a = true end if Lvirtual.b or Lreal.b then L.b = true end diff --git a/mesecons_movestones/init.lua b/mesecons_movestones/init.lua index 52a5605e..9e9dce61 100644 --- a/mesecons_movestones/init.lua +++ b/mesecons_movestones/init.lua @@ -26,28 +26,28 @@ function mesecon.get_movestone_direction(pos) lpos = {x=pos.x+1, y=pos.y, z=pos.z} for n = 1, 3 do - if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then + if mesecon.is_power_on(lpos, rules[n]) then return {x=0, y=0, z=-1} end end lpos = {x = pos.x-1, y = pos.y, z = pos.z} for n=4, 6 do - if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then + if mesecon.is_power_on(lpos, rules[n]) then return {x=0, y=0, z=1} end end lpos = {x = pos.x, y = pos.y, z = pos.z+1} for n=7, 9 do - if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then + if mesecon.is_power_on(lpos, rules[n]) then return {x=-1, y=0, z=0} end end lpos = {x = pos.x, y = pos.y, z = pos.z-1} for n=10, 12 do - if mesecon.is_power_on(lpos, rules[n].x, rules[n].y, rules[n].z) then + if mesecon.is_power_on(lpos, rules[n]) then return {x=1, y=0, z=0} end end diff --git a/mesecons_pistons/init.lua b/mesecons_pistons/init.lua index 474f621b..a52c8025 100644 --- a/mesecons_pistons/init.lua +++ b/mesecons_pistons/init.lua @@ -1,6 +1,6 @@ -- Get mesecon rules of pistons -piston_rules = -{{x=0, y=0, z=1}, --everything apart from z- (pusher side) +local piston_rules = { + {x=0, y=0, z=1}, --everything apart from z- (pusher side) {x=1, y=0, z=0}, {x=-1, y=0, z=0}, {x=1, y=1, z=0}, @@ -8,29 +8,32 @@ piston_rules = {x=-1, y=1, z=0}, {x=-1, y=-1, z=0}, {x=0, y=1, z=1}, - {x=0, y=-1, z=1}} + {x=0, y=-1, z=1} +} -local piston_up_rules = -{{x=0, y=0, z=-1}, --everything apart from y+ (pusher side) +local piston_up_rules = { + {x=0, y=0, z=-1}, --everything apart from y+ (pusher side) {x=1, y=0, z=0}, {x=-1, y=0, z=0}, {x=0, y=0, z=1}, {x=1, y=-1, z=0}, {x=-1, y=-1, z=0}, {x=0, y=-1, z=1}, - {x=0, y=-1, z=-1}} + {x=0, y=-1, z=-1} +} -local piston_down_rules = -{{x=0, y=0, z=-1}, --everything apart from y- (pusher side) +local piston_down_rules = { + {x=0, y=0, z=-1}, --everything apart from y- (pusher side) {x=1, y=0, z=0}, {x=-1, y=0, z=0}, {x=0, y=0, z=1}, {x=1, y=1, z=0}, {x=-1, y=1, z=0}, {x=0, y=1, z=1}, - {x=0, y=1, z=-1}} + {x=0, y=1, z=-1} +} -local piston_get_rules = function (node) +local function piston_get_rules(node) local rules = piston_rules for i = 1, node.param2 do rules = mesecon.rotate_rules_left(rules) @@ -38,7 +41,7 @@ local piston_get_rules = function (node) return rules end -piston_facedir_direction = function (node) +local function piston_facedir_direction(node) local rules = {{x = 0, y = 0, z = -1}} for i = 1, node.param2 do rules = mesecon.rotate_rules_left(rules) @@ -46,7 +49,7 @@ piston_facedir_direction = function (node) return rules[1] end -piston_get_direction = function(dir, node) +local function piston_get_direction(dir, node) if type(dir) == "function" then return dir(node) else diff --git a/mesecons_pressureplates/init.lua b/mesecons_pressureplates/init.lua index 858f6ab8..cd4529b8 100644 --- a/mesecons_pressureplates/init.lua +++ b/mesecons_pressureplates/init.lua @@ -8,7 +8,7 @@ local pp_box_on = { fixed = { -7/16, -8/16, -7/16, 7/16, -7.5/16, 7/16 }, } -pp_on_timer = function (pos, elapsed) +local function pp_on_timer(pos, elapsed) local node = minetest.get_node(pos) local basename = minetest.registered_nodes[node.name].pressureplate_basename diff --git a/mesecons_receiver/init.lua b/mesecons_receiver/init.lua index 9284e57e..a5cf7d54 100644 --- a/mesecons_receiver/init.lua +++ b/mesecons_receiver/init.lua @@ -1,10 +1,30 @@ -rcvboxes = { +local rcvboxes = { { -3/16, -3/16, -8/16 , 3/16, 3/16 , -13/32 }, -- the smaller bump { -1/32, -1/32, -3/2 , 1/32, 1/32 , -1/2 }, -- the wire through the block { -2/32, -1/2 , -.5 , 2/32, 0 , -.5002+3/32 }, -- the vertical wire bit { -2/32, -1/2 , -7/16+0.002 , 2/32, -14/32, 16/32+0.001 } -- the horizontal wire } +local down_rcvboxes = { + {-6/16, -8/16, -6/16, 6/16, -7/16, 6/16}, -- Top plate + {-2/16, -6/16, -2/16, 2/16, -7/16, 2/16}, -- Bump + {-1/16, -8/16, -1/16, 1/16, -24/16, 1/16}, -- Wire through the block + {-1/16, -8/16, 6/16, 1/16, -7/16, 8/16}, -- Plate extension (North) + {-1/16, -8/16, -6/16, 1/16, -7/16, -8/16}, -- Plate extension (South) + {-8/16, -8/16, 1/16, -6/16, -7/16, -1/16}, -- Plate extension (West) + {6/16, -8/16, 1/16, 8/16, -7/16, -1/16}, -- Plate extension (East) +} + +local up_rcvboxes = { + {-6/16, -8/16, -6/16, 6/16, -7/16, 6/16}, -- Top plate + {-2/16, -6/16, -2/16, 2/16, -7/16, 2/16}, -- Bump + {-1/16, -6/16, -1/16, 1/16, 24/16, 1/16}, -- Wire through the block + {-1/16, -8/16, 6/16, 1/16, -7/16, 8/16}, -- Plate extension (North) + {-1/16, -8/16, -6/16, 1/16, -7/16, -8/16}, -- Plate extension (South) + {-8/16, -8/16, 1/16, -6/16, -7/16, -1/16}, -- Plate extension (West) + {6/16, -8/16, 1/16, 8/16, -7/16, -1/16}, -- Plate extension (East) +} + local receiver_get_rules = function (node) local rules = { {x = 1, y = 0, z = 0}, {x = -2, y = 0, z = 0}} @@ -18,20 +38,13 @@ local receiver_get_rules = function (node) return rules end -minetest.register_node("mesecons_receiver:receiver_on", { +mesecon.register_node("mesecons_receiver:receiver", { drawtype = "nodebox", - tiles = { - "receiver_top_on.png", - "receiver_bottom_on.png", - "receiver_lr_on.png", - "receiver_lr_on.png", - "receiver_fb_on.png", - "receiver_fb_on.png", - }, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, walkable = false, + on_rotate = false, selection_box = { type = "fixed", fixed = { -3/16, -8/16, -8/16, 3/16, 3/16, 8/16 } @@ -42,16 +55,7 @@ minetest.register_node("mesecons_receiver:receiver_on", { }, groups = {dig_immediate = 3, not_in_creative_inventory = 1}, drop = "mesecons:wire_00000000_off", - mesecons = {conductor = { - state = mesecon.state.on, - rules = receiver_get_rules, - offstate = "mesecons_receiver:receiver_off" - }} -}) - -minetest.register_node("mesecons_receiver:receiver_off", { - drawtype = "nodebox", - description = "You hacker you", +}, { tiles = { "receiver_top_off.png", "receiver_bottom_off.png", @@ -60,51 +64,147 @@ minetest.register_node("mesecons_receiver:receiver_off", { "receiver_fb_off.png", "receiver_fb_off.png", }, - paramtype = "light", - paramtype2 = "facedir", - sunlight_propagates = true, - walkable = false, - selection_box = { - type = "fixed", - fixed = { -3/16, -8/16, -8/16, 3/16, 3/16, 8/16 } - }, - node_box = { - type = "fixed", - fixed = rcvboxes - }, - groups = {dig_immediate = 3, not_in_creative_inventory = 1}, - drop = "mesecons:wire_00000000_off", mesecons = {conductor = { state = mesecon.state.off, rules = receiver_get_rules, onstate = "mesecons_receiver:receiver_on" }} +}, { + tiles = { + "receiver_top_on.png", + "receiver_bottom_on.png", + "receiver_lr_on.png", + "receiver_lr_on.png", + "receiver_fb_on.png", + "receiver_fb_on.png", + }, + mesecons = {conductor = { + state = mesecon.state.on, + rules = receiver_get_rules, + offstate = "mesecons_receiver:receiver_off" + }} +}) + +mesecon.register_node("mesecons_receiver:receiver_up", { + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + walkable = false, + on_rotate = false, + selection_box = { + type = "fixed", + fixed = up_rcvboxes + }, + node_box = { + type = "fixed", + fixed = up_rcvboxes + }, + groups = {dig_immediate = 3, not_in_creative_inventory = 1}, + drop = "mesecons:wire_00000000_off", +}, { + tiles = {"mesecons_wire_off.png"}, + mesecons = {conductor = { + state = mesecon.state.off, + rules = {{x=1, y=0, z=0}, + {x=-1, y=0, z=0}, + {x=0, y=0, z=1}, + {x=0, y=0, z=-1}, + {x=0, y=1, z=0}, + {x=0, y=2, z=0}}, + onstate = "mesecons_receiver:receiver_up_on" + }} +}, { + tiles = {"mesecons_wire_on.png"}, + mesecons = {conductor = { + state = mesecon.state.on, + rules = {{x=1, y=0, z=0}, + {x=-1, y=0, z=0}, + {x=0, y=0, z=1}, + {x=0, y=0, z=-1}, + {x=0, y=1, z=0}, + {x=0, y=2, z=0}}, + offstate = "mesecons_receiver:receiver_up_off" + }} +}) + +mesecon.register_node("mesecons_receiver:receiver_down", { + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + walkable = false, + on_rotate = false, + selection_box = { + type = "fixed", + fixed = down_rcvboxes + }, + node_box = { + type = "fixed", + fixed = down_rcvboxes + }, + groups = {dig_immediate = 3, not_in_creative_inventory = 1}, + drop = "mesecons:wire_00000000_off", +}, { + tiles = {"mesecons_wire_off.png"}, + mesecons = {conductor = { + state = mesecon.state.off, + rules = {{x=1,y=0, z=0}, + {x=-1,y=0, z=0}, + {x=0, y=0, z=1}, + {x=0, y=0, z=-1}, + {x=0, y=-2,z=0}}, + onstate = "mesecons_receiver:receiver_down_on" + }} +}, { + tiles = {"mesecons_wire_on.png"}, + mesecons = {conductor = { + state = mesecon.state.on, + rules = {{x=1,y=0, z=0}, + {x=-1,y=0, z=0}, + {x=0, y=0, z=1}, + {x=0, y=0, z=-1}, + {x=0, y=-2,z=0}}, + offstate = "mesecons_receiver:receiver_down_off" + }} }) function mesecon.receiver_get_pos_from_rcpt(pos, param2) local rules = {{x = 2, y = 0, z = 0}} if param2 == nil then param2 = minetest.get_node(pos).param2 end - if param2 == 2 then + local rcvtype = "mesecons_receiver:receiver_off" + local dir = minetest.facedir_to_dir(param2) + + if dir.x == 1 then + -- No action needed + elseif dir.z == -1 then rules = mesecon.rotate_rules_left(rules) - elseif param2 == 3 then + elseif dir.x == -1 then rules = mesecon.rotate_rules_right(mesecon.rotate_rules_right(rules)) - elseif param2 == 0 then + elseif dir.z == 1 then rules = mesecon.rotate_rules_right(rules) + elseif dir.y == -1 then + rules = mesecon.rotate_rules_up(rules) + rcvtype = "mesecons_receiver:receiver_up_off" + elseif dir.y == 1 then + rules = mesecon.rotate_rules_down(rules) + rcvtype = "mesecons_receiver:receiver_down_off" end local np = { x = pos.x + rules[1].x, y = pos.y + rules[1].y, z = pos.z + rules[1].z} - return np + return np, rcvtype end function mesecon.receiver_place(rcpt_pos) local node = minetest.get_node(rcpt_pos) - local pos = mesecon.receiver_get_pos_from_rcpt(rcpt_pos, node.param2) + local pos, rcvtype = mesecon.receiver_get_pos_from_rcpt(rcpt_pos, node.param2) local nn = minetest.get_node(pos) + local param2 = minetest.dir_to_facedir(minetest.facedir_to_dir(node.param2)) if string.find(nn.name, "mesecons:wire_") ~= nil then minetest.dig_node(pos) - minetest.set_node(pos, {name = "mesecons_receiver:receiver_off", param2 = node.param2}) + minetest.set_node(pos, {name = rcvtype, param2 = param2}) mesecon.on_placenode(pos, nn) end end @@ -133,11 +233,13 @@ minetest.register_on_dignode(function(pos, node) end) minetest.register_on_placenode(function (pos, node) - if string.find(node.name, "mesecons:wire_") ~=nil then - local rules = { {x = 2, y = 0, z = 0}, - {x =-2, y = 0, z = 0}, - {x = 0, y = 0, z = 2}, - {x = 0, y = 0, z =-2}} + if string.find(node.name, "mesecons:wire_") ~= nil then + local rules = { {x = 2, y = 0, z = 0}, + {x =-2, y = 0, z = 0}, + {x = 0, y = 0, z = 2}, + {x = 0, y = 0, z =-2}, + {x = 0, y = 2, z = 0}, + {x = 0, y = -2, z = 0}} local i = 1 while rules[i] ~= nil do local np = { x = pos.x + rules[i].x, @@ -150,3 +252,8 @@ minetest.register_on_placenode(function (pos, node) end end end) + +function mesecon.buttonlike_onrotate(pos, node) + minetest.after(0, mesecon.receiver_remove, pos, node) + minetest.after(0, mesecon.receiver_place, pos) +end diff --git a/mesecons_walllever/init.lua b/mesecons_walllever/init.lua index 9ae06555..e9454cd4 100644 --- a/mesecons_walllever/init.lua +++ b/mesecons_walllever/init.lua @@ -31,6 +31,7 @@ mesecon.register_node("mesecons_walllever:wall_lever", { "jeija_wall_lever_back_edges.png" }, mesh="jeija_wall_lever_off.obj", + on_rotate = mesecon.buttonlike_onrotate, mesecons = {receptor = { rules = mesecon.rules.buttonlike_get, state = mesecon.state.off @@ -44,6 +45,7 @@ mesecon.register_node("mesecons_walllever:wall_lever", { "jeija_wall_lever_back_edges.png" }, mesh="jeija_wall_lever_on.obj", + on_rotate = false, mesecons = {receptor = { rules = mesecon.rules.buttonlike_get, state = mesecon.state.on diff --git a/mesecons_wires/doc/mesecon/preview.png b/mesecons_wires/doc/mesecon/preview.png old mode 100644 new mode 100755 diff --git a/mesecons_wires/init.lua b/mesecons_wires/init.lua index 879cfa1f..ced7c99d 100644 --- a/mesecons_wires/init.lua +++ b/mesecons_wires/init.lua @@ -140,7 +140,7 @@ nid_inc = function (nid) return i <= 8 end -register_wires = function() +local function register_wires() local nid = {} while true do -- Create group specifiction and nodeid string (see note above for details) diff --git a/moretrees/node_defs.lua b/moretrees/node_defs.lua index e5f81278..16b979f2 100644 --- a/moretrees/node_defs.lua +++ b/moretrees/node_defs.lua @@ -31,7 +31,7 @@ local moretrees_plantlike_leaves_visual_scale = 1 if moretrees.plantlike_leaves then moretrees_new_leaves_drawtype = "plantlike" - moretrees_plantlike_leaves_visual_scale = 1.189 + moretrees_plantlike_leaves_visual_scale = math.sqrt(2) end -- redefine default leaves to handle plantlike and/or leaf decay options @@ -40,7 +40,7 @@ if moretrees.plantlike_leaves then minetest.override_item("default:leaves", { inventory_image = minetest.inventorycube("default_leaves.png"), drawtype = "plantlike", - visual_scale = 1.189 + visual_scale = math.sqrt(2) }) else minetest.override_item("default:leaves", { @@ -54,7 +54,7 @@ if moretrees.plantlike_leaves then minetest.override_item("default:jungleleaves", { inventory_image = minetest.inventorycube("default_jungleleaves.png"), drawtype = "plantlike", - visual_scale = 1.189 + visual_scale = math.sqrt(2) }) else minetest.override_item("default:jungleleaves", { diff --git a/unified_inventory/api.lua b/unified_inventory/api.lua index e1b980ab..2b639227 100644 --- a/unified_inventory/api.lua +++ b/unified_inventory/api.lua @@ -27,7 +27,7 @@ minetest.after(0.01, function() local groupchk = string.find(chk, "group:") if (not groupchk and not minetest.registered_items[chk]) or (groupchk and not unified_inventory.get_group_item(string.gsub(chk, "group:", "")).item) - or minetest.get_item_group(chk, "exclude_from_craft_guide") ~= 0 then + or minetest.get_item_group(chk, "not_in_craft_guide") ~= 0 then unknowns = true end end diff --git a/worldedit_commands/wand.lua b/worldedit_commands/wand.lua index 79d9eb2a..16f92654 100644 --- a/worldedit_commands/wand.lua +++ b/worldedit_commands/wand.lua @@ -8,9 +8,9 @@ minetest.register_tool(":worldedit:wand", { full_punch_interval = 1.0, max_drop_level = 0, groupcaps={ - fleshy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1}, - snappy={times={[2]=0.80, [3]=0.40}, maxwear=0.05, maxlevel=1}, - choppy={times={[3]=0.90}, maxwear=0.05, maxlevel=0} + fleshy={times={[2]=0.80, [3]=0.40}, uses=1/0.05, maxlevel=1}, + snappy={times={[2]=0.80, [3]=0.40}, uses=1/0.05, maxlevel=1}, + choppy={times={[3]=0.90}, uses=1/0.05, maxlevel=0} } },