Pawn shop, flea market, collector's shops

There could be lots of items to be bought and sold at such stores and places. Maybe even include a bit of haggling. Some items could be rare and be traded in an online business or in collector’s shops at premium prices. Taking it even further, such items could be traded among players and their prices appear in lists.

I think a pawn shop would be an interesting and unique form of business for this game. Rather than relying on imports and wholesale stores, it will rely on customers and RNG to make money.

I’m not familiar at all on how a pawn shop business works - but here’s how I see it:
A pawn shop at the early stages, will not profit. With no inventory, they will simply start buying stuff from customers, meaning you’re losing money from the get-go.

However, the more inventory you hold, the more “future profitability” the store will have. As soon as you hit a threshold, you will soon see the shop start to be profitable. It’ll probably require you to have a single warehouse just for storing all these goods.

RNG-based, it could have massive swings in profitability or loss. For example, a customer may have wanted to sell something worth $10K. If the pawn shop buys it, that’s a big loss for that day right? Sure, you’ll recoup the cost in the future, but it may take some time. Perhaps you can manage the business that it will only buy stuff from customers at a max price, so that the wild swings of the store is more manageable. OR - it could be a decision that you make manually. You can get a call from the shop, asking your permission to make the final say for big sales.

Quick sample: You get a call. Employee says: Good morning. A customer is selling a relic for $10,000. We might be able to sell this in the future for $12,000, but it might take 10 days. Should we accept this offer?

Something like this.

It’s probably a lot of work for a single type of business, but I think it adds a new variation and unique twist when it comes to managing a business.

Thoughts?

While this is a decent idea, I don’t think it will flow well with the game, it’s too much micro-management and frequent visits to the “pawn shop” to make it work, it’s too much hassle basically.

If it’s implemented with more of a “hands-off” like the other businesses but if they add a “pricing analyst” as suggested weeks ago, maybe they could try to buy it for the lowest possible price from people and sell it maximum profit.

And the pawn shop’s inventory could work similarly to warehouse where you specify “up-to” a number.

Examples: Buy Watches until you have 10 on your inventory, then refuse the rest. (to make it slightly more complicated, continue to purchase Watches but only 20% below the original for extra-extra profit)
-Antique Set to 5, once the inventory of the pawn shop reaches 5, do not buy more from customers.
And so on, I feel like this would work better with the game while having just a little management.

Something like this (ish)
using System.Collections.Generic;
using UnityEngine;

public class PawnShop : MonoBehaviour
{
// Price list for different item types
private Dictionary<string, int> itemPrices = new Dictionary<string, int>();

// Buy limit for different item types
private Dictionary<string, int> buyLimits = new Dictionary<string, int>();

// Inventory of the pawn shop
private Dictionary<string, int> inventory = new Dictionary<string, int>();

// Max capacity of the inventory
public int maxCapacity = 100;

// Initialize prices and buy limits for different item types
private void Start()
{
    itemPrices.Add("Watches", 20000);
    itemPrices.Add("Antique", 9000);
    itemPrices.Add("Gold", 35000);
    itemPrices.Add("Musical Instruments", 5000);

    buyLimits.Add("Watches", 10);
    buyLimits.Add("Antique", 100);
    buyLimits.Add("Gold", 5);
    buyLimits.Add("Musical Instruments", 20);
}

// Buy an item from the customer
private bool BuyItem(string itemType)
{
    // Check if the shop has reached its buy limit for this item type
    if (inventory.ContainsKey(itemType) && inventory[itemType] >= buyLimits[itemType])
    {
        Debug.Log("Can't buy more " + itemType);
        return false;
    }

    // Check if there's enough space in the inventory
    if (inventory.Count >= maxCapacity)
    {
        Debug.Log("Inventory is full");
        return false;
    }

    // Check if the player has enough money to buy the item
    if (PlayerMoney.Money < itemPrices[itemType])
    {
        Debug.Log("Not enough money");
        return false;
    }

    // Remove money from the player
    PlayerMoney.Money -= itemPrices[itemType];

    // Add the item to the inventory
    if (!inventory.ContainsKey(itemType))
    {
        inventory.Add(itemType, 1);
    }
    else
    {
        inventory[itemType]++;
    }

    Debug.Log("Bought " + itemType);
    return true;
}

// Update is called once per frame
private void Update()
{
    // Simulate customers coming to sell items
    if (Random.value < 0.05f)
    {
        // Generate a random item type
        string[] itemTypes = { "Watches", "Antique", "Gold", "Musical Instruments" };
        string itemType = itemTypes[Random.Range(0, itemTypes.Length)];

        // Try to buy the item from the customer
        BuyItem(itemType);
    }
}

}