takeAt() removes item piles from slots if none left
Refactor take to use takeAt, reduce 'if count zero, remove item' logic duplication