16 May 2026: Ship Market
Galaxy-wide secondary market for existing ships · Broker stations distinct from trading posts · Command-unit decom unlocked · NPC empires exempt from maintenance churn
Ship Market: new feature
- New top-bar Ship Market panel. Browse every active ship-for-sale listing across the galaxy from one place. 50 cards per page, paginated, sorted newest-first. Each card shows the actual ship (with its name, rank, XP, equipped upgrades), an HP bar, the seller, the maintenance cost, and a green price. Buy buttons grey out when you can't afford the ship.
- List a ship from any broker station. Walk a ship into a broker's system, hit Sell Ships on the broker, pick the ship and set a price. After listing the ship is free to move anywhere; the listing follows it. Unlist whenever you want, from anywhere; no return-to-broker requirement.
- Buy from anywhere. Purchase fires regardless of where you (or the ship) are right now. The ship's experience, rank, custom name, current damage, equipped items, and even mid-hyperspace state all transfer with it. If a Falcon you bought is two-thirds through a hyperspace leg at the moment of sale, it lands at the original destination, under your flag.
- Reciept on both sides. Seller and buyer each get a news entry with the ship details and price. Sales of 150,000 RP or more get a galaxy-wide "Major sale" headline that everyone can see.
- Brokers take no commission. The seller pockets the full sale price. Brokers in Epoch are listing services, not retailers; they exist to host the market, not to skim it.
- Enemy and race lockouts. Listings authored by your enemies (or whose authors mark you as enemy) are hidden from your view and blocked at the purchase action; no API hack around the UI. Race-locked unit types (the
same race only share profile, e.g. some Misc-class hulls) are hidden from buyers of the wrong race.
- Loaned ships can't be listed. If a ship was loaned to you, it stays with the original owner's flag at the asset level: you can fly it but you can't sell it out from under them.
Stations: trading posts vs ship brokers
- Two roles, two UIs. Trading Posts (Trading Post / Cerberus Trading Station / Trading Spaceport) are trade-route endpoints: they host Trade Agreements and the cooperative trade-ship loop. Broker stations (Ship Broker Station / Broker Facility / Starship Dealer Spaceport / Bartornaw Ship) are ship-market endpoints: they host listings. The two are now properly separated; a Trading Post no longer shows a Sell Ships button, and a Broker Station doesn't show Trade Agreement buttons.
- Independent positive flags, not exclusive. The split is driven by two existing unit-type columns acting independently:
fld_is_trade_station identifies trade-route endpoints, and the combination of fld_market_commission > 0 + fld_berth_size > 100 identifies real ship-bay brokers. A future "mega-station" that legitimately did both would light up both UIs.
- Sell from the broker. Click Sell Ships on a broker, pick a ship from your eligible roster in that system (icon, name, class), continue to the price screen, confirm. Already-listed ships and out-of-system ships are filtered from the picker.
Decommission & maintenance
- Command units can now be decommissioned. The block on retiring an Aurora / Hercules Command Frigate is lifted. The combat-block (you can't decommission anything while a system is under attack) stays in place as the meaningful safety net.
- NPC empires are exempt from MP churn. Maintenance Point overdrafts, the daily wear-and-tear from being Unstable, and the daily crisis dispatcher all now skip NPC players. NPCs don't run economies, so destroying their ships or rolling crises against them produced churn without any narrative payoff. The relevant tick phases (
mp_destruction, recompute_unstable, unstable_maintenance, crisis_roll) were all patched in one go.
- Capability-flag resync. A small backfill brought every active unit's per-instance capability flags (interdict, cloak, command, multi-target etc.) into alignment with its type's authoritative value. Fixed cases like a Judicator Class Interdictor having its Interdict button greyed out despite the type clearly being an interdictor: the per-instance flag had drifted because hand-seeded units skipped the canonical insert helper.
UX polish
- Ship and broker pickers throughout the trade and market flows are now click-the-whole-row instead of click-a-radio-dot, with a cyan-tinted highlight on the selected row. Same UX across the Hyperspace Jump, Trade Run, List for Sale, and Sell Ships modals.
- Broker rows in the listing picker now show the broker's unit icon, not a generic tile.
- The Market overlay header shows your RP balance and your MP free / pool at all times so you can browse with both budgets in mind. Per-card MP cost flips red when the purchase would push you into MP overdraft.
- Trade Agreement modals fixed: the "Set Up Agreement" button no longer stays greyed out after you pick a station, and re-creating an agreement on a route you previously cancelled now works cleanly (the partial-unique-index change).