2024-06-17 14:32:51 -06:00

52 lines
1.1 KiB
Lua

PyuTestCore.create_explosion = function (pos, range, rm_pos, dmg, creator)
if rm_pos then
minetest.remove_node(pos)
end
for dx = -range, range do
for dz = -range, range do
for dy = -range, range do
local npos = {x = pos.x + dx, y = pos.y + dy, z = pos.z + dz}
if minetest.get_node(npos).name == "pyutest_core:tnt" then
minetest.get_node_timer(npos):start(0.2)
else
minetest.dig_node(npos)
end
end
end
end
for _, v in pairs(minetest.get_objects_inside_radius(pos, range)) do
if v ~= nil and v ~= creator then
v:set_hp(v:get_hp() - dmg)
end
end
local r = range
local minpos = {x = pos.x - r, y = pos.y - r, z = pos.z - r}
local maxpos = {x = pos.x + r, y = pos.y + r, z = pos.z + r}
minetest.add_particlespawner({
amount = range * 2,
time = 1,
minexptime = 1,
maxexptime = 1,
minsize = 32,
maxsize = 64,
collisiondetection = false,
texture = "blast.png",
minpos = minpos,
maxpos = maxpos,
})
minetest.sound_play("block_break", {
pos = pos,
gain = 1.5
})
end