diff --git a/scripts/game.gd b/scripts/game.gd
index 45ca4bfaa39481872e448f9ba85a8116f8dec304..e5c882dbea10aca19ea2dcc7983ca151d8e79d4b 100644
--- a/scripts/game.gd
+++ b/scripts/game.gd
@@ -522,16 +522,20 @@ func _on_purchase_attempted(item_data: Dictionary, shop_item: Node):
 		shop_item.get_node("Overlay").visible = true
 		shop_item.get_node("MarginContainer/VBoxContainer/BuyButton").disabled = true
 
-		# Track purchased items
-		if item_data in shop.shop_items["pieces"]:
+		# Creates an array of piece / upgrade names.
+		var piece_names = shop.shop_items["pieces"].map(func(item): return item["name"])
+		var upgrade_names = shop.shop_items["upgrades"].map(func(item): return item["name"])
+		
+		# checks if the purchased item’s name exists in the list of pieces or upgrades.
+		if item_data["name"] in piece_names:
+			print("Purchased piece: ", item_data["name"])
 			purchased_pieces.append(item_data)
-		elif item_data in shop.shop_items["upgrades"]:
+		elif item_data["name"] in upgrade_names:
+			print("Purchased upgrade: ", item_data["name"])
 			purchased_upgrades.append(item_data)
 
 		# Update UI and print debug info
 		update_gold_display()
-		print("Purchased: ", item_data["name"])
-		print("Remaining gold: ", player_gold)
 	else:
 		# TODO: Play sound / animation for not enough gold
 		print("Not enough gold!")
@@ -550,6 +554,8 @@ func _on_next_round_requested():
 	piece_container.visible = true  # Show the board
 	shadow_container.visible = true
 	tile_container.visible = true
+	print("Player items in purchased_pieces: ", purchased_pieces)
+	print("Player upgrades in purchased_upgrades: ", purchased_upgrades)
 
 func set_gold_display_position():
 	# Set anchors to a percentage of the parent container's size