window.GDD = window.GDD || {}; function ShipsPage() { const [activeSection, setActiveSection] = React.useState('classes'); const shipClasses = [ { name: 'Frigate', hull: 400, armor: 350, shield: 300, highSlots: 3, medSlots: 3, lowSlots: 2, cpu: 120, powerGrid: 40, cargo: 150, speed: 280, mass: 1200, role: 'Fast scout and tackle. Low slot count but quick to align and warp. Good for new players.', examples: ['Merlin', 'Rifter', 'Incursus', 'Punisher'], }, { name: 'Destroyer', hull: 650, armor: 550, shield: 500, highSlots: 7, medSlots: 3, lowSlots: 3, cpu: 180, powerGrid: 65, cargo: 300, speed: 210, mass: 1800, role: 'Anti-frigate platform. Many turret hardpoints but slow and vulnerable to larger ships.', examples: ['Cormorant', 'Thrasher', 'Catalyst', 'Coercer'], }, { name: 'Cruiser', hull: 1200, armor: 1000, shield: 900, highSlots: 5, medSlots: 4, lowSlots: 4, cpu: 280, powerGrid: 110, cargo: 600, speed: 175, mass: 3500, role: 'Versatile workhorse. Can mine, fight, or explore. Good cargo hold and balanced slot layout.', examples: ['Osprey', 'Rupture', 'Vexor', 'Maller'], }, { name: 'Battlecruiser', hull: 2800, armor: 2400, shield: 2000, highSlots: 7, medSlots: 5, lowSlots: 5, cpu: 380, powerGrid: 180, cargo: 1000, speed: 130, mass: 7000, role: 'Command ship. Can fit warfare links and project damage. Excellent fleet support.', examples: ['Drake', 'Hurricane', 'Myrmidon', 'Harbinger'], }, { name: 'Battleship', hull: 6000, armor: 5000, shield: 4500, highSlots: 8, medSlots: 5, lowSlots: 6, cpu: 520, powerGrid: 280, cargo: 1800, speed: 90, mass: 15000, role: 'Heavy assault platform. Maximum firepower and tank but very slow. Fleet anchor.', examples: ['Rokh', 'Tempest', 'Dominix', 'Apocalypse'], }, ]; const slotTypes = [ { name: 'High Slots', color: 'var(--red)', icon: '◆', description: 'Weapons, mining lasers, cloaks, salvagers. The things that do stuff to other things.', modules: ['150mm Railgun', '200mm Autocannon', 'Heavy Missile Launcher', 'Mining Laser II', 'Salvager I', 'Cloaking Device'], fitting: 'Turrets and launchers require both CPU and Power Grid. Heavy weapons need more of both.', }, { name: 'Medium Slots', color: 'var(--cyan)', icon: '◇', description: 'Shields, propulsion, electronic warfare, tackle. The things that keep you alive or stop them.', modules: ['Shield Booster', '1MN Afterburner', 'Warp Scrambler', 'Stasis Webifier', 'ECM Jammer', 'Shield Extender'], fitting: 'Shield and propulsion modules are CPU-heavy. EWAR fits are tight on CPU, light on grid.', }, { name: 'Low Slots', color: 'var(--green)', icon: '○', description: 'Armor, damage mods, cargo expanders, power diagnostics. Passive upgrades and tank.', modules: ['Armor Plate', 'Magnetic Field Stabilizer', 'Cargo Expander', 'Power Diagnostic System', 'Capacitor Power Relay', 'Armor Repairer'], fitting: 'Armor and damage modules are Power Grid-heavy. Passive modules use less CPU.', }, ]; return (

Ships & Fitting System

Ships are the player's primary asset. Each ship has a slot layout with CPU and Power Grid limits that constrain what modules can be fitted. Players own multiple ships and can assign AI crew to pilot them on autonomous tasks.

{/* Tab navigation */}
{[ { id: 'classes', label: 'Ship Classes' }, { id: 'fitting', label: 'Fitting / Slots' }, { id: 'acquisition', label: '🚀 Acquisition' }, { id: 'crew', label: 'AI Crew' }, ].map(t => ( ))}
{/* SHIP CLASSES */} {activeSection === 'classes' && ( <>
MVP scope: One ship class per faction to start (Frigate). Expand to Destroyer and Cruiser in Phase 5+. Full roster is the launch target.
{shipClasses.map((ship, i) => ( ))}
Class Hull Armor Shield High Med Low CPU Grid Speed Cargo
{ship.name} {ship.hull} {ship.armor} {ship.shield} {ship.highSlots} {ship.medSlots} {ship.lowSlots} {ship.cpu} {ship.powerGrid} {ship.speed} {ship.cargo}

Class Details

{shipClasses.slice(0, 4).map((ship, i) => (

{ship.name}

{ship.role}

Variants: {ship.examples.join(', ')}
))}
)} {/* FITTING / SLOTS */} {activeSection === 'fitting' && ( <>
SHIP-FIT

Slot Types & Fitting Constraints

{slotTypes.map((slot, i) => (
{slot.icon}

{slot.name}

{slot.description}

Typical modules:
{slot.modules.map((m, j) => ( {m} ))}
))}
SHIP-CPU

CPU & Power Grid

Fitting Mechanics

1. Each module has a CPU cost and a Power Grid cost.
2. Total fitted module costs must not exceed ship's CPU and Power Grid.
3. Some modules have ship bonuses (e.g. "+5% mining laser yield per Cruiser level").
4. Rig slots add permanent modifications — cannot be removed, only destroyed.
5. Fitting is only possible when docked at a station with fitting service.

Example: Mining Cruiser Fit

SlotModuleCPUGrid
High 1Mining Laser II3010
High 2Mining Laser II3010
Med 11MN Afterburner2515
Med 2Shield Booster I3010
Med 3Market Analyzer (AI)150
Low 1Mining Upgrade I205
Low 2Cargo Expander I150
Low 3Nav Processor (AI)100
Total 175/280 50/110
AI modules: Market Analyzer (med) tracks local prices and flags arbitrage opportunities. Nav Processor (low) optimizes warp routes. See Ship AI \u2192 Module Gates tab.

Example: Combat Frigate Fit

SlotModuleCPUGrid
High 1150mm Railgun3512
High 2200mm Autocannon3014
Med 1Warp Scrambler I251
Med 21MN Afterburner2515
Low 1Armor Plate I1020
Low 2Magnetic Field Stab.155
Total 140/120 ⚠ 67/40 ⚠
Overfit! CPU 140/120 and Grid 67/40 — exceeds ship capacity. Drop a turret or fit lower-tier modules.
)} {/* SHIP ACQUISITION */} {activeSection === 'acquisition' && (<>
SHIP-ACQ

Ship Acquisition & Hangar

Ships are the player's primary asset, and acquiring them is a core economic milestone. The system balances accessibility (new players always have a ship) with economic consequence (better ships cost real ISK and represent player investment). Players can own multiple ships stored in station hangars, but only fly one at a time. Switching ships requires docking.

Ship Ownership Model

Single Active Ship

A player has exactly one active ship at a time — the ship they're currently piloting. This is the ship that appears in the star system, has a position, and can perform actions (mine, fight, warp). The active ship cannot be traded, contracted, or stored while it is active.

Hangar Storage

Ships not currently being piloted are stored in a station hangar. Each station has a hangar per player. A player can store unlimited ships at any station they have docking access to. Hangar ships are safe — they cannot be destroyed or stolen while stored.

How Players Get Ships

{[ { method: 'Rookie Frigate (free)', cost: '0 ISK — granted on first spawn and on death respawn', available: 'Automatic on new player creation. Automatic on respawn after ship destruction.', phase: 'Phase 0', color: 'var(--green)' }, { method: 'NPC Market (sell orders)', cost: 'Hull base value × 1.0–1.5 (station markup)', available: 'Any station with Market service. NPC sell orders seeded at galaxy gen.', phase: 'Phase 6', color: 'var(--cyan)' }, { method: 'Player Market (sell orders)', cost: 'Player-set price — typically below NPC price for T1, above for T2', available: 'Any station with Market service. Player-placed sell orders.', phase: 'Phase 10', color: 'var(--accent)' }, { method: 'Manufacturing', cost: 'Minerals (from refining ore) + blueprint + factory fee + time', available: 'Stations with Factory service. Requires Industry skill ≥ ship class tier.', phase: 'Phase 5', color: 'var(--purple)' }, { method: 'Loyalty Point Store', cost: 'ISK + LP — faction ships at below-market rates', available: 'Faction stations only. Requires high standing + LP balance.', phase: 'Phase 12', color: 'var(--red)' }, ].map((row, i) => ( ))}
MethodCostAvailable AtPhase
{row.method} {row.cost} {row.available} {row.phase}

The Rookie Frigate

Free Ship Policy

  • On first spawn: New player receives a Rookie Frigate at their faction's starter station.
  • On death (ship destroyed): Player respawns at their home station with a new Rookie Frigate. Always free.
  • Cannot be sold or traded: The Rookie Frigate has no market value.
  • Cannot be insured: Insurance doesn't apply — you always get a new one free.
  • Basic stats: 2 high slots, 2 mid slots, 1 low slot. 200 hull, 150 armor, 100 shield. 100 cargo. Very limited — enough for basic mining and combat, but weak.
  • NPC market exclusion: Rookie Frigates are never sold on the NPC market — they exist only as free grants.

Why Free Respawn?

A player without a ship has no way to earn ISK — they can't mine, fight, or trade. A permanent "ship-less" state is a dead-end that causes player churn. The free Rookie Frigate ensures that every player always has a path back into the game, no matter how many times they're destroyed. The cost of death is the upgraded ship and modules you lost — not the ability to play at all.

Design rule: "Never softlock the player out of the game loop." The Rookie Frigate is the safety net.

NPC Market — Ship Pricing

NPC sell orders provide baseline ship availability. At galaxy generation, the server seeds NPC sell orders for every ship type at stations with Factory services. These orders have infinite quantity (they never run out) but are priced at a premium over manufacturing cost. This ensures: (1) players can always buy a basic ship hull, (2) player manufacturers can undercut NPC prices profitably, (3) the economy has a known ISK sink ceiling per ship class.
{[ { cls: 'Frigate', mfg: '~8,000 ISK', npc: '~15,000 ISK', insurance: '~10,500 ISK (70%)', effective: '~4,500 ISK + modules' }, { cls: 'Destroyer', mfg: '~20,000 ISK', npc: '~35,000 ISK', insurance: '~24,500 ISK (70%)', effective: '~10,500 ISK + modules' }, { cls: 'Cruiser', mfg: '~60,000 ISK', npc: '~100,000 ISK', insurance: '~70,000 ISK (70%)', effective: '~30,000 ISK + modules' }, { cls: 'Battlecruiser', mfg: '~180,000 ISK', npc: '~300,000 ISK', insurance: '~210,000 ISK (70%)', effective: '~90,000 ISK + modules' }, { cls: 'Battleship', mfg: '~500,000 ISK', npc: '~800,000 ISK', insurance: '~560,000 ISK (70%)', effective: '~240,000 ISK + modules' }, ].map((row, i) => ( ))}
Ship ClassManufacturing CostNPC Sell PriceInsurance (Standard)Effective Replacement
{row.cls} {row.mfg} {row.npc} {row.insurance} {row.effective}

Ship Switching Flow

Docked Ship Switch

1. Dock at station — Player must be docked. Cannot switch ships while in space.
2. Open Hangar panel — Station Mode → Hangar tab. Shows all ships stored at this station.
3. Select a ship — Shows ship name, class, fitting summary, cargo, insurance status.
4. Activate — Click "Make Active". Current active ship moves to hangar. Selected ship becomes active.
5. Cargo transfer — Prompt to transfer cargo between ships (limited by destination capacity). Remaining stays in station inventory.
6. Undock — Player undocks in the new active ship. Old ship stays in hangar.
Cannot switch while in space. If your ship is destroyed, you respawn at your home station in a Rookie Frigate — you cannot switch to a hangar ship remotely. You must fly to the station where the ship is stored and dock. This is intentional: it creates geographic identity ("my ships are in Amarr") and makes home station choice meaningful.
SHIP-ACQ-DB

Backend Impact

Schema & Reducer Changes

ships — add column: storage_location (enum: active / hangar:station_id). When active, ship has system_id/x/y/z. When in hangar, stored at station.
ships — add column: is_rookie (bool, default false). Rookie frigates are untradeable, uninsurable, free-replace.
npc_sell_orders — seeded at galaxy gen for every ship_types entry at Factory stations. Infinite quantity. Price = base_hull_value × 1.5.
New reducer: switch_ship(player_id, target_ship_id) — validate docked, validate target in same station hangar, swap active ↔ hangar.
Updated reducer: connect_player(display_name) — on first connection, spawn Rookie Frigate at faction starter station. On subsequent, load existing active ship.
Updated reducer: respawn_player(player_id) — on ship destruction, create new Rookie Frigate at home station, set as active.
)} {/* AI CREW */} {activeSection === 'crew' && ( <>
Post-MVP feature. AI crew is designed here so the ship and backend architecture supports it from the start, but implementation is planned after the core gameplay loop ships.
SHIP-AI

AI Crew System

Players can own multiple ships and assign AI crew members to pilot them. AI ships execute autonomous tasks — mining runs, patrol routes, trade delivery — while the player controls their primary ship directly. AI crew gain experience over time and improve at their assigned role.

Crew Roles

RoleBehaviorXP Growth
Miner Warps to belt, mines until cargo full, returns to station, sells ore. Faster cycle times, better ore selection.
Patrol Circulates waypoints, engages hostiles, reports contacts. Better target priority, longer patrol endurance.
Hauler Moves cargo between stations along trade routes. Faster warp align, larger cargo optimization.
Guard Escorts player ship, engages threats within range. Better reaction time, coordination with fleet.

Crew Progression

Rank levels:
CadetEnsign →{' '} Lieutenant →{' '} Commander →{' '} Captain

XP sources:
• Task completion (base XP)
• Task success rate bonus
• Survival bonus (ship not destroyed)
• Player commendation (manual XP grant)
SHIP-OPS

Task Assignment Flow

1. Player docks at station and opens Crew Management panel
2. Selects an idle ship + available crew member
3. Assigns a task template (mine system X, patrol route Y, haul to station Z)
4. Crew departs autonomously — ship disappears from player's direct control
5. Player receives periodic status reports in a dedicated channel
6. Task completes (or ship is destroyed) → crew returns to station or sends distress signal
7. Resources earned are deposited in player's station inventory
Risk: AI crew earning passive income could trivialize the economy. Mitigation: AI operations have costs (fuel, maintenance, crew wages) and diminishing returns at scale. A player with 10 AI miners shouldn't earn 10× a single player — there should be coordination overhead.
AI Crew vs. Zora (Ship AI): These are two different systems. AI Crew (this tab) are autonomous pilots that fly other ships on your behalf — mining runs, patrol routes, hauling. Zora (see Ship AI page) is a companion AI installed on your current ship that provides market intelligence, tactical advice, and dialogue. Think of AI Crew as your employees and Zora as your ship's computer. They do not share systems, modules, or XP. A future expansion may let Zora be assigned to an AI Crew ship, but that is post-MVP scope.
)} {/* Death & Loss */}
Slot scope note: High, Medium, and Low slots cover combat, mining, propulsion, and tank modules. Ship AI modules (Communications Processor, Market Analyzer, etc.) are a separate system — see the Ship AI → Module Gates tab for the full AI module catalog and how they install alongside standard fittings.
SHIP-DEATH

Ship Destruction

What you lose

  • The ship hull itself (destroyed)
  • All fitted modules (50% chance each to drop as loot)
  • Cargo — destroyed or dropped (50/50 split)
  • AI crew aboard — injured, require medical bay recovery time

What you keep

  • Your other ships in hangars
  • Station inventory and assets
  • Player XP and progression
  • ISK in wallet (₢)
Respawn: Player respawns at their home station (or nearest friendly station) in a rookie frigate. Insurance policies can partially reimburse ship loss.
); } window.GDD.ShipsPage = ShipsPage;