forked from VoxeLibre/VoxeLibre
Fix TNT ignition
This commit is contained in:
parent
674a989061
commit
cc119a717c
|
@ -195,10 +195,10 @@ function get_nodedef_field(nodename, fieldname)
|
|||
end
|
||||
|
||||
function set_fire(pointed_thing)
|
||||
local n = minetest.get_node(pointed_thing.above)
|
||||
if n.name ~= "" and n.name == "air" and not minetest.is_protected(pointed_thing.above, "fire") then
|
||||
minetest.add_node(pointed_thing.above, {name="fire:basic_flame"})
|
||||
end
|
||||
local n = minetest.get_node(pointed_thing.above)
|
||||
if n.name ~= "" and n.name == "air" and not minetest.is_protected(pointed_thing.above, "fire") then
|
||||
minetest.add_node(pointed_thing.above, {name="fire:basic_flame"})
|
||||
end
|
||||
end
|
||||
|
||||
--
|
||||
|
|
|
@ -289,9 +289,13 @@ minetest.register_tool("default:flint_and_steel", {
|
|||
},
|
||||
on_use = function(itemstack, user, pointed_thing)
|
||||
if pointed_thing.type == "node" then
|
||||
if minetest.get_node(pointed_thing.under).name == "tnt:tnt" then
|
||||
tnt.ignite(pointed_thing.under)
|
||||
else
|
||||
set_fire(pointed_thing)
|
||||
itemstack:add_wear(66000/65) -- 65 uses
|
||||
return itemstack
|
||||
itemstack:add_wear(66000/65) -- 65 uses
|
||||
return itemstack
|
||||
end
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
function spawn_tnt(pos, entname)
|
||||
local function spawn_tnt(pos, entname)
|
||||
minetest.sound_play("tnt_ignite", {pos = pos,gain = 1.0,max_hear_distance = 15,})
|
||||
return minetest.add_entity(pos, entname)
|
||||
end
|
||||
|
||||
function activate_if_tnt(nname, np, tnt_np, tntr)
|
||||
local function activate_if_tnt(nname, np, tnt_np, tntr)
|
||||
if nname == "tnt:tnt" then
|
||||
local e = spawn_tnt(np, nname)
|
||||
e:setvelocity({x=(np.x - tnt_np.x)*5+(tntr / 4), y=(np.y - tnt_np.y)*5+(tntr / 3), z=(np.z - tnt_np.z)*5+(tntr / 4)})
|
||||
end
|
||||
end
|
||||
|
||||
function do_tnt_physics(tnt_np,tntr)
|
||||
local function do_tnt_physics(tnt_np,tntr)
|
||||
local objs = minetest.get_objects_inside_radius(tnt_np, tntr)
|
||||
for k, obj in pairs(objs) do
|
||||
local oname = obj:get_entity_name()
|
||||
|
@ -30,6 +30,14 @@ function do_tnt_physics(tnt_np,tntr)
|
|||
end
|
||||
end
|
||||
|
||||
tnt = {}
|
||||
tnt.ignite = function(pos)
|
||||
minetest.remove_node(pos)
|
||||
spawn_tnt(pos, "tnt:tnt")
|
||||
nodeupdate(pos)
|
||||
end
|
||||
|
||||
|
||||
minetest.register_node("tnt:tnt", {
|
||||
tiles = {"default_tnt_top.png", "default_tnt_bottom.png",
|
||||
"default_tnt_side.png", "default_tnt_side.png",
|
||||
|
@ -39,23 +47,11 @@ minetest.register_node("tnt:tnt", {
|
|||
stack_max = 64,
|
||||
description = "TNT",
|
||||
mesecons = {effector = {
|
||||
action_on = (function(p, node)
|
||||
minetest.remove_node(p)
|
||||
spawn_tnt(p, "tnt:tnt")
|
||||
nodeupdate(p)
|
||||
end),
|
||||
action_on = tnt.ignite
|
||||
}},
|
||||
sounds = default.node_sound_wood_defaults(),
|
||||
})
|
||||
|
||||
minetest.register_on_punchnode(function(p, node)
|
||||
if node.name == "tnt:tnt" then
|
||||
minetest.remove_node(p)
|
||||
spawn_tnt(p, "tnt:tnt")
|
||||
nodeupdate(p)
|
||||
end
|
||||
end)
|
||||
|
||||
local TNT_RANGE = 3
|
||||
local TNT = {
|
||||
-- Static definition
|
||||
|
|
Reference in New Issue