From ede3978965790f9683b96d12fc0bf80ba30824cd Mon Sep 17 00:00:00 2001 From: kpoppel Date: Mon, 3 Jun 2013 23:37:04 +0200 Subject: [PATCH] Added solar arrays for all voltage tiers. Added transformers for all voltage tiers. I changed the recipes for solar panels to make them less expensive. I also changed the output of the individual panel and made the arrays provie the real "oomph" :-) Solar panels and arrays are dependent on light level, time of day and height abive ground (0) for output and cheating with torches and stuff. Textures added. Fixed bugs in the hv battery box. It was not working at all. I don't understand the hv box top texture though??? I have a sense that all machines connected to the battery boxes are taking the same amount of juice from the box. A method of taking a little or a lot would be nice. --- technic/alloy_furnaces_commons.lua | 2 +- technic/battery_box_hv.lua | 6 +- technic/init.lua | 4 +- technic/items.lua | 30 ++++++ technic/solar_array_hv.lua | 93 +++++++++++++++++ technic/solar_array_lv.lua | 94 ++++++++++++++++++ technic/solar_array_mv.lua | 94 ++++++++++++++++++ technic/solar_panel.lua | 37 ++++--- .../technic_hv_solar_array_bottom.png | Bin 0 -> 574 bytes .../textures/technic_hv_solar_array_side.png | Bin 0 -> 709 bytes .../textures/technic_hv_solar_array_top.png | Bin 0 -> 777 bytes technic/textures/technic_hv_transformer.png | Bin 0 -> 1801 bytes .../technic_lv_solar_array_bottom.png | Bin 0 -> 579 bytes .../textures/technic_lv_solar_array_side.png | Bin 0 -> 465 bytes .../textures/technic_lv_solar_array_top.png | Bin 0 -> 743 bytes technic/textures/technic_lv_transformer.png | Bin 0 -> 1821 bytes .../technic_mv_solar_array_bottom.png | Bin 0 -> 574 bytes .../textures/technic_mv_solar_array_side.png | Bin 0 -> 628 bytes .../textures/technic_mv_solar_array_top.png | Bin 0 -> 728 bytes .../technic_hv_solar_array_bottom.png | Bin 0 -> 2019 bytes .../technic_hv_solar_array_side.png | Bin 0 -> 1772 bytes .../technicx32/technic_hv_solar_array_top.png | Bin 0 -> 2855 bytes .../technicx32/technic_hv_transformer.png | Bin 0 -> 1789 bytes .../technic_lv_solar_array_bottom.png | Bin 0 -> 2019 bytes .../technic_lv_solar_array_side.png | Bin 0 -> 1772 bytes .../technicx32/technic_lv_solar_array_top.png | Bin 0 -> 2728 bytes .../technicx32/technic_lv_transformer.png | Bin 0 -> 1809 bytes .../technic_mv_solar_array_bottom.png | Bin 0 -> 2019 bytes .../technic_mv_solar_array_side.png | Bin 0 -> 1772 bytes .../technicx32/technic_mv_solar_array_top.png | Bin 0 -> 2784 bytes 30 files changed, 343 insertions(+), 17 deletions(-) create mode 100644 technic/solar_array_hv.lua create mode 100644 technic/solar_array_lv.lua create mode 100644 technic/solar_array_mv.lua create mode 100644 technic/textures/technic_hv_solar_array_bottom.png create mode 100644 technic/textures/technic_hv_solar_array_side.png create mode 100644 technic/textures/technic_hv_solar_array_top.png create mode 100644 technic/textures/technic_hv_transformer.png create mode 100644 technic/textures/technic_lv_solar_array_bottom.png create mode 100644 technic/textures/technic_lv_solar_array_side.png create mode 100644 technic/textures/technic_lv_solar_array_top.png create mode 100644 technic/textures/technic_lv_transformer.png create mode 100644 technic/textures/technic_mv_solar_array_bottom.png create mode 100644 technic/textures/technic_mv_solar_array_side.png create mode 100644 technic/textures/technic_mv_solar_array_top.png create mode 100644 technic/textures/technicx32/technic_hv_solar_array_bottom.png create mode 100644 technic/textures/technicx32/technic_hv_solar_array_side.png create mode 100644 technic/textures/technicx32/technic_hv_solar_array_top.png create mode 100644 technic/textures/technicx32/technic_hv_transformer.png create mode 100644 technic/textures/technicx32/technic_lv_solar_array_bottom.png create mode 100644 technic/textures/technicx32/technic_lv_solar_array_side.png create mode 100644 technic/textures/technicx32/technic_lv_solar_array_top.png create mode 100644 technic/textures/technicx32/technic_lv_transformer.png create mode 100644 technic/textures/technicx32/technic_mv_solar_array_bottom.png create mode 100644 technic/textures/technicx32/technic_mv_solar_array_side.png create mode 100644 technic/textures/technicx32/technic_mv_solar_array_top.png diff --git a/technic/alloy_furnaces_commons.lua b/technic/alloy_furnaces_commons.lua index 559d002..9c9c42a 100644 --- a/technic/alloy_furnaces_commons.lua +++ b/technic/alloy_furnaces_commons.lua @@ -36,4 +36,4 @@ register_alloy_recipe ("default:steel_ingot",3, "technic:chromium_ingot",1, "tec register_alloy_recipe ("technic:copper_dust",2, "technic:zinc_dust",1, "technic:brass_dust",3) register_alloy_recipe ("moreores:copper_ingot",2, "technic:zinc_ingot",1, "technic:brass_ingot",3) register_alloy_recipe ("default:sand",2, "technic:coal_dust",2, "technic:silicon_wafer",1) -register_alloy_recipe ("technic:silicon_wafer",1, "technic:mithril_dust",1, "technic:doped_silicon_wafer",1) +register_alloy_recipe ("technic:silicon_wafer",1, "technic:gold_dust",1, "technic:doped_silicon_wafer",1) diff --git a/technic/battery_box_hv.lua b/technic/battery_box_hv.lua index 05166eb..e565d4c 100644 --- a/technic/battery_box_hv.lua +++ b/technic/battery_box_hv.lua @@ -13,7 +13,7 @@ minetest.register_craft({ output = 'technic:hv_battery_box 1', recipe = { {'technic:mv_battery_box', 'technic:mv_battery_box', 'mv_technic:battery_box'}, - {'technic:mv_battery_box', 'technic:transformer', 'mv_technic:battery_box'}, + {'technic:mv_battery_box', 'technic:hv_transformer', 'mv_technic:battery_box'}, {'', 'technic:hv_cable', ''}, } }) @@ -78,7 +78,7 @@ minetest.register_node("technic:hv_battery_box"..i, { drop="technic:hv_battery_box", on_construct = function(pos) local meta = minetest.env:get_meta(pos) - meta:set_string("infotext", "hv Battery box") + meta:set_string("infotext", "HV Battery box") meta:set_float("technic_hv_power_machine", 1) meta:set_string("formspec", battery_box_formspec) local inv = meta:get_inventory() @@ -342,7 +342,7 @@ end function check_HV_node_subp (PR_nodes,RE_nodes,HV_nodes,pos1) meta = minetest.env:get_meta(pos1) -if meta:get_float("HV_cablelike")==1 then new_node_added=add_new_HVcable_node(HV_nodes,pos1) end +if meta:get_float("hv_cablelike")==1 then new_node_added=add_new_HVcable_node(HV_nodes,pos1) end for i in ipairs(HV_machines) do if minetest.env:get_node(pos1).name == HV_machines[i].machine_name then if HV_machines[i].machine_type == "PR" then diff --git a/technic/init.lua b/technic/init.lua index eabf48e..3cc73be 100644 --- a/technic/init.lua +++ b/technic/init.lua @@ -20,6 +20,7 @@ dofile(modpath.."/battery_box.lua") dofile(modpath.."/alloy_furnaces_commons.lua") dofile(modpath.."/alloy_furnace.lua") dofile(modpath.."/solar_panel.lua") +dofile(modpath.."/solar_array_lv.lua") dofile(modpath.."/geothermal.lua") dofile(modpath.."/water_mill.lua") dofile(modpath.."/electric_furnace.lua") @@ -34,7 +35,7 @@ dofile(modpath.."/cnc_nodes.lua") --MV machines dofile(modpath.."/wires_mv.lua") dofile(modpath.."/battery_box_mv.lua") -dofile(modpath.."/solar_panel_mv.lua") +dofile(modpath.."/solar_array_mv.lua") dofile(modpath.."/electric_furnace_mv.lua") dofile(modpath.."/alloy_furnace_mv.lua") dofile(modpath.."/forcefield.lua") @@ -42,6 +43,7 @@ dofile(modpath.."/forcefield.lua") --HV machines dofile(modpath.."/wires_hv.lua") dofile(modpath.."/battery_box_hv.lua") +dofile(modpath.."/solar_array_hv.lua") --Tools if technic.config:getBool("enable_mining_drill") then dofile(modpath.."/mining_drill.lua") end diff --git a/technic/items.lua b/technic/items.lua index 7d18570..66c5c85 100644 --- a/technic/items.lua +++ b/technic/items.lua @@ -160,6 +160,21 @@ minetest.register_craft({ } }) +minetest.register_craftitem( "technic:lv_transformer", { + description = "Low Voltage Transformer", + inventory_image = "technic_lv_transformer.png", + on_place_on_ground = minetest.craftitem_place_item, +}) + +minetest.register_craft({ + output = 'technic:lv_transformer', + recipe = { + {'default:iron_lump', 'default:iron_lump', 'default:iron_lump'}, + {'technic:copper_coil', 'default:iron_lump', 'technic:copper_coil'}, + {'default:iron_lump', 'default:iron_lump', 'default:iron_lump'}, + } +}) + minetest.register_craftitem( "technic:mv_transformer", { description = "Medium Voltage Transformer", inventory_image = "technic_mv_transformer.png", @@ -175,6 +190,21 @@ minetest.register_craft({ } }) +minetest.register_craftitem( "technic:hv_transformer", { + description = "High Voltage Transformer", + inventory_image = "technic_hv_transformer.png", + on_place_on_ground = minetest.craftitem_place_item, +}) + +minetest.register_craft({ + output = 'technic:hv_transformer', + recipe = { + {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'}, + {'technic:copper_coil', 'technic:stainless_steel_ingot', 'technic:copper_coil'}, + {'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot', 'technic:stainless_steel_ingot'}, + } +}) + minetest.register_craftitem( "technic:control_logic_unit", { description = "Control Logic Unit", inventory_image = "technic_control_logic_unit.png", diff --git a/technic/solar_array_hv.lua b/technic/solar_array_hv.lua new file mode 100644 index 0000000..89f5d1b --- /dev/null +++ b/technic/solar_array_hv.lua @@ -0,0 +1,93 @@ +-- The high voltage solar array is an assembly of medium voltage arrays. +-- The assembly can deliver high voltage levels and is a 20% less efficient +-- compared to 5 individual medium voltage arrays due to losses in the transformer. +-- However high voltage is supplied. +-- Solar arrays are not able to store large amounts of energy. +minetest.register_node("technic:solar_array_hv", { + tiles = {"technic_hv_solar_array_top.png", "technic_hv_solar_array_bottom.png", "technic_hv_solar_array_side.png", + "technic_hv_solar_array_side.png", "technic_hv_solar_array_side.png", "technic_hv_solar_array_side.png"}, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + description="HV Solar Array", + active = false, + technic_hv_power_machine=1, + internal_EU_buffer=0; + internal_EU_buffer_size=3000; + drawtype = "nodebox", + paramtype = "light", + is_ground_content = true, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_float("technic_hv_power_machine", 1) + meta:set_float("internal_EU_buffer", 0) + meta:set_float("internal_EU_buffer_size", 3000) + + meta:set_string("infotext", "HV Solar Array") + meta:set_float("active", false) + end, +}) + +minetest.register_craft({ + output = 'technic:solar_array_hv 1', + recipe = { + {'technic:solar_array_mv', 'technic:solar_array_mv','technic:solar_array_mv'}, + {'technic:solar_array_mv', 'technic:hv_transformer','technic:solar_array_mv'}, + {'', 'technic:hv_cable',''}, + + } +}) + +minetest.register_abm( + {nodenames = {"technic:solar_array_hv"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + -- The action here is to make the solar array produce power + -- Power is dependent on the light level and the height above ground + -- 130m and above is optimal as it would be above cloud level. + -- Height gives 1/4 of the effect, light 3/4. Max. effect is 2880EU for the array. + -- There are many ways to cheat by using other light sources like lamps. + -- As there is no way to determine if light is sunlight that is just a shame. + -- To take care of some of it solar panels do not work outside daylight hours or if + -- built below -10m + local pos1={} + pos1.y=pos.y+1 + pos1.x=pos.x + pos1.z=pos.z + + local light = minetest.env:get_node_light(pos1, nil) + local time_of_day = minetest.env:get_timeofday() + local meta = minetest.env:get_meta(pos) + if light == nil then light = 0 end + -- turn on array only during day time and if sufficient light + -- I know this is counter intuitive when cheating by using other light sources. + if light >= 12 and time_of_day>=0.24 and time_of_day<=0.76 and pos.y > -10 then + local internal_EU_buffer = meta:get_float("internal_EU_buffer") + local internal_EU_buffer_size = meta:get_float("internal_EU_buffer_size") + local charge_to_give = math.floor(light*(light*9.6+pos1.y/130*48)) + if charge_to_give<0 then charge_to_give=0 end + if charge_to_give>2880 then charge_to_give=2880 end + if internal_EU_buffer+charge_to_give>internal_EU_buffer_size then + charge_to_give=internal_EU_buffer_size-internal_EU_buffer + end + meta:set_string("infotext", "Solar Array is active ("..charge_to_give.."EU)") + meta:set_float("active",1) + internal_EU_buffer=internal_EU_buffer+charge_to_give + meta:set_float("internal_EU_buffer",internal_EU_buffer) + + else + meta:set_string("infotext", "Solar Array is inactive"); + meta:set_float("active",0) + end + end, +}) + +register_HV_machine ("technic:solar_array_hv","PR") diff --git a/technic/solar_array_lv.lua b/technic/solar_array_lv.lua new file mode 100644 index 0000000..f657814 --- /dev/null +++ b/technic/solar_array_lv.lua @@ -0,0 +1,94 @@ +-- The solar array is an assembly of panels into a powerful array +-- The assembly can deliver more energy than the individual panel because +-- of the transformer unit which converts the panel output variations into +-- a stable supply. +-- Solar arrays are not able to store large amounts of energy. +-- The LV arrays are used to make medium voltage arrays. +minetest.register_node("technic:solar_array_lv", { + tiles = {"technic_lv_solar_array_top.png", "technic_lv_solar_array_bottom.png", "technic_lv_solar_array_side.png", + "technic_lv_solar_array_side.png", "technic_lv_solar_array_side.png", "technic_lv_solar_array_side.png"}, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + description="LV Solar Array", + active = false, + technic_power_machine=1, + internal_EU_buffer=0; + internal_EU_buffer_size=1000; + drawtype = "nodebox", + paramtype = "light", + is_ground_content = true, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_float("technic_power_machine", 1) + meta:set_float("internal_EU_buffer", 0) + meta:set_float("internal_EU_buffer_size", 1000) + + meta:set_string("infotext", "LV Solar Array") + meta:set_float("active", false) + end, +}) + +minetest.register_craft({ + output = 'technic:solar_array_lv 1', + recipe = { + {'technic:solar_panel', 'technic:solar_panel', 'technic:solar_panel'}, + {'technic:solar_panel', 'technic:lv_transformer', 'technic:solar_panel'}, + {'default:steel_ingot', 'technic:lv_cable', 'default:steel_ingot'}, + + } +}) + +minetest.register_abm( + {nodenames = {"technic:solar_array_lv"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + -- The action here is to make the solar array produce power + -- Power is dependent on the light level and the height above ground + -- 130m and above is optimal as it would be above cloud level. + -- Height gives 1/4 of the effect, light 3/4. Max. effect is 160EU for the array. + -- There are many ways to cheat by using other light sources like lamps. + -- As there is no way to determine if light is sunlight that is just a shame. + -- To take care of some of it solar arrays do not work outside daylight hours or if + -- built below -10m + local pos1={} + pos1.y=pos.y+1 + pos1.x=pos.x + pos1.z=pos.z + + local light = minetest.env:get_node_light(pos1, nil) + local time_of_day = minetest.env:get_timeofday() + local meta = minetest.env:get_meta(pos) + if light == nil then light = 0 end + -- turn on array only during day time and if sufficient light + -- I know this is counter intuitive when cheating by using other light sources. + if light >= 12 and time_of_day>=0.24 and time_of_day<=0.76 and pos.y > -10 then + local internal_EU_buffer = meta:get_float("internal_EU_buffer") + local internal_EU_buffer_size = meta:get_float("internal_EU_buffer_size") + local charge_to_give = math.floor(light*(light*0.5333+pos1.y/130*2.6667)) + if charge_to_give<0 then charge_to_give=0 end + if charge_to_give>160 then charge_to_give=160 end + if internal_EU_buffer+charge_to_give>internal_EU_buffer_size then + charge_to_give=internal_EU_buffer_size-internal_EU_buffer + end + meta:set_string("infotext", "Solar Array is active ("..charge_to_give.."EU)") + meta:set_float("active",1) + internal_EU_buffer=internal_EU_buffer+charge_to_give + meta:set_float("internal_EU_buffer",internal_EU_buffer) + + else + meta:set_string("infotext", "Solar Array is inactive"); + meta:set_float("active",0) + end + end, +}) + +register_LV_machine ("technic:solar_array_lv","PR") diff --git a/technic/solar_array_mv.lua b/technic/solar_array_mv.lua new file mode 100644 index 0000000..73fe85a --- /dev/null +++ b/technic/solar_array_mv.lua @@ -0,0 +1,94 @@ +-- The medium voltage solar array is an assembly of low voltage arrays. +-- The assembly can deliver medium voltage levels and is a 10% less efficient +-- compared to 5 individual low voltage arrays due to losses in the transformer. +-- However medium voltage is supplied. +-- Solar arrays are not able to store large amounts of energy. +-- The MV arrays are used to make high voltage arrays. +minetest.register_node("technic:solar_array_mv", { + tiles = {"technic_mv_solar_array_top.png", "technic_mv_solar_array_bottom.png", "technic_mv_solar_array_side.png", + "technic_mv_solar_array_side.png", "technic_mv_solar_array_side.png", "technic_mv_solar_array_side.png"}, + groups = {snappy=2,choppy=2,oddly_breakable_by_hand=2}, + sounds = default.node_sound_wood_defaults(), + description="MV Solar Array", + active = false, + technic_mv_power_machine=1, + internal_EU_buffer=0; + internal_EU_buffer_size=1000; + drawtype = "nodebox", + paramtype = "light", + is_ground_content = true, + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + on_construct = function(pos) + local meta = minetest.env:get_meta(pos) + meta:set_float("technic_mv_power_machine", 1) + meta:set_float("internal_EU_buffer", 0) + meta:set_float("internal_EU_buffer_size", 1000) + + meta:set_string("infotext", "MV Solar Array") + meta:set_float("active", false) + end, +}) + +minetest.register_craft({ + output = 'technic:solar_array_mv 1', + recipe = { + {'technic:solar_array_lv', 'technic:solar_array_lv','technic:solar_array_lv'}, + {'technic:solar_array_lv', 'technic:mv_transformer','technic:solar_array_lv'}, + {'', 'technic:mv_cable',''}, + + } +}) + +minetest.register_abm( + {nodenames = {"technic:solar_array_mv"}, + interval = 1, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + -- The action here is to make the solar array produce power + -- Power is dependent on the light level and the height above ground + -- 130m and above is optimal as it would be above cloud level. + -- Height gives 1/4 of the effect, light 3/4. Max. effect is 720EU for the array. + -- There are many ways to cheat by using other light sources like lamps. + -- As there is no way to determine if light is sunlight that is just a shame. + -- To take care of some of it solar panels do not work outside daylight hours or if + -- built below -10m + local pos1={} + pos1.y=pos.y+1 + pos1.x=pos.x + pos1.z=pos.z + + local light = minetest.env:get_node_light(pos1, nil) + local time_of_day = minetest.env:get_timeofday() + local meta = minetest.env:get_meta(pos) + if light == nil then light = 0 end + -- turn on array only during day time and if sufficient light + -- I know this is counter intuitive when cheating by using other light sources. + if light >= 12 and time_of_day>=0.24 and time_of_day<=0.76 and pos.y > -10 then + local internal_EU_buffer = meta:get_float("internal_EU_buffer") + local internal_EU_buffer_size = meta:get_float("internal_EU_buffer_size") + local charge_to_give = math.floor(light*(light*2.4+pos1.y/130*12)) + if charge_to_give<0 then charge_to_give=0 end + if charge_to_give>720 then charge_to_give=720 end + if internal_EU_buffer+charge_to_give>internal_EU_buffer_size then + charge_to_give=internal_EU_buffer_size-internal_EU_buffer + end + meta:set_string("infotext", "Solar Array is active ("..charge_to_give.."EU)") + meta:set_float("active",1) + internal_EU_buffer=internal_EU_buffer+charge_to_give + meta:set_float("internal_EU_buffer",internal_EU_buffer) + + else + meta:set_string("infotext", "Solar Array is inactive"); + meta:set_float("active",0) + end + end, +}) + +register_MV_machine ("technic:solar_array_mv","PR") diff --git a/technic/solar_panel.lua b/technic/solar_panel.lua index 93f2b63..5b53f5f 100644 --- a/technic/solar_panel.lua +++ b/technic/solar_panel.lua @@ -1,3 +1,6 @@ +-- Solar panels are the building blocks of LV solar arrays +-- They can however also be used separately but with reduced efficiency due to the missing transformer. +-- Individual panels are 20% less efficient than when the panels are combined into full arrays. minetest.register_node("technic:solar_panel", { tiles = {"technic_solar_panel_top.png", "technic_solar_panel_bottom.png", "technic_solar_panel_side.png", "technic_solar_panel_side.png", "technic_solar_panel_side.png", "technic_solar_panel_side.png"}, @@ -7,7 +10,7 @@ minetest.register_node("technic:solar_panel", { active = false, technic_power_machine=1, internal_EU_buffer=0; - internal_EU_buffer_size=1000; + internal_EU_buffer_size=160; drawtype = "nodebox", paramtype = "light", is_ground_content = true, @@ -23,7 +26,7 @@ minetest.register_node("technic:solar_panel", { local meta = minetest.env:get_meta(pos) meta:set_float("technic_power_machine", 1) meta:set_float("internal_EU_buffer", 0) - meta:set_float("internal_EU_buffer_size", 1000) + meta:set_float("internal_EU_buffer_size", 160) meta:set_string("infotext", "Solar Panel") meta:set_float("active", false) @@ -34,7 +37,7 @@ minetest.register_craft({ output = 'technic:solar_panel 1', recipe = { {'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer','technic:doped_silicon_wafer'}, - {'technic:doped_silicon_wafer', 'moreores:copper_ingot','technic:doped_silicon_wafer'}, + {'technic:doped_silicon_wafer', 'technic:lv_cable', 'technic:doped_silicon_wafer'}, {'technic:doped_silicon_wafer', 'technic:doped_silicon_wafer','technic:doped_silicon_wafer'}, } @@ -42,29 +45,39 @@ minetest.register_craft({ minetest.register_abm( {nodenames = {"technic:solar_panel"}, - interval = 1, - chance = 1, + interval = 1, + chance = 1, action = function(pos, node, active_object_count, active_object_count_wider) - + -- The action here is to make the solar panel prodice power + -- Power is dependent on the light level and the height above ground + -- 130m and above is optimal as it would be above cloud level. + -- Height gives 1/4 of the effect, light 3/4. Max. effect is 26EU. + -- There are many ways to cheat by using other light sources like lamps. + -- As there is no way to determine if light is sunlight that is just a shame. + -- To take care of some of it solar panels do not work outside daylight hours or if + -- built below -10m local pos1={} pos1.y=pos.y+1 pos1.x=pos.x pos1.z=pos.z local light = minetest.env:get_node_light(pos1, nil) + local time_of_day = minetest.env:get_timeofday() local meta = minetest.env:get_meta(pos) if light == nil then light = 0 end - if light >= 12 then - meta:set_string("infotext", "Solar Panel is active ") - meta:set_float("active",1) + -- turn on panel only during day time and if sufficient light + -- I know this is counter intuitive when cheating by using other light sources underground. + if light >= 12 and time_of_day>=0.24 and time_of_day<=0.76 and pos.y > -10 then local internal_EU_buffer=meta:get_float("internal_EU_buffer") local internal_EU_buffer_size=meta:get_float("internal_EU_buffer_size") - local charge_to_give=40+(pos1.y/250*40) -- make solar energy depending on height + local charge_to_give=math.floor(light*(light*0.0867+pos1.y/130*0.4333)) if charge_to_give<0 then charge_to_give=0 end - if charge_to_give>160 then charge_to_give=160 end + if charge_to_give>26 then charge_to_give=26 end if internal_EU_buffer+charge_to_give>internal_EU_buffer_size then - charge_to_give=internal_EU_buffer_size-internal_EU_buffer + charge_to_give=internal_EU_buffer_size-internal_EU_buffer end + meta:set_string("infotext", "Solar Panel is active ("..charge_to_give.."EU)") + meta:set_float("active",1) internal_EU_buffer=internal_EU_buffer+charge_to_give meta:set_float("internal_EU_buffer",internal_EU_buffer) diff --git a/technic/textures/technic_hv_solar_array_bottom.png b/technic/textures/technic_hv_solar_array_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..596e79a37334030ce3ebe9790a26adeff94da6c9 GIT binary patch literal 574 zcmV-E0>S->P)pHNyHksIQMtuDhB45Ws)U! zRMZY;baV&z(!uXr>zS;rm?cCftj$1}Gq_5@j{_kP zlvu&n=Rs8hPs-=3!2)+d4GvF4Ob})E!3?P1jaCQWPeoA5nNYWr=LzyrKsWvAh(Mo$ zCuc?AZYTqEff_kyW^@F_`)F(ifrBWLjJ+1KcfuUqfghPUI&MO(4?7on-xv)&uM4;T zr6im4aC)mGhr@-G6Uw5L!rt(Dy>S(CQp^=yYcpfx3b9~efX-}9L97Pa7;aAnwKQrrvD>%ZDCC41f$3P-O;!easVhQBPC$MLCXZokQ37qhb z@ICqc*N+Q{`0SV%$Lk`#|CyiOec+#e|HMM#?b~R*aXh*25p-uSicjbHI58C`nDKa4gn(ti zU5L>*Ukz4cEoUvLZP3TywE`t)$`(-z8|UfdR6rN)Y?w}tZwE0aV!lypCz&vpl9G{g zW_UwTto6#G;~0n{F)(})G|*c^ms7T#(Hj;5S8LyW+9FWVZQrqAOn0Izwq&$=5e)iNg$VvF#}5iJ{Qkd=ejDnY+TpLaELK8hN6$- zKsDgrA;9oSj5}L4l0||l_uW|T9FK2IABZgGyogCrWMQh*F7yU#bguK@Y8{bDt(`U# zgn%sJe!tU)V`)bKeY5XKP%H?l6A8*zA{GN*j{|U^F={2{NUIk)25LPC5lmGOZ-fvL z9WWOiVGL(41xpFR*>a!{WejJ{!Br=FDd?C=8-fN%7I7aS%4nV8aJ?$^>Rh!G)DaQZ zGJ-5n&|Xj8?1l)mAz1vr)GVNM&Lj9p00080Nkl^Q-~ zm%Y8O-Pzrlc`10hhd%%QDKaK0ZmtdfdVTo(=NGmVJc@i-P$qzrr(fMpA}u+TR%%Uw zQJ{pXM!0`;;$3A6s#Y#X*N03+;pQ!obkQMDBrLeLxvo_Nai`Tu5?>XqxCw+q5Flce zendoH8gH#ba%VU!Yj=8lY$^lBkD;x5M1hu_7dfSH{*tqdk62( zxiAzaFL*Y|89-T>-+%j+31!Y+BMW7xTV0$prK@o|&$ZUddPETD=d|iY^zEyK(N-`M^!okN_4*$EO)OyzH@Z+3;pif zZ#WQ2JTO?4_`}OL5QMCm6en->>Uy1?Kl^$s&vTC;1@X@Dq#Xr9BC=vWhbp&=xojjL zB;|q-!sB+DPFAnZ z#(I3SzaxZV5AWUH`h0ltG0lqwdVIOFXU^WcSyr4JpmXC_e|#DT+uIMO<9|iaAim;B z6zuLDP(TgB(8`+;I^yyXAwGY*OK~1Y*LVNk@mOi)%ZmO7K`mtTbXr9g00000NkvXX Hu0mjfxUgI& literal 0 HcmV?d00001 diff --git a/technic/textures/technic_hv_transformer.png b/technic/textures/technic_hv_transformer.png new file mode 100644 index 0000000000000000000000000000000000000000..e1d4c98a05365c406a77d2bdaf9c662a8853325f GIT binary patch literal 1801 zcmV+k2ln`hP)geXWCAMNed+v1xskD#6V(B*c zX$r<-Pz1uV-V1w5vZb6r0CQseb9N_nYqt%&fd!pgVi(* zT(FXu`2TdW_J{xPthM&qd&B?LhJLVd69BiZU;pkJKm72+0NlD|+uXIg?qB`yYj@xE zle6L>X9^Au4zgy=8a8g-Hc;%Ix$E_~d}S0EY;B5G81623_t96MeEPyIcWxZ{uK?V- zY4azd&hD*2u{6)yK#li8{UlLyl16QUg|o^;p>3Y1>A}f~^z&=h+<5S;0c_f|>C4gV zz8^Qkyk;hlVpgX$HA=oZOmA12Mzu;5gd87vomuDfYh;U3oit;i=9gac)zz=QT>x`> zKviv$IWmt}6$GI~N~_kOR!vAV2y-z#-Ms`!EW>{}MBYwz6^f&WcJCN``u5w_Ukz~Q z`gQLNAd2(U!Wgmy>QjK_$Y_o7?1j{_fK)A&N(G>IsnB>Ie1AXD% z8*aII>(|z;mv>Zx4Lf#y*u=S?TM?|a_)M8nLB>zgqb+8HV3Rt>kG?`_c1%$0rL)|J zG@CTs6ensK(ZHotUO%a0&H9Ef&AslX#aB!F0N=ZFdv`G}qdCoZ?ZET&&Y6$vJC`vN z&~jLi!bF^-+Uf@M)<=Yn{<|XsFxSu zx-Wu`S@^7pkF11Ai*lhTGb8)hj{T23xA~_JeBgAy;Pk+yOP9&LgO8E-p0w4XRE#-s zXpoUT3+ew?DTJ$0RV-mQb)NbYczRi&%Mm*pTjk)R&l6W;n{6_ z8L1w}`a0p^D#7r@xOsI{V^RmPRRSROj=CDGI*cmDdkzdAz5jGCdnSOD%P;)8@xCh# z1B}4LM1^1c`YGnyG9UTIS9nj)Oy0lfea!4FasNGkX7Q3TaTpUc>Lh{1sp6-H3aSuf zDdHU@t-)VDvcLA08E7;b2Rp)GK%F8I&`~N-YSsDeGf(m2?+>u(vSswn?Wd!EiVM#9 z8&7RNOvgYUSA1*mNZR?B%rseL}-;{ z=uaFTK0st*mM?0uV8;1W{4mn=XbDsm<1%m=VuMpXQ7V<>Ew>>+XGcMtbE-N$DU2~R zBBg3lh=rCm$j1;QdAh^d%<4KwEH4we1jI}Os3#C`C|;rN8Ct!1_3^dzU7#YzjS z87dLtEmi|Wg+de|B$y}y8xc8~-a8T?&SAYnnKlM+B4pa;VFd8rCCgr_d5bef1y4u{ z2oA8JrIoaBJ_QXB^#p1Wny7#`hRlXIV+mY_S5U7+LC`+H_1_(w$aVI7vStdBh{0%z z2#A1p9_Jk{b2OVx!YDd*q9j3t2T~i5+7NFHieS`Ztqs}+xaGPp^6gDKADO#w@th<- z>)DzqfH8{x>jbmb5(FXMx#{e@@rPavajT9|k9bE0WMUXo^Jx13Ke`Km@sX3qZ`yL- z^0CCO@K_H9?>z>=3Wz!cMT}s)Lrj3EqN=EKWC~H1kV_g!(yF%&@K4=%$ByZ1`R@Hs z{Qb(oXhLV)ooEM04kxOi6|4!Ej0(*A(8sAnWl&Ee$dN=b=^K53FUnONA_(LXdaR9(Av z?SBSvCT+fF&+aK3T^m?Yyq8ElPDHaX5}g=-=(+LwHJ2pg&2{V6y}c5&qlflA$n{_N z?5e7j#S>0PaT#O@so2&;wRY{g)vG@BL8+h7{H*GZ?{5I$_C5Q5xZ%DBp1fi2qh)~Y r+qb`aPq}^j_MQ6PxpU|L#>4j?u}lFySv`Eh00000NkvXXu0mjfYgKPd literal 0 HcmV?d00001 diff --git a/technic/textures/technic_lv_solar_array_bottom.png b/technic/textures/technic_lv_solar_array_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..9e888e3011a8b619589b83266fa39877c56a9060 GIT binary patch literal 579 zcmV-J0=)f+P)< z02C1Ctpor7010qNS#tmY4yynF4yyr0}+8D022`y=qgePf{+lx7$K^g6m&H!B#>BZ zG0Tl@V%;G?AwofQZN%Ioh0AXj3>@dd^?K#gr!VA6s*3I&>ev{Q z5ddJQZa)0?al{qe-QDs2{l9$v{D9kdBXT$KWKFxL5W&kAFS)}+wBMLJuqY2-6LYG z1w3&J9v;5&_T4}H@$658>2AJXzf*N01}#ip7SaSpA~J~xzCGNqo3CH4qfa#mF27$m zk7KfM)(o&`LuQUOHX*Ra6(MpZ3T^w0GzoQiY=q%keR6t=3emOW3n*eQDcFIdJyB+( z=q}tQS3-++@1GgCimJlhv^^r@9c7z7PugR0*N!ew)kyQ5>paO!=%&u;`3dcoQh5(C RaP|NI002ovPDHLkV1mM@_{RVM literal 0 HcmV?d00001 diff --git a/technic/textures/technic_lv_solar_array_side.png b/technic/textures/technic_lv_solar_array_side.png new file mode 100644 index 0000000000000000000000000000000000000000..b22447ef68825d1731660a1c1b3c6c5af543bb5b GIT binary patch literal 465 zcmV;?0WSWDP)qLpk;0OPzs>xVu$@?{3L>$KR z4R{Ye(=>mHJzhzWiNVLYc#Eu#*g*g?oOP|FC-FzQLf|=ii1RJdynM?-8A_-N_aKdF zAqN7e-Svw&!-xo4e}0#jgL|A?-;?oBHcoej$6d4dtILs$D9;2iAlk23m%CTc5^$#k zz!|8Iw}wFpR6NZ>fhw--7FtS(Bl^IJns}NVq**))r~h~bbf&2) zG*Y*A7+?Me)P)StFOlm<`38f50YOv5D~SrI8Re;?6H~Vc7_(#c#X3mnhddK4BhLtt z(ShqgdBGWsB&N|?WD(d9q%&ihBodZq5QI+MBzEWqe@x>K{&dISA4~-800000NkvXX Hu0mjfYM9WK literal 0 HcmV?d00001 diff --git a/technic/textures/technic_lv_solar_array_top.png b/technic/textures/technic_lv_solar_array_top.png new file mode 100644 index 0000000000000000000000000000000000000000..cabd315d2f1fa54e79e918533b63d835c57e19fe GIT binary patch literal 743 zcmV?P)nkkrqXQe?dcj0F)7Qh=L{!H8mB81}R9S0Ye}~AO?eN0ugKP zuDyHTGsE}cCm-H1=K{3rTbtj0fBf-h_uHl8l%)b`5{~r!_qGOE95B^g5XVRk2?3)d zef-B?>@M1sne7<7ZkmyQ4gJW(2n}4gbNyNzWz^4y`Cy<;Iqdfc7$5;qDdzwVpfC|J zxVg7iw{moNSTz+@RZ-W=MJYSGd!{Y-UO|5i+!oLn$phs{6g+xzY$9putD@xjqHsiY zS$*~8edIpE&mcL_81$G^Pw{VOi%A@potlw1U1B_bqdiXmQtJu|L|ZZKA@6|vNIV8? z4KPUFZdUhv1^_FT3eg3oJ@iP-QccZ5Fb6O)*wW@tQ>nY5wnJ$Ku6Uob|1}ZFXStk`@nKvKFkp_-2w{_0c$gAt`1R z(kY`MN1Jjqo(Jy!J zyjm268U-Fyga@N6^nsZxmrH62vpG_R%)}_IQqVs;TWnli6X~|MCr3vI?7*q$#o{b~ zemtGelYFAhEs9UN&XC^9FWV^p+O+D_eto>}eMGax{KoFK55w7f8U}2*-!`8Mekb;W z$~V)Kd#9(%-O0_6DNg%@!hlAT002ovPDHLkV1kpSOBw(G literal 0 HcmV?d00001 diff --git a/technic/textures/technic_lv_transformer.png b/technic/textures/technic_lv_transformer.png new file mode 100644 index 0000000000000000000000000000000000000000..613b1962059f74b5fb04ffb0f857776724557560 GIT binary patch literal 1821 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 KMNUMnLSTZ1erHqw literal 0 HcmV?d00001 diff --git a/technic/textures/technicx32/technic_hv_solar_array_bottom.png b/technic/textures/technicx32/technic_hv_solar_array_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..94c82220d17121439939c1b88985aea891b76a69 GIT binary patch literal 2019 zcmV<92ORi`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m4F01m4Gj_kzz00007bV*G`2iyw* z7cUx+Q&eIA00(19L_t(o!*!QU%Ph%pg`bGXtm^LfevCfA#@1+~h5Q2y($)whfw9ql zHMT+4QcLR(*b-s}WEgqi`rf(k+g+6z5ne=f&q&4vwd(53$P*{dIVnH>#V?XfG7~Zp zRWcF;tTj}Xh(JW}IcdEg-$H~Vs*sQ*0)XH?QMLMS1|&d&2r-@GL;8B6WdvqMijd)` z7?=Qwh$5n>Dd|pMRuF**BAok5qKahT5iIM9hM{UiOuDX&eZ#Di5l9m<18be|Ndw4C zL zR>&x-ikKk?+6>8p$;=+@X_uA#cBAkC6@g6DjEF#0!3?CD5{SZWF{HOdOmS=N3uxNmIZgGuP5dh4-#7Mh$_}vaRQJjRk#`2JL7sq zLXB7(lIWCUtP>zz3UYK7b#=8QzNHWR&**O>c$@Jqht z&b=sA8bYx8w?8v+65gy%j1RhzfJtYiw1q0v~OSwv=W> zBr6wuPQsntuY^xBf))|Ud6ZCxORId)!s@|LIbfr`Ltjp@$5@5KjE zM3QYExI5d+OHG0qbL?1e*zC9u09u3-QLvGa83)vXSSuw{>Xd#c=F@5Apa1Pw%-gNlAHmpnNEq8*h)RQ&G_!`PG3Uh0;1HD*VUB@WE9OS< zAD?~B>3rtH^~yGO-hcRtS5Hs$-r2{bsjzPwPvyW>%0GM5 z8hu$25yqIfJ3dAcy0rtOK+Le-5VMkEReQLdSu2wfK~)*sc61%ir}YtTlK)%8vaZZI z@d*4*xNu~GHO1%rx?52m(nRElVI@F5Cv90C(aXmqMfl>~|L}(|zTnNbzr}a{`g{@dSAP{ylHrzU9^B!uyXOQGx&Z?>|;xQKj|HcDt4Mgdd`ogjYe$ zS|i-)r2g7|$TP=IZ@r3eFEu-e zWJka-?Ikw*PG1&que>-Xa||M)Hjg-3plC!8N6hvkDvf=hs$4&QUFvL^11~zOJ;TAMviEK4(SbBW%QU0QTFB{dzrQ8TQ+i z?RG=7E*Fu9#ZoRew(UW%drXTcLu>2G9cdr+ZAR3@)i?_(f*i7}+8z4J~Re!HRF>S`7OIM}kFt+72n*Y&9{%tK1= zYB_xz_r!sqjEIB%{h^?Rz=DshVp!|=9ApI6`=j`}nu(M*n-vlVTYZj)LW(N;UZW;j z^DJ5r=FCHsDp6IzuwQTZ9LLBFVhqHr((;_Rm(@2B!48ItD7!nEQR($|D@T(?h7cJj z4Uw{D_b5aX9GGK2+G2RzmGm&7C}XPm4_aUDc|h>+GMGau(;aJ#zAT97!#M7*&%xL> zeAK1G-Rm9!$K^FiPh!@l`i(;7zLOcuvD13ve*tr#O^<7`YHR=i002ovPDHLkV1i5_ B;l2O> literal 0 HcmV?d00001 diff --git a/technic/textures/technicx32/technic_hv_solar_array_side.png b/technic/textures/technicx32/technic_hv_solar_array_side.png new file mode 100644 index 0000000000000000000000000000000000000000..d39d3d81e462c2f4dfca86ec7563893195bca47b GIT binary patch literal 1772 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m4F01m4Gj_kzz00007bV*G`2iyw* z7cVlU=KPod00wMHL_t(o!&R4CcH}q?L@z*)O1r!FGrO4C|2nGdlt=*c0ZOj+kMrn3 z5rIHNQ2z7Z|0S7ZCS)S2^;@7dLsf|k1i^h_*6ThH?uaS?nTZI1;A^3+)w>bw2S9{y z=l<)j7nTvU)<_XD9MuLQkcp}yswhf^W8*+XAfgr$0Ra(3GH?&ZYt+YEBYe^AV9t|f zos2+4$Ou~R#9G+T?gi0$v6+#XWCYq;A!CNSle?nl8K?px7$1Xhr@sanPKKgQIP3#o z3q+B~U2FhZ8xYm1wlzcqZH)wkMEB0gz>b6K{f!`np%k>*jEF#6wWHQBY7wDX+XW@k z1W{pK6TcRw`=h8JBG?!|(6>g+$%-H|QNXOz%<#3yOqw-X9|fx!^Sb`UB~hiBA==1r z=5-OPTBxmI_rui!*)7;R&SZRi;J<$%`Ln@-`M~FVNZ5KuL}+HH2uMAjnNM5i`;CgS z{GyrB%rK^=< zGim!d1L*yLOniBDeop|v`1~X@33qZ6)_Sj(duLr&ZEjZ??zCRKiA=`lCq!_5eW9&! zeSeb?WNWPR#A;R-nM$)_rmM*aaGTMOqn=e|T^A3TH}qnL_5P6W`1~y1xO0Ag z6KmCIM+CheXwwp&-J2W6H5Yvh)><^PpAn1z5v+I2jI|cld-WdBR%3d8e?2XT2y}03 z%?St^?px7n^lIdi*wy78zmI?Z*(B>oYqZ|!$3b|Yz0=2dM(;-N{rgvmU_?y^u&#^9 zd<3JGBT4mqenAeGo<1wvL&DUe$8G$=w)KqCklu7Je`|`&& zZ4CMth$^qY|0>9j18Mq`1EdPb2qJ<$27UC0oT|EKK3KCvOAy-VkXdGQ%PCn-)_Ui; zu3C$4^TM zqnEM)K8pj8kNJfA&;Q*95y3M__bONgU28s2kJrZ|JnOoC@*EJp9^KCj)_Icdynp{@ zty#hn`Pj1TiL&1DHCfvSZs+t>Vx+AZ83k{wS!y+BLAP1E=B!NT@d(rI7$D5|oAdi? zyQpBt@vrLdcGhGG@RK(!NmRGFm?08R(7d^E_x{O=R+}z?D)!$}YrSK~QAntAeSf27 zL^x|+%=eqTgKZ|JqR$A5DovH~@qxC+`20jwA4R-ncfQ~F?T#Yl8G9_(oVYu$zy1as zX^otdwNbqTX{>6g-9!o?*2F$OnRD{$o%gR_d-QgUc7M_kf1C~OEU?b=2`lIK7tI_je^?5n|Ol>ko^a=UMme1C9vk)xLfl zs3?+!&^*trz6-mfv+N*I>2~Z7C-3jCa<60)Q;^om2i8L7e8TC!LhBgBj$(Ekv@!7a zH|)uXsFZ9stIGxNXni6nq|}V32i8Z~Dv)zNNSTfjpWWYip4b>%?>D-G==t@v4^hJF z^Alh5i2#-n#6D-(7^oTV-@hT^M{cv^Gcw6JtB-RcD$F>GkiFNnJ$^O@>pYp)weMBi ztap5GzK&*p9LX{hpBL=ezZH@#$rU05tinrp5LCE~C6z075Xtwuev1@hb5`r3T6Zg~ zi3m+=G10}fy*t9W-tQ+wq*Ul=X2ecNL=aakeB{I#P0@SRy7VJor# O0000DK_@!=j)P0@X{Mf>g@q&D<-cWA6%WZ2EA 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 FV1k4YPv!ss literal 0 HcmV?d00001 diff --git a/technic/textures/technicx32/technic_hv_transformer.png b/technic/textures/technicx32/technic_hv_transformer.png new file mode 100644 index 0000000000000000000000000000000000000000..7794644fba52b375b9c2fea8f04dc1a3dccb3d2a GIT binary patch literal 1789 zcmV z)P~4y#U>{HpLX_s`2Vuk+Iy`9|5qJ)YV}$GR`&J1zs9?F?*`!Ub?Z8wTD^A3Kc8*e zviZ7r$kjIc`}^tb?d6->f6;XlwI3$d&W|vRqbP^b)`qOM;8(}qx^3^H4-NlU0Qy$< ze@0r{*XQ#2X`Zt#m)1n8=ShuWG>Mr#xk%^{pC5NeOPA9x_4Yn|^tu78S-b9Qs$=@I z$~lKajPIjH28qT8ncUJ$wOl6fe1?Y4(>9~i1-c;RlDg=-{M>~PEcwg31yJwYh`m7T z${2|iiE~91kVQo$4f#P{PS`0y3`yMMviZNrvK$9R`%To@cq7J z?+u{I6Ji~JNpY1j$~uP6jnLfIMLF|Gon~}&6q{DadkLMLQxHkz%-}Ipa&BH{M}9}| zV=LBweOaHpw-Bt~aF;~ki=q@olR{!R??>3uMOsK{@MPBqjYY_RZGLGK0ou3<=yv5{Q#@itZnfdawB<{GI;19Q#x+MwN2-;2!#u0 z@heq^2T#&H`(~IB5C193Wau@wN3|4DkCG-SNfg@@Bi{I>k2_3 zP{_bxPVU=Ia{3LrS_4XlU!*M=Ln4KH^E5Yq_;$|TFr7X7g~NY}Y0EcJX`F?b{6Qi= zB6TTR8Npcm=2poyHooxe^SfVL_59wCTod5-xjpjN6DM%ilGb91g^+WnPcr)JmyonX zI)4_!d-ro-_fhWrL^pFjIg93L-6TyNgrSn~w^R=tMn2TSoS?)X_WcpTFeWv`StOi<@&f>pFapoR zWhsdTn@?GSIDd-5k(>jH++6#_Pu}^MfrfbMJ%G2(@CIDsj%k&&Dy%qD_VcoO4K)lF#M*x&W%x z>d^+@>vF~+;?YoyDAp?cZvSsMeCQyz+|fgOM<)%PW8Bhpf)_Rq&@iKokAJ!csd;#w z25a%sgxCwn!hkT1!DiG2kY@G>zI+NST5HlYB@mDH<|4j!Bm=K=a_}I53hBAEM%Sd- zjM_nhN{woy@U0<3VU)&cjb}2n2w|}(*GxiyNez)0W1MpnKZR0?YTziV6hfiqs^mlP zk~}T`6xy1P63Q{OHDq3ZLGWyb336C#u?~_f8(6Yr$xvMY<vp8EN~}v5FTk4VSgB%xOca?YoC9qQxwJ+mO4s!f0SuRu0qY!EYG{|?BtWc2 zI}dR}6a)wfDhNOa1V$#_j(A|-ereXCZHAwvXp@q;I*Sp&2j=t~8MhjvloKpIDIgd? z`#h-dzal(XO38<$@EtBXE2yQy$h^XsZ7A72H)#vg57vwG`uFMVsro<@L;8#lgxqukD&JFl!a fZQAs|G5G!siW~h8)U-(*00000NkvXXu0mjfh`C(- literal 0 HcmV?d00001 diff --git a/technic/textures/technicx32/technic_lv_solar_array_bottom.png b/technic/textures/technicx32/technic_lv_solar_array_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..94c82220d17121439939c1b88985aea891b76a69 GIT binary patch literal 2019 zcmV<92ORi`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m4F01m4Gj_kzz00007bV*G`2iyw* z7cUx+Q&eIA00(19L_t(o!*!QU%Ph%pg`bGXtm^LfevCfA#@1+~h5Q2y($)whfw9ql zHMT+4QcLR(*b-s}WEgqi`rf(k+g+6z5ne=f&q&4vwd(53$P*{dIVnH>#V?XfG7~Zp zRWcF;tTj}Xh(JW}IcdEg-$H~Vs*sQ*0)XH?QMLMS1|&d&2r-@GL;8B6WdvqMijd)` z7?=Qwh$5n>Dd|pMRuF**BAok5qKahT5iIM9hM{UiOuDX&eZ#Di5l9m<18be|Ndw4C zL zR>&x-ikKk?+6>8p$;=+@X_uA#cBAkC6@g6DjEF#0!3?CD5{SZWF{HOdOmS=N3uxNmIZgGuP5dh4-#7Mh$_}vaRQJjRk#`2JL7sq zLXB7(lIWCUtP>zz3UYK7b#=8QzNHWR&**O>c$@Jqht z&b=sA8bYx8w?8v+65gy%j1RhzfJtYiw1q0v~OSwv=W> zBr6wuPQsntuY^xBf))|Ud6ZCxORId)!s@|LIbfr`Ltjp@$5@5KjE zM3QYExI5d+OHG0qbL?1e*zC9u09u3-QLvGa83)vXSSuw{>Xd#c=F@5Apa1Pw%-gNlAHmpnNEq8*h)RQ&G_!`PG3Uh0;1HD*VUB@WE9OS< zAD?~B>3rtH^~yGO-hcRtS5Hs$-r2{bsjzPwPvyW>%0GM5 z8hu$25yqIfJ3dAcy0rtOK+Le-5VMkEReQLdSu2wfK~)*sc61%ir}YtTlK)%8vaZZI z@d*4*xNu~GHO1%rx?52m(nRElVI@F5Cv90C(aXmqMfl>~|L}(|zTnNbzr}a{`g{@dSAP{ylHrzU9^B!uyXOQGx&Z?>|;xQKj|HcDt4Mgdd`ogjYe$ zS|i-)r2g7|$TP=IZ@r3eFEu-e zWJka-?Ikw*PG1&que>-Xa||M)Hjg-3plC!8N6hvkDvf=hs$4&QUFvL^11~zOJ;TAMviEK4(SbBW%QU0QTFB{dzrQ8TQ+i z?RG=7E*Fu9#ZoRew(UW%drXTcLu>2G9cdr+ZAR3@)i?_(f*i7}+8z4J~Re!HRF>S`7OIM}kFt+72n*Y&9{%tK1= zYB_xz_r!sqjEIB%{h^?Rz=DshVp!|=9ApI6`=j`}nu(M*n-vlVTYZj)LW(N;UZW;j z^DJ5r=FCHsDp6IzuwQTZ9LLBFVhqHr((;_Rm(@2B!48ItD7!nEQR($|D@T(?h7cJj z4Uw{D_b5aX9GGK2+G2RzmGm&7C}XPm4_aUDc|h>+GMGau(;aJ#zAT97!#M7*&%xL> zeAK1G-Rm9!$K^FiPh!@l`i(;7zLOcuvD13ve*tr#O^<7`YHR=i002ovPDHLkV1i5_ B;l2O> literal 0 HcmV?d00001 diff --git a/technic/textures/technicx32/technic_lv_solar_array_side.png b/technic/textures/technicx32/technic_lv_solar_array_side.png new file mode 100644 index 0000000000000000000000000000000000000000..d39d3d81e462c2f4dfca86ec7563893195bca47b GIT binary patch literal 1772 zcmVPx#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m4F01m4Gj_kzz00007bV*G`2iyw* z7cVlU=KPod00wMHL_t(o!&R4CcH}q?L@z*)O1r!FGrO4C|2nGdlt=*c0ZOj+kMrn3 z5rIHNQ2z7Z|0S7ZCS)S2^;@7dLsf|k1i^h_*6ThH?uaS?nTZI1;A^3+)w>bw2S9{y z=l<)j7nTvU)<_XD9MuLQkcp}yswhf^W8*+XAfgr$0Ra(3GH?&ZYt+YEBYe^AV9t|f zos2+4$Ou~R#9G+T?gi0$v6+#XWCYq;A!CNSle?nl8K?px7$1Xhr@sanPKKgQIP3#o z3q+B~U2FhZ8xYm1wlzcqZH)wkMEB0gz>b6K{f!`np%k>*jEF#6wWHQBY7wDX+XW@k z1W{pK6TcRw`=h8JBG?!|(6>g+$%-H|QNXOz%<#3yOqw-X9|fx!^Sb`UB~hiBA==1r z=5-OPTBxmI_rui!*)7;R&SZRi;J<$%`Ln@-`M~FVNZ5KuL}+HH2uMAjnNM5i`;CgS z{GyrB%rK^=< zGim!d1L*yLOniBDeop|v`1~X@33qZ6)_Sj(duLr&ZEjZ??zCRKiA=`lCq!_5eW9&! zeSeb?WNWPR#A;R-nM$)_rmM*aaGTMOqn=e|T^A3TH}qnL_5P6W`1~y1xO0Ag z6KmCIM+CheXwwp&-J2W6H5Yvh)><^PpAn1z5v+I2jI|cld-WdBR%3d8e?2XT2y}03 z%?St^?px7n^lIdi*wy78zmI?Z*(B>oYqZ|!$3b|Yz0=2dM(;-N{rgvmU_?y^u&#^9 zd<3JGBT4mqenAeGo<1wvL&DUe$8G$=w)KqCklu7Je`|`&& zZ4CMth$^qY|0>9j18Mq`1EdPb2qJ<$27UC0oT|EKK3KCvOAy-VkXdGQ%PCn-)_Ui; zu3C$4^TM zqnEM)K8pj8kNJfA&;Q*95y3M__bONgU28s2kJrZ|JnOoC@*EJp9^KCj)_Icdynp{@ zty#hn`Pj1TiL&1DHCfvSZs+t>Vx+AZ83k{wS!y+BLAP1E=B!NT@d(rI7$D5|oAdi? zyQpBt@vrLdcGhGG@RK(!NmRGFm?08R(7d^E_x{O=R+}z?D)!$}YrSK~QAntAeSf27 zL^x|+%=eqTgKZ|JqR$A5DovH~@qxC+`20jwA4R-ncfQ~F?T#Yl8G9_(oVYu$zy1as zX^otdwNbqTX{>6g-9!o?*2F$OnRD{$o%gR_d-QgUc7M_kf1C~OEU?b=2`lIK7tI_je^?5n|Ol>ko^a=UMme1C9vk)xLfl zs3?+!&^*trz6-mfv+N*I>2~Z7C-3jCa<60)Q;^om2i8L7e8TC!LhBgBj$(Ekv@!7a zH|)uXsFZ9stIGxNXni6nq|}V32i8Z~Dv)zNNSTfjpWWYip4b>%?>D-G==t@v4^hJF z^Alh5i2#-n#6D-(7^oTV-@hT^M{cv^Gcw6JtB-RcD$F>GkiFNnJ$^O@>pYp)weMBi ztap5GzK&*p9LX{hpBL=ezZH@#$rU05tinrp5LCE~C6z075Xtwuev1@hb5`r3T6Zg~ zi3m+=G10}fy*t9W-tQ+wq*Ul=X2ecNL=aakeB{I#P0@SRy7VJor# O0000Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m4F01m4Gj_kzz00007bV*G`2iyw* z7cdFgw;Lh=017BcL_t(o!#$WucO1!eg})aOnUz(AnE){m%?8H?2~#B7c8|8yYM)~r zYhfMv*bDs#{|f&BFa0;P(aQG1N0x1|2a+PuBpW0+0w_#{p@z(i;dxQ$&Q+d_$h?{H zZoGSM%IE+1PfAJz??DwY22}+CYaPZIk|qQp#(;C#XdFl}BE|rqs)zsxF$9dYqkB{0 zYyyaoV&sP-D+(MbjV7az62{mOpcsrbfFL@0K-OrCfDlqlAOZr$SX2|i2O6y=)>$wH zjfpJF2);&)1qCsJ#)Qo>QV5t30wD%wWr?HB$l>>awf8=v`{E5-kJhO=2fROZgPo^` zbe;}byLgwK^`~^c+n`xD7}qg&zI)E@lkd5E?IX4xy`uAMhxz6La^%^4`kJGc+uU5f z!S>^IwjV#CAV*O^ap>se)srC`k28u!gBRzIdGhcTnH9EQ9wOmmUTlof9>2own|(GO zKg5~|#)?%Aj~?=7^C8F-x9`BllYO#$jH}nqv-#v}-o9H09pmoW39nx6fGRF;Grzh* zj0t0`MMSWspg1>8S#@dTEi`rTzK69L)+uV+^n4d5uf~sB~nt?yQs|2XiU(^W-$5k zkEHVH1d$x$TEGlqn$*=U-Y4qbThJawaRV5VW#cqj^JwTJ;&7QGFA5AI#2Bf4z)407 zFR%hIjxpni7&Hay;Stqwhgf&c@FQ6^M~tT=-v?7*Y)00cC59fV7L&~~=zR?cRe8wC z-nSqYF%FyM80RnmF3%_$Esjp^1X80> zNg?4}L8Cp7#(-)Cv{9`A1r2EOs4BjyFvb{Ch>XunF**BpAhWFAyo1d$8ig=6ImYG7 z7b)_a6wNgj7UyuequpL)e4^me+Aql)IdhkP&4r5#xNMTK$wg+)%`h>u%+&lBG+Han zEi6;CCulTV%wJd`g@C4rODW;<26J;ScyD3D2TII+a#q# zN)_-Hs}7S}W+#{Neuv;|G$srvbyea05KVzbaS>;yL0fi_pOH}1^z@mDD&_JYt zE5;e0TEv(74%Mp-=VGaMXpb?quQo=p_YdjWIcykvEj> zH^=ytAhmh>{1I6;&dCRtINq=6?DnXul74TK=WqXwSfA2f_!QU9iM7WWYf)hH#WQ-L zMcqH*PY=Flr_&*K6Lj|jo972q{UwgN6|Y}!;+h{b@CS5{0yazRpCoKH&(n>^bh~|w zQC_~-psXj@KX^%9?z6L1(%IU@WldghzUJcHt0O@I5Nnv8y-w-}jI_zKL@rYpDG^b8 zJYlcf&sZlzJ4!EHNI_C}!xNyaNg_IaZp8I8qA47)c>wtaWIL#8`n5 zz>rb|TC~P*p(!V58kIud5u+jM0OQ6HEfBTD`Viuf5KF*NmOG%9P&1X;xRK zu`IK`5sBp~fAfpa*n0N}O_87f;#ZtsTxVU-D*_~Kjg;Mk6C{xgixW`HZm13VlgQtG$lH_ zy9@@$3@cA(KjCASvhoZDUA8;>^!umyn9)7%qdGx(CPf>T@J+&^^lS2b7NgCPl1dv9L99jGW!f|IROJDh zo{}{xY?g!SnHZrYgnGD7RxDx!k{(eGb`cClpso+j^goUq@!*)OHON15j4hu5(iUHG}?u`Naz?E-kWud<(ILbBmT+pWh~#oGZ&S6pf6k-oV)F zT)n->wP(vHmX#Ys7F3t(}=mDs;SG0SO<(4;u)AAXo_f3P$k7c^Z_vz=Q2p?~}E%_g)MBuPNw`J2wGvYfsMyYrJdME&%p?=c}`KuD^Qqzn?v{^+)fE zhny;%K`50S^M4q zT0=k`xP)AN5W#SGTxp#-pL!OMs%3O^6rWB~2ok!wW+IZxv7;|xlH(V4cZQFC@5XEI zy?Skryr&lI+<4<>OM&~%w5-lhaTYjFBXhh$g<@!#7J^MC=|A=|<(YYcQU|Rqok+8Z zZw@d}PdQ`yT!x2+bY!x&@iU9>TDRzOnL5CeH?L}Yvwgu(P8+HIg&?o!%YWz0kDtdIopbrcKIPz_C+Nx*(9#?#rFoR1 z0!|b1CKl^b=7ot=iiKZ3zV*KSTefWZ#L0fa$%zG@UMbJ@uBYHVX&h57xkd z{IZYYmM>s%$J0Dt{1D4le2Pl3pRQ(;KVL4k~-pCmRRp-)j8O5|elX>Ey#{e{4v z-mwCoJb&p>7}!BELLr}{TFkTlmYb=}FZ25EpP}*mi^#ccEQ!YXCK^#>Pf@@^^cgYg@SJhO0PZ#&kY*);Ub?DD%jV4|C>uRU%u&yNrBRN4>)X4xy0N zQ9TjARG#0vd-v}8X)DlZG!9k5pj(|H5>P1@DaVui;px4+_`(6sx?m|Cv%9EtO>kEC zD?Glnk2$j=E?RL8BoJu^4pJ`R6M#S#isJCO-g%sNxXjUPHVLB$1QfyQi538OF*JfavCZMd(9E?2QwF%@+OP24O`Cr{ z`@@T7C586q>ZSKW2nhkH3b>5GXVh&0lQt)(4De4~fBOR` z#`0}H+wbQ)z?GNX&~sU5XXh!+-&fs!+eQF(+X0ZvnXf{`)_;Rc`zC?f;55Z{GaBvH1Q2DANRR830k)00000NkvXXu0mjfHQid9 literal 0 HcmV?d00001 diff --git a/technic/textures/technicx32/technic_mv_solar_array_bottom.png b/technic/textures/technicx32/technic_mv_solar_array_bottom.png new file mode 100644 index 0000000000000000000000000000000000000000..94c82220d17121439939c1b88985aea891b76a69 GIT binary patch literal 2019 zcmV<92ORi`P)Px#24YJ`L;(K){{a7>y{D4^000SaNLh0L01m4F01m4Gj_kzz00007bV*G`2iyw* z7cUx+Q&eIA00(19L_t(o!*!QU%Ph%pg`bGXtm^LfevCfA#@1+~h5Q2y($)whfw9ql zHMT+4QcLR(*b-s}WEgqi`rf(k+g+6z5ne=f&q&4vwd(53$P*{dIVnH>#V?XfG7~Zp zRWcF;tTj}Xh(JW}IcdEg-$H~Vs*sQ*0)XH?QMLMS1|&d&2r-@GL;8B6WdvqMijd)` z7?=Qwh$5n>Dd|pMRuF**BAok5qKahT5iIM9hM{UiOuDX&eZ#Di5l9m<18be|Ndw4C zL zR>&x-ikKk?+6>8p$;=+@X_uA#cBAkC6@g6DjEF#0!3?CD5{SZWF{HOdOmS=N3uxNmIZgGuP5dh4-#7Mh$_}vaRQJjRk#`2JL7sq zLXB7(lIWCUtP>zz3UYK7b#=8QzNHWR&**O>c$@Jqht z&b=sA8bYx8w?8v+65gy%j1RhzfJtYiw1q0v~OSwv=W> zBr6wuPQsntuY^xBf))|Ud6ZCxORId)!s@|LIbfr`Ltjp@$5@5KjE zM3QYExI5d+OHG0qbL?1e*zC9u09u3-QLvGa83)vXSSuw{>Xd#c=F@5Apa1Pw%-gNlAHmpnNEq8*h)RQ&G_!`PG3Uh0;1HD*VUB@WE9OS< zAD?~B>3rtH^~yGO-hcRtS5Hs$-r2{bsjzPwPvyW>%0GM5 z8hu$25yqIfJ3dAcy0rtOK+Le-5VMkEReQLdSu2wfK~)*sc61%ir}YtTlK)%8vaZZI z@d*4*xNu~GHO1%rx?52m(nRElVI@F5Cv90C(aXmqMfl>~|L}(|zTnNbzr}a{`g{@dSAP{ylHrzU9^B!uyXOQGx&Z?>|;xQKj|HcDt4Mgdd`ogjYe$ zS|i-)r2g7|$TP=IZ@r3eFEu-e zWJka-?Ikw*PG1&que>-Xa||M)Hjg-3plC!8N6hvkDvf=hs$4&QUFvL^11~zOJ;TAMviEK4(SbBW%QU0QTFB{dzrQ8TQ+i z?RG=7E*Fu9#ZoRew(UW%drXTcLu>2G9cdr+ZAR3@)i?_(f*i7}+8z4J~Re!HRF>S`7OIM}kFt+72n*Y&9{%tK1= zYB_xz_r!sqjEIB%{h^?Rz=DshVp!|=9ApI6`=j`}nu(M*n-vlVTYZj)LW(N;UZW;j z^DJ5r=FCHsDp6IzuwQTZ9LLBFVhqHr((;_Rm(@2B!48ItD7!nEQR($|D@T(?h7cJj z4Uw{D_b5aX9GGK2+G2RzmGm&7C}XPm4_aUDc|h>+GMGau(;aJ#zAT97!#M7*&%xL> zeAK1G-Rm9!$K^FiPh!@l`i(;7zLOcuvD13ve*tr#O^<7`YHR=i002ovPDHLkV1i5_ B;l2O> literal 0 HcmV?d00001 diff --git a/technic/textures/technicx32/technic_mv_solar_array_side.png b/technic/textures/technicx32/technic_mv_solar_array_side.png new file mode 100644 index 0000000000000000000000000000000000000000..d39d3d81e462c2f4dfca86ec7563893195bca47b GIT binary patch literal 1772 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 m9FEEt#4_Nl#Z%!D$NvNUq{J+VK9K$Z0000