private static bool TryPurchasing(int price, List <Item[]> inv, List <Point> slotCoins, List <Point> slotsEmpty, List <Point> slotEmptyBank, List <Point> slotEmptyBank2, List <Point> slotEmptyBank3, List <Point> slotEmptyBank4, Player player)
    {
        int priceRemaining = price;

        foreach (Item pItem in player.inventory)
        {
            if (pItem.ModItem is Wallet wallet)
            {
                ItemStorage storage     = wallet.GetItemStorage();
                long        walletCoins = storage.CountCoins();
                long        sub         = Math.Min(walletCoins, priceRemaining);
                priceRemaining -= (int)sub;
                storage.RemoveCoins(player, ref sub);

                if (priceRemaining <= 0)
                {
                    return(false);
                }
            }
        }

        return(Orig_TryPurchasing.InvokeStatic <bool>(priceRemaining, inv, slotCoins, slotsEmpty, slotEmptyBank, slotEmptyBank2, slotEmptyBank3, slotEmptyBank4));
    }