import type { GameConfig } from "../schemas"; /** Default tuning. All numbers are first guesses until balancing in Phase 12. */ export const gameConfig: GameConfig = { // 1 real minute = 1 game hour. timeCompression: 60, // Placeholders: the design docs do not fix an in-game start date yet. epoch: { realStart: "2026-01-01T00:00:00Z", ephemerisDate: "2100-01-01T00:00:00Z", }, // A small cushion: a couple of Courier fuel loads from Earth (CR-001). startingCredits: 500, tutorialPayoutShare: 0.5, contractBoardSize: 8, // One tutorial contract per mass tier (CR-001). tutorialBoardSize: 3, tutorialLoanerShipModelId: "company-courier", tutorialRunsBeforeDeal: 4, tutorialMassTonnes: { light: 5, medium: 12, full: 20 }, // 20 t adds 0.4 game hours (24 real seconds) of loading and unloading. handlingGameHoursPerTonne: 0.02, loanRepaymentShare: 0.3, // Courier price + Earth bay lease. dealLoanAmount: 5000, contractBoardPeriodRealMinutes: 60, // Duty and rest (CR-004): about three Moon round trips, then rest. dutyLimitGameHours: 12, longHaulDutyBonusGameHours: 2, // One board period (60 real minutes at 60× compression), so a rested pilot // always wakes to a fresh board (decision 0.5.46). restGameHours: 60, firstContactChance: 0.1, firstContactPayoutMultiplier: 2, // One band per ship size, so every board has work for every ship (playtest fix): // up to a Courier's 20 t, a Freighter's 100 t, and a Bulk Hauler's 400 t. contractMassBands: [ { min: 5, max: 20, count: 3 }, { min: 21, max: 100, count: 3 }, { min: 101, max: 400, count: 2 }, ], // Mars at its closest needs no Long Haul; Jupiter at its farthest needs level 5. longHaulCutoffsMillionKm: [100, 250, 400, 600, 800], xpPerDelivery: { base: 10, perMillionKm: 0.2, perCargoTier: 5 }, pilotLevelXpThresholds: [100, 250, 450, 700, 1000, 1400, 1900, 2500, 3200, 4000], // Ten levels × 2 points = enough to max all four skills (4 × 5 levels). skillPointsPerLevel: 2, pilotHireCost: 2000, pilotPayPerDelivery: 100, };