Mthec

[BETA] Mthec's NPCs - Crafter (new), Buyer and DeliveryContracts

Recommended Posts

Buyer Merchant

What does it do?

Introduces a new type of NPC, based on the merchant, that will buy items from players instead of selling them.

 

How to use

Simply head to your nearest Trader and buy the new "personal buyer contract" and place it as you would a merchant.  The name will have a "Buyer_" prefix to distinguish from merchants.

Then right click on the contract and choose "Manage traders".  This will bring up a menu like the merchants but with "Manage Prices" and "Add Item" buttons.

Go through the add item menu (see the screenshots below) to add an item to the buyer's Price List and when a player trades all the items on the list will be shown, along with prices and minimum ql requirements.

Trade some money to your buyer to get them started.  You can remove it any time you want before it's spent.

 

Features

Spoiler

 

Add items to the buyer's list and specify material, minimum ql and price of items.

Specify "Any" material, for example to accept any type of log.

Will accept low weight items and charge appropriately.

Multiple ql price bands.

Want to pay 1c for up to 20ql but 2c for 50ql?  You can.  Gets price of the highest ql price band so if you want to pay more for low ql items, you can do that as well.

Donations.

Set the price to 0 for people to donate unwanted items.

Only accepts items on the list so no worries about filling up with tonnes of wood scrap.  Unless that's what you want, of course.

Minimum Purchase option

Need more than a few items for it to be worth your while?  If you only want to buy bricks if there are more than 20, set the minimum purchase option.  Any extras will also be bought at the same price.

Merchant fees.

The buyer contract costs the same amount as the normal merchant contract.

The buyer charges 10% on all transactions, which goes to the King as normal.

Logging

The mod provides a couple of lines output in the server logs, allowing you to keep an eye on where the money is going.

Uses all item templates on the server.

Apart from items marked "no trade", uniques, etc.

So it should be compatible with any modded items.

The mod is designed to be open to however people want to run their server, this does mean that you can add items and material combinations that cannot be made normally by players.  There is a filter for both lists however.

Price List is an item.

Part of my plan with this mod was to not add any extra database entries.

The price list is a paper with inscription stored on the merchant.

If the buyer is auto-dismissed or killed you can trade the list (found delivered or on corpse, respectively) to your new buyer and it will overwrite their list.

 

 

 

Screenshots

Spoiler

 menu_1.jpg?raw=1

menu_2.jpg?raw=1menu_3.jpg?raw=1

 

Beta

Everything should now be working as it should.  However I haven't tested it on a populated server, and with all the item possibilities something might come up.  I also wanted some feedback on how it works. Menu improvements, etc.

 

Requirements

ago's Mod Launcher

 

Instructions

 

Settings

Spoiler

update_traders

In order for already placed traders to stock the new buyer contracts the mod needs to add the item to their inventories.  There should be no perceptible performance impact, however you can change or just remove this entry in the property file to stop the search after the first run.  New traders will be stocked automatically.

contracts_on_traders

If false then new traders will not have buyer contracts added to them, and if update_traders is set to true then any contracts already on traders will be removed.  Default is true .

free_money

Buyers will create unlimited money on demand, instead of needing it in their inventory before hand.

destroy_bought_items

Destroys items on a successful trade.  Useful for when GMs control buyers and don't want to keep getting rid of items.

max_items

Sets the maximum number of items a buyer can hold. Technically it can go up to 2,147,483,647, but I wouldn't recommend it.  Coins are not counted in the limit, but the buyer's Price List item is.

apply_max_to_merchants

If true merchants will use the above value as well.

turn_to_player_max_power

Normally GMs do not trigger trader NPCs to turn when trading.  This setting allows you to raise or lower that.  Default 1.  Note, Traders and Merchants will mostly obey this setting, but will always turn to face players of power 1 or lower.

 

 

Crafter

What does it do?

A new type of NPC who accepts orders from players for items to be improved in return for money.

 

How to use

