Urgent help required (cframe tweaking)

The first time I run this it works perfectly. However the second time it looks really really weird! I know it has something to with the script.

Video:

Solutions:
Looked on CFrame Api ref, and tried infinitely updating head and torso position. Nothing worked.

Note: Sorry for the laggy video.

--------------------------------Variables----------------------------------
local player = script.Parent.Parent.Parent
local character = player.Character or player.CharacterAdded:Wait()
local humanoid = character:WaitForChild("Humanoid")
local UIS = game:GetService("UserInputService")
local tool = script.Parent
local VFX11 = workspace.RedWind:Clone()
local VFX12= workspace.BASICSCYTHERING:Clone()
local VFX13 = workspace.BASICSCYTHERINGG:Clone()
local head = character:WaitForChild("Head")
local Torso = character:WaitForChild("Torso")
local headposition
local finalposition
local tweenService = game:GetService("TweenService")
local FireEffectInfo = TweenInfo.new(0.2, Enum.EasingStyle.Linear, Enum.EasingDirection.InOut, math.huge, true, 0)
local FireGoal = {}
FireGoal.Size = Vector3.new(4.83, 6.5, 4.356)
local FireTween = tweenService:Create(VFX13, FireEffectInfo, FireGoal)
local offsetpos = CFrame.new(0,0,-2.5)
local offsetposi = CFrame.new(0,-1.75,0)
local offsetposit = CFrame.new(0, 0, -8)
local firespininfo = TweenInfo.new(0.2,Enum.EasingStyle.Linear)
local windspininfo = TweenInfo.new(0.05,Enum.EasingStyle.Linear)
local RunSerivce = game:GetService("RunService")
local ChangeAllowed = true
----------------------------------------------------------------------------------


--------------------------------ATTACK 1----------------------------------
local torsoposition
local headcframe
local loop = coroutine.wrap(function()
while true do 
	torsoposition = Torso.CFrame
	headcframe = head.CFrame
	RunSerivce.Heartbeat:Wait()
	end
end)
loop()
VFX12.Parent = game.ReplicatedStorage
VFX13.Parent = game.ReplicatedStorage
tool.Unequipped:Connect(function()
	IPC:Disconnect()
end)
tool.Equipped:Connect(function()
	IPC = UIS.InputBegan:Connect(function(input, gameProcessed)
		if input.KeyCode == Enum.KeyCode.F then
			if not gameProcessed then
				ChangeAllowed = true
				VFX13.Parent = workspace
				VFX12.Parent = workspace
				humanoid:SetStateEnabled(Enum.HumanoidStateType.Running, false)
				humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, false)
				
				VFX12.CFrame = headcframe:ToWorldSpace(offsetpos)
				if ChangeAllowed then
					VFX13.CFrame = torsoposition:ToWorldSpace(offsetposi)
					ChangeAllowed = false
				end
				FireTween:Play()
				VFX13.CFrame = VFX13.CFrame * CFrame.Angles(0,0,math.rad(180))
				VFX12.CFrame = VFX12.CFrame * CFrame.Angles(0,0,math.rad(90))
				local Spin1 = tweenService:Create(VFX12,firespininfo,{CFrame = VFX12.CFrame * CFrame.Angles(0,math.rad(120),0)})
				local Spin2 = tweenService:Create(VFX12,firespininfo,{CFrame = VFX12.CFrame * CFrame.Angles(0,math.rad(240),0)})
				local Spin3 = tweenService:Create(VFX12,firespininfo,{CFrame = VFX12.CFrame * CFrame.Angles(0,math.rad(360),0)})
				Spin1:Play()
				Spin1.Completed:Connect(function()Spin2:Play() end)
				Spin2.Completed:Connect(function()Spin3:Play() end)
				Spin3.Completed:Connect(function()Spin1:Play() end)
				wait(2)
				VFX11.Parent = workspace
				VFX13.Parent = game.ReplicatedStorage
				VFX12.Parent = game.ReplicatedStorage
				VFX11.CFrame = VFX11.CFrame* CFrame.Angles(math.rad(90),0,0)
				VFX11.CFrame = Torso.CFrame:ToWorldSpace(CFrame.new(0,0,-10))
				VFX11.Parent = workspace
				local Spinn1 = tweenService:Create(VFX11,firespininfo,{CFrame = VFX11.CFrame * CFrame.Angles(math.rad(120),0,0)})
				local Spinn2 = tweenService:Create(VFX11,firespininfo,{CFrame = VFX11.CFrame * CFrame.Angles(math.rad(240),0,0)})
				local Spinn3 = tweenService:Create(VFX11,firespininfo,{CFrame = VFX11.CFrame * CFrame.Angles(math.rad(360),0,0)})
				Spinn1:Play()
				Spinn1.Completed:Connect(function()Spinn2:Play() end)
				Spinn2.Completed:Connect(function()Spinn3:Play() end)
				Spinn3.Completed:Connect(function()Spinn1:Play() end)
				local offsett = CFrame.new(0,0,-15)
				wait(1)
				VFX11.Parent = game.ReplicatedStorage
				Torso.CFrame = Torso.CFrame:ToWorldSpace(offsett)
				wait(1)
				humanoid:SetStateEnabled(Enum.HumanoidStateType.Running, true)
				humanoid:SetStateEnabled(Enum.HumanoidStateType.Jumping, true)
			end
		end
	end)
end)

----------------------------------------------------------------------------------



For clarification, in the video, the first time I pressed F it worked (circa. 00:00-00:10) and the second time it didn’t (circa. 00:10-00:24)