@archivist-gg/dnd5e 0.3.19 → 0.3.26
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-2NUDWOFG.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-4SYAKWY4.js +1 -0
- package/dist/chunk-56JK6VCL.js +1 -0
- package/dist/chunk-5XDCM6YK.js +1 -0
- package/dist/chunk-63YJPWTM.js +1 -0
- package/dist/chunk-6R46KYGU.js +1 -0
- package/dist/chunk-6W253VHH.js +1 -0
- package/dist/chunk-72PRMZRD.js +1 -0
- package/dist/chunk-757KM22B.js +1 -0
- package/dist/chunk-7EL3GWWJ.js +1 -0
- package/dist/chunk-7FPQJDFD.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-BREHZNTL.js +1 -0
- package/dist/chunk-BZ6BGGZS.js +1 -0
- package/dist/chunk-CAPYNIGK.js +1 -0
- package/dist/chunk-CCAVZANF.js +1 -0
- package/dist/chunk-CCFIINBA.js +1 -0
- package/dist/chunk-CEHL7PPC.js +1 -0
- package/dist/chunk-CMIEZQL4.js +1 -0
- package/dist/chunk-CNMHADNV.js +1 -0
- package/dist/chunk-CSTAQQGX.js +1 -0
- package/dist/chunk-DTB7YBMZ.js +1 -0
- package/dist/chunk-DVUXUIPV.js +1 -0
- package/dist/chunk-DZITM5AG.js +1 -0
- package/dist/chunk-E3MS4M3N.js +1 -0
- package/dist/chunk-E7KFJLDR.js +1 -0
- package/dist/chunk-EAARMPCW.js +1 -0
- package/dist/chunk-EPA24PVZ.js +1 -0
- package/dist/chunk-ETDMOGFO.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-GD7WRCNH.js +1 -0
- package/dist/chunk-GGQDQSIF.js +1 -0
- package/dist/chunk-GIQLIBC7.js +1 -0
- package/dist/chunk-HX7WBOKR.js +1 -0
- package/dist/chunk-I26FHSI6.js +1 -0
- package/dist/chunk-IHPLT2ZT.js +1 -0
- package/dist/chunk-J3RP5C7L.js +1 -0
- package/dist/chunk-J5GL6FLP.js +1 -0
- package/dist/chunk-JXDX2DKF.js +1 -0
- package/dist/chunk-KEXSF3CH.js +1 -0
- package/dist/chunk-KM75CC6Q.js +1 -0
- package/dist/chunk-L2DXF7YS.js +1 -0
- package/dist/chunk-LHH5XSEA.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-MGGKZGLG.js +1 -0
- package/dist/chunk-NEMX7QGG.js +1 -0
- package/dist/chunk-NIWLD33X.js +1 -0
- package/dist/chunk-NU2Z7MTS.js +1 -0
- package/dist/chunk-NYPH7RQN.js +1 -0
- package/dist/chunk-NYTR6NJS.js +1 -0
- package/dist/chunk-O2QZ73GA.js +1 -0
- package/dist/chunk-O776WL7O.js +1 -0
- package/dist/chunk-ONCXJMJM.js +1 -0
- package/dist/chunk-OTRH62HY.js +1 -0
- package/dist/chunk-PFQPP77Q.js +1 -0
- package/dist/chunk-PKIMOVQG.js +1 -0
- package/dist/chunk-PZ3ZZ5H5.js +1 -0
- package/dist/chunk-PZ4L2EEG.js +1 -0
- package/dist/chunk-QMEKQTUT.js +1 -0
- package/dist/chunk-QVWT67WA.js +1 -0
- package/dist/chunk-RE5Z5RNK.js +1 -0
- package/dist/chunk-RHIEOYDX.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-SFK57JAA.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-UBUKCRZ3.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-VVJXZZ4Z.js +1 -0
- package/dist/chunk-WAUNLUFQ.js +1 -0
- package/dist/chunk-X22SISGM.js +1 -0
- package/dist/chunk-XKJXT2PN.js +1 -0
- package/dist/chunk-XPF53K54.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/chunk-ZS5BMNXC.js +1 -0
- package/dist/chunk-ZVL5FXXO.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 +4 -3
- 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 +46 -4
- 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 +5 -0
- package/dist/item/item.schema.js +1 -11
- package/dist/item/item.types.d.ts +5 -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 +44 -3
- 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 +3 -28
- 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 +6 -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 +19 -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 +27 -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 +19 -0
- package/dist/pc/pc.item-effects.js +1 -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 +3 -27
- 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 +8 -131
- package/dist/pc/pc.recalc.js +1 -1042
- package/dist/pc/pc.resolver.d.ts +9 -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 +20 -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 +36 -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 +3 -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 +59 -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 +44 -3
- 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 +11 -23
- package/dist/types/feature.d.ts +0 -22
- package/dist/types/optional-feature.types.d.ts +1 -31
- package/dist/types/resource.d.ts +1 -21
- package/dist/types/selection-pool.d.ts +0 -24
- package/dist/weapon/weapon-mastery.d.ts +0 -1
- package/dist/weapon/weapon.classify.d.ts +0 -11
- package/dist/weapon/weapon.classify.js +1 -7
- package/dist/weapon/weapon.codec.d.ts +0 -9
- package/dist/weapon/weapon.codec.js +1 -9
- package/dist/weapon/weapon.parser.js +1 -8
- package/dist/weapon/weapon.schema.js +1 -7
- package/dist/weapon/weapon.types.d.ts +0 -3
- package/package.json +3 -3
- package/src/data-srd/ATTRIBUTION.md +1 -1
- package/dist/chunk-2FRUSVZS.js +0 -489
- package/dist/chunk-2LULMQTF.js +0 -14
- package/dist/chunk-3LWMFYKS.js +0 -57
- package/dist/chunk-3SFGWFVQ.js +0 -19
- package/dist/chunk-3SIUAFDQ.js +0 -18
- package/dist/chunk-3TM34RSJ.js +0 -23
- package/dist/chunk-4J6DS3EJ.js +0 -30
- package/dist/chunk-4U55VNC7.js +0 -22
- package/dist/chunk-5GKJAUMX.js +0 -59
- package/dist/chunk-5JXFJ5AU.js +0 -26
- package/dist/chunk-64VNLMSG.js +0 -375
- package/dist/chunk-656QCX4U.js +0 -22
- package/dist/chunk-6GNXYAYP.js +0 -25
- package/dist/chunk-6PXTNCBP.js +0 -133
- package/dist/chunk-6X2NV665.js +0 -33
- package/dist/chunk-7Q2VPKCD.js +0 -181
- package/dist/chunk-7XJHI5H5.js +0 -709
- package/dist/chunk-A54HHCWW.js +0 -67
- package/dist/chunk-B2QHP6UF.js +0 -159
- package/dist/chunk-B3DP42OM.js +0 -55
- package/dist/chunk-BJGOSM76.js +0 -18
- package/dist/chunk-BJWSOQUC.js +0 -133
- package/dist/chunk-CJYCVNW2.js +0 -7
- package/dist/chunk-CM5CWO4K.js +0 -735
- package/dist/chunk-DEEHHLAP.js +0 -271
- package/dist/chunk-DPUJDOKV.js +0 -365
- package/dist/chunk-EJD47JHL.js +0 -1838
- package/dist/chunk-EJP263OP.js +0 -186
- package/dist/chunk-EVMUJYUD.js +0 -195
- package/dist/chunk-EYX4JMAU.js +0 -101
- package/dist/chunk-FC4IGH5Y.js +0 -18
- package/dist/chunk-FJYBLXV7.js +0 -89
- package/dist/chunk-FMUD3LDV.js +0 -19
- package/dist/chunk-FMYWORTP.js +0 -93
- package/dist/chunk-FVXLP7P3.js +0 -18
- package/dist/chunk-G6MHJDVT.js +0 -41
- package/dist/chunk-GVWEFECG.js +0 -18
- package/dist/chunk-HHBD4SQ6.js +0 -24
- package/dist/chunk-HS6FIOLP.js +0 -52
- package/dist/chunk-HY2SRSVM.js +0 -23
- package/dist/chunk-IHE6KVC3.js +0 -13
- package/dist/chunk-IN4M4X7P.js +0 -34
- package/dist/chunk-IUAAXXNO.js +0 -58
- package/dist/chunk-JXWNXIIZ.js +0 -219
- package/dist/chunk-K5NJBTE2.js +0 -18
- package/dist/chunk-KR6JF3BF.js +0 -14
- package/dist/chunk-KSTV7J2U.js +0 -112
- package/dist/chunk-KU3YLF6D.js +0 -106
- package/dist/chunk-LBEXLN6I.js +0 -91
- package/dist/chunk-LHZXYFBU.js +0 -94
- package/dist/chunk-LICYHPI3.js +0 -237
- package/dist/chunk-LNT64X7C.js +0 -81
- package/dist/chunk-LSLSG67V.js +0 -31
- package/dist/chunk-LVQLWRCU.js +0 -15
- package/dist/chunk-MYY2C5MB.js +0 -233
- package/dist/chunk-NKZMQV2C.js +0 -19
- package/dist/chunk-NTU2DXNG.js +0 -355
- package/dist/chunk-NXUY5XQN.js +0 -1062
- package/dist/chunk-NZO7M5GV.js +0 -18
- package/dist/chunk-OOL4KMG2.js +0 -71
- package/dist/chunk-OOSRUJBI.js +0 -19
- package/dist/chunk-PDJSUH24.js +0 -110
- package/dist/chunk-PTXBIDG7.js +0 -63
- package/dist/chunk-PVCEA4HZ.js +0 -6
- package/dist/chunk-QA3YCOML.js +0 -101
- package/dist/chunk-QFWQKS3M.js +0 -110
- package/dist/chunk-QS5L5YTJ.js +0 -24
- package/dist/chunk-QYZV2MQA.js +0 -97
- package/dist/chunk-RD2MID3M.js +0 -292
- package/dist/chunk-S3YUXDSC.js +0 -278
- package/dist/chunk-S7REMWW4.js +0 -21
- package/dist/chunk-TOM66P2P.js +0 -38
- package/dist/chunk-TRBGC4ZG.js +0 -112
- package/dist/chunk-UA5KS2PL.js +0 -26
- package/dist/chunk-UJCK5IW4.js +0 -187
- package/dist/chunk-UNYR5GLI.js +0 -23
- package/dist/chunk-UZXG6QSY.js +0 -58
- package/dist/chunk-VN5DLURA.js +0 -158
- package/dist/chunk-VP5TIXDK.js +0 -178
- package/dist/chunk-VPYBK2MG.js +0 -18
- package/dist/chunk-VTTA2ALZ.js +0 -16
- package/dist/chunk-W6GC6OKK.js +0 -16
- package/dist/chunk-WELIKLZF.js +0 -256
- package/dist/chunk-WOHX7YTH.js +0 -165
- package/dist/chunk-WSVMLNTO.js +0 -31
- package/dist/chunk-WYGD2UGN.js +0 -14
- package/dist/chunk-XCFC7LGF.js +0 -122
- package/dist/chunk-XJ2F2WO6.js +0 -8
- package/dist/chunk-XTEFPUSN.js +0 -23
- package/dist/chunk-YBLDE5CG.js +0 -42
- package/dist/chunk-YDGMBMYI.js +0 -25
- package/dist/chunk-YHYTW5QA.js +0 -20
- package/dist/chunk-ZCTUYGNV.js +0 -26
- package/dist/chunk-ZDAEGJH4.js +0 -102
- package/dist/chunk-ZJXSXVFP.js +0 -58
- package/dist/chunk-ZOWKWMD2.js +0 -18
- package/dist/chunk-ZUQW5VBZ.js +0 -89
package/dist/chunk-TRBGC4ZG.js
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
spellSource
|
|
3
|
-
} from "./chunk-KR6JF3BF.js";
|
|
4
|
-
import {
|
|
5
|
-
resourceLevelFor
|
|
6
|
-
} from "./chunk-KSTV7J2U.js";
|
|
7
|
-
import {
|
|
8
|
-
addToRoll
|
|
9
|
-
} from "./chunk-WOHX7YTH.js";
|
|
10
|
-
import {
|
|
11
|
-
baseClassName
|
|
12
|
-
} from "./chunk-VTTA2ALZ.js";
|
|
13
|
-
|
|
14
|
-
// src/pc/pc.amount-bindings.ts
|
|
15
|
-
function ownerClassSlug(source, resolved) {
|
|
16
|
-
var _a, _b, _c;
|
|
17
|
-
if (!source) return null;
|
|
18
|
-
if (source.kind === "class") return source.slug;
|
|
19
|
-
if (source.kind === "subclass") return (_c = (_b = (_a = resolved.classes.find((c) => {
|
|
20
|
-
var _a2;
|
|
21
|
-
return ((_a2 = c.subclass) == null ? void 0 : _a2.slug) === source.slug;
|
|
22
|
-
})) == null ? void 0 : _a.entity) == null ? void 0 : _b.slug) != null ? _c : null;
|
|
23
|
-
if (source.kind === "feat" && source.via) {
|
|
24
|
-
if (source.via.kind === "class") return source.via.slug;
|
|
25
|
-
if (source.via.kind === "pool") return source.via.classSlug;
|
|
26
|
-
}
|
|
27
|
-
return null;
|
|
28
|
-
}
|
|
29
|
-
function casterRow(classSlug, derived) {
|
|
30
|
-
var _a, _b;
|
|
31
|
-
const rows = (_a = derived.spellcastingClasses) != null ? _a : [];
|
|
32
|
-
const own = classSlug ? rows.find((c) => baseClassName(c.classSlug) === baseClassName(classSlug)) : void 0;
|
|
33
|
-
return (_b = own != null ? own : rows[0]) != null ? _b : null;
|
|
34
|
-
}
|
|
35
|
-
function amountBindingsFor(owner, resolved, derived) {
|
|
36
|
-
const classSlug = ownerClassSlug(owner, resolved);
|
|
37
|
-
const classSource = classSlug ? { kind: "class", slug: classSlug, level: 0 } : owner;
|
|
38
|
-
const classLevel = classSource ? resourceLevelFor(classSource, resolved) : resolved.totalLevel;
|
|
39
|
-
const row = casterRow(classSlug, derived);
|
|
40
|
-
return {
|
|
41
|
-
level: resolved.totalLevel,
|
|
42
|
-
class_level: classLevel,
|
|
43
|
-
prof: derived.proficiencyBonus,
|
|
44
|
-
str_mod: derived.mods.str,
|
|
45
|
-
dex_mod: derived.mods.dex,
|
|
46
|
-
con_mod: derived.mods.con,
|
|
47
|
-
int_mod: derived.mods.int,
|
|
48
|
-
wis_mod: derived.mods.wis,
|
|
49
|
-
cha_mod: derived.mods.cha,
|
|
50
|
-
columns: {},
|
|
51
|
-
...row ? { spell_mod: derived.mods[row.ability], spell_dc: row.saveDC } : {}
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
function spellcastingFor(spell, derived) {
|
|
55
|
-
var _a, _b;
|
|
56
|
-
if ((spellSource(spell).ownAbility || spell.classSlug == null) && spell.ability) {
|
|
57
|
-
const own = (_a = derived.abilitySpellcasting) == null ? void 0 : _a[spell.ability];
|
|
58
|
-
if (own) return { ability: spell.ability, saveDC: own.saveDC, attackBonus: own.attackBonus };
|
|
59
|
-
}
|
|
60
|
-
const row = casterRow((_b = spell.classSlug) != null ? _b : null, derived);
|
|
61
|
-
return row ? { ability: row.ability, saveDC: row.saveDC, attackBonus: row.attackBonus } : null;
|
|
62
|
-
}
|
|
63
|
-
function spellAmountBindings(spell, resolved, derived) {
|
|
64
|
-
const cast = spellcastingFor(spell, derived);
|
|
65
|
-
const base = amountBindingsFor(spell.classSlug ? { kind: "class", slug: spell.classSlug, level: 0 } : void 0, resolved, derived);
|
|
66
|
-
const out = { ...base };
|
|
67
|
-
delete out.spell_mod;
|
|
68
|
-
delete out.spell_dc;
|
|
69
|
-
return cast ? { ...out, spell_mod: derived.mods[cast.ability], spell_dc: cast.saveDC } : out;
|
|
70
|
-
}
|
|
71
|
-
function spellRollBonus(spell) {
|
|
72
|
-
var _a;
|
|
73
|
-
const roll = (_a = spell.damage_roll) == null ? void 0 : _a.trim();
|
|
74
|
-
const text = spell.description;
|
|
75
|
-
if (!roll || !text) return null;
|
|
76
|
-
const esc = roll.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
77
|
-
const re = new RegExp(`(?<![\\w])${esc}\`?\\s*(?:plus|\\+)\\s*your\\s+spellcasting\\s+(?:ability\\s+)?modifier`, "i");
|
|
78
|
-
return re.test(text) ? "{spell_mod}" : null;
|
|
79
|
-
}
|
|
80
|
-
function foldsIntoRoll(rider, spell) {
|
|
81
|
-
var _a, _b;
|
|
82
|
-
const own = ((_b = (_a = spell.entity.damage) == null ? void 0 : _a.types) != null ? _b : []).map((t) => t.toLowerCase());
|
|
83
|
-
return !rider.condition && (!rider.damage_type || own.includes(rider.damage_type.toLowerCase()));
|
|
84
|
-
}
|
|
85
|
-
var reaching = (spell, derived) => {
|
|
86
|
-
var _a;
|
|
87
|
-
return ((_a = derived.spellDamageRiders) != null ? _a : []).filter((r) => {
|
|
88
|
-
var _a2;
|
|
89
|
-
return (_a2 = r.spells) == null ? void 0 : _a2.includes(spell.slug);
|
|
90
|
-
});
|
|
91
|
-
};
|
|
92
|
-
function addSpellDamageRiders(roll, spell, derived) {
|
|
93
|
-
return addToRoll(roll, reaching(spell, derived).filter((r) => foldsIntoRoll(r, spell)).map((r) => r.amount));
|
|
94
|
-
}
|
|
95
|
-
function spellDamageRiderLines(spell, derived) {
|
|
96
|
-
return reaching(spell, derived).filter((r) => !foldsIntoRoll(r, spell)).map((r) => ({
|
|
97
|
-
amount: r.amount,
|
|
98
|
-
...r.damage_type ? { damage_type: r.damage_type } : {},
|
|
99
|
-
...r.source ? { source: r.source } : {},
|
|
100
|
-
...r.condition ? { condition: r.condition } : {}
|
|
101
|
-
}));
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export {
|
|
105
|
-
ownerClassSlug,
|
|
106
|
-
amountBindingsFor,
|
|
107
|
-
spellcastingFor,
|
|
108
|
-
spellAmountBindings,
|
|
109
|
-
spellRollBonus,
|
|
110
|
-
addSpellDamageRiders,
|
|
111
|
-
spellDamageRiderLines
|
|
112
|
-
};
|
package/dist/chunk-UA5KS2PL.js
DELETED
|
@@ -1,26 +0,0 @@
|
|
|
1
|
-
// src/schemas/entity-extras-schema.ts
|
|
2
|
-
import { z } from "zod";
|
|
3
|
-
var imageField = z.union([z.string().min(1), z.array(z.string().min(1))]).optional();
|
|
4
|
-
var additionalSpellsEntrySchema = z.object({
|
|
5
|
-
name: z.string().min(1).optional(),
|
|
6
|
-
ability: z.union([z.string().min(1), z.object({ choose: z.array(z.string().min(1)) })]).optional(),
|
|
7
|
-
known: z.unknown().optional(),
|
|
8
|
-
innate: z.unknown().optional(),
|
|
9
|
-
prepared: z.unknown().optional(),
|
|
10
|
-
expanded: z.unknown().optional(),
|
|
11
|
-
resourceName: z.string().min(1).optional()
|
|
12
|
-
});
|
|
13
|
-
var progressionSchema = z.object({
|
|
14
|
-
name: z.string().min(1),
|
|
15
|
-
progression: z.union([z.record(z.string(), z.number()), z.array(z.number())]),
|
|
16
|
-
feature_type: z.array(z.string().min(1)).optional(),
|
|
17
|
-
featureType: z.array(z.string().min(1)).optional(),
|
|
18
|
-
category: z.array(z.string().min(1)).optional(),
|
|
19
|
-
required: z.record(z.string(), z.array(z.string())).optional()
|
|
20
|
-
});
|
|
21
|
-
|
|
22
|
-
export {
|
|
23
|
-
imageField,
|
|
24
|
-
additionalSpellsEntrySchema,
|
|
25
|
-
progressionSchema
|
|
26
|
-
};
|
package/dist/chunk-UJCK5IW4.js
DELETED
|
@@ -1,187 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
poolGrantSchema,
|
|
3
|
-
selectionPoolSchema,
|
|
4
|
-
tabDeclSchema
|
|
5
|
-
} from "./chunk-G6MHJDVT.js";
|
|
6
|
-
import {
|
|
7
|
-
casterTypeEnum
|
|
8
|
-
} from "./chunk-CJYCVNW2.js";
|
|
9
|
-
import {
|
|
10
|
-
featureSchema
|
|
11
|
-
} from "./chunk-B2QHP6UF.js";
|
|
12
|
-
import {
|
|
13
|
-
resourceSchema
|
|
14
|
-
} from "./chunk-ZJXSXVFP.js";
|
|
15
|
-
import {
|
|
16
|
-
startingEquipmentEntrySchema,
|
|
17
|
-
startingGoldSchema
|
|
18
|
-
} from "./chunk-IN4M4X7P.js";
|
|
19
|
-
import {
|
|
20
|
-
choiceSchema
|
|
21
|
-
} from "./chunk-OOL4KMG2.js";
|
|
22
|
-
import {
|
|
23
|
-
additionalSpellsEntrySchema,
|
|
24
|
-
imageField,
|
|
25
|
-
progressionSchema
|
|
26
|
-
} from "./chunk-UA5KS2PL.js";
|
|
27
|
-
|
|
28
|
-
// src/class/class.schema.ts
|
|
29
|
-
import { z } from "zod";
|
|
30
|
-
var abilityEnum = z.enum(["str", "dex", "con", "int", "wis", "cha"]);
|
|
31
|
-
var skillEnum = z.enum([
|
|
32
|
-
"acrobatics",
|
|
33
|
-
"animal-handling",
|
|
34
|
-
"arcana",
|
|
35
|
-
"athletics",
|
|
36
|
-
"deception",
|
|
37
|
-
"history",
|
|
38
|
-
"insight",
|
|
39
|
-
"intimidation",
|
|
40
|
-
"investigation",
|
|
41
|
-
"medicine",
|
|
42
|
-
"nature",
|
|
43
|
-
"perception",
|
|
44
|
-
"performance",
|
|
45
|
-
"persuasion",
|
|
46
|
-
"religion",
|
|
47
|
-
"sleight-of-hand",
|
|
48
|
-
"stealth",
|
|
49
|
-
"survival"
|
|
50
|
-
]);
|
|
51
|
-
var armorCategoryEnum = z.enum(["light", "medium", "heavy", "shield"]);
|
|
52
|
-
var weaponCategoryEnum = z.enum(["simple", "martial"]);
|
|
53
|
-
var hitDieEnum = z.enum(["d6", "d8", "d10", "d12"]);
|
|
54
|
-
var editionEnum = z.enum(["2014", "2024"]);
|
|
55
|
-
var weaponProficiencySchema = z.object({
|
|
56
|
-
fixed: z.array(z.string()).optional(),
|
|
57
|
-
categories: z.array(weaponCategoryEnum).optional(),
|
|
58
|
-
conditional: z.array(z.object({
|
|
59
|
-
category: weaponCategoryEnum,
|
|
60
|
-
where_property: z.array(z.string()).nonempty()
|
|
61
|
-
})).optional()
|
|
62
|
-
}).refine(
|
|
63
|
-
(w) => {
|
|
64
|
-
var _a, _b, _c, _d, _e, _f;
|
|
65
|
-
return ((_b = (_a = w.fixed) == null ? void 0 : _a.length) != null ? _b : 0) + ((_d = (_c = w.categories) == null ? void 0 : _c.length) != null ? _d : 0) + ((_f = (_e = w.conditional) == null ? void 0 : _e.length) != null ? _f : 0) > 0;
|
|
66
|
-
},
|
|
67
|
-
{ message: "weapon proficiency must declare at least one of fixed/categories/conditional" }
|
|
68
|
-
);
|
|
69
|
-
var toolProficiencySchema = z.object({
|
|
70
|
-
fixed: z.array(z.string()).optional(),
|
|
71
|
-
choice: z.object({
|
|
72
|
-
count: z.number().int().positive(),
|
|
73
|
-
from: z.array(z.string()).nonempty()
|
|
74
|
-
}).optional()
|
|
75
|
-
}).refine((t) => {
|
|
76
|
-
var _a, _b;
|
|
77
|
-
return ((_b = (_a = t.fixed) == null ? void 0 : _a.length) != null ? _b : 0) > 0 || t.choice !== void 0;
|
|
78
|
-
}, {
|
|
79
|
-
message: "tool proficiency must declare fixed or choice"
|
|
80
|
-
});
|
|
81
|
-
var spellcastingSchema = z.object({
|
|
82
|
-
caster_type: casterTypeEnum,
|
|
83
|
-
ability: abilityEnum,
|
|
84
|
-
preparation: z.enum(["known", "prepared"]),
|
|
85
|
-
spell_list: z.string().min(1)
|
|
86
|
-
});
|
|
87
|
-
var weaponMasterySchema = z.object({
|
|
88
|
-
// §2.7's ONE deliberate relaxation, and the phase's only non-additive edit. Measured: `starting_count`
|
|
89
|
-
// has ZERO read sites in either repo, all 24 SRD class records are `weapon_mastery: null`, and the
|
|
90
|
-
// converter population is zero too (26 of 28 class docs null; both object carriers DO carry the count).
|
|
91
|
-
// It exists so the converter can re-emit a countless mastery object later. R4-G5 did NOT make it read: §6 takes
|
|
92
|
-
// the count from the class TABLE COLUMN instead (`COUNT_COLUMNS` in `pc.table-column.ts`), because the column
|
|
93
|
-
// is the truth on BOTH corpora, and `count.column` on the choice itself is booked to the G7 converter handoff.
|
|
94
|
-
// `starting_count` therefore still has ZERO read sites.
|
|
95
|
-
// A THREE-declaration edit (finding 11): here, `class.types.ts`, and the generator's COPIED
|
|
96
|
-
// `interface WeaponMasteryConfig` in tools/srd-canonical/merger-rules/class-merge.ts.
|
|
97
|
-
starting_count: z.number().int().nonnegative().optional(),
|
|
98
|
-
scaling: z.record(z.string(), z.number().int().nonnegative()).optional()
|
|
99
|
-
});
|
|
100
|
-
var classTableRowSchema = z.object({
|
|
101
|
-
prof_bonus: z.number().int().positive(),
|
|
102
|
-
columns: z.record(z.string(), z.union([z.string(), z.number()])).optional(),
|
|
103
|
-
feature_ids: z.array(z.string())
|
|
104
|
-
});
|
|
105
|
-
var classEntitySchema = z.object({
|
|
106
|
-
slug: z.string().min(1),
|
|
107
|
-
name: z.string().min(1),
|
|
108
|
-
edition: editionEnum,
|
|
109
|
-
source: z.string().min(1),
|
|
110
|
-
description: z.string(),
|
|
111
|
-
hit_die: hitDieEnum,
|
|
112
|
-
primary_abilities: z.array(abilityEnum).nonempty(),
|
|
113
|
-
// D2b-A (A-1): the class's recommended Standard Array (SRD 5.2 "Standard Array by Class"); absent on 2014 classes.
|
|
114
|
-
standard_array: z.strictObject({
|
|
115
|
-
str: z.number().int(),
|
|
116
|
-
dex: z.number().int(),
|
|
117
|
-
con: z.number().int(),
|
|
118
|
-
int: z.number().int(),
|
|
119
|
-
wis: z.number().int(),
|
|
120
|
-
cha: z.number().int()
|
|
121
|
-
}).optional(),
|
|
122
|
-
saving_throws: z.array(abilityEnum).length(2),
|
|
123
|
-
proficiencies: z.object({
|
|
124
|
-
armor: z.array(armorCategoryEnum),
|
|
125
|
-
weapons: weaponProficiencySchema,
|
|
126
|
-
tools: toolProficiencySchema.optional()
|
|
127
|
-
}),
|
|
128
|
-
skill_choices: z.object({
|
|
129
|
-
count: z.number().int().positive(),
|
|
130
|
-
from: z.array(skillEnum).nonempty()
|
|
131
|
-
}),
|
|
132
|
-
// Zod strips unknown keys by default, so without this declaration an authored
|
|
133
|
-
// `choices:` block is silently deleted by `parseClass`. Same spelling as
|
|
134
|
-
// `raceEntitySchema` / `backgroundEntitySchema`.
|
|
135
|
-
choices: z.array(choiceSchema).optional(),
|
|
136
|
-
starting_equipment: z.array(startingEquipmentEntrySchema),
|
|
137
|
-
starting_gold: startingGoldSchema.optional(),
|
|
138
|
-
spellcasting: spellcastingSchema.nullable(),
|
|
139
|
-
subclass_level: z.number().int().positive(),
|
|
140
|
-
subclass_feature_name: z.string().min(1),
|
|
141
|
-
weapon_mastery: weaponMasterySchema.nullable(),
|
|
142
|
-
epic_boon_level: z.number().int().positive().nullable(),
|
|
143
|
-
table: z.record(z.string(), classTableRowSchema),
|
|
144
|
-
features_by_level: z.record(z.string(), z.array(featureSchema)),
|
|
145
|
-
resources: z.array(resourceSchema),
|
|
146
|
-
selection_pools: z.array(selectionPoolSchema).optional(),
|
|
147
|
-
pool_grants: z.array(poolGrantSchema).optional(),
|
|
148
|
-
tabs: z.array(tabDeclSchema).optional(),
|
|
149
|
-
rendering_hint: z.string().optional(),
|
|
150
|
-
// 28
|
|
151
|
-
has_fluff: z.boolean().optional(),
|
|
152
|
-
// 28
|
|
153
|
-
has_fluff_images: z.boolean().optional(),
|
|
154
|
-
// 27
|
|
155
|
-
table_col_labels: z.array(z.string().min(1)).optional(),
|
|
156
|
-
// 28
|
|
157
|
-
starting_equipment_additional_from_background: z.boolean().optional(),
|
|
158
|
-
// 28
|
|
159
|
-
multiclassing: z.unknown().optional(),
|
|
160
|
-
// FOUR arities measured incl. {} ×3; free-form 5etools keys
|
|
161
|
-
// ("thieves' tools", requirements.or[].{dex,str}) — Q1 ruling
|
|
162
|
-
cantrip_progression: z.array(z.number()).optional(),
|
|
163
|
-
// 15
|
|
164
|
-
prepared_spells: z.string().min(1).optional(),
|
|
165
|
-
// formula string "<$level$> / 2 + <$int_mod$>"
|
|
166
|
-
prepared_spells_change: z.string().min(1).optional(),
|
|
167
|
-
// "restLong"
|
|
168
|
-
prepared_spells_progression: z.array(z.number()).optional(),
|
|
169
|
-
spells_known_progression: z.array(z.number()).optional(),
|
|
170
|
-
spells_known_progression_fixed: z.array(z.number()).optional(),
|
|
171
|
-
spells_known_progression_fixed_allow_lower_level: z.boolean().optional(),
|
|
172
|
-
// ⚠️ BOOLEAN (finding 1)
|
|
173
|
-
spells_known_progression_fixed_by_level: z.record(z.string(), z.record(z.string(), z.number())).optional(),
|
|
174
|
-
// ⚠️ two-deep record (finding 1)
|
|
175
|
-
feat_progression: z.array(progressionSchema).optional(),
|
|
176
|
-
// 13
|
|
177
|
-
optionalfeature_progression: z.array(progressionSchema).optional(),
|
|
178
|
-
// 9 carriers; the ARRAY
|
|
179
|
-
// progression arm rides 4 of them
|
|
180
|
-
additional_spells: z.array(additionalSpellsEntrySchema).optional(),
|
|
181
|
-
// 7
|
|
182
|
-
image: imageField
|
|
183
|
-
});
|
|
184
|
-
|
|
185
|
-
export {
|
|
186
|
-
classEntitySchema
|
|
187
|
-
};
|
package/dist/chunk-UNYR5GLI.js
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
subclassEntitySchema
|
|
3
|
-
} from "./chunk-LNT64X7C.js";
|
|
4
|
-
import {
|
|
5
|
-
aliasFeaturesByLevelActionCost
|
|
6
|
-
} from "./chunk-4U55VNC7.js";
|
|
7
|
-
|
|
8
|
-
// src/subclass/subclass.parser.ts
|
|
9
|
-
import { parseYaml } from "@archivist-gg/core";
|
|
10
|
-
function parseSubclass(source) {
|
|
11
|
-
const raw = parseYaml(source, ["name", "slug", "parent_class"]);
|
|
12
|
-
if (!raw.success) return raw;
|
|
13
|
-
aliasFeaturesByLevelActionCost(raw.data.features_by_level);
|
|
14
|
-
const result = subclassEntitySchema.safeParse({ edition: "2014", ...raw.data });
|
|
15
|
-
if (!result.success) {
|
|
16
|
-
return { success: false, error: `subclass schema validation failed: ${result.error.message}` };
|
|
17
|
-
}
|
|
18
|
-
return { success: true, data: result.data };
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export {
|
|
22
|
-
parseSubclass
|
|
23
|
-
};
|
package/dist/chunk-UZXG6QSY.js
DELETED
|
@@ -1,58 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
armorEntitySchema
|
|
3
|
-
} from "./chunk-HS6FIOLP.js";
|
|
4
|
-
|
|
5
|
-
// src/armor/armor.parser.ts
|
|
6
|
-
import { parseYaml } from "@archivist-gg/core";
|
|
7
|
-
var KNOWN_KEYS = /* @__PURE__ */ new Set([
|
|
8
|
-
"name",
|
|
9
|
-
"slug",
|
|
10
|
-
"category",
|
|
11
|
-
"ac",
|
|
12
|
-
"strength_requirement",
|
|
13
|
-
"stealth_disadvantage",
|
|
14
|
-
"weight",
|
|
15
|
-
"cost",
|
|
16
|
-
"rarity",
|
|
17
|
-
"source",
|
|
18
|
-
"page",
|
|
19
|
-
"edition",
|
|
20
|
-
"entries",
|
|
21
|
-
"raw",
|
|
22
|
-
// Root extras declared on armorEntitySchema (spec §5). The schema declaring them is NOT
|
|
23
|
-
// enough: this set is the second, independent gate — a key missing here is copied into
|
|
24
|
-
// `raw` as well, so the two lists must move together.
|
|
25
|
-
"rendering_hint",
|
|
26
|
-
"icon",
|
|
27
|
-
"has_fluff",
|
|
28
|
-
"has_fluff_images",
|
|
29
|
-
"image",
|
|
30
|
-
// The alias is a KNOWN key so it is never copied into `raw` alongside the mapped
|
|
31
|
-
// `strength_requirement` — that duplicate is the census row this fix empties.
|
|
32
|
-
"strength_required"
|
|
33
|
-
]);
|
|
34
|
-
function parseArmor(source) {
|
|
35
|
-
var _a;
|
|
36
|
-
const raw = parseYaml(source, ["name", "slug", "category", "ac"]);
|
|
37
|
-
if (!raw.success) return raw;
|
|
38
|
-
if (raw.data.strength_requirement === void 0 && typeof raw.data.strength_required === "number") {
|
|
39
|
-
raw.data.strength_requirement = raw.data.strength_required;
|
|
40
|
-
}
|
|
41
|
-
const result = armorEntitySchema.safeParse(raw.data);
|
|
42
|
-
if (!result.success) {
|
|
43
|
-
return { success: false, error: `armor schema validation failed: ${result.error.message}` };
|
|
44
|
-
}
|
|
45
|
-
const entity = result.data;
|
|
46
|
-
const extras = {};
|
|
47
|
-
for (const [k, v] of Object.entries(raw.data)) {
|
|
48
|
-
if (!KNOWN_KEYS.has(k)) extras[k] = v;
|
|
49
|
-
}
|
|
50
|
-
if (Object.keys(extras).length > 0) {
|
|
51
|
-
entity.raw = { ...(_a = entity.raw) != null ? _a : {}, ...extras };
|
|
52
|
-
}
|
|
53
|
-
return { success: true, data: entity };
|
|
54
|
-
}
|
|
55
|
-
|
|
56
|
-
export {
|
|
57
|
-
parseArmor
|
|
58
|
-
};
|
package/dist/chunk-VN5DLURA.js
DELETED
|
@@ -1,158 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
durationSchema
|
|
3
|
-
} from "./chunk-WYGD2UGN.js";
|
|
4
|
-
import {
|
|
5
|
-
actionCostEnum,
|
|
6
|
-
resetTriggerEnum,
|
|
7
|
-
resourceConsumptionSchema
|
|
8
|
-
} from "./chunk-ZJXSXVFP.js";
|
|
9
|
-
import {
|
|
10
|
-
choiceSchema
|
|
11
|
-
} from "./chunk-OOL4KMG2.js";
|
|
12
|
-
import {
|
|
13
|
-
featureEffectSchema
|
|
14
|
-
} from "./chunk-JXWNXIIZ.js";
|
|
15
|
-
import {
|
|
16
|
-
additionalSpellsEntrySchema,
|
|
17
|
-
imageField,
|
|
18
|
-
progressionSchema
|
|
19
|
-
} from "./chunk-UA5KS2PL.js";
|
|
20
|
-
|
|
21
|
-
// src/optional-feature/optional-feature.schema.ts
|
|
22
|
-
import { z } from "zod";
|
|
23
|
-
var editionEnum = z.enum(["2014", "2024"]);
|
|
24
|
-
var abilityEnum = z.enum(["str", "dex", "con", "int", "wis", "cha"]);
|
|
25
|
-
var wikilinkRegex = /^\[\[[^[\]]+\]\]$/;
|
|
26
|
-
var namedRefSchema = z.object({ name: z.string().min(1), source: z.string().min(1).optional(), visible_stats: z.boolean().optional() });
|
|
27
|
-
var prerequisiteSchema = z.discriminatedUnion("kind", [
|
|
28
|
-
z.object({ kind: z.literal("level"), min: z.number().int().positive(), class: namedRefSchema.optional(), subclass: namedRefSchema.optional() }),
|
|
29
|
-
z.object({ kind: z.literal("spell-known"), spell: z.string().regex(wikilinkRegex) }),
|
|
30
|
-
z.object({ kind: z.literal("pact"), pact: z.enum(["tome", "blade", "chain", "talisman"]) }),
|
|
31
|
-
z.object({ kind: z.literal("class"), class: z.string().regex(wikilinkRegex) }),
|
|
32
|
-
z.object({ kind: z.literal("ability"), ability: abilityEnum, min: z.number().int().positive() }),
|
|
33
|
-
z.object({ kind: z.literal("other"), detail: z.string() }),
|
|
34
|
-
z.object({ kind: z.literal("optionalfeature"), optionalfeature: z.string().regex(wikilinkRegex) }),
|
|
35
|
-
z.object({ kind: z.literal("spell-choose"), choose: z.string().min(1), entry: z.string().optional(), entry_summary: z.string().optional() })
|
|
36
|
-
]);
|
|
37
|
-
var usesSchema = z.object({
|
|
38
|
-
max: z.union([z.number(), z.string()]),
|
|
39
|
-
recharge: resetTriggerEnum,
|
|
40
|
-
/** Partial recovery, for a pool a rest does NOT fully refill (a sanity track that regains 1 per long
|
|
41
|
-
* rest). Same shape a feature's `resources[].recovery` uses, so `ResolvedResource.recovery` — which
|
|
42
|
-
* has carried the field since R4-G4 — is populated identically from either side. Optional: all 35
|
|
43
|
-
* shipped `uses` carriers omit it and parse unchanged. */
|
|
44
|
-
recovery: z.array(z.object({
|
|
45
|
-
id: z.string().min(1),
|
|
46
|
-
name: z.string().min(1),
|
|
47
|
-
amount: z.union([z.number(), z.string()]),
|
|
48
|
-
reset: resetTriggerEnum,
|
|
49
|
-
restores: z.enum(["uses", "spell-slots"]).optional()
|
|
50
|
-
})).optional()
|
|
51
|
-
});
|
|
52
|
-
var filterSpecSchema = z.object({
|
|
53
|
-
rarity: z.array(z.string().min(1)).min(1),
|
|
54
|
-
types: z.array(z.string().min(1)).optional(),
|
|
55
|
-
exclude_types: z.array(z.string().min(1)).optional(),
|
|
56
|
-
cursed: z.literal(false).optional()
|
|
57
|
-
}).strict();
|
|
58
|
-
var optionCreatesSchema = z.object({
|
|
59
|
-
item: z.string().regex(wikilinkRegex).optional(),
|
|
60
|
-
variant: z.object({ candidates: z.array(z.string().regex(wikilinkRegex)).min(1) }).strict().optional(),
|
|
61
|
-
filter: filterSpecSchema.optional()
|
|
62
|
-
}).strict().refine((c) => [c.item, c.variant, c.filter].filter((a) => a !== void 0).length === 1, { message: "creates needs exactly one of item, variant, filter" });
|
|
63
|
-
var optionRowSchema = z.object({
|
|
64
|
-
key: z.string().regex(/^[a-z0-9][a-z0-9._-]*$/, "an option key is lower-case, with no '#' and no whitespace"),
|
|
65
|
-
name: z.string().min(1),
|
|
66
|
-
min_level: z.number().int().min(1).max(20),
|
|
67
|
-
attunement: z.boolean().optional(),
|
|
68
|
-
creates: optionCreatesSchema
|
|
69
|
-
}).strict();
|
|
70
|
-
var infuseItemSchema = z.object({
|
|
71
|
-
bonuses: z.object({
|
|
72
|
-
ac: z.number().int().optional(),
|
|
73
|
-
weapon_attack: z.number().int().optional(),
|
|
74
|
-
weapon_damage: z.number().int().optional(),
|
|
75
|
-
spell_attack: z.number().int().optional(),
|
|
76
|
-
saving_throws: z.number().int().optional(),
|
|
77
|
-
speed: z.object({ walk: z.number().int().optional(), fly: z.number().int().optional(), swim: z.number().int().optional(), climb: z.number().int().optional() }).strict().optional()
|
|
78
|
-
}).strict().optional(),
|
|
79
|
-
resist: z.array(z.string().min(1)).optional(),
|
|
80
|
-
charges: z.object({ max: z.number().int().min(1), dice: z.string().optional(), recharge: z.string().optional(), recharge_amount: z.string().optional() }).strict().optional(),
|
|
81
|
-
action: actionCostEnum.optional(),
|
|
82
|
-
// ART-c1 (R-3 a): the Actions row's range, as data (B-8.4 draws "Self").
|
|
83
|
-
range: z.string().min(1).optional()
|
|
84
|
-
}).strict();
|
|
85
|
-
var infuseBlockSchema = z.object({
|
|
86
|
-
targets: z.array(z.object({
|
|
87
|
-
kind: z.enum(["armor", "shield", "weapon", "gear"]),
|
|
88
|
-
category: z.array(z.string().min(1)).min(1).optional(),
|
|
89
|
-
property: z.string().min(1).optional(),
|
|
90
|
-
name_any: z.array(z.string().min(1)).min(1).optional()
|
|
91
|
-
}).strict()).min(1),
|
|
92
|
-
targets_label: z.string().min(1).optional(),
|
|
93
|
-
new_object: z.string().min(1).optional(),
|
|
94
|
-
rarity: z.string().min(1).optional(),
|
|
95
|
-
attunement: z.object({ required: z.literal(true) }).strict().optional(),
|
|
96
|
-
// ART-c1 (R-3 b): the damage types the choice offers (v1 U-4 draws the TCE ten); absent keeps dnd5e's canonical list.
|
|
97
|
-
choice: z.object({ kind: z.literal("damage-type"), options: z.array(z.string().min(1)).min(1).optional() }).strict().optional(),
|
|
98
|
-
item: infuseItemSchema.optional(),
|
|
99
|
-
scales_at: z.array(z.object({ level: z.number().int().min(1).max(20), item: infuseItemSchema }).strict()).optional()
|
|
100
|
-
}).strict().refine((b) => {
|
|
101
|
-
var _a;
|
|
102
|
-
return ((_a = b.scales_at) != null ? _a : []).every((r, i, a) => i === 0 || a[i - 1].level < r.level);
|
|
103
|
-
}, { message: "scales_at levels ascend" });
|
|
104
|
-
var optionalFeatureEntitySchema = z.object({
|
|
105
|
-
slug: z.string().min(1),
|
|
106
|
-
name: z.string().min(1),
|
|
107
|
-
edition: editionEnum,
|
|
108
|
-
source: z.string().min(1),
|
|
109
|
-
feature_type: z.string().min(1),
|
|
110
|
-
description: z.string(),
|
|
111
|
-
prerequisites: z.array(prerequisiteSchema),
|
|
112
|
-
available_to: z.array(z.string().regex(wikilinkRegex)),
|
|
113
|
-
effects: z.array(featureEffectSchema),
|
|
114
|
-
action_cost: actionCostEnum.nullable().optional(),
|
|
115
|
-
uses: usesSchema.nullable().optional(),
|
|
116
|
-
consumes: resourceConsumptionSchema.nullable().optional(),
|
|
117
|
-
duration: durationSchema.nullable().optional(),
|
|
118
|
-
passive: z.boolean().optional(),
|
|
119
|
-
// Phase 3 activatable buffs: an activatable boon folds its effects only while
|
|
120
|
-
// its slug is present in state.active_buffs (toggled in the PoolTab).
|
|
121
|
-
activatable: z.boolean().optional(),
|
|
122
|
-
rendering_hint: z.string().optional(),
|
|
123
|
-
// the ONE root with load-bearing VALUES (88 records, G4's)
|
|
124
|
-
/** WHERE this resource is drawn. `band` puts it in the header strip beside HP; anything else, and the
|
|
125
|
-
* default, leaves it to the Resources tab. The tab ALWAYS lists every resource — it is the complete
|
|
126
|
-
* inventory of what the character can spend, and a row missing from it would read as a bug — so this
|
|
127
|
-
* key only ever ADDS a second, curated home. Opt-in on purpose: the band's whole value is being short,
|
|
128
|
-
* which an opt-out flag would erode one new grant at a time. */
|
|
129
|
-
surface: z.enum(["band", "tab"]).optional(),
|
|
130
|
-
additional_spells: z.array(additionalSpellsEntrySchema).optional(),
|
|
131
|
-
// 54
|
|
132
|
-
is_class_feature_variant: z.boolean().optional(),
|
|
133
|
-
// 25
|
|
134
|
-
has_fluff_images: z.boolean().optional(),
|
|
135
|
-
// 2
|
|
136
|
-
feat_progression: z.array(progressionSchema).optional(),
|
|
137
|
-
// 1
|
|
138
|
-
optionalfeature_progression: z.array(progressionSchema).optional(),
|
|
139
|
-
// 1
|
|
140
|
-
image: imageField,
|
|
141
|
-
repeatable: z.literal(true).optional(),
|
|
142
|
-
item_choice: z.enum(["learn", "create"]).optional(),
|
|
143
|
-
options: z.array(optionRowSchema).optional(),
|
|
144
|
-
infuse: infuseBlockSchema.optional(),
|
|
145
|
-
// D2b-A (design §2.2 step 1): a pool member's own choices, the vocabulary features and feats use.
|
|
146
|
-
choices: z.array(choiceSchema).optional()
|
|
147
|
-
}).superRefine((d, ctx) => {
|
|
148
|
-
var _a;
|
|
149
|
-
if (d.repeatable && (!d.options || !d.item_choice)) ctx.addIssue({ code: "custom", message: "a repeatable note needs options and item_choice" });
|
|
150
|
-
const keys = ((_a = d.options) != null ? _a : []).map((o) => o.key);
|
|
151
|
-
if (new Set(keys).size !== keys.length) ctx.addIssue({ code: "custom", message: "option keys are unique" });
|
|
152
|
-
});
|
|
153
|
-
|
|
154
|
-
export {
|
|
155
|
-
optionRowSchema,
|
|
156
|
-
infuseBlockSchema,
|
|
157
|
-
optionalFeatureEntitySchema
|
|
158
|
-
};
|