Being a mercenary / a supplier. Working for a given trade master from a refugee center

Since refugee centers and NPCs’ beheviours are going to be much better, I think that it may be interesting to add a specific system of interaction with various NPCs. I love Gothic and Gothic 2. There is a great system that allows players to work for a bowman, a blacksmith etc. Players can hunt and sell hides and furs, forge swords etc in order to gain gold. It is a very immersive and beneficial system.
If it comes to Cataclysm, such system would be based on being an apprentice to a few ‘masters’:

  1. Merchant - this master would require scaventing in order to find various items like tools, firearms, ammo, clothes, meele weapons.
  2. Cook - this person needs various drinks, food, cooking tools / utensils etc.
  3. Blacksmith - players would provide him with charcoal, materials that are used in forging (steel, copper etc), and many tools needed for forging.
  4. Doctor - in this case, players should focus on drugs, CBMs, mutagens, and various items that are connected with health.
  5. Mechanic - vehicle parts, fuels, tools for repairing vehicles, parking new vehicles outside a refugee center, etc
  6. Carpenter - new furniture, wood, nails, tools for constructing, etc.
  7. Tailor - clothes, thread, sinews, and other items needed for tailoring
    And so on and so forth…

In exchange for such service, a given merchant would provide players with cards that act as a refugee centers’ currency. Cards would be used in order to gain a specific profit from a specific master. This system would give players a chance to enjoy playing without a constant focus on hunting, scavenging, tailroing, forging, constructing, cooking, repairing vehicles etc. In other words, a given player would focus only on a specific task. For example:
A player which does not like hunting and cooking may focus on working for a merchant. He may fight with monsters, explore various towns / cities, raid labs in order to gain items that he will sell at a refugee center to a merchant. Merchant will give him cards that may be used to buy drinks, food and cooking tools / utensils from the cook.

What is more, a given ‘master’ would provide us with items that are necessary for completing a given ‘mission’. If the player works for the cook, he may request cards from cook that will be exchanged for weapons or ammo that the merchant has.

Such system may be an excellent way to support beginners that learn how to play Cataclysm. Moreover, this would be a beneficial feature for veterans of Cataclysm that want to avoid those elements of gameplay (forging, tailoring etc) that they do not like and that are necessary to pass mid-game etc.

I would love to focus on working for a cook. To be a hunter that does not worry about ammo, clothes, drugs, guns, melee weapons, safe place to sleep, and various tools. I would love to have a possibility to being an apprentice and gain an enormous profit from it


I don’t know about Gothic or Gothic 2, but in actual medieval society, you wouldn’t become an apprentice and make an enormous profit from it.

Families often paid a master to take on their child as an apprentice. During their apprenticeship, which could last between 2 and 8 years, they received no pay. They were provided food and a place to sleep. Sometimes an apprentice would get deluxe accommodations, such as a cot in an attic. Other times they got a straw mat in a barn with the livestock.

After advancing to journeyman status, they still had to do much the same work for their master as they did as an apprentice, just now they could spend their own money to purchase supplies to make their own goods and keep a percentage of the proceeds. Most apprentices and journeymen worked sunrise to sunset for their master every day but Sunday, so they didn’t have much time to produce goods of their own for a cut of the profit.

You can call it an apprentice, a mercenary, a contractor, a supplier etc. It does not matter. The system matters. Imagine that a given player had 100+ characters. He is sick and tired of learning the same stuff (that is time consuming) all over again, for example a ‘mechanics’ skill. Instead of learning mechanics for 101 time, he works for the masters at the refugee center.

He wants to be a hunter. He asks the cook for work. Cook does not trust his skills so that he gives him only 5 cards. Those cards can be exchanged for a makeshift crossbow and 10 wooden bolts. With the aid of the crossbow, the player is able to kill two dogs, and a turky. During the hunt, the player finds a cabin and expensive winter clothes in it.

