local character = script.Parent
local debounce = true
local startjump
character:WaitForChild("Humanoid").FallingDown:Connect(function(bool)
	startjump = character.HumanoidRootPart.Position
	local touch = character.Humanoid.Touched:Connect(function(part, humanPart)
		if part.Parent == character or part.Name == "Handle" then return end
		if not debounce then return end
		debounce = false
		local magnitude = (startjump - character.HumanoidRootPart.Position).magnitude
		if magnitude > 20 then
			character.Humanoid:TakeDamage(magnitude * 1.5)
		end
		startjump = character.HumanoidRootPart.Position
		wait(0.2)
		debounce = true
	end)
	if not bool then
		touch:Disconnect()
	end
end)

I am really stumped on why the touch event isn't disconnecting.