132 lines
3.7 KiB
Lua
132 lines
3.7 KiB
Lua
minetest.register_node("ufowreck:pad", {
|
|
description = minetest.colorize("#0E0", "Alien ")..minetest.colorize("#A0F", "Teleport"),
|
|
tiles = {
|
|
"scifi_nodes_pad.png",
|
|
"scifi_nodes_pad.png",
|
|
"scifi_nodes_pad.png",
|
|
"scifi_nodes_pad.png",
|
|
"scifi_nodes_pad.png",
|
|
"scifi_nodes_pad.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
|
light_source = 5,
|
|
mesecons = {effector = {
|
|
rules = {
|
|
{x=0, y=0, z=-1},
|
|
{x=1, y=0, z=0},
|
|
{x=-1, y=0, z=0},
|
|
{x=0, y=0, z=1},
|
|
{x=1, y=1, z=0},
|
|
{x=1, y=-1, z=0},
|
|
{x=-1, y=1, z=0},
|
|
{x=-1, y=-1, z=0},
|
|
{x=0, y=1, z=1},
|
|
{x=0, y=-1, z=1},
|
|
{x=0, y=1, z=-1},
|
|
{x=0, y=-1, z=-1},
|
|
{x=0, y=-1, z=0},
|
|
},
|
|
action_on = function (pos, node)
|
|
local obj_list = minetest.get_objects_inside_radius(pos, 3)
|
|
for _,obj in ipairs(obj_list) do
|
|
if obj:is_player() then
|
|
minetest.add_particlespawner(
|
|
25, --amount
|
|
1.5, --time
|
|
{x=pos.x-0.9, y=pos.y-0.3, z=pos.z-0.9}, --minpos
|
|
{x=pos.x+0.9, y=pos.y-0.3, z=pos.z+0.9}, --maxpos
|
|
{x=0, y=0, z=0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0,y=1,z=-0}, --minacc
|
|
{x=0,y=2,z=0}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
2, --minsize
|
|
5, --maxsize
|
|
false, --collisiondetection
|
|
"scifi_nodes_tp_part.png" --texture
|
|
)
|
|
local name = obj:get_player_name()
|
|
minetest.after(1, function(name)
|
|
minetest.sound_play("travelnet_travel", {pos = pos, gain = 0.75, max_hear_distance = 10,});
|
|
local connected = minetest.get_connected_players()
|
|
local still_con = false
|
|
for _,player in pairs(connected) do
|
|
local p_name = player:get_player_name()
|
|
if p_name == name then
|
|
still_con = true
|
|
break
|
|
end
|
|
end
|
|
|
|
if still_con == true then
|
|
player = minetest.get_player_by_name(name)
|
|
player:setpos({ x = pos.x + math.random(-1,1)*1000, y = pos.y, z = pos.z + math.random(-1,1)*1000})
|
|
end
|
|
end, name)
|
|
end
|
|
end
|
|
|
|
|
|
end,
|
|
|
|
}},
|
|
on_rightclick = function(pos, node, clicker)
|
|
minetest.add_particlespawner(
|
|
25, --amount
|
|
1.5, --time
|
|
{x=pos.x-0.9, y=pos.y-0.3, z=pos.z-0.9}, --minpos
|
|
{x=pos.x+0.9, y=pos.y-0.3, z=pos.z+0.9}, --maxpos
|
|
{x=0, y=0, z=0}, --minvel
|
|
{x=0, y=0, z=0}, --maxvel
|
|
{x=-0,y=1,z=-0}, --minacc
|
|
{x=0,y=2,z=0}, --maxacc
|
|
0.5, --minexptime
|
|
1, --maxexptime
|
|
2, --minsize
|
|
5, --maxsize
|
|
false, --collisiondetection
|
|
"scifi_nodes_tp_part.png" --texture
|
|
)
|
|
local name = clicker:get_player_name() or '|none'
|
|
minetest.after(1, function(name)
|
|
minetest.sound_play("travelnet_travel", {pos = pos, gain = 0.75, max_hear_distance = 10,});
|
|
local connected = minetest.get_connected_players()
|
|
local still_con = false
|
|
for _,player in pairs(connected) do
|
|
local p_name = player:get_player_name()
|
|
if p_name == name then
|
|
still_con = true
|
|
break
|
|
end
|
|
end
|
|
|
|
if still_con == true then
|
|
player = minetest.get_player_by_name(name)
|
|
player:setpos({ x = pos.x + math.random(-1,1)*1000, y = pos.y, z = pos.z + math.random(-1,1)*1000})
|
|
end
|
|
end, name)
|
|
end,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.9375, -0.5, -0.75, 0.875, -0.375, 0.75}, -- NodeBox1
|
|
{-0.8125, -0.5, -0.875, 0.75, -0.375, 0.875}, -- NodeBox2
|
|
{-0.875, -0.5, -0.8125, 0.8125, -0.375, 0.8125}, -- NodeBox3
|
|
{-0.8125, -0.5, -0.75, 0.75, -0.3125, 0.75}, -- NodeBox4
|
|
},
|
|
sounds = default.node_sound_metal_defaults(),
|
|
}
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "ufowreck:pad",
|
|
recipe = {
|
|
{"ufowreck:alien_metal", "ufowreck:alien_metal", "ufowreck:alien_metal"},
|
|
{"ufowreck:alien_metal", "ufowreck:alien_control", "ufowreck:alien_metal"},
|
|
{"ufowreck:alien_metal", "ufowreck:alien_metal", "ufowreck:alien_metal"}
|
|
}
|
|
})
|