OK so I have this module script with a function that has a loop but I don't want it to yield the function from continuing, I know of coroutine I just don't know how to do it.

The function that yields the script (snippet)

for i = 1,30 do
	wait()
	if script.Parent.SwordModule.Check:Invoke() == true then
		p.Size = Vector3.new(i,i,i)
	else
		Tool.Parent.UpperTorso.Anchored = false
		p:Destroy()
		break
	end
	local weld = Instance.new("ManualWeld")
	weld.Parent = p
	weld.Part0 = Tool.Blade
	weld.Part1 = p
end
while wait() do
	if script.Parent.SwordModule.Check:Invoke() == false then
		Tool.Parent.UpperTorso.Anchored = false
		p:Destroy()
		break
	end
end
if specialA == false then
	t.Parent.Humanoid:TakeDamage(Swing[Tool.Name])
else
	-- Where the function is called
	swordSpecials[Tool.Name](t.Parent)
end