118 lines
2.0 KiB
TypeScript
118 lines
2.0 KiB
TypeScript
import { createRng, deriveSeed, type Seed } from "@deadhead/sim";
|
|
|
|
const SHIP_ADJECTIVES = [
|
|
"Dusty",
|
|
"Rusty",
|
|
"Lucky",
|
|
"Stubborn",
|
|
"Quiet",
|
|
"Restless",
|
|
"Patient",
|
|
"Wandering",
|
|
"Crooked",
|
|
"Faithful",
|
|
"Midnight",
|
|
"Copper",
|
|
"Iron",
|
|
"Silver",
|
|
"Old",
|
|
"Brave",
|
|
];
|
|
const SHIP_NOUNS = [
|
|
"Mule",
|
|
"Ox",
|
|
"Heron",
|
|
"Comet",
|
|
"Lantern",
|
|
"Drifter",
|
|
"Kettle",
|
|
"Anchor",
|
|
"Sparrow",
|
|
"Badger",
|
|
"Tortoise",
|
|
"Pilgrim",
|
|
"Barge",
|
|
"Nomad",
|
|
"Hauler",
|
|
"Wren",
|
|
];
|
|
const FIRST_NAMES = [
|
|
"Rae",
|
|
"Jonah",
|
|
"Mira",
|
|
"Tobias",
|
|
"Ines",
|
|
"Kofi",
|
|
"Lena",
|
|
"Arjun",
|
|
"Sasha",
|
|
"Dmitri",
|
|
"Yuki",
|
|
"Nadia",
|
|
"Emeka",
|
|
"Freya",
|
|
"Mateo",
|
|
"Priya",
|
|
];
|
|
const LAST_NAMES = [
|
|
"Okafor",
|
|
"Lindqvist",
|
|
"Moreau",
|
|
"Tanaka",
|
|
"Reyes",
|
|
"Novak",
|
|
"Haddad",
|
|
"Kowalski",
|
|
"Mbeki",
|
|
"Castillo",
|
|
"Sorensen",
|
|
"Iyer",
|
|
"Brennan",
|
|
"Vasquez",
|
|
"Kim",
|
|
"Abara",
|
|
];
|
|
|
|
/** The nth ship name in a world (decision 0.5.14): stable for a given seed and n. */
|
|
export function shipName(worldSeed: Seed, n: number): string {
|
|
const rng = createRng(deriveSeed(worldSeed, `ship-name:${n}`));
|
|
return `${rng.pick(SHIP_ADJECTIVES)} ${rng.pick(SHIP_NOUNS)}`;
|
|
}
|
|
|
|
/** The nth hired pilot's name in a world: stable for a given seed and n. */
|
|
export function pilotName(worldSeed: Seed, n: number): string {
|
|
const rng = createRng(deriveSeed(worldSeed, `pilot-name:${n}`));
|
|
return `${rng.pick(FIRST_NAMES)} ${rng.pick(LAST_NAMES)}`;
|
|
}
|
|
|
|
const COMPANY_FIRST = [
|
|
"Halcyon",
|
|
"Meridian",
|
|
"Lodestar",
|
|
"Northstar",
|
|
"Bluewater",
|
|
"Redline",
|
|
"Ironclad",
|
|
"Kestrel",
|
|
"Copperhead",
|
|
"Longhaul",
|
|
"Brightwater",
|
|
"Stonebridge",
|
|
];
|
|
const COMPANY_LAST = [
|
|
"Freight",
|
|
"Haulage",
|
|
"Cargo",
|
|
"Logistics",
|
|
"Shipping",
|
|
"Transit",
|
|
"Lines",
|
|
"Carriers",
|
|
];
|
|
|
|
/** A company's default name, stable for its world seed (decision 0.5.75). */
|
|
export function companyName(worldSeed: Seed): string {
|
|
const rng = createRng(deriveSeed(worldSeed, "company-name"));
|
|
return `${rng.pick(COMPANY_FIRST)} ${rng.pick(COMPANY_LAST)}`;
|
|
}
|