@archivist-gg/dnd5e 0.3.17 → 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 +4 -27
- package/dist/dnd/amount-text.js +1 -13
- 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 +10 -0
- package/dist/entities/registry-revision.js +1 -0
- 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 +31 -1
- package/dist/feat/feat.schema.js +1 -10
- package/dist/feat/feat.types.d.ts +0 -6
- package/dist/index.js +45 -138113
- 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 +30 -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 +4 -14
- package/dist/pc/pc.additional-spells.js +1 -23
- package/dist/pc/pc.amount-bindings.d.ts +4 -20
- package/dist/pc/pc.amount-bindings.js +1 -23
- 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 +4 -141
- package/dist/pc/pc.decision-engine.js +1 -52
- 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 -40
- package/dist/pc/pc.equipment.d.ts +2 -22
- package/dist/pc/pc.equipment.js +1 -33
- package/dist/pc/pc.feature-effects.d.ts +23 -275
- package/dist/pc/pc.feature-effects.js +1 -26
- 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 -64
- package/dist/pc/pc.item-effects.d.ts +18 -0
- package/dist/pc/pc.member-choices.d.ts +18 -49
- package/dist/pc/pc.member-choices.js +1 -32
- package/dist/pc/pc.parser.js +1 -58
- package/dist/pc/pc.pools.d.ts +7 -10
- package/dist/pc/pc.pools.js +1 -26
- package/dist/pc/pc.proficiencies.d.ts +7 -33
- package/dist/pc/pc.proficiencies.js +1 -107
- package/dist/pc/pc.proficiency-grants.d.ts +0 -26
- package/dist/pc/pc.proficiency-normalize.d.ts +4 -25
- package/dist/pc/pc.proficiency-normalize.js +1 -12
- 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 -946
- package/dist/pc/pc.resolver.d.ts +0 -104
- package/dist/pc/pc.resolver.js +1 -59
- 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 -230
- package/dist/pc/pc.schema.d.ts +19 -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 +6 -0
- 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 +85 -344
- 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 +30 -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 +14 -14
- 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-2JSQE3DD.js +0 -206
- package/dist/chunk-2LULMQTF.js +0 -14
- package/dist/chunk-2UDSN6VW.js +0 -18
- package/dist/chunk-3LWMFYKS.js +0 -57
- package/dist/chunk-3MGQFFNE.js +0 -110
- package/dist/chunk-3TM34RSJ.js +0 -23
- package/dist/chunk-3VZZDKRA.js +0 -1014
- package/dist/chunk-4U55VNC7.js +0 -22
- package/dist/chunk-5GKJAUMX.js +0 -59
- package/dist/chunk-5MXFW4O3.js +0 -71
- package/dist/chunk-656QCX4U.js +0 -22
- package/dist/chunk-6EI737IO.js +0 -19
- package/dist/chunk-6GNXYAYP.js +0 -25
- package/dist/chunk-6PXTNCBP.js +0 -133
- package/dist/chunk-6X2NV665.js +0 -33
- package/dist/chunk-7ATNGKBS.js +0 -178
- package/dist/chunk-7Q2VPKCD.js +0 -181
- package/dist/chunk-7QN7XSAK.js +0 -19
- package/dist/chunk-A54HHCWW.js +0 -67
- package/dist/chunk-AZRGFUSR.js +0 -18
- package/dist/chunk-B3DP42OM.js +0 -55
- package/dist/chunk-CJYCVNW2.js +0 -7
- package/dist/chunk-CM5CWO4K.js +0 -735
- package/dist/chunk-DEEHHLAP.js +0 -271
- package/dist/chunk-DOXSFYLH.js +0 -158
- package/dist/chunk-DPUJDOKV.js +0 -365
- package/dist/chunk-EJP263OP.js +0 -186
- package/dist/chunk-EVMUJYUD.js +0 -195
- package/dist/chunk-EYX4JMAU.js +0 -101
- package/dist/chunk-FANQVQ3D.js +0 -89
- package/dist/chunk-FC4IGH5Y.js +0 -18
- package/dist/chunk-G6MHJDVT.js +0 -41
- package/dist/chunk-G6PBI2BU.js +0 -18
- package/dist/chunk-H5PTKYXL.js +0 -101
- package/dist/chunk-HHBD4SQ6.js +0 -24
- package/dist/chunk-HS6FIOLP.js +0 -52
- package/dist/chunk-HTYMW5CH.js +0 -228
- package/dist/chunk-IHE6KVC3.js +0 -13
- package/dist/chunk-IN4M4X7P.js +0 -34
- package/dist/chunk-IUAAXXNO.js +0 -58
- package/dist/chunk-JCMUVZIK.js +0 -133
- package/dist/chunk-JSM6JFZR.js +0 -709
- 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-LF5AGJA4.js +0 -81
- package/dist/chunk-LHZXYFBU.js +0 -94
- package/dist/chunk-LSLSG67V.js +0 -31
- package/dist/chunk-LVQLWRCU.js +0 -15
- package/dist/chunk-MBX25B6D.js +0 -18
- package/dist/chunk-MYY2C5MB.js +0 -233
- package/dist/chunk-OFCSP6MT.js +0 -23
- package/dist/chunk-ONTGZR5T.js +0 -1806
- package/dist/chunk-OOSRUJBI.js +0 -19
- package/dist/chunk-PDJSUH24.js +0 -110
- package/dist/chunk-PKX6TGRE.js +0 -93
- package/dist/chunk-PQZ4LM4Z.js +0 -19
- package/dist/chunk-PTXBIDG7.js +0 -63
- package/dist/chunk-PVCEA4HZ.js +0 -6
- package/dist/chunk-PXVNAY7T.js +0 -84
- package/dist/chunk-QH36K2PU.js +0 -158
- package/dist/chunk-QS5L5YTJ.js +0 -24
- package/dist/chunk-QYZV2MQA.js +0 -97
- package/dist/chunk-QZSWN2KT.js +0 -18
- package/dist/chunk-RLGQ5PZZ.js +0 -16
- package/dist/chunk-RYLXAYIQ.js +0 -18
- package/dist/chunk-S3YUXDSC.js +0 -278
- package/dist/chunk-S7REMWW4.js +0 -21
- package/dist/chunk-T6QIF5XR.js +0 -348
- package/dist/chunk-TOM66P2P.js +0 -38
- package/dist/chunk-TULQ4FFX.js +0 -353
- package/dist/chunk-UA5KS2PL.js +0 -26
- package/dist/chunk-UUBJCNQU.js +0 -187
- package/dist/chunk-UZXG6QSY.js +0 -58
- package/dist/chunk-VPYBK2MG.js +0 -18
- package/dist/chunk-VRV3NNTA.js +0 -161
- package/dist/chunk-VTTA2ALZ.js +0 -16
- package/dist/chunk-W6GC6OKK.js +0 -16
- package/dist/chunk-WELIKLZF.js +0 -256
- 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-Y5VVP73C.js +0 -23
- package/dist/chunk-YBLDE5CG.js +0 -42
- package/dist/chunk-YD2VAHA6.js +0 -159
- package/dist/chunk-YDGMBMYI.js +0 -25
- package/dist/chunk-YHYTW5QA.js +0 -20
- package/dist/chunk-YKL6SHRJ.js +0 -23
- package/dist/chunk-ZCTUYGNV.js +0 -26
- package/dist/chunk-ZDAEGJH4.js +0 -102
- package/dist/chunk-ZJXSXVFP.js +0 -58
- package/dist/chunk-ZUQW5VBZ.js +0 -89
package/dist/chunk-2JSQE3DD.js
DELETED
|
@@ -1,206 +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 featureEffectSchema = z.discriminatedUnion("kind", [
|
|
8
|
-
z.object({ kind: z.literal("initiative-bonus"), value: z.number().int(), condition: conditionField, subject: subjectField }),
|
|
9
|
-
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 }),
|
|
10
|
-
// SL (2026-09-27): the `skill-bonus` twin for saving throws (Aura of Protection). `saves` absent = every save; `inactive_while` turns
|
|
11
|
-
// the bonus off while the character is incapacitated (any condition that disables actions) or unconscious.
|
|
12
|
-
z.object({
|
|
13
|
-
kind: z.literal("save-bonus"),
|
|
14
|
-
ability: abilityEnum,
|
|
15
|
-
minimum: z.number().int().optional(),
|
|
16
|
-
saves: z.array(abilityEnum).nonempty().optional(),
|
|
17
|
-
inactive_while: z.enum(["incapacitated", "unconscious"]).optional(),
|
|
18
|
-
condition: conditionField,
|
|
19
|
-
subject: subjectField
|
|
20
|
-
}),
|
|
21
|
-
// Jack of All Trades / Remarkable Athlete: half the proficiency bonus, and ONLY on a skill the character is
|
|
22
|
-
// not already proficient in — the "doesn't otherwise use your Proficiency Bonus" clause is the whole mechanic,
|
|
23
|
-
// so it is the kind's semantics, not a field. `skills` omitted = every skill (Jack of All Trades); a list
|
|
24
|
-
// narrows it (Remarkable Athlete). `round` is authored because the two printed features disagree: Jack of All
|
|
25
|
-
// Trades rounds down, Remarkable Athlete rounds up.
|
|
26
|
-
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 }),
|
|
27
|
-
// `condition` here is the condition NAME (frightened, poisoned); the qualifier is `while`.
|
|
28
|
-
z.object({ kind: z.literal("immune-condition"), condition: z.string().min(1), while: z.string().optional(), subject: subjectField }),
|
|
29
|
-
z.object({ kind: z.literal("resistance"), damage_type: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
30
|
-
z.object({ kind: z.literal("hp-per-level-bonus"), value: z.number().int(), condition: conditionField, subject: subjectField }),
|
|
31
|
-
z.object({
|
|
32
|
-
kind: z.literal("speed-bonus"),
|
|
33
|
-
mode: z.enum(["walk", "fly", "swim", "climb", "burrow"]),
|
|
34
|
-
value: z.number().int(),
|
|
35
|
-
// when true, value is an absolute floor (Math.max), not additive; currently
|
|
36
|
-
// only surfaced for mode:"walk" · other modes have no derived speed yet.
|
|
37
|
-
set: z.boolean().optional(),
|
|
38
|
-
// R4-G7 §7.3: the WHOLE progression lives inside the effect, because the overlay's `class_features`
|
|
39
|
-
// map is keyed `<class>:<feature-slug>` with no level component and, after §7.1's fold, the sheet
|
|
40
|
-
// reads exactly ONE copy of a repeated feature. The engine takes the highest entry at or below the
|
|
41
|
-
// effect's OWN source level (`levelFor`), and applies it to the additive bonus and to a `set` floor
|
|
42
|
-
// alike. The Monk's Unarmored Movement is the shipped carrier shape.
|
|
43
|
-
scales_at: z.array(z.object({ level: z.number().int().min(1).max(20), value: z.number().int() })).optional(),
|
|
44
|
-
condition: conditionField,
|
|
45
|
-
subject: subjectField
|
|
46
|
-
}),
|
|
47
|
-
z.object({
|
|
48
|
-
// The attunement CAP, as data. `value` is an absolute cap ("you can now attune to up to four"),
|
|
49
|
-
// never an increment, so two grants MAX rather than sum and a grant can never lower the cap:
|
|
50
|
-
// recalc folds it as Math.max(3, granted). `scales_at` carries a whole progression on ONE effect —
|
|
51
|
-
// the `speed-bonus` / `extra-attack` shape (R4-G7 §7.3) — because the overlay has no level axis and
|
|
52
|
-
// the Artificer's three steps (10 -> 4, 14 -> 5, 18 -> 6) would otherwise need three separate
|
|
53
|
-
// features, one of which is embedded prose inside another feature's description.
|
|
54
|
-
kind: z.literal("attunement-limit"),
|
|
55
|
-
value: z.number().int().positive(),
|
|
56
|
-
scales_at: z.array(z.object({ level: z.number().int().min(1).max(20), value: z.number().int().positive() })).optional(),
|
|
57
|
-
condition: conditionField,
|
|
58
|
-
subject: subjectField
|
|
59
|
-
}),
|
|
60
|
-
z.object({
|
|
61
|
-
kind: z.literal("sense"),
|
|
62
|
-
type: z.enum(["darkvision", "blindsight", "tremorsense", "truesight"]),
|
|
63
|
-
range: z.number().int().nonnegative(),
|
|
64
|
-
condition: conditionField,
|
|
65
|
-
subject: subjectField
|
|
66
|
-
}),
|
|
67
|
-
// `condition` here is the condition NAME being applied.
|
|
68
|
-
z.object({
|
|
69
|
-
kind: z.literal("apply-condition"),
|
|
70
|
-
condition: z.string().min(1),
|
|
71
|
-
duration: z.string().optional(),
|
|
72
|
-
ends_on: z.array(z.string()).optional(),
|
|
73
|
-
save_repeat: z.object({ ability: z.string().min(1), timing: z.string().min(1) }).optional(),
|
|
74
|
-
subject: subjectField
|
|
75
|
-
}),
|
|
76
|
-
z.object({
|
|
77
|
-
kind: z.literal("damage-bonus"),
|
|
78
|
-
// intentionally an open string, NOT a damage-type enum: must accept the
|
|
79
|
-
// literal "chosen" (player-selected damage type at action time) alongside
|
|
80
|
-
// canonical damage types. Do not tighten to an enum.
|
|
81
|
-
damage_type: z.string().min(1),
|
|
82
|
-
amount: z.string().min(1),
|
|
83
|
-
// ART-c1 Task 9b: `spell` and `all` as before, or a weapon scope, one word or an any-of list, which the engine
|
|
84
|
-
// evaluates per attack row (pc.recalc.ts `riderReachesRow`). `weapon`, like an absent value, reaches every row.
|
|
85
|
-
applies_to: z.union([z.enum(["spell", "all"]), weaponScopeEnum, z.array(weaponScopeEnum).min(1)]).optional(),
|
|
86
|
-
condition: conditionField,
|
|
87
|
-
subject: subjectField
|
|
88
|
-
}),
|
|
89
|
-
z.object({
|
|
90
|
-
kind: z.literal("proficiency"),
|
|
91
|
-
proficiency_type: z.enum(["skill", "tool", "language", "saving-throw", "armor", "weapon"]),
|
|
92
|
-
value: z.string().min(1),
|
|
93
|
-
expertise: z.boolean().optional(),
|
|
94
|
-
condition: conditionField,
|
|
95
|
-
subject: subjectField
|
|
96
|
-
}),
|
|
97
|
-
z.object({ kind: z.literal("ac-bonus"), value: z.number().int(), requires_armor: z.boolean().optional(), condition: conditionField, subject: subjectField }),
|
|
98
|
-
z.object({
|
|
99
|
-
kind: z.literal("unarmored-ac"),
|
|
100
|
-
abilities: z.array(abilityEnum),
|
|
101
|
-
base: z.number().int().optional(),
|
|
102
|
-
allow_shield: z.boolean().optional(),
|
|
103
|
-
condition: conditionField,
|
|
104
|
-
subject: subjectField
|
|
105
|
-
}),
|
|
106
|
-
z.object({
|
|
107
|
-
kind: z.literal("unarmed-strike"),
|
|
108
|
-
// R4-G7 §7.2: a bare die expression, `<count>d<faces>`. `resolveUnarmedStrike` averages the flat arm with
|
|
109
|
-
// /^(\d+)d(\d+)$/ and silently averages anything else as 1, so a modifier tail ("1d6+1") or a missing
|
|
110
|
-
// half ("d6", "1d") must refuse here rather than mis-average there. The `i` arm keeps an authored `1D6`.
|
|
111
|
-
dice: z.union([z.string().regex(/^\d+d\d+$/i), z.object({ column: z.string().min(1) })]).optional(),
|
|
112
|
-
abilities: z.array(abilityEnum).nonempty().optional(),
|
|
113
|
-
condition: conditionField,
|
|
114
|
-
subject: subjectField
|
|
115
|
-
}),
|
|
116
|
-
z.object({
|
|
117
|
-
kind: z.literal("weapon-ability"),
|
|
118
|
-
ability: z.union([abilityEnum, z.literal("spellcasting")]),
|
|
119
|
-
weapons: z.union([z.literal("chosen"), z.string(), z.array(z.string())]).optional(),
|
|
120
|
-
condition: conditionField,
|
|
121
|
-
subject: subjectField
|
|
122
|
-
}),
|
|
123
|
-
z.object({
|
|
124
|
-
kind: z.literal("roll-modifier"),
|
|
125
|
-
mode: z.enum(["advantage", "disadvantage", "reroll", "add-d4"]),
|
|
126
|
-
roll: z.enum(["ability-check", "saving-throw", "attack", "any"]),
|
|
127
|
-
scope: z.string().optional(),
|
|
128
|
-
condition: conditionField,
|
|
129
|
-
subject: subjectField
|
|
130
|
-
}),
|
|
131
|
-
z.object({
|
|
132
|
-
kind: z.literal("extra-attack"),
|
|
133
|
-
// `count` is EXTRA attacks, never total attacks: the engine renders `1 + count`.
|
|
134
|
-
count: z.number().int().positive(),
|
|
135
|
-
// R4-G7 §7.3, the `speed-bonus` twin: the SRD 5e Fighter's one Extra Attack feature carries its whole
|
|
136
|
-
// 5 / 11 / 20 progression here, because `bucketFeaturesByLevel` emits one overlay record into every
|
|
137
|
-
// `gained_at` bucket and a per-copy count cannot be authored.
|
|
138
|
-
scales_at: z.array(z.object({ level: z.number().int().min(1).max(20), count: z.number().int().positive() })).optional(),
|
|
139
|
-
condition: conditionField,
|
|
140
|
-
subject: subjectField
|
|
141
|
-
}),
|
|
142
|
-
z.object({
|
|
143
|
-
kind: z.literal("crit-range"),
|
|
144
|
-
min_roll: z.number().int().min(2).max(20),
|
|
145
|
-
applies_to: z.enum(["weapon", "spell", "all"]).optional(),
|
|
146
|
-
condition: conditionField,
|
|
147
|
-
subject: subjectField
|
|
148
|
-
}),
|
|
149
|
-
z.object({
|
|
150
|
-
kind: z.literal("reroll-damage"),
|
|
151
|
-
max_reroll: z.number().int().positive(),
|
|
152
|
-
applies_to: z.enum(["weapon", "spell", "all"]).optional(),
|
|
153
|
-
once_per_die: z.boolean().optional(),
|
|
154
|
-
condition: conditionField,
|
|
155
|
-
subject: subjectField
|
|
156
|
-
}),
|
|
157
|
-
z.object({ kind: z.literal("attack-rule"), flag: z.enum(["no-ranged-in-melee-disadvantage"]), condition: conditionField, subject: subjectField }),
|
|
158
|
-
// R4-G1a declared these seven converter-emitted arms with the engine folding NOTHING for them
|
|
159
|
-
// (spec D3). R4-G3a §3-§7 gives SIX of them semantics: immunity / vulnerability FOLD (defenses
|
|
160
|
-
// pane); temp-hp / heal / extra-action are still NOT folded, the plugin reads them raw as
|
|
161
|
-
// row-local captions; save-outcome FOLDS (save-chip tag rail).
|
|
162
|
-
// `ability-score-increase` folds FLAT at the fold since R4-G3b §4 (fixed-list arms only; `chosen` arms
|
|
163
|
-
// are the ASI slot's second encoding; `max` is unread by user ruling).
|
|
164
|
-
// Damage immunity / vulnerability. NOT `immune-condition`, which is condition immunity.
|
|
165
|
-
z.object({ kind: z.literal("immunity"), damage_type: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
166
|
-
z.object({ kind: z.literal("vulnerability"), damage_type: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
167
|
-
// `amount` is the open non-empty STRING `damage-bonus.amount` already uses: "2d6", "5", "your Artificer level".
|
|
168
|
-
z.object({ kind: z.literal("temp-hp"), amount: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
169
|
-
z.object({ kind: z.literal("heal"), amount: z.string().min(1), condition: conditionField, subject: subjectField }),
|
|
170
|
-
z.object({
|
|
171
|
-
kind: z.literal("ability-score-increase"),
|
|
172
|
-
// "chosen" follows `weapon-ability.weapons`; the list follows `unarmored-ac.abilities`.
|
|
173
|
-
abilities: z.union([z.literal("chosen"), z.array(abilityEnum).min(1)]),
|
|
174
|
-
amount: z.number().int().positive(),
|
|
175
|
-
// Required-WITH-NULL, never optional: "the prose stated no cap" and "the extractor forgot" must not look alike.
|
|
176
|
-
choose: z.number().int().positive().nullable(),
|
|
177
|
-
max: z.number().int().positive().nullable(),
|
|
178
|
-
condition: conditionField,
|
|
179
|
-
subject: subjectField
|
|
180
|
-
}).refine((e) => e.abilities === "chosen" === (e.choose !== null), {
|
|
181
|
-
path: ["choose"],
|
|
182
|
-
message: 'choose is required IFF abilities is "chosen": a fixed LIST is its own count'
|
|
183
|
-
}),
|
|
184
|
-
// `extra-action` is an additional ACTION on your turn; `extra-attack` is attacks WITHIN the Attack action.
|
|
185
|
-
z.object({
|
|
186
|
-
kind: z.literal("extra-action"),
|
|
187
|
-
count: z.number().int().positive(),
|
|
188
|
-
action_type: z.enum(["action", "bonus-action", "reaction"]),
|
|
189
|
-
condition: conditionField,
|
|
190
|
-
subject: subjectField
|
|
191
|
-
}),
|
|
192
|
-
// `save-outcome` remaps the OUTCOME; `roll-modifier` modifies the ROLL.
|
|
193
|
-
z.object({
|
|
194
|
-
kind: z.literal("save-outcome"),
|
|
195
|
-
ability: z.union([abilityEnum, z.literal("any")]),
|
|
196
|
-
on_success: z.enum(["none", "half", "full"]),
|
|
197
|
-
on_failure: z.enum(["none", "half", "full"]),
|
|
198
|
-
applies_to: z.string().nullable(),
|
|
199
|
-
condition: conditionField,
|
|
200
|
-
subject: subjectField
|
|
201
|
-
})
|
|
202
|
-
]);
|
|
203
|
-
|
|
204
|
-
export {
|
|
205
|
-
featureEffectSchema
|
|
206
|
-
};
|
package/dist/chunk-2LULMQTF.js
DELETED
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
// src/types/equipment-grant.ts
|
|
2
|
-
function isCategoryGrant(g) {
|
|
3
|
-
return !!g && typeof g === "object" && typeof g.category === "string" && g.category.length > 0;
|
|
4
|
-
}
|
|
5
|
-
var equipmentCategoryKey = (i, j, k) => `equipment-${i}-opt-${j}-cat-${k}`;
|
|
6
|
-
var equipmentCategoryKeys = (grants, i, j) => grants.flatMap((g, k) => isCategoryGrant(g) ? [equipmentCategoryKey(i, j, k)] : []);
|
|
7
|
-
var isStartingEquipmentKey = (key) => key.startsWith("equipment-");
|
|
8
|
-
|
|
9
|
-
export {
|
|
10
|
-
isCategoryGrant,
|
|
11
|
-
equipmentCategoryKey,
|
|
12
|
-
equipmentCategoryKeys,
|
|
13
|
-
isStartingEquipmentKey
|
|
14
|
-
};
|
package/dist/chunk-2UDSN6VW.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
parseBackground
|
|
3
|
-
} from "./chunk-6EI737IO.js";
|
|
4
|
-
|
|
5
|
-
// src/background/background.codec.ts
|
|
6
|
-
import yaml from "js-yaml";
|
|
7
|
-
var backgroundCodec = {
|
|
8
|
-
parse(doc) {
|
|
9
|
-
return parseBackground(doc.body);
|
|
10
|
-
},
|
|
11
|
-
serialize(entity) {
|
|
12
|
-
return yaml.dump(entity, { lineWidth: -1, sortKeys: false });
|
|
13
|
-
}
|
|
14
|
-
};
|
|
15
|
-
|
|
16
|
-
export {
|
|
17
|
-
backgroundCodec
|
|
18
|
-
};
|
package/dist/chunk-3LWMFYKS.js
DELETED
|
@@ -1,57 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
classifyWeaponRange
|
|
3
|
-
} from "./chunk-YDGMBMYI.js";
|
|
4
|
-
|
|
5
|
-
// src/pc/pc.weapon-grant.ts
|
|
6
|
-
var PROPERTY_KEY = {
|
|
7
|
-
"2h": "two_handed",
|
|
8
|
-
"two-handed": "two_handed",
|
|
9
|
-
"two handed": "two_handed",
|
|
10
|
-
h: "heavy",
|
|
11
|
-
l: "light",
|
|
12
|
-
f: "finesse",
|
|
13
|
-
t: "thrown",
|
|
14
|
-
v: "versatile",
|
|
15
|
-
r: "reach",
|
|
16
|
-
a: "ammunition",
|
|
17
|
-
ld: "loading",
|
|
18
|
-
s: "special"
|
|
19
|
-
};
|
|
20
|
-
var propertyKey = (word) => {
|
|
21
|
-
var _a;
|
|
22
|
-
const w = word.trim().toLowerCase();
|
|
23
|
-
return (_a = PROPERTY_KEY[w]) != null ? _a : w.replace(/[\s-]+/g, "_");
|
|
24
|
-
};
|
|
25
|
-
var GRANT_RE = new RegExp(
|
|
26
|
-
"^(?:all\\s+)?(?:(melee|ranged)\\s+)?(simple|martial)(?:\\s+(melee|ranged))?\\s+weapons?\\s+(?:that|which)\\s+(have|has|don'?t\\s+have|do\\s+not\\s+have|doesn'?t\\s+have|does\\s+not\\s+have)\\s+the\\s+(.+?)\\s+propert(?:y|ies)\\.?$",
|
|
27
|
-
"i"
|
|
28
|
-
);
|
|
29
|
-
function parseQualifiedWeaponGrant(text) {
|
|
30
|
-
var _a, _b;
|
|
31
|
-
const m = GRANT_RE.exec(text.replace(/’/g, "'").trim().replace(/\s+/g, " "));
|
|
32
|
-
if (!m) return null;
|
|
33
|
-
const range = (_b = (_a = m[1]) != null ? _a : m[3]) == null ? void 0 : _b.toLowerCase();
|
|
34
|
-
const properties = m[5].split(/\s*,\s*|\s+or\s+|\s+and\s+/i).map((w) => w.trim()).filter(Boolean).map(propertyKey);
|
|
35
|
-
if (properties.length === 0) return null;
|
|
36
|
-
return {
|
|
37
|
-
category: m[2].toLowerCase(),
|
|
38
|
-
...range ? { range } : {},
|
|
39
|
-
properties,
|
|
40
|
-
without: /n'?t|not/i.test(m[4])
|
|
41
|
-
};
|
|
42
|
-
}
|
|
43
|
-
function qualifiedGrantCovers(text, weapon) {
|
|
44
|
-
const g = parseQualifiedWeaponGrant(text);
|
|
45
|
-
if (!g || typeof weapon.category !== "string") return false;
|
|
46
|
-
if (!new RegExp(`^${g.category}\\b`).test(weapon.category)) return false;
|
|
47
|
-
if (g.range) {
|
|
48
|
-
const melee = classifyWeaponRange(weapon).melee !== null;
|
|
49
|
-
if (g.range === "melee" !== melee) return false;
|
|
50
|
-
}
|
|
51
|
-
const has = g.properties.some((p) => weapon.properties.some((x) => x === p));
|
|
52
|
-
return g.without ? !has : has;
|
|
53
|
-
}
|
|
54
|
-
|
|
55
|
-
export {
|
|
56
|
-
qualifiedGrantCovers
|
|
57
|
-
};
|
package/dist/chunk-3MGQFFNE.js
DELETED
|
@@ -1,110 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
startingEquipmentEntrySchema
|
|
3
|
-
} from "./chunk-IN4M4X7P.js";
|
|
4
|
-
import {
|
|
5
|
-
choiceSchema
|
|
6
|
-
} from "./chunk-5MXFW4O3.js";
|
|
7
|
-
import {
|
|
8
|
-
additionalSpellsEntrySchema,
|
|
9
|
-
imageField
|
|
10
|
-
} from "./chunk-UA5KS2PL.js";
|
|
11
|
-
|
|
12
|
-
// src/background/background.schema.ts
|
|
13
|
-
import { z } from "zod";
|
|
14
|
-
var abilityEnum = z.enum(["str", "dex", "con", "int", "wis", "cha"]);
|
|
15
|
-
var editionEnum = z.enum(["2014", "2024"]);
|
|
16
|
-
var skillEnum = z.enum([
|
|
17
|
-
"acrobatics",
|
|
18
|
-
"animal-handling",
|
|
19
|
-
"arcana",
|
|
20
|
-
"athletics",
|
|
21
|
-
"deception",
|
|
22
|
-
"history",
|
|
23
|
-
"insight",
|
|
24
|
-
"intimidation",
|
|
25
|
-
"investigation",
|
|
26
|
-
"medicine",
|
|
27
|
-
"nature",
|
|
28
|
-
"perception",
|
|
29
|
-
"performance",
|
|
30
|
-
"persuasion",
|
|
31
|
-
"religion",
|
|
32
|
-
"sleight-of-hand",
|
|
33
|
-
"stealth",
|
|
34
|
-
"survival"
|
|
35
|
-
]);
|
|
36
|
-
var wikilinkRegex = /^\[\[[^[\]]+\]\]$/;
|
|
37
|
-
var toolProfSchema = z.discriminatedUnion("kind", [
|
|
38
|
-
z.object({ kind: z.literal("fixed"), items: z.array(z.string()).nonempty() }),
|
|
39
|
-
z.object({
|
|
40
|
-
kind: z.literal("choice"),
|
|
41
|
-
count: z.number().int().positive(),
|
|
42
|
-
from: z.array(z.string()).nonempty()
|
|
43
|
-
})
|
|
44
|
-
]);
|
|
45
|
-
var langProfSchema = z.discriminatedUnion("kind", [
|
|
46
|
-
z.object({ kind: z.literal("fixed"), languages: z.array(z.string()).nonempty() }),
|
|
47
|
-
z.object({
|
|
48
|
-
kind: z.literal("choice"),
|
|
49
|
-
count: z.number().int().positive(),
|
|
50
|
-
from: z.union([z.string(), z.array(z.string())])
|
|
51
|
-
})
|
|
52
|
-
]);
|
|
53
|
-
var suggestedCharSchema = z.object({
|
|
54
|
-
personality_traits: z.record(z.string(), z.string()).optional(),
|
|
55
|
-
ideals: z.record(z.string(), z.object({
|
|
56
|
-
name: z.string().optional(),
|
|
57
|
-
desc: z.string(),
|
|
58
|
-
alignment: z.string().optional()
|
|
59
|
-
})).optional(),
|
|
60
|
-
bonds: z.record(z.string(), z.string()).optional(),
|
|
61
|
-
flaws: z.record(z.string(), z.string()).optional()
|
|
62
|
-
});
|
|
63
|
-
var backgroundEntitySchema = z.object({
|
|
64
|
-
slug: z.string().min(1),
|
|
65
|
-
name: z.string().min(1),
|
|
66
|
-
edition: editionEnum,
|
|
67
|
-
source: z.string().min(1),
|
|
68
|
-
description: z.string(),
|
|
69
|
-
skill_proficiencies: z.array(skillEnum),
|
|
70
|
-
tool_proficiencies: z.array(toolProfSchema),
|
|
71
|
-
language_proficiencies: z.array(langProfSchema),
|
|
72
|
-
equipment: z.array(startingEquipmentEntrySchema),
|
|
73
|
-
feature: z.object({
|
|
74
|
-
name: z.string().min(1),
|
|
75
|
-
description: z.string().min(1)
|
|
76
|
-
}),
|
|
77
|
-
ability_score_increases: z.object({
|
|
78
|
-
pool: z.array(abilityEnum).length(3)
|
|
79
|
-
}).nullable(),
|
|
80
|
-
origin_feat: z.string().regex(wikilinkRegex).nullable(),
|
|
81
|
-
suggested_characteristics: suggestedCharSchema.nullable(),
|
|
82
|
-
choices: z.array(choiceSchema).optional(),
|
|
83
|
-
rendering_hint: z.string().optional(),
|
|
84
|
-
// 175
|
|
85
|
-
has_fluff_images: z.boolean().optional(),
|
|
86
|
-
// 87
|
|
87
|
-
tables: z.array(z.object({
|
|
88
|
-
// 88 tables / 67 docs; key-sets EXACT (finding 6)
|
|
89
|
-
name: z.string().min(1),
|
|
90
|
-
dice: z.string().min(1),
|
|
91
|
-
rows: z.array(z.object({ roll: z.string(), text: z.string() }))
|
|
92
|
-
})).optional(),
|
|
93
|
-
additional_spells: z.array(additionalSpellsEntrySchema).optional(),
|
|
94
|
-
// 15
|
|
95
|
-
prerequisites: z.array(z.object({
|
|
96
|
-
// 4 docs; kind CLOSED AT THE EMITTER
|
|
97
|
-
kind: z.literal("campaign"),
|
|
98
|
-
slug: z.string().min(1)
|
|
99
|
-
// (background-mapper.ts pushes
|
|
100
|
-
})).optional(),
|
|
101
|
-
// {kind:"campaign", slug} literally — finding 24)
|
|
102
|
-
// The one-arm union STAYS (§2.6 adjudication): it is closed by CONSTRUCTION at the converter's
|
|
103
|
-
// only push site, and a future kind turns into a visible census REFUSAL — the correct loud failure.
|
|
104
|
-
image: imageField
|
|
105
|
-
});
|
|
106
|
-
|
|
107
|
-
export {
|
|
108
|
-
langProfSchema,
|
|
109
|
-
backgroundEntitySchema
|
|
110
|
-
};
|
package/dist/chunk-3TM34RSJ.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
// src/inline-tag-parser.ts
|
|
2
|
-
var VALID_PREFIXES = ["dice", "damage", "dc", "atk", "mod", "check"];
|
|
3
|
-
var PREFIX_ALIASES = {
|
|
4
|
-
roll: "dice",
|
|
5
|
-
d: "dice",
|
|
6
|
-
attack: "atk",
|
|
7
|
-
dmg: "damage"
|
|
8
|
-
};
|
|
9
|
-
function parseInlineTag(text) {
|
|
10
|
-
var _a;
|
|
11
|
-
const colonIndex = text.indexOf(":");
|
|
12
|
-
if (colonIndex === -1) return null;
|
|
13
|
-
const prefix = text.slice(0, colonIndex).trim().toLowerCase();
|
|
14
|
-
const resolved = (_a = PREFIX_ALIASES[prefix]) != null ? _a : prefix;
|
|
15
|
-
if (!VALID_PREFIXES.includes(resolved)) return null;
|
|
16
|
-
const content = text.slice(colonIndex + 1).trim();
|
|
17
|
-
if (content.length === 0) return null;
|
|
18
|
-
return { type: resolved, content, formula: null };
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export {
|
|
22
|
-
parseInlineTag
|
|
23
|
-
};
|