Visit a Crafter with an item you want to have improved.  "Trade" the item to them and select what ql level you want.  Also, available is "Mail when done".  Add the requested amount of money and finalise the trade.  Type /crafters into chat to get messages from every Crafter you have current orders with, then pay them a visit when your item is ready to collect.

 

To place your own buy a "crafter contract" from a trader and hire a Crafter just like other NPCs.  Choose which skills the Crafter will use (add individual skills to a whole set of crafters or just add them all for one super crafter).  Collect the money that comes pouring in (assuming the server owners haven't set money to tax and upkeep, or just tax).

 

Features

Spoiler

Uses the same contract options as BuyerMerchant so they can be bought by players or restricted to GM placement.

 

Placing an order

To place an order just "Trade" with a Crafter.  As well as items that are ready to collect the top left window will contain options for you to use.  "Improve to XXql" selects how high you want the item(s) improved, there is a separate entry for each skill the Crafter can use so you can also select different qls for different item types.  "Mail when done" will add an extra fee and when the item is done it will be sent to you in the mail, otherwise it will need to be collected from the Crafter in person.  "Donate Items" allows you to donate items to the Crafter that they will then use to increase their skill.  Want to have a high ql sword at some point but your local Crafter is still new?  Donate a bunch of low ql weaponsmithing items now and reap the rewards later.

 

Skills

Crafter skill set is configurable, choose between specific skills or skill groups (all metal, all wood and all armour).

Crafters gain skills as they work and can accept items as a donation to increase their skill.

Crafter learning can be disabled or capped.  For example, if you wish for Crafters to only improve to a QL limit, leaving higher quality to player crafting.

Initial Crafter skill level can also be set.

A per Crafter skill cap (under the server cap) can also be set by the owner when hiring.

 

Equipment

Assign a forge to your Crafter if they need to improve metal items.  This locks the forge from other players to prevent any kind of mix-up.  The Crafter will walk a small distance to reach it.

Just activate the contract and right-click on a forge and choose assign.  Once assigned you can also unassign the same way.

The Crafter will create their own tools and resources.  I may add it so that players and/or the owner have to keep the Crafter in stock, but if so it will be an option.

Offers "Mail when done" option (with configurable price).

 

Money

There are three server-wide options for what Crafters do with their earnings.

for_owner (Default) - 10% to tax, the rest for the owner to collect (same as merchants).

all_tax - All money goes to the King's coffers.  Particularly useful for GM controlled Crafters.

tax_and_upkeep - A percentage of the money goes into the owners deed upkeep, percentage is configurable (same as traders).  A good option for if you don't want players to get money directly, but to have some benefit of hosting a Crafter.

Crafters will hold onto money until the job is completed, if the Crafter is dismissed then the money will be refunded to the customers.

 

Pricing

Prices work on a scale, based on some research in the Trade forums.  Roughly speaking 70ql=10c, 80ql=30c, 90ql=90c, 91ql=1s.

There is a base_price modifier (default 1.0), plus skill specific modifiers (default 1.0, except "dragon armour" which is 10.0), if you wish to increase or reduce the prices.

Each Crafter has a "Price Modifier" option that can be set by the owner at any time, like merchants.

 

Other info

Crafters use the base human model that official NPCs do, so GMs can provide them with items to wear. (e.g. kingdom colours, coloured tunics, etc.)

Currently Crafters ignore stamina, due to the way creature stamina works vs. players.

Typing /crafters into chat will open up a "Crafters" tab where any Crafters that are working on items for you will let you know how many are being worked on and how many are ready for collection.  Owners can see total Crafter jobs using the contract.

Output can be adjusted to help with testing and general logging.  The default is "save", in which case all messages sent from the server to the Crafter, plus some custom messages indicating what the Crafter is currently doing, will be saved to a file in the server directory.  "print", as well as saving, logs that output to normal server output.  Finally, set "none" to ignore all Crafter work logging.  Trading logs, like merchants and traders, are unaffected. 

 

Requirements

ago's Mod Launcher

 

Instructions

 

Screenshots

Spoiler

hire.jpg?raw=1management.jpg?raw=1trade.jpg?raw=1assign.jpg?raw=1

 

Settings

Spoiler

update_traders

In order for already placed traders to stock the new crafter contracts the mod needs to add the item to their inventories.  There should be no perceptible performance impact, however you can change or just remove this entry in the property file to stop the search after the first run.  New traders will be stocked automatically.

contracts_on_traders

If false then new traders will not have crafter contracts added to them, and if update_traders is set to true then any contracts already on traders will be removed.  Default is true .

base_price

Scale all prices by an amount (e.g. 0.5 would be half price, 2.0 would be double).  Default is 1.0.

mail_price

Price of "Mail when done" option in irons.  Default  is 100 (1c).

blacksmithing, weaponsmithing, jewelrysmithing ,chainsmithing, platesmithing, carpentry, fine_carpentry, fletching, bowyery, leatheworking, clothtailoring, stonecutting, dragon_armour

Price scales for individual skills.  Use these to scale to your economy.  Default is 1.0, except for dragon_armour which is 10.0.

payment_option

for_owner

10% of all earnings are paid in tax, the rest is collected from the Crafter by the owner (merchant behaviour).  Default.

tax_and_upkeep

A percentage of all earnings goes to the owners village upkeep (configurable below), the rest is paid in tax (trader behaviour). 

all_tax

All earning go to the King's coffers.

upkeep_percentage

The percentage of a Crafters earnings that go into upkeep.  Only works with tax_and_upkeep.

contract_price_in_irons

As you'd expect, the price of the contract as sold by traders.  Default is 10000 (10s).

can_learn

If false then Crafter skills will not increase.  Useful for when GMs control Crafters.  Default is true.

starting_skill

The skill level newly placed Crafters have in their specified skills.  Default is 20.

max_skill

The maximum skill level Crafters can reach.  Overrides per Crafter skill cap if changed.  Default is 100.

output

Specifies what kind of output is given for Crafter messages and work tasks, mainly for solving problems and finding bugs. 

save (Default)

One log file per Crafter will be placed in the server launcher directory.

print

Same as save, but also prints it to standard server output.

none or just removed

No logging will occur.

use_owner_price_modifier

Specify whether individual crafters can use a price modifier.  Default is true.

minimum_price_modifier

The minimum price modifier value for individual crafters.  Default is practically zero.

 

Delivery Contracts

What does it do?

A new type of contract that facilitates placing heavy items on a merchant.  Have the spirits deliver piles of bricks, forges, ovens, and many other items.  The bearer can take it all the way across the server without worrying about the weight, then have it delivered to their village token or a nearby waystone.

 

Want to be a carpenter and sell carts on a merchant?  Now you can.  Want to sell "kits" such as starter packs or sets of tools (e.g. smithing set/carpenter set)?  Now you can.

 

Note - You cannot highlight a range of items and only pack those.  If you pack one item in a group it packs all the others of that type in the container/inventory.

 

Requirements

ago's Mod Launcher

 

Instructions

 

Settings

Spoiler

update_traders

In order for already placed traders to stock the delivery contracts the mod needs to add the item to their inventories.  There should be no perceptible performance impact, however you can change or just remove this entry in the property file to stop the search after the first run.  New traders will be stocked automatically.

contracts_on_traders

If false then new traders will not have delivery contracts added to them, and if update_traders is set to true then any contracts already on traders will be removed.  Default is true .

contract_price_in_irons

Set the price of the delivery contracts as sold by traders.

max_items

Higher numbers may cause performance issues when trading with Buyers with price and minimum purchase calculations.  Default 1000.  Higher should be okay, just something to be aware of.

no_decay_in_contract

If true items inside a contract will not be subject to decay.

no_decay_food

If true food inside a contract will not be subject to decay. Overridden by no_decay_in_contract.

 

Server commands:

#dcCleanup

Checks for packed items that are no longer in contracts (bugged) and removes them across the whole server.  Limited to once per minute because it could cause lag with a lot of items on the server.

 

Edited by Mthec
New Crafter mod options

Share this post


Link to post
Share on other sites
On 12/12/2018 at 12:26 PM, Mthec said:

What does it do?

Introduces a new type of merchant that will buy items from players instead of selling them.

This looks great!  I'm unclear about a couple of things, though.

Is it a merchant or a trader?  You used both words, so I'm confused which it is.

Is it meant just to change traders so they will buy more types of items? Or is it a change to merchants, which currently only sell items, to make them also buy?

Is it possible to configure different merchants to accept different items, for example, one merchant who buys only bricks, another who buys only pelts, and so on?

Share this post


Link to post
Share on other sites
5 minutes ago, Batta said:

This looks great!  I'm unclear about a couple of things, though.

Is it a merchant or a trader?  You used both words, so I'm confused which it is.

Is it meant just to change traders so they will buy more types of items? Or is it a change to merchants, which currently only sell items, to make them also buy?

Is it possible to configure different merchants to accept different items, for example, one merchant who buys only bricks, another who buys only pelts, and so on?

Sorry, guess I need to go back and clear some things up.

 

It is neither a merchant or a trader, but it is based on the merchant.

So for your second question, it creates a new npc that buys instead of sells.  (It uses the same "Salesman" creature the others do.)

Absolutely, you summon a buyer just like a merchant, using a new type of contract.  Each buyer has their own Price List and you can add whatever items you like to it.

Share this post


Link to post
Share on other sites
1 minute ago, Mthec said:

It is neither a merchant or a trader, but it is based on the merchant.

I wonder if it would be useful to change its name to something else?  Like "buyer"?

 

Share this post


Link to post
Share on other sites
5 minutes ago, Batta said:

I wonder if it would be useful to change its name to something else?  Like "buyer"?

 

It does.  I used the same format as the other npcs, so "Bob" would be named "Buyer_Bob".  Unless you mean the thread title, in which case I should probably clear that up a little too.

Share this post


Link to post
Share on other sites
2 minutes ago, Mthec said:

It does.  I used the same format as the other npcs, so "Bob" would be named "Buyer_Bob".  Unless you mean the thread title, in which case I should probably clear that up a little too.

Sounds good.  We're going to try it out.  🙂

 

Share this post


Link to post
Share on other sites

@MthecI'm running into an error.

 

Quote

[16:25:03] Buyer_Roadie says, 'I have no money.'

 

I gather we have to trade money to it first.  Just letting you know my experience. Should be easy enough to correct it on my end.

 

EDIT:  I put 10 silver on my buyer, then tried to sell her 10 items that I had set to be worth 15 iron each.  But my buyer won't do anything with them, won't bring them down into the lower box, nor Accept them.  Is there some trick I'm not doing right?  Same problem with a second item that I had configured her to accept.

 

A23DDCC8E0ECFDA0FF96C2F094B87A15CF871860

Edited by Batta

Share this post


Link to post
Share on other sites
14 hours ago, Batta said:

@MthecI'm running into an error.

 

 

I gather we have to trade money to it first.  Just letting you know my experience. Should be easy enough to correct it on my end.

 

EDIT:  I put 10 silver on my buyer, then tried to sell her 10 items that I had set to be worth 15 iron each.  But my buyer won't do anything with them, won't bring them down into the lower box, nor Accept them.  Is there some trick I'm not doing right?  Same problem with a second item that I had configured her to accept.

Yes, sorry I should have mentioned you have to trade them money to get them started.

 

As for your second issue, I don't see anything immediately wrong.  Are you trading with a buyer you own?  The top message in your screenshot suggests so, but you may have been switching characters.  If so the items won't show up on the list as it would have made things confusing when it came time to take any bought items off the buyer.  If you use another player it should work fine.

Share this post


Link to post
Share on other sites
12 hours ago, Mthec said:

Yes, sorry I should have mentioned you have to trade them money to get them started.

 

As for your second issue, I don't see anything immediately wrong.  Are you trading with a buyer you own?  The top message in your screenshot suggests so, but you may have been switching characters.  If so the items won't show up on the list as it would have made things confusing when it came time to take any bought items off the buyer.  If you use another player it should work fine.

Yes! That was it.  I was trying to sell to my own buyer, lol. Works great when someone else uses it.  Thanks!

Share this post


Link to post
Share on other sites

Hello @Mthec

 

Another awesome mod 😃

 

I have just 3 little questions:

Is it possible that i NOT restock original traders with the new contract, so i can just use it on gm deeds? answered in the properties

can you expand it so that if one player sells 200 stonebricks that another one can buy it?

Can you make a second mod based on this, for a new trader that gm´s can fill with own item templates and they restock automaticaly? (or merge that option in)

 

add: it would be awesome if you can add the minimum amount of items a player can sell.

i have an all time event where players can sell like 30 hammer 30 hatchet and so on...but for now i have to take the items by myself and add mojney to the players

 

That all ;)

Thank you

Eject

 

ps: just a suggestion that the buyer creates money from the air

Edited by Eject

Share this post


Link to post
Share on other sites
6 minutes ago, Eject said:

ps: just a suggestion that the buyer creates money from the air

If you add this, please make it configurable so I can turn it off.  I don't want people to just "buy" without any money.

Share this post


Link to post
Share on other sites
7 minutes ago, Batta said:

If you add this, please make it configurable so I can turn it off.  I don't want people to just "buy" without any money.

i mean here the money for the npc ;) not for players

Share this post


Link to post
Share on other sites
18 minutes ago, Eject said:

i mean here the money for the npc ;) not for players

Yes, I understood.  I definitely don't want the NPC to have money out of thin air, or whoever has the contract will get goods for nothing.

Share this post


Link to post
Share on other sites

Ah i understand, sorry :D

So this would than just be for my situation, because i would need the npc at the gm deeds to buy stuff at events.

Share this post


Link to post
Share on other sites
1 minute ago, Eject said:

Ah i understand, sorry :D

So this would than just be for my situation, because i would need the npc at the gm deeds to buy stuff at events.

I guess as a GM, you could just create a few gold coins with your wand and put them on your Buyer merchant?  Then he'll have lots of money to buy things.  🙂

Share this post


Link to post
Share on other sites

i have an all time event where players can sell like 30 hammer 30 hatchet and so on...but for now i have to take the items by myself and add money to the players

a option to set the minimum amount of needed items would also be cool.

Edited by Eject

Share this post


Link to post
Share on other sites
12 hours ago, Batta said:

Yes! That was it.  I was trying to sell to my own buyer, lol. Works great when someone else uses it.  Thanks!

Great.  Glad it's working for you.

9 hours ago, Batta said:

If you add this, please make it configurable so I can turn it off.  I don't want people to just "buy" without any money.

Absolutely.  The aim with this mod was to create a version of the merchant that still follows all the normal rules.  So any additions will be configurable in the settings.

9 hours ago, Eject said:

Hello @Mthec

 

Another awesome mod 😃

 

I have just 3 little questions:

Is it possible that i NOT restock original traders with the new contract, so i can just use it on gm deeds? answered in the properties

can you expand it so that if one player sells 200 stonebricks that another one can buy it?

Can you make a second mod based on this, for a new trader that gm´s can fill with own item templates and they restock automaticaly? (or merge that option in)

 

add: it would be awesome if you can add the minimum amount of items a player can sell.

i have an all time event where players can sell like 30 hammer 30 hatchet and so on...but for now i have to take the items by myself and add mojney to the players

 

