Castrum/mods/castrum/on_dig.lua

174 lines
12 KiB
Lua

dofile(minetest.get_modpath("castrum").."/config.txt")
minetest.register_on_dignode(function(pos, node, digger)
if dig_code == true then
Update_knight(digger)
local fightdig = digger:get_attribute("fightdig")
local fight = digger:get_attribute("fight")
if (node.name == "castrum:knight_lv1" or node.name == "castrum:knight_lv2" or node.name == "castrum:knight_lv3") and fightdig ~= "true" and fight == "true" then
local inv = digger:get_inventory()
inv:add_item("main", ""..node.name)
digger:set_attribute("fightpos", minetest.pos_to_string(pos))
if minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name == "castrum:knight_lv3_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name == "castrum:knight_dark" then
minetest.set_node({x=pos.x-1, y=8, z=pos.z}, {name="castrum:fight2"})
elseif minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name ~= "castrum:knight_lv2" and minetest.get_node({x=pos.x-1, y=9, z=pos.z}).name ~= "castrum:knight_lv3" and minetest.get_node({x=pos.x-1, y=8, z=pos.z}).name ~= "default:gravel" then
minetest.set_node({x=pos.x-1, y=8, z=pos.z}, {name="castrum:fight1"})
end
if minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name == "castrum:knight_lv3_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name == "castrum:knight_dark" then
minetest.set_node({x=pos.x-1, y=8, z=pos.z-1}, {name="castrum:fight2"})
elseif minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv2" and minetest.get_node({x=pos.x-1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv3" and minetest.get_node({x=pos.x-1, y=8, z=pos.z-1}).name ~= "default:gravel" then
minetest.set_node({x=pos.x-1, y=8, z=pos.z-1}, {name="castrum:fight1"})
end
if minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name == "castrum:knight_lv3_dark" or minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name == "castrum:knight_dark" then
minetest.set_node({x=pos.x-1, y=8, z=pos.z+1}, {name="castrum:fight2"})
elseif minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv2"and minetest.get_node({x=pos.x-1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv3" and minetest.get_node({x=pos.x-1, y=8, z=pos.z+1}).name ~= "default:gravel" then
minetest.set_node({x=pos.x-1, y=8, z=pos.z+1}, {name="castrum:fight1"})
end
if minetest.get_node({x=pos.x, y=9, z=pos.z}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z}).name == "castrum:knight_lv3_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z}).name == "castrum:knight_dark" then
minetest.set_node({x=pos.x, y=8, z=pos.z}, {name="castrum:fight2"})
elseif minetest.get_node({x=pos.x, y=9, z=pos.z}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x, y=9, z=pos.z}).name ~= "castrum:knight_lv2" and minetest.get_node({x=pos.x, y=9, z=pos.z}).name ~= "castrum:knight_lv3" and minetest.get_node({x=pos.x, y=8, z=pos.z}).name ~= "default:gravel" then
minetest.set_node({x=pos.x, y=8, z=pos.z}, {name="castrum:fight1"})
end
if minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name == "castrum:knight_lv3_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name == "castrum:knight_dark" then
minetest.set_node({x=pos.x, y=8, z=pos.z-1}, {name="castrum:fight2"})
elseif minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name ~= "castrum:knight_lv2" and minetest.get_node({x=pos.x, y=9, z=pos.z-1}).name ~= "castrum:knight_lv3" and minetest.get_node({x=pos.x, y=8, z=pos.z-1}).name ~= "default:gravel" then
minetest.set_node({x=pos.x, y=8, z=pos.z-1}, {name="castrum:fight1"})
end
if minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name == "castrum:knight_lv3_dark" or minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name == "castrum:knight_dark" then
minetest.set_node({x=pos.x, y=8, z=pos.z+1}, {name="castrum:fight2"})
elseif minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name ~= "castrum:knight_lv2" and minetest.get_node({x=pos.x, y=9, z=pos.z+1}).name ~= "castrum:knight_lv3" and minetest.get_node({x=pos.x, y=8, z=pos.z+1}).name ~= "default:gravel" then
minetest.set_node({x=pos.x, y=8, z=pos.z+1}, {name="castrum:fight1"})
end
if minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name == "castrum:knight_lv3_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name == "castrum:knight_dark" then
minetest.set_node({x=pos.x+1, y=8, z=pos.z}, {name="castrum:fight2"})
elseif minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name ~= "castrum:knight_lv2" and minetest.get_node({x=pos.x+1, y=9, z=pos.z}).name ~= "castrum:knight_lv3" and minetest.get_node({x=pos.x+1, y=8, z=pos.z}).name ~= "default:gravel" then
minetest.set_node({x=pos.x+1, y=8, z=pos.z}, {name="castrum:fight1"})
end
if minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name == "castrum:knight_lv3_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name == "castrum:knight_dark" then
minetest.set_node({x=pos.x+1, y=8, z=pos.z-1}, {name="castrum:fight2"})
elseif minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv2" and minetest.get_node({x=pos.x+1, y=9, z=pos.z-1}).name ~= "castrum:knight_lv3" and minetest.get_node({x=pos.x+1, y=8, z=pos.z-1}).name ~= "default:gravel" then
minetest.set_node({x=pos.x+1, y=8, z=pos.z-1}, {name="castrum:fight1"})
end
if minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name == "castrum:knight_lv1_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name == "castrum:knight_lv2_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name == "castrum:knight_lv3_dark" or minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name == "castrum:knight_dark" then
minetest.set_node({x=pos.x+1, y=8, z=pos.z+1}, {name="castrum:fight2"})
elseif minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv1" and minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv2" and minetest.get_node({x=pos.x+1, y=9, z=pos.z+1}).name ~= "castrum:knight_lv3" and minetest.get_node({x=pos.x+1, y=8, z=pos.z+1}).name ~= "default:gravel" then
minetest.set_node({x=pos.x+1, y=8, z=pos.z+1}, {name="castrum:fight1"})
end
if node.name == "castrum:knight_lv1" then
digger:set_attribute("fightnode", "1")
end
if node.name == "castrum:knight_lv2" then
digger:set_attribute("fightnode", "2")
end
if node.name == "castrum:knight_lv3" then
digger:set_attribute("fightnode", "3")
end
digger:set_attribute("fightdig", "true")
elseif node.name == "castrum:horse1" and fightdig ~= "true" and fight == "true" and pos.x < -134 then
local inv = digger:get_inventory()
local knight = 0
if minetest.get_node({x=pos.x, y=10, z=pos.z}).name == "castrum:knight_lv1_sit" then
minetest.set_node({x=pos.x, y=10, z=pos.z}, {name="air"})
knight = 1
elseif minetest.get_node({x=pos.x, y=10, z=pos.z}).name == "castrum:knight_lv2_sit" then
minetest.set_node({x=pos.x, y=10, z=pos.z}, {name="air"})
knight = 2
elseif minetest.get_node({x=pos.x, y=10, z=pos.z}).name == "castrum:knight_lv3_sit" then
minetest.set_node({x=pos.x, y=10, z=pos.z}, {name="air"})
knight = 3
end
inv:add_item("main", "castrum:horse1_item_"..knight)
digger:set_attribute("fightpos", minetest.pos_to_string(pos))
local list = {
{x=pos.x-2, y=9, z=pos.z},
{x=pos.x-2, y=9, z=pos.z-1},
{x=pos.x-2, y=9, z=pos.z-2},
{x=pos.x-2, y=9, z=pos.z+1},
{x=pos.x-2, y=9, z=pos.z+2},
{x=pos.x+2, y=9, z=pos.z},
{x=pos.x+2, y=9, z=pos.z-1},
{x=pos.x+2, y=9, z=pos.z-2},
{x=pos.x+2, y=9, z=pos.z+1},
{x=pos.x+2, y=9, z=pos.z+2},
{x=pos.x-1, y=9, z=pos.z-2},
{x=pos.x-1, y=9, z=pos.z+2},
{x=pos.x, y=9, z=pos.z-2},
{x=pos.x, y=9, z=pos.z+2},
{x=pos.x+1, y=9, z=pos.z-2},
{x=pos.x+1, y=9, z=pos.z+2},
{x=pos.x-1, y=9, z=pos.z},
{x=pos.x-1, y=9, z=pos.z-1},
{x=pos.x-1, y=9, z=pos.z+1},
{x=pos.x, y=9, z=pos.z},
{x=pos.x, y=9, z=pos.z-1},
{x=pos.x, y=9, z=pos.z+1},
{x=pos.x+1, y=9, z=pos.z},
{x=pos.x+1, y=9, z=pos.z-1},
{x=pos.x+1, y=9, z=pos.z+1},
}
local list2 = {
{x=pos.x-2, y=8, z=pos.z},
{x=pos.x-2, y=8, z=pos.z-1},
{x=pos.x-2, y=8, z=pos.z-2},
{x=pos.x-2, y=8, z=pos.z+1},
{x=pos.x-2, y=8, z=pos.z+2},
{x=pos.x+2, y=8, z=pos.z},
{x=pos.x+2, y=8, z=pos.z-1},
{x=pos.x+2, y=8, z=pos.z-2},
{x=pos.x+2, y=8, z=pos.z+1},
{x=pos.x+2, y=8, z=pos.z+2},
{x=pos.x-1, y=8, z=pos.z-2},
{x=pos.x-1, y=8, z=pos.z+2},
{x=pos.x, y=8, z=pos.z-2},
{x=pos.x, y=8, z=pos.z+2},
{x=pos.x+1, y=8, z=pos.z-2},
{x=pos.x+1, y=8, z=pos.z+2},
{x=pos.x-1, y=8, z=pos.z},
{x=pos.x-1, y=8, z=pos.z-1},
{x=pos.x-1, y=8, z=pos.z+1},
{x=pos.x, y=8, z=pos.z},
{x=pos.x, y=8, z=pos.z-1},
{x=pos.x, y=8, z=pos.z+1},
{x=pos.x+1, y=8, z=pos.z},
{x=pos.x+1, y=8, z=pos.z-1},
{x=pos.x+1, y=8, z=pos.z+1},
}
for i=1,25 do
if (minetest.get_node(list[i]).name == "castrum:knight_lv1_dark" or minetest.get_node(list[i]).name == "castrum:knight_lv2_dark" or minetest.get_node(list[i]).name == "castrum:knight_lv3_dark" or minetest.get_node(list[i]).name == "castrum:knight_dark") and i > 16 then
minetest.set_node(list2[i], {name="castrum:fight2"})
elseif minetest.get_node(list[i]).name == "air" and minetest.get_node(list2[i]).name ~= "default:gravel" then
minetest.set_node(list2[i], {name="castrum:fight1"})
end
end
if node.name == "castrum:knight_lv1" then
digger:set_attribute("fightnode", "1")
end
if node.name == "castrum:knight_lv2" then
digger:set_attribute("fightnode", "2")
end
if node.name == "castrum:knight_lv3" then
digger:set_attribute("fightnode", "3")
end
if node.name == "castrum:horse1" then
digger:set_attribute("fightnode", ""..(knight+5))
end
digger:set_attribute("fightdig", "true")
else
minetest.set_node(pos, {name=node.name})
if node.name == "castrum:knight_lv1" or node.name == "castrum:knight_lv2" or node.name == "castrum:knight_lv3" then
screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1)
end
if node.name == "castrum:horse1" then
screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1)
screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1)
end
if node.name == "doors:gate_wood_closed" or node.name == "doors:gate_wood_open" then
screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1)
screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1)
screwdriver_handler(digger, {type="node", under=pos, above=pos}, 1)
end
end
end
end)