forked from minetest-mods/technic
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
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
1 parent
215de54
commit 07953dd
Showing
2 changed files
with
110 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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) | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters