nc_ctf/node.lua

132 lines
3.3 KiB
Lua

-- LUALOCALS < ---------------------------------------------------------
local nodecore, minetest
= nodecore, minetest
-- LUALOCALS > ---------------------------------------------------------
local modname = minetest.get_current_modname()
local function reg(name,color)
minetest.register_node(modname..":crystal_"..name,{
drawtype = "mesh",
paramtype = "light",
sunlight_propagates = true,
light_source = 14,
mesh = "nc_ctf_crystal.obj",
groups = {crystal = 1,cracky=4,falling_node = 1},
selection_box = {
type = "fixed",
fixed = {
{-0.3,-0.5,-0.3, 0.3,0.5,0.3},
}
},
tiles = {
{name = "(nc_ctf_crystal_base.png^[multiply:"..color..")^nc_ctf_crystal_shine.png",
animation={
type = "vertical_frames",
aspect_w = 64,
aspect_h = 64,
length = 1,
}
}
},
sounds = nodecore.sounds("nc_optics_glassy")
})
nodecore.register_ambiance({
label = "Crystal Ambiance",
nodenames = {modname..":crystal_"..name},
interval = 4,
chance = 4,
sound_name = "nc_ctf_weird",
check = function(pos)
return {gain = 1,pos=pos}
end
})
end
function ctf.crystals(teams)
for name, team in pairs(teams) do
reg(name,team.colorstr)
for name2, team2 in pairs(teams) do
if name2 ~= name then
local function after()
local team1,team2 = ctf.teams[name],ctf.teams[name2]
team1.score = team1.score-1
team2.score = team2.score+1
ctf.check_win()
end
nodecore.register_craft({
label = "claim crystal",
nodes = {
{match = modname .. ":crystal_"..name, replace = modname..":crystal_"..name2},
{x = 1, match = modname .. ":crystal_"..name2}
},
after = after
})
nodecore.register_craft({
label = "claim crystal",
nodes = {
{match = modname .. ":crystal_"..name, replace = modname..":crystal_"..name2},
{y = 1, match = modname .. ":crystal_"..name2}
},
after = after
})
nodecore.register_craft({
label = "claim crystal",
nodes = {
{match = modname .. ":crystal_"..name, replace = modname..":crystal_"..name2},
{y = -1, match = modname .. ":crystal_"..name2}
},
after = after
})
end
end
end
end
minetest.register_node(modname..":telebarrier",{
light_source = 14,
paramtype = "light",
drawtype="normal",
pointable = false,
tiles = {
{name = "nc_ctf_telebarrier.png",
animation={
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3,
},
align_style = "world",
scale=16
}
},
})
minetest.register_node(modname..":barrier",{
light_source = 14,
paramtype = "light",
drawtype="normal",
pointable = false,
use_texture_alpha=true,
tiles = {
{name = "nc_ctf_barrier.png",
animation={
type = "vertical_frames",
aspect_w = 16,
aspect_h = 16,
length = 3,
},
align_style = "world",
scale=16
}
},
})
local bar, tbar = modname..":barrier",modname..":telebarrier"