When a Humanoid dies, the new one that is obtained is not the same instance.
This means, every time the player is spawned, you need to rebind the died event to the new humanoid instance
Player.CharacterAdded:Connect(function(c)
c:WaitForChild("Humanoid").Died:Connect(deathFunction) --you can bind functions by reference in Lua
end)
You don’t need to worry about disconnecting, as Destroy does that for you.