An option used to do exactly what it said. Now it may carry a check: one of
four attributes (Nerve, Wits, Charm, Resolve) against a set difficulty or
against a named person's own attribute, leaning on how they regard you, with a
success and a failure. The player sees only the odds in words ("a long shot",
"likely"), never a number. The roll is one draw from the run's generator, so a
run still replays exactly from its seed and choices.
A character may be a role with several authored candidates, one drawn per run,
or a group of two to four drawn into numbered slots. Everyone carries a name, a
description and the same four attributes as the player, so a replayed pack
meets a different office. Text names people as {partner} or {clerk}, and an
event about "a clerk" binds one present clerk for the turn. The draw and the
binding are saved with the run, and a save from before a pack drew a cast gets
the same one every time it is loaded.
All of it is generic and optional: Corporate Ladder and the Frontier use none
of it and play as before. The Counting House, a one-stage office about 1910
built from the story-to-pack catalogue, exercises it, and was tuned against the
conformance suite by measurement. DECISIONS #41. Version 0.4.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018MhABSrqkwTdcybXmheDPr
25 lines
890 B
JavaScript
25 lines
890 B
JavaScript
// The packs this build ships with.
|
|
//
|
|
// A setting is a content pack, and this is the only list of them. Adding one
|
|
// is an import and an entry — no engine change, no interface change, and
|
|
// nothing anywhere else that names it. `packs[0]` is what a first-time player
|
|
// starts in.
|
|
//
|
|
// The bundler follows static imports from the entry module, so appearing in
|
|
// this file is also what gets a pack into `dist/theladder.html`.
|
|
|
|
import { corporateLadder } from './corporateladder/index.js';
|
|
import { frontier } from './frontier/index.js';
|
|
import { countingHouse } from './countinghouse/index.js';
|
|
|
|
export const packs = [corporateLadder, frontier, countingHouse];
|
|
|
|
/** A pack by id, or undefined. Used to resume into whatever was last played. */
|
|
export function packById(id) {
|
|
return packs.find((pack) => pack.id === id);
|
|
}
|
|
|
|
export const defaultPack = packs[0];
|
|
|
|
export default packs;
|