Being productive, contributing to community!

I’m currently working on a mercantile adventure dierolling application for GMs.

Right now I’ve got it where you can pick market class and it’ll roll an appropriate number of merchants, loads for each merchant, and a type of goods for each merchant.

If anyone’s interested, I can throw up that simple version, but I’m anticipating having it finished within a couple weeks. The finished version will be able to incorporate demand modifiers to roll prices. (Including the ability to save a market’s values to be used later, and it’ll appropriately do the whole 10% cumulative chance of prices changing, so you can be like “My players were last here in June, so I’ll click the ‘progress one month’ thing six times and see which prices have changed.”

Not exactly rocket science, and nobody look at my code because it’s hideous, but it should be a useful little tool.

I suspect I’ll play with it a bit when you finally publish it, though so far my players seem uninterested in mercantile ventures.

Some of my guys have expressed an interest in this and since one of them is playing a Venturer…

Awesome-sauce, Susan!

Should the market toll and customs tax be rolled monthly as well, or are they permanent once generated for a market?

Also, it says that after week 3, you can attempt to find new merchants at a -2 per week that you’ve already been in the market; I feel like this could use a house rule because it suggests that merchants are quantum, and appear less and less frequently the longer the players observe the market, and the flow won’t replenish unless the players leave, as though the party is singlehandedly stifling trade. (Which, to be fair, is in character for most PC parties.)

“Should the market toll and customs tax be rolled monthly as well, or are they permanent once generated for a market?”
It’s really not clear in the rules. My personal opinion would be to give it the same 10% cumulative chance of changing as prices (actually, what I do is give it a 10% cumulative chance of changing; when it changes, I roll the 2d10 again and adjust 1% in the direction of the roll, but that’s House Rule territory).

“Also, it says that after week 3, you can attempt to find new merchants at a -2 per week that you’ve already been in the market; I feel like this could use a house rule because it suggests that merchants are quantum, and appear less and less frequently the longer the players observe the market, and the flow won’t replenish unless the players leave, as though the party is singlehandedly stifling trade. (Which, to be fair, is in character for most PC parties.)”
I…actually don’t have a problem with this. It suggests that everybody knows what goods the PCs have, and there isn’t a lot of turnover in the urban merchants; any “new” merchants are likely to be other travelers, and there’s only so many of those, too. After a certain amount of time, they have old goods, and other people are bringing in newer, more current versions of the same thing (because really, who wants six-month-old salt beef?). Once those diminishing returns hit, it’s time to move on to a new market.

http://www.mediafire.com/download/75skykwhdpg8jd1/Mercantile.zip

Using it should be pretty self explanatory- Use the ‘input new demands’ to set up demands and name your city, then use “Roll Fresh Prices” to generate all new prices, and from then on use “Progress one month” to simulate passage of time.

Progress one month button assumes adventurers never want to stay in the city to find more merchants, and works much like rolling an entirely fresh market, except that the prices of goods don’t change as often.

The save/load function works off the name of the town, and is incredibly primitive but should work. Just make sure to spell it exactly right.

JUDGEMENT CALLS, RULES INTERPRETATIONS:

I have two options for bargaining- “Alexian.” and “Demonic.” (My current GM is on here with username Demon’s Eye, so I thought I might as well incorporate his houserule, since he’ll use it more than anyone)

Alexian bargaining gives all merchants 5-market class ranks in bargaining.

Demonic bargaining gives all merchants 1d3 ranks in bargaining, +1 in class 1-2 markets, and -1 in class 5-6 markets, and also rolls 3d6 to give them a random charisma modifier.

In either case, once it’s figured out their modifier, it rolls 2d6+mod and lets you know that that’s what your adventurer has to beat if they have bargaining and want to fight for the 10%.

I added a checkbox for venturers’ mercantile networks. This checkbox increases the market class only in positive ways- increasing the number of merchants, passengers, loads, etc. without increasing the market toll or the merchant’s bargaining modifier, or the +10% price hike for larger cities.

This version still has the flaw that sometimes instead of displaying a price as an integer, it’ll show up as having an absurd number of zeroes. Like, grain costing 11.00000000000000000000000000000000000 gp per load. Not sure what that’s about. Otherwise, everything seems fully functional.

The absurd zeros usually comes up as a result of improperly converting between double and int (or similar types). Check your types when doing math and make sure everything is properly converted to the type it should be before mathing with them.

If you did all this properly, then it’s a more complicated error than I can debug in two minutes without seeing the code :stuck_out_tongue:

Yeah, that looks like a floating-point math issue. My preferred way of dealing with that is to use printf/sprintf to render the output with the correct number of decimal places (which may be zero), since I mostly work in weakly-typed languages. If you’re using a strongly-typed language, you might be able to avoid it by being careful to only use integer math… but I’d probably still use sprintf anyhow.

Just noticed an obvious flaw: It needs a button to automatically raise/lower all the prices by 10% for when you win or lose bargain-offs. It doesn’t do much good for it to automatically calculate the current market price if nobody actually transacts at that price.