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

61 lines
1.8 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 { Upgrade } from "../schemas";
/**
* Ship upgrades (CR-009 §2). Percentages are of the model's base stat and add
* up across levels. Overrides keep models distinct (decision 0.5.67) and give a
* maxed Courier a reach to Mars near closest approach only (decision 0.5.68).
*/
export const upgrades: Upgrade[] = [
{
id: "engines",
name: "Engine Tuning",
stat: "cruiseSpeedKmPerGameHour",
percentPerLevel: 10,
maxLevel: 3,
},
{
id: "cargo-bay",
name: "Cargo Bay Expansion",
stat: "cargoCapacityTonnes",
percentPerLevel: 15,
maxLevel: 3,
},
{
id: "fuel-tanks",
name: "Extended Fuel Tanks",
stat: "fuelRangeMillionKm",
percentPerLevel: 20,
maxLevel: 3,
modelOverrides: {
// 5 → 35 → 65 → 95 M km: Mars (≈ 55–400 M km) only near closest approach, and only at level 3.
courier: { percentPerLevel: 600 },
// 650 → 942.5 M km at level 3: still short of a base Bulk Hauler's 1000 (and of Jupiter at its farthest).
freighter: { percentPerLevel: 15 },
},
},
{
id: "landing-thrusters",
name: "Landing Thrusters",
stat: "overheadGameHours",
percentPerLevel: -15,
maxLevel: 3,
},
{
id: "handling-gear",
name: "Cargo Handling Gear",
stat: "handlingGameHoursPerTonne",
percentPerLevel: -15,
maxLevel: 3,
},
];
/** An upgrade's percent per level for a ship model, after overrides. */
export function upgradePercentPerLevel(upgrade: Upgrade, modelId: string): number {
return upgrade.modelOverrides?.[modelId]?.percentPerLevel ?? upgrade.percentPerLevel;
}
/** An upgrade's highest level for a ship model, after overrides. */
export function upgradeMaxLevel(upgrade: Upgrade, modelId: string): number {
return upgrade.modelOverrides?.[modelId]?.maxLevel ?? upgrade.maxLevel;
}