import type { Contract } from "./contract"; export const LONG_HAUL_SKILL_ID = "long-haul"; /** A pilot's skill levels by skill id; a missing skill is level 0. */ export type SkillLevels = Readonly>; export type PilotCheck = { ok: true } | { ok: false; reason: "cargo-skill-too-low" | "long-haul-too-low" }; export function skillLevel(skills: SkillLevels, skillId: string): number { return skills[skillId] ?? 0; } /** Whether a pilot's skills meet a contract's cargo-skill and Long Haul requirements. */ export function checkPilotEligibility(skills: SkillLevels, contract: Contract): PilotCheck { const required = contract.requiredSkill; if (required && skillLevel(skills, required.skillId) < required.level) { return { ok: false, reason: "cargo-skill-too-low" }; } if (skillLevel(skills, LONG_HAUL_SKILL_ID) < contract.requiredLongHaulLevel) { return { ok: false, reason: "long-haul-too-low" }; } return { ok: true }; }