815 lines
28 KiB
Lua

-- basic empty tank
minetest.register_node("tanks:level_0", {
description = "Tank",
node_box = {
type = "fixed",
fixed = {
{0.5, 0.5, 0.5, -0.5, -0.5, 0.43750},
{-0.43750, 0.5, 0.43750, -0.5, -0.5, -0.5},
{0.5, -0.5, -0.5, -0.5, 0.5, -0.43750},
{0.5, -0.5, -0.43750, 0.43750, 0.5, 0.43750},
--{-0.43750, -0.5, 0.43750, 0.43750, -0.43750+0.0625, -0.43750},
},
},
tiles = {"tankgaugetop.png", "tankgaugetop.png", "tankgauge.png"},
groups = {oddly_breakable_by_hand=1},
paramtype = "light",
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
}
},
drawtype = "nodebox",
})
-- tank crafting
minetest.register_craft({
output = 'tanks:level_0',
recipe = {
{'deco:glass', '', 'deco:glass'},
{'deco:glass', '', 'deco:glass'},
{'deco:glass', '', 'deco:glass'},
}
})
-- tank nodeboxes
tank_level = {}
tank_level[1] = {
{0.5, 0.5, 0.5, -0.5, -0.5, 0.43750},
{-0.43750, 0.5, 0.43750, -0.5, -0.5, -0.5},
{0.5, -0.5, -0.5, -0.5, 0.5, -0.43750},
{0.5, -0.5, -0.43750, 0.43750, 0.5, 0.43750},
{-0.43750, -0.5, 0.43750, 0.43750, -0.43750+0.0625, -0.43750},
}
tank_level[2] = {
{0.5, 0.5, 0.5, -0.5, -0.5, 0.43750},
{-0.43750, 0.5, 0.43750, -0.5, -0.5, -0.5},
{0.5, -0.5, -0.5, -0.5, 0.5, -0.43750},
{0.5, -0.5, -0.43750, 0.43750, 0.5, 0.43750},
{-0.43750, -0.5, 0.43750, 0.43750, -0.43750+(0.0625*3), -0.43750},
}
tank_level[3] = {
{0.5, 0.5, 0.5, -0.5, -0.5, 0.43750},
{-0.43750, 0.5, 0.43750, -0.5, -0.5, -0.5},
{0.5, -0.5, -0.5, -0.5, 0.5, -0.43750},
{0.5, -0.5, -0.43750, 0.43750, 0.5, 0.43750},
{-0.43750, -0.5, 0.43750, 0.43750, -0.43750+(0.0625*5), -0.43750},
}
tank_level[4] = {
{0.5, 0.5, 0.5, -0.5, -0.5, 0.43750},
{-0.43750, 0.5, 0.43750, -0.5, -0.5, -0.5},
{0.5, -0.5, -0.5, -0.5, 0.5, -0.43750},
{0.5, -0.5, -0.43750, 0.43750, 0.5, 0.43750},
{-0.43750, -0.5, 0.43750, 0.43750, -0.43750+(0.0625*7), -0.43750},
}
tank_level[5] = {
{0.5, 0.5, 0.5, -0.5, -0.5, 0.43750},
{-0.43750, 0.5, 0.43750, -0.5, -0.5, -0.5},
{0.5, -0.5, -0.5, -0.5, 0.5, -0.43750},
{0.5, -0.5, -0.43750, 0.43750, 0.5, 0.43750},
{-0.43750, -0.5, 0.43750, 0.43750, -0.43750+(0.0625*9), -0.43750},
}
tank_level[6] = {
{0.5, 0.5, 0.5, -0.5, -0.5, 0.43750},
{-0.43750, 0.5, 0.43750, -0.5, -0.5, -0.5},
{0.5, -0.5, -0.5, -0.5, 0.5, -0.43750},
{0.5, -0.5, -0.43750, 0.43750, 0.5, 0.43750},
{-0.43750, -0.5, 0.43750, 0.43750, -0.43750+(0.0625*11), -0.43750},
}
tank_level[7] = {
{0.5, 0.5, 0.5, -0.5, -0.5, 0.43750},
{-0.43750, 0.5, 0.43750, -0.5, -0.5, -0.5},
{0.5, -0.5, -0.5, -0.5, 0.5, -0.43750},
{0.5, -0.5, -0.43750, 0.43750, 0.5, 0.43750},
{-0.43750, -0.5, 0.43750, 0.43750, -0.43750+(0.0625*13), -0.43750},
}
tank_level[8] = {
{0.5, 0.5, 0.5, -0.5, -0.5, 0.43750},
{-0.43750, 0.5, 0.43750, -0.5, -0.5, -0.5},
{0.5, -0.5, -0.5, -0.5, 0.5, -0.43750},
{0.5, -0.5, -0.43750, 0.43750, 0.5, 0.43750},
{-0.43750, -0.5, 0.43750, 0.43750, -0.43750+(0.0625*15), -0.43750},
}
-- register tank function
function register_tank(name, light_min)
for level=1,8 do
local textures = "nope.avi"
local light = 0
if name == "w" then
textures = {"tank_water_level_8.png^tankgaugetop.png", "tank_water_level_8.png^tankgaugetop.png", "tank_water_level_"..level..".png^tankgauge.png"}
light = 0
elseif name == "l" then
textures = {"tank_lava_level_8.png^tankgaugetop.png", "tank_lava_level_8.png^tankgaugetop.png", "tank_lava_level_"..level..".png^tankgauge.png"}
light = light_min+level
elseif name == "o" then
textures = {"tank_oil_level_8.png^tankgaugetop.png", "tank_oil_level_8.png^tankgaugetop.png", "tank_oil_level_"..level..".png^tankgauge.png"}
light = 0
elseif name == "e" then
textures = {"tank_edens_level_8.png^tankgaugetop.png", "tank_edens_level_8.png^tankgaugetop.png", "tank_edens_level_"..level..".png^tankgauge.png"}
light = 0
else
textures = {"tankgaugetop.png", "tankgaugetop.png", "tankgauge.png"}
light = 0
end
minetest.register_node("tanks:"..name.."_level_"..level, {
description = name .." Tank Level "..level,
drawtype = "nodebox",
paramtype = "light",
tiles = textures,
node_box = {
type = "fixed",
fixed = tank_level[level],
},
light_source = light,
selection_box = {
type = "fixed",
fixed = {
{-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
}
},
groups = {impossible=1},
})
end
end
-- water tanks
register_tank("w", 1)
-- eden's water tanks
register_tank("e", 1)
-- lava tanks
register_tank("l", 6)
-- oil tanks
register_tank("o", 1)
-- black magic here
minetest.register_on_punchnode(function(pos, node, puncher)
if not puncher then return end
tnodepos = pos
--store the highest tank point to be drained
highpoint = 1
tnodename = minetest.get_node(pos)
bname = puncher:get_wielded_item():get_name()
for level=1,8 do
if tnodename.name == "tanks:level_0" then
if bname == "bucket:oil" then
puncher:set_wielded_item("bucket:bucket_empty 1")
minetest.set_node(pos, {name="tanks:o_level_1"})
end
end
if tnodename.name == "tanks:o_level_"..level then
if bname == "bucket:bucket_empty" then
if tnodename.name == "tanks:o_level_1" then
minetest.set_node(pos, {name="tanks:level_0"})
puncher:set_wielded_item("bucket:oil 1")
else
nodeset = "false"
for nodeup=1,16 do
tnodepos.y = tnodepos.y + 1
abovenode = minetest.get_node(tnodepos)
--print (abovenode.name)
if abovenode.name == "tanks:o_level_8" or abovenode.name == "tanks:o_level_1" or abovenode.name == "tanks:o_level_2" or abovenode.name == "tanks:o_level_3" or abovenode.name == "tanks:o_level_4" or abovenode.name == "tanks:o_level_5" or abovenode.name == "tanks:o_level_6" or abovenode.name == "tanks:o_level_7" then
--do nothing
else
highpoint = nodeup
print ('high point found at '..highpoint)
tnodepos.y = tnodepos.y-nodeup --reset tnodepos
break
end
end
abovenode = minetest.get_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z})
nodeset = "false"
if abovenode.name == "tanks:o_level_1" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:level_0"})
puncher:set_wielded_item("bucket:oil 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_2" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:o_level_1"})
puncher:set_wielded_item("bucket:oil 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_3" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:o_level_2"})
puncher:set_wielded_item("bucket:oil 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_4" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:o_level_3"})
puncher:set_wielded_item("bucket:oil 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_5" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:o_level_4"})
puncher:set_wielded_item("bucket:oil 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_6" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:o_level_5"})
puncher:set_wielded_item("bucket:oil 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_7" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:o_level_6"})
puncher:set_wielded_item("bucket:oil 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_8" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:o_level_7"})
puncher:set_wielded_item("bucket:oil 1")
nodeset = "true"
end
abovenode = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
if abovenode.name:find("tanks:level_0", 1, true) ~= nil and nodeset == "false" then
minetest.set_node(pos, {name="tanks:o_level_"..level-1})
puncher:set_wielded_item("bucket:oil 1")
nodeset = "true"
end
end
end
if bname == "bucket:oil" then
if tnodename.name == "tanks:o_level_8" then
nodeset = "false"
for nodeup=1,16 do
tnodepos.y = tnodepos.y + 1
abovenode = minetest.get_node(tnodepos)
if abovenode.name == "tanks:level_0" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:o_level_1"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_1" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:o_level_2"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_2" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:o_level_3"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_3" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:o_level_4"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_4" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:o_level_5"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_5" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:o_level_6"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_6" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:o_level_7"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:o_level_7" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:o_level_8"})
puncher:set_wielded_item("bucket:bucket_empty 1")
--return
end
if abovenode.name:find("level_0", 1, true) == true then
print 'broke loop, tank not found'
break
end
end
else
minetest.set_node(pos, {name="tanks:o_level_"..level+1})
puncher:set_wielded_item("bucket:bucket_empty 1")
end
end
end
end
for level=1,8 do
if tnodename.name == "tanks:level_0" then
if bname == "bucket:bucket_water" then
puncher:set_wielded_item("bucket:bucket_empty 1")
minetest.set_node(pos, {name="tanks:w_level_1"})
end
end
if tnodename.name == "tanks:w_level_"..level then
if bname == "bucket:bucket_empty" then
if tnodename.name == "tanks:w_level_1" then
minetest.set_node(pos, {name="tanks:level_0"})
puncher:set_wielded_item("bucket:bucket_water 1")
else
nodeset = "false"
for nodeup=1,16 do
tnodepos.y = tnodepos.y + 1
abovenode = minetest.get_node(tnodepos)
--print (abovenode.name)
if abovenode.name == "tanks:w_level_8" or abovenode.name == "tanks:w_level_1" or abovenode.name == "tanks:w_level_2" or abovenode.name == "tanks:w_level_3" or abovenode.name == "tanks:w_level_4" or abovenode.name == "tanks:w_level_5" or abovenode.name == "tanks:w_level_6" or abovenode.name == "tanks:w_level_7" then
--do nothing
else
highpoint = nodeup
print ('high point found at '..highpoint)
tnodepos.y = tnodepos.y-nodeup --reset tnodepos
break
end
end
abovenode = minetest.get_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z})
nodeset = "false"
if abovenode.name == "tanks:w_level_1" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:level_0"})
puncher:set_wielded_item("bucket:bucket_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_2" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:w_level_1"})
puncher:set_wielded_item("bucket:bucket_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_3" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:w_level_2"})
puncher:set_wielded_item("bucket:bucket_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_4" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:w_level_3"})
puncher:set_wielded_item("bucket:bucket_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_5" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:w_level_4"})
puncher:set_wielded_item("bucket:bucket_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_6" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:w_level_5"})
puncher:set_wielded_item("bucket:bucket_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_7" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:w_level_6"})
puncher:set_wielded_item("bucket:bucket_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_8" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:w_level_7"})
puncher:set_wielded_item("bucket:bucket_water 1")
nodeset = "true"
end
abovenode = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
if abovenode.name:find("tanks:level_0", 1, true) ~= nil and nodeset == "false" then
minetest.set_node(pos, {name="tanks:w_level_"..level-1})
puncher:set_wielded_item("bucket:bucket_water 1")
nodeset = "true"
end
end
end
if bname == "bucket:bucket_water" then
if tnodename.name == "tanks:w_level_8" then
nodeset = "false"
for nodeup=1,16 do
tnodepos.y = tnodepos.y + 1
abovenode = minetest.get_node(tnodepos)
if abovenode.name == "tanks:level_0" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:w_level_1"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_1" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:w_level_2"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_2" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:w_level_3"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_3" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:w_level_4"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_4" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:w_level_5"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_5" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:w_level_6"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_6" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:w_level_7"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:w_level_7" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:w_level_8"})
puncher:set_wielded_item("bucket:bucket_empty 1")
--return
end
if abovenode.name:find("level_0", 1, true) == true then
print 'broke loop, tank not found'
break
end
end
else
minetest.set_node(pos, {name="tanks:w_level_"..level+1})
puncher:set_wielded_item("bucket:bucket_empty 1")
end
end
end
end
for level=1,8 do
if tnodename.name == "tanks:level_0" then
if bname == "bucket:bucket_lava" then
puncher:set_wielded_item("bucket:bucket_empty 1")
minetest.set_node(pos, {name="tanks:l_level_1"})
end
end
if tnodename.name == "tanks:l_level_"..level then
if bname == "bucket:bucket_empty" then
if tnodename.name == "tanks:l_level_1" then
minetest.set_node(pos, {name="tanks:level_0"})
puncher:set_wielded_item("bucket:bucket_lava 1")
else
nodeset = "false"
for nodeup=1,16 do
tnodepos.y = tnodepos.y + 1
abovenode = minetest.get_node(tnodepos)
--print (abovenode.name)
if abovenode.name == "tanks:l_level_8" or abovenode.name == "tanks:l_level_1" or abovenode.name == "tanks:l_level_2" or abovenode.name == "tanks:l_level_3" or abovenode.name == "tanks:l_level_4" or abovenode.name == "tanks:l_level_5" or abovenode.name == "tanks:l_level_6" or abovenode.name == "tanks:l_level_7" then
--do nothing
else
highpoint = nodeup
print ('high point found at '..highpoint)
tnodepos.y = tnodepos.y-nodeup --reset tnodepos
break
end
end
abovenode = minetest.get_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z})
nodeset = "false"
if abovenode.name == "tanks:l_level_1" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:level_0"})
puncher:set_wielded_item("bucket:bucket_lava 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_2" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:l_level_1"})
puncher:set_wielded_item("bucket:bucket_lava 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_3" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:l_level_2"})
puncher:set_wielded_item("bucket:bucket_lava 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_4" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:l_level_3"})
puncher:set_wielded_item("bucket:bucket_lava 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_5" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:l_level_4"})
puncher:set_wielded_item("bucket:bucket_lava 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_6" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:l_level_5"})
puncher:set_wielded_item("bucket:bucket_lava 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_7" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:l_level_6"})
puncher:set_wielded_item("bucket:bucket_lava 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_8" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:l_level_7"})
puncher:set_wielded_item("bucket:bucket_lava 1")
nodeset = "true"
end
abovenode = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
if abovenode.name:find("tanks:level_0", 1, true) ~= nil and nodeset == "false" then
minetest.set_node(pos, {name="tanks:l_level_"..level-1})
puncher:set_wielded_item("bucket:bucket_lava 1")
nodeset = "true"
end
end
end
if bname == "bucket:bucket_lava" then
if tnodename.name == "tanks:l_level_8" then
nodeset = "false"
for nodeup=1,16 do
tnodepos.y = tnodepos.y + 1
abovenode = minetest.get_node(tnodepos)
if abovenode.name == "tanks:level_0" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:l_level_1"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_1" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:l_level_2"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_2" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:l_level_3"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_3" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:l_level_4"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_4" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:l_level_5"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_5" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:l_level_6"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_6" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:l_level_7"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:l_level_7" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:l_level_8"})
puncher:set_wielded_item("bucket:bucket_empty 1")
--return
end
if abovenode.name:find("level_0", 1, true) == true then
print 'broke loop, tank not found'
break
end
end
else
minetest.set_node(pos, {name="tanks:l_level_"..level+1})
puncher:set_wielded_item("bucket:bucket_empty 1")
end
end
end
end
for level=1,8 do
if tnodename.name == "tanks:level_0" then
if bname == "bucket:bucket_edens_water" then
puncher:set_wielded_item("bucket:bucket_empty 1")
minetest.set_node(pos, {name="tanks:e_level_1"})
end
end
if tnodename.name == "tanks:e_level_"..level then
if bname == "bucket:bucket_empty" then
if tnodename.name == "tanks:e_level_1" then
minetest.set_node(pos, {name="tanks:level_0"})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
else
nodeset = "false"
for nodeup=1,16 do
tnodepos.y = tnodepos.y + 1
abovenode = minetest.get_node(tnodepos)
--print (abovenode.name)
if abovenode.name == "tanks:e_level_8" or abovenode.name == "tanks:e_level_1" or abovenode.name == "tanks:e_level_2" or abovenode.name == "tanks:e_level_3" or abovenode.name == "tanks:e_level_4" or abovenode.name == "tanks:e_level_5" or abovenode.name == "tanks:e_level_6" or abovenode.name == "tanks:e_level_7" then
--do nothing
else
highpoint = nodeup
--print ('high point found at '..highpoint)
tnodepos.y = tnodepos.y-nodeup --reset tnodepos
break
end
end
abovenode = minetest.get_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z})
nodeset = "false"
if abovenode.name == "tanks:e_level_1" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:level_0"})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_2" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:e_level_1"})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_3" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:e_level_2"})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_4" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:e_level_3"})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_5" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:e_level_4"})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_6" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:e_level_5"})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_7" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:e_level_6"})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_8" and nodeset == "false" then
minetest.set_node({x=pos.x, y=pos.y+highpoint-1, z=pos.z}, {name="tanks:e_level_7"})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
nodeset = "true"
end
abovenode = minetest.get_node({x=pos.x, y=pos.y+1, z=pos.z})
if abovenode.name:find("tanks:level_0", 1, true) ~= nil and nodeset == "false" then
minetest.set_node(pos, {name="tanks:e_level_"..level-1})
puncher:set_wielded_item("bucket:bucket_edens_water 1")
nodeset = "true"
end
end
end
if bname == "bucket:oil" then
if tnodename.name == "tanks:e_level_8" then
nodeset = "false"
for nodeup=1,16 do
tnodepos.y = tnodepos.y + 1
abovenode = minetest.get_node(tnodepos)
if abovenode.name == "tanks:level_0" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:e_level_1"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_1" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:e_level_2"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_2" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:e_level_3"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_3" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:e_level_4"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_4" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:e_level_5"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_5" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:e_level_6"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_6" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:e_level_7"})
puncher:set_wielded_item("bucket:bucket_empty 1")
nodeset = "true"
end
if abovenode.name == "tanks:e_level_7" and nodeset == "false" then
minetest.set_node(tnodepos, {name="tanks:e_level_8"})
puncher:set_wielded_item("bucket:bucket_empty 1")
--return
end
if abovenode.name:find("level_0", 1, true) == true then
--print 'broke loop, tank not found'
break
end
end
else
minetest.set_node(pos, {name="tanks:e_level_"..level+1})
puncher:set_wielded_item("bucket:bucket_empty 1")
end
end
end
end
end)