Every item in the game has a base cost_gp value stored as a decimal (two places, representing copper accuracy). Merchants adjust the final trade price based on their personal merchant_favor toward the party.
merchant_favor is tracked per merchant as an integer from 0 to 100:
Buy Price (what the player pays the merchant)
buy_P=max(1.0, 4.0−(merchant_favor×0.03)+campaign_economy_modifier)\text{buy\_P} = \max(1.0,\ 4.0 - (\text{merchant\_favor} \times 0.03) + \text{campaign\_economy\_modifier})buy_P=max(1.0, 4.0−(merchant_favor×0.03)+campaign_economy_modifier)
Buy price = cost_gp × buy_P (rounded to nearest 0.01 gp / copper)
Sell Price (what the merchant pays the player)
sell_P=1.0+(merchant_favor×0.002)\text{sell\_P} = 1.0 + (\text{merchant\_favor} \times 0.002)sell_P=1.0+(merchant_favor×0.002)
Sell price = cost_gp × min(1.20, sell_P) (rounded to nearest 0.01 gp / copper)
campaign_economy_modifier is an optional global slider set by the GM at campaign start: –0.5 (generous world), 0 (standard), or +0.5 (harsh economy).
Final prices may be paid in any combination of copper (0.01 gp), silver (0.1 gp), gold (1 gp), and electrum (0.5 gp) coins.
Favor Level | merchant_favor | Buy Multiplier | You Pay (Buy) | Merchant Pays You (Sell) | Feels Like |
Hated | 0 | 4.0× | 400% | 100% | Hostile — total gouge |
Unfriendly | 10–29 | 3.7–3.1× | 310–370% | 102–106% | Barely tolerated |
Neutral | 50 | 2.5× | 250% | 110% | Standard medieval merchant |
Friendly | 70 | 1.9× | 190% | 114% | Regular customer |
Favored | 90 | 1.3× | 130% | 118% | Good relationship |
Beloved | 100 | 1.0× | 100% (at cost) | 120% | VIP — best deals + bonus |
Favor Level | You BUY it | Merchant pays you if you SELL it | Notes |
Hated (0) | 400.00 gp | 100.00 gp | Pure gouge |
Unfriendly (20) | 340.00 gp | 104.00 gp | Still painful |
Neutral (50) | 250.00 gp | 110.00 gp | Classic 150 % medieval markup |
Friendly (70) | 190.00 gp | 114.00 gp | Noticeable break |
Favored (90) | 130.00 gp | 118.00 gp | Solid discount |
Beloved (100) | 100.00 gp | 120.00 gp | At cost + 20 % sell bonus |
Before any buying or selling, a player may attempt haggling once per merchant visit. This is a contested roll:
Difference = Player total − Merchant total (Tie always goes to the player.)
Permanent results (applied immediately to the database):
The updated favor takes effect for the entire visit and all future visits.
Gifting gold or valuable items improves merchant_favor, but it is deliberately expensive and inefficient, especially as favor rises. This prevents easy “gold-spam” juicing while still rewarding players who want to invest in a relationship (exactly like BG3’s level-scaled gifting cost).
Approximate cost per +1 favor:
Current Favor Range | Value needed per +1 favor |
|---|---|
0–45 | 50 gp |
46–70 | 100 gp |
71–85 | 200 gp |
86–90 | 400 gp |
This keeps gifting useful for small relationship boosts or roleplay flavor, but makes quests, haggling, and consistent good behavior the real path to “VIP” pricing.
These sliders set site audio only, so you can mix against Discord and other apps (phone volume still caps everything).