TradeDock & Shipyard¶
🚧 Partial. TradeDocks are rare premium hubs that combine an upgraded trading floor with a 12-slip player shipyard. The slip-rental construction pipeline is shipped (see Status summary); the premium trading floor, construction-event RNG, and dedicated UI panels remain 📐 Design-only. The status marker is omitted on individual subsections to reduce noise — assume 📐 throughout unless a subsection says otherwise.
Overview¶
A TradeDock is a multi-purpose station combining an advanced trading floor with full shipyard facilities. It is distinct from the standard Class-0 through Class-11 stations described in trading.md; a TradeDock does not sit in the class enumeration at all and operates under its own pricing and service rules.
Three things define a TradeDock:
- Premium trading hub — better spreads, bulk discounts, zero transaction fee, 10× the inventory of a normal port.
- Player shipyard — 12 rented construction slips that build ships over 3–14 real-time days.
- Economic anchor — a regional centre of gravity around which trade routes, resource gathering, and team coordination form.
Scarcity¶
TradeDocks are rare strategic infrastructure — only 4–8 across the entire galaxy at any time. They are seeded at galaxy generation and never spawn dynamically.
| Region | TradeDocks |
|---|---|
| Central Nexus | 3 |
| Terran Space | 1 |
| Player-owned region (≥ 500 sectors) | 0 or 1 |
| Player-owned region (< 500 sectors) | 0 |
Players in small regions must travel to a neighbouring region — typically the Central Nexus — to access TradeDock services. See ../../SYSTEMS/galaxy-generation.md#step-95-tradedock-seeding-phase-105 for the seeding step, per-region quota, placement rules, and galaxy-wide invariants.
Ownership¶
TradeDocks are NPC-controlled neutral infrastructure. They cannot be captured, ownership-transferred, or destroyed. A region owner can fund construction of a new TradeDock as a one-time region-scale project (see Discovery & access below).
Premium trading mechanics¶
A TradeDock's commodity floor is faster, deeper, and cheaper than a Class-0 port. The standard pricing engine described in trading.md still applies, but the spreads, fees, and inventory caps are different:
| Aspect | Standard port (Class 0+) | TradeDock |
|---|---|---|
Sell spread (midpoint × …) |
1.15 | 1.05–1.10 |
| Buy spread | 0.85 | 0.90–0.95 |
| Transaction fee | 2.0% | 0.0% |
| Inventory cap | 1× capacity | 10× capacity |
| Bulk discount | none | 5% per 1,000 units, capped at 20% |
| Cargo insurance available | sometimes | always |
Effective price compression: a TradeDock is 10–15% better on either side of the spread than a Class-0 port. Combined with the bulk discount, a 4,000-unit purchase reaches the 20% cap.
Bulk discount detail¶
Applied to buys (player purchasing from the dock):
| Units in single transaction | Discount |
|---|---|
| 1–999 | 0% |
| 1,000–1,999 | 5% |
| 2,000–2,999 | 10% |
| 3,000–3,999 | 15% |
| 4,000+ | 20% (cap) |
The discount applies on top of the better TradeDock spread; reputation and personal-rep modifiers from trading.md stack on top of the discounted price.
Rare commodities¶
TradeDocks broker commodities that are not procedurally generated at standard ports. The catalogue includes:
- Advanced ship components — hull plating, shield generators, engine cores.
- Rare construction materials — titanium alloys, lumen crystals, quantum shards.
- Specialised equipment — advanced sensors, experimental weapons, luxury fittings.
These materials feed both the shipyard's resource bundles below and the warp-tunnel and Genesis pipelines described in galaxy/genesis-devices.md. Lumen crystals and quantum shards specifically gate Warp Jumper construction; see the Bang-bottleneck note in trading.md.
Trade services¶
In addition to the commodity floor, every TradeDock offers:
- Cargo insurance — protects against piracy losses on the next jump.
- Market trend ARIA integration — premium price predictions.
- Trade route optimisation — suggested round-trip routes.
- Long-term commodity storage — rented warehouse slots, persists across sessions.
- Priority docking — TradeDock berths never queue; instant docking guaranteed.
Shipyard — overview¶
Each TradeDock operates 12 construction slips. Slips rent by the day and are consumed serially — one ship per slip at a time, no parallel builds in the same slip.
The shipyard exists to make ship ownership a project, not a transaction. A built ship is meaningfully different from a purchased one:
- Stat bonuses (5–15% across hull / shields / cargo / speed) applied at completion.
- Custom name, paint scheme, and builder signature ("Crafted with pride by [Player]").
- Unlockable modifications via construction events (see Construction events).
- Higher resale value (+20%).
- Lower total cost (30–50% cheaper) if the player gathers their own resources.
Versus pre-fab purchase at a standard shipyard, the trade-off is time and effort for discount and quality.
Construction phases¶
Every build progresses through four phases regardless of ship type:
- Frame Assembly — 0–25%. Hull structure assembled.
- Systems Integration — 25–50%. Engines, power, life support installed.
- Outfitting — 50–75%. Cargo bays, defensive systems, sensors fitted.
- Final Assembly — 75–100%. Testing, calibration, quality assurance.
Phase boundaries gate certain mechanics (the keel-laid milestone fires at the start of Frame Assembly; hull-complete fires at the end of Systems Integration; see Milestone payments).
Phase-day breakdown¶
Total build days split 20/30/30/20 across Frame / Systems / Outfitting / Final, rounded to whole-day increments at scheduler tick:
| Ship type | Total | Frame (20%) | Systems (30%) | Outfitting (30%) | Final (20%) |
|---|---|---|---|---|---|
| Scout | 3 | 1 | 1 | 1 | 0.3 |
| Fast Courier | 4 | 1 | 1 | 1 | 1 |
| Light Freighter | 5 | 1 | 2 | 1 | 1 |
| Cargo Hauler | 7 | 2 | 2 | 2 | 1 |
| Defender | 8 | 2 | 2 | 2 | 2 |
| Colony Ship | 10 | 2 | 3 | 3 | 2 |
| Carrier | 14 | 3 | 4 | 4 | 3 |
| Warp Jumper | 14 | 3 | 4 | 4 | 3 |
Each phase is gated by a resource-delivery checkpoint (per Delivery rules below). Frame requires 25% of every resource delivered; Systems and Outfitting both require 100% of ore/tech/equipment + 50% exotic; Final requires 100% of all resources. The phase clock pauses until its checkpoint is met. Late delivery accrues a compounding 5% / day cost overrun on the next milestone (5%, 10%, 15%, 20%, …) so wait time is never free.
Slip rental¶
Slips are reserved on a first-come, first-served basis. When all 12 slips at a TradeDock are occupied, a waiting list forms. Reservations require an initial deposit equal to 10% of the total project cost (rent + labour + resource market value).
Per-ship rental table¶
| Ship type | Build days | Slip deposit (10% of total) | Total project cost |
|---|---|---|---|
| Scout Ship | 3 | 4,000 cr | 40,000 cr |
| Fast Courier | 4 | 6,500 cr | 65,000 cr |
| Light Freighter | 5 | 10,000 cr | 100,000 cr |
| Cargo Hauler | 7 | 32,000 cr | 320,000 cr |
| Defender | 8 | 38,000 cr | 380,000 cr |
| Colony Ship | 10 | 64,000 cr | 640,000 cr |
| Carrier | 14 | 190,000 cr | 1,900,000 cr |
| Warp Jumper | 14 | 100,000 cr | 1,000,000 cr |
(The Warp Jumper remains the only craft-only ship in the galaxy — it cannot be purchased pre-fab at any port. See gameplay/ships.md.)
📐 Design-only — gate-builder cadence. Because the Warp Jumper hull is consumed at Phase 3 of warp gate creation (per ADR-0029) and the limit-1-per-player rule applies, a player who builds warp gates is locked into a ~14-day-per-gate cadence: 14 days of slip rental + 1,000,000 cr per Warp Jumper, on top of the gate's own materials. This cadence is the practical rate-limit on player-built warp gates and bounds the W2 cap formula in the average case.
The total project cost above is the canonical "all-in if you buy every resource at market" figure. A player who self-gathers resources will spend substantially less in net credits — see Cost comparison.
Rental mechanics¶
- Daily rent is charged at server reset (00:00 UTC) for as long as the slip is occupied.
- Players may pre-pay up to 30 days of rent at booking.
- Missed rent pauses construction immediately — no progress accrues until rent is paid.
- Three consecutive days unpaid → the project is cancelled and all delivered resources forfeited (see Cancellation & refund).
- Slip occupants can lock the slip behind a team-only flag (see Team coordination workflows) but the rent obligation transfers along with the lock.
Slip reservation state machine¶
ConstructionReservation.state ∈ {
requested, // initial; player submits slip request
queued, // waiting for availability; reputation-tier ordered
hold_active, // 24h hold at front of queue; player must arrive + pay deposit
deposit_collected, // deposit paid; resources can be delivered
frame_assembly, // Frame phase (0–25%)
systems_integration, // Systems phase (25–50%)
outfitting, // Outfitting phase (50–75%)
final_assembly, // Final phase (75–100%)
claim_pending, // 100% complete; awaiting final payment + claim
delivered, // terminal: ship claimed
expired, // terminal: 24h hold missed
cancelled, // terminal: player cancelled
forfeited // terminal: 3 days unpaid
}
| From → To | Trigger | Notes |
|---|---|---|
requested → queued |
Reputation gate passes | Rep tier checked against slip class (see docking-slips.md) |
queued → hold_active |
Slip frees, player at top of queue | 24h hold timer starts; player notified |
hold_active → deposit_collected |
Deposit paid + initial resource batch | If 24h elapses with no deposit → expired (50% deposit to next-in-queue, 50% to TradeDock) |
deposit_collected → frame_assembly |
25% of every resource delivered | Keel-laid milestone fires |
frame_assembly → systems_integration |
100% ore/tech/equipment + 50% exotic | Hull-complete milestone fires |
systems_integration → outfitting |
Same checkpoint as Systems | No new milestone |
outfitting → final_assembly |
100% of all resources | No new milestone |
final_assembly → claim_pending |
Build clock = 100% | Final commissioning milestone fires; player has 7 days to claim |
claim_pending → delivered |
Final payment + claim | Ship spawned in roster |
any → cancelled |
Player initiates | Refund per Cancellation & refund |
any → forfeited |
3 days unpaid rent or milestone | No refund; 7-day re-booking lockout |
Cost comparison¶
For a Defender (build cost reference: pre-fab ≈ 300,000 cr at a standard shipyard):
| Path | Net credits | Net time | Stats |
|---|---|---|---|
| Pre-fab purchase | 300,000 cr | instant | base |
| Player-built (self-gather all resources) | ~180,000 cr | 7 days + gathering | +5–15% bonus |
| Player-built (buy all resources at market) | ~380,000 cr | 7 days | +5–15% bonus |
| Player-built (mix: gather common, buy rare) | ~280,000 cr | 7 days + light gathering | +5–15% bonus |
The "sweet spot" — gather the bulk commodities (ore, technology, equipment), buy the exotic materials — saves credits versus pre-fab and still earns the construction bonuses.
Resource delivery¶
Each ship type has a fixed construction bundle that must be delivered to the slip over the build's duration. Resources are deposited at the dock's resource intake; once delivered they cannot be reclaimed.
Bundle composition¶
| Ship type | Ore | Technology | Equipment | Exotic Tech | Lumen Crystals | Quantum Shards |
|---|---|---|---|---|---|---|
| Light Freighter | 1,200 | 600 | 400 | — | — | — |
| Scout Ship | 500 | 300 | 200 | — | — | — |
| Fast Courier | 800 | 500 | 350 | 100 | — | — |
| Cargo Hauler | 2,500 | 800 | 1,200 | — | — | — |
| Defender | 2,000 | 1,500 | 1,000 | 500 | — | — |
| Colony Ship | 4,000 | 2,000 | 1,500 | 200 | — | — |
| Carrier | 5,000 | 3,000 | 2,500 | 1,000 | 500 | — |
| Warp Jumper | 3,000 | 2,000 | 1,500 | 2,000 | 500 | 1,000 |
(Numbers for Light Freighter, Scout, Defender, Cargo Hauler, Carrier, and Warp Jumper are anchored to legacy spec; Fast Courier and Colony Ship are extrapolated to fit the same structure since legacy did not specify them.)
Delivery rules¶
- Threshold for keel-laid milestone: 25% of every resource type must be delivered before construction can advance past Frame Assembly.
- Threshold for hull-complete milestone: 100% of ore, technology, and equipment plus 50% of any exotic materials.
- Threshold for final commissioning: 100% of every resource.
- Late delivery penalty: if the project misses a phase threshold by its scheduled day, a 5% daily cost overrun is added to the labour fee for as long as the shortfall persists, compounding daily (5%, 10%, 15%, 20%, …). The slip's build clock pauses (extending elapsed real-time days but not the labour-fee accrual).
- Resources delivered by team-mates count toward the project's bundle (see Team coordination workflows); the delivering player gets contribution credit on the project ledger.
Resource bundle validation¶
Delivery acceptance at the dock's resource intake follows these rules:
| Scenario | Result | Refund / recovery |
|---|---|---|
| Correct type, correct quantity | Accepted; counts toward checkpoint | — |
| Correct type, insufficient quantity | Partial accept; phase timer pauses | Player can deliver remainder |
| Wrong resource type | Rejected; cargo returned to player ship | No slip fee charged for the rejected delivery |
| Mixed batch (some correct, some wrong) | Partial accept (correct items only); wrong items returned | No fee for wrong items; correct items consumed |
Per ADR-0039, each delivery is atomic and irreversible once accepted: cancelled projects do not return delivered cargo. Cancellation refunds credits per the schedule below, but resources stay with the TradeDock.
Substitution (📐 reserved for future iteration): credit-for-resource substitution at 1.5× market price is allowed for common materials (ore / technology / equipment) up to 50% of the bundle, but not for rare materials (Exotic Tech, Lumen Crystals, Quantum Shards). Allowing full substitution on rares would undermine the resource-scarcity gate on Warp Jumper and Carrier construction.
Sourcing options¶
- Self-gather — trade routes, mining, planetary production. Cheapest but slowest.
- Market purchase — buy directly at the TradeDock's premium floor or at a standard port. Fastest but most expensive.
- Team contribution — team-mates fly resources in from elsewhere.
- Mixed — gather the bulk, buy the rare materials.
Milestone payments¶
The total project cost is split across a four-stage payment schedule, separate from daily rent and resource delivery. Milestones unlock in real time as construction phases advance.
| Milestone | Trigger | % of total project cost |
|---|---|---|
| Deposit | On slip booking | 10% of total project cost |
| Keel laid | Resource threshold met, Frame Assembly begins | 25% |
| Hull complete | End of Systems Integration | 25% |
| Final / commissioning | On ship delivery, claim issued | 25–40% |
The deposit-to-final ratio scales with ship type — small ships front-load less and back-load more (10% deposit, 40% final), heavy ships front-load more (25% deposit, 25% final). This guarantees the dock recoups capital expenditure on big builds early while keeping entry-tier construction accessible.
Payment failures¶
- Missing a milestone payment pauses construction in the same way as missed rent.
- Three consecutive days of missed milestone payment cancel the project (see Cancellation & refund).
- Players can pre-pay any milestone in advance to immunise against cash-flow gaps.
Construction events¶
During a build, random events can occur with a base 5% chance per real-time day. Events surface as a UI prompt on the player's TradeDock dashboard the next time they dock or open the project view. Some events demand a decision (mitigate vs. accept); others are passive applications.
| Event | Effect | Player decision |
|---|---|---|
| Quality Discovery (positive) | Engineer finds a structural improvement. Ship gains +5% to a random stat (hull, shields, cargo, speed). | Accept — no decision required. |
| Resource Shortage | Local supply chain disrupted. +10–25% cost overrun on the next milestone, OR ship 10% extra of one resource type to mitigate. | Pay overrun or deliver extra resource. |
| Labor Dispute | Slip workers strike. Build delayed 1–3 days unless the player pays a 5% bonus to dock workers. | Pay bonus or absorb delay. |
| Innovation (positive) | Engineer applies a novel technique. Ship gains +1 random equipment slot at completion. | Accept — no decision required. |
| Inspection Delay | Federation/Faction inspector slows progress. +1 day elapsed, no cost. | None — passively applied. |
Event probability tuning¶
P(event_fires_today) = min(0.65, base_rate + engineer_modifier)
base_rate = 0.05 // 5% per project per day
engineer_modifier = 0.10 × engineer_count // capped at 3 engineers (+0.30)
The 0.65 hard cap prevents pathological all-event projects when three engineers are assigned.
Once an event fires, the type rolls 0–99:
| Roll | Outcome class | Pool |
|---|---|---|
| 0–39 | Positive | Quality Discovery, Innovation |
| 40–79 | Neutral | Cosmetic Variation, Crew Morale (no mechanical change) |
| 80–99 | Negative | Resource Shortage, Inspection Delay |
Engineer assignment biases the roll toward positive outcomes (approximately 2:1 in their favour), implemented as a per-engineer −5 shift on the roll (one engineer shifts 0–99 to −5–94; three engineers shift to −15–84).
Concrete numerical effects per event:
| Event | Effect |
|---|---|
| Quality Discovery | +5% to a random stat (hull / shields / cargo / speed) |
| Innovation | +1 random equipment slot at completion (max 2 per project) |
| Cosmetic Variation | Unique hull marking; no mechanical change |
| Crew Morale | Workplace-morale ledger entry; no mechanical change |
| Resource Shortage | +10–25% (roll 2d8 + 10) cost overrun on next milestone, OR deliver +10% of one resource type to skip |
| Inspection Delay | +1 elapsed day, no cost (slip rental keeps accruing) |
Events log to the project ledger and persist on the completed ship's "build history" record.
Multiple events¶
A single project can fire multiple events across its build window. Carrier and Warp Jumper builds (12–14 days) commonly accumulate 2–4 events; Scout and Light Freighter builds rarely fire more than one.
Space Engineer profession integration¶
The Space Engineer profession on a player-owned planet (see planets/professions.md) materially accelerates and improves TradeDock construction. A player with trained Space Engineers on any planet they control can assign engineers to an active TradeDock project.
Effects¶
| Engineer training tier | Construction time reduction | Quality bonus | Labour fee reduction |
|---|---|---|---|
| Tier 1 | −10% | +2% extra stat bonuses | −5% |
| Tier 2 | −20% | +3% | −10% |
| Tier 3 | −30% | +5% | −15% |
Stacking rules¶
- Up to three engineers can be assigned to a single project (one per slip).
- Effects stack additively within the build, but the construction time reduction caps at −50% to prevent trivialised carrier and warp-jumper builds.
- Each assigned engineer is paid daily from the project owner's credits at the engineer's home-planet wage rate (TBD, set by planets/professions.md).
- Engineers also boost the construction-event RNG roll toward positive outcomes (see Construction events).
This is the primary reason the Space Engineer profession exists: it converts long-running planet investment into a recurring shipyard advantage for the player and their team.
Team coordination workflows¶
Multiple players can collaborate on a single slip booking. The legacy single-owner model is preserved as a default — one player books, pays, and claims — but team workflows extend it.
Shared slip booking¶
- Initiator — the team-mate who reserves the slip. Credits with the deposit; their
Player.idis the project owner of record. - Co-contributors — team-mates who deliver resources or pay milestone fees. Logged on the project ledger.
- Claimant — the player listed at completion as recipient of the ship. Default = initiator; reassignable to any co-contributor before final payment.
Pooled resource delivery¶
- Any team-mate docked at the TradeDock can deliver to a teammate's project's resource intake, provided the slip is flagged team-shared.
- Contributions are credited on the ledger — useful for distributing a future ship's effective cost.
- Team-treasury credits can pay milestone fees and slip rent without a specific player needing to be online.
Co-ownership¶
- A completed ship may optionally be team-owned rather than individually owned. A team-owned ship is bound to the team's roster and any active member can pilot it (one pilot at a time).
- Co-ownership is decided at claim time and irreversible without selling and re-buying the ship.
- Per-team-ship limits and team-roster transfer rules track factions-and-teams.md (📐 Design-only there as well).
Specialisation roles¶
A natural team workflow emerges:
- Gatherers mine, trade, and produce raw resources to deliver to the project.
- Builders queue and manage active slips, schedule milestone payments, decide on construction events.
- Engineers train and assign Space Engineers from their colonised planets.
- Treasurers fund milestone gaps from the team treasury.
Three team-mates building three ships in parallel at one TradeDock is the design's reference workflow.
Cancellation & refund¶
Players can cancel a project at any point before claim. Refund schedule:
| Cancellation timing | Deposit refund | Milestones already paid | Resources delivered |
|---|---|---|---|
| Pre-keel (Frame Assembly not started) | 90% (10% restocking fee) | refunded fully | refunded fully |
| Post-keel, pre-hull (Frame Assembly started, Outfitting not begun) | forfeit | 50% of milestones already paid | not refundable |
| Post-hull, pre-claim (Outfitting or Final Assembly) | forfeit | 10% of milestones already paid | not refundable |
Sell to dock at completion¶
If a player completes a build but no longer wants the ship, the dock will buy the completed hull at construction cost minus 30%. This is the best-available exit after Final Assembly and is the only way to recover any value once the ship is hull-complete.
Forfeiture cancellation¶
If the project is cancelled by the system (three days of missed rent or milestones), all credits and resources are forfeit — there is no refund path. The player may not re-book a slip at the same TradeDock for 7 real-time days after a forfeiture.
Defenses¶
TradeDocks are heavily defended Class-9-equivalent military installations:
- NPC defence fleet — 8–16 turrets and 24–48 garrison drones permanently stationed.
- No PvP combat — players cannot initiate combat in a TradeDock's sector against the dock or other docked players.
- No PvE damage — no NPC faction event can destroy or capture a TradeDock outside an end-game faction-war scenario flagged by an operator (📐 Design-only).
- Player ships at the dock are safe — the dock guarantees a no-combat zone within 1 sector.
A TradeDock cannot be cargo-raided or saboteur-targeted in current design. The shipyard infrastructure is too strategic to be lost to an opportunistic player attack.
Discovery & access¶
Galaxy-generation seeding¶
TradeDock placement is decided at galaxy generation in a dedicated seeding step — Step 9.5 / Phase 10.5, after generic stations and planets and before the Capital + SpaceDock anchors. See ../../SYSTEMS/galaxy-generation.md#step-95-tradedock-seeding-phase-105 for the full per-region quota, placement rules, and galaxy-wide invariants.
- 3 in the Central Nexus — 1 Tier-A (in an
EXPANSE-zone commerce cluster) + 2 Tier-B. - 1 in Terran Space — Tier-A.
- 0 or 1 per player-owned region (eligible only at ≥ 500 sectors); Tier-B by default.
Seeded placement targets sectors in EXPANSE/CLUSTER-class clusters with ≥ 2 inbound warps, never in starter-cluster or FRONTIER-zone sectors, and avoids collisions with the Capital/SpaceDock anchors. The galaxy-wide guarantee is 4–8 total TradeDocks, ≥ 1 Tier-A, and ≥ 2 reachable from any starter cluster — the Tier-A floor is what keeps the Warp-Jumper / warp-gate loop reachable in every generated galaxy.
Player-region TradeDocks must be funded by the region owner; they are not auto-seeded.
Schema¶
TradeDocks share the Station table (see ../../DATA_MODELS/stations.md) and are distinguished from the Class-0..11 trading rows by dedicated columns:
| Column | Type | Meaning |
|---|---|---|
is_tradedock |
BOOLEAN DEFAULT false |
true on TradeDock rows; runtime code filters on this to apply premium pricing and shipyard behaviour. |
tradedock_tier |
ENUM('tier_a', 'tier_b') nullable |
Set on is_tradedock = true rows. Only tier_a docks build Warp Jumper / Carrier hulls (see docking-slips.md). |
region_assignment_role |
ENUM('primary_tier_b', 'secondary_tier_b', 'tier_a_facility') nullable |
Per-region role assigned by the seeder; readable by the player-client region-overview screens. |
Reputation gate¶
To dock at a TradeDock without paying the guest fee, a player needs:
- +200 or higher reputation with the controlling NPC faction (the faction owning the sector) — see factions-and-teams.md.
- A clean criminal record with that faction (no outstanding bounties from the faction's own NPCs).
Guest fee¶
Players below the reputation threshold can still dock by paying a flat guest fee of 100,000 cr per visit. The fee is non-refundable, persists for one in-game session (i.e. until the next undock), and is applied each time the player re-docks.
Region-funded construction¶
A region owner with ≥ 500 sectors may construct one new TradeDock in their region:
- Cost: 50,000,000 cr.
- Duration: 90 real-time days.
- Resource bundle: 500,000 ore + 300,000 technology + 200,000 equipment.
- Operating cut: the region owner receives 5% of all shipyard fees generated at the new dock as ongoing income (paid into the region treasury).
Region-funded TradeDocks operate identically to galaxy-seeded ones; players see no functional difference.
Lifecycle — cancellation, lapse, disbandment¶
The 50M / 90-day construction project has three failure modes worth speccing explicitly:
- Mid-build cancellation (region owner explicitly cancels via the regional-governance UI): credits and resource bundle are refunded pro-rata for the unbuilt portion, minus a 25% restocking fee on the unbuilt remainder. Worked example: cancel at day 30 (33% built, 67% unbuilt) refunds
0.67 × 50M × 0.75 = 25.125M crand0.67 × bundle × 0.75of each resource. The built portion has no in-game value; the construction site does not become a partial structure. - Region subscription lapses post-construction: the TradeDock persists as an NPC asset in the region. The 5% fee income stops accruing to the region treasury at the moment of lapse. Player-facing functionality (docking, ship construction, repair) continues normally — the TradeDock is treated as an ungoverned facility for fee-distribution purposes (operator pockets the 5%, or the cut is folded into player-facing prices, per operator policy).
- Region is disbanded (ownership transfer to operator, region terminated, etc.): same as subscription lapse. The TradeDock persists as NPC infrastructure; the 5% income stream simply has no destination.
In all three cases the TradeDock itself is preserved — once built, it is part of the universe state and survives changes to the funding region's status.
Player-facing affordances¶
- TradeDock landing page — three tabs: Trading Hub, Shipyard, Storage.
- Shipyard slip browser — visual grid of all 12 slips, occupancy progress bars, waiting-list position.
- Project dashboard — for the player's own active projects: progress phase, resource intake checklist, milestone payment schedule, construction-event log, Space Engineer assignment panel, customisation preview.
- Customisation panel — paint scheme picker, ship-name field, modification toggles (unlocked through Innovation events).
- Stats projection — live preview of the ship's stats including any pending bonuses from quality events.
- Cancel / sell-to-dock controls — gated behind a confirmation modal that displays the exact refund amount.
- Team-shared slip flag — toggle visible only to the slip's initiator.
ARIA surfaces project status as conversational status updates ("Your Defender is 65% complete and currently in Outfitting; one resource shortage event is pending your decision").
Source map¶
All paths are targets — no current code implements TradeDock or shipyard behaviour at the level described.
| Concern | Target path |
|---|---|
| TradeDock model | services/gameserver/src/models/tradedock.py (target) |
| Construction slip model | services/gameserver/src/models/construction_slip.py (target) |
| Ship construction project model | services/gameserver/src/models/ship_construction_project.py (target) |
| Slip rental & lifecycle service | services/gameserver/src/services/shipyard_service.py (target) |
| Construction event RNG service | services/gameserver/src/services/construction_event_service.py (target) |
| Bundle composition catalogue | services/gameserver/src/core/ship_construction_bundles.py (target) |
| Premium-pricing override (10–15% spread, bulk discount) | services/gameserver/src/services/trading_service.py (target update — branch on Station.is_tradedock) |
| Galaxy-gen TradeDock seeding | services/gameserver/src/services/galaxy_service.py:_seed_tradedocks (target) |
| Region-funded construction | services/gameserver/src/services/regional_governance_service.py (target update) |
| Space Engineer integration | services/gameserver/src/services/profession_service.py (target) and shipyard_service.py cross-call |
| API — list TradeDocks | GET services/gameserver/src/api/routes/tradedock.py:/api/tradedock/list (target) |
| API — slip availability | GET .../tradedock/{tradedock_id}/slips (target) |
| API — reserve slip | POST .../tradedock/{tradedock_id}/slips/reserve (target) |
| API — deliver resources | POST .../tradedock/slips/{slip_id}/deliver (target) |
| API — milestone payment | POST .../tradedock/slips/{slip_id}/payment (target) |
| API — customise + claim | POST .../tradedock/slips/{slip_id}/customize, .../claim (target) |
| API — cancel | POST .../tradedock/slips/{slip_id}/cancel (target) |
| Migration adding TradeDock + slip + project tables | services/gameserver/alembic/versions/xxxx_add_tradedock_shipyard.py (target) |
| Player UI — TradeDock landing | services/player-client/src/components/TradeDock/TradeDockHome.tsx (target) |
| Player UI — shipyard slip browser | services/player-client/src/components/TradeDock/SlipBrowser.tsx (target) |
| Player UI — project dashboard | services/player-client/src/components/TradeDock/ProjectDashboard.tsx (target) |
| Admin UI — TradeDock management | services/admin-ui/src/components/pages/TradeDockAdmin.tsx (target) |
Status summary¶
This system is 🚧 Partial.
- 🚧 The slip-rental construction pipeline is live: the
ConstructionReservationmodel (construction_reservationstable),construction_service, androutes/construction.pyhandle reservation, quotes, milestone payments, resource deliveries, lazily-advanced phases, slip-pool availability, queue promotion, and claim — with Tier-A gating. Warp Jumper commissioning runs end-to-end through it (gameplay-verified, 1,000,000 cr). - 📐 Still design-only: premium-pricing override in
trading_service.py, construction-event RNG path, Space Engineer assignment integration, and dedicated player-client / admin-UI TradeDock panels.
Implementation order, when scheduled, follows the legacy phase plan:
- Phase 1 — TradeDock seeding at galaxy generation, premium trading floor (spreads + bulk discount + 10× inventory + zero fee), Warp Jumper construction migrated onto the slip-rental flow.
- Phase 2 — Full slip rental for all 8 craft-able ship types (the 9
ShipTypevalues minus Escape Pod, which is issued, not built), resource bundles, milestone payments, cancellation & refund. - Phase 3 — Construction events RNG, Space Engineer integration, team coordination workflows, region-funded construction.
If this system is indefinitely deferred, file an ADR in ADR/ capturing the deferral rationale and the conditions under which it would be picked up.
Related¶
- trading.md — main trading flow, station classes, and pricing engine; the TradeDock summary block there is a brief pointer to this spec.
- lifecycle.md — credit faucets and sinks; TradeDock construction is a major mid-to-late-game sink.
- planets/professions.md — Space Engineer profession that accelerates and improves TradeDock construction.
- gameplay/ships.md — ship types, pre-fab acquisition paths, the craft-only Warp Jumper.
- gameplay/ship-systems.md — upgrade and equipment slots that built ships can extend with.
- galaxy/generation.md — TradeDock placement at galaxy generation and per-region scarcity rules.
- gameplay/factions-and-teams.md — reputation gates for TradeDock access and team-coordinated workflows.