I'm currently coding a heavily text-based RPG game which requires you to do deals with characters or suppliers in the game, sometimes the deals are good/bad.

Currently the way I'm doing it is that, given your current XP level, you get a list of suppliers with the offers/prices they give are fixed.

Its okay, but a bit basic -- plus there's no sense of feeling where you're cutting a good deal or not.

I've been thinking of other ways to handle negotiation, the only game I'm aware of that has a deal system is the old Amiga and DS game, Theme Park as seen in this movie clip on Youtube:

Theme Park DS, http://www.youtube.com/watch?v=vS8i9E8mUmg

Other than this, what would be a good way to display or design a negotiation deal which gives the user a sense of a good/bad deal.



1 Answer 1


One way of doing this is have your bartering ability tied to a character attribute.

Then, you could decide on the transaction factor against the canonical price of the item.

For example, When buying items, the canonical price is divided by the transaction factor, and when selling item, it is multiplied.

One way to work out the transaction would be the ratio of the Merchant's bartering skills against the players.

For example:

Gwendoline has 'bartering' @ lvl 60
Merchant has 'bartering' @ lvl 30
'Sword of unholy truth' has canonical value 100 gold pieces
transaction factor is 60/30 = 2.0 
Gwendoline can buy 'Sword of unholy truth' for 50 gold pieces.
Gwendoline can sell 'Sword of unholy truth' for 200 gold pieces.

Now, with the relative skills reversed:

Tristan has 'bartering' @ lvl 10
Merchant has 'bartering' @ lvl 50
'Chalice of Good Times' has canonical value 100 gold pieces
transaction factor is 10/50 = 0.2 
Tristan can buy 'Sword of unholy truth' for 500 gold pieces.
Tristan can sell 'Sword of unholy truth' for 20 gold pieces.

Morrowing, Oblivion and Skyrim have a similar system, although they add several twists:

  • Letting the player choose the transaction factor
  • Have the merchant accept or refuse the player offer based on skills, luck and how much the merchant likes the player (the merchant's disposition towards the player)
  • Every refused offer reduces the Merchant's disposition towards the player, making bartering harder.

In order to show how good/bad a deal is, you can simply display the canonical price, so that the player knows how much they've been had.

You probably don't want the players to do any math, so it would probably be best to use a traffic light system, that shows red when it's a bad deal, amber when the deal is OK, and green when you're making lots of money.

Some other twists you can have:

  • Have Merchants that have better deals for some merchandise than others. This could be implemented by having the merchant skill be item-type specific. For example, it should be easy to swindle a potion merchant into buying a sword at more than fair value, but much harder to pull the same deal with an armourer.
  • Don't show the players their bartering skill score, but instead increase it slightly with every transaction they make and have the score reflected in the dialogue of the merchant:
    • You're eating me out of house and home! (high player skill)
    • You drive a hard bargain!
    • I think I gave you a fair price, don't you?
    • Please come again soon
    • It was such a pleasure doing business with you (low player skill)
  • \$\begingroup\$ That's really good. I never thought of that! I have accepted and up-voted your answer. It gives me some ideas to at least start with \$\endgroup\$
    – zardon
    Jul 22, 2012 at 21:42
  • \$\begingroup\$ The item being sold is quite simple. I was thinking the supplier could offer a qty x->y and you try to get a high qty but at a low price \$\endgroup\$
    – zardon
    Jul 22, 2012 at 21:49
  • \$\begingroup\$ Cheers @Zardon! Having quantities malleable probably makes more sense when buying bulk items, although of course the principle can simply be scaled up by using price per unit instead of transaction price. \$\endgroup\$
    – brice
    Jul 23, 2012 at 23:06

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .