Lightning uses what I would call "Linear Linking" where there is a starting point and a desired target point such as:

function Lightning(pos,pos2,radius,numParts,model)
	radius = radius or 0.2
	numParts = numParts or 10
	model = model or workspace
	local lv = CFrame.new(pos,pos2).lookVector
	local dist = (pos-pos2).magnitude
	local dbp = dist/numParts
	local last = pos
	for i = 1,numParts do
		local p = Instance.new("Part",model)
		p.FormFactor = "Symmetric"
		p.Size = Vector3.new(1,1,1)
		p.CanCollide = false
		p.Anchored = true
		p.BrickColor = BrickColor.new("Bright red")
		local x = math.random(-100,100)/100*dbp/2
		local y = math.random(-100,100)/100*dbp/2
		local p2 = CFrame.new(pos+lv*(i*dbp),pos2+lv)*CFrame.new(x,y,0)
		local dist2 = (p2.p-last).magnitude
		local mid = (p2.p+last)/2
		local m = Instance.new("BlockMesh",p)
		m.Scale = Vector3.new(radius,radius,dist2)
		p.CFrame = CFrame.new(mid,p2.p)
		last = p2.p
		game:GetService("Debris"):AddItem(p,math.random(40,100)/1000)
	end
end

However, I am trying to loop this to create a chain of some sort- my goal is to make this bolt "orbit" or "emit" around/from a player- however, defining the positions beforehand only makes it shoot in one general direction. Please help!