My code:

local cd = 10
local initial = 1
local animator = nil
local ws = script.Parent.Parent.Speed.Value

function throw()
	local towere = game.Workspace.Towers:GetChildren()
	local tower = towere[math.random(1, table.getn(towere))]
	local rock = script.Parent.Handle:Clone()
	local sound = script.Sound:Clone()
	sound.PlayOnRemove = true
	sound.Parent = rock
	rock.Name = "Rock"
	local bodyGyro = Instance.new("BodyGyro")
	bodyGyro.Parent = rock
	bodyGyro.D = 500
	bodyGyro.P = 1000
	bodyGyro.MaxTorque = Vector3.new(3999999947964416, 399999991808, 400000001507328)
	local bodyForce = Instance.new("BodyForce")
	bodyForce.Parent = rock
	bodyForce.Force = Vector3.new(0, rock:GetMass() * game.Workspace.Gravity, 0)
	rock.Velocity = -1 * (rock.Position - tower.PrimaryPart.Position)
	rock.Parent = game.Workspace
	rock.Position = script.Parent.Handle.Position
	script.Parent.Parent.Speed.Value = ws
	repeat
		wait()
	until (rock.Position - tower.PrimaryPart.Position).Magnitude < 5
	rock:Destroy()
	if tower then
		tower.Stunned.Value = true
	end
end

repeat
	wait()
until script.Parent.Parent.Parent == game.Workspace.Enemies
initial = os.clock()
while true do
	repeat
		wait()
	until os.clock() - initial > cd
	if table.getn(game.Workspace.Towers:GetChildren()) ~= nil then
		ws = script.Parent.Parent.Speed.Value
		script.Parent.Parent.Speed.Value = 0
		local Humanoid = script.Parent.Parent.Humanoid.Animator
		local anim = Humanoid:LoadAnimation(script.Animation)
		print(anim)
		anim.Priority = Enum.AnimationPriority.Action
		anim:Play()
		wait(1.05)
		initial = os.clock()
		throw()
		wait(0.3)
	end
end