local function q(q)local p=tick()repeat RunService.Stepped:Wait()until tick()-p>=q end local function p(q,p,t)local a=Ray.new(q,p)local E=false local v,V,T,W table.insert(t,Workspace.Effects)repeat v,V,T=Workspace:FindPartOnRayWithIgnoreList(a,t)if v then W=v.Parent:FindFirstChildOfClass("\072\117\109\097\110\111\105\100")if W and W.Health<=0 then W=nil end if W then E=true else if v.CanCollide and v.Transparency<1 then E=true else table.insert(t,v)E=false end end else E=true end until E return v,V,T,W end


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
