37 lines
No EOL
1.1 KiB
Lua
37 lines
No EOL
1.1 KiB
Lua
local ns = artifact
|
|
|
|
|
|
function ns.do_whack(m)
|
|
if m.pointed_node then
|
|
local pos = m.pointed_node.under
|
|
local node = minetest.get_node(pos)
|
|
local def = minetest.registered_nodes[node.name]
|
|
if not def.groups.whackable then return end
|
|
minetest.remove_node(pos)
|
|
minetest.add_particlespawner {
|
|
pos = {
|
|
min = pos:offset(-0.5, -0.5, -0.5),
|
|
max = pos:offset(0.5, 0.5, 0.5)
|
|
},
|
|
vel = {
|
|
min = vector.new(-1, 0, -1) *1.5,
|
|
max = vector.new(1, 2, 1) *1.5
|
|
},
|
|
acc = vector.new(0,-9.81,0),
|
|
collisiondetection = true,
|
|
amount = 50,
|
|
node = {name = node.name},
|
|
time = 0.1
|
|
}
|
|
if artifact.on_whacked then
|
|
artifact.on_whacked("node", m.pointed_node)
|
|
end
|
|
elseif m.pointed_obj and m.pointed_obj.on_whack then
|
|
if m.pointed_obj:on_whack() then
|
|
-- For use in artifact_help.
|
|
if artifact.on_whacked then
|
|
artifact.on_whacked("object", m.pointed_obj)
|
|
end
|
|
end
|
|
end
|
|
end |