To ensure an ever-working crafter economy it is important that characters never stop consuming crafted items, even when they've reached the endgame and have obtained the best equipment possible. The only way to achieve this is by removing equipment from the game constantly so that crafters have a stable market to sell their products.
Unfortunately a sudden, unexpected loss of a very valuable piece of equipment will be very frustrating for the player. As an alternative I present a solution which makes the loss of a piece of equipment foreseeable and also makes it the choice of the player to finally part with a loved piece of equipment.
Every equipable item which is supposed to be seriously used in combat (novelty and souvenir items without useful combat stats are exempt) has a maximum durability and current durability stat. When the item is used in combat (to reduce or inflict damage) its current durability is reduced. When the current durability reaches zero, it can not be used anymore until repaired.
Item repair is a skill which can be learned by players like every other skill (alternatively we could use the skill which was used to create the item instead). To repair an item a small amount of one of the substances used during its creation is consumed. When an item is repaired the maximum durability is decreased. The amount of degradation depends on the skill of the crafter, the original craft difficulty of the item, how damaged the item is and the mood of the random number god. A highly skilled crafter can minimize the loss in maximum durability, but there is no way to avoid it completely. After the maximum durability is decreased the current durability is restored to the (new) maximum durability.
An item needn't be broken to be repaired. It is possible to repair an item preventively before it breaks. In this case the loss of maximum durability is reduced by the percent of remaining durability (when the item with 80% current durability is repaired, the maximum durability will only be decreased by 20% of the amount it would have been decreased would the item be completely broken). Material usage is not affected, however.
While players can repair their favorite equipment as often as they want, repairs will be necessary more and more frequent the longer an item is owned. This will lead to a point where the player will give the item up eventually and obtain a fresh one, but the moment where this happens is the decision of the player and not forced on him.
This system will not only ensure the long-term stability of the equipment-producing economy but will also create a (indirectly competing) economy of repairers which will be just as stable.
Would a player have to give an item to another character for repair we would soon have waves of complaints about scammers who don't return items after promising to repair them. So it should be possible to repair an item which is owned by another player. This will of course require the consent of the owning player, because an unskilled repairer can cause severe property damage. On the other hand people could refuse to pay a repairer after he repaired the item(s). To avoid this the normal trade system should be extended to support the following:
- one of the player initiates a trade as usual
- the owner offers the item in the trade window
- the repairer right-clicks on the item and selects "repair item" from the context menu
- the owner receives a confirmation "$REPAIRER (repair skill level X) offers to repair your $ITEM (difficulty X) for you. Do you accept?"
- the old trade window is closed and a new one is opened. The side of the crafter is locked and shows the item to be repaired. The owner can now put the compensation for the services of the repairer into the trade window.
- The owner locks his offer and the repairer accepts it
- when the deal is completed the item is repaired by the repairer. The necessary material can be taken from the crafters inventory or from the items transfered to him through the trade window (that way it is possible for the owner to provide the material)
repair_throw = random(0..repair_skill) / random(0..difficulty) if repair_throw > 0.9 repair_throw = 0.9 new_max_durability = max_durability - (max_durability - current_durability) / repair_throw