mirror of
https://github.com/minetest/minetest.git
synced 2024-09-27 15:00:30 +02:00
Made TNT actually explode and remove ground after 10 seconds.
This commit is contained in:
parent
abd106bacb
commit
c621fb337f
|
@ -169,7 +169,7 @@ minetest.register_node("experimental:tnt", {
|
||||||
minetest.register_on_punchnode(function(p, node)
|
minetest.register_on_punchnode(function(p, node)
|
||||||
if node.name == "experimental:tnt" then
|
if node.name == "experimental:tnt" then
|
||||||
minetest.env:remove_node(p)
|
minetest.env:remove_node(p)
|
||||||
minetest.env:add_luaentity(p, "experimental:tnt")
|
minetest.env:add_entity(p, "experimental:tnt")
|
||||||
nodeupdate(p)
|
nodeupdate(p)
|
||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
@ -199,11 +199,20 @@ function TNT:on_activate(staticdata)
|
||||||
self.object:settexturemod("^[brighten")
|
self.object:settexturemod("^[brighten")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local TNT_RANGE = 3
|
||||||
|
|
||||||
-- Called periodically
|
-- Called periodically
|
||||||
function TNT:on_step(dtime)
|
function TNT:on_step(dtime)
|
||||||
--print("TNT:on_step()")
|
--print("TNT:on_step()")
|
||||||
self.timer = self.timer + dtime
|
self.timer = self.timer + dtime
|
||||||
self.blinktimer = self.blinktimer + dtime
|
self.blinktimer = self.blinktimer + dtime
|
||||||
|
if self.timer>5 then
|
||||||
|
self.blinktimer = self.blinktimer + dtime
|
||||||
|
if self.timer>8 then
|
||||||
|
self.blinktimer = self.blinktimer + dtime
|
||||||
|
self.blinktimer = self.blinktimer + dtime
|
||||||
|
end
|
||||||
|
end
|
||||||
if self.blinktimer > 0.5 then
|
if self.blinktimer > 0.5 then
|
||||||
self.blinktimer = self.blinktimer - 0.5
|
self.blinktimer = self.blinktimer - 0.5
|
||||||
if self.blinkstatus then
|
if self.blinkstatus then
|
||||||
|
@ -213,6 +222,28 @@ function TNT:on_step(dtime)
|
||||||
end
|
end
|
||||||
self.blinkstatus = not self.blinkstatus
|
self.blinkstatus = not self.blinkstatus
|
||||||
end
|
end
|
||||||
|
if self.timer > 10 then
|
||||||
|
-- explode
|
||||||
|
print("TNT exploded")
|
||||||
|
local pos = self.object:getpos()
|
||||||
|
pos.x = math.floor(pos.x+0.5)
|
||||||
|
pos.y = math.floor(pos.y+0.5)
|
||||||
|
pos.z = math.floor(pos.z+0.5)
|
||||||
|
for x=-TNT_RANGE,TNT_RANGE do
|
||||||
|
for y=-TNT_RANGE,TNT_RANGE do
|
||||||
|
for z=-TNT_RANGE,TNT_RANGE do
|
||||||
|
if x*x+y*y+z*z <= TNT_RANGE * TNT_RANGE + TNT_RANGE then
|
||||||
|
local np={x=pos.x+x,y=pos.y+y,z=pos.z+z}
|
||||||
|
local n = minetest.env:get_node(np)
|
||||||
|
if n.name ~= "air" then
|
||||||
|
minetest.env:remove_node(np)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
self.object:remove()
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Called when object is punched
|
-- Called when object is punched
|
||||||
|
|
Loading…
Reference in New Issue
Block a user