Add sphere_cover.
parent
7e6d2410dd
commit
f60cc10a30
|
@ -51,6 +51,7 @@ If you want to use one of the default explosion types you have to include the ex
|
||||||
-"pool" --spawns a "pool" of the specified block and size, see the lava_bomb as example
|
-"pool" --spawns a "pool" of the specified block and size, see the lava_bomb as example
|
||||||
-"sphere" --spawns a cube of the block specified of the specified size
|
-"sphere" --spawns a cube of the block specified of the specified size
|
||||||
-"sphere_shell"
|
-"sphere_shell"
|
||||||
|
-"sphere_cover" --covers the ground inside an imaginary sphere with block
|
||||||
-"cubic_shell"
|
-"cubic_shell"
|
||||||
-"column" --see water column bomb as example
|
-"column" --see water column bomb as example
|
||||||
-"circle" --see Fire circle bomb
|
-"circle" --see Fire circle bomb
|
||||||
|
|
|
@ -139,6 +139,23 @@ function default_hit_node(self, explosion)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
elseif shape == "sphere_cover" then
|
||||||
|
for dx = -radius,radius do
|
||||||
|
for dy = radius,-radius,-1 do
|
||||||
|
for dz = -radius,radius do
|
||||||
|
local pos1 = {x = p.x+dx, y=p.y+dy, z=p.z+dz}
|
||||||
|
if math.abs(vector.length(vector.subtract(pos1,p))) <= radius then
|
||||||
|
local node_at = minetest.get_node_or_nil(pos1)
|
||||||
|
local node_below = minetest.get_node_or_nil({x=pos1.x, y=pos1.y-1, z=pos1.z})
|
||||||
|
if node_at and node_below and node_at.name == 'air' and node_below.name ~= 'air' then
|
||||||
|
if not minetest.is_protected(pos1, "") or not minetest.get_item_group(minetest.get_node(pos1).name, "unbreakable") == 1 then
|
||||||
|
minetest.set_node(pos1, {name=block})
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
elseif shape == "cubic_shell" then
|
elseif shape == "cubic_shell" then
|
||||||
center.y = p.y + radius
|
center.y = p.y + radius
|
||||||
for dx = -radius,radius do
|
for dx = -radius,radius do
|
||||||
|
|
Loading…
Reference in New Issue