That all ;)

Thank you

Eject

 

ps: just a suggestion that the buyer creates money from the air

Should be feasible.  Not sure how long it will take with the holidays coming up, but can certainly work on it.

 

For selling back I could re-add the price modifier, so that owners can set the markup from the normal price?  (i.e. bricks are 10i on the buyer, price modifier of 1.5 means they sell at 15i)  I could always create a second list, but didn't know if that might be too complicated when it comes to lots of items.  Although it would have the benefit of only allowing certain items to be resold and others bought but kept on the buyer.

 

For the second a kind of empty trader?  Sounds okay.  I'm guessing by item templates you mean that it should still use the menu system of the buyer, so you don't have to add any real items to them?

 

Creating money is pretty easy.  Might just have to rework some things.

 

Thanks for the feedback.

Share this post


Link to post
Share on other sites
14 hours ago, Mthec said:

For the second a kind of empty trader?  Sounds okay.  I'm guessing by item templates you mean that it should still use the menu system of the buyer, so you don't have to add any real items to them?

Exactly this is what i mean 😃

--------------------------------------------------------------------------------------------

And maybe for the buyer a separate field where you can type in the minimum amount that players have to sold per item. (so 1 as standard, this is just for an event buyer where players have to bring a specific amount of an item)

 

That would be all, forget the other two questions ^^

