Haggling and Pricing
Wiki updated as of 0.7.0 (Oct 2026)Price modifiers
Section titled “Price modifiers”Every price starts from the item’s system price and is multiplied by each modifier that applies to it. The Buy Modifier scales what a player pays, and the Sell Modifier scales what the shop pays for an item a player sells.
| Modifier | Where it is set |
|---|---|
| Whole shop | Buy Modifier and Sell Modifier in the Pricing section of Shop Settings. A blank Sell Modifier follows the world’s Default Sell Rate. |
| Item type | The Buy and Sell fields on each category row of the Stock tab. |
| Single item | The Price column on the Stock tab replaces the system price. The Sell Rate column multiplies the shop’s sell rate for that item. |
| One player | Haggling, dialogue tree effects, or the API. |
| Timed discount | The Set timed buyer discount tree effect, which lasts until morning or a set number of hours. |
| World event | The Named Events menu in the module settings. |
Per-player modifiers stay on the shop between visits. They are listed under Per-Player Price Modifiers in the Pricing section, where you can delete one. The Default Sell Rate and the Shop Sell Rates reset button are on the settings reference.

The Stock tab also has a Buyback Markup. When it is set, an item the shop bought from a player is resold at what the shop paid times the markup.
Barter payment
Section titled “Barter payment”Drag an item onto an item’s Barter cell on the Stock tab to let the keeper accept that item instead of coin. The player then picks the payment option from a dropdown on the item card. The bartered items leave the player’s inventory at checkout.

Enabling haggling
Section titled “Enabling haggling”Haggling is off until you enable it in the Haggle section of Shop Settings. Leaving Skills blank allows any skill the system offers. The system’s barter skill is listed first.
The Price Ladder pairs a DC with a price multiplier. Only the highest DC the roll beats counts. The Otherwise row sets the price for a roll that beats no DC. Each row can carry a label, shown to the player as the result, and a goodwill change. A warning appears when a higher DC gives a worse price than a lower one.

Once per Visit limits each player to one attempt, plus any Push-Your-Luck Re-rolls. Every attempt after the first costs goodwill, and the player keeps the better result.
For a system without skills, or for a check the skill list does not cover, add rows under Custom Rolls. Each row pairs a label with a roll formula. A formula the system cannot read is flagged and never offered. A formula with no die is flagged but still offered.
How a haggle plays out
Section titled “How a haggle plays out”The Haggle button appears on the browse screen and the confirm screen. The confirm screen also previews the odds of landing on each ladder row. The player picks a skill and rolls, and the roll posts to chat.
A row with a multiplier below 1 is a win. It lowers what the shop charges that character and raises what the shop pays them by the inverse. Any other result counts as a loss. The result is saved as that player’s per-player modifier. The shopkeeper answers in character, and the confirm screen shows the result as a badge for the rest of the visit.

Goodwill
Section titled “Goodwill”Each player has a goodwill score with each shop. Haggle results, push-your-luck re-rolls, failed theft, and dialogue tree effects change it. Dialogue tree conditions and the shop’s back room can check it. A high or low score shows as a standing badge on the shop sign.
Set a Theft DC in the Pricing section to put a Steal button on browse items. A failed check costs goodwill and is recorded in the shop’s history. Leave the DC blank to turn stealing off.
Checkout
Section titled “Checkout”Totals display in the system’s currency. Payment is taken across the buyer’s coins, with change counted out where needed. When a player sells, the shop pays from its own coin and cannot pay more than it holds. Merchant Funds controls how much of that coin the sell screen shows.
Set a Tab Limit to let a player who is short put the rest on a tab. The confirm screen shows what they owe and lets them pay it down. Outstanding tabs are listed on the shop’s History tab.
A trade ends in one of four outcomes: success, insufficient funds, out of stock, or cancelled. A Transaction node in the dialogue tree editor can route each outcome to its own choice. The cancelled branch is required, and outcomes without their own branch fall back to it.