Skip to content

Commit

Permalink
New MV hydro with upgraded power
Browse files Browse the repository at this point in the history
The LV hydro is easy to make giving lot of power. The New hydro MV will put a tier system to it; thereby giving more incentive to player to pursue MV hydro plus a little survival aspect. This is a result of [Detailed discussion which is here](minetest-mods#411). Thanks to VanessaE for a good talk and support :)
  • Loading branch information
tanmayameher committed Feb 5, 2018
1 parent 215de54 commit 07953dd
Show file tree
Hide file tree
Showing 2 changed files with 110 additions and 1 deletion.
109 changes: 109 additions & 0 deletions technic/machines/MV/hydro_turbine.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
-- A Hydro Turbine produces MV EUs by exploiting flowing water across it
-- It is a MV EU supplyer and fairly high yield (max 1750EUs)

local S = technic.getter

local cable_entry = "^technic_cable_connection_overlay.png"

minetest.register_alias("hydro_turbine", "technic:hydro_turbine")

minetest.register_craft({
output = 'technic:hydro_turbine',
recipe = {
{'technic:stainless_steel_ingot', 'technic:water_mill', 'technic:stainless_steel_ingot'},
{'default:diamond', 'technic:mv_transformer', 'default:diamond'},
{'technic:stainless_steel_ingot', 'technic:mv_cable', 'technic:stainless_steel_ingot'},
}
})

local function check_node_around_mill(pos)
local node = minetest.get_node(pos)
if node.name == "default:water_flowing"
or node.name == "default:river_water_flowing" then
return node.param2 -- returns approx. water flow, if any
end
return false
end

local run = function(pos, node)
local meta = minetest.get_meta(pos)
local water_flow = 0
local lava_nodes = 0
local production_level = 0
local eu_supply = 0
local max_output = 35 * 50 -- 10 times better than LV hydro because of 2 diamonds extra and 4 stainless steel, a transformer and whatnot ;P. If 2 extra diamonds feels too hard to get; change it to mese may be. But i don't think that's a good idea. I would rather go for mese block or something if changing. Man hydro turbines are strong and long lasting. So, give it some value :)

local positions = {
{x=pos.x+1, y=pos.y, z=pos.z},
{x=pos.x-1, y=pos.y, z=pos.z},
{x=pos.x, y=pos.y, z=pos.z+1},
{x=pos.x, y=pos.y, z=pos.z-1},
}

for _, p in pairs(positions) do
local check = check_node_around_mill(p)
if check then
water_flow = water_flow + check
end
end

eu_supply = math.min(35 * water_flow, max_output)
production_level = math.floor(100 * eu_supply / max_output)

meta:set_int("MV_EU_supply", eu_supply)

meta:set_string("infotext",
S("Hydro %s Generator"):format("MV").." ("..production_level.."%)")

if production_level > 0 and
minetest.get_node(pos).name == "technic:hydro_turbine" then
technic.swap_node (pos, "technic:hydro_turbine_active")
meta:set_int("MV_EU_supply", 0)
return
end
if production_level == 0 then
technic.swap_node(pos, "technic:hydro_turbine")
end
end

minetest.register_node("technic:hydro_turbine", {
description = S("Hydro %s Generator"):format("MV"),
tiles = {
"technic_hydro_turbine_top.png",
"technic_machine_bottom.png"..cable_entry,
"technic_hydro_turbine_side.png",
"technic_hydro_turbine_side.png",
"technic_hydro_turbine_side.png",
"technic_hydro_turbine_side.png"
},
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_mv=1},
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
meta:set_string("infotext", S("Hydro %s Generator"):format("MV"))
meta:set_int("MV_EU_supply", 0)
end,
technic_run = run,
})

minetest.register_node("technic:hydro_turbine_active", {
description = S("Hydro %s Generator"):format("MV"),
tiles = {"technic_hydro_turbine_top_active.png", "technic_machine_bottom.png",
"technic_hydro_turbine_side.png", "technic_hydro_turbine_side.png",
"technic_hydro_turbine_side.png", "technic_hydro_turbine_side.png"},
paramtype2 = "facedir",
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2,
technic_machine=1, technic_mv=1, not_in_creative_inventory=1},
legacy_facedir_simple = true,
sounds = default.node_sound_wood_defaults(),
drop = "technic:hydro_turbine",
technic_run = run,
technic_disabled_machine_name = "technic:hydro_turbine",
})

technic.register_machine("MV", "technic:hydro_turbine", technic.producer)
technic.register_machine("MV", "technic:hydro_turbine_active", technic.producer)

2 changes: 1 addition & 1 deletion technic/machines/MV/init.lua
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ if technic.config:get_bool("enable_wind_mill") then
end
dofile(path.."/generator.lua")
dofile(path.."/solar_array.lua")

dofile(path.."/hydro_turbine.lua")
-- Machines
dofile(path.."/alloy_furnace.lua")
dofile(path.."/electric_furnace.lua")
Expand Down

0 comments on commit 07953dd

Please sign in to comment.