This is my concept for an NPC trading system that goes beyond a simple infinite shop. It introduces new layers of gameplay, favours exploration, can be balanced, and can even be used to balance other aspects of gameplay. Warning: very long post. Go to the "Some example images" section below for some nice pictures if you don't want to ready the technicalities of the system. Introduction and "value level" system Merchants are found randomly scattered across the world, always near or in named locations. Players can interact with them, which will prompt some response from the Merchant (a greeting) and give players several options to interact with them. Buying and selling items is the most obvious options, but one can also make some "small talk" with the Merchant. After X server resets, all existing merchants move into new locations. Each Merchant has associated loot tables corresponding to items that they sell and items that they can buy. Each item in MineZ will have a "nominal" price, hard-coded by the balancing team. Then, every Merchant will categorize each item in the game depending on how "valuable" each item is to them. Items that are considered more valuable will have their nominal price multiplied by a factor >1 when buying or selling. Similarly, items that are considered less valuable will have their price multiplied by <1 factor. I imagine these categories: (+3 value level) Extremely valuable: x1.5 factor (+2 value level) Very valuable: x1.4 factor (+1 value level) Valuable: x1.2 factor (0 value level) Average: x1 factor (-1 value level) Not very valuable: x0.8 factor (-2 value level) Not valuable: x0.6 factor (-3 value level) Almost worthless: x0.5 factor Not interested: will not sell or buy this item For example, let's imagine that I want to buy an apple, which has a nominal price of 20 gold. If the Merchant has an "average" value for apples, they will buy it and sell it for 20 gold. If, however, they value apples as "not very valuable", they will buy and sell apples for 16 gold. One should always try to buy items that the Merchant are not interested in, and sell items that they are interested in. How is the "value level" decided? Merchants have a name and are considered to be the same "person" across server resets. They will have certain traits that define the value that they give to each item in the game (including the possibility that they are not interested at all). All items in the game start with 0 value, and certain traits can modify this value: Very interested in a specific item (+2 value levels) Interested in a specific item (+1 value level) Not very interested in a specific item (-1 value level) Barely interested in a specific item (-2 value levels) Very interested/Interested/Not very interested/Barely interested in a category of items (+2/+1/0/-1/-2 value levels) (Categories could be "food", "weapons", "tools", "armor", "leather armor", "healing items"...) Is not interested in a specific item / category: removes the items from the pools completely. Additionally, there are temporary traits, which only apply for X sever resets. They can be the same as the previous traits, only that they change with time. The items that you can buy from Merchants are decided from the "value level" assigned to each item. A loot table is created from these values: items the have average or below average value (for the Merchant) will have the same probability of appearing, while more valuable items have a lower chance. Every server reboot, items will be drawn from this loot table, which will be the items that the Merchant will sell during that server uptime. These items will be the same for every player, but each player have their independent "store": if the Merchant is selling 2 apples, then every player will have a chance to buy up to 2 and only up to 2 apples. You can also sell items to the Merchant. Any items that have a value level other than "not interested" will be accepted. The money that the Merchant will offer for the item will depend on the value they give it. Once you sell one kind of item to the Merchant, the "value level" will lower 0/1/2 levels. For example, you may sell an apple for the "average" price, but for the next apple you try to sell, you will find that the buy price is lower since now the Merchant considers apples as "not very valuable"! For balancing purposes, a hard limit on the total number of items that you can sell could be established per server reset. Haggling When you try to sell or buy any item, the Merchant will offer a price. When you buy from the Merchant, they will give you a price that corresponds to either the value that they honestly give the item, or they may try to make it seem like they value it more than they really do. For example, if they value apples an average amount (0 level), they will have a chance to offer you a price that corresponds to the "valuable" or "very valuable" (+1/+2) levels (with, let's say 30%, 50%, and 20% chances respectively) Then, you have three choices: Accept deal: you will buy the item and gain a friendship bonus. Haggle: you will attempt to lower the price by 1 value level. If this value is at least the real value of the item (20%+50%=70% chance), then the deal will be succesful with a friendship bonus. If not, the Merchant will say that he cannot agree to such price, the deal will not happen, and you will not be able to buy the item again. Strong haggle: you will attempt to lower the price by 2 value levels. If this value is the real value (20%), then the deal will go through with a friendship bonus. If not, the Merchant will get offended that you offer such low price, the deal will not happen, the item will not be available, and there will be a friendship penalty. Cancel deal: Nothing happens. When merchants offer you items to buy, the lowest they will tell you that they value the item is level -1. It is rare that items are either +3 or -3, so if you see a merchant asking for a x1.5 price, you can call them out on it! Selling will have a similar system but the other way around. They may try to seem like they are less interested than they really are, and you can haggle to raise the price. No matter if the deal succeeds or fails, the interest on the item will go down. If you fail a strong haggle, then the value will plummet 2 levels. If the value drops below -3 value, it becomes "not interested". The highest value level that a Merchant will tell you when you sell items is +1. Friendship Each individual Merchant will have a different friendship level with each player. There are different ways to raise this friendship. When you first meet the Merchant, you can either go straight to trading or "Introduce yourself", which will give you small friendship boost. Trading with the Merchant will also raise the friendship with each succesful trade. Additionally, simply right clicking them once a server reset will give a small friendship boost, so stopping by to say "hi" is always a good idea! Additionally, each Merchant might have certain traits that affect how friendship is gained with them, like: "Values manners": introducing yourself gives an additional friendship boost. "Loyal": gains more friendship per succesful trade "Easily offended": friendship losses from strong haggles will be higher "Appreciates a good trader": succesfully haggling will give more friendship, especially a "strong haggle" "Is afraid of zombies": Killing a zombie near them will give a small friendship boost once per server. "Loves healers": Saying "hi" while being a healer will give a bigger friendship boost. "Hates bandits": Saying "hi" while being a bandit will lower friendship. "Compasionate": Saying "hi" while equiped with leather armor will raise friendship. Many more possibilities! Friendship will increase from 0 to 100, starting at 20. If you introduce yourself, it starts higher. Reaching certain friendship thresholds will change your relationship with the Merchant, which will give them a chance to offer you better deals. - < 10: Cold (50% chance of +1 value when buying and -1 value when selling) - 10 < 40: Acquainted - 40 < 70: Friend (50% chance of -1 value when buying and +1 value when selling) - > 70: Great friend (40% chance of -1 value when buying and +1 value when selling, 30% chance of -2 value when buying and +2 value when selling) - 100: Best friend (same as great friend) Small talk Each time you encounter a Merchant, you will have the option to make "small talk". Depending on the friendship level, two things might happen. They might tell you something random, not really useful, or they might give you certain valuable information about themselves or other Merchants. This is, they will reveal the traits that define each Merchant. Examples: "Well, I just came from Sanctuary of Peace, and let me tell you, I have never seen so many potions of healing!" (This Merchant will value [potions of healing] less (-1 value level) during the next hours) "I'm about to head to Dark Mansion, and I am a bit worried I don't have enough food..." (This Merchant will value food more (+1 value level) during the next hours, additionally you will find them next near Dark Mansion) "You know Merchant Hoid? I heard he just got a great deal on apples, so don't let him try to upsell you on them!" (The Merchant Hoid values apples very little (-2 value levels)) "I miss my mom's pumpkin pie! Hers was the best, but I could do with any pumpkin pie right now!" (This Merchant values pumpkin pies a lot (+2 value levels)) "I never saw the point in trading tools, you can never get a good profit out of them!" (This Merchant will not buy or sell tools) "I always thought that the Merchant Sebastian was a bit too easily offended. Haggling is part of the job, right? No point in getting mad!" (You will lose more friendship with Merchant Sebastian if you fail a strong haggle) "You know who I hate? Those bandits who go around swinging their swords without consideration!" (You will lose friendship with this Merchant if you interact with him while being a "Bandit") "I think I'm getting tired of this land, it's time I move on." (This Merchant will leave the game in a couple of server resets) As you keep interacting with Merchants, you will learn more about their preferences, which will let you make more informed haggling decisions! Whenever you click a Merchant, the option of "Remember what I know about [Merchant name]" will be available, which will show the information you know so far, for example, for a single Merchant: [Merchant name] values armor more (+1 value level) [Merchant name] values food more (+1 value level) temporarily [Merchant name] values pumpkin pie a lot (+2 value levels) temporarily [Merchant name] does not value chainmail armor (-1 value level) [Merchant name] is barely interested in apples (-2 value levels) [Merchant name] hates bandits You will next find [Merchant name] in Dark Mansion Effects can stack. In the previous example, apples have at the same time a -2 penalty and a +1 bonus (food item), thus the total value level for apples for this Merchant is -1. If you know all this, and this Merchant tries to sell you apples at a value level of 0, then you can haggle safely and get a better price without fear of failing the trade! Leaving Every X server resets, a Merchant will "leave the region", i.e. it will no longer appear in-game. When a Merchant is close to leaving, you might get this information by talking with them or other merchants. When they leave, your knowledge about them will be useless, and so will your friendship. This helps keep the gameloop fresh, by introducing new and different Merchants to befriend. It also allows new players to be on a similar playing field as older players. However, as a nice bonus, whenever a Merchant leaves, some of its friendship will be translated to the new Merchant that will replace him in-game when you introduce yourself: "Oh, you are [Player]? You know, [Old Merchant Name] has told me about you, pleased to meet you." "Oh, you are [Player]? [Old Merchant Name] has told me a lot of stories about you, pleased to finally meet you!" The more friendship you had with the old Merchant, the more will be awarded when you meet the new Merchant (+5 for friend, +10 for great friend, and +15 for best friend). Additionally, whenever you reach the level of "great friend" with at least 10 Merchants, you will gain a permanent +5 friendship boost with every new Merchant you meet (something, something good reputation). Some example images Let's say you encounter a new Marchant, that you know nothing about. You see that they are selling apples, and you want to buy one. After selecting the "apple" option for buying, the chat will display something like this: The first row will be the offer by the merchant. Hovering over this line, will display a text box explaining this offer, including the value level that they are currently offering. The next line is a recollection of the facts you know about the merchant that are pertinent to this trade. As you can see, there are still traits that you don't know (???), in fact you don't know anything! Below that are the possible options for the trade, each of them with a tooltip explaining the option. Given that you know nothing about this merchant, you can try your luck with a haggle, or play safe and accept the deal. Now let's say that you talk with the Merchant from time to time, and they tell you this: Now you know something! The next time you try to buy apples, the trading GUI will be something like this: As you can see there are still unkown traits (???), which may or may not affect apples, but you know now that the Merchant is probably not as interested in apples as he says. As such, it is now much safer to go for a haggle or even a strong haggle! When you have found all possible information about the Merchant, the trading window will look like this: As you can see, there is no longer a ??? So you can be exactly sure of the value that the Merchant gives the item. It turns out that the total interest is -1, so haggling was the correct option. But not a stronge haggle! If we had pushed for a strong haggle before (when we thought the value was -2) we would have been rejected! Finally, as you get friendly with the Merchant, they might give you some better deals: Now we can finally buy apples at x0.6 their nominal price! Conclusion Commerce in videogames is usually a hard task to tackle. You can very easily break the player economy. This system aims to prevent this by: Limiting the types of items you can sell to a Merchant, making the value depend on external factors, and lowering the value for selling the same items repeatedly. This makes it so grinding a specific item is less interesting, and instead you want to focus on different items depending on the Merchant. It introduces gameplay by making players look for items that they might not be interested in, but that they know they can sell at a good price. Limiting the types and quantities of items you can buy. Even if players managed to obtain unlimited money, the amount of items they can buy is limited, so at most this would be like a loot chest with some extra steps, thus not impacting the economy greatly. One of the advantages of this system is its layers: You can completely ignore friendship and the haggle system: Just accept any price and you got the basics of trading. You might not get the most efficient deals, but you can still find something useful from time to time. Try to get immersed in the system: Maybe try haggling from time to time, or casually befriending the Merchants so you get better prices. By making small talk, you can get some more insight which will let you make more informed decisions when haggling. How much effort you put into this will depend on you. Go for min-maxing: try to befriend every Merchant and get to know the value that they give to every item! Know when to push for a strong haggle and when the item is being offered at a fair price, and you will surely obtain the best items at the best price. Find out where the Merchants will be next so that you can find them easily. Other comments: The Merchant information is server-wide, so sharing it with allies is a great strategy! A savvy Merchant will be able to buy items from certain Merchants below their regular price and sell them to other Merchants across the map for good profits! Alternatively, talk with a Merchant, find out what items they want, and go scavenge for them! If they value tools a lot, go find lots of fishing rods and axes and get good money for them. This is a good balancing mechanic. Make Merchants more interested in fish, and you will boost fishing. Make them interested in grave robbing items and you will have grave robbers all around. Make merchants appear more in locations previously not visited and you will find players visiting them. A new Merchant tag (like Bandit or Healer) could be obtained after X trades in a single life. This might signal to other players that your ways are pacific and are interested in a good trade, but it may also signal bandits that your pockets are loaded! Seasonal Merchants are a possibility, selling event-related items. You can give a lot of personality to each trader. Write as much dialog lines as you can to make them interesting. Make certain dialog lines depend on your friendship level or on certain hidden traits. Why not have a "pirate" trait that changes how the trader talks? Maybe make some a bit posh, or make others grumpy. Why not give some of them a unique backstory, only available once you reach a certain friendship level? Maybe Merchants that have already left can return to the game ocasionally, with renewed trading traits but keeping most of the friendship level. Or make them appear from time to time in Meridian drinking at a bar, and let them say hello to old friends before diseappearing again. This feature can be easily expanded: what about a Merchant that gives you a dungeon key once you reach a certain friendship level with them? How about a Merchant tipping you about secret stash of items hidden somewhere? How about using them to introduce new lore? What if they sold unique items to players with high friendship level? The friendship system is completely optional, in the sense that the basics of the haggling and trait information systems will still work even if friendship is not implemented. While the friendship system is intenteded to add a sense of progression, the information system does that too. The friendship system may be implemented at a later date to make merchants easier and faster to balance and develope, or it may be scrapped entirely. Final Comments Hope you liked it! I am not sure if this is something that MineZ needs right now, but I think it introduces some fun mechanics. I am aware of the dev time required for a system like this, and I know that it is a scarce resource. Either way, I hope this, or an iteration of this, sometime sees the light of MineZ! Feel free to leave any ideas that you have for this system or any other NPC trading system you have.