@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
|
@@ -1,19 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
CR_TO_XP,
|
|
3
|
-
convertMonsterEntries,
|
|
4
|
-
enrichMonster,
|
|
5
|
-
getChallengeRatingXP,
|
|
6
|
-
getProficiencyBonus,
|
|
7
|
-
parseCR
|
|
8
|
-
} from "../chunk-6PXTNCBP.js";
|
|
9
|
-
import "../chunk-DEEHHLAP.js";
|
|
10
|
-
import "../chunk-PDJSUH24.js";
|
|
11
|
-
import "../chunk-WELIKLZF.js";
|
|
12
|
-
export {
|
|
13
|
-
CR_TO_XP,
|
|
14
|
-
convertMonsterEntries,
|
|
15
|
-
enrichMonster,
|
|
16
|
-
getChallengeRatingXP,
|
|
17
|
-
getProficiencyBonus,
|
|
18
|
-
parseCR
|
|
19
|
-
};
|
|
1
|
+
import{CR_TO_XP,convertMonsterEntries,enrichMonster,getChallengeRatingXP,getProficiencyBonus,parseCR}from"../chunk-JXDX2DKF.js";import"../chunk-MGGKZGLG.js";import"../chunk-7FPQJDFD.js";import"../chunk-EVT7MGAC.js";export{CR_TO_XP,convertMonsterEntries,enrichMonster,getChallengeRatingXP,getProficiencyBonus,parseCR};
|
|
@@ -1,26 +1,13 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* R4-G6 §6 · READ-time decoding of the converter's 5etools-shaped monster leaves. Pure functions; every table is
|
|
3
|
-
* DATA in this module (memory: rendering policy from the schema / data, never a switch on game vocabulary in a
|
|
4
|
-
* renderer). Every function accepts the authored string / number shape AND the structured shape, and on the
|
|
5
|
-
* string / number arms reproduces the plugin renderer's historical output byte for byte (invariant 5: the SRD
|
|
6
|
-
* render pins are the proof).
|
|
7
|
-
*/
|
|
8
1
|
import type { Abilities } from "../types/index.js";
|
|
9
2
|
import type { AlignmentEntry, DamageQualifier, MonsterAC, MonsterCRStructured, MonsterGearEntry, MonsterHP, MonsterInitiative, MonsterSectionHeader, MonsterSpeed, MonsterSpellcasting, MonsterTypeStructured } from "./monster.types.js";
|
|
10
|
-
/** The plugin renderer's historical helper, byte for byte (`/\b\w/g`), so `player's` becomes `Player'S`. */
|
|
11
3
|
export declare function capitalizeWords(str: string): string;
|
|
12
|
-
/** `capitalizeWords` applied OUTSIDE wikilink targets: the plain text and the ALIAS of `[[target|alias]]` are
|
|
13
|
-
* title-cased, the target never is (1,202 `ac[].from` links carry an apostrophe the plain helper mangles). */
|
|
14
4
|
export declare function capitalizeOutsideLinks(str: string): string;
|
|
15
5
|
export declare const SIZE_CODES: Readonly<Record<string, string>>;
|
|
16
6
|
export declare function formatSize(size: string | string[] | undefined, note?: string): string;
|
|
17
|
-
/** The FIRST decoded size word, lower-cased: the hit-die table and the edit-mode size select key on it. */
|
|
18
7
|
export declare function sizeWord(size: string | string[] | undefined): string;
|
|
19
8
|
export declare const ALIGNMENT_CODES: Readonly<Record<string, string>>;
|
|
20
|
-
/** The multi-code SETS 5etools prints as a phrase, keyed by the sorted code set (the measured combos). */
|
|
21
9
|
export declare const ALIGNMENT_SETS: Readonly<Record<string, string>>;
|
|
22
10
|
export declare function formatAlignment(alignment: string | (string | AlignmentEntry)[] | undefined, prefix?: string): string;
|
|
23
|
-
/** The decoded text lower-cased: the edit-mode alignment selects match on it. */
|
|
24
11
|
export declare function alignmentWords(alignment: string | (string | AlignmentEntry)[] | undefined): string;
|
|
25
12
|
export declare const IRREGULAR_PLURALS: Readonly<Record<string, string>>;
|
|
26
13
|
export declare function formatType(type: string | MonsterTypeStructured | undefined, level?: number): string;
|
|
@@ -35,17 +22,9 @@ export interface FormattedCR {
|
|
|
35
22
|
xpOverride?: number;
|
|
36
23
|
}
|
|
37
24
|
export declare function formatCR(cr: string | MonsterCRStructured | undefined): FormattedCR | undefined;
|
|
38
|
-
/** Thousands-separated without `toLocaleString` (ICU-independent, deterministic across Node and Electron). */
|
|
39
25
|
export declare function formatXP(xp: number): string;
|
|
40
|
-
/** The bare `cr` text (today's Challenge value; `formatCR` normalises it before the PB / XP table reads). */
|
|
41
26
|
export declare function crString(cr: string | MonsterCRStructured | undefined): string | undefined;
|
|
42
27
|
export declare function challengeLine(cr: string | MonsterCRStructured | undefined, pbNote?: string): string | undefined;
|
|
43
|
-
/** R4 {G5, G6} live rider N-3-3: a BRACED entry joins with a SPACE, every other with ", ". The braces
|
|
44
|
-
* flag marks an entry that reads as a parenthetical on the one before it ("15 (17 with mage armor)"),
|
|
45
|
-
* so emitting the list comma as well gave the Archmage and the converter's Feonor
|
|
46
|
-
* `Armor Class. 12, (15 with mage armor)`. The separator therefore belongs to the entry that FOLLOWS
|
|
47
|
-
* it, not to the list, which is why this joins by hand rather than with `Array.join`. A braced entry
|
|
48
|
-
* that opens the line still stands alone, and two unbraced entries still take the comma. */
|
|
49
28
|
export declare function formatAC(ac: MonsterAC[] | undefined): string;
|
|
50
29
|
export declare function formatHP(hp: MonsterHP | undefined): {
|
|
51
30
|
text: string;
|
|
@@ -54,53 +33,15 @@ export declare function formatHP(hp: MonsterHP | undefined): {
|
|
|
54
33
|
export declare const SPEED_MODES: readonly ["walk", "fly", "swim", "climb", "burrow"];
|
|
55
34
|
export type SpeedMode = (typeof SPEED_MODES)[number];
|
|
56
35
|
export declare function formatSpeed(speed: MonsterSpeed | undefined): string;
|
|
57
|
-
/** The numeric part of a speed value, or 0 (the edit-mode number inputs and the `> 0` gates read this). */
|
|
58
36
|
export declare function speedNumber(speed: MonsterSpeed | undefined, mode: SpeedMode): number;
|
|
59
37
|
export declare function formatQualifiers(list: (string | DamageQualifier)[] | null | undefined): string[];
|
|
60
|
-
/** The STRING entries only (the edit-mode multi-selects are `string[]`; structured entries are merged back on save). */
|
|
61
38
|
export declare function qualifierStrings(list: (string | DamageQualifier)[] | null | undefined): string[];
|
|
62
39
|
export declare const INITIATIVE_MODES: Readonly<Record<string, string>>;
|
|
63
40
|
export declare function formatInitiative(initiative: number | MonsterInitiative | undefined, abilities: Abilities | undefined, pb: number): string | undefined;
|
|
64
41
|
export declare function formatGear(gear: (string | MonsterGearEntry)[] | undefined): string;
|
|
65
|
-
/**
|
|
66
|
-
* The Languages line (R4 {G5, G6} live rider 3, Z-9-9). Each entry is title-cased, as this line has always
|
|
67
|
-
* been, EXCEPT that the word immediately following an amount keeps the case it was authored in: that word is
|
|
68
|
-
* the amount's unit. `capitalizeWords` reached it too, so a block read `Deep Speech; Telepathy 120 Ft.` while
|
|
69
|
-
* the Senses line right above printed its own `darkvision 120 ft.` verbatim (Aboleth, Baphomet).
|
|
70
|
-
*
|
|
71
|
-
* The rule is a SHAPE, not a list of unit words: no vocabulary table enters this formatter. Measured over the
|
|
72
|
-
* converter corpus' 4,042 monster notes that carry a `languages` block, the words that follow an amount there
|
|
73
|
-
* are `ft` (527), `mile` (10), `miles` (7), `feet` (1), the conjunctions `and` (7) and `or` (2), and NINE
|
|
74
|
-
* language names already authored with a capital (`Elvish`, `Common`, `Terran`, `Druidic`, `Ignan`, `Sylvan`,
|
|
75
|
-
* `Celestial`, `Draconic`, `Auran`). Keeping the AUTHORED case rather than lower-casing is what leaves those
|
|
76
|
-
* language names alone; the two conjunctions stop being title-cased, which is correct English and reaches no
|
|
77
|
-
* SRD bundle document (there, `ft` is the only word that ever follows an amount).
|
|
78
|
-
*
|
|
79
|
-
* What this does NOT change: the rest of an entry's free prose is still title-cased, so
|
|
80
|
-
* "understands Common and Deep Speech but can't speak" still renders with each word capitalised. That is the
|
|
81
|
-
* line's shipped register and a separate copy question, recorded rather than changed here.
|
|
82
|
-
*/
|
|
83
42
|
export declare function formatLanguages(list: string[] | undefined): string;
|
|
84
|
-
/**
|
|
85
|
-
* A monster's `skills` (and `skills_other.one_of`) KEY to the name a reader sees (R4 {G5, G6} live rider 3,
|
|
86
|
-
* Z-9-8). Those keys are written with a separator · the SRD bundle's Donkey carries `animal_handling` and
|
|
87
|
-
* `sleight_of_hand` · and `capitalizeWords` only upper-cases the first letter of each WORD, so the separator
|
|
88
|
-
* survived and the line read `Animal_handling +0`. The separator is normalised and the CANONICAL list answers;
|
|
89
|
-
* a key the list does not know keeps `capitalizeWords`, which is byte for byte what every key rendered before
|
|
90
|
-
* (invariant 5: the sixteen one-word skills already agreed with the list, so only the two-word two move).
|
|
91
|
-
*/
|
|
92
43
|
export declare function skillDisplayName(key: string): string;
|
|
93
44
|
export declare function formatSkillsOther(list: unknown[] | undefined): string | undefined;
|
|
94
|
-
/**
|
|
95
|
-
* The generated legendary-action sentence (R4-G6 spec §6), used only when the document authors no
|
|
96
|
-
* `section_headers` row for the section (plugin `monster.sections.ts`).
|
|
97
|
-
*
|
|
98
|
-
* `short_name` is read exactly as authored: a STRING is the subject verbatim; `true` and `false` both say "this
|
|
99
|
-
* document has no separate short name", so the whole name prints; only an ABSENT key derives one through
|
|
100
|
-
* `shortNameOfNamed`. Measured over the two shipped corpora (`g7-t8-wE-f1-d9-corpus.txt`): 24 monster documents carry
|
|
101
|
-
* a `short_name` (11 `true`, 13 a string) and NONE carries `false`, so the false arm is a contract read from the type,
|
|
102
|
-
* not an observed rendering.
|
|
103
|
-
*/
|
|
104
45
|
export declare function legendaryIntro(m: {
|
|
105
46
|
name: string;
|
|
106
47
|
is_named_creature?: boolean;
|
|
@@ -112,24 +53,14 @@ export declare function sectionHeader(m: {
|
|
|
112
53
|
mythic_header?: string[];
|
|
113
54
|
}, section: "legendary_actions" | "mythic" | "reactions"): string[] | undefined;
|
|
114
55
|
export type PlacedSection = "traits" | "actions" | "bonus_actions" | "reactions" | "legendary_actions";
|
|
115
|
-
/** ONE object: the 5etools `displayAs` vocabulary to the stat-block section (the plugin never switches on it). */
|
|
116
56
|
export declare const DISPLAY_AS_SECTION: Readonly<Record<string, Exclude<PlacedSection, "traits">>>;
|
|
117
57
|
export declare function displayAsSection(displayAs: string | undefined): PlacedSection;
|
|
118
58
|
declare const GROUP_ORDER: readonly ["will", "daily", "rest", "restLong", "recharge", "legendary", "charges", "ritual"];
|
|
119
|
-
/** ONE label table: EVERY group of `GROUP_ORDER` owns its label text here, so the eight FREQUENCY-group labels are
|
|
120
|
-
* DATA; the slot-table wording (`Cantrips (At Will):`, `N Level (N Slots):`) is generated in `spellcastingLines`
|
|
121
|
-
* and deliberately outside this table. Title-cased to match the SRD 2024 statblock prose the vault already
|
|
122
|
-
* shows beside these entries. `plain` is a plain sub-key's label, and the whole label of the two count-less groups
|
|
123
|
-
* `will` and `ritual`; `each` is its `Ne` twin, absent where a group has no twin; `six` is `recharge`'s
|
|
124
|
-
* already-at-6 form. `N` stands for the sub-key's count. `charges` alone ends without a colon: `spellcastingLines`
|
|
125
|
-
* appends ` (chargesItem):` after it (§8.2). The KEY type is `GROUP_ORDER`'s union, so a ninth group without a row
|
|
126
|
-
* is a compile error rather than a runtime `undefined`. */
|
|
127
59
|
export declare const SPELLCASTING_LABELS: Readonly<Record<(typeof GROUP_ORDER)[number], {
|
|
128
60
|
plain: string;
|
|
129
61
|
each?: string;
|
|
130
62
|
six?: string;
|
|
131
63
|
}>>;
|
|
132
64
|
export declare function spellcastingLines(block: MonsterSpellcasting): string[];
|
|
133
|
-
/** The measured node vocabulary to markdown; never throws; an unknown type recurses into its children only. */
|
|
134
65
|
export declare function entriesToMarkdown(tree: unknown): string;
|
|
135
66
|
export {};
|
|
@@ -1,78 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
ALIGNMENT_CODES,
|
|
3
|
-
ALIGNMENT_SETS,
|
|
4
|
-
DISPLAY_AS_SECTION,
|
|
5
|
-
INITIATIVE_MODES,
|
|
6
|
-
IRREGULAR_PLURALS,
|
|
7
|
-
SIZE_CODES,
|
|
8
|
-
SPEED_MODES,
|
|
9
|
-
SPELLCASTING_LABELS,
|
|
10
|
-
alignmentWords,
|
|
11
|
-
capitalizeOutsideLinks,
|
|
12
|
-
capitalizeWords,
|
|
13
|
-
challengeLine,
|
|
14
|
-
crString,
|
|
15
|
-
displayAsSection,
|
|
16
|
-
entriesToMarkdown,
|
|
17
|
-
formatAC,
|
|
18
|
-
formatAlignment,
|
|
19
|
-
formatCR,
|
|
20
|
-
formatGear,
|
|
21
|
-
formatHP,
|
|
22
|
-
formatInitiative,
|
|
23
|
-
formatLanguages,
|
|
24
|
-
formatQualifiers,
|
|
25
|
-
formatSize,
|
|
26
|
-
formatSkillsOther,
|
|
27
|
-
formatSpeed,
|
|
28
|
-
formatType,
|
|
29
|
-
formatXP,
|
|
30
|
-
legendaryIntro,
|
|
31
|
-
qualifierStrings,
|
|
32
|
-
sectionHeader,
|
|
33
|
-
sizeWord,
|
|
34
|
-
skillDisplayName,
|
|
35
|
-
speedNumber,
|
|
36
|
-
spellcastingLines
|
|
37
|
-
} from "../chunk-2FRUSVZS.js";
|
|
38
|
-
import "../chunk-6PXTNCBP.js";
|
|
39
|
-
import "../chunk-DEEHHLAP.js";
|
|
40
|
-
import "../chunk-PDJSUH24.js";
|
|
41
|
-
import "../chunk-WELIKLZF.js";
|
|
42
|
-
export {
|
|
43
|
-
ALIGNMENT_CODES,
|
|
44
|
-
ALIGNMENT_SETS,
|
|
45
|
-
DISPLAY_AS_SECTION,
|
|
46
|
-
INITIATIVE_MODES,
|
|
47
|
-
IRREGULAR_PLURALS,
|
|
48
|
-
SIZE_CODES,
|
|
49
|
-
SPEED_MODES,
|
|
50
|
-
SPELLCASTING_LABELS,
|
|
51
|
-
alignmentWords,
|
|
52
|
-
capitalizeOutsideLinks,
|
|
53
|
-
capitalizeWords,
|
|
54
|
-
challengeLine,
|
|
55
|
-
crString,
|
|
56
|
-
displayAsSection,
|
|
57
|
-
entriesToMarkdown,
|
|
58
|
-
formatAC,
|
|
59
|
-
formatAlignment,
|
|
60
|
-
formatCR,
|
|
61
|
-
formatGear,
|
|
62
|
-
formatHP,
|
|
63
|
-
formatInitiative,
|
|
64
|
-
formatLanguages,
|
|
65
|
-
formatQualifiers,
|
|
66
|
-
formatSize,
|
|
67
|
-
formatSkillsOther,
|
|
68
|
-
formatSpeed,
|
|
69
|
-
formatType,
|
|
70
|
-
formatXP,
|
|
71
|
-
legendaryIntro,
|
|
72
|
-
qualifierStrings,
|
|
73
|
-
sectionHeader,
|
|
74
|
-
sizeWord,
|
|
75
|
-
skillDisplayName,
|
|
76
|
-
speedNumber,
|
|
77
|
-
spellcastingLines
|
|
78
|
-
};
|
|
1
|
+
import{ALIGNMENT_CODES,ALIGNMENT_SETS,DISPLAY_AS_SECTION,INITIATIVE_MODES,IRREGULAR_PLURALS,SIZE_CODES,SPEED_MODES,SPELLCASTING_LABELS,alignmentWords,capitalizeOutsideLinks,capitalizeWords,challengeLine,crString,displayAsSection,entriesToMarkdown,formatAC,formatAlignment,formatCR,formatGear,formatHP,formatInitiative,formatLanguages,formatQualifiers,formatSize,formatSkillsOther,formatSpeed,formatType,formatXP,legendaryIntro,qualifierStrings,sectionHeader,sizeWord,skillDisplayName,speedNumber,spellcastingLines}from"../chunk-BCXGB4HP.js";import"../chunk-JXDX2DKF.js";import"../chunk-MGGKZGLG.js";import"../chunk-7FPQJDFD.js";import"../chunk-EVT7MGAC.js";export{ALIGNMENT_CODES,ALIGNMENT_SETS,DISPLAY_AS_SECTION,INITIATIVE_MODES,IRREGULAR_PLURALS,SIZE_CODES,SPEED_MODES,SPELLCASTING_LABELS,alignmentWords,capitalizeOutsideLinks,capitalizeWords,challengeLine,crString,displayAsSection,entriesToMarkdown,formatAC,formatAlignment,formatCR,formatGear,formatHP,formatInitiative,formatLanguages,formatQualifiers,formatSize,formatSkillsOther,formatSpeed,formatType,formatXP,legendaryIntro,qualifierStrings,sectionHeader,sizeWord,skillDisplayName,speedNumber,spellcastingLines};
|
|
@@ -1,8 +1,4 @@
|
|
|
1
1
|
import type { Monster } from "./monster.types.js";
|
|
2
2
|
import type { ParseResult } from "@archivist-gg/core";
|
|
3
|
-
/**
|
|
4
|
-
* R4-G6 §4.1 · the hand parser's tolerances made explicit, BEFORE `safeParse`. Each step rewrites only a shape the
|
|
5
|
-
* old parser already rewrote, coerced or dropped; the converter corpora are untouched by it (0 / 0 / 0 measured).
|
|
6
|
-
*/
|
|
7
3
|
export declare function migrateLegacy(raw: Record<string, unknown>): void;
|
|
8
4
|
export declare function parseMonster(source: string): ParseResult<Monster>;
|
|
@@ -1,15 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
migrateLegacy,
|
|
3
|
-
parseMonster
|
|
4
|
-
} from "../chunk-BJWSOQUC.js";
|
|
5
|
-
import "../chunk-VP5TIXDK.js";
|
|
6
|
-
import "../chunk-B2QHP6UF.js";
|
|
7
|
-
import "../chunk-WYGD2UGN.js";
|
|
8
|
-
import "../chunk-ZJXSXVFP.js";
|
|
9
|
-
import "../chunk-OOL4KMG2.js";
|
|
10
|
-
import "../chunk-JXWNXIIZ.js";
|
|
11
|
-
import "../chunk-UA5KS2PL.js";
|
|
12
|
-
export {
|
|
13
|
-
migrateLegacy,
|
|
14
|
-
parseMonster
|
|
15
|
-
};
|
|
1
|
+
import{migrateLegacy,parseMonster}from"../chunk-6ASJ3MVB.js";import"../chunk-QFIGPOFW.js";import"../chunk-V6NQ547U.js";import"../chunk-ZE46ADXS.js";import"../chunk-CCFIINBA.js";import"../chunk-KBFSJ5WE.js";import"../chunk-6IC53O3Q.js";import"../chunk-I26FHSI6.js";export{migrateLegacy,parseMonster};
|
|
@@ -1,9 +1,5 @@
|
|
|
1
1
|
import type { ResolveContext } from "@archivist-gg/core";
|
|
2
2
|
import type { MonsterRaw } from "./monster.codec.js";
|
|
3
|
-
/**
|
|
4
|
-
* Light, non-mutating derivation: computes proficiency bonus and XP from the
|
|
5
|
-
* monster's challenge rating. Returns a new object; the input `raw` is untouched.
|
|
6
|
-
*/
|
|
7
3
|
export declare function resolveMonster(raw: MonsterRaw, _ctx: ResolveContext): MonsterRaw & {
|
|
8
4
|
proficiency_bonus: number;
|
|
9
5
|
xp: number;
|
|
@@ -1,11 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* R4-G6 §3 · the monster schema. Every key the converter and the SRD bundle emit is DECLARED (79 converter keys +
|
|
3
|
-
* `name`, `subtype`, `columns`, `slug` / `edition` / `source`, `image` / `thumbnail`, `raw`). An undeclared TOP-LEVEL key
|
|
4
|
-
* relocates to `raw` (the parser's extras copy); an undeclared NESTED key is stripped and the converter census reports
|
|
5
|
-
* it (plain `z.object` on every nested container: Gate 0 Q1). No `.default()`; no `.min(1)` on `rendering_hint`
|
|
6
|
-
* (always `""`); one nullable spelling. `satisfies` (never an annotation) keeps `.shape`, which `MONSTER_KNOWN_KEYS`
|
|
7
|
-
* and the parity test read.
|
|
8
|
-
*/
|
|
9
1
|
import { z } from "zod";
|
|
10
2
|
import type { DamageQualifier } from "./monster.types.js";
|
|
11
3
|
export declare const damageQualifierSchema: z.ZodType<DamageQualifier>;
|
|
@@ -347,7 +339,6 @@ export declare const monsterSchema: z.ZodObject<{
|
|
|
347
339
|
has_token: z.ZodOptional<z.ZodBoolean>;
|
|
348
340
|
token_credit: z.ZodOptional<z.ZodString>;
|
|
349
341
|
token_custom: z.ZodOptional<z.ZodBoolean>;
|
|
350
|
-
foundry_token_scale: z.ZodOptional<z.ZodNumber>;
|
|
351
342
|
sound_clip: z.ZodOptional<z.ZodObject<{
|
|
352
343
|
type: z.ZodString;
|
|
353
344
|
path: z.ZodString;
|
|
@@ -1,34 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
MONSTER_KNOWN_KEYS,
|
|
3
|
-
alignmentEntrySchema,
|
|
4
|
-
damageQualifierSchema,
|
|
5
|
-
gearEntrySchema,
|
|
6
|
-
initiativeSchema,
|
|
7
|
-
monsterACSchema,
|
|
8
|
-
monsterCRSchema,
|
|
9
|
-
monsterHPSchema,
|
|
10
|
-
monsterSchema,
|
|
11
|
-
monsterSpeedSchema,
|
|
12
|
-
monsterSpellcastingSchema,
|
|
13
|
-
monsterTypeSchema
|
|
14
|
-
} from "../chunk-VP5TIXDK.js";
|
|
15
|
-
import "../chunk-B2QHP6UF.js";
|
|
16
|
-
import "../chunk-WYGD2UGN.js";
|
|
17
|
-
import "../chunk-ZJXSXVFP.js";
|
|
18
|
-
import "../chunk-OOL4KMG2.js";
|
|
19
|
-
import "../chunk-JXWNXIIZ.js";
|
|
20
|
-
import "../chunk-UA5KS2PL.js";
|
|
21
|
-
export {
|
|
22
|
-
MONSTER_KNOWN_KEYS,
|
|
23
|
-
alignmentEntrySchema,
|
|
24
|
-
damageQualifierSchema,
|
|
25
|
-
gearEntrySchema,
|
|
26
|
-
initiativeSchema,
|
|
27
|
-
monsterACSchema,
|
|
28
|
-
monsterCRSchema,
|
|
29
|
-
monsterHPSchema,
|
|
30
|
-
monsterSchema,
|
|
31
|
-
monsterSpeedSchema,
|
|
32
|
-
monsterSpellcastingSchema,
|
|
33
|
-
monsterTypeSchema
|
|
34
|
-
};
|
|
1
|
+
import{MONSTER_KNOWN_KEYS,alignmentEntrySchema,damageQualifierSchema,gearEntrySchema,initiativeSchema,monsterACSchema,monsterCRSchema,monsterHPSchema,monsterSchema,monsterSpeedSchema,monsterSpellcastingSchema,monsterTypeSchema}from"../chunk-QFIGPOFW.js";import"../chunk-V6NQ547U.js";import"../chunk-ZE46ADXS.js";import"../chunk-CCFIINBA.js";import"../chunk-KBFSJ5WE.js";import"../chunk-6IC53O3Q.js";import"../chunk-I26FHSI6.js";export{MONSTER_KNOWN_KEYS,alignmentEntrySchema,damageQualifierSchema,gearEntrySchema,initiativeSchema,monsterACSchema,monsterCRSchema,monsterHPSchema,monsterSchema,monsterSpeedSchema,monsterSpellcastingSchema,monsterTypeSchema};
|
|
@@ -77,7 +77,6 @@ export interface Monster {
|
|
|
77
77
|
has_token?: boolean;
|
|
78
78
|
token_credit?: string;
|
|
79
79
|
token_custom?: boolean;
|
|
80
|
-
foundry_token_scale?: number;
|
|
81
80
|
sound_clip?: MonsterSoundClip;
|
|
82
81
|
alt_art?: MonsterAltArt[];
|
|
83
82
|
image?: string | string[];
|
|
@@ -185,8 +184,6 @@ export interface MonsterSpellcasting {
|
|
|
185
184
|
charges?: Record<string, MonsterSpellEntry[]>;
|
|
186
185
|
chargesItem?: string;
|
|
187
186
|
}
|
|
188
|
-
/** `advantage_mode` is a STRING, decoded by `INITIATIVE_MODES` in monster.format.ts (never a closed enum: a hand-typed
|
|
189
|
-
* 5etools `adv` must not refuse the document). */
|
|
190
187
|
export interface MonsterInitiative {
|
|
191
188
|
proficiency?: number;
|
|
192
189
|
advantage_mode?: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import
|
|
1
|
+
import"../chunk-IKSMX4TN.js";
|
|
@@ -1,14 +1,3 @@
|
|
|
1
1
|
import type { DocCodec } from "@archivist-gg/core";
|
|
2
2
|
import type { OptionalFeatureEntity } from "@archivist-gg/dnd5e/types/optional-feature.types";
|
|
3
|
-
/**
|
|
4
|
-
* Normalizing codec (0c.1a). `parse` delegates to `parseOptionalFeature`, which
|
|
5
|
-
* seeds the `edition: "2014"` default and validates against
|
|
6
|
-
* `optionalFeatureEntitySchema`. `serialize` stays `yaml.dump` (the edit-save
|
|
7
|
-
* path uses obsidian's separate serializer; gate (d) verifies `yaml.dump`
|
|
8
|
-
* round-trips through `parseOptionalFeature`).
|
|
9
|
-
*
|
|
10
|
-
* SPECIAL (0c.1a Task 7): the entity type already lives at
|
|
11
|
-
* `@archivist-gg/dnd5e/types/optional-feature.types` (moved in 0c.0), so the codec
|
|
12
|
-
* imports it from there rather than a sibling `./optional-feature.types`.
|
|
13
|
-
*/
|
|
14
3
|
export declare const optionalFeatureCodec: DocCodec<OptionalFeatureEntity>;
|
|
@@ -1,13 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
optionalFeatureCodec
|
|
3
|
-
} from "../chunk-FVXLP7P3.js";
|
|
4
|
-
import "../chunk-FMUD3LDV.js";
|
|
5
|
-
import "../chunk-VN5DLURA.js";
|
|
6
|
-
import "../chunk-WYGD2UGN.js";
|
|
7
|
-
import "../chunk-ZJXSXVFP.js";
|
|
8
|
-
import "../chunk-OOL4KMG2.js";
|
|
9
|
-
import "../chunk-JXWNXIIZ.js";
|
|
10
|
-
import "../chunk-UA5KS2PL.js";
|
|
11
|
-
export {
|
|
12
|
-
optionalFeatureCodec
|
|
13
|
-
};
|
|
1
|
+
import{optionalFeatureCodec}from"../chunk-GIOV6JW7.js";import"../chunk-DZKSXSJF.js";import"../chunk-I4O2FIDT.js";import"../chunk-ZE46ADXS.js";import"../chunk-CCFIINBA.js";import"../chunk-KBFSJ5WE.js";import"../chunk-6IC53O3Q.js";import"../chunk-I26FHSI6.js";export{optionalFeatureCodec};
|
|
@@ -1,12 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
parseOptionalFeature
|
|
3
|
-
} from "../chunk-FMUD3LDV.js";
|
|
4
|
-
import "../chunk-VN5DLURA.js";
|
|
5
|
-
import "../chunk-WYGD2UGN.js";
|
|
6
|
-
import "../chunk-ZJXSXVFP.js";
|
|
7
|
-
import "../chunk-OOL4KMG2.js";
|
|
8
|
-
import "../chunk-JXWNXIIZ.js";
|
|
9
|
-
import "../chunk-UA5KS2PL.js";
|
|
10
|
-
export {
|
|
11
|
-
parseOptionalFeature
|
|
12
|
-
};
|
|
1
|
+
import{parseOptionalFeature}from"../chunk-DZKSXSJF.js";import"../chunk-I4O2FIDT.js";import"../chunk-ZE46ADXS.js";import"../chunk-CCFIINBA.js";import"../chunk-KBFSJ5WE.js";import"../chunk-6IC53O3Q.js";import"../chunk-I26FHSI6.js";export{parseOptionalFeature};
|
|
@@ -166,7 +166,8 @@ export declare const optionalFeatureEntitySchema: z.ZodObject<{
|
|
|
166
166
|
available_to: z.ZodArray<z.ZodString>;
|
|
167
167
|
effects: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
168
168
|
kind: z.ZodLiteral<"initiative-bonus">;
|
|
169
|
-
value: z.ZodNumber
|
|
169
|
+
value: z.ZodOptional<z.ZodNumber>;
|
|
170
|
+
amount: z.ZodOptional<z.ZodString>;
|
|
170
171
|
condition: z.ZodOptional<z.ZodString>;
|
|
171
172
|
subject: z.ZodOptional<z.ZodString>;
|
|
172
173
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -293,6 +294,7 @@ export declare const optionalFeatureEntitySchema: z.ZodObject<{
|
|
|
293
294
|
unarmed: "unarmed";
|
|
294
295
|
finesse: "finesse";
|
|
295
296
|
thrown: "thrown";
|
|
297
|
+
"pact-weapon": "pact-weapon";
|
|
296
298
|
}>, z.ZodArray<z.ZodEnum<{
|
|
297
299
|
weapon: "weapon";
|
|
298
300
|
melee: "melee";
|
|
@@ -300,6 +302,7 @@ export declare const optionalFeatureEntitySchema: z.ZodObject<{
|
|
|
300
302
|
unarmed: "unarmed";
|
|
301
303
|
finesse: "finesse";
|
|
302
304
|
thrown: "thrown";
|
|
305
|
+
"pact-weapon": "pact-weapon";
|
|
303
306
|
}>>]>>;
|
|
304
307
|
spell_scope: z.ZodOptional<z.ZodObject<{
|
|
305
308
|
list: z.ZodOptional<z.ZodString>;
|
|
@@ -398,6 +401,23 @@ export declare const optionalFeatureEntitySchema: z.ZodObject<{
|
|
|
398
401
|
level: z.ZodNumber;
|
|
399
402
|
count: z.ZodNumber;
|
|
400
403
|
}, z.core.$strip>>>;
|
|
404
|
+
applies_to: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
|
|
405
|
+
weapon: "weapon";
|
|
406
|
+
melee: "melee";
|
|
407
|
+
ranged: "ranged";
|
|
408
|
+
unarmed: "unarmed";
|
|
409
|
+
finesse: "finesse";
|
|
410
|
+
thrown: "thrown";
|
|
411
|
+
"pact-weapon": "pact-weapon";
|
|
412
|
+
}>, z.ZodArray<z.ZodEnum<{
|
|
413
|
+
weapon: "weapon";
|
|
414
|
+
melee: "melee";
|
|
415
|
+
ranged: "ranged";
|
|
416
|
+
unarmed: "unarmed";
|
|
417
|
+
finesse: "finesse";
|
|
418
|
+
thrown: "thrown";
|
|
419
|
+
"pact-weapon": "pact-weapon";
|
|
420
|
+
}>>]>>;
|
|
401
421
|
condition: z.ZodOptional<z.ZodString>;
|
|
402
422
|
subject: z.ZodOptional<z.ZodString>;
|
|
403
423
|
}, z.core.$strip>, z.ZodObject<{
|
|
@@ -1,15 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
infuseBlockSchema,
|
|
3
|
-
optionRowSchema,
|
|
4
|
-
optionalFeatureEntitySchema
|
|
5
|
-
} from "../chunk-VN5DLURA.js";
|
|
6
|
-
import "../chunk-WYGD2UGN.js";
|
|
7
|
-
import "../chunk-ZJXSXVFP.js";
|
|
8
|
-
import "../chunk-OOL4KMG2.js";
|
|
9
|
-
import "../chunk-JXWNXIIZ.js";
|
|
10
|
-
import "../chunk-UA5KS2PL.js";
|
|
11
|
-
export {
|
|
12
|
-
infuseBlockSchema,
|
|
13
|
-
optionRowSchema,
|
|
14
|
-
optionalFeatureEntitySchema
|
|
15
|
-
};
|
|
1
|
+
import{infuseBlockSchema,optionRowSchema,optionalFeatureEntitySchema}from"../chunk-I4O2FIDT.js";import"../chunk-ZE46ADXS.js";import"../chunk-CCFIINBA.js";import"../chunk-KBFSJ5WE.js";import"../chunk-6IC53O3Q.js";import"../chunk-I26FHSI6.js";export{infuseBlockSchema,optionRowSchema,optionalFeatureEntitySchema};
|
package/dist/pack.d.ts
CHANGED
|
@@ -1,11 +1,2 @@
|
|
|
1
1
|
import type { SystemPack } from "@archivist-gg/core";
|
|
2
|
-
/**
|
|
3
|
-
* The real `dnd5e` SystemPack. It owns the parse/resolve/generate contract for
|
|
4
|
-
* D&D 5e entity types via their {@link EntityType} definitions; presentation
|
|
5
|
-
* (renderer/edit/modal) stays in the obsidian package. It is the only pack the
|
|
6
|
-
* kernel registers.
|
|
7
|
-
*
|
|
8
|
-
* All 12 authored types are ported, plus the two generate-only types (npc and
|
|
9
|
-
* encounter); a new entity type joins by appending its EntityType here.
|
|
10
|
-
*/
|
|
11
2
|
export declare const dnd5ePack: SystemPack;
|
|
@@ -5,21 +5,11 @@ import type { Spell } from "@archivist-gg/dnd5e/spell/spell.types";
|
|
|
5
5
|
import type { Ability } from "@archivist-gg/dnd5e";
|
|
6
6
|
import type { ChoiceValue, ResolvedClass, ResolvedPool, ResolvedSpell } from "./pc.types.js";
|
|
7
7
|
export declare const prefixOf: (slug: string) => string;
|
|
8
|
-
/** §5.2.2 · a raw 5etools / bundle spell ref → the bare NAME slug. The path tail is taken ONLY for a wikilink; a bare
|
|
9
|
-
* name may legally contain "/" ("blindness/deafness" → "blindnessdeafness", the converter's own slug tail · Gate 0 B1).
|
|
10
|
-
* The "|source" token is DISCARDED (no abbreviation table exists anywhere); "#c"/"#2" are redundant with entity.level. */
|
|
11
8
|
export declare function normalizeSpellRef(ref: unknown): string | null;
|
|
12
9
|
export interface SpellNameIndex {
|
|
13
10
|
byName: Map<string, RegisteredEntity[]>;
|
|
14
11
|
}
|
|
15
|
-
/** At most ONE scan of the spell bucket per resolve(), keyed on slugify(entity name) · NEVER on the slug tail (Gate 0
|
|
16
|
-
* B2: the generators hyphenate "/" where dnd5e's slugify deletes it, so three bundle spells differ). Built LAZILY by
|
|
17
|
-
* its caller, on the first leaf that CALLS `resolveSpellByName` (the argument is evaluated whatever step then
|
|
18
|
-
* resolves it), so a character with no `additional_spells` leaf pays nothing for it. */
|
|
19
12
|
export declare function buildSpellNameIndex(entities: EntityRegistry): SpellNameIndex;
|
|
20
|
-
/** §5.2.3 · deterministic, no minted vocabulary: (0) the character's own copy · (a) the carrier's compendium exactly ·
|
|
21
|
-
* (b) same compendium → same edition (skipped when either side lacks one) → lowest full slug · (c) MISS → null + warnOnce ·
|
|
22
|
-
* (d) ambiguity after (i)+(ii) → (iii) decides AND warnOnce (the decision-engine byBare precedent). */
|
|
23
13
|
export declare function resolveSpellByName(opts: {
|
|
24
14
|
entities: EntityRegistry;
|
|
25
15
|
index: SpellNameIndex;
|
|
@@ -31,19 +21,8 @@ export declare function resolveSpellByName(opts: {
|
|
|
31
21
|
entity: Spell;
|
|
32
22
|
slug: string;
|
|
33
23
|
} | null;
|
|
34
|
-
/** §5.2.9 · fold a race's entries ONLY when no select-inline on race.choices[] / traits[].choices[] / nested option.choices[]
|
|
35
|
-
* carries an id outside the structural set (nested: zero carriers, defensive). */
|
|
36
24
|
export declare function raceIsUngated(race: RaceEntity): boolean;
|
|
37
|
-
/** SRD-G T4: the slugs (value and label) of every option the character CHOSE on a race's content select-inlines
|
|
38
|
-
* (`race.choices[]` and `traits[].choices[]`, the structural set excluded), read through `read(<choice id>)`. */
|
|
39
25
|
export declare function chosenRaceOptionKeys(race: RaceEntity, read: (id: string) => ChoiceValue | undefined): Set<string>;
|
|
40
|
-
/** §5.2.1 · the reader. Every object it receives is the RAW registry entity; nothing is mutated.
|
|
41
|
-
*
|
|
42
|
-
* SRD-G T4 (audit §3a): the RACE root also reads (1) a race whose lineage select-inline GATES it: the entry NAMED like
|
|
43
|
-
* the option the character chose folds (the SRD 5.2 Tiefling's legacy, the Elf's and Gnome's lineage); an unnamed
|
|
44
|
-
* entry on a gated race still folds nothing (it may belong to any lineage); (2) an `ability: {choose}` entry, when
|
|
45
|
-
* `raceChoice("spellcasting-ability")` answers one of its abilities (unanswered, the entry waits for the pick);
|
|
46
|
-
* (3) the `innate` level spells (the level 3 / 5 once-per-Long-Rest spells), folded always prepared like `known`. */
|
|
47
26
|
export declare function collectAdditionalSpells(args: {
|
|
48
27
|
race: RaceEntity | null;
|
|
49
28
|
feats: FeatEntity[];
|
|
@@ -53,9 +32,6 @@ export declare function collectAdditionalSpells(args: {
|
|
|
53
32
|
alreadyCollected: ResolvedSpell[];
|
|
54
33
|
entities: EntityRegistry;
|
|
55
34
|
warnings: string[];
|
|
56
|
-
/** SRD-G T4: the character's answer to a race choice, by choice id (`origin_choices["race:<id>"]`). */
|
|
57
35
|
raceChoice?: (id: string) => ChoiceValue | undefined;
|
|
58
|
-
/** User report 2026-09-28: the RESOLVED pools. Every member the character has (a pick or a grant; an item-bound one's
|
|
59
|
-
* subject is its item) is a root, read at the owning class's level, its spells that class's. */
|
|
60
36
|
pools?: ReadonlyArray<ResolvedPool>;
|
|
61
37
|
}): ResolvedSpell[];
|
|
@@ -1,26 +1 @@
|
|
|
1
|
-
import
|
|
2
|
-
buildSpellNameIndex,
|
|
3
|
-
chosenRaceOptionKeys,
|
|
4
|
-
collectAdditionalSpells,
|
|
5
|
-
normalizeSpellRef,
|
|
6
|
-
prefixOf,
|
|
7
|
-
raceIsUngated,
|
|
8
|
-
resolveSpellByName
|
|
9
|
-
} from "../chunk-LICYHPI3.js";
|
|
10
|
-
import "../chunk-PVCEA4HZ.js";
|
|
11
|
-
import "../chunk-LVQLWRCU.js";
|
|
12
|
-
import "../chunk-4J6DS3EJ.js";
|
|
13
|
-
import "../chunk-ZCTUYGNV.js";
|
|
14
|
-
import "../chunk-7Q2VPKCD.js";
|
|
15
|
-
import "../chunk-ZDAEGJH4.js";
|
|
16
|
-
import "../chunk-WELIKLZF.js";
|
|
17
|
-
import "../chunk-UA5KS2PL.js";
|
|
18
|
-
export {
|
|
19
|
-
buildSpellNameIndex,
|
|
20
|
-
chosenRaceOptionKeys,
|
|
21
|
-
collectAdditionalSpells,
|
|
22
|
-
normalizeSpellRef,
|
|
23
|
-
prefixOf,
|
|
24
|
-
raceIsUngated,
|
|
25
|
-
resolveSpellByName
|
|
26
|
-
};
|
|
1
|
+
import{buildSpellNameIndex,chosenRaceOptionKeys,collectAdditionalSpells,normalizeSpellRef,prefixOf,raceIsUngated,resolveSpellByName}from"../chunk-A7H6LX47.js";import"../chunk-UBUKCRZ3.js";import"../chunk-DY6FVAGA.js";import"../chunk-CMIEZQL4.js";import"../chunk-BGX36NPE.js";import"../chunk-O776WL7O.js";import"../chunk-DVUXUIPV.js";import"../chunk-YGH7S5ZF.js";import"../chunk-4IAMSRHD.js";import"../chunk-DZITM5AG.js";import"../chunk-PZ4L2EEG.js";import"../chunk-QMEKQTUT.js";import"../chunk-63YJPWTM.js";import"../chunk-4KVVAENP.js";import"../chunk-7EL3GWWJ.js";import"../chunk-BREHZNTL.js";import"../chunk-7FPQJDFD.js";import"../chunk-EVT7MGAC.js";import"../chunk-I26FHSI6.js";export{buildSpellNameIndex,chosenRaceOptionKeys,collectAdditionalSpells,normalizeSpellRef,prefixOf,raceIsUngated,resolveSpellByName};
|
|
@@ -1,41 +1,16 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* D2b-A · the numbers an amount resolves against (design §1.2 A). The modifier and the save DC are those of the class
|
|
3
|
-
* that OWNS the feature or grants the spell (multiclass: the granting class, user ruling 2026-09-27).
|
|
4
|
-
*/
|
|
5
1
|
import type { Ability } from "@archivist-gg/dnd5e/types/choice";
|
|
6
2
|
import type { Spell } from "@archivist-gg/dnd5e/spell/spell.types";
|
|
7
3
|
import { type AmountBindings } from "@archivist-gg/dnd5e/dnd/amount-text";
|
|
8
4
|
import type { DerivedStats, FeatureSource, ResolvedCharacter, ResolvedSpell, SpellDamageRider } from "./pc.types.js";
|
|
9
|
-
/** The derived fields the bindings read (recalc builds them before its return; the sheet passes `ctx.derived`). */
|
|
10
5
|
export type AmountDerived = Pick<DerivedStats, "proficiencyBonus" | "mods" | "spellcastingClasses"> & Partial<Pick<DerivedStats, "abilitySpellcasting">>;
|
|
11
|
-
/** The class slug that owns `source`: a class by its slug, a subclass by the class that holds it, a feat through the
|
|
12
|
-
* slot it was taken at (`via`), a pool member through its pool's class. Null for race, background and campaign. */
|
|
13
6
|
export declare function ownerClassSlug(source: FeatureSource | undefined, resolved: Pick<ResolvedCharacter, "classes">): string | null;
|
|
14
|
-
/** The bindings an amount owned by `owner` resolves against: `class_level` is the OWNING class's level (the total level
|
|
15
|
-
* for a race, background or unowned source), `spell_mod` / `spell_dc` come from that class's spellcasting row, else
|
|
16
|
-
* the first caster's, else they stay unbound (the amount prints its words or a label). */
|
|
17
7
|
export declare function amountBindingsFor(owner: FeatureSource | undefined, resolved: Pick<ResolvedCharacter, "classes" | "totalLevel">, derived: AmountDerived): AmountBindings;
|
|
18
|
-
/** How a spell is cast: its ability, save DC and attack bonus. A grant that carries its OWN ability (a feat's chosen
|
|
19
|
-
* ability, a race grant, a class-less row) reads `abilitySpellcasting`; every other spell reads its class's row, else
|
|
20
|
-
* the first caster's. The one lookup the Spells tab's DC, attack and effect cells share. */
|
|
21
8
|
export declare function spellcastingFor(spell: Pick<ResolvedSpell, "source" | "classSlug" | "ability">, derived: AmountDerived): {
|
|
22
9
|
ability: Ability;
|
|
23
10
|
saveDC: number;
|
|
24
11
|
attackBonus: number;
|
|
25
12
|
} | null;
|
|
26
|
-
/** The bindings a spell's effect resolves against: its caster's modifier and save DC (see {@link spellcastingFor}). */
|
|
27
13
|
export declare function spellAmountBindings(spell: Pick<ResolvedSpell, "source" | "classSlug" | "ability">, resolved: Pick<ResolvedCharacter, "classes" | "totalLevel">, derived: AmountDerived): AmountBindings;
|
|
28
|
-
/** What a spell adds to its base roll ONCE, in token form: `{spell_mod}` when its text reads "<the base roll> plus (or
|
|
29
|
-
* +) your spellcasting (ability) modifier" (35 vault notes: Healing Word, Cure Wounds, Spiritual Weapon, ...), else
|
|
30
|
-
* null. Read from the note's own words at read time; the roll must be the one the phrase follows, so a spell whose
|
|
31
|
-
* modifier rides a different roll (a heal beside a damage roll) adds nothing. */
|
|
32
14
|
export declare function spellRollBonus(spell: Pick<Spell, "damage_roll" | "description">): string | null;
|
|
33
|
-
/** The spell's printed roll with every spell damage rider that reaches it added INSIDE the one roll (bonus damage prints
|
|
34
|
-
* in the damage cell, user ruling): Agonizing Blast's Charisma on its cantrip reads "1d10+3" (found live 2026-09-28),
|
|
35
|
-
* Potent Spellcasting's Wisdom on Sacred Flame "1d8+3". A conditional rider, or one of another canonical damage type
|
|
36
|
-
* than the spell's own, is not added here: it is a line of its own (`spellDamageRiderLines`). */
|
|
37
15
|
export declare function addSpellDamageRiders(roll: string, spell: Pick<ResolvedSpell, "slug" | "entity">, derived: Partial<Pick<DerivedStats, "spellDamageRiders">>): string;
|
|
38
|
-
/** The spell damage riders that reach `spell` but do not fold into its roll, each its own line in the damage cell, the
|
|
39
|
-
* way a conditional weapon rider is (Power Surge's "+ 5 force" once a surge is spent; Arcane Firearm's "+ 1d8" through
|
|
40
|
-
* the firearm): a `condition`, or another canonical damage type. `spells` and `once` are the engine's, not the line's. */
|
|
41
16
|
export declare function spellDamageRiderLines(spell: Pick<ResolvedSpell, "slug" | "entity">, derived: Partial<Pick<DerivedStats, "spellDamageRiders">>): Array<Pick<SpellDamageRider, "amount" | "damage_type" | "source" | "condition">>;
|