split it into separate files
This commit is contained in:
236
scripts/pressureplatforms.lua
Normal file
236
scripts/pressureplatforms.lua
Normal file
@@ -0,0 +1,236 @@
|
||||
stone_sounds = {}
|
||||
stone_sounds.footstep = {name = "stone_walk", gain = 1.0}
|
||||
stone_sounds.dug = {name = "stone_break", gain = 1.0}
|
||||
stone_sounds.place = {name = "block_place", gain = 1.0}
|
||||
glass_sounds = {}
|
||||
glass_sounds.footstep = {name = "glass_walk", gain = 1.0}
|
||||
glass_sounds.dug = {name = "glass_break", gain = 1.0}
|
||||
glass_sounds.place = {name = "block_place", gain = 1.0}
|
||||
wood_sounds = {}
|
||||
wood_sounds.footstep = {name = "wood_walk", gain = 1.0}
|
||||
wood_sounds.dug = {name = "wood_break", gain = 1.0}
|
||||
wood_sounds.place = {name = "block_place", gain = 1.0}
|
||||
local ptgwsc = {
|
||||
{"weightedstoragecube.png", "portalgun_presplat.png", "(blue)"},
|
||||
{"weightedstoragecube2.png", "portalgun_presplat2.png", "(orange)"},
|
||||
{"weightedstoragecube3.png", "portalgun_presplat3.png", "(yellow)"},
|
||||
{"weightedstoragecube4.png", "portalgun_presplat4.png", "(green)"},
|
||||
{"weightedcompanioncube.png", "portalgun_presplat.png", "(blue companion)"},
|
||||
{"weightedcompanioncube2.png", "portalgun_presplat2.png", "(orange companion)"},
|
||||
{"weightedcompanioncube3.png", "portalgun_presplat3.png", "(yellow companion)"},
|
||||
{"weightedcompanioncube4.png", "portalgun_presplat4.png", "(green companion)"}
|
||||
}
|
||||
|
||||
for ii = 1, #ptgwsc, 1 do
|
||||
minetest.register_node(
|
||||
"portalgun:plantform1_" .. ii,
|
||||
{
|
||||
description = "Pressure platform " .. ptgwsc[ii][3],
|
||||
tiles = {ptgwsc[ii][2], "cloud.png", "cloud.png", "cloud.png", "cloud.png", "cloud.png"},
|
||||
groups = {mesecon = 2, cracky = 1, not_in_creative_inventory = 0},
|
||||
mesecons = {receptor = {state = "off"}},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
sounds = stone_sounds,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.7, -0.5, -0.7, 0.7, -0.375, 0.7},
|
||||
{0.7, -0.5, -0.1875, 0.9, -0.4375, 0.1875},
|
||||
{-0.9, -0.5, -0.1875, -0.7, -0.4375, 0.1875},
|
||||
{-0.1875, -0.5, -0.9, 0.1875, -0.4375, -0.7},
|
||||
{-0.1875, -0.5, 0.7, 0.1875, -0.4375, 0.9},
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5}
|
||||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(2)
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
if not mesecon then
|
||||
return false
|
||||
end
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1)) do
|
||||
if ob:get_luaentity() and ob:get_luaentity().wsc == ii then
|
||||
local node = minetest.get_node(pos)
|
||||
mesecon.receptor_on(pos)
|
||||
minetest.set_node(
|
||||
pos,
|
||||
{name = "portalgun:plantform2_" .. ii, param1 = node.param1, param2 = node.param2}
|
||||
)
|
||||
end
|
||||
return true
|
||||
end
|
||||
return true
|
||||
end
|
||||
}
|
||||
)
|
||||
|
||||
minetest.register_node(
|
||||
"portalgun:plantform2_" .. ii,
|
||||
{
|
||||
description = "Pressure platform",
|
||||
tiles = {ptgwsc[ii][2], "cloud.png", "cloud.png", "cloud.png", "cloud.png", "cloud.png"},
|
||||
drop = "portalgun:plantform1_" .. ii,
|
||||
groups = {mesecon = 2, cracky = 1, not_in_creative_inventory = 1},
|
||||
mesecons = {receptor = {state = "on"}},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
light_source = 14,
|
||||
sounds = stone_sounds,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.7, -0.5, -0.7, 0.7, -0.375, 0.7},
|
||||
{0.7, -0.5, -0.1875, 0.9, -0.4375, 0.1875},
|
||||
{-0.9, -0.5, -0.1875, -0.7, -0.4375, 0.1875},
|
||||
{-0.1875, -0.5, -0.9, 0.1875, -0.4375, -0.7},
|
||||
{-0.1875, -0.5, 0.7, 0.1875, -0.4375, 0.9}
|
||||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(2)
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1)) do
|
||||
if ob:get_luaentity() and ob:get_luaentity().wsc == ii then
|
||||
return true
|
||||
end
|
||||
end
|
||||
mesecon.receptor_off(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
minetest.set_node(
|
||||
pos,
|
||||
{name = "portalgun:plantform1_" .. ii, param1 = node.param1, param2 = node.param2}
|
||||
)
|
||||
return true
|
||||
end
|
||||
}
|
||||
)
|
||||
end -- of for #
|
||||
|
||||
minetest.register_node(
|
||||
"portalgun:plantform_nu1",
|
||||
{
|
||||
description = "Pressure platform (player or cube)",
|
||||
tiles = {"portalgun_presplat5.png", "cloud.png", "cloud.png", "cloud.png", "cloud.png", "cloud.png"},
|
||||
groups = {mesecon = 2, cracky = 1, not_in_creative_inventory = 0},
|
||||
mesecons = {receptor = {state = "off"}},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
sounds = stone_sounds,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.7, -0.5, -0.7, 0.7, -0.375, 0.7},
|
||||
{0.7, -0.5, -0.1875, 0.9, -0.4375, 0.1875},
|
||||
{-0.9, -0.5, -0.1875, -0.7, -0.4375, 0.1875},
|
||||
{-0.1875, -0.5, -0.9, 0.1875, -0.4375, -0.7},
|
||||
{-0.1875, -0.5, 0.7, 0.1875, -0.4375, 0.9},
|
||||
{-0.5, -0.5, -0.5, 0.5, -0.3125, 0.5}
|
||||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(2)
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
if not mesecon then
|
||||
return false
|
||||
end
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1)) do
|
||||
if ob:is_player() or (ob:get_luaentity() and ob:get_luaentity().wsc) then
|
||||
local node = minetest.get_node(pos)
|
||||
mesecon.receptor_on(pos)
|
||||
minetest.set_node(
|
||||
pos,
|
||||
{name = "portalgun:plantform_nu2", param1 = node.param1, param2 = node.param2}
|
||||
)
|
||||
end
|
||||
return true
|
||||
end
|
||||
return true
|
||||
end
|
||||
}
|
||||
)
|
||||
minetest.register_node(
|
||||
"portalgun:plantform_nu2",
|
||||
{
|
||||
description = "Pressure platform",
|
||||
tiles = {"portalgun_presplat5.png", "cloud.png", "cloud.png", "cloud.png", "cloud.png", "cloud.png"},
|
||||
drop = "portalgun:plantform_nu1",
|
||||
groups = {mesecon = 2, cracky = 1, not_in_creative_inventory = 1},
|
||||
mesecons = {receptor = {state = "on"}},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
light_source = 14,
|
||||
sounds = stone_sounds,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.7, -0.5, -0.7, 0.7, -0.375, 0.7},
|
||||
{0.7, -0.5, -0.1875, 0.9, -0.4375, 0.1875},
|
||||
{-0.9, -0.5, -0.1875, -0.7, -0.4375, 0.1875},
|
||||
{-0.1875, -0.5, -0.9, 0.1875, -0.4375, -0.7},
|
||||
{-0.1875, -0.5, 0.7, 0.1875, -0.4375, 0.9}
|
||||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(2)
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos, 1)) do
|
||||
if ob:is_player() or (ob:get_luaentity() and ob:get_luaentity().wsc) then
|
||||
return true
|
||||
end
|
||||
end
|
||||
mesecon.receptor_off(pos)
|
||||
local node = minetest.get_node(pos)
|
||||
minetest.set_node(pos, {name = "portalgun:plantform_nu1", param1 = node.param1, param2 = node.param2})
|
||||
return true
|
||||
end
|
||||
}
|
||||
)
|
||||
minetest.register_node(
|
||||
"portalgun:planthole",
|
||||
{
|
||||
description = "Plathole (activate by any cube, 2 blocks under)",
|
||||
tiles = {"cloud.png"},
|
||||
groups = {mesecon = 2, cracky = 1},
|
||||
mesecons = {receptor = {state = "off"}},
|
||||
paramtype = "light",
|
||||
sunlight_propagates = true,
|
||||
sounds = stone_sounds,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-1.5, -0.5, -1.5, 0.5, -0.25, -1.3},
|
||||
{-1.5, -0.5, 0.3, 0.5, -0.25, 0.5},
|
||||
{0.3, -0.5, -1.5, 0.5, -0.25, 0.5},
|
||||
{-1.5, -0.5, -1.5, -1.3, -0.25, 0.5},
|
||||
{0.5, -0.5, -0.9, 0.7, -0.375, -0.0625},
|
||||
{-1.7, -0.5, -0.9, -1.5, -0.3125, -0.0625},
|
||||
{-0.9, -0.5, -1.7, -0.0625, -0.375, -1.5},
|
||||
{-1, -0.5, 0.5, -0.0625, -0.375, 0.7}
|
||||
}
|
||||
},
|
||||
on_construct = function(pos)
|
||||
minetest.get_node_timer(pos):start(5)
|
||||
end,
|
||||
on_timer = function(pos, elapsed)
|
||||
local pos2 = {x = pos.x, y = pos.y - 2, z = pos.z}
|
||||
for i, ob in pairs(minetest.get_objects_inside_radius(pos2, 1)) do
|
||||
if ob:get_luaentity() and ob:get_luaentity().wsc then
|
||||
mesecon.receptor_on(pos)
|
||||
return true
|
||||
end
|
||||
end
|
||||
mesecon.receptor_off(pos)
|
||||
return true
|
||||
end
|
||||
}
|
||||
)
|
Reference in New Issue
Block a user