I've placed in multiple NPC's and tried to attack all of them, I debugged the script with print statements that showed me all the code was being run through but there was no damage done.

local tool = script.Parent

local function onTouch(partOther)
	local humanOther = partOther.Parent:FindFirstChild("Humanoid")
	if not humanOther then return end
	if humanOther.Parent == tool then return end
	humanOther:TakeDamage(10)
end

local function slash()
	local str = Instance.new("StringValue")
	str.Name = "toolanim"
	str.Value = "Slash"
	str.Parent = tool
end

tool.Activated:Connect(slash)
tool.Handle.Touched:Connect(onTouch)