@archivist-gg/dnd5e 0.3.19 → 0.3.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +48 -21
- package/README.md +26 -48
- package/dist/armor/armor.codec.d.ts +0 -7
- package/dist/armor/armor.codec.js +1 -9
- package/dist/armor/armor.parser.js +1 -8
- package/dist/armor/armor.schema.js +1 -7
- package/dist/armor/armor.types.d.ts +0 -3
- package/dist/background/background.codec.d.ts +0 -6
- package/dist/background/background.codec.js +1 -12
- package/dist/background/background.parser.js +1 -11
- package/dist/background/background.schema.js +1 -12
- package/dist/background/background.types.d.ts +0 -5
- package/dist/chunk-2EOGK6R6.js +1 -0
- package/dist/chunk-2HRRH3WL.js +1 -0
- package/dist/chunk-2LCGKNVM.js +1 -0
- package/dist/chunk-2NUDWOFG.js +1 -0
- package/dist/chunk-334WLI7V.js +1 -0
- package/dist/chunk-3LWOVRLA.js +1 -0
- package/dist/chunk-3QQOATV3.js +1 -0
- package/dist/chunk-4E2GIWJE.js +1 -0
- package/dist/chunk-4GN3GYMP.js +1 -0
- package/dist/chunk-4IAMSRHD.js +1 -0
- package/dist/chunk-4JEF3CET.js +1 -0
- package/dist/chunk-4KVVAENP.js +1 -0
- package/dist/chunk-56JK6VCL.js +1 -0
- package/dist/chunk-5FEXHY4U.js +1 -0
- package/dist/chunk-63YJPWTM.js +1 -0
- package/dist/chunk-6ASJ3MVB.js +1 -0
- package/dist/chunk-6IC53O3Q.js +1 -0
- package/dist/chunk-6LCNV26D.js +1 -0
- package/dist/chunk-6W253VHH.js +1 -0
- package/dist/chunk-7AKJBRBD.js +1 -0
- package/dist/chunk-7EL3GWWJ.js +1 -0
- package/dist/chunk-7FPQJDFD.js +1 -0
- package/dist/chunk-7J5BNH2D.js +1 -0
- package/dist/chunk-7LPKI27J.js +1 -0
- package/dist/chunk-7UPYRKMF.js +1 -0
- package/dist/chunk-A7H6LX47.js +1 -0
- package/dist/chunk-AINRPPLH.js +1 -0
- package/dist/chunk-BC52J4LA.js +1 -0
- package/dist/chunk-BCXGB4HP.js +1 -0
- package/dist/chunk-BGX36NPE.js +1 -0
- package/dist/chunk-BPKG6RZ7.js +1 -0
- package/dist/chunk-BREHZNTL.js +1 -0
- package/dist/chunk-BZ6BGGZS.js +1 -0
- package/dist/chunk-CAPYNIGK.js +1 -0
- package/dist/chunk-CCFIINBA.js +1 -0
- package/dist/chunk-CMIEZQL4.js +1 -0
- package/dist/chunk-DVUXUIPV.js +1 -0
- package/dist/chunk-DY6FVAGA.js +1 -0
- package/dist/chunk-DZITM5AG.js +1 -0
- package/dist/chunk-DZKSXSJF.js +1 -0
- package/dist/chunk-EAARMPCW.js +1 -0
- package/dist/chunk-EVT7MGAC.js +1 -0
- package/dist/chunk-FOLHTMSC.js +1 -0
- package/dist/chunk-GCYUCIDN.js +1 -0
- package/dist/chunk-GIOV6JW7.js +1 -0
- package/dist/chunk-HCK6IUB3.js +1 -0
- package/dist/chunk-HR5MKCP2.js +1 -0
- package/dist/chunk-I26FHSI6.js +1 -0
- package/dist/chunk-I4O2FIDT.js +1 -0
- package/dist/chunk-IGVRLGLM.js +1 -0
- package/dist/chunk-IHPLT2ZT.js +1 -0
- package/dist/chunk-IOCJIWCV.js +1 -0
- package/dist/chunk-JXDX2DKF.js +1 -0
- package/dist/chunk-KBFSJ5WE.js +1 -0
- package/dist/chunk-KM75CC6Q.js +1 -0
- package/dist/chunk-KZDDFG4O.js +1 -0
- package/dist/chunk-LJNT3PJP.js +1 -0
- package/dist/chunk-LR6UMA5V.js +1 -0
- package/dist/chunk-M6RPOLKS.js +1 -0
- package/dist/chunk-MC6PLWRZ.js +1 -0
- package/dist/chunk-MGGKZGLG.js +1 -0
- package/dist/chunk-N3RYJ7RE.js +1 -0
- package/dist/chunk-NEMX7QGG.js +1 -0
- package/dist/chunk-NI364WV7.js +1 -0
- package/dist/chunk-O2QZ73GA.js +1 -0
- package/dist/chunk-O776WL7O.js +1 -0
- package/dist/chunk-OTFNINUY.js +1 -0
- package/dist/chunk-PQAVMK3T.js +1 -0
- package/dist/chunk-PZ3ZZ5H5.js +1 -0
- package/dist/chunk-PZ4L2EEG.js +1 -0
- package/dist/chunk-PZUPZBTN.js +1 -0
- package/dist/chunk-QBA757AU.js +1 -0
- package/dist/chunk-QFIGPOFW.js +1 -0
- package/dist/chunk-QMEKQTUT.js +1 -0
- package/dist/chunk-QVWT67WA.js +1 -0
- package/dist/chunk-RDXQAZBA.js +1 -0
- package/dist/chunk-RE5Z5RNK.js +1 -0
- package/dist/chunk-RL4VY2AL.js +1 -0
- package/dist/chunk-RQGTBHJW.js +1 -0
- package/dist/chunk-RQZCGXUZ.js +1 -0
- package/dist/chunk-S5UCI27C.js +1 -0
- package/dist/chunk-SEOASDO4.js +1 -0
- package/dist/chunk-SU4MEZ5P.js +1 -0
- package/dist/chunk-T55DELVL.js +1 -0
- package/dist/chunk-TKIEPC6F.js +1 -0
- package/dist/chunk-TLXFGGWH.js +1 -0
- package/dist/chunk-UBUKCRZ3.js +1 -0
- package/dist/chunk-V6NQ547U.js +1 -0
- package/dist/chunk-VA3ZWV7C.js +1 -0
- package/dist/chunk-VIP3FH2O.js +1 -0
- package/dist/chunk-VTQ4RWEG.js +1 -0
- package/dist/chunk-WUHTSLG4.js +1 -0
- package/dist/chunk-X22SISGM.js +1 -0
- package/dist/chunk-XKJXT2PN.js +1 -0
- package/dist/chunk-XQMKH4R4.js +1 -0
- package/dist/chunk-YGH7S5ZF.js +1 -0
- package/dist/chunk-ZE46ADXS.js +1 -0
- package/dist/chunk-ZI3FEUX3.js +1 -0
- package/dist/class/class.codec.d.ts +0 -7
- package/dist/class/class.codec.js +1 -18
- package/dist/class/class.parser.js +1 -17
- package/dist/class/class.schema.d.ts +2 -1
- package/dist/class/class.schema.js +1 -15
- package/dist/class/class.slug.d.ts +0 -11
- package/dist/class/class.slug.js +1 -8
- package/dist/class/class.standard-array.d.ts +0 -7
- package/dist/class/class.standard-array.js +1 -20
- package/dist/class/class.types.d.ts +0 -20
- package/dist/condition/condition.codec.d.ts +0 -6
- package/dist/condition/condition.parser.d.ts +0 -10
- package/dist/condition/condition.parser.js +1 -7
- package/dist/condition/condition.schema.d.ts +0 -16
- package/dist/condition/condition.types.d.ts +0 -3
- package/dist/data-srd/index.generated.js +1 -146
- package/dist/dnd/amount-text.d.ts +3 -30
- package/dist/dnd/amount-text.js +1 -15
- package/dist/dnd/constants.d.ts +0 -18
- package/dist/dnd/constants.js +1 -42
- package/dist/dnd/formula-tags.d.ts +0 -2
- package/dist/dnd/formula-tags.js +1 -119
- package/dist/dnd/math.d.ts +0 -26
- package/dist/dnd/math.js +1 -45
- package/dist/dnd/prose-tags.d.ts +1 -15
- package/dist/dnd/prose-tags.js +1 -18
- package/dist/dnd/resource-die.d.ts +0 -4
- package/dist/dnd/resource-die.js +1 -17
- package/dist/dnd/resource-formula.d.ts +0 -43
- package/dist/dnd/resource-formula.js +1 -14
- package/dist/dnd/resource-words.d.ts +0 -2
- package/dist/dnd/resource-words.js +1 -30
- package/dist/dnd/srd-tag-converter.d.ts +0 -21
- package/dist/dnd/srd-tag-converter.js +1 -12
- package/dist/dnd/tag-grammar.js +1 -12
- package/dist/dnd/warn-once.js +1 -8
- package/dist/encounter/encounter.ai-schema.js +1 -8
- package/dist/entities/base-item-resolver.d.ts +0 -26
- package/dist/entities/base-item-resolver.js +1 -11
- package/dist/entities/registry-revision.d.ts +0 -15
- package/dist/entities/registry-revision.js +1 -10
- package/dist/entities/slug.d.ts +1 -31
- package/dist/entities/slug.js +1 -12
- package/dist/entities/wikilink-display.d.ts +0 -2
- package/dist/entities/wikilink-display.js +1 -10
- package/dist/feat/feat.category-codes.d.ts +1 -26
- package/dist/feat/feat.category-codes.js +1 -14
- package/dist/feat/feat.codec.d.ts +0 -6
- package/dist/feat/feat.codec.js +1 -12
- package/dist/feat/feat.parser.js +1 -11
- package/dist/feat/feat.schema.d.ts +22 -1
- package/dist/feat/feat.schema.js +1 -10
- package/dist/feat/feat.types.d.ts +0 -6
- package/dist/index.js +45 -141495
- package/dist/inline-tag-parser.js +1 -6
- package/dist/item/item.actions-map.d.ts +4 -63
- package/dist/item/item.actions-map.js +1 -10
- package/dist/item/item.ai-schema.js +1 -6
- package/dist/item/item.attunement.d.ts +0 -14
- package/dist/item/item.attunement.js +1 -6
- package/dist/item/item.bonuses.js +1 -10
- package/dist/item/item.codec.js +1 -9
- package/dist/item/item.conditions.d.ts +0 -7
- package/dist/item/item.conditions.js +1 -11
- package/dist/item/item.conditions.types.d.ts +0 -2
- package/dist/item/item.cost.js +1 -29
- package/dist/item/item.enrichment.js +1 -9
- package/dist/item/item.icon.d.ts +0 -8
- package/dist/item/item.icon.js +1 -211
- package/dist/item/item.parser.js +1 -8
- package/dist/item/item.schema.d.ts +2 -0
- package/dist/item/item.schema.js +1 -11
- package/dist/item/item.types.d.ts +2 -28
- package/dist/monster/monster.ai-schema.js +1 -6
- package/dist/monster/monster.codec.d.ts +0 -10
- package/dist/monster/monster.enrichment.js +1 -19
- package/dist/monster/monster.format.d.ts +0 -69
- package/dist/monster/monster.format.js +1 -78
- package/dist/monster/monster.parser.d.ts +0 -4
- package/dist/monster/monster.parser.js +1 -15
- package/dist/monster/monster.resolve.d.ts +0 -4
- package/dist/monster/monster.schema.d.ts +0 -9
- package/dist/monster/monster.schema.js +1 -34
- package/dist/monster/monster.types.d.ts +0 -3
- package/dist/monster/monster.types.js +1 -1
- package/dist/optional-feature/optional-feature.codec.d.ts +0 -11
- package/dist/optional-feature/optional-feature.codec.js +1 -13
- package/dist/optional-feature/optional-feature.parser.js +1 -12
- package/dist/optional-feature/optional-feature.schema.d.ts +21 -1
- package/dist/optional-feature/optional-feature.schema.js +1 -15
- package/dist/pack.d.ts +0 -9
- package/dist/pc/conditions.constants.js +1 -6
- package/dist/pc/decision-recognizer.js +1 -8
- package/dist/pc/pc.additional-spells.d.ts +0 -24
- package/dist/pc/pc.additional-spells.js +1 -26
- package/dist/pc/pc.amount-bindings.d.ts +0 -25
- package/dist/pc/pc.amount-bindings.js +1 -28
- package/dist/pc/pc.asi-flatten.d.ts +0 -59
- package/dist/pc/pc.asi-flatten.js +1 -16
- package/dist/pc/pc.conditions.d.ts +1 -0
- package/dist/pc/pc.conditions.js +1 -6
- package/dist/pc/pc.containment.d.ts +0 -5
- package/dist/pc/pc.containment.js +1 -24
- package/dist/pc/pc.decision-engine.d.ts +0 -145
- package/dist/pc/pc.decision-engine.js +1 -55
- package/dist/pc/pc.defense-normalize.d.ts +0 -10
- package/dist/pc/pc.defense-normalize.js +1 -6
- package/dist/pc/pc.entry-overrides.d.ts +0 -58
- package/dist/pc/pc.entry-overrides.js +1 -41
- package/dist/pc/pc.equipment.d.ts +2 -22
- package/dist/pc/pc.equipment.js +1 -34
- package/dist/pc/pc.feature-effects.d.ts +22 -281
- package/dist/pc/pc.feature-effects.js +1 -39
- package/dist/pc/pc.formula-context.js +1 -11
- package/dist/pc/pc.infusions.d.ts +0 -65
- package/dist/pc/pc.infusions.js +1 -65
- package/dist/pc/pc.item-effects.d.ts +18 -0
- package/dist/pc/pc.member-choices.d.ts +3 -66
- package/dist/pc/pc.member-choices.js +1 -39
- package/dist/pc/pc.parser.js +1 -58
- package/dist/pc/pc.pools.d.ts +7 -10
- package/dist/pc/pc.pools.js +1 -27
- package/dist/pc/pc.proficiencies.d.ts +0 -40
- package/dist/pc/pc.proficiencies.js +1 -156
- package/dist/pc/pc.proficiency-grants.d.ts +0 -26
- package/dist/pc/pc.proficiency-normalize.d.ts +0 -35
- package/dist/pc/pc.proficiency-normalize.js +1 -18
- package/dist/pc/pc.proficiency-query.d.ts +0 -13
- package/dist/pc/pc.proficiency-query.js +1 -27
- package/dist/pc/pc.recalc.d.ts +7 -131
- package/dist/pc/pc.recalc.js +1 -1042
- package/dist/pc/pc.resolver.d.ts +0 -107
- package/dist/pc/pc.resolver.js +1 -60
- package/dist/pc/pc.resource-seed.d.ts +0 -8
- package/dist/pc/pc.resource-seed.js +1 -42
- package/dist/pc/pc.resources.d.ts +1 -59
- package/dist/pc/pc.resources.js +1 -23
- package/dist/pc/pc.rest.d.ts +1 -20
- package/dist/pc/pc.rest.js +1 -231
- package/dist/pc/pc.schema.d.ts +0 -2
- package/dist/pc/pc.schema.js +1 -9
- package/dist/pc/pc.slotting.d.ts +0 -29
- package/dist/pc/pc.slotting.js +1 -28
- package/dist/pc/pc.speeds.d.ts +19 -0
- package/dist/pc/pc.spell-scope.d.ts +0 -16
- package/dist/pc/pc.spellcasting.d.ts +0 -70
- package/dist/pc/pc.spellcasting.js +1 -28
- package/dist/pc/pc.table-column.d.ts +0 -22
- package/dist/pc/pc.table-column.js +1 -18
- package/dist/pc/pc.tool-picks.d.ts +0 -27
- package/dist/pc/pc.tool-picks.js +1 -18
- package/dist/pc/pc.types.d.ts +54 -374
- package/dist/pc/pc.weapon-grant.d.ts +0 -6
- package/dist/pc/pool-layout.d.ts +0 -39
- package/dist/pc/pool-layout.js +1 -18
- package/dist/pc/resource-equivalents.d.ts +2 -40
- package/dist/pc/roll-scope.js +1 -8
- package/dist/pc/roll-tag-labels.d.ts +0 -32
- package/dist/pc/roll-tag-labels.js +1 -17
- package/dist/pc/spell-source.d.ts +0 -11
- package/dist/pc/spell-source.js +1 -8
- package/dist/race/race.codec.d.ts +0 -6
- package/dist/race/race.codec.js +1 -15
- package/dist/race/race.parser.js +1 -14
- package/dist/race/race.schema.d.ts +0 -8
- package/dist/race/race.schema.js +1 -14
- package/dist/race/race.structural.d.ts +0 -6
- package/dist/race/race.structural.js +1 -6
- package/dist/race/race.types.d.ts +0 -8
- package/dist/schemas/attack-schema.d.ts +5 -0
- package/dist/schemas/caster-type-schema.d.ts +1 -6
- package/dist/schemas/caster-type-schema.js +1 -6
- package/dist/schemas/choice-schema.js +1 -7
- package/dist/schemas/duration-schema.d.ts +0 -2
- package/dist/schemas/duration-schema.js +1 -6
- package/dist/schemas/entity-extras-schema.d.ts +0 -30
- package/dist/schemas/entity-extras-schema.js +1 -10
- package/dist/schemas/equipment-grant-schema.d.ts +0 -2
- package/dist/schemas/equipment-grant-schema.js +1 -12
- package/dist/schemas/feature-alias.d.ts +0 -27
- package/dist/schemas/feature-effect-schema.d.ts +21 -1
- package/dist/schemas/feature-effect-schema.js +1 -6
- package/dist/schemas/feature-schema.d.ts +0 -6
- package/dist/schemas/feature-schema.js +1 -12
- package/dist/schemas/resource-schema.d.ts +1 -34
- package/dist/schemas/resource-schema.js +1 -12
- package/dist/schemas/selection-pool-schema.js +1 -10
- package/dist/spell/casting-time.d.ts +0 -15
- package/dist/spell/casting-time.js +1 -6
- package/dist/spell/spell.access.d.ts +0 -6
- package/dist/spell/spell.access.js +1 -45
- package/dist/spell/spell.ai-schema.js +1 -6
- package/dist/spell/spell.codec.js +1 -9
- package/dist/spell/spell.enrichment.js +1 -9
- package/dist/spell/spell.filter.d.ts +0 -5
- package/dist/spell/spell.filter.js +1 -75
- package/dist/spell/spell.parser.d.ts +0 -31
- package/dist/spell/spell.parser.js +1 -16
- package/dist/spell/spell.scaling.d.ts +0 -46
- package/dist/spell/spell.scaling.js +1 -79
- package/dist/spell/spell.schema.js +1 -7
- package/dist/spell/spell.types.d.ts +0 -7
- package/dist/srd/retired-items.d.ts +0 -4
- package/dist/srd/retired-items.js +1 -11
- package/dist/srd-store.d.ts +0 -33
- package/dist/subclass/subclass.codec.d.ts +0 -8
- package/dist/subclass/subclass.codec.js +1 -17
- package/dist/subclass/subclass.parser.js +1 -16
- package/dist/subclass/subclass.schema.d.ts +2 -1
- package/dist/subclass/subclass.schema.js +1 -14
- package/dist/subclass/subclass.types.d.ts +0 -3
- package/dist/types/attack.d.ts +2 -0
- package/dist/types/casting-option.d.ts +0 -4
- package/dist/types/choice.d.ts +1 -72
- package/dist/types/choice.js +1 -24
- package/dist/types/edition.d.ts +0 -3
- package/dist/types/equipment-grant.d.ts +1 -27
- package/dist/types/equipment-grant.js +1 -12
- package/dist/types/feature-effect.d.ts +4 -22
- package/dist/types/feature.d.ts +0 -22
- package/dist/types/optional-feature.types.d.ts +1 -31
- package/dist/types/resource.d.ts +1 -21
- package/dist/types/selection-pool.d.ts +0 -24
- package/dist/weapon/weapon-mastery.d.ts +0 -1
- package/dist/weapon/weapon.classify.d.ts +0 -11
- package/dist/weapon/weapon.classify.js +1 -7
- package/dist/weapon/weapon.codec.d.ts +0 -9
- package/dist/weapon/weapon.codec.js +1 -9
- package/dist/weapon/weapon.parser.js +1 -8
- package/dist/weapon/weapon.schema.js +1 -7
- package/dist/weapon/weapon.types.d.ts +0 -3
- package/package.json +3 -3
- package/src/data-srd/ATTRIBUTION.md +1 -1
- package/dist/chunk-2FRUSVZS.js +0 -489
- package/dist/chunk-2LULMQTF.js +0 -14
- package/dist/chunk-3LWMFYKS.js +0 -57
- package/dist/chunk-3SFGWFVQ.js +0 -19
- package/dist/chunk-3SIUAFDQ.js +0 -18
- package/dist/chunk-3TM34RSJ.js +0 -23
- package/dist/chunk-4J6DS3EJ.js +0 -30
- package/dist/chunk-4U55VNC7.js +0 -22
- package/dist/chunk-5GKJAUMX.js +0 -59
- package/dist/chunk-5JXFJ5AU.js +0 -26
- package/dist/chunk-64VNLMSG.js +0 -375
- package/dist/chunk-656QCX4U.js +0 -22
- package/dist/chunk-6GNXYAYP.js +0 -25
- package/dist/chunk-6PXTNCBP.js +0 -133
- package/dist/chunk-6X2NV665.js +0 -33
- package/dist/chunk-7Q2VPKCD.js +0 -181
- package/dist/chunk-7XJHI5H5.js +0 -709
- package/dist/chunk-A54HHCWW.js +0 -67
- package/dist/chunk-B2QHP6UF.js +0 -159
- package/dist/chunk-B3DP42OM.js +0 -55
- package/dist/chunk-BJGOSM76.js +0 -18
- package/dist/chunk-BJWSOQUC.js +0 -133
- package/dist/chunk-CJYCVNW2.js +0 -7
- package/dist/chunk-CM5CWO4K.js +0 -735
- package/dist/chunk-DEEHHLAP.js +0 -271
- package/dist/chunk-DPUJDOKV.js +0 -365
- package/dist/chunk-EJD47JHL.js +0 -1838
- package/dist/chunk-EJP263OP.js +0 -186
- package/dist/chunk-EVMUJYUD.js +0 -195
- package/dist/chunk-EYX4JMAU.js +0 -101
- package/dist/chunk-FC4IGH5Y.js +0 -18
- package/dist/chunk-FJYBLXV7.js +0 -89
- package/dist/chunk-FMUD3LDV.js +0 -19
- package/dist/chunk-FMYWORTP.js +0 -93
- package/dist/chunk-FVXLP7P3.js +0 -18
- package/dist/chunk-G6MHJDVT.js +0 -41
- package/dist/chunk-GVWEFECG.js +0 -18
- package/dist/chunk-HHBD4SQ6.js +0 -24
- package/dist/chunk-HS6FIOLP.js +0 -52
- package/dist/chunk-HY2SRSVM.js +0 -23
- package/dist/chunk-IHE6KVC3.js +0 -13
- package/dist/chunk-IN4M4X7P.js +0 -34
- package/dist/chunk-IUAAXXNO.js +0 -58
- package/dist/chunk-JXWNXIIZ.js +0 -219
- package/dist/chunk-K5NJBTE2.js +0 -18
- package/dist/chunk-KR6JF3BF.js +0 -14
- package/dist/chunk-KSTV7J2U.js +0 -112
- package/dist/chunk-KU3YLF6D.js +0 -106
- package/dist/chunk-LBEXLN6I.js +0 -91
- package/dist/chunk-LHZXYFBU.js +0 -94
- package/dist/chunk-LICYHPI3.js +0 -237
- package/dist/chunk-LNT64X7C.js +0 -81
- package/dist/chunk-LSLSG67V.js +0 -31
- package/dist/chunk-LVQLWRCU.js +0 -15
- package/dist/chunk-MYY2C5MB.js +0 -233
- package/dist/chunk-NKZMQV2C.js +0 -19
- package/dist/chunk-NTU2DXNG.js +0 -355
- package/dist/chunk-NXUY5XQN.js +0 -1062
- package/dist/chunk-NZO7M5GV.js +0 -18
- package/dist/chunk-OOL4KMG2.js +0 -71
- package/dist/chunk-OOSRUJBI.js +0 -19
- package/dist/chunk-PDJSUH24.js +0 -110
- package/dist/chunk-PTXBIDG7.js +0 -63
- package/dist/chunk-PVCEA4HZ.js +0 -6
- package/dist/chunk-QA3YCOML.js +0 -101
- package/dist/chunk-QFWQKS3M.js +0 -110
- package/dist/chunk-QS5L5YTJ.js +0 -24
- package/dist/chunk-QYZV2MQA.js +0 -97
- package/dist/chunk-RD2MID3M.js +0 -292
- package/dist/chunk-S3YUXDSC.js +0 -278
- package/dist/chunk-S7REMWW4.js +0 -21
- package/dist/chunk-TOM66P2P.js +0 -38
- package/dist/chunk-TRBGC4ZG.js +0 -112
- package/dist/chunk-UA5KS2PL.js +0 -26
- package/dist/chunk-UJCK5IW4.js +0 -187
- package/dist/chunk-UNYR5GLI.js +0 -23
- package/dist/chunk-UZXG6QSY.js +0 -58
- package/dist/chunk-VN5DLURA.js +0 -158
- package/dist/chunk-VP5TIXDK.js +0 -178
- package/dist/chunk-VPYBK2MG.js +0 -18
- package/dist/chunk-VTTA2ALZ.js +0 -16
- package/dist/chunk-W6GC6OKK.js +0 -16
- package/dist/chunk-WELIKLZF.js +0 -256
- package/dist/chunk-WOHX7YTH.js +0 -165
- package/dist/chunk-WSVMLNTO.js +0 -31
- package/dist/chunk-WYGD2UGN.js +0 -14
- package/dist/chunk-XCFC7LGF.js +0 -122
- package/dist/chunk-XJ2F2WO6.js +0 -8
- package/dist/chunk-XTEFPUSN.js +0 -23
- package/dist/chunk-YBLDE5CG.js +0 -42
- package/dist/chunk-YDGMBMYI.js +0 -25
- package/dist/chunk-YHYTW5QA.js +0 -20
- package/dist/chunk-ZCTUYGNV.js +0 -26
- package/dist/chunk-ZDAEGJH4.js +0 -102
- package/dist/chunk-ZJXSXVFP.js +0 -58
- package/dist/chunk-ZOWKWMD2.js +0 -18
- package/dist/chunk-ZUQW5VBZ.js +0 -89
package/dist/chunk-FMYWORTP.js
DELETED
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
actionCostEnum,
|
|
3
|
-
resourceSchema
|
|
4
|
-
} from "./chunk-ZJXSXVFP.js";
|
|
5
|
-
import {
|
|
6
|
-
choiceSchema
|
|
7
|
-
} from "./chunk-OOL4KMG2.js";
|
|
8
|
-
import {
|
|
9
|
-
featureEffectSchema
|
|
10
|
-
} from "./chunk-JXWNXIIZ.js";
|
|
11
|
-
import {
|
|
12
|
-
additionalSpellsEntrySchema,
|
|
13
|
-
imageField,
|
|
14
|
-
progressionSchema
|
|
15
|
-
} from "./chunk-UA5KS2PL.js";
|
|
16
|
-
|
|
17
|
-
// src/feat/feat.schema.ts
|
|
18
|
-
import { z } from "zod";
|
|
19
|
-
var abilityEnum = z.enum(["str", "dex", "con", "int", "wis", "cha"]);
|
|
20
|
-
var editionEnum = z.enum(["2014", "2024"]);
|
|
21
|
-
var categoryEnum = z.enum(["origin", "general", "fighting-style", "epic-boon"]);
|
|
22
|
-
var prerequisiteSchema = z.discriminatedUnion("kind", [
|
|
23
|
-
z.object({ kind: z.literal("ability"), ability: abilityEnum, min: z.number().int().positive() }),
|
|
24
|
-
z.object({ kind: z.literal("level"), min: z.number().int().positive() }),
|
|
25
|
-
z.object({ kind: z.literal("spellcaster") }),
|
|
26
|
-
z.object({
|
|
27
|
-
kind: z.literal("proficiency"),
|
|
28
|
-
proficiency_type: z.enum(["armor", "weapon", "tool", "skill", "saving-throw"]),
|
|
29
|
-
value: z.string().min(1)
|
|
30
|
-
}),
|
|
31
|
-
z.object({ kind: z.literal("race"), slug: z.string().min(1) }),
|
|
32
|
-
z.object({ kind: z.literal("class"), slug: z.string().min(1) }),
|
|
33
|
-
// The exclusive-feat-category and feat-category arms carry a raw 5etools category code, not a
|
|
34
|
-
// slug; featCategoryLabel names it. The rest carry slugs the renderer humanizes, except other,
|
|
35
|
-
// which carries free prose that prereqText returns verbatim.
|
|
36
|
-
z.object({ kind: z.literal("feat"), slug: z.string().min(1) }),
|
|
37
|
-
z.object({ kind: z.literal("campaign"), slug: z.string().min(1) }),
|
|
38
|
-
z.object({ kind: z.literal("exclusive-feat-category"), slug: z.string().min(1) }),
|
|
39
|
-
z.object({ kind: z.literal("feature"), slug: z.string().min(1) }),
|
|
40
|
-
z.object({ kind: z.literal("other"), detail: z.string().min(1) }),
|
|
41
|
-
z.object({ kind: z.literal("feat-category"), slug: z.string().min(1) }),
|
|
42
|
-
z.object({ kind: z.literal("background"), slug: z.string().min(1) })
|
|
43
|
-
]);
|
|
44
|
-
var featEntitySchema = z.object({
|
|
45
|
-
slug: z.string().min(1),
|
|
46
|
-
name: z.string().min(1),
|
|
47
|
-
edition: editionEnum,
|
|
48
|
-
source: z.string().min(1),
|
|
49
|
-
category: categoryEnum,
|
|
50
|
-
description: z.string(),
|
|
51
|
-
prerequisites: z.array(prerequisiteSchema),
|
|
52
|
-
benefits: z.array(z.string()),
|
|
53
|
-
effects: z.array(featureEffectSchema),
|
|
54
|
-
grants_asi: z.object({
|
|
55
|
-
amount: z.number().int().positive(),
|
|
56
|
-
pool: z.array(abilityEnum).optional()
|
|
57
|
-
}).nullable(),
|
|
58
|
-
repeatable: z.boolean(),
|
|
59
|
-
choices: z.array(choiceSchema),
|
|
60
|
-
rendering_hint: z.string().optional(),
|
|
61
|
-
additional_spells: z.array(additionalSpellsEntrySchema).optional(),
|
|
62
|
-
// 71
|
|
63
|
-
has_fluff: z.boolean().optional(),
|
|
64
|
-
// 0 carriers — symmetry, §9.4
|
|
65
|
-
has_fluff_images: z.boolean().optional(),
|
|
66
|
-
// 41
|
|
67
|
-
trait_tags: z.unknown().optional(),
|
|
68
|
-
// 7, nullable measured — same passthrough family
|
|
69
|
-
optionalfeature_progression: z.array(progressionSchema).optional(),
|
|
70
|
-
// 4
|
|
71
|
-
resources: z.array(resourceSchema).optional(),
|
|
72
|
-
// closes the feat.types.ts `Feat.resources` schema/type asymmetry (C).
|
|
73
|
-
// CONVERTER carriers since import-5etools cb382b6 (feat-mapper `mapFeatEconomy`): 69 of 287 feat docs,
|
|
74
|
-
// 72 entries (41 `prof`, 29 `1`, Lucky PHB `3`, Boon of Recovery `10` + die d10), ids owner-namespaced
|
|
75
|
-
// `<feat-slug-tail>:<tracker-slug>`; 0 SRD-bundle carriers. The resolver carries them onto the
|
|
76
|
-
// synthesized feat feature, so each draws a tracker. Import resourceSchema.
|
|
77
|
-
action_cost: actionCostEnum.optional(),
|
|
78
|
-
// ruling R-G1b-5 (gate1-r1 f1): a TOP-LEVEL entity key. SRD bundle:
|
|
79
|
-
// one feat per edition (`SRD 2024/Feats/Boon of the Night Spirit.md` bonus-action; SRD 5e Grappler
|
|
80
|
-
// `action` through the `feat_features` overlay since 0.3.11). CONVERTER: 76 of 287 feat docs since
|
|
81
|
-
// import-5etools 1002a6c (31 bonus-action, 34 reaction, 11 action). Top-level at entity level
|
|
82
|
-
// — the ninth SRD-control non-kept row: top-level on the ENTITY, not featureSchema-shaped
|
|
83
|
-
// (finding 14's nine rows split 4 featureSchema / 4 §2.8-arity / this one, which needed its own
|
|
84
|
-
// declaration — gate1-r4 R4-1). `actionCostEnum` is exported from
|
|
85
|
-
// `schemas/resource-schema.ts` (optionalFeatureEntitySchema already imports it). MAPPED since
|
|
86
|
-
// R4-G3a §10.2.3: the resolver aliases it onto the resolved feature's `action`, which is what
|
|
87
|
-
// draws the feat note's Action line and files the row under that economy.
|
|
88
|
-
image: imageField
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
export {
|
|
92
|
-
featEntitySchema
|
|
93
|
-
};
|
package/dist/chunk-FVXLP7P3.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
parseOptionalFeature
|
|
3
|
-
} from "./chunk-FMUD3LDV.js";
|
|
4
|
-
|
|
5
|
-
// src/optional-feature/optional-feature.codec.ts
|
|
6
|
-
import yaml from "js-yaml";
|
|
7
|
-
var optionalFeatureCodec = {
|
|
8
|
-
parse(doc) {
|
|
9
|
-
return parseOptionalFeature(doc.body);
|
|
10
|
-
},
|
|
11
|
-
serialize(entity) {
|
|
12
|
-
return yaml.dump(entity, { lineWidth: -1, sortKeys: false });
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export {
|
|
17
|
-
optionalFeatureCodec
|
|
18
|
-
};
|
package/dist/chunk-G6MHJDVT.js
DELETED
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
// src/schemas/selection-pool-schema.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var wikilinkRegex = /^\[\[[^[\]]+\]\]$/;
|
|
4
|
-
var selectionPoolSchema = z.object({
|
|
5
|
-
id: z.string().min(1),
|
|
6
|
-
label: z.string().min(1),
|
|
7
|
-
source: z.object({
|
|
8
|
-
entity_type: z.literal("optional-feature"),
|
|
9
|
-
where: z.object({
|
|
10
|
-
feature_type: z.string().min(1),
|
|
11
|
-
available_to: z.literal("self")
|
|
12
|
-
})
|
|
13
|
-
}),
|
|
14
|
-
// ART-a (spec §4.5): `count.label`, `active` and `head_resource` carry NO zod default: the defaults are applied at
|
|
15
|
-
// read by `poolCountLabel` / `poolActiveWords`, so a parse never adds a key (the importer's round trip).
|
|
16
|
-
count: z.object({ column: z.string().min(1), label: z.string().min(1).optional() }),
|
|
17
|
-
replaceable: z.boolean().optional(),
|
|
18
|
-
active: z.object({ column: z.string().min(1), label: z.string().min(1), verb: z.string().min(1), counter_label: z.string().min(1).optional(), create_label: z.string().min(1).optional(), create_verb: z.string().min(1).optional() }).optional(),
|
|
19
|
-
head_resource: z.string().min(1).optional()
|
|
20
|
-
});
|
|
21
|
-
var poolGrantSchema = z.object({
|
|
22
|
-
pool: z.string().min(1),
|
|
23
|
-
grants: z.array(z.object({
|
|
24
|
-
feature: z.string().regex(wikilinkRegex),
|
|
25
|
-
at_level: z.number().int().positive()
|
|
26
|
-
}))
|
|
27
|
-
});
|
|
28
|
-
var tabDeclSchema = z.object({
|
|
29
|
-
id: z.string().min(1),
|
|
30
|
-
label: z.string().min(1),
|
|
31
|
-
renders: z.object({
|
|
32
|
-
pool: z.string().min(1),
|
|
33
|
-
layout: z.enum(["spell-like", "blocks", "dice-pool", "point-pool"]).optional()
|
|
34
|
-
})
|
|
35
|
-
});
|
|
36
|
-
|
|
37
|
-
export {
|
|
38
|
-
selectionPoolSchema,
|
|
39
|
-
poolGrantSchema,
|
|
40
|
-
tabDeclSchema
|
|
41
|
-
};
|
package/dist/chunk-GVWEFECG.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
parseClass
|
|
3
|
-
} from "./chunk-XTEFPUSN.js";
|
|
4
|
-
|
|
5
|
-
// src/class/class.codec.ts
|
|
6
|
-
import yaml from "js-yaml";
|
|
7
|
-
var classCodec = {
|
|
8
|
-
parse(doc) {
|
|
9
|
-
return parseClass(doc.body);
|
|
10
|
-
},
|
|
11
|
-
serialize(entity) {
|
|
12
|
-
return yaml.dump(entity, { lineWidth: -1, sortKeys: false });
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export {
|
|
17
|
-
classCodec
|
|
18
|
-
};
|
package/dist/chunk-HHBD4SQ6.js
DELETED
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
evaluateConditions
|
|
3
|
-
} from "./chunk-A54HHCWW.js";
|
|
4
|
-
|
|
5
|
-
// src/item/item.bonuses.ts
|
|
6
|
-
function isConditionalBonus(x) {
|
|
7
|
-
return !!x && typeof x === "object" && typeof x.value === "number" && Array.isArray(x.when);
|
|
8
|
-
}
|
|
9
|
-
function readNumericBonus(raw, ctx) {
|
|
10
|
-
if (raw === void 0 || raw === null) return null;
|
|
11
|
-
if (typeof raw === "number") {
|
|
12
|
-
return raw === 0 ? null : { kind: "applied", value: raw };
|
|
13
|
-
}
|
|
14
|
-
if (!isConditionalBonus(raw)) return null;
|
|
15
|
-
if (raw.value === 0) return null;
|
|
16
|
-
const outcome = evaluateConditions(raw.when, ctx);
|
|
17
|
-
if (outcome === "true") return { kind: "applied", value: raw.value };
|
|
18
|
-
if (outcome === "false") return { kind: "skipped" };
|
|
19
|
-
return { kind: "informational", value: raw.value, conditions: raw.when };
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
export {
|
|
23
|
-
readNumericBonus
|
|
24
|
-
};
|
package/dist/chunk-HS6FIOLP.js
DELETED
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
imageField
|
|
3
|
-
} from "./chunk-UA5KS2PL.js";
|
|
4
|
-
|
|
5
|
-
// src/armor/armor.schema.ts
|
|
6
|
-
import { z } from "zod";
|
|
7
|
-
var acSchema = z.object({
|
|
8
|
-
base: z.number().int(),
|
|
9
|
-
flat: z.number().int().default(0),
|
|
10
|
-
add_dex: z.boolean().default(false),
|
|
11
|
-
dex_max: z.number().int().nonnegative().optional(),
|
|
12
|
-
add_con: z.boolean().default(false),
|
|
13
|
-
add_wis: z.boolean().default(false),
|
|
14
|
-
description: z.string().optional()
|
|
15
|
-
});
|
|
16
|
-
var armorEntitySchema = z.object({
|
|
17
|
-
name: z.string().min(1),
|
|
18
|
-
slug: z.string().min(1),
|
|
19
|
-
category: z.string(),
|
|
20
|
-
ac: acSchema,
|
|
21
|
-
strength_requirement: z.number().int().optional(),
|
|
22
|
-
stealth_disadvantage: z.boolean().optional(),
|
|
23
|
-
weight: z.union([z.number(), z.string()]).optional(),
|
|
24
|
-
cost: z.string().optional(),
|
|
25
|
-
rarity: z.string().optional(),
|
|
26
|
-
source: z.string().optional(),
|
|
27
|
-
page: z.number().int().optional(),
|
|
28
|
-
edition: z.string().optional(),
|
|
29
|
-
entries: z.array(z.unknown()).optional(),
|
|
30
|
-
// Root extras the converter and the SRD bundle emit on more than one root (spec §5).
|
|
31
|
-
// Carrier counts measured on the G1b close census. `rendering_hint` is ALWAYS the empty
|
|
32
|
-
// string today, so `.min(1)` is forbidden here.
|
|
33
|
-
rendering_hint: z.string().optional(),
|
|
34
|
-
// 27
|
|
35
|
-
// The icon key (I3): a key of the renderer's icon set or a Lucide name; itemIconKey reads it first.
|
|
36
|
-
icon: z.string().optional(),
|
|
37
|
-
has_fluff: z.boolean().optional(),
|
|
38
|
-
// 0 carriers — symmetry with weapon
|
|
39
|
-
has_fluff_images: z.boolean().optional(),
|
|
40
|
-
// 13
|
|
41
|
-
// Already `.optional()` at its source — never append a second one.
|
|
42
|
-
image: imageField,
|
|
43
|
-
// 0 today (images-OFF tree)
|
|
44
|
-
raw: z.record(z.string(), z.unknown()).optional()
|
|
45
|
-
// `.loose()` is load-bearing for the `strength_required` alias (armor.parser.ts): the alias
|
|
46
|
-
// rides through onto the typed output as an inert extra, which is what keeps its census
|
|
47
|
-
// disposal `kept` instead of minting a `stripped` row. See the parser's comment.
|
|
48
|
-
}).loose();
|
|
49
|
-
|
|
50
|
-
export {
|
|
51
|
-
armorEntitySchema
|
|
52
|
-
};
|
package/dist/chunk-HY2SRSVM.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
raceEntitySchema
|
|
3
|
-
} from "./chunk-FJYBLXV7.js";
|
|
4
|
-
import {
|
|
5
|
-
aliasFeatureListActionCost
|
|
6
|
-
} from "./chunk-4U55VNC7.js";
|
|
7
|
-
|
|
8
|
-
// src/race/race.parser.ts
|
|
9
|
-
import { parseYaml } from "@archivist-gg/core";
|
|
10
|
-
function parseRace(source) {
|
|
11
|
-
const raw = parseYaml(source, ["name", "slug"]);
|
|
12
|
-
if (!raw.success) return raw;
|
|
13
|
-
aliasFeatureListActionCost(raw.data.traits);
|
|
14
|
-
const result = raceEntitySchema.safeParse({ edition: "2014", ...raw.data });
|
|
15
|
-
if (!result.success) {
|
|
16
|
-
return { success: false, error: `race schema validation failed: ${result.error.message}` };
|
|
17
|
-
}
|
|
18
|
-
return { success: true, data: result.data };
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export {
|
|
22
|
-
parseRace
|
|
23
|
-
};
|
package/dist/chunk-IHE6KVC3.js
DELETED
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
// src/item/item.attunement.ts
|
|
2
|
-
function requiresAttunement(entity) {
|
|
3
|
-
if (!entity || !("attunement" in entity)) return false;
|
|
4
|
-
const a = entity.attunement;
|
|
5
|
-
if (a === true) return true;
|
|
6
|
-
if (typeof a === "string") return a.length > 0;
|
|
7
|
-
if (typeof a === "object" && a !== null) return a.required === true;
|
|
8
|
-
return false;
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
requiresAttunement
|
|
13
|
-
};
|
package/dist/chunk-IN4M4X7P.js
DELETED
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
// src/schemas/equipment-grant-schema.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var equipmentGrantSchema = z.union([
|
|
4
|
-
z.object({
|
|
5
|
-
item: z.string().min(1),
|
|
6
|
-
qty: z.number().int().positive().optional(),
|
|
7
|
-
contains_value: z.number().int().nonnegative().optional(),
|
|
8
|
-
display_name: z.string().min(1).optional(),
|
|
9
|
-
worth_value: z.number().int().nonnegative().optional()
|
|
10
|
-
}).strict(),
|
|
11
|
-
z.object({ category: z.string().min(1), qty: z.number().int().positive().optional(), display_name: z.string().min(1).optional() }).strict(),
|
|
12
|
-
z.object({ gold: z.number().int().positive() }).strict()
|
|
13
|
-
]);
|
|
14
|
-
var equipmentOptionSchema = z.object({
|
|
15
|
-
label: z.string().min(1),
|
|
16
|
-
grants: z.array(equipmentGrantSchema)
|
|
17
|
-
}).strict();
|
|
18
|
-
var startingEquipmentEntrySchema = z.discriminatedUnion("kind", [
|
|
19
|
-
z.object({ kind: z.literal("choice"), options: z.array(equipmentOptionSchema).nonempty() }).strict(),
|
|
20
|
-
z.object({ kind: z.literal("fixed"), label: z.string().min(1).optional(), grants: z.array(equipmentGrantSchema) }).strict(),
|
|
21
|
-
z.object({ kind: z.literal("gold"), amount: z.number().int().positive() }).strict()
|
|
22
|
-
]);
|
|
23
|
-
var startingGoldSchema = z.object({
|
|
24
|
-
fixed: z.number().int().nonnegative().optional(),
|
|
25
|
-
dice: z.string().min(1).optional(),
|
|
26
|
-
multiplier: z.number().int().positive().optional()
|
|
27
|
-
}).strict();
|
|
28
|
-
|
|
29
|
-
export {
|
|
30
|
-
equipmentGrantSchema,
|
|
31
|
-
equipmentOptionSchema,
|
|
32
|
-
startingEquipmentEntrySchema,
|
|
33
|
-
startingGoldSchema
|
|
34
|
-
};
|
package/dist/chunk-IUAAXXNO.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
// src/pc/pc.table-column.ts
|
|
2
|
-
function readTableColumn(table, level, keys) {
|
|
3
|
-
var _a;
|
|
4
|
-
const cols = (_a = table == null ? void 0 : table[level]) == null ? void 0 : _a.columns;
|
|
5
|
-
if (!cols) return null;
|
|
6
|
-
for (const k of keys) {
|
|
7
|
-
const raw = cols[k];
|
|
8
|
-
if (raw === void 0 || raw === null) continue;
|
|
9
|
-
const n = typeof raw === "number" ? raw : parseInt(String(raw), 10);
|
|
10
|
-
if (!Number.isNaN(n)) return n;
|
|
11
|
-
}
|
|
12
|
-
return null;
|
|
13
|
-
}
|
|
14
|
-
function numericColumnsAt(table, level) {
|
|
15
|
-
var _a;
|
|
16
|
-
const out = {};
|
|
17
|
-
const cols = (_a = table == null ? void 0 : table[level]) == null ? void 0 : _a.columns;
|
|
18
|
-
if (!cols) return out;
|
|
19
|
-
for (const [k, raw] of Object.entries(cols)) {
|
|
20
|
-
if (raw === void 0 || raw === null) continue;
|
|
21
|
-
const n = typeof raw === "number" ? raw : parseInt(String(raw), 10);
|
|
22
|
-
if (!Number.isNaN(n)) out[k] = n;
|
|
23
|
-
}
|
|
24
|
-
return out;
|
|
25
|
-
}
|
|
26
|
-
var COUNT_COLUMNS = {
|
|
27
|
-
"weapon-mastery": ["Weapon Mastery"]
|
|
28
|
-
};
|
|
29
|
-
function countColumnsFor(choiceId) {
|
|
30
|
-
if (!Object.prototype.hasOwnProperty.call(COUNT_COLUMNS, choiceId)) return void 0;
|
|
31
|
-
return COUNT_COLUMNS[choiceId];
|
|
32
|
-
}
|
|
33
|
-
function diceColumnAt(table, level, key) {
|
|
34
|
-
var _a;
|
|
35
|
-
const cols = (_a = table == null ? void 0 : table[level]) == null ? void 0 : _a.columns;
|
|
36
|
-
if (!cols || !Object.prototype.hasOwnProperty.call(cols, key)) return null;
|
|
37
|
-
const raw = cols[key];
|
|
38
|
-
if (typeof raw !== "string") return null;
|
|
39
|
-
const cell = raw.trim();
|
|
40
|
-
return /^\d+d\d+$/i.test(cell) ? cell : null;
|
|
41
|
-
}
|
|
42
|
-
var UNARMED_DIE_COLUMNS = {
|
|
43
|
-
"martial-arts": "Martial Arts"
|
|
44
|
-
};
|
|
45
|
-
function unarmedDieColumnFor(featureSlug) {
|
|
46
|
-
if (!Object.prototype.hasOwnProperty.call(UNARMED_DIE_COLUMNS, featureSlug)) return void 0;
|
|
47
|
-
return UNARMED_DIE_COLUMNS[featureSlug];
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
export {
|
|
51
|
-
readTableColumn,
|
|
52
|
-
numericColumnsAt,
|
|
53
|
-
COUNT_COLUMNS,
|
|
54
|
-
countColumnsFor,
|
|
55
|
-
diceColumnAt,
|
|
56
|
-
UNARMED_DIE_COLUMNS,
|
|
57
|
-
unarmedDieColumnFor
|
|
58
|
-
};
|
package/dist/chunk-JXWNXIIZ.js
DELETED
|
@@ -1,219 +0,0 @@
|
|
|
1
|
-
// src/schemas/feature-effect-schema.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var abilityEnum = z.enum(["str", "dex", "con", "int", "wis", "cha"]);
|
|
4
|
-
var subjectField = z.string().min(1).optional();
|
|
5
|
-
var conditionField = z.string().optional();
|
|
6
|
-
var weaponScopeEnum = z.enum(["weapon", "melee", "ranged", "unarmed", "finesse", "thrown"]);
|
|
7
|
-
var spellScopeSchema = z.object({
|
|
8
|
-
list: z.string().min(1).optional(),
|
|
9
|
-
level: z.number().int().min(0).max(9).optional(),
|
|
10
|
-
school: z.string().min(1).optional(),
|
|
11
|
-
damage_types: z.array(z.string().min(1)).min(1).optional(),
|
|
12
|
-
damage_type_pick: z.string().min(1).optional(),
|
|
13
|
-
spells: z.array(z.string().min(1)).min(1).optional(),
|
|
14
|
-
once: z.boolean().optional()
|
|
15
|
-
}).strict();
|
|
16
|
-
var featureEffectSchema = z.discriminatedUnion("kind", [
|
|
17
|
-
z.object({ kind: z.literal("initiative-bonus"), value: z.number().int(), condition: conditionField, subject: subjectField }),
|
|
18
|
-
z.object({ kind: z.literal("skill-bonus"), skills: z.array(z.string().min(1)).nonempty(), ability: abilityEnum, minimum: z.number().int().optional(), condition: conditionField, subject: subjectField }),
|
|
19
|
-
// SL (2026-09-27): the `skill-bonus` twin for saving throws (Aura of Protection). `saves` absent = every save; `inactive_while` turns
|
|
20
|
-
// the bonus off while the character is incapacitated (any condition that disables actions) or unconscious.
|
|
21
|
-
z.object({
|
|
22
|
-
kind: z.literal("save-bonus"),
|
|
23
|
-
ability: abilityEnum,
|
|
24
|
-
minimum: z.number().int().optional(),
|
|
25
|
-
saves: z.array(abilityEnum).nonempty().optional(),
|
|
26
|
-
inactive_while: z.enum(["incapacitated", "unconscious"]).optional(),
|
|
27
|
-
condition: conditionField,
|
|
28
|
-
subject: subjectField
|
|
29
|
-
}),
|
|
30
|
-
// Jack of All Trades / Remarkable Athlete: half the proficiency bonus, and ONLY on a skill the character is
|
|
31
|
-
// not already proficient in — the "doesn't otherwise use your Proficiency Bonus" clause is the whole mechanic,
|
|
32
|
-
// so it is the kind's semantics, not a field. `skills` omitted = every skill (Jack of All Trades); a list
|
|
33
|
-
// narrows it (Remarkable Athlete). `round` is authored because the two printed features disagree: Jack of All
|
|
34
|
-
// Trades rounds down, Remarkable Athlete rounds up.
|
|
35
|
-
z.object({ kind: z.literal("half-proficiency"), skills: z.array(z.string().min(1)).nonempty().optional(), round: z.enum(["down", "up"]).optional(), condition: conditionField, subject: subjectField }),
|
|
36
|
-
// `condition` here is the condition NAME (frightened, poisoned); the qualifier is `while`.
|
|
37
|
-
z.object({ kind: z.literal("immune-condition"), condition: z.string().min(1), while: z.string().optional(), subject: subjectField }),
|
|
38
|
-
z.object({ kind: z.literal("resistance"), damage_type: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
39
|
-
z.object({ kind: z.literal("hp-per-level-bonus"), value: z.number().int(), condition: conditionField, subject: subjectField }),
|
|
40
|
-
z.object({
|
|
41
|
-
kind: z.literal("speed-bonus"),
|
|
42
|
-
mode: z.enum(["walk", "fly", "swim", "climb", "burrow"]),
|
|
43
|
-
value: z.number().int(),
|
|
44
|
-
// when true, value is an absolute floor (Math.max), not additive; currently
|
|
45
|
-
// only surfaced for mode:"walk" · other modes have no derived speed yet.
|
|
46
|
-
set: z.boolean().optional(),
|
|
47
|
-
// R4-G7 §7.3: the WHOLE progression lives inside the effect, because the overlay's `class_features`
|
|
48
|
-
// map is keyed `<class>:<feature-slug>` with no level component and, after §7.1's fold, the sheet
|
|
49
|
-
// reads exactly ONE copy of a repeated feature. The engine takes the highest entry at or below the
|
|
50
|
-
// effect's OWN source level (`levelFor`), and applies it to the additive bonus and to a `set` floor
|
|
51
|
-
// alike. The Monk's Unarmored Movement is the shipped carrier shape.
|
|
52
|
-
scales_at: z.array(z.object({ level: z.number().int().min(1).max(20), value: z.number().int() })).optional(),
|
|
53
|
-
condition: conditionField,
|
|
54
|
-
subject: subjectField
|
|
55
|
-
}),
|
|
56
|
-
z.object({
|
|
57
|
-
// The attunement CAP, as data. `value` is an absolute cap ("you can now attune to up to four"),
|
|
58
|
-
// never an increment, so two grants MAX rather than sum and a grant can never lower the cap:
|
|
59
|
-
// recalc folds it as Math.max(3, granted). `scales_at` carries a whole progression on ONE effect —
|
|
60
|
-
// the `speed-bonus` / `extra-attack` shape (R4-G7 §7.3) — because the overlay has no level axis and
|
|
61
|
-
// the Artificer's three steps (10 -> 4, 14 -> 5, 18 -> 6) would otherwise need three separate
|
|
62
|
-
// features, one of which is embedded prose inside another feature's description.
|
|
63
|
-
kind: z.literal("attunement-limit"),
|
|
64
|
-
value: z.number().int().positive(),
|
|
65
|
-
scales_at: z.array(z.object({ level: z.number().int().min(1).max(20), value: z.number().int().positive() })).optional(),
|
|
66
|
-
condition: conditionField,
|
|
67
|
-
subject: subjectField
|
|
68
|
-
}),
|
|
69
|
-
z.object({
|
|
70
|
-
kind: z.literal("sense"),
|
|
71
|
-
type: z.enum(["darkvision", "blindsight", "tremorsense", "truesight"]),
|
|
72
|
-
range: z.number().int().nonnegative(),
|
|
73
|
-
condition: conditionField,
|
|
74
|
-
subject: subjectField
|
|
75
|
-
}),
|
|
76
|
-
// `condition` here is the condition NAME being applied.
|
|
77
|
-
z.object({
|
|
78
|
-
kind: z.literal("apply-condition"),
|
|
79
|
-
condition: z.string().min(1),
|
|
80
|
-
duration: z.string().optional(),
|
|
81
|
-
ends_on: z.array(z.string()).optional(),
|
|
82
|
-
save_repeat: z.object({ ability: z.string().min(1), timing: z.string().min(1) }).optional(),
|
|
83
|
-
subject: subjectField
|
|
84
|
-
}),
|
|
85
|
-
z.object({
|
|
86
|
-
kind: z.literal("damage-bonus"),
|
|
87
|
-
// intentionally an open string, NOT a damage-type enum: must accept the
|
|
88
|
-
// literal "chosen" (player-selected damage type at action time) alongside
|
|
89
|
-
// canonical damage types. Do not tighten to an enum.
|
|
90
|
-
damage_type: z.string().min(1),
|
|
91
|
-
amount: z.string().min(1),
|
|
92
|
-
// ART-c1 Task 9b: `spell` and `all` as before, or a weapon scope, one word or an any-of list, which the engine
|
|
93
|
-
// evaluates per attack row (pc.recalc.ts `riderReachesRow`). `weapon`, like an absent value, reaches every row.
|
|
94
|
-
applies_to: z.union([z.enum(["spell", "all"]), weaponScopeEnum, z.array(weaponScopeEnum).min(1)]).optional(),
|
|
95
|
-
// The spells a `spell` or `all` rider reaches (Potent Spellcasting's Cleric cantrips, Empowered Evocation's Wizard
|
|
96
|
-
// evocation spells); pc.recalc.ts `spellsInScope` reads it. A `spell` rider without one reaches only the spells its
|
|
97
|
-
// pool member's data names (Agonizing Blast's target pick); an `all` rider without one reaches every damaging spell.
|
|
98
|
-
spell_scope: spellScopeSchema.optional(),
|
|
99
|
-
condition: conditionField,
|
|
100
|
-
subject: subjectField
|
|
101
|
-
}),
|
|
102
|
-
z.object({
|
|
103
|
-
kind: z.literal("proficiency"),
|
|
104
|
-
proficiency_type: z.enum(["skill", "tool", "language", "saving-throw", "armor", "weapon"]),
|
|
105
|
-
value: z.string().min(1),
|
|
106
|
-
expertise: z.boolean().optional(),
|
|
107
|
-
condition: conditionField,
|
|
108
|
-
subject: subjectField
|
|
109
|
-
}),
|
|
110
|
-
z.object({ kind: z.literal("ac-bonus"), value: z.number().int(), requires_armor: z.boolean().optional(), condition: conditionField, subject: subjectField }),
|
|
111
|
-
z.object({
|
|
112
|
-
kind: z.literal("unarmored-ac"),
|
|
113
|
-
abilities: z.array(abilityEnum),
|
|
114
|
-
base: z.number().int().optional(),
|
|
115
|
-
allow_shield: z.boolean().optional(),
|
|
116
|
-
condition: conditionField,
|
|
117
|
-
subject: subjectField
|
|
118
|
-
}),
|
|
119
|
-
z.object({
|
|
120
|
-
kind: z.literal("unarmed-strike"),
|
|
121
|
-
// R4-G7 §7.2: a bare die expression, `<count>d<faces>`. `resolveUnarmedStrike` averages the flat arm with
|
|
122
|
-
// /^(\d+)d(\d+)$/ and silently averages anything else as 1, so a modifier tail ("1d6+1") or a missing
|
|
123
|
-
// half ("d6", "1d") must refuse here rather than mis-average there. The `i` arm keeps an authored `1D6`.
|
|
124
|
-
dice: z.union([z.string().regex(/^\d+d\d+$/i), z.object({ column: z.string().min(1) })]).optional(),
|
|
125
|
-
abilities: z.array(abilityEnum).nonempty().optional(),
|
|
126
|
-
condition: conditionField,
|
|
127
|
-
subject: subjectField
|
|
128
|
-
}),
|
|
129
|
-
z.object({
|
|
130
|
-
kind: z.literal("weapon-ability"),
|
|
131
|
-
ability: z.union([abilityEnum, z.literal("spellcasting")]),
|
|
132
|
-
weapons: z.union([z.literal("chosen"), z.string(), z.array(z.string())]).optional(),
|
|
133
|
-
condition: conditionField,
|
|
134
|
-
subject: subjectField
|
|
135
|
-
}),
|
|
136
|
-
z.object({
|
|
137
|
-
kind: z.literal("roll-modifier"),
|
|
138
|
-
mode: z.enum(["advantage", "disadvantage", "reroll", "add-d4"]),
|
|
139
|
-
roll: z.enum(["ability-check", "saving-throw", "attack", "any"]),
|
|
140
|
-
scope: z.string().optional(),
|
|
141
|
-
condition: conditionField,
|
|
142
|
-
subject: subjectField
|
|
143
|
-
}),
|
|
144
|
-
z.object({
|
|
145
|
-
kind: z.literal("extra-attack"),
|
|
146
|
-
// `count` is EXTRA attacks, never total attacks: the engine renders `1 + count`.
|
|
147
|
-
count: z.number().int().positive(),
|
|
148
|
-
// R4-G7 §7.3, the `speed-bonus` twin: the SRD 5e Fighter's one Extra Attack feature carries its whole
|
|
149
|
-
// 5 / 11 / 20 progression here, because `bucketFeaturesByLevel` emits one overlay record into every
|
|
150
|
-
// `gained_at` bucket and a per-copy count cannot be authored.
|
|
151
|
-
scales_at: z.array(z.object({ level: z.number().int().min(1).max(20), count: z.number().int().positive() })).optional(),
|
|
152
|
-
condition: conditionField,
|
|
153
|
-
subject: subjectField
|
|
154
|
-
}),
|
|
155
|
-
z.object({
|
|
156
|
-
kind: z.literal("crit-range"),
|
|
157
|
-
min_roll: z.number().int().min(2).max(20),
|
|
158
|
-
applies_to: z.enum(["weapon", "spell", "all"]).optional(),
|
|
159
|
-
condition: conditionField,
|
|
160
|
-
subject: subjectField
|
|
161
|
-
}),
|
|
162
|
-
z.object({
|
|
163
|
-
kind: z.literal("reroll-damage"),
|
|
164
|
-
max_reroll: z.number().int().positive(),
|
|
165
|
-
applies_to: z.enum(["weapon", "spell", "all"]).optional(),
|
|
166
|
-
once_per_die: z.boolean().optional(),
|
|
167
|
-
condition: conditionField,
|
|
168
|
-
subject: subjectField
|
|
169
|
-
}),
|
|
170
|
-
z.object({ kind: z.literal("attack-rule"), flag: z.enum(["no-ranged-in-melee-disadvantage"]), condition: conditionField, subject: subjectField }),
|
|
171
|
-
// R4-G1a declared these seven converter-emitted arms with the engine folding NOTHING for them
|
|
172
|
-
// (spec D3). R4-G3a §3-§7 gives SIX of them semantics: immunity / vulnerability FOLD (defenses
|
|
173
|
-
// pane); temp-hp / heal / extra-action are still NOT folded, the plugin reads them raw as
|
|
174
|
-
// row-local captions; save-outcome FOLDS (save-chip tag rail).
|
|
175
|
-
// `ability-score-increase` folds FLAT at the fold since R4-G3b §4 (fixed-list arms only; `chosen` arms
|
|
176
|
-
// are the ASI slot's second encoding; `max` is unread by user ruling).
|
|
177
|
-
// Damage immunity / vulnerability. NOT `immune-condition`, which is condition immunity.
|
|
178
|
-
z.object({ kind: z.literal("immunity"), damage_type: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
179
|
-
z.object({ kind: z.literal("vulnerability"), damage_type: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
180
|
-
// `amount` is the open non-empty STRING `damage-bonus.amount` already uses: "2d6", "5", "your Artificer level".
|
|
181
|
-
z.object({ kind: z.literal("temp-hp"), amount: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
182
|
-
z.object({ kind: z.literal("heal"), amount: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
183
|
-
z.object({
|
|
184
|
-
kind: z.literal("ability-score-increase"),
|
|
185
|
-
// "chosen" follows `weapon-ability.weapons`; the list follows `unarmored-ac.abilities`.
|
|
186
|
-
abilities: z.union([z.literal("chosen"), z.array(abilityEnum).min(1)]),
|
|
187
|
-
amount: z.number().int().positive(),
|
|
188
|
-
// Required-WITH-NULL, never optional: "the prose stated no cap" and "the extractor forgot" must not look alike.
|
|
189
|
-
choose: z.number().int().positive().nullable(),
|
|
190
|
-
max: z.number().int().positive().nullable(),
|
|
191
|
-
condition: conditionField,
|
|
192
|
-
subject: subjectField
|
|
193
|
-
}).refine((e) => e.abilities === "chosen" === (e.choose !== null), {
|
|
194
|
-
path: ["choose"],
|
|
195
|
-
message: 'choose is required IFF abilities is "chosen": a fixed LIST is its own count'
|
|
196
|
-
}),
|
|
197
|
-
// `extra-action` is an additional ACTION on your turn; `extra-attack` is attacks WITHIN the Attack action.
|
|
198
|
-
z.object({
|
|
199
|
-
kind: z.literal("extra-action"),
|
|
200
|
-
count: z.number().int().positive(),
|
|
201
|
-
action_type: z.enum(["action", "bonus-action", "reaction"]),
|
|
202
|
-
condition: conditionField,
|
|
203
|
-
subject: subjectField
|
|
204
|
-
}),
|
|
205
|
-
// `save-outcome` remaps the OUTCOME; `roll-modifier` modifies the ROLL.
|
|
206
|
-
z.object({
|
|
207
|
-
kind: z.literal("save-outcome"),
|
|
208
|
-
ability: z.union([abilityEnum, z.literal("any")]),
|
|
209
|
-
on_success: z.enum(["none", "half", "full"]),
|
|
210
|
-
on_failure: z.enum(["none", "half", "full"]),
|
|
211
|
-
applies_to: z.string().nullable(),
|
|
212
|
-
condition: conditionField,
|
|
213
|
-
subject: subjectField
|
|
214
|
-
})
|
|
215
|
-
]);
|
|
216
|
-
|
|
217
|
-
export {
|
|
218
|
-
featureEffectSchema
|
|
219
|
-
};
|
package/dist/chunk-K5NJBTE2.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
parseWeapon
|
|
3
|
-
} from "./chunk-XCFC7LGF.js";
|
|
4
|
-
|
|
5
|
-
// src/weapon/weapon.codec.ts
|
|
6
|
-
import yaml from "js-yaml";
|
|
7
|
-
var weaponCodec = {
|
|
8
|
-
parse(doc) {
|
|
9
|
-
return parseWeapon(doc.body);
|
|
10
|
-
},
|
|
11
|
-
serialize(entity) {
|
|
12
|
-
return yaml.dump(entity, { lineWidth: -1, sortKeys: false });
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export {
|
|
17
|
-
weaponCodec
|
|
18
|
-
};
|
package/dist/chunk-KR6JF3BF.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// src/pc/spell-source.ts
|
|
2
|
-
var SPELL_SOURCE = {
|
|
3
|
-
class: { ownAbility: false, section: "spellbook", freeCastWhenNoSlot: false, showInPrepare: true, countsAsGranted: false },
|
|
4
|
-
feat: { ownAbility: true, section: "spellbook", freeCastWhenNoSlot: true, showInPrepare: true, countsAsGranted: true },
|
|
5
|
-
item: { ownAbility: false, section: "consumable", freeCastWhenNoSlot: false, showInPrepare: false, countsAsGranted: true },
|
|
6
|
-
race: { ownAbility: true, section: "spellbook", freeCastWhenNoSlot: true, showInPrepare: true, countsAsGranted: true },
|
|
7
|
-
domain: { ownAbility: false, section: "spellbook", freeCastWhenNoSlot: false, showInPrepare: true, countsAsGranted: false }
|
|
8
|
-
};
|
|
9
|
-
var spellSource = (s) => SPELL_SOURCE[s.source];
|
|
10
|
-
|
|
11
|
-
export {
|
|
12
|
-
SPELL_SOURCE,
|
|
13
|
-
spellSource
|
|
14
|
-
};
|