local function t(t)local N=tick()repeat RunService.Stepped:Wait()until tick()-N>=t end local function N(t,N,M)local p=Ray.new(t,N)local L=false local f,I,i,u table.insert(M,Workspace.Effects)repeat f,I,i=Workspace:FindPartOnRayWithIgnoreList(p,M)if f then u=f.Parent:FindFirstChildOfClass("\072\117\109\097\110\111\105\100")if u and u.Health<=0 then u=nil end if u then L=true else if f.CanCollide and f.Transparency<1 then L=true else table.insert(M,f)L=false end end else L=true end until L return f,I,i,u end
-- functions

local function wait(t)
	local start = tick()
	repeat
		RunService.Stepped:Wait()
	until tick() - start >= t
end

local function Raycast(position, direction, ignore)
	local ray = Ray.new(position, direction)
	local success = false
	local h, p, n, humanoid

	table.insert(ignore, Workspace.Effects)

	repeat
		h, p, n = Workspace:FindPartOnRayWithIgnoreList(ray, ignore)

		if h then
			humanoid = h.Parent:FindFirstChildOfClass("Humanoid")
			if humanoid and humanoid.Health <= 0 then
				humanoid = nil
			end
			if humanoid then
				success = true
			else
				if h.CanCollide and h.Transparency < 1 then
					success = true
				else
					table.insert(ignore, h)
					success = false
				end
			end
		else
			success = true
		end
	until success

	return h, p, n, humanoid
end