Edited by Eject

Share this post


Link to post
Share on other sites

Mini update

Download

 

Added two new settings:

free_money

Buyers will create unlimited money on demand, instead of needing it before hand.

destroy_bought_items

Destroys items on a successful trade.

 

These two weren't difficult to add so I pushed them through first.  They are set to false by default but can be enabled separately or together.

e.g. Free money but leave items to collect later, not free money but destroy to limit the money paid out but when you don't want to have to keep collecting the items.

Share this post


Link to post
Share on other sites

What is the limit on how many items these Buyer merchants can hold?  Is it possible to make it really high, for when collecting mats?

 

Share this post


Link to post
Share on other sites
1 minute ago, Batta said:

What is the limit on how many items these Buyer merchants can hold?  Is it possible to make it really high, for when collecting mats?

 

Currently it's set at the default of 50.  I (hopefully) made it compatible with asimus' Increase Merchant Max Items mod.  But if you would like I could add it to this mod too?

Share this post


Link to post
Share on other sites
18 minutes ago, Mthec said:

Currently it's set at the default of 50.  I (hopefully) made it compatible with asimus' Increase Merchant Max Items mod.  But if you would like I could add it to this mod too?

I would love that, if you don't mind.

Can it be made higher than 100?  Like maybe 500?

 

EDIT:  @MthecI should mention that the regular Merchant Max Items mod causes my server to crash, so hopefully that won't be an issue with adding it to this mod.

Edited by Batta

Share this post


Link to post
Share on other sites

Mini Update

Download

 

Added two new settings:

max_items
Sets the maximum number of items a buyer can hold. Technically it can go up to 2,147,483,647, but I wouldn't recommend it.

 

apply_max_to_merchants
If true merchants will use the above value as well.  If removed or changed merchants will keep the default 50.

 

Note:

Coins are not counted in the limit, but the Price List item buyers use is.  e.g. Setting max_items to 100 will set Buyers to 101 and Merchants to 100.

On 12/19/2018 at 9:22 PM, Batta said:

I would love that, if you don't mind.

Can it be made higher than 100?  Like maybe 500?

 

EDIT:  @MthecI should mention that the regular Merchant Max Items mod causes my server to crash, so hopefully that won't be an issue with adding it to this mod.

Not a problem.  Would have had it finished last night but ran out of time because of a pesky bug.

 

As you can see above it can go really high (maximum Java Integer value).  However whilst the mod will handle pretty much any value, there may be other parts of the Wurm code that won't.  I gave it a quick test and managed to give a merchant 1000 items, he already had about 50, and it worked.  Used a GM character to do it all at once and it caused a little lag spike, but since a player won't be able to hold that many items to transfer in one go it shouldn't be a problem.   Just something to be aware of.

Edited by Mthec

Share this post


Link to post
Share on other sites
On 12/17/2018 at 6:40 AM, Eject said:

a separate field where you can type in the minimum amount that players have to sold per item. (so 1 as standard,) this is just for an event buyer where players have to bring a specific amount of an item

Thanks for your updates @Mthec😃 can you add this one field at your next update?

 

Eject

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now