local he_boom = {
	name = "rangedweapons:he_explosion",
	--description = "DuN mInD mEh...",
	radius = 2,
	tiles = {
		side = "rangedweapons_invisible.png",
		top = "rangedweapons_invisible.png",
		bottom = "rangedweapons_invisible.png",
		burning = "rangedweapons_invisible.png"
	},
}
tnt.register_tnt(he_boom)

local rocket_boom = {
	name = "rangedweapons:rocket_explosion",
	--description = "DuN mInD mEh...",
	radius = 3,
	tiles = {
		side = "rangedweapons_invisible.png",
		top = "rangedweapons_invisible.png",
		bottom = "rangedweapons_invisible.png",
		burning = "rangedweapons_invisible.png"
	},
}
tnt.register_tnt(rocket_boom)

local rangedweapons_rocket = {
	physical = false,
	timer = 0,
	visual = "sprite",
	visual_size = {x=0.0, y=0.0},
	textures = {"rangedweapons_invisible.png"},
	lastpos= {},
	collisionbox = {0, 0, 0, 0, 0, 0},
}
rangedweapons_rocket.on_step = function(self, dtime, pos)
	self.timer = self.timer + dtime
	local tiem = 0.002
	local pos = self.object:getpos()
	local node = minetest.get_node(pos)
	if self.timer >= 0.002 then
	minetest.add_particle({
		pos = pos,
		velocity = 0,
          acceleration = {x=0, y=0, z=0},
		expirationtime = 0.04,
		size = 7,
		collisiondetection = false,
		vertical = false,
		texture = "rangedweapons_rocket_fly.png",
		glow = 15,
	})
	minetest.add_particle({
		pos = pos,
		velocity = 0,
          	acceleration = {x=0, y=6, z=0},
		expirationtime = 0.4,
		size = 4,
		collisiondetection = false,
		vertical = false,
		texture = "tnt_smoke.png",
		glow = 5,
	})
	tiem = tiem + 0.002 
	end
	if self.timer >= 0.375 then
	local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.5)
		for k, obj in pairs(objs) do
		if obj:get_luaentity() ~= nil then
		if obj:get_luaentity().name ~= "rangedweapons:rocket" and obj:get_luaentity().name ~= "__builtin:item" then
		tnt.boom(pos, rocket_boom)
		self.object:remove()
			end
		end
	end
end
	if self.lastpos.x ~= nil then
		if minetest.registered_nodes[node.name].walkable then
		tnt.boom(pos, rocket_boom)
		self.object:remove()
			end
		if self.timer >= 7.5 then
		tnt.boom(pos, rocket_boom)
		self.object:remove()
		end
	end
	self.lastpos= {x = pos.x, y = pos.y, z = pos.z}
end

minetest.register_entity("rangedweapons:rocket", rangedweapons_rocket)


local rangedweapons_he_grenade = {
	physical = false,
	timer = 0,
	visual = "sprite",
	visual_size = {x=0.0, y=0.0},
	textures = {"rangedweapons_invisible.png"},
	lastpos= {},
	collisionbox = {0, 0, 0, 0, 0, 0},
}
rangedweapons_he_grenade.on_step = function(self, dtime, pos)
	self.timer = self.timer + dtime
	local tiem = 0.002
	local pos = self.object:getpos()
	local node = minetest.get_node(pos)
	if self.timer >= 0.002 then
	minetest.add_particle({
		pos = pos,
		velocity = 0,
          acceleration = {x=0, y=0, z=0},
		expirationtime = 0.04,
		size = 7,
		collisiondetection = false,
		vertical = false,
		texture = "rangedweapons_rocket_fly.png",
		glow = 15,
	})
	minetest.add_particle({
		pos = pos,
		velocity = 0,
          	acceleration = {x=0, y=16, z=0},
		expirationtime = 0.4,
		size = 4,
		collisiondetection = false,
		vertical = false,
		texture = "tnt_smoke.png",
		glow = 5,
	})
	tiem = tiem + 0.002 
	end
	if self.timer >= 0.4 then
	local objs = minetest.get_objects_inside_radius({x = pos.x, y = pos.y, z = pos.z}, 1.5)
		for k, obj in pairs(objs) do
		if obj:get_luaentity() ~= nil then
		if obj:get_luaentity().name ~= "rangedweapons:he_grenade" and obj:get_luaentity().name ~= "__builtin:item" then
		tnt.boom(pos, rocket_boom)
		self.object:remove()
			end
		end
	end
end
	if self.lastpos.x ~= nil then
		if minetest.registered_nodes[node.name].walkable then
		tnt.boom(pos, he_boom)
		self.object:remove()
			end
		if self.timer >= 7.5 then
		tnt.boom(pos, he_boom)
		self.object:remove()
		end
	end
	self.lastpos= {x = pos.x, y = pos.y, z = pos.z}
end

minetest.register_entity("rangedweapons:he_grenade", rangedweapons_he_grenade)


local barrel_boom = {
	name = "rangedweapons:explosion",
	--description = "DuN mInD mEh...",
	radius = 3,
	tiles = {
		side = "rangedweapons_invisible.png",
		top = "rangedweapons_invisible.png",
		bottom = "rangedweapons_invisible.png",
		burning = "rangedweapons_invisible.png"
	},
}
tnt.register_tnt(barrel_boom)

minetest.register_node("rangedweapons:barrel", {
		description = "" ..core.colorize("#35cdff","Explosive barrel\n")..core.colorize("#FFFFFF", "It will explode if shot by gun"),
	tiles = {
		"rangedweapons_barrel_top.png",
		"rangedweapons_barrel_top.png",
		"rangedweapons_barrel_side.png",
		"rangedweapons_barrel_side.png",
		"rangedweapons_barrel_side.png",
		"rangedweapons_barrel_side.png"
	},
	drawtype = "nodebox",
	paramtype = "light",
	groups = {choppy = 3, oddly_breakable_by_hand = 3},
	on_blast = function(pos)
		tnt.boom(pos, {radius = 3})
	end,
	sounds = default.node_sound_wood_defaults(),
	node_box = {
		type = "fixed",
		fixed = {
			{-0.1875, -0.5, -0.5, 0.1875, 0.5, 0.5}, -- NodeBox1
			{-0.5, -0.5, -0.1875, 0.5, 0.5, 0.1875}, -- NodeBox2
			{-0.4375, -0.5, -0.3125, 0.4375, 0.5, 0.3125}, -- NodeBox3
			{-0.3125, -0.5, -0.4375, 0.3125, 0.5, 0.4375}, -- NodeBox4
			{-0.375, -0.5, -0.375, 0.375, 0.5, 0.375}, -- NodeBox5
		}
	}
})




