Add Pathfinder 2e game system mode
CI / check (push) Successful in 2m21s
CI / build-image (push) Successful in 24s

Implements PF2e as an alternative game system alongside D&D 5e/5.5e.
Settings modal "Game System" selector switches conditions, bestiary,
stat block layout, and initiative calculation between systems.

- Valued conditions with increment/decrement UX (Clumsy 2, Frightened 3)
- 2,502 PF2e creatures from bundled search index (77 sources)
- PF2e stat block: level, traits, Perception, Fort/Ref/Will, ability mods
- Perception-based initiative rolling
- System-scoped source cache (D&D and PF2e sources don't collide)
- Backwards-compatible condition rehydration (ConditionId[] → ConditionEntry[])
- Difficulty indicator hidden in PF2e mode (excluded from MVP)

Closes dostulata/initiative#19

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Lukas
2026-04-07 01:26:22 +02:00
co-authored by Claude Opus 4.6
parent 8f6eebc43b
commit e62c49434c
67 changed files with 27758 additions and 527 deletions
+8
View File
@@ -13,6 +13,7 @@ export {
export {
CONDITION_DEFINITIONS,
type ConditionDefinition,
type ConditionEntry,
type ConditionId,
getConditionDescription,
getConditionsForEdition,
@@ -23,6 +24,7 @@ export {
createPlayerCharacter,
} from "./create-player-character.js";
export {
type AnyCreature,
type BestiaryIndex,
type BestiaryIndexEntry,
type BestiarySource,
@@ -31,6 +33,9 @@ export {
creatureId,
type DailySpells,
type LegendaryBlock,
type Pf2eBestiaryIndex,
type Pf2eBestiaryIndexEntry,
type Pf2eCreature,
proficiencyBonus,
type SpellcastingBlock,
type TraitBlock,
@@ -87,6 +92,7 @@ export type { ExportBundle } from "./export-bundle.js";
export { deriveHpStatus, type HpStatus } from "./hp-status.js";
export {
calculateInitiative,
calculatePf2eInitiative,
formatInitiativeModifier,
type InitiativeResult,
} from "./initiative.js";
@@ -127,6 +133,8 @@ export {
toggleConcentration,
} from "./toggle-concentration.js";
export {
decrementCondition,
setConditionValue,
type ToggleConditionSuccess,
toggleCondition,
} from "./toggle-condition.js";