public void EquipPC(PlayerCharacter pc, Item item, string slotName)
        {
            EquipmentSlot slot;

            if (item != null)
            {
                var validSlots = GetValidSlots(item);
                slot = validSlots.FirstOrDefault(
                    x => x.Name.Equals(slotName, StringComparison.OrdinalIgnoreCase))
                       ?? throw new InvalidOperationException($"Item {item.Name} is of type {item.ItemType} and cannot be equipped in slot {slotName}");

                Inventory.Remove(item);
            }
            else
            {
                slot = EquipmentSlots.FirstOrDefault(x => x.Name.Equals(slotName, StringComparison.OrdinalIgnoreCase))
                       ?? throw new ArgumentException($"Slot {slotName} does not exist.");
            }

            var existing = pc.Equipment[slot.Name];

            pc.Equipment[slot.Name] = item;

            if (existing != null)
            {
                Inventory.Add(existing);
            }
        }