722 lines
23 KiB
Lua
722 lines
23 KiB
Lua
local chest_formspec =
|
|
"size[8,9]" ..
|
|
default.gui_bg ..
|
|
default.gui_bg_img ..
|
|
default.gui_slots ..
|
|
"list[current_name;main;0,0.3;8,4;]" ..
|
|
"list[current_player;main;0,4.85;8,1;]" ..
|
|
"list[current_player;main;0,6.08;8,3;8]" ..
|
|
"listring[current_name;main]" ..
|
|
"listring[current_player;main]" ..
|
|
default.get_hotbar_bg(0,4.85)
|
|
|
|
minetest.register_node("ufowreck:locked_crate", {
|
|
description = "Locked Crate",
|
|
tiles = {"scifi_nodes_crate.png"},
|
|
paramtype2 = "facedir",
|
|
groups = {cracky = 1, oddly_breakable_by_hand = 2, fuel = 8},
|
|
legacy_facedir_simple = true,
|
|
is_ground_content = false,
|
|
sounds = default.node_sound_metal_defaults(),
|
|
drop = {
|
|
max_items = 3,
|
|
items = {
|
|
{items = {'ufowreck:pad'}, rarity = 10},
|
|
{items = {'ufowreck:glow_plant'},rarity = 5},
|
|
{items = {'ufowreck:eye'},rarity = 5},
|
|
{items = {'ufowreck:predatory_plant'},rarity = 5},
|
|
{items = {'default:mese'},rarity = 5},
|
|
{items = {'default:mese'},rarity = 5},
|
|
{items = {'ufowreck:powered_stand'},rarity = 5},
|
|
{items = {'ufowreck:ladder 9'},rarity = 5},
|
|
{items = {'ufowreck:crate'}},
|
|
}
|
|
},
|
|
})
|
|
|
|
minetest.register_node("ufowreck:crate", {
|
|
description = "Crate",
|
|
tiles = {"scifi_nodes_crate.png"},
|
|
paramtype2 = "facedir",
|
|
groups = {cracky = 1, oddly_breakable_by_hand = 2},
|
|
legacy_facedir_simple = true,
|
|
is_ground_content = false,
|
|
sounds = default.node_sound_metal_defaults(),
|
|
on_construct = function(pos)
|
|
local meta = minetest.get_meta(pos)
|
|
meta:set_string("formspec", chest_formspec)
|
|
meta:set_string("infotext", "Crate")
|
|
local inv = meta:get_inventory()
|
|
inv:set_size("main", 8 * 4)
|
|
end,
|
|
on_metadata_inventory_move = function(pos, from_list, from_index,
|
|
to_list, to_index, count, player)
|
|
minetest.log("action", player:get_player_name() ..
|
|
" moves stuff in chest at " .. minetest.pos_to_string(pos))
|
|
end,
|
|
on_metadata_inventory_put = function(pos, listname, index, stack, player)
|
|
minetest.log("action", player:get_player_name() ..
|
|
" moves stuff to chest at " .. minetest.pos_to_string(pos))
|
|
end,
|
|
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
|
minetest.log("action", player:get_player_name() ..
|
|
" takes stuff from chest at " .. minetest.pos_to_string(pos))
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("ufowreck:alien_metal", {
|
|
description = "Alien Metal Block",
|
|
tiles = {"scifi_nodes_lighttop.png"},
|
|
drawtype = "nodebox",
|
|
paramtype2 = "facedir",
|
|
paramtype = "light",
|
|
sunlight_propagates = true,
|
|
is_ground_content = false,
|
|
groups = {cracky = 1},
|
|
sounds = default.node_sound_metal_defaults(),
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "default:steel_ingot 9",
|
|
type = "shapeless",
|
|
recipe = {"ufowreck:alien_metal"}
|
|
})
|
|
|
|
minetest.register_node("ufowreck:alien_light", {
|
|
description = "Alien Lightbox",
|
|
sunlight_propagates = false,
|
|
tiles = {
|
|
"scifi_nodes_lighttop.png",
|
|
"scifi_nodes_lighttop.png",
|
|
"scifi_nodes_greenlight.png",
|
|
"scifi_nodes_greenlight.png",
|
|
"scifi_nodes_greenlight.png",
|
|
"scifi_nodes_greenlight.png"
|
|
},
|
|
light_source = 10,
|
|
paramtype = "light",
|
|
groups = {cracky=1},
|
|
sounds = default.node_sound_glass_defaults()
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "ufowreck:alien_light",
|
|
type = "shapeless",
|
|
recipe = {"ufowreck:alien_metal", "default:tin_ingot","default:mese_crystal_fragment"}
|
|
})
|
|
|
|
minetest.register_node("ufowreck:alien_glass", {
|
|
description = "Alien Glass",
|
|
drawtype = "glasslike",
|
|
sunlight_propagates = true,
|
|
tiles = {
|
|
"scifi_nodes_glass.png"
|
|
},
|
|
use_texture_alpha = true,
|
|
paramtype = "light",
|
|
groups = {cracky=1},
|
|
sounds = default.node_sound_glass_defaults()
|
|
})
|
|
|
|
minetest.register_craft({
|
|
output = "ufowreck:alien_glass 2",
|
|
type = "shapeless",
|
|
recipe = {"ufowreck:alien_metal", "default:obsidian_glass"}
|
|
})
|
|
|
|
minetest.register_node("ufowreck:alien_control", {
|
|
description = "Alien Control Block",
|
|
sunlight_propagates = false,
|
|
tiles = {{
|
|
name="scifi_nodes_black_lights.png",
|
|
animation={type="vertical_frames", aspect_w=16, aspect_h=16, length=3.50}, --length=0.50
|
|
}},
|
|
paramtype = "light",
|
|
groups = {cracky=1},
|
|
sounds = default.node_sound_metal_defaults(),
|
|
})
|
|
|
|
--door
|
|
|
|
minetest.register_node("ufowreck:alien_door_closed", {
|
|
description = "Alien Door",
|
|
inventory_image = "scifi_nodes_door_black_inv.png",
|
|
wield_image = "scifi_nodes_door_black_inv.png",
|
|
tiles = {
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_rbottom.png",
|
|
"scifi_nodes_door_black_bottom.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {cracky = 1, oddly_breakable_by_hand = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625}
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.0625, 0.5, 1.5, 0.0625}
|
|
}
|
|
},
|
|
on_place = function(itemstack, placer, pointed_thing)
|
|
-- Is there room enough ?
|
|
local pos1 = pointed_thing.above
|
|
local pos2 = {x=pos1.x, y=pos1.y, z=pos1.z}
|
|
pos2.y = pos2.y+1 -- 2 nodes above
|
|
|
|
if
|
|
not minetest.registered_nodes[minetest.get_node(pos1).name].buildable_to or
|
|
not minetest.registered_nodes[minetest.get_node(pos2).name].buildable_to or
|
|
not placer or
|
|
not placer:is_player() or
|
|
minetest.is_protected(pos1, placer:get_player_name()) or
|
|
minetest.is_protected(pos2, placer:get_player_name()) then
|
|
return
|
|
end
|
|
|
|
local pt = pointed_thing.above
|
|
local pt2 = {x=pt.x, y=pt.y, z=pt.z}
|
|
pt2.y = pt2.y+1
|
|
-- Player look dir is converted to node rotation ?
|
|
local p2 = minetest.dir_to_facedir(placer:get_look_dir())
|
|
-- Where to look for another door ?
|
|
local pt3 = {x=pt.x, y=pt.y, z=pt.z}
|
|
|
|
-- Door param2 depends of placer's look dir
|
|
local p4 = 0
|
|
if p2 == 0 then
|
|
pt3.x = pt3.x-1
|
|
p4 = 2
|
|
elseif p2 == 1 then
|
|
pt3.z = pt3.z+1
|
|
p4 = 3
|
|
elseif p2 == 2 then
|
|
pt3.x = pt3.x+1
|
|
p4 = 0
|
|
elseif p2 == 3 then
|
|
pt3.z = pt3.z-1
|
|
p4 = 1
|
|
end
|
|
|
|
-- First door of a pair is already there
|
|
if minetest.get_node(pt3).name == "ufowreck:alien_door_closed" then
|
|
minetest.set_node(pt, {name="ufowreck:alien_door_closed", param2=p4,})
|
|
minetest.set_node(pt2, {name="ufowreck:alien_door_closed_top", param2=p4})
|
|
-- Placed door is the first of a pair
|
|
else
|
|
minetest.set_node(pt, {name="ufowreck:alien_door_closed", param2=p2,})
|
|
minetest.set_node(pt2, {name="ufowreck:alien_door_closed_top", param2=p2})
|
|
end
|
|
|
|
itemstack:take_item(1)
|
|
return itemstack;
|
|
end,
|
|
|
|
after_destruct = function(pos, oldnode)
|
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"})
|
|
end,
|
|
|
|
on_rightclick = function(pos, node, player, itemstack, pointed_thing)
|
|
-- play sound
|
|
minetest.sound_play("scifi_nodes_door_mechanic",{
|
|
max_hear_distance = 16,
|
|
pos = pos,
|
|
gain = 1.0
|
|
})
|
|
|
|
local timer = minetest.get_node_timer(pos)
|
|
local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
|
|
local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
|
|
local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
|
|
local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
|
|
local e = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z-1})
|
|
local f = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z-1})
|
|
local g = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z+1})
|
|
local h = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z+1})
|
|
|
|
|
|
minetest.set_node(pos, {name="ufowreck:alien_door_opened", param2=node.param2})
|
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="ufowreck:alien_door_opened_top", param2=node.param2})
|
|
|
|
if a.name == "ufowreck:alien_door_closed" then
|
|
minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name="ufowreck:alien_door_opened", param2=a.param2})
|
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name="ufowreck:alien_door_opened_top", param2=a.param2})
|
|
end
|
|
if b.name == "ufowreck:alien_door_closed" then
|
|
minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name="ufowreck:alien_door_opened", param2=b.param2})
|
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name="ufowreck:alien_door_opened_top", param2=b.param2})
|
|
end
|
|
if c.name == "ufowreck:alien_door_closed" then
|
|
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name="ufowreck:alien_door_opened", param2=c.param2})
|
|
minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name="ufowreck:alien_door_opened_top", param2=c.param2})
|
|
end
|
|
if d.name == "ufowreck:alien_door_closed" then
|
|
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name="ufowreck:alien_door_opened", param2=d.param2})
|
|
minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name="ufowreck:alien_door_opened_top", param2=d.param2})
|
|
end
|
|
if e.name == "ufowreck:alien_door_closed" then
|
|
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z-1}, {name="ufowreck:alien_door_opened", param2=e.param2})
|
|
minetest.set_node({x=pos.x+1, y=pos.y+1, z=pos.z-1}, {name="ufowreck:alien_door_opened_top", param2=e.param2})
|
|
end
|
|
if f.name == "ufowreck:alien_door_closed" then
|
|
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z-1}, {name="ufowreck:alien_door_opened", param2=f.param2})
|
|
minetest.set_node({x=pos.x-1, y=pos.y+1, z=pos.z-1}, {name="ufowreck:alien_door_opened_top", param2=f.param2})
|
|
end
|
|
if g.name == "ufowreck:alien_door_closed" then
|
|
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z+1}, {name="ufowreck:alien_door_opened", param2=g.param2})
|
|
minetest.set_node({x=pos.x+1, y=pos.y+1, z=pos.z+1}, {name="ufowreck:alien_door_opened_top", param2=g.param2})
|
|
end
|
|
if h.name == "ufowreck:alien_door_closed" then
|
|
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z+1}, {name="ufowreck:alien_door_opened", param2=h.param2})
|
|
minetest.set_node({x=pos.x-1, y=pos.y+1, z=pos.z+1}, {name="ufowreck:alien_door_opened_top", param2=h.param2})
|
|
end
|
|
timer:start(5)
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("ufowreck:alien_door_closed_top", {
|
|
tiles = {
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_rtop.png",
|
|
"scifi_nodes_door_black_top.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {cracky = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.0625, 0.5, 0.5, 0.0625}
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{0, 0, 0, 0, 0, 0},
|
|
}
|
|
},
|
|
can_dig = function(pos, player)
|
|
return false
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("ufowreck:alien_door_opened", {
|
|
tiles = {
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_rbottom0.png",
|
|
"scifi_nodes_door_black_bottom0.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
drop = {
|
|
items = {
|
|
{items = {'ufowreck:alien_door_closed'}},
|
|
}
|
|
},
|
|
groups = {cracky = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.0625, -0.25, 0.5, 0.0625},
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.0625, -0.25, 1.5, 0.0625},
|
|
}
|
|
},
|
|
after_place_node = function(pos, placer, itemstack, pointed_thing)
|
|
local node = minetest.get_node(pos)
|
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="ufowreck:alien_door_opened_top",param2=node.param2})
|
|
end,
|
|
after_destruct = function(pos, oldnode)
|
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z},{name="air"})
|
|
end,
|
|
on_timer = function(pos, elapsed)
|
|
-- play sound
|
|
minetest.sound_play("scifi_nodes_door_mechanic",{
|
|
max_hear_distance = 16,
|
|
pos = pos,
|
|
gain = 1.0
|
|
})
|
|
|
|
local node = minetest.get_node(pos)
|
|
local a = minetest.get_node({x=pos.x, y=pos.y, z=pos.z-1})
|
|
local b = minetest.get_node({x=pos.x, y=pos.y, z=pos.z+1})
|
|
local c = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z})
|
|
local d = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z})
|
|
local e = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z-1})
|
|
local f = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z-1})
|
|
local g = minetest.get_node({x=pos.x+1, y=pos.y, z=pos.z+1})
|
|
local h = minetest.get_node({x=pos.x-1, y=pos.y, z=pos.z+1})
|
|
|
|
minetest.set_node(pos, {name="ufowreck:alien_door_closed", param2=node.param2})
|
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z}, {name="ufowreck:alien_door_closed_top", param2=node.param2})
|
|
|
|
if a.name == "ufowreck:alien_door_opened" then
|
|
minetest.set_node({x=pos.x, y=pos.y, z=pos.z-1}, {name="ufowreck:alien_door_closed", param2=a.param2})
|
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z-1}, {name="ufowreck:alien_door_closed_top", param2=a.param2})
|
|
end
|
|
if b.name == "ufowreck:alien_door_opened" then
|
|
minetest.set_node({x=pos.x, y=pos.y, z=pos.z+1}, {name="ufowreck:alien_door_closed", param2=b.param2})
|
|
minetest.set_node({x=pos.x,y=pos.y+1,z=pos.z+1}, {name="ufowreck:alien_door_closed_top", param2=b.param2})
|
|
end
|
|
if c.name == "ufowreck:alien_door_opened" then
|
|
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z}, {name="ufowreck:alien_door_closed", param2=c.param2})
|
|
minetest.set_node({x=pos.x+1,y=pos.y+1,z=pos.z}, {name="ufowreck:alien_door_closed_top", param2=c.param2})
|
|
end
|
|
if d.name == "ufowreck:alien_door_opened" then
|
|
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z}, {name="ufowreck:alien_door_closed", param2=d.param2})
|
|
minetest.set_node({x=pos.x-1,y=pos.y+1,z=pos.z}, {name="ufowreck:alien_door_closed_top", param2=d.param2})
|
|
end
|
|
if e.name == "ufowreck:alien_door_opened" then
|
|
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z-1}, {name="ufowreck:alien_door_closed", param2=e.param2})
|
|
minetest.set_node({x=pos.x+1, y=pos.y+1, z=pos.z-1}, {name="ufowreck:alien_door_closed_top", param2=e.param2})
|
|
end
|
|
if f.name == "ufowreck:alien_door_opened" then
|
|
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z-1}, {name="ufowreck:alien_door_closed", param2=f.param2})
|
|
minetest.set_node({x=pos.x-1, y=pos.y+1, z=pos.z-1}, {name="ufowreck:alien_door_closed_top", param2=f.param2})
|
|
end
|
|
if g.name == "ufowreck:alien_door_opened" then
|
|
minetest.set_node({x=pos.x+1, y=pos.y, z=pos.z+1}, {name="ufowreck:alien_door_closed", param2=g.param2})
|
|
minetest.set_node({x=pos.x+1, y=pos.y+1, z=pos.z+1}, {name="ufowreck:alien_door_closed_top", param2=g.param2})
|
|
end
|
|
if h.name == "ufowreck:alien_door_opened" then
|
|
minetest.set_node({x=pos.x-1, y=pos.y, z=pos.z+1}, {name="ufowreck:alien_door_closed", param2=h.param2})
|
|
minetest.set_node({x=pos.x-1, y=pos.y+1, z=pos.z+1}, {name="ufowreck:alien_door_closed_top", param2=h.param2})
|
|
end
|
|
end,
|
|
can_dig = function(pos, player)
|
|
return false
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("ufowreck:alien_door_opened_top", {
|
|
tiles = {
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_edge.png",
|
|
"scifi_nodes_door_black_rtopo.png",
|
|
"scifi_nodes_door_black_topo.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
paramtype2 = "facedir",
|
|
groups = {cracky = 1},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.5, -0.5, -0.0625, -0.25, 0.5, 0.0625},
|
|
}
|
|
},
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{0, 0, 0, 0, 0, 0},
|
|
}
|
|
},
|
|
can_dig = function(pos, player)
|
|
return false
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("ufowreck:bar_light", {
|
|
description = "Alien Lightbars",
|
|
tiles = {
|
|
"scifi_nodes_orange2.png",
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
use_texture_alpha = true,
|
|
light_source = 9,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{0.125, -0.5, 0.125, 0.375, 0.5, 0.375}, -- NodeBox1
|
|
{-0.375, -0.5, 0.125, -0.125, 0.5, 0.375}, -- NodeBox2
|
|
{-0.375, -0.5, -0.375, -0.125, 0.5, -0.125}, -- NodeBox3
|
|
{0.125, -0.5, -0.375, 0.375, 0.5, -0.125}, -- NodeBox4
|
|
}
|
|
},
|
|
groups = {cracky=1},
|
|
sounds = default.node_sound_glass_defaults()
|
|
})
|
|
|
|
minetest.register_node("ufowreck:alien_egg", {
|
|
description = "Alien Egg",
|
|
tiles = {
|
|
"scifi_nodes_egg_top.png",
|
|
"scifi_nodes_egg_top.png",
|
|
"scifi_nodes_egg_side.png",
|
|
"scifi_nodes_egg_side.png",
|
|
"scifi_nodes_egg_side.png",
|
|
"scifi_nodes_egg_side.png"
|
|
},
|
|
sunlight_propagates = false,
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
groups = {cracky=1, oddly_breakable_by_hand=1, dig_immediate=2, falling_node=1},
|
|
light_source = 5,
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.25, -0.5, -0.25, 0.25, -0.4375, 0.25}, -- NodeBox1
|
|
{-0.375, -0.4375, -0.375, 0.375, -0.3125, 0.375}, -- NodeBox2
|
|
{-0.4375, -0.3125, -0.375, 0.4375, 0.3125, 0.375}, -- NodeBox3
|
|
{-0.375, 0.3125, -0.375, 0.375, 0.4375, 0.375}, -- NodeBox4
|
|
{-0.3125, 0.4375, -0.3125, 0.3125, 0.5625, 0.3125}, -- NodeBox5
|
|
{-0.25, 0.5625, -0.25, 0.25, 0.6875, 0.25}, -- NodeBox6
|
|
{-0.1875, 0.6875, -0.1875, 0.1875, 0.75, 0.1875}, -- NodeBox7
|
|
{-0.125, 0.75, -0.125, 0.125, 0.8125, 0.125}, -- NodeBox8
|
|
{-0.375, -0.3125, -0.4375, 0.375, 0.3125, 0.4375}, -- NodeBox9
|
|
},
|
|
sounds = default.node_sound_wood_defaults()
|
|
}
|
|
})
|
|
|
|
if minetest.get_modpath("mobs_spider") then
|
|
mobs:spawn({name = "mobs_spider:spider",
|
|
nodes = {"ufowreck:alien_egg"},
|
|
active_object_count = 10,
|
|
chance = 10,
|
|
interval = 30,
|
|
})
|
|
end
|
|
|
|
minetest.register_node("ufowreck:eye_tree", {
|
|
description = "Alien Eye Tree",
|
|
tiles = {{
|
|
name="scifi_nodes_eyetree.png",
|
|
animation={type="vertical_frames", aspect_w=48, aspect_h=48, length=10}, --length=0.50
|
|
}},
|
|
drawtype = "plantlike",
|
|
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, dig_immediate=3, flora=1},
|
|
paramtype = "light",
|
|
visual_scale = 2.5,
|
|
buildable_to = true,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
|
|
}
|
|
},
|
|
drop = {
|
|
items = {
|
|
{items = {'ufowreck:eye 4'}},
|
|
}
|
|
},
|
|
after_destruct = function(pos, oldnode)
|
|
minetest.set_node(pos, {name = "ufowreck:eye_tree_empty"})
|
|
end,
|
|
is_ground_content = false,
|
|
})
|
|
|
|
minetest.register_node("ufowreck:eye_tree_empty", {
|
|
description = "Alien Eye Tree",
|
|
tiles = {"scifi_nodes_eyetree_2.png"},
|
|
drawtype = "plantlike",
|
|
inventory_image = {"scifi_nodes_eyetree_2.png"},
|
|
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, flora=1},
|
|
paramtype = "light",
|
|
visual_scale = 2.5,
|
|
buildable_to = true,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
|
|
}
|
|
},
|
|
drop = {
|
|
items = {
|
|
{items = {'ufowreck:eye'}},
|
|
}
|
|
},
|
|
on_construct = function(pos)
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
|
end,
|
|
on_timer = function(pos)
|
|
minetest.set_node(pos, {name = "ufowreck:eye_tree"})
|
|
end,
|
|
is_ground_content = false,
|
|
})
|
|
|
|
local buff_speed = 1 --add to physics multiplier
|
|
local buff_jump = 0.5 --add to physics multiplier
|
|
|
|
minetest.register_node("ufowreck:eye", {
|
|
description = "Alien Eye",
|
|
tiles = {"eye.png"},
|
|
drawtype = "plantlike",
|
|
inventory_image = "eye.png",
|
|
wield_image = "eye.png",
|
|
groups = { food = 2, eatable = 4 },
|
|
buildable_to = true,
|
|
walkable = false,
|
|
on_construct = function(pos)
|
|
minetest.get_node_timer(pos):start(math.random(300, 1500))
|
|
end,
|
|
on_timer = function(pos)
|
|
minetest.set_node(pos, {name = "ufowreck:eye_tree"})
|
|
end,
|
|
on_use = function(itemstack, user, pointed_thing)
|
|
local physics = user:get_physics_override()
|
|
user:set_physics_override({
|
|
speed = physics.speed + buff_speed,
|
|
jump = physics.jump + buff_jump,
|
|
})
|
|
minetest.after(10, function(user)
|
|
if user and user:is_player() then
|
|
local phys = user:get_physics_override()
|
|
user:set_physics_override({
|
|
speed = phys.speed - buff_speed,
|
|
jump = phys.jump - buff_jump,
|
|
})
|
|
end
|
|
end, user)
|
|
return minetest.do_item_eat(4, nil, itemstack, user, pointed_thing)
|
|
end
|
|
})
|
|
|
|
minetest.register_node("ufowreck:predatory_plant", {
|
|
description = "Alien Predatory Plant",
|
|
tiles = {"scifi_nodes_flower3.png"},
|
|
drawtype = "plantlike",
|
|
inventory_image = {"scifi_nodes_flower3.png"},
|
|
groups = {snappy=1, choppy=1, oddly_breakable_by_hand=1, dig_immediate=3, flora=1},
|
|
paramtype = "light",
|
|
visual_scale = 2.5,
|
|
buildable_to = true,
|
|
walkable = false,
|
|
damage_per_second = 0.5,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
|
|
}
|
|
},
|
|
is_ground_content = false,
|
|
})
|
|
|
|
minetest.register_node("ufowreck:glow_plant", {
|
|
description = "Alien Glow Plant",
|
|
tiles = {{
|
|
name="scifi_nodes_plant2_anim.png",
|
|
animation={type="vertical_frames", aspect_w=32, aspect_h=32, length=5},
|
|
}},
|
|
inventory_image = "scifi_nodes_plant2.png",
|
|
wield_image = "scifi_nodes_plant2.png",
|
|
drawtype = "plantlike",
|
|
groups = {snappy=2, choppy=2, oddly_breakable_by_hand=2, dig_immediate=3, flora=1},
|
|
paramtype = "light",
|
|
visual_scale = 1.5,
|
|
buildable_to = true,
|
|
walkable = false,
|
|
selection_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.3, -0.5, -0.3, 0.3, 0.5, 0.3},
|
|
}
|
|
},
|
|
is_ground_content = false,
|
|
light_source = 14,
|
|
})
|
|
|
|
minetest.register_node("ufowreck:powered_stand", {
|
|
description = "Powered Stand",
|
|
tiles = {
|
|
"scifi_nodes_pwrstnd_top.png",
|
|
"scifi_nodes_pwrstnd_top.png",
|
|
"scifi_nodes_pwrstnd_side.png",
|
|
"scifi_nodes_pwrstnd_side.png",
|
|
"scifi_nodes_pwrstnd_side.png",
|
|
"scifi_nodes_pwrstnd_side.png"
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{-0.375, 0.25, -0.3125, 0.375, 0.4375, 0.3125}, -- NodeBox1
|
|
{-0.3125, 0.25, -0.375, 0.3125, 0.4375, 0.375}, -- NodeBox2
|
|
{-0.3125, 0.4375, -0.3125, 0.3125, 0.5, 0.3125}, -- NodeBox3
|
|
{-0.5, -0.5, -0.125, 0.5, 0.125, 0.125}, -- NodeBox4
|
|
{-0.125, -0.5, -0.5, 0.125, 0.125, 0.5}, -- NodeBox5
|
|
{-0.4375, 0.125, -0.125, 0.4375, 0.25, 0.125}, -- NodeBox6
|
|
{-0.125, 0.125, -0.4375, 0.125, 0.25, 0.4375}, -- NodeBox7
|
|
{-0.3125, -0.5, -0.375, 0.3125, 0.0625, 0.3125}, -- NodeBox8
|
|
{-0.25, 0.0625, -0.3125, 0.25, 0.125, 0.3125}, -- NodeBox9
|
|
}
|
|
},
|
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
|
on_rightclick = function(pos, node, clicker, item, _)
|
|
local wield_item_stack = clicker:get_wielded_item()
|
|
local wield_item = wield_item_stack:get_name()
|
|
local taken = item:take_item()
|
|
if taken and not taken:is_empty() then
|
|
|
|
if wield_item_stack:get_count() == 1 then
|
|
-- only 1 item in "hands" copy over entire stack with metadata
|
|
wield_item = wield_item_stack
|
|
end
|
|
|
|
minetest.add_item({x=pos.x, y=pos.y+1, z=pos.z}, wield_item)
|
|
return item
|
|
end
|
|
end,
|
|
})
|
|
|
|
minetest.register_node("ufowreck:ladder", {
|
|
description = "Metal Ladder",
|
|
tiles = {
|
|
"scifi_nodes_ladder.png",
|
|
},
|
|
drawtype = "nodebox",
|
|
paramtype = "light",
|
|
selection_box = {
|
|
type = "wallmounted",
|
|
fixed = {-0.5, -0.5, -0.5, -0.45, 0.5, 0.5}
|
|
},
|
|
node_box = {
|
|
type = "fixed",
|
|
fixed = {
|
|
{0.3125, -0.5, -0.4375, 0.4375, -0.375, -0.3125}, -- NodeBox12
|
|
{-0.4375, -0.5, -0.4375, -0.3125, -0.375, -0.3125}, -- NodeBox13
|
|
{-0.375, -0.375, -0.4375, 0.375, -0.3125, -0.3125}, -- NodeBox14
|
|
{-0.375, -0.375, 0.3125, 0.375, -0.3125, 0.4375}, -- NodeBox18
|
|
{-0.375, -0.375, 0.0625, 0.375, -0.3125, 0.1875}, -- NodeBox19
|
|
{-0.375, -0.375, -0.1875, 0.375, -0.3125, -0.0625}, -- NodeBox20
|
|
{-0.4375, -0.5, -0.1875, -0.3125, -0.375, -0.0625}, -- NodeBox21
|
|
{-0.4375, -0.5, 0.0625, -0.3125, -0.375, 0.1875}, -- NodeBox22
|
|
{-0.4375, -0.5, 0.3125, -0.3125, -0.375, 0.4375}, -- NodeBox23
|
|
{0.3125, -0.5, 0.3125, 0.4375, -0.375, 0.4375}, -- NodeBox24
|
|
{0.3125, -0.5, 0.0625, 0.4375, -0.375, 0.1875}, -- NodeBox25
|
|
{0.3125, -0.5, -0.1875, 0.4375, -0.375, -0.0625}, -- NodeBox26
|
|
},
|
|
sounds = default.node_sound_metal_defaults()
|
|
},
|
|
paramtype2 = "wallmounted",
|
|
walkable = false,
|
|
climbable = true,
|
|
groups = {cracky=1, oddly_breakable_by_hand=1},
|
|
})
|