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