This is an old revision of the document!
Auction Law
Otherwise known as the player auction handbook. Where players learn how listing, bidding, timers, fees, and delivery work at Nilgiri shopkeepers — the auction-style market behind Shop Law.
A Banking Guild account is required for commerce (SoftHelp auction). Shop-room commands that browse or buy stock without listing or bidding stay on Shop Law; this page is the auction and offer path.
Related: Shop Law · Banking Guild · Postal Guild · Creation Law — Shops · Game Law (Economy)
How to auction (list an item)
At a keeper with Acts.SHOPKEEPER, hand goods with auction. SoftHelp auction and MobileScript.shopkeeperActAuction:
auction <item> <start-price>- or
auction <item> for <n> gold - with return postage:
auction <item> <start-price> minimum <min-price>
The start price must be greater than zero. A minimum, if set, must be ≥ 0 and ≤ the start price (S.noAuctMinCost). The item leaves your inventory into shop storage and appears on list.
SoftHelp auction (base listing covered by taxes; Constant.COST_AUCTION_LISTING = 0):
> auction headress for 10 gold You hand a pontiff's headress to the armorer. Account #0000-10A9 debited 0gc for auction service #00F31DC3 'a pontiff's headress' by Quenyarhun Okay. The armorer whispers to you, "Taxes cover the cost of your listing." >
With a minimum (SoftHelp example-snippet ShopSellExample; fee follows weight × mail multiplier):
> auction the plate for 500 gold coins at a minimum of 200 with note You hand the golden eagle breast plate to the armorer. Account #0000-1000 debitted 106gc for auction service #01A3EEB9 by Quenarhun Okay. The armorer whispers to you, "That'll be 106 coins, please." >
SoftHelp auction: if you list without a minimum and the item never sells, the shopkeeper may dump it free of charge. If you need the item back, set a minimum and pay the postage deposit. Ask value on the item first (see Shop Law — Value) for the live listing / shipping quote.
Grammar / SoftHelp notes: SoftHelp spells headress; some SoftHelp example-snippets print debitted / Quenarhun while Bank.java ledger text uses debited and SoftHelp auction uses Quenyarhun. SoftHelp ShopSellNoMinExample still shows a non-zero listing debit from an older fee table — live COST_AUCTION_LISTING = 0 and the tax-cover whisper above. Trust the bank line and whisper you see.
Offer (bid)
While an item is still in its auction window (owner-listed, time remaining), bid with offer, not buy. Bids below the next allowed price are refused; a successful bid debits your account. SoftHelp example-snippet ShopOfferExample:
> list The armorer informs you of its auctions and sales: 1) #01A51392 500gc : 'the golden eagle breast plate' (6 days offers:0) 2) #01A513CB 123gc : 'a great golden eagle shield' (6 days offers:0) 3) #01A513D2 61gc : 'a pair of armored golden eagle leggings' > offer 125 gold for #01a513cb with note Account #0000-1001 debitted 125gc for auction #01A513CB by Silk Okay. The armorer whispers to you, "Thanks for your offer! Your account will be deducted. Should you be outbid, your offer will be refunded." > offer 1 gold coin for item #01a51392 with note The armorer whispers to you, "Your offer is too low. Try 500 gold coins." > list The armorer informs you of its auctions and sales: 1) #01A51392 500gc : 'the golden eagle breast plate' (6 days offers:0) 2) #01A513CB 125gc : 'a great golden eagle shield' (6 days offers:1) 3) #01A513D2 61gc : 'a pair of armored golden eagle leggings' >
By list number (SoftHelp ShopOfferAltExample):
> offer 125 gold for #1 with note Account #0000-1001 debitted 125gc for auction #01A513CB by Silk Okay. The armorer whispers to you, "Thanks for your offer! Your account will be deducted. Should you be outbid, your offer will be refunded." >
The next bid must be at least 110% of the current high bid (or one coin higher when that percentage would not raise the price) — Auction.PRICE_INCREASE_PERCENT. Raising your own high bid whispers S.raiseOffer: “Your account is updated and your offer has been raised.”
Address items by list number (#1) or hex id (#01A513CB). Mid-auction items refuse buy with S.auctItemNoSale: “That item is for auction, not for sale.”
Auction lifecycle
From Auction.poll, AuctionEvent, SoftHelp auction, Mailer, and Bank:
- List —
auctionstores the item under the keeper; auction clock starts (Auction.TIME_TO_AUCTION= 2 real weeks). - Bid —
offerwhile time remains. List lines show remaining time andoffers: N. - Sale window — if the auction clock ends with no offers, the listing enters a sale period (
Auction.TIME_TO_SELL= 1 real month). List lines show remaining sale time as… sale). Asking price drops each real day to 70% of the prior price (PRICE_DECREASE_PERCENT/PRICE_DECREASE_PERIOD), never below your minimum. Players maybuyat the current sale price (see Shop Law — Buy). - Cancel — no player cancel command was found in SoftHelp or the shopkeeper command set; omitted.
Auction resolution is polled about every 30 real minutes per keeper (AuctionEvent.PULSE = nextPrime(30 × Time.MILLIS_PER_MINUTE)).
When someone wins (bids present)
When the auction clock expires with at least one offer (Auction.poll: timeLeft ⇐ 0 and _offers > 0):
- The high bidder is mailed the item:
Mailer.send(bidder, shopkeeper.proper(), item). The from name is the shopkeeper's proper name. - If the bidder is online (linked),
MaildeliverEventruns with the player's mail daemon (defaultS.immMailDaemon= “a snowy white owl”): swoop in carrying the item, deliver it, tellMailer.message(), give the item, then fly away.Mailer.message()is built as: “You have a package here sent <time phrase> from <shopkeeper>.” - If the bidder is offline, the parcel stays in the mailer queue; collect it at a Postal Guild postmaster with
mail— sameMailer.message()whisper and hand-over (see Postal Guild; sender is the shopkeeper). - The seller's bank account is credited the final bid via
Bank.creditAuction— a ledgerTextEntryof the form:Account #<id> credited <n>gc for auction item #<hex> '<name>'. If the account holder is online,TextEntry.addalsoechoes that line to them immediately; otherwise it appears later on bankbalance. The owner also gets an internalPlayer.logauction-sold line (not player-echoed).
No SoftHelp sample transcript was found for the win mail or seller credit line. SoftHelp / S.java have no “you won the auction” string. Verified player-visible win signals are only the mailed package (from the shopkeeper) and the seller's bank credit entry above — so no fabricated win mud demo is shown here.
When someone loses
Outbid (during the auction window). On a new successful offer, Auction.offer calls Bank.outbid for the previous high bidder: the prior bid is credited back with a TextEntry of the form Account #<id> credited <n>gc for auction #<hex> by <new bidder>. If that player is online, TextEntry.add echoes the credit line immediately (same string). SoftHelp / S.newOffer only promises the refund at bid time (“Should you be outbid, your offer will be refunded.”); there is no separate outbid-keeper whisper in SoftHelp or S.java.
Auction ends without your win. If you were outbid earlier, you already have the credit back; losing bidders are not mailed anything when the high bidder wins.
Expire with no bids — return (minimum set). After the sale period also runs out (timeLeft ⇐ -TIME_TO_SELL) and _minimum != 0, Auction.poll mails the item back to the owner with Mailer.send(owner, shopkeeper.proper(), item) — same package path and Mailer.message() as a win, from the shopkeeper. SoftHelp states the postage deposit exists so unsold goods can be returned.
Expire with no bids — dump (no minimum / price reaches 0). SoftHelp: without a minimum, unsold goods may be dumped free of charge. Code also purges a listing when the discounted sale price reaches 0 (item.purge()); that path writes a Player.log “worthless … dumped” line for the owner but does not mail the item back.
Player-visible lose outcomes that SoftHelp does not sample (outbid ledger line, return package, dump) are described from Java only — not invented as mud transcripts.
Fees and timers
From SoftHelp auction, Constant, and Auction:
- Auction window —
TIME_TO_AUCTION= 2 real weeks. - Sale window —
TIME_TO_SELL= 1 real month after auction ends with no bids. - Daily markdown — each real day in sale: price × 0.7 (
PRICE_DECREASE_PERCENT= 70), floored at your minimum. - Next bid — ≥ 110% of current high bid (
PRICE_INCREASE_PERCENT). - Poll — about every 30 real minutes per keeper (
AuctionEvent.PULSE). - Base listing — SoftHelp: free / covered by taxes when the listing debit is 0 (
COST_AUCTION_LISTING= 0; whisperTaxes cover the cost of your listing./S.taxPaidListing). Older SoftHelpvalue/ sell snippets may still show a non-zero listing line — trust livevalue. - Minimum / return postage — when
minimum> 0, debit addsCOST_MAIL_MULTIPLIER(2) × item weight.valuequotesshopMailCost= 1 + that product as the refundable shipping figure. - Bids — full offer debited; outbid amounts credited back (
Bank.outbid). - Identify —
COST_IDENTIFY= 2 gold (shop path; see Shop Law).
Related
- Shop Law — list, value, buy, identify, balance at keepers
- Banking Guild — accounts, notes, ledger credits
- Postal Guild — receive auction wins and returns
- Creation Law — Shops — immortal shop build
- Game Law — economy hub