Barricade burning propagates to neighbors
parent
8bfa7e7e21
commit
c33d4bfbbf
|
@ -454,7 +454,7 @@ minetest.register_node("lzr_laser:barricade", {
|
|||
wield_image = "xdecor_baricade.png",
|
||||
tiles = {"blank.png","xdecor_baricade.png"},
|
||||
use_texture_alpha = "clip",
|
||||
groups = { breakable = 1, laser_destroys = 2 },
|
||||
groups = { breakable = 1, flammable = 1, laser_destroys = 2 },
|
||||
sounds = lzr_sounds.node_sound_wood_defaults({
|
||||
dug = {name="lzr_laser_barricade_break", gain=1.0},
|
||||
}),
|
||||
|
@ -490,6 +490,11 @@ minetest.register_node("lzr_laser:barricade_on", {
|
|||
sounds = lzr_sounds.node_sound_wood_defaults({
|
||||
dug = {name="lzr_laser_barricade_break", gain=1.0},
|
||||
}),
|
||||
on_construct = function(pos)
|
||||
minetest.sound_play({name="lzr_laser_quickburn", gain=1.0}, {pos=pos}, true)
|
||||
local timer = minetest.get_node_timer(pos)
|
||||
timer:start(1)
|
||||
end,
|
||||
on_timer = function(pos)
|
||||
-- spawn a few particles for the removed node
|
||||
minetest.add_particlespawner({
|
||||
|
@ -497,12 +502,12 @@ minetest.register_node("lzr_laser:barricade_on", {
|
|||
time = 0.001,
|
||||
minpos = vector.subtract(pos, vector.new(0.5, 0.5, 0.5)),
|
||||
maxpos = vector.add(pos, vector.new(0.5, 0.5, 0.5)),
|
||||
minvel = vector.new(-0.5, -0.5, -0.5),
|
||||
minvel = vector.new(-0.5, -0.2, -0.5),
|
||||
maxvel = vector.new(0.5, 0.2, 0.5),
|
||||
minacc = vector.new(0, -movement_gravity, 0),
|
||||
maxacc = vector.new(0, -movement_gravity, 0),
|
||||
minsize = 0.1,
|
||||
maxsize = 0.5,
|
||||
minsize = 1.5,
|
||||
maxsize = 1.5,
|
||||
node = {name="lzr_laser:barricade"},
|
||||
})
|
||||
-- Play randomly-pitched break sound
|
||||
|
@ -511,6 +516,26 @@ minetest.register_node("lzr_laser:barricade_on", {
|
|||
-- remove node
|
||||
minetest.remove_node(pos)
|
||||
full_update()
|
||||
|
||||
-- propagate to neighbors
|
||||
local posses = {
|
||||
vector.new(-1,0,0),
|
||||
vector.new(1,0,0),
|
||||
vector.new(0,-1,0),
|
||||
vector.new(0,1,0),
|
||||
vector.new(0,0,-1),
|
||||
vector.new(0,0,1),
|
||||
}
|
||||
for p=1, #posses do
|
||||
local ppos = vector.add(pos, posses[p])
|
||||
local node = minetest.get_node(ppos)
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
if def and def._lzr_active then
|
||||
if minetest.get_item_group(node.name, "flammable") > 0 then
|
||||
minetest.set_node(ppos, {name=def._lzr_active})
|
||||
end
|
||||
end
|
||||
end
|
||||
end,
|
||||
drop = "",
|
||||
on_place = element_on_place,
|
||||
|
|
|
@ -274,9 +274,11 @@ function lzr_laser.full_laser_update(pos1, pos2)
|
|||
vmanip:write_to_map()
|
||||
|
||||
for b=1, #burning_cache do
|
||||
local timer = minetest.get_node_timer(burning_cache[b])
|
||||
minetest.sound_play({name="lzr_laser_quickburn", gain=1.0}, {pos=burning_cache[b]}, true)
|
||||
timer:start(1)
|
||||
local node = minetest.get_node(burning_cache[b])
|
||||
local def = minetest.registered_nodes[node.name]
|
||||
if def and def.on_consruct then
|
||||
def.on_construct(burning_cache[b])
|
||||
end
|
||||
end
|
||||
burning_cache = {}
|
||||
|
||||
|
|
Loading…
Reference in New Issue