Player Trading
Player trading shipped with protocol v30. It’s a direct player-to-player exchange of items and gold, a completely separate system from haggling with an LLM merchant (see Shops & economy).
Starting a trade
Section titled “Starting a trade”In chat:
/trade <name>- The target gets an invite toast, using the same consent flow as
/party— a 30 second TTL, up to 5 pending requests at once, and a declined request stays around until its TTL expires. Anyone on your/blocklist has their trade requests refused automatically. - Proximity isn’t just an entry condition — it’s a standing one. Moving out of range during a trade cancels the whole session. This keeps trading a visible, physical act and makes spamming invites from a distance pointless.
- Each player can only have one trade session open at a time.
Consignment stalls
Section titled “Consignment stalls”Clicking someone else’s laid-out stall does not open the player-trade
window this page describes — that path never actually worked (the merchant
class is operator-only, so no player stall ever existed to click). Protocol
v68 removed it and replaced it with a consignment stall that actually
does something: buy a
Peddler’s Stall, use it
to spread the same table an NPC lays with /lay_stall, and price bag items
onto it. Customers just pay the marked price — no haggling, and none of the
lock-then-confirm steps /trade uses.
- The item is never consumed. Use it once to set up, use it again to pack up, the same toggle a tip hat uses.
- Listed items stay in your bag as a soft reservation — selling, dropping, using, equipping, or trading them is blocked until they’re unlisted or sold, and you carry their weight the whole time. Up to 12 listings at once.
- The Peddler’s Stall item holding the table up can’t itself be listed, sold, or dropped — selling it would leave a table with no way to fold back up.
- Every sale burns a 5% sales tax off the seller’s take; the buyer still pays exactly the marked price.
- The owner has to stay within 10 meters of the stall, or it packs itself up automatically — changing floor or logging out does too.
- The owner can write a sign of up to 32 characters, always with their
name underneath;
/mutehides and blocks setting it, and a/blocktarget’s sign is hidden only from the blocker. - NPCs never buy from a stall.
Lock, then confirm (the anti-scam core)
Section titled “Lock, then confirm (the anti-scam core)”The whole design exists to stop the classic swap-it-at-the-last-second scam — showing a legendary weapon, then pulling it for a wooden sword the instant the other side clicks accept.
- Each side goes through two stages: lock, then confirm. Changing the offer at any point resets both sides’ confirmations — once locked, the contents can’t move, so “confirmed” is guaranteed to mean “what you actually saw.”
- Every offer change bumps a revision number. A confirm packet must carry the revision it saw, and the server refuses a confirm quoting a stale one — this closes the race where a click sent before a reset notice arrives could otherwise sneak through.
- Offer state is sent as a full snapshot on every change, never a delta, so losing a single packet can’t leave the two sides’ screens permanently out of sync.
Enchant levels can’t hide
Section titled “Enchant levels can’t hide”An item’s enchant level (+7 Iron Sword) is written directly into its
name inside the trade window, and listed again on the confirmation
screen. A +0 and a +7 look identical in icon and model — if the enchant
number only showed up in a tooltip, someone rushing to close a deal would
rarely check it. That’s the cleanest scam path there is, so the number is
put in front of the player instead of relying on them to go looking for it.
Placing items and gold
Section titled “Placing items and gold”- Partial stacks are supported, through the same click-and-quantity input used elsewhere — not drag-and-drop.
- A stack’s unit is item plus enchant level, so differently-enchanted copies of the same item never get merged into one line.
- Gold uses the same free-form input as tipping a busker’s hat —
1g20s30c,2s, or a bare number read as copper (see Music & the bard).
Closing the window
Section titled “Closing the window”- Before locking, Esc closes the trade window normally.
- After locking, Esc does nothing — a trade that far along needs an explicit cancel button, so a reflexive keypress can’t blow up a negotiation that’s already serious.
What cancels a trade
Section titled “What cancels a trade”- Moving out of range, logging out or disconnecting, and dying all cancel the session immediately.
- Combat does not cancel a trade — otherwise landing one hit on the other party would be enough to force a session closed, which is far too easy to grief with.
- If both sides just go quiet, the window stays open until someone confirms or an idle timeout (on the order of minutes, refreshed by any activity) closes it.
Items on the table stay in your bag (soft reservation)
Section titled “Items on the table stay in your bag (soft reservation)”Placing an item in the offer doesn’t move it out of your bag — it just gets flagged as softly reserved:
- Selling, dropping, using, or equipping a reserved item is refused by the server for as long as the trade is open.
- Bulk, definition-keyed actions like “sell all” or “drop all” are refused entirely while a trade is open, rather than trying to work around the reserved units — the error tells you to finish the trade first.
- A laid-out busker’s hat counts as reserved too; pick it back up before trading it away.
- A completed trade moves everything all at once, or not at all: if either side goes over their carry weight or their state changed after confirming, the whole trade aborts and both sides are told why. A successful trade is written to the database immediately — not on the usual periodic save — and only reported as a success once that write finishes. Both sides also get a private line in their chat log recording what changed hands.
What can never be traded
Section titled “What can never be traded”- Equipped items can’t be placed on the table — unequip first.
- The three starting weapons — the Worn Iron Sword, Worn Torch, and Worn Mandolin — are explicitly marked untradeable, so free starting gear can’t be funneled between characters for gold.
- There’s no minimum level restriction — trading is fully open, the same as trading with a merchant.
- NPCs never take part in a player trade — the server refuses any trade request aimed at one outright, which also closes off leaking an NPC’s issued gear (like guard Karl’s spear) through the trade window.
- A locked item can’t be placed on the trade table — unlock it first. See Item locks.