From 4f25578f16ff33c2b064d24911e91e007472b413 Mon Sep 17 00:00:00 2001 From: Joachim Stolberg Date: Mon, 17 Feb 2020 22:46:29 +0100 Subject: [PATCH] several bugs fixed here and there --- basis/fuel_lib.lua | 2 +- basis/liquid_lib.lua | 20 +- energy_storage/generator.lua | 2 +- energy_storage/heatexchanger.lua | 404 ----------------------- energy_storage/heatexchanger1.lua | 4 +- hydrogen/electrolyzer.lua | 22 +- hydrogen/fuelcell.lua | 7 +- items/petroleum.lua | 6 +- liquids/node_api.lua | 2 + liquids/pump.lua | 1 + locale/techage.de.tr | 4 +- locale/techage.de.tr.old | 88 ++++- locale/template.txt | 4 +- power/distribution.lua | 4 +- power/node_api.lua | 6 +- power/power_terminal.lua | 2 + solar/inverter.lua | 2 +- ta3_power/tiny_generator.lua | 11 +- textures/techage_appl_liquid_hopper.png | Bin 291 -> 248 bytes textures/techage_appl_quarry.png | Bin 248 -> 208 bytes textures/techage_frame_waterpump.png | Bin 977 -> 339 bytes textures/techage_frame_waterpump_top.png | Bin 881 -> 278 bytes textures/techage_hydrogen_inv.png | Bin 338 -> 338 bytes textures/techage_quarry_left14.png | Bin 1791 -> 442 bytes tools/repairkit.lua | 65 ++-- 25 files changed, 166 insertions(+), 490 deletions(-) delete mode 100644 energy_storage/heatexchanger.lua diff --git a/basis/fuel_lib.lua b/basis/fuel_lib.lua index df46357..bd26a90 100644 --- a/basis/fuel_lib.lua +++ b/basis/fuel_lib.lua @@ -79,7 +79,7 @@ function techage.fuel.can_dig(pos, player) nvm.liquid = nvm.liquid or {} nvm.liquid.amount = nvm.liquid.amount or 0 local inv = M(pos):get_inventory() - return inv:is_empty("fuel") and nvm.liquid.amount == 0 + return not inv or inv:is_empty("fuel") and nvm.liquid.amount == 0 end function techage.fuel.on_rightclick(pos, node, clicker) diff --git a/basis/liquid_lib.lua b/basis/liquid_lib.lua index ff40707..2dfe507 100644 --- a/basis/liquid_lib.lua +++ b/basis/liquid_lib.lua @@ -48,8 +48,7 @@ end function techage.liquid.is_empty(pos) local nvm = techage.get_nvm(pos) - local inv = minetest.get_meta(pos):get_inventory() - return inv:is_empty("src") and inv:is_empty("dst") and (not nvm.liquid or (nvm.liquid.amount or 0) == 0) + return not nvm.liquid or (nvm.liquid.amount or 0) == 0 end techage.liquid.recv_message = { @@ -89,6 +88,7 @@ local function get_full_container(empty_container, inv_item) return ContainerDef[empty_container] and ContainerDef[empty_container][inv_item] end +-- used by filler local function fill_container(pos, inv, empty_container) local nvm = techage.get_nvm(pos) nvm.liquid = nvm.liquid or {} @@ -112,6 +112,7 @@ local function fill_container(pos, inv, empty_container) return false end +-- used by filler local function empty_container(pos, inv, full_container) local nvm = techage.get_nvm(pos) nvm.liquid = nvm.liquid or {} @@ -135,7 +136,7 @@ local function empty_container(pos, inv, full_container) return false end --- check if the given empty container can be replaced by a full +-- check if the wielded empty container can be replaced by a full -- container and added to the players inventory local function fill_on_punch(nvm, empty_container, item_count, puncher) nvm.liquid = nvm.liquid or {} @@ -176,10 +177,17 @@ local function fill_on_punch(nvm, empty_container, item_count, puncher) end end -local function empty_on_punch(pos, nvm, full_container) +-- check of the wielded full container can be emptied into the tank +local function empty_on_punch(pos, nvm, full_container, item_count) nvm.liquid = nvm.liquid or {} nvm.liquid.amount = nvm.liquid.amount or 0 - local lqd_def = get_liquid_def(full_container) + local lqd_def + -- handle legacy items + if full_container == "techage:hydrogen" or full_container == "techage:oil_source" then + lqd_def = {inv_item = full_container, size = item_count, container = ""} + else + lqd_def = get_liquid_def(full_container) + end local ndef_lqd = LQD(pos) if lqd_def and ndef_lqd then local tank_size = ndef_lqd.capa or 0 @@ -204,7 +212,7 @@ function techage.liquid.on_punch(pos, node, puncher, pointed_thing) local wielded_item = puncher:get_wielded_item():get_name() local item_count = puncher:get_wielded_item():get_count() local new_item = fill_on_punch(nvm, wielded_item, item_count, puncher) - or empty_on_punch(pos, nvm, wielded_item) + or empty_on_punch(pos, nvm, wielded_item, item_count) if new_item then puncher:set_wielded_item(new_item) M(pos):set_string("formspec", techage.fuel.formspec(pos, nvm)) diff --git a/energy_storage/generator.lua b/energy_storage/generator.lua index 08c2ffa..394d9ef 100644 --- a/energy_storage/generator.lua +++ b/energy_storage/generator.lua @@ -212,7 +212,7 @@ techage.register_node({"techage:ta4_generator", "techage:ta4_generator_on"}, { on_transfer = function(pos, in_dir, topic, payload) local nvm = techage.get_nvm(pos) if topic == "trigger" then - print("trigger", nvm.provided) + --print("trigger", nvm.provided) nvm.heatexchanger_trigger = 3 if nvm.running then return nvm.provided or 0.1 diff --git a/energy_storage/heatexchanger.lua b/energy_storage/heatexchanger.lua deleted file mode 100644 index c21f0ec..0000000 --- a/energy_storage/heatexchanger.lua +++ /dev/null @@ -1,404 +0,0 @@ ---[[ - - TechAge - ======= - - Copyright (C) 2019-2020 Joachim Stolberg - - GPL v3 - See LICENSE.txt for more information - - TA4 Heat Exchanger - -]]-- - --- for lazy programmers -local S2P = minetest.string_to_pos -local P2S = minetest.pos_to_string -local M = minetest.get_meta -local S = techage.S - -local CYCLE_TIME = 2 -local PWR_PERF = 60 -local GRVL_CAPA = 700 -local PWR_CAPA = { - [3] = GRVL_CAPA * 3 * 3 * 3, -- 18900 Cyc = 630 min = 31.5 Tage bei einem ku, oder 31,5 * 24 kuh = 756 kuh = 12,6 h bei 60 ku - [5] = GRVL_CAPA * 5 * 5 * 5, -- ~2.5 days - [7] = GRVL_CAPA * 7 * 7 * 7, -- ~6 days -} - -local Cable = techage.ElectricCable -local Pipe = techage.LiquidPipe -local power = techage.power - -local function in_range(val, min, max) - if val < min then return min end - if val > max then return max end - return val -end - --- commands for 'techage:heatexchanger1' -local function turbine_cmnd(pos, cmnd) - return techage.transfer( - pos, - "R", -- outdir - cmnd, -- topic - nil, -- payload - Pipe, -- Pipe - {"techage:ta4_turbine", "techage:ta4_turbine_on"}) -end - -local function heatexchanger3_cmnd(pos, cmnd) - return techage.transfer( - {x = pos.x, y = pos.y + 1, z = pos.z}, - "U", -- outdir - cmnd, -- topic - nil, -- payload - nil, -- Pipe - {"techage:heatexchanger3"}) -end - -local function inlet_cmnd(pos, cmnd, payload) - return techage.transfer( - pos, - "L", -- outdir - cmnd, -- topic - payload, -- payload - Pipe, -- Pipe - {"techage:ta4_pipe_inlet"}) -end - -local function play_sound(pos) - local mem = techage.get_mem(pos) - if not mem.handle or mem.handle == -1 then - mem.handle = minetest.sound_play("techage_booster", { - pos = pos, - gain = 0.5, - max_hear_distance = 10, - loop = true}) - if mem.handle == -1 then - minetest.after(1, play_sound, pos) - end - end -end - -local function stop_sound(pos) - local mem = techage.get_mem(pos) - if mem.handle then - minetest.sound_stop(mem.handle) - mem.handle = nil - end -end - -local function swap_node(pos, name) - local node = techage.get_node_lvm(pos) - if node.name == name then - return - end - node.name = name - minetest.swap_node(pos, node) -end - -local function charging(pos, nvm, is_charging) - if nvm.capa >= nvm.capa_max then - return - end - if is_charging ~= nvm.was_charging then - nvm.was_charging = is_charging - if is_charging then - turbine_cmnd(pos, "stop") - play_sound(pos) - else - turbine_cmnd(pos, "start") - stop_sound(pos) - end - elseif is_charging then - play_sound(pos) - end -end - -local function delivering(pos, nvm, delivered) - if nvm.capa <= 0 then - return - end - if delivered ~= nvm.had_delivered then - nvm.had_delivered = delivered - if delivered > 0 then - turbine_cmnd(pos, "start") - elseif delivered == 0 then - turbine_cmnd(pos, "stop") - end - end -end - -local function glowing(pos, nvm, should_glow) - if nvm.win_pos then - if should_glow then - swap_node(nvm.win_pos, "techage:glow_gravel") - else - swap_node(nvm.win_pos, "default:gravel") - end - end -end - -local function formspec(self, pos, nvm) - return "size[5,3]".. - default.gui_bg.. - default.gui_bg_img.. - default.gui_slots.. - "image[0,0.5;1,2;"..techage.power.formspec_power_bar(nvm.capa_max, nvm.capa).."]".. - "label[0.2,2.5;Load]".. - "button[1.1,1;1.8,1;update;"..S("Update").."]".. - "image_button[3,1;1,1;".. self:get_state_button_image(nvm) ..";state_button;]".. - "image[4,0.5;1,2;"..techage.power.formspec_load_bar(-(nvm.delivered or 0), PWR_PERF).."]".. - "label[4.2,2.5;Flow]" -end - -local function error_info(pos, err) - local own_num = M(pos):get_string("node_number") - local pos1 = {x = pos.x, y = pos.y + 1, z = pos.z} - M(pos1):set_string("infotext", S("TA4 Heat Exchanger").." "..own_num.." : "..err) -end - -local function can_start(pos, nvm, state) - if turbine_cmnd(pos, "power") then - local diameter = inlet_cmnd(pos, "diameter") - if diameter then - nvm.capa_max = PWR_CAPA[tonumber(diameter)] or 0 - if nvm.capa_max ~= 0 then - local owner = M(pos):get_string("owner") or "" - if inlet_cmnd(pos, "volume", owner) then - error_info(pos, "") - return true - else - error_info(pos, "storage volume error") - return false - end - else - error_info(pos, "wrong storage diameter: "..diameter) - return false - end - else - error_info(pos, "inlet/pipe error") - return false - end - else - error_info(pos, "power network error") - return false - end - return false -end - -local function start_node(pos, nvm, state) - nvm.running = true - nvm.delivered = 0 - nvm.was_charging = true - nvm.had_delivered = nil - play_sound(pos) - nvm.win_pos = inlet_cmnd(pos, "window") - power.secondary_start(pos, nvm, PWR_PERF, PWR_PERF) -end - -local function stop_node(pos, nvm, state) - nvm.running = false - nvm.delivered = 0 - turbine_cmnd(pos, "stop") - power.secondary_stop(pos, nvm) -end - -local State = techage.NodeStates:new({ - node_name_passive = "techage:heatexchanger1", - cycle_time = CYCLE_TIME, - standby_ticks = 0, - can_start = can_start, - start_node = start_node, - stop_node = stop_node, -}) - -local function node_timer(pos, elapsed) - local nvm = techage.get_nvm(pos) - if nvm.running and turbine_cmnd(pos, "power") then - nvm.capa = nvm.capa or 0 - nvm.capa_max = nvm.capa_max or 0 - nvm.delivered = nvm.delivered or 0 - nvm.delivered = power.secondary_alive(pos, nvm, nvm.capa, nvm.capa_max) - nvm.capa = nvm.capa - nvm.delivered - nvm.capa = in_range(nvm.capa, 0, nvm.capa_max) - glowing(pos, nvm, nvm.capa > nvm.capa_max * 0.8) - charging(pos, nvm, nvm.delivered < 0) - delivering(pos, nvm, nvm.delivered) - end - return nvm.running -end - -local function can_dig(pos, player) - local nvm = techage.get_nvm(pos) - return not nvm.running -end - -local function orientate_node(pos, name) - local node = minetest.get_node({x=pos.x, y=pos.y-1, z=pos.z}) - if node.name == name then - local param2 = node.param2 - node = minetest.get_node(pos) - node.param2 = param2 - minetest.swap_node(pos, node) - else - minetest.remove_node(pos) - return true - end -end - --- Top -minetest.register_node("techage:heatexchanger3", { - description = S("TA4 Heat Exchanger 3"), - tiles = { - -- up, down, right, left, back, front - "techage_filling_ta4.png^techage_frame_ta4_top.png", - "techage_hole_ta4.png", - "techage_filling_ta4.png^techage_frameT_ta4.png^techage_appl_hole_pipe.png", - "techage_filling_ta4.png^techage_frameT_ta4.png^techage_appl_hole_pipe.png", - "techage_filling_ta4.png^techage_frameT_ta4.png^techage_appl_ribsT.png", - "techage_filling_ta4.png^techage_frameT_ta4.png^techage_appl_ribsT.png", - }, - - after_place_node = function(pos, placer) - return orientate_node(pos, "techage:heatexchanger2") - end, - - paramtype2 = "facedir", - groups = {crumbly = 2, cracky = 2, snappy = 2}, - on_rotate = screwdriver.disallow, - is_ground_content = false, - sounds = default.node_sound_metal_defaults(), -}) - --- Middle node with the formspec from the bottom node -minetest.register_node("techage:heatexchanger2", { - description = S("TA4 Heat Exchanger 2"), - tiles = { - -- up, down, right, left, back, front - "techage_hole_ta4.png", - "techage_hole_ta4.png", - "techage_filling_ta4.png^techage_frameM_ta4.png^techage_appl_tes_turb.png", - "techage_filling_ta4.png^techage_frameM_ta4.png^techage_appl_tes_core.png", - "techage_filling_ta4.png^techage_frameM_ta4.png^techage_appl_ribsB.png", - "techage_filling_ta4.png^techage_frameM_ta4.png^techage_appl_ribsB.png", - }, - - selection_box = { - type = "fixed", - fixed = {-1/2, -1.5/2, -1/2, 1/2, 1/2, 1/2}, - }, - - after_place_node = function(pos, placer) - if orientate_node(pos, "techage:heatexchanger1") then - return true - end - local pos1 = {x = pos.x, y = pos.y - 1, z = pos.z} - local nvm = techage.get_nvm(pos1) - local own_num = M(pos1):get_string("node_number") - M(pos):set_string("formspec", formspec(State, pos1, nvm)) - M(pos):set_string("infotext", S("TA4 Heat Exchanger").." "..own_num) - end, - - on_rightclick = function(pos) - local pos1 = {x = pos.x, y = pos.y - 1, z = pos.z} - local nvm = techage.get_nvm(pos1) - M(pos):set_string("formspec", formspec(State, pos1, nvm)) - end, - - on_receive_fields = function(pos, formname, fields, player) - if minetest.is_protected(pos, player:get_player_name()) then - return - end - local pos1 = {x = pos.x, y = pos.y - 1, z = pos.z} - local nvm = techage.get_nvm(pos1) - State:state_button_event(pos1, nvm, fields) - M(pos):set_string("formspec", formspec(State, pos1, nvm)) - end, - - paramtype2 = "facedir", - groups = {crumbly = 2, cracky = 2, snappy = 2}, - on_rotate = screwdriver.disallow, - is_ground_content = false, - sounds = default.node_sound_metal_defaults(), -}) - --- Base -minetest.register_node("techage:heatexchanger1", { - description = S("TA4 Heat Exchanger 1"), - tiles = { - -- up, down, right, left, back, front - "techage_hole_ta4.png^techage_appl_arrow_white.png", - "techage_filling_ta4.png^techage_frame_ta4.png", - "techage_filling_ta4.png^techage_frameB_ta4.png^techage_appl_hole_pipe.png", - "techage_filling_ta4.png^techage_frameB_ta4.png^techage_appl_hole_pipe.png", - "techage_filling_ta4.png^techage_frameB_ta4.png^techage_appl_hole_electric.png", - "techage_filling_ta4.png^techage_frameB_ta4.png^techage_appl_hole_electric.png", - }, - on_timer = node_timer, - paramtype2 = "facedir", - groups = {crumbly = 2, cracky = 2, snappy = 2}, - on_rotate = screwdriver.disallow, - is_ground_content = false, - sounds = default.node_sound_metal_defaults(), -}) - -techage.power.register_node({"techage:heatexchanger1"}, { - conn_sides = {"F", "B"}, - power_network = Cable, - after_place_node = function(pos, placer) - local nvm = techage.get_nvm(pos) - local meta = M(pos) - local own_num = techage.add_node(pos, "techage:heatexchanger1") - meta:set_string("owner", placer:get_player_name()) - State:node_init(pos, nvm, own_num) - nvm.capa = 0 - end, -}) - -Pipe:add_secondary_node_names({"techage:heatexchanger1", "techage:heatexchanger3"}) - --- for logical communication -techage.register_node({"techage:heatexchanger1"}, { - on_recv_message = function(pos, src, topic, payload) - local nvm = techage.get_nvm(pos) - if topic == "load" then - return techage.power.percent(nvm.capa_max, nvm.capa) - elseif topic == "size" then - return (nvm.capa_max or 0) / GRVL_CAPA - else - return State:on_receive_message(pos, topic, payload) - end - end, -}) - - -minetest.register_craft({ - output = "techage:heatexchanger1", - recipe = { - {"default:tin_ingot", "techage:electric_cableS", "default:steel_ingot"}, - {"techage:ta4_pipeS", "basic_materials:gear_steel", "techage:ta4_pipeS"}, - {"", "techage:baborium_ingot", ""}, - }, -}) - -minetest.register_craft({ - output = "techage:heatexchanger2", - recipe = { - {"default:tin_ingot", "", "default:steel_ingot"}, - {"", "techage:ta4_wlanchip", ""}, - {"", "techage:baborium_ingot", ""}, - }, -}) - -minetest.register_craft({ - output = "techage:heatexchanger3", - recipe = { - {"default:tin_ingot", "dye:blue", "default:steel_ingot"}, - {"techage:ta4_pipeS", "basic_materials:gear_steel", "techage:ta4_pipeS"}, - {"", "techage:baborium_ingot", ""}, - }, -}) - diff --git a/energy_storage/heatexchanger1.lua b/energy_storage/heatexchanger1.lua index 19d2b8d..231571f 100644 --- a/energy_storage/heatexchanger1.lua +++ b/energy_storage/heatexchanger1.lua @@ -135,6 +135,8 @@ end local function tubelib2_on_update2(pos, outdir, tlib2, node) power.update_network(pos, outdir, tlib2) + local nvm = techage.get_nvm(pos) + nvm.running = false end local function can_start(pos, nvm) @@ -179,7 +181,7 @@ local function node_timer(pos, elapsed) nvm.needed = taken - given nvm.capa = in_range(nvm.capa + nvm.needed, 0, nvm.capa_max) glowing(pos, nvm, nvm.capa > nvm.capa_max * 0.8) - print("node_timer TES "..P2S(pos), nvm.needed, nvm.capa, nvm.capa_max) + --print("node_timer TES "..P2S(pos), nvm.needed, nvm.capa, nvm.capa_max) return true end diff --git a/hydrogen/electrolyzer.lua b/hydrogen/electrolyzer.lua index 3ef7589..8580fb1 100644 --- a/hydrogen/electrolyzer.lua +++ b/hydrogen/electrolyzer.lua @@ -8,7 +8,7 @@ GPL v3 See LICENSE.txt for more information - TA4 Electrolyzer v2 + TA4 Electrolyzer ]]-- @@ -64,8 +64,8 @@ local function stop_node(pos, nvm, state) end local State = techage.NodeStates:new({ - node_name_passive = "techage:ta4_electrolyzer2", - node_name_active = "techage:ta4_electrolyzer2_on", + node_name_passive = "techage:ta4_electrolyzer", + node_name_active = "techage:ta4_electrolyzer_on", cycle_time = CYCLE_TIME, standby_ticks = STANDBY_TICKS, formspec_func = formspec, @@ -90,7 +90,7 @@ end local function generating(pos, nvm) nvm.num_pwr_units = nvm.num_pwr_units or 0 nvm.countdown = nvm.countdown or 0 - print("electrolyzer", nvm.running, nvm.taken, nvm.num_pwr_units, nvm.liquid.amount) + --print("electrolyzer", nvm.running, nvm.taken, nvm.num_pwr_units, nvm.liquid.amount) if nvm.taken > 0 then nvm.num_pwr_units = nvm.num_pwr_units + (nvm.taken or 0) if nvm.num_pwr_units >= PWR_UNITS_PER_HYDROGEN_ITEM then @@ -140,7 +140,7 @@ local function after_place_node(pos) local nvm = techage.get_nvm(pos) nvm.running = false nvm.num_pwr_units = 0 - local number = techage.add_node(pos, "techage:ta4_electrolyzer2") + local number = techage.add_node(pos, "techage:ta4_electrolyzer") State:node_init(pos, nvm, number) local node = minetest.get_node(pos) M(pos):set_int("in_dir", techage.side_to_indir("R", node.param2)) @@ -196,7 +196,7 @@ local liquid_def = { end } -minetest.register_node("techage:ta4_electrolyzer2", { +minetest.register_node("techage:ta4_electrolyzer", { description = S("TA4 Electrolyzer"), tiles = { -- up, down, right, left, back, front @@ -231,7 +231,7 @@ minetest.register_node("techage:ta4_electrolyzer2", { is_ground_content = false, }) -minetest.register_node("techage:ta4_electrolyzer2_on", { +minetest.register_node("techage:ta4_electrolyzer_on", { description = S("TA4 Electrolyzer"), tiles = { -- up, down, right, left, back, front @@ -278,12 +278,12 @@ minetest.register_node("techage:ta4_electrolyzer2_on", { light_source = 6, }) -Cable:add_secondary_node_names({"techage:ta4_electrolyzer2", "techage:ta4_electrolyzer2_on"}) -Pipe:add_secondary_node_names({"techage:ta4_electrolyzer2", "techage:ta4_electrolyzer2_on"}) -techage.register_node({"techage:ta4_electrolyzer2", "techage:ta4_electrolyzer2_on"}, liquid.recv_message) +Cable:add_secondary_node_names({"techage:ta4_electrolyzer", "techage:ta4_electrolyzer_on"}) +Pipe:add_secondary_node_names({"techage:ta4_electrolyzer", "techage:ta4_electrolyzer_on"}) +techage.register_node({"techage:ta4_electrolyzer", "techage:ta4_electrolyzer_on"}, liquid.recv_message) minetest.register_craft({ - output = "techage:ta4_electrolyzer2", + output = "techage:ta4_electrolyzer", recipe = { {'default:steel_ingot', 'dye:blue', 'default:steel_ingot'}, {'techage:electric_cableS', 'default:glass', 'techage:tubeS'}, diff --git a/hydrogen/fuelcell.lua b/hydrogen/fuelcell.lua index b8c5505..5009e7f 100644 --- a/hydrogen/fuelcell.lua +++ b/hydrogen/fuelcell.lua @@ -83,11 +83,6 @@ local function has_hydrogen(nvm) return nvm.num_pwr_units > 0 or (nvm.liquid.amount > 0 and nvm.liquid.name == "techage:hydrogen") end -local function contains_hydrogen(pos) - local inv = M(pos):get_inventory() - return inv:contains_item("src", ItemStack("techage:hydrogen")) -end - local function consuming(pos, nvm) if nvm.num_pwr_units <= 0 then nvm.num_pwr_units = nvm.num_pwr_units + PWR_UNITS_PER_HYDROGEN_ITEM @@ -99,7 +94,7 @@ end -- converts hydrogen into power local function node_timer(pos, elapsed) local nvm = techage.get_nvm(pos) - print("fuelcell", nvm.running, nvm.given, nvm.num_pwr_units) + --print("fuelcell", nvm.running, nvm.given, nvm.num_pwr_units) if has_hydrogen(nvm) then local outdir = M(pos):get_int("outdir") nvm.given = power.generator_alive(pos, Cable, CYCLE_TIME, outdir) diff --git a/items/petroleum.lua b/items/petroleum.lua index e2b04fd..463bd78 100644 --- a/items/petroleum.lua +++ b/items/petroleum.lua @@ -36,18 +36,18 @@ minetest.register_craftitem("techage:gasoline", { }) minetest.register_craftitem("techage:gas", { - description = S("TA3 Gas"), + description = S("TA3 Propane"), inventory_image = "techage_gas_inv.png", }) minetest.register_craftitem("techage:ta3_cylinder_small_gas", { - description = S("Gas Cylinder Small"), + description = S("Propane Cylinder Small"), inventory_image = "techage_gas_cylinder_small.png^[colorize:#e51818:120", stack_max = 1, }) minetest.register_craftitem("techage:ta3_cylinder_large_gas", { - description = S("Gas Cylinder Large"), + description = S("Propane Cylinder Large"), inventory_image = "techage_gas_cylinder_large.png^[colorize:#e51818:120", stack_max = 1, }) diff --git a/liquids/node_api.lua b/liquids/node_api.lua index 550297b..1511715 100644 --- a/liquids/node_api.lua +++ b/liquids/node_api.lua @@ -46,6 +46,7 @@ end -- store network ID on each pump like node local function store_netID(pos, outdir, netID) networks.connection_walk(pos, outdir, Pipe, function(pos, indir, node) + print("store_netID", dump(indir)) local ntype = net_def(pos, "pipe2").ntype if ntype and ntype == "pump" then local nvm = techage.get_nvm(pos) @@ -84,6 +85,7 @@ local function get_netID(pos, outdir) end local function get_network_table(pos, outdir, ntype) + print("get_network_table", outdir) local netID = get_netID(pos, outdir) if netID then local netw = networks.get_network("pipe2", netID) diff --git a/liquids/pump.lua b/liquids/pump.lua index 190f405..96cdb82 100644 --- a/liquids/pump.lua +++ b/liquids/pump.lua @@ -65,6 +65,7 @@ local State4 = techage.NodeStates:new({ local function pumping(pos, nvm, state, capa) local outdir = M(pos):get_int("outdir") local starter = get_starter_name(pos) + print("pumping", outdir, Flip[outdir]) local taken, name = liquid.take(pos, Flip[outdir], nil, capa, starter) if taken > 0 then local leftover = liquid.put(pos, outdir, name, taken, starter) diff --git a/locale/techage.de.tr b/locale/techage.de.tr index 4d08b2e..0f5ea17 100644 --- a/locale/techage.de.tr +++ b/locale/techage.de.tr @@ -119,6 +119,8 @@ Power Source=Stromquelle Primary available=Primär verfügbar Primary needed=Primär benötigt Priv missing=Rechte fehlen +Propane Cylinder Large=Propangasflasche groß +Propane Cylinder Small=Propangasflasche klein Pumpjack=Ölpumpe Punch the block to make the area visible.=Schlage auf den Bock um den Bereich anzuzeigen. Pusher=Schieber @@ -214,7 +216,6 @@ TA3 Fuel Oil=TA3 Schweröl TA3 Fuel Oil Barrel=TA3 Schwerölfass TA3 Fuel Oil Canister=TA3 Schwerölkanister TA3 Furnace Oil Burner=TA3 Ofen-Ölbrenner -TA3 Gas=TA3 Gas TA3 Gasoline=TA3 Benzin TA3 Gasoline Barrel=TA3 Benzinfass TA3 Gasoline Canister=TA3 Benzinkanister @@ -236,6 +237,7 @@ TA3 Player Detector=TA3 Spieler Detektor TA3 Power Station Firebox=TA3 Kraftwerks-Feuerbox TA3 Power Station Oil Burner=TA3 Kraftwerks-Ölbrenner TA3 Power Terminal=TA3 Strom Terminal +TA3 Propane=TA3 Propan TA3 Protected Chest=TA3 Gesicherte Kiste TA3 Pump=TA3 Pumpe TA3 Repeater=TA3 Wiederholer diff --git a/locale/techage.de.tr.old b/locale/techage.de.tr.old index 1f905e9..4d08b2e 100644 --- a/locale/techage.de.tr.old +++ b/locale/techage.de.tr.old @@ -1,9 +1,11 @@ # textdomain: techage #### TA3 Terminal ####@n@nSend commands to your machines@nand output text messages from your@nmachines to the Terminal.@n@nCommand syntax:@n cmd @n@nexample: cmd 181 on@n is the number of the node to which the command is sent@n'on' is the command to turn machines/nodes on@nFurther commands can be retrieved by clicking on@nmachines/nodes with the Techage Info Tool.@n@nLocal commands:@n- clear @= clear screen@n- help @= this message@n- pub @= switch to public use@n- priv @= switch to private use@nTo program a user button with a command:@n set @ne.g. 'set 1 ON cmd 123 on'@n= -(Num. nodes loaded / max. : Power current / max.)=(Anz. Blöcke geladen / max. : Strom aktuell / max.) +Active:=Aktiv: +All nodes:=Alle Blöcke: Allow to dig/place Techage power lines nearby power poles=Erlaubt TODO Aluminum=Aluminium +Area already loaded or max. number of Forceload Blocks reached!=Bereich bereits geladen oder maximale Anzahl von Forceload Blöcken erreicht! Ash=Asche Autocrafter=Autocrafter Axle Power Source=Achsenkraftquelle @@ -29,30 +31,56 @@ Biome=Biom Block configured items for open ports=Blockiere konfigurierte Gegenstände für offene Ausgänge Build derrick=Errichte Ölturm Compressed Gravel=Komprimiertes Kies +Consum. 1=Konsum. 1 +Consum. 2=Konsum. 2 Depth=Tiefe +Digging depth=Grabungstiefe Dirt with Ash=Erde mit Asche Distributor=Verteiler +Doser=Dosierer Drill Bit=Bohrstange +Drill area is protected=Bohrbereich ist geschützt +Drill bits missing=Bohrgestänge fehlt Ele Power Source=Ele Kraftquelle +Electricity=Strom +Electrolyzer=Eletrolyseur Electronic Fab=Elektronikfabrik Enter=Eingeben Epoxide Resin=Epoxidharz Epoxide Resin Barrel=Epoxidharz Fass Epoxide Resin Canister=Epoxidharz Kanister Error=Fehler +Firebox=Feuerkasten Flint and Iron=Flint and Iron Flowing Oil=Fließendes Öl +Flywheel=Schwungrad Force order of filter items=Erzwinge Reihenfolge +Fuel Cell=Brennstoffzelle +Fuel Menu=Brennstoff Menü Furnace Top=Ofenoberteil +Gas Cylinder Large=Gasflasche groß +Gas Cylinder Small=Gasflasche klein +Genera. 1=Genera. 1 +Genera. 2=Genera. 2 +Generator=Generator Gibbsite Powder=Gibbsit Pulver Gravel Rinser=Kiesspüler Gravel Sieve=Kiessieb Grinder=Mühle Grinding=Mahlen Heat=Hitze +Heat Exchanger=Wärmetauscher +Hydrogen Cylinder Large=Wasserstoffflasche groß +Hydrogen Cylinder Small=Wasserstoffflasche klein +In use:=In Benutzung: Insert destination node number(s)=Gebe Zielnummer(n) ein +Inverter=Wechselrichter Leave Powder=Laub Pulver +Liquid Filler=Einfülltrichter Liquid Sampler=Flüssigkeitensammler +Liquid Tank=Flüssigkeitstank +List of your Forceload Blocks:=Liste der Forceload Blöcke +Load=Ladung Lye=Lauge Lye Barrel=Lauge Fass Lye Canister=Lauge Kanister @@ -69,25 +97,33 @@ Meridium Sword=Meridium Schwert More water expected (2 m deep)!=Mehr Wasser erwartet (2 m tief) Needle Powder=Nadel Pulver Network Data=Netzwerkdaten +No network or active generator available!=Kein Stromnetz oder aktiver Generator verfügbar No plan available=Kein Plan verfügar No wind at this altitude!=Kein Wind auf dieser Höhe Node owner=Blockbesitzer +Number of all nodes=Anzahl aller Blöcke Number of nodes=Anzahl Blöcke Oil Drill Box=Ölbohrkiste Oil Pumpjack=Ölpumpe Oil Source=Erdöl Oil Tank=Öltank Oil amount=Ölmenge -Other consumers=Weitere Verbraucher Outp=Ergeb. Plan=Plan Plastic Granules=Plastikgranulat Position=Position Position temperature=Positionstemperatur -Power=Energie +Power AC=Wechselstrom +Power DC=Gleichstrom +Power Source=Stromquelle Primary available=Primär verfügbar Primary needed=Primär benötigt +Priv missing=Rechte fehlen +Pumpjack=Ölpumpe +Punch the block to make the area visible.=Schlage auf den Bock um den Bereich anzuzeigen. Pusher=Schieber +Quarry=Steinbrecher +Quarry area is protected=Bereich ist geschützt Recipe=Rezept Red Mud=Rotschlamm Red Mud Barrel=Rotschlamm Fass @@ -99,8 +135,11 @@ Save=Speichern Secondary available=Sekundär verfügbar Secondary needed=Sekundär benötigt Send signal if nodes have been:=Sende ein Signal falls Blöcke: +Show all forceload blocks in a 64x64x64 range=Zeige alle Forceload Blöcke im Umkreis von 64x64x64 Blöcken Sieved Basalt Gravel=Basaltkies gesiebt Sieved Gravel=Gesiebtes Kies +Start level=Startebene +Start level @= 0@nmeans the same Y-level@nas the quarry is placed=Startebene @= 0@nbedeutet gleiche Y-Ebene@nwie der Steinbrecher Steam Power Source=Dampfenergiequelle Store=Speichern Switched to private use!=Zur privaten Nutzung umgeschaltet @@ -116,6 +155,7 @@ TA Industrial Lamp 2=TA Industrielampe 2 TA Industrial Lamp 3=TA Industrielampe 3 TA Junction Pipe=TA Leitungskupplung TA Lamp=TA Lampe +TA Liquid Filler=TA Einfülltrichter TA Pipe=TA Leitung (Flüssigkeiten) TA Power Line=TA Stromleitung TA Power Pole=TA Strommast @@ -130,7 +170,6 @@ TA1 Burning=TA1 Brennen TA1 Charcoal=TA1 Holzkohle TA1 Diamond Hammer (smash stone to gravel)=TA1 Diamanthammer (zerschlage Stein zu Kies) TA1 Gravel Sieve=TA1 Kiessieb -TA1 Hopper=TA1 Trichter TA1 Iron Ingot=TA1 Eisenbarren TA1 Lighter=TA1 Anzünder TA1 Melting=TA1 Schmelzen @@ -149,7 +188,7 @@ TA2 Gearbox=TA2 Getriebeblock TA2 Gravel Sieve=TA2 Kiessieb TA2 Protected Chest=TA2 Gesicherte Kiste TA2 Steam Pipe=TA2 Dampfleitung -TA3 Akku=TA3 Akku +TA3 Accu Box=Akkublock TA3 Akku Box=TA3 Akku Block TA3 Bitumen=TA3 Bitumen TA3 Bitumen Barrel=TA3 Bitumenfass @@ -161,7 +200,6 @@ TA3 Button/Switch=TA3 Taster/Schalter TA3 Canister=TA3 Kanister TA3 Cart Detector=TA3 Wagen Detektor TA3 Coal Power Station Firebox=TA3 Kohlekraftwerks-Feuerbox -TA3 Coal/oil=TA3 Kohle/Öl TA3 Cooler=TA3 Kühler TA3 Derrick=TA3 Bohrturm TA3 Detector=TA3 Detektor @@ -175,7 +213,6 @@ TA3 Ele Fab=TA3 E-Fabrik TA3 Fuel Oil=TA3 Schweröl TA3 Fuel Oil Barrel=TA3 Schwerölfass TA3 Fuel Oil Canister=TA3 Schwerölkanister -TA3 Funnel=TA3 Trichter TA3 Furnace Oil Burner=TA3 Ofen-Ölbrenner TA3 Gas=TA3 Gas TA3 Gasoline=TA3 Benzin @@ -193,6 +230,7 @@ TA3 Oil Barrel=TA3 Ölfass TA3 Oil Canister=TA3 Erdölkanister TA3 Oil Explorer=TA3 Ölexplorer TA3 Oil Reboiler=TA3 Aufkocher +TA3 Oil Reboiler: blocked=TA3 Aufkocher: blockiert TA3 Oil Storage=TA3 Öl Speicher TA3 Player Detector=TA3 Spieler Detektor TA3 Power Station Firebox=TA3 Kraftwerks-Feuerbox @@ -213,7 +251,6 @@ TA4 Carbon Fiber=TA4 Kohlefaser TA4 Derrick=TA4 Bohrturm TA4 Doser=TA4 Dosierer TA4 Electrolyzer=TA4 Elektrolyseur -TA4 Energy Storage=TA4 Energiespeicher TA4 Fuel Cell=TA4 Brennstoffzelle TA4 Fuel Cell Stack=Brennstoffzellenstapel TA4 Furnace Heater=TA4 Ofenheizung @@ -235,17 +272,18 @@ TA4 Reactor Filler Pipe=TA4 Reaktor Einfüllstutzen TA4 Reactor Stand=TA4 Reaktor Ständer TA4 Rotor Blade=TA4 Rotorblatt TA4 Silicon Wafer=TA4 Silizium-Wafer +TA4 Silo=Silo TA4 Solar Carrier Module=TA4 Solar Trägermodul TA4 Solar Carrier Module B=TA4 Solar Trägermodul U TA4 Solar Carrier Module T=TA4 Solar Trägermodul O TA4 Solar Inverter=TA4 Solar Wechselrichter -TA4 Solar Inverter AC=TA4 Solar Wechselrichter AC TA4 Solar Inverter DC=TA4 Solar Wechselrichter DC TA4 Solar Module=TA4 Solarmodul TA4 Streetlamp Solar Cell=TA4 Straßenlampen-Solarzelle TA4 Tank=TA4 Tank TA4 Turbine=TA4 Turbine TA4 WLAN Chip=TA4 WLAN Chip +TA4 Water Pump=Wasserpumpe TA4 Wind Turbine=TA4 Windkraftanlage TA4 Wind Turbine Nacelle=TA4 Windkraftanlagengondel TA4 Wind Turbine Signal Lamp=TA4 Windkraftanlagenlampe @@ -261,14 +299,26 @@ TechAge Signal Lamp=TechAge Signallampe TechAge Signal Lamp (can be colored)=TechAge Signallampe (kann gefärbt werden) TechAge Steel Mat=TechAge Stahlmatte TechAge Trowel=TechAge Kelle +Techage Forceload Block=Techage Forceload Block +The network is overloaded!=Das Stromnetz ist überlastet! +The network load is almost at the limit!=Das Stromnetz ist ziemlich am Limit! The wind turbines are too close together!=Die Windkraftanlagen stehen zu eng beisammen! +Thermal=Wärme Time=Zeit +Tiny Generator=Kleingenerator +To add fuel punch@nthis block@nwith a fuel container=Um Brennstoff nachzufüllen,@nschlage mit einem Kraftstoffbehälter@nauf den Block +To add liquids punch@nthe tank@nwith a liquid container=Um Flüssigkeit nachzufüllen,@nschlage mit einem Flüssigkeitsbehälter@nauf den Block +To add water punch@nthe boiler@nwith a water bucket=Um Wasser nachzufüllen,@nschlage mit einem Wassereimer@nauf den Block +Turned on:=Eingeschaltet: Update=Update Usmium Nuggets=Usmium Nuggets Usmium Powder=Usmium Pulver WLAN Chip=WLAN Chip Water=Wasser Water Barrel=Wasserfass +Water Boiler=Wasserboiler +Water Pump=Wasserpumpe +[Bucket] Lava can only be placed below sea level!=Lava kann nur unterhalb der Meerehöhe platziert werden! [TA4 Wind Turbine]=[TA4 Windkraftanlage] [TA] Area is protected!=[TA] Bereich ist geschützt [TA] Derrick is being built!=[TA] Bohrturm wird errichtet @@ -279,24 +329,36 @@ Water Barrel=Wasserfass [TechAge Programmer] Unknown node on=[TechAge Programmer] Unbekannter Block bei [TechAge Programmer] foreign or unknown node!=[TechAge Programmer] Fremder oder unbekannter Block! [TechAge Programmer] node programmed!=[TechAge Programmer] Nummer(n) programmiert! -[TechAge Programmer] number=[TechAge Programmer] Nummer= +[TechAge Programmer] number=[TechAge Programmer] Nummer [TechAge Programmer] programmer reset=[TechAge Programmer] Programmer zurück gesetzt -\\[ku\\]=\\[ku\\] accept=akzeptieren added=hinzugefügt wird added or removed=hinzugefügt oder entfernt wird +block can't be dug=Block kann nicht abgebaut werden commands like: help=Kommandos wie: help connected with=verbunden mit +did you check the plan?=hast du den Plan geprüft? empty=leer +full=voll +inlet/pipe error=Einlass/Röhrenfehler +level@==Ebene light=Licht +loaded=geladen +needs power=benötigt Strom +no fuel=kein Kraftstoff no fuel or no power=kein Strom oder Brennstoff +no oil=Kein Öl no power=kein Strom +no usable water=Kein brauchbares Wasser off=aus on=an -power=Strom +pos@==pos@= +power=Energie reactor defect=Reaktor defekt reactor defect or no power=Reaktor defekt oder kein Strom reactor has no power=Reaktor hat keinen Strom removed=entfernt stopped=gestoppt -##### not used anymore ##### \ No newline at end of file +water temperature=Wassertemperatur +wrong storage diameter=Falscher Wärmespeicher-Durchmesser +##### not used anymore ##### diff --git a/locale/template.txt b/locale/template.txt index 90e5353..a66b64c 100644 --- a/locale/template.txt +++ b/locale/template.txt @@ -117,6 +117,8 @@ Power Source= Primary available= Primary needed= Priv missing= +Propane Cylinder Large= +Propane Cylinder Small= Pumpjack= Punch the block to make the area visible.= Pusher= @@ -212,7 +214,6 @@ TA3 Fuel Oil= TA3 Fuel Oil Barrel= TA3 Fuel Oil Canister= TA3 Furnace Oil Burner= -TA3 Gas= TA3 Gasoline= TA3 Gasoline Barrel= TA3 Gasoline Canister= @@ -234,6 +235,7 @@ TA3 Player Detector= TA3 Power Station Firebox= TA3 Power Station Oil Burner= TA3 Power Terminal= +TA3 Propane= TA3 Protected Chest= TA3 Pump= TA3 Repeater= diff --git a/power/distribution.lua b/power/distribution.lua index 2dbf146..a595633 100644 --- a/power/distribution.lua +++ b/power/distribution.lua @@ -87,7 +87,7 @@ local function set_given(pos, given, tlib_type) else def["given"] = given end - return given + return def["given"] end return 0 end @@ -126,7 +126,7 @@ function techage.power.power_distribution(network, tlib_type) network.available2 = get_generator_sum(network.gen2, tlib_type) network.needed1 = get_consumer_sum(network.con1, tlib_type) network.needed2 = get_consumer_sum(network.con2, tlib_type) - --print(network.available1, network.available2, network.needed1, network.needed2, network.alive) + print(network.available1, network.available2, network.needed1, network.needed2, network.alive) -- store results network.on = network.available1 + network.available2 >= network.needed1 diff --git a/power/node_api.lua b/power/node_api.lua index e9f0bd5..ef4143d 100644 --- a/power/node_api.lua +++ b/power/node_api.lua @@ -49,7 +49,7 @@ end -- store network ID on each node local function store_netID(pos, outdir, netID, Cable) networks.connection_walk(pos, outdir, Cable, function(pos, indir, node) - techage.mark_position("singleplayer", pos, "store", "", 2)----------------------------------------- + --techage.mark_position("singleplayer", pos, "store", "", 2)----------------------------------------- --print(node.name, dump(net_def(pos, Cable.tube_type))) if net_def(pos, Cable.tube_type) then local nvm = techage.get_nvm(pos) @@ -63,7 +63,7 @@ end local function delete_netID(pos, outdir, Cable) local netID = 0 networks.connection_walk(pos, outdir, Cable, function(pos, indir, node) - techage.mark_position("singleplayer", pos, "delete", "", 2)---------------------------------------- + --techage.mark_position("singleplayer", pos, "delete", "", 2)---------------------------------------- if net_def(pos, Cable.tube_type) then local nvm = techage.get_nvm(pos) if nvm[Cable.tube_type] and nvm[Cable.tube_type]["netID"] then @@ -108,7 +108,7 @@ function techage.power.get_power(pos, outdir, Cable, inverter) local sum = 0 local num_inverter = 0 networks.connection_walk(pos, outdir, Cable, function(pos, indir, node) - techage.mark_position("singleplayer", pos, "get_power", "", 2)----------------------------------------- + --techage.mark_position("singleplayer", pos, "get_power", "", 2)----------------------------------------- local def = net_def(pos, Cable.tube_type) if def and def.on_getpower then sum = sum + def.on_getpower(pos) diff --git a/power/power_terminal.lua b/power/power_terminal.lua index d077281..da2efc6 100644 --- a/power/power_terminal.lua +++ b/power/power_terminal.lua @@ -218,3 +218,5 @@ minetest.register_node("techage:power_terminal", { Cable:add_secondary_node_names({"techage:power_terminal"}) +minetest.register_alias("techage:ta3_power_terminal", "techage:power_terminal") + diff --git a/solar/inverter.lua b/solar/inverter.lua index 5f3e60d..82a6756 100644 --- a/solar/inverter.lua +++ b/solar/inverter.lua @@ -68,7 +68,7 @@ local function formspec(self, pos, nvm) "box[0,-0.1;5.8,0.5;#c6e8ff]".. "label[2.5,-0.1;"..minetest.colorize( "#000000", S("Inverter")).."]".. power.formspec_label_bar(0, 0.8, S("Power DC"), PWR_PERF, max_power).. - power.formspec_label_bar(3.5, 0.8, S("Power AC"), PWR_PERF, delivered).. + power.formspec_label_bar(3.5, 0.8, S("Power AC"), max_power, delivered).. arrow.. "image_button[2.5,3;1,1;".. self:get_state_button_image(nvm) ..";state_button;]".. "tooltip[2.5,3;1,1;"..self:get_state_tooltip(nvm).."]" diff --git a/ta3_power/tiny_generator.lua b/ta3_power/tiny_generator.lua index fbbdbdf..75e0c42 100644 --- a/ta3_power/tiny_generator.lua +++ b/ta3_power/tiny_generator.lua @@ -65,7 +65,7 @@ local function stop_sound(pos) end local function can_start(pos, nvm, state) - if nvm.burn_cycles > 0 or (nvm.liquid and nvm.liquid.amount and nvm.liquid.amount > 0) then + if (nvm.burn_cycles or 0) > 0 or (nvm.liquid and nvm.liquid.amount and nvm.liquid.amount > 0) then return true end return S("no fuel") @@ -293,6 +293,15 @@ techage.register_node({"techage:tiny_generator", "techage:tiny_generator_on"}, { State:on_node_load(pos) if node.name == "techage:tiny_generator_on" then play_sound(pos) + end + local inv = M(pos):get_inventory() + if not inv:is_empty("fuel") then + local nvm = techage.get_nvm(pos) + nvm.liquid = nvm.liquid or {} + local count = inv:get_stack("fuel", 1):get_count() + nvm.liquid.amount = (nvm.liquid.amount or 0) + count + nvm.liquid.name = "techage:gasoline" + inv:set_stack("fuel", 1, nil) end end, }) diff --git a/textures/techage_appl_liquid_hopper.png b/textures/techage_appl_liquid_hopper.png index 0e2d39b90e4b25e5be4bb65becd4a7442156f9f9..58d7894f7ff0510e70944ec4d6be7cd7b74e8323 100644 GIT binary patch delta 232 zcmZ3?^n-DNL_HHT0|Nt}$fR^2#ggvm>&U>cv7h@-A}f&3SRCZ;#IWw1%u67Lv%n*= zn1O*?7=#%aX3dcR3i1T_gt+=-7CJdO-ISGGFn_+)&#T@boh3nj!3+-1ZlnP@8J;eV zArhC96BPJ2v@tm{OgQ*Yo=M+V$Lk@Zj Z4DJtf(k2Ud?*UrM;OXk;vd$@?2>^MeOnLwS delta 255 zcmV+fnxg_P39%w~gf&Zo25QUf!Gq3=zG&&yJ*k+#udc-24&nI-;90(U7$ zdP(ctBE5)!mV&fLlrYA)SxxH-85p}xM3BPEA|%lhZ^`12?(}?T1yZyKe#ii_2IMWg zf?7f}J#0Xd3_aLy9bpZ%2EWQc4YB6GXtn6HiCr$&Q9C#WK$r@kHEI9=002ovPDHLk FV1ly7Xz~C6 diff --git a/textures/techage_appl_quarry.png b/textures/techage_appl_quarry.png index 5b7449ddff2399de0f7cf6895ff6c58b3d545e8c..541147db6418c2e756c7e9877daf471a8066c5d1 100644 GIT binary patch delta 192 zcmeytc!6<(L_HHT0|Nt}$fR^2#ggvm>&U>cv7h@-A}f&3SRCZ;#IWw1%u67Lv%n*= zn1O*?7=#%aX3dcR2?qFtxcX!k>gwo3MMf6aNX`LiD+%%oW^j0RBMr!L_H=O!k+__k zut1_fw_#)0!B(jSJZdv!9&>3ln{uDB6nNTXzWeJ|yJ<}rA>`njxgN@xNAoTD`? delta 212 zcmV;_04x8{0r&xs7#j!%0001UdV2H#000JJOGiWi{{a60|De66laW3ce+P6)O+^Rf z0uTxV08L^c-T(jqg-Jv~R9M69l)(*vAPhxm=b;1PfHF|oM{kCULdmZtrtjv#yeBQD z6a>M?(CUj@DM$aj*GjJjph5_BlzoULf{^oEiC|=as@{&q{RAZEODH1KJHcqVwnmm6 zV6=R6OP~Qya`z=1efewzE_=z{{sTz4IRGs;1$fA(1H9zRvk!tG_!TFfibe>;gq2_b O0000&U>cv7h@-A}f&3SRCZ;#IWw1%u67Lv%n*= zn1O*?7=#%aX3dcR3d#legt+=-76O?T=H`+T61qA%m#0{D`gv zx)kVt=n^1feuixzK$m`OwpS;}7S*dI0UB&c@#&6a2a7CqaGC;*^a6tP>d5zbKgkmZ zj~-c8l4Ti-#R6jtpOUJoe~9Dwv+H}k9@FWR&x!2ydMKrkQZk>^#u!7ABt%h! z)|#rSFvg&iLTgQ3*IZv;qqPPgO;e&MLI?ri;l>!GltfX4wH9kFN-2819stTMOw$yt zHCk(;C<5@t;y6ZY&CbpabzNhvrLJp)5PnTrmOiQ^NqituO7DbHe+s1(RaJQhrQ1}N zr8n+mxm=>PrYuW@5R_%V(`O-1IRzlk_W)kL_~EBtzcl%mAHV0|;UQVKfAcKlNr0m0vrP$kay*_e z8eLHoea7R-#-Pr2lP6bc4@2@7?u4QS{04 zy{+{?$dh@#=bK`a681pITN}e|l_2CvmzvS&YU4Ezza7ty;ik`l<{0{OVEEy$t(*gn z)8xthuODose*})x&U>cv7h@-A}f&3SRCZ;#IWw1%u67Lv%n*= zn1O*?7=#%aX3dcR2?qFtxSE-o`eYXBXlvWfQ{e^*GL;1R1^;9CvxX7G>+p1O43W5; z+rN?5$&kmzza)jr1H`TzDt`E zyeB+k+v>(vXE$qv&D6b>RH6a3Jx`InEW7ZY0iOarzxA(R9pQ~-SN9^ zwb}oh+$$P>eddwaFT(bEmvQDAMr%H2|Hm_odv({w-@~ delta 850 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 CI0sMw diff --git a/tools/repairkit.lua b/tools/repairkit.lua index 7b22ed2..255cde1 100644 --- a/tools/repairkit.lua +++ b/tools/repairkit.lua @@ -15,24 +15,24 @@ local M = minetest.get_meta local S = techage.S -local Nodes2Convert = { - ["techage:detector_off"] = "techage:ta3_detector_off", - ["techage:detector_on"] = "techage:ta3_detector_on", - ["techage:repeater"] = "techage:ta3_repeater", - ["techage:button_off"] = "techage:ta3_button_off", - ["techage:button_on"] = "techage:ta3_button_on", -} +local Cable1 = techage.ElectricCable +local Cable2 = techage.TA4_Cable +local Pipe2 = techage.LiquidPipe +local networks = techage.networks -local function power_data(power) - local tbl = {} - tbl[1] = S("Primary available") ..": "..(power.prim_available or 0) - tbl[2] = S("Secondary available") ..": "..(power.sec_available or 0) - tbl[3] = S("Primary needed") ..": "..(power.prim_needed or 0) - tbl[4] = S("Secondary needed") ..": "..(power.sec_needed or 0) - tbl[5] = S("Number of nodes") ..": "..(power.num_nodes or 0) - tbl[6] = "" - return table.concat(tbl, "\n") -end +local function network_check(start_pos, Cable, player_name) + local ndef = techage.networks.net_def(start_pos, Cable.tube_type) + local outdir = nil + if ndef and ndef.ntype ~= "junc" then + outdir = M(start_pos):get_int("outdir") + end + networks.connection_walk(start_pos, outdir, Cable, function(pos, indir, node) + local distance = vector.distance(start_pos, pos) + if distance < 50 then + techage.mark_position(player_name, pos, "check", "#ff0000", 6) + end + end) +end local function read_state(itemstack, user, pointed_thing) local pos = pointed_thing.under @@ -46,21 +46,22 @@ local function read_state(itemstack, user, pointed_thing) if data then local name = minetest.get_biome_name(data.biome) minetest.chat_send_player(user:get_player_name(), S("Biome")..": "..name..", "..S("Position temperature")..": "..math.floor(data.heat).." ") - if techage.OceanIdTbl[data.biome] then - minetest.chat_send_player(user:get_player_name(), "Suitable for wind turbines") - end end local number = techage.get_node_number(pos) local node = minetest.get_node(pos) - if Nodes2Convert[node.name] then - if minetest.is_protected(pos, user:get_player_name()) then - return - end - node.name = Nodes2Convert[node.name] - minetest.swap_node(pos, node) - return - end local ndef = minetest.registered_nodes[node.name] + + if ndef.networks then + local player_name = user:get_player_name() + if ndef.networks.ele1 then + network_check(pos, Cable1, player_name) + elseif ndef.networks.ele2 then + network_check(pos, Cable2, player_name) + elseif ndef.networks.pipe2 then + network_check(pos, Pipe2, player_name) + end + end + if number then if ndef and ndef.description then local info = techage.send_single("0", number, "info", nil) @@ -102,13 +103,7 @@ local function read_state(itemstack, user, pointed_thing) return itemstack end elseif ndef and ndef.description then - if ndef.is_power_available then - techage.power.mark_nodes(user:get_player_name(), pos) - local power = ndef.is_power_available(pos) - if power then - minetest.chat_send_player(user:get_player_name(), ndef.description..":\n"..power_data(power)) - end - elseif ndef.techage_info then + if ndef.techage_info then local info = ndef.techage_info(pos) or "" minetest.chat_send_player(user:get_player_name(), ndef.description..":\n"..info) end