25 lines
1.1 KiB
TypeScript
25 lines
1.1 KiB
TypeScript
// npcs section — surface canon flavor for the kinds of figures who fit the
|
|
// encounter (how such a figure talks, wants, acts, and is seen), contextual to
|
|
// the vibe. For a RANDOM encounter these are archetypes only ("a blood mage
|
|
// at a rite", "a bound sacrifice", "a cult acolyte") — never named canon NPCs.
|
|
// The wizard names the top ~3-4 as AskUserQuestion "which archetype?" options.
|
|
//
|
|
// Usage: GRAPHMCP_URL=http://localhost:9000 npx tsx scripts/lore-archetypes.ts "<vibe>" [limit]
|
|
// Exit 0 with results / 1 on fetch failure / 2 on usage error.
|
|
|
|
import { printOptions, sectionQuery } from './loreShared.js';
|
|
|
|
const vibe = process.argv[2];
|
|
const limit = Number(process.argv[3] ?? 8);
|
|
|
|
if (!vibe) {
|
|
console.error('Usage: npx tsx scripts/lore-archetypes.ts "<vibe>" [limit]');
|
|
process.exit(2);
|
|
}
|
|
|
|
try {
|
|
await printOptions(sectionQuery('Mardonar people by role and archetype — behavior, appearance, reputation, wants, and voice', vibe), limit);
|
|
} catch (err) {
|
|
console.error(`GraphMCP lookup failed: ${String((err as Error)?.message ?? err)}`);
|
|
process.exit(1);
|
|
} |