fixed switch to caseof rename
parent
b06c9a52d1
commit
7bab6df029
|
@ -0,0 +1,4 @@
|
|||
default
|
||||
helper
|
||||
weapon
|
||||
mesecons
|
|
@ -0,0 +1,99 @@
|
|||
--------------------------------------------------------------------------------
|
||||
-- Dispenser
|
||||
--------------------------------------------------------------------------------
|
||||
-- Mesecons operated dispenser
|
||||
--
|
||||
-- (c)2012 Fernando Zapata (ZLovesPancakes, Franz.ZPT)
|
||||
-- Code licensed under GNU GPLv2
|
||||
-- http://www.gnu.org/licenses/gpl-2.0.html
|
||||
-- Content licensed under CC BY-SA 3.0
|
||||
-- http://creativecommons.org/licenses/by-sa/3.0/
|
||||
--------------------------------------------------------------------------------
|
||||
|
||||
--------------------------------------------------------------- Globals --------
|
||||
|
||||
dispenser = {}
|
||||
|
||||
------------------------------------------------------------- Functions --------
|
||||
|
||||
function dispenser.dispense( p, n )
|
||||
local i = minetest.env:get_meta( p ):get_inventory()
|
||||
while not i:is_empty('main') do
|
||||
local k = math.random( 9 )
|
||||
local s = i:get_stack( 'main', k )
|
||||
if not s:is_empty() then
|
||||
local ps = s:peek_item()
|
||||
s:take_item()
|
||||
i:set_stack( 'main', k, s )
|
||||
local v = {x=0,y=0,z=0}
|
||||
case( n.param2 ):of {
|
||||
[0] = function() v.z = v.z - 1 end,
|
||||
[1] = function() v.x = v.x - 1 end,
|
||||
[2] = function() v.z = v.z + 1 end,
|
||||
[3] = function() v.x = v.x + 1 end
|
||||
}
|
||||
p.x = p.x + v.x
|
||||
p.z = p.z + v.z
|
||||
if weapon.arrows[ps:get_name()] ~= nil then
|
||||
weapon.shoot( ps:get_name(), p, v, 18, 0,
|
||||
'throwing_sound' )
|
||||
else
|
||||
local o = minetest.env:add_item( p, ps )
|
||||
if o ~= nil then
|
||||
v.x = v.x * 5 + math.random(-1,1)
|
||||
v.z = v.z * 5 + math.random(-1,1)
|
||||
o:setvelocity(v)
|
||||
end
|
||||
end
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
---------------------------------------------------------------- Blocks --------
|
||||
|
||||
minetest.register_node( 'dispenser:dispenser', {
|
||||
description = 'Dispenser',
|
||||
groups = { cracky = 3, mesecon = 2 },
|
||||
tiles = { 'dispenser_s.png', 'dispenser_s.png',
|
||||
'dispenser_s.png', 'dispenser_s.png',
|
||||
'dispenser_s.png', 'dispenser_f.png' },
|
||||
paramtype2 = 'facedir',
|
||||
is_ground_content = true,
|
||||
sounds = default.node_sound_stone_defaults(),
|
||||
on_construct = function( p )
|
||||
local m = minetest.env:get_meta( p )
|
||||
m:set_string( 'formspec',
|
||||
'size[8,8]\
|
||||
list[context;main;2.5,0;3,3;]\
|
||||
list[current_player;main;0,4;8,4;]' )
|
||||
local i = m:get_inventory()
|
||||
i:set_size( 'main', 3 * 3 )
|
||||
end,
|
||||
can_dig = function( p, u )
|
||||
local i = minetest.env:get_meta( p ):get_inventory()
|
||||
return i:is_empty( 'main' )
|
||||
end
|
||||
})
|
||||
|
||||
--------------------------------------------------------------- Recipes --------
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'dispenser:dispenser',
|
||||
recipe = {
|
||||
{ 'default:cobble', 'default:cobble', 'default:cobble' },
|
||||
{ 'default:cobble', 'weapon:xbow_wood', 'default:cobble' },
|
||||
{ 'default:cobble', 'mesecons:mesecon', 'default:cobble' } }
|
||||
})
|
||||
|
||||
-------------------------------------------------------------- Mesecons --------
|
||||
|
||||
mesecon:register_effector( 'dispenser:dispenser', 'dispenser:dispenser' )
|
||||
|
||||
mesecon:register_on_signal_on( function( p, n )
|
||||
if n.name == 'dispenser:dispenser' then
|
||||
dispenser.dispense( p, n )
|
||||
end
|
||||
end)
|
||||
|
||||
--------------------------------------------------------------------------------
|
Binary file not shown.
After Width: | Height: | Size: 698 B |
Binary file not shown.
After Width: | Height: | Size: 671 B |
Loading…
Reference in New Issue