Build MVP: campaigns, characters, combat, dice, compendium
- Rules abstraction (5e + pf2e) behind one interface, fully tested - Pure combat engine: turn-order safe across add/remove/reorder/init-change - Dexie storage with real cascade deletes + Zod validation on write - Seedable dice engine with notation parser - Lazy SRD compendium (code-split), bestiary -> combat - Strict TS, 54 unit tests, Playwright e2e smoke (all green) Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,20 @@
|
||||
import type { RulesSystem, SystemId } from './types';
|
||||
import { dnd5e } from './dnd5e';
|
||||
import { pf2e } from './pf2e';
|
||||
|
||||
const SYSTEMS: Record<SystemId, RulesSystem> = {
|
||||
'5e': dnd5e,
|
||||
pf2e,
|
||||
};
|
||||
|
||||
export function getSystem(id: SystemId): RulesSystem {
|
||||
return SYSTEMS[id];
|
||||
}
|
||||
|
||||
export const SYSTEM_OPTIONS: { id: SystemId; label: string }[] = [
|
||||
{ id: '5e', label: dnd5e.label },
|
||||
{ id: 'pf2e', label: pf2e.label },
|
||||
];
|
||||
|
||||
export * from './types';
|
||||
export { abilityModifier, ABILITY_ABBR, ABILITY_LABELS } from './abilities';
|
||||
Reference in New Issue
Block a user