So far, the corrupted and bounty hunter systems are of great interest for everybody but for now the outcomes seem unappealing and overly punitive.
Hopefully this idea is not a big scope creep demon, since most of the work is done by the database with minimal UI work.
I say everything that is already planned by Intrepid should go on, but tweak the outcomes in this direction:
- corrupted can trade and store
- trading stolen goods with someone who is corrupted will turn you into corrupted too in a lesser degree
- you can only stack items if they have the same owner ID and thief ID (null or a player ID)
- stolen items automatically have a timer (days based, not hours and minutes) called search warrant
- bounty hunter approaches places and people, and recover stolen goods
- whoever is holding the goods (in inventory or storages) and the goods are found then a fine will be imposed, gold goes to the bounty hunter's node and a comission to the bounty hunter
So the goods are disputed by the: original owner, thief, current holder, and bounty hunter.
Yes, there is a new thing that is the search warrant timer and it's totally run in the game's database, if the goods are not found before the warrant expires then the items will be automatically laundered and whoever is holding the items will become the new legitimate owner.
Valid searches are determined by the owner ID and the corrupted kills, and to who gains the search right. For example, if a bounty hunter accepts ten jobs from the city's bulletin board in the morning, he will have ten valid searches, even if he cannot find any corrupted players in time. However, if the bounty hunter kills multiple corrupted players, he will gain all search rights based on all of those corrupted player kills, even if the original owners placed no jobs on the bulletin board. If a corrupted player has killed multiple people and stashed their goods somewhere, a bounty hunter can kill that corrupted player once and gain search rights for multiple searches.
The stolen goods can be retrieved by approaching location or people, then with one click all valid searches are run. Which means that if they have no knowledge of victims or haven't killed any corrupted, then they have no valid searches and cannot retrieve anything since they have no reasonable grounds.
When a bounty hunter has rights to multiple valid searches, running a search should trigger all valid searches based on owner ID and thief ID. This means that if a bounty hunter approaches a random uncorrupted person on the street and conducts a search, they could potentially jackpot and recover many stolen goods and receive many commissions from all those valid searches in one go.
Fines will be imposed, and items will be automatically sent to the owners/bounty hunter, no item should jump from the holder to the bounty hunter's inventory directly. If the original owner is also a bounty hunter and he recovers the goods then all goods will be sent to himself, if another bounty hunter finds the goods then he will have half of it and the other half goes back to the original owner.
Real case scenario:
Assuming Abby stole iron from both Barry and Clyde, there would be two rows in the database, with Abby's ID as the thief for both rows. If Abby traded those items to Daphne, the thief ID for both rows will be kept as Abby. Daphne, will hold the items for a period of 10 days, after which both columns of both rows will be updated with Daphne's ID, this update is equivalent to laundering, now the owner ID is Daphne and thief ID is reset.
If the goods are found before the holder can launder them, the holder will have to pay a fine.
You can still craft goods in your freehold using the stolen materials, but you can't craft using stolen materials in the node using the public stations.
Thieves can launder items for themselves.
The search timer must be updated during downtime and not in real-time to avoid excessive CPU usage. Additionally, the thief ID will be reset if the node or freehold is destroyed. Restacking more stolen goods from the same owner and thief should set the timer to the biggest value.
There is no laundry timer, there is just the search warrant timer that runs until it reaches zero, at which point the database will run the scheduled laundry job during downtime and change the ownership for those goods.
"Yes, mister Officer, these items are mine for a long time, I mean they are mine since always! (cough)"