{SOLVED} The Animation will not play

I do not know how to fix this, help is appreciated!
Client-Sided Script:

local tool = script.Parent

local handle = tool:WaitForChild("Handle")
local animation = tool:WaitForChild("Animation")
local plr = game.Players.LocalPlayer or game.Players.PlayerAdded:Wait()
local remote = tool:WaitForChild("DamageEvent")
local char = plr.Character or plr.CharacterAdded:Wait()
local plrhumanoid = char:WaitForChild("Humanoid")
tool.Equipped:Connect(function(mouse)
	
	print("Equipped.")
	
	tool.Activated:Connect(function()
		
		handle.Touched:Connect(function(hit)
			
			local humanoid = hit.Parent:WaitForChild("Humanoid")
			local humanoidRootPart = hit.Parent:WaitForChild("HumanoidRootPart")
			if humanoid and humanoidRootPart then
				
				print("Humanoid found: " .. hit.Parent.Name)
				local newAttachment = Instance.new("Attachment")
				local newVectorForce = Instance.new("VectorForce")
				newVectorForce.Attachment0 = newAttachment
				newVectorForce.Parent = humanoidRootPart
				newAttachment.Parent = humanoidRootPart
				newVectorForce.Force = Vector3.new(0,0,-1000)
				local track = plrhumanoid:WaitForChild("Animator"):LoadAnimation(animation)
				track:Play()
				remote:FireServer(humanoid,25)
				
			else
				print("Humanoid was not found.")
			end
			
		end)
		
	end)
	
end)

Server-Sided Script:

local remote = script.Parent:WaitForChild("DamageEvent")

remote.OnServerEvent:Connect(function(player,humanoid,damage)
	
	humanoid:TakeDamage(damage)
	
end)

Just gonna say this: did you put the animation under your name?

I did, I created the animation.

Ok, is the game you are putting it in under your name as well?

Yes, it is. I have some of my friends collaborated in the game, but I created it.

Any errors?

If not, im out of ideas

There isn’t any errors for the animation?

I mean do you find errors in the output

I mean it’s just Infinite Yeild on the torso.

that infinite yield could be your problem

I figured it out. It only plays when something gets hit. The only thing though, it only plays once.

That’s the problem. The infinite yield is caused by the script’s inability to exit the Touch event function once it has been activated, resulting in the function being called on the same object repeatedly. To fix this, add a method to terminate the event connection once the force is applied, or create a variable that remembers the last object touched and only applies the force if the touched object differs from the last object touched.