He returns to the refugee center, gives meat to the cook, feathers to the merchant, sinew and winter clothes to the tailor. For that he receives, let say, 30 cards. 30 cards can be exchanged for a shotgun (that is available) and 15 shells. Now, he is able to hunt for a bear and a moose in order to earn more cards.

The more cards he earns, the better equipment he has. It is a snowball effect. After some time of working for the masters, he earns 500 cards. Now, the player is able to buy a motorcycle that is ‘like new’. Each refugee center would have 1-3 random vehicles for sale. Or, the player can repair his own vehicle at the refugee center if he gives enough cards to the mechanic.
The outcome: the player owns a motorcycle without learning mechanics. Without spending his time and effort on doing the same things again.

That is how I see this. A refugee center is full of people. They have to eat and to drink. They have to warm the building so they need wood. They need clothes, drugs, ammo, weapons. Having various tools are a necessity for them. They are not able to find all the needed tools during raids so that they need forging materials. They need hides and furs to make new clothes. And so on and so forth… This is the reason why I think that an apprentice / mercenary / contractor / supplier system does make sense


I do like this idea but id prefer an implementation where refugee centers become NPC gathering places and their own distinct faction and you get credit with them that could either go for skill training, medical services or barter directly for goods. Ofc with all the risk of getting mugged by npcs or have the refugee center be chock full of pissed off stuff sometimes too.

Might make social skills more useful too

Be the change you desire: The Guide to making changes to CDDA for 1st time contributors has sections on adding new NPC dialogue and missions.


Hey @mlangsdorf, would it require code to give traders a supply and demand feature, where they will pay more or less for certain items at different times. I’m trying to work out how I would go about this and figured i could start with the trader and would prefer this over adding fetch quests for scavenged items.

Traders already pay less for things they have more of and more for things they have fewer of.

I had some vague plans to add code to allow factions and individual merchants to prefer or dislike specific items, but I never implemented it It’s a not too hard task if someone who knows how to code wants to pick it up. I can give vague guidance if anyone is interested.

While I cant promise that its within my abilities I have been studying programming for a little while now and have been struggling to find something easy enough to dive into on my own, I’d like to try to do it though.

Okay, commit b6254500f38bbe0e36d5ae66eb7b84e2601ca254 shows the logic for adding a key/value pair to a faction definitions, and commit a230b3eb0e8cb08601fb5a31805b503af423836c shows the logic for using that key/value pair inside of npctrade.cpp to make NPCs always buy and sell an item at 100% value.

I can’t find a good commit for the logic for adding a new key/value pair to an NPC template, but it’s broadly similar to the logic for adding a key/value pair to a faction, except you make the changes inside of src/npc.cpp.

Basically, you’re looking at 3 step process:

  1. Add a key/value pair to the faction template: the value is a JSON object, and each key in that object being a valuation percentage as an integer and each value being a list of item ids that are bought at that value (see below). Inside the faction code, you probably want to store them as a std::map<itemid, int>.
  2. Do the same to the NPC template.
  3. When pricing items, check if the value map has the itemid, and if so, multiply the item’s value by the int divided by 100.0.

JSON definition:

"special_goods": {
  150: [ "m4", "ar15" ],
  125: [ "ksg", "saiga" ],
  25: [ "mosquito", "sw610" ]

C++ version:

value_map = std::map<itemid, int>( {
    { "ar15", 150 },
    { "ksg", 125 },
    { "m4", 150 },
    { "mosquito", 25 },
    { "saiga", 125 },
    { "sw610", 25 }

So this NPC or NPC faction preferably buy and sells 5.56mm NATO rifles at 50% over normal price, top tier shotguns at 25% over normal, and crappy .22 LR rifles and revolvers at 25% of normal.

Anyway, something like that. Hope that helps, feel free to ping me here or on Discord if you need some more advice.

hat tip: Typo in the second link fixed

the second link is sending me to the same commit as the first link, but I found it anyway :laughing: commit a230b3eb0e8cb08601fb5a31805b503af423836c

1 Like