From dee742b1e44b804a301e6492afa1ad2bc4137d08 Mon Sep 17 00:00:00 2001 From: KansaiGaijin <83641841+KansaiGaijin@users.noreply.github.com> Date: Tue, 7 Jul 2026 12:31:08 +1200 Subject: [PATCH] Fix pick-up merging: name-based add_item and backpack-count display --- player.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/player.py b/player.py index a5c2039..8389739 100644 --- a/player.py +++ b/player.py @@ -167,10 +167,11 @@ class Inventory: def add_item(self, item, count=1, silent=False): """Adds an item to the inventory.""" - if item in self.items: - self.items[item]["Count"] += count + existing = next((e for e in self.items if e.name.lower() == item.name.lower()), None) + if existing: + self.items[existing]["Count"] += count if not silent: - print(f"Added {count} more {item.name}. Total: {self.items[item]['Count']}.") + print(f"Added {count} more {existing.name}. Total: {self.items[existing]['Count']}.") else: self.items[item] = {"Count": count, "object": item.itemType} if not silent: @@ -197,11 +198,11 @@ class Inventory: print(f'You are currently carrying:') found_un_equipped = False for item_obj, item_data in self.items.items(): - # Check if the item is in the backpack AND not currently equipped in any slot - if item_obj not in self.equipped_items.values(): + equipped_count = sum(1 for eq in self.equipped_items.values() if eq is item_obj) + backpack_count = item_data["Count"] - equipped_count + if backpack_count > 0: found_un_equipped = True - count = item_data["Count"] - print(f'{item_obj.name} x {count}\n' + print(f'{item_obj.name} x {backpack_count}\n' f' {item_obj.description}\n') if not found_un_equipped: print(" Your rucksack is empty.")