deadhead-space-freight-tycoon/packages/content/src/data/config.ts

51 lines
2.0 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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,
};