@archivist-gg/dnd5e 0.3.17 → 0.3.24

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (439) hide show
  1. package/LICENSE +48 -21
  2. package/README.md +26 -48
  3. package/dist/armor/armor.codec.d.ts +0 -7
  4. package/dist/armor/armor.codec.js +1 -9
  5. package/dist/armor/armor.parser.js +1 -8
  6. package/dist/armor/armor.schema.js +1 -7
  7. package/dist/armor/armor.types.d.ts +0 -3
  8. package/dist/background/background.codec.d.ts +0 -6
  9. package/dist/background/background.codec.js +1 -12
  10. package/dist/background/background.parser.js +1 -11
  11. package/dist/background/background.schema.js +1 -12
  12. package/dist/background/background.types.d.ts +0 -5
  13. package/dist/chunk-2EOGK6R6.js +1 -0
  14. package/dist/chunk-2HRRH3WL.js +1 -0
  15. package/dist/chunk-2LCGKNVM.js +1 -0
  16. package/dist/chunk-2NUDWOFG.js +1 -0
  17. package/dist/chunk-334WLI7V.js +1 -0
  18. package/dist/chunk-3LWOVRLA.js +1 -0
  19. package/dist/chunk-3QQOATV3.js +1 -0
  20. package/dist/chunk-4E2GIWJE.js +1 -0
  21. package/dist/chunk-4GN3GYMP.js +1 -0
  22. package/dist/chunk-4IAMSRHD.js +1 -0
  23. package/dist/chunk-4JEF3CET.js +1 -0
  24. package/dist/chunk-4KVVAENP.js +1 -0
  25. package/dist/chunk-56JK6VCL.js +1 -0
  26. package/dist/chunk-5FEXHY4U.js +1 -0
  27. package/dist/chunk-63YJPWTM.js +1 -0
  28. package/dist/chunk-6ASJ3MVB.js +1 -0
  29. package/dist/chunk-6IC53O3Q.js +1 -0
  30. package/dist/chunk-6LCNV26D.js +1 -0
  31. package/dist/chunk-6W253VHH.js +1 -0
  32. package/dist/chunk-7AKJBRBD.js +1 -0
  33. package/dist/chunk-7EL3GWWJ.js +1 -0
  34. package/dist/chunk-7FPQJDFD.js +1 -0
  35. package/dist/chunk-7J5BNH2D.js +1 -0
  36. package/dist/chunk-7LPKI27J.js +1 -0
  37. package/dist/chunk-7UPYRKMF.js +1 -0
  38. package/dist/chunk-A7H6LX47.js +1 -0
  39. package/dist/chunk-AINRPPLH.js +1 -0
  40. package/dist/chunk-BC52J4LA.js +1 -0
  41. package/dist/chunk-BCXGB4HP.js +1 -0
  42. package/dist/chunk-BGX36NPE.js +1 -0
  43. package/dist/chunk-BPKG6RZ7.js +1 -0
  44. package/dist/chunk-BREHZNTL.js +1 -0
  45. package/dist/chunk-BZ6BGGZS.js +1 -0
  46. package/dist/chunk-CAPYNIGK.js +1 -0
  47. package/dist/chunk-CCFIINBA.js +1 -0
  48. package/dist/chunk-CMIEZQL4.js +1 -0
  49. package/dist/chunk-DVUXUIPV.js +1 -0
  50. package/dist/chunk-DY6FVAGA.js +1 -0
  51. package/dist/chunk-DZITM5AG.js +1 -0
  52. package/dist/chunk-DZKSXSJF.js +1 -0
  53. package/dist/chunk-EAARMPCW.js +1 -0
  54. package/dist/chunk-EVT7MGAC.js +1 -0
  55. package/dist/chunk-FOLHTMSC.js +1 -0
  56. package/dist/chunk-GCYUCIDN.js +1 -0
  57. package/dist/chunk-GIOV6JW7.js +1 -0
  58. package/dist/chunk-HCK6IUB3.js +1 -0
  59. package/dist/chunk-HR5MKCP2.js +1 -0
  60. package/dist/chunk-I26FHSI6.js +1 -0
  61. package/dist/chunk-I4O2FIDT.js +1 -0
  62. package/dist/chunk-IGVRLGLM.js +1 -0
  63. package/dist/chunk-IHPLT2ZT.js +1 -0
  64. package/dist/chunk-IOCJIWCV.js +1 -0
  65. package/dist/chunk-JXDX2DKF.js +1 -0
  66. package/dist/chunk-KBFSJ5WE.js +1 -0
  67. package/dist/chunk-KM75CC6Q.js +1 -0
  68. package/dist/chunk-KZDDFG4O.js +1 -0
  69. package/dist/chunk-LJNT3PJP.js +1 -0
  70. package/dist/chunk-LR6UMA5V.js +1 -0
  71. package/dist/chunk-M6RPOLKS.js +1 -0
  72. package/dist/chunk-MC6PLWRZ.js +1 -0
  73. package/dist/chunk-MGGKZGLG.js +1 -0
  74. package/dist/chunk-N3RYJ7RE.js +1 -0
  75. package/dist/chunk-NEMX7QGG.js +1 -0
  76. package/dist/chunk-NI364WV7.js +1 -0
  77. package/dist/chunk-O2QZ73GA.js +1 -0
  78. package/dist/chunk-O776WL7O.js +1 -0
  79. package/dist/chunk-OTFNINUY.js +1 -0
  80. package/dist/chunk-PQAVMK3T.js +1 -0
  81. package/dist/chunk-PZ3ZZ5H5.js +1 -0
  82. package/dist/chunk-PZ4L2EEG.js +1 -0
  83. package/dist/chunk-PZUPZBTN.js +1 -0
  84. package/dist/chunk-QBA757AU.js +1 -0
  85. package/dist/chunk-QFIGPOFW.js +1 -0
  86. package/dist/chunk-QMEKQTUT.js +1 -0
  87. package/dist/chunk-QVWT67WA.js +1 -0
  88. package/dist/chunk-RDXQAZBA.js +1 -0
  89. package/dist/chunk-RE5Z5RNK.js +1 -0
  90. package/dist/chunk-RL4VY2AL.js +1 -0
  91. package/dist/chunk-RQGTBHJW.js +1 -0
  92. package/dist/chunk-RQZCGXUZ.js +1 -0
  93. package/dist/chunk-S5UCI27C.js +1 -0
  94. package/dist/chunk-SEOASDO4.js +1 -0
  95. package/dist/chunk-SU4MEZ5P.js +1 -0
  96. package/dist/chunk-T55DELVL.js +1 -0
  97. package/dist/chunk-TKIEPC6F.js +1 -0
  98. package/dist/chunk-TLXFGGWH.js +1 -0
  99. package/dist/chunk-UBUKCRZ3.js +1 -0
  100. package/dist/chunk-V6NQ547U.js +1 -0
  101. package/dist/chunk-VA3ZWV7C.js +1 -0
  102. package/dist/chunk-VIP3FH2O.js +1 -0
  103. package/dist/chunk-VTQ4RWEG.js +1 -0
  104. package/dist/chunk-WUHTSLG4.js +1 -0
  105. package/dist/chunk-X22SISGM.js +1 -0
  106. package/dist/chunk-XKJXT2PN.js +1 -0
  107. package/dist/chunk-XQMKH4R4.js +1 -0
  108. package/dist/chunk-YGH7S5ZF.js +1 -0
  109. package/dist/chunk-ZE46ADXS.js +1 -0
  110. package/dist/chunk-ZI3FEUX3.js +1 -0
  111. package/dist/class/class.codec.d.ts +0 -7
  112. package/dist/class/class.codec.js +1 -18
  113. package/dist/class/class.parser.js +1 -17
  114. package/dist/class/class.schema.d.ts +2 -1
  115. package/dist/class/class.schema.js +1 -15
  116. package/dist/class/class.slug.d.ts +0 -11
  117. package/dist/class/class.slug.js +1 -8
  118. package/dist/class/class.standard-array.d.ts +0 -7
  119. package/dist/class/class.standard-array.js +1 -20
  120. package/dist/class/class.types.d.ts +0 -20
  121. package/dist/condition/condition.codec.d.ts +0 -6
  122. package/dist/condition/condition.parser.d.ts +0 -10
  123. package/dist/condition/condition.parser.js +1 -7
  124. package/dist/condition/condition.schema.d.ts +0 -16
  125. package/dist/condition/condition.types.d.ts +0 -3
  126. package/dist/data-srd/index.generated.js +1 -146
  127. package/dist/dnd/amount-text.d.ts +4 -27
  128. package/dist/dnd/amount-text.js +1 -13
  129. package/dist/dnd/constants.d.ts +0 -18
  130. package/dist/dnd/constants.js +1 -42
  131. package/dist/dnd/formula-tags.d.ts +0 -2
  132. package/dist/dnd/formula-tags.js +1 -119
  133. package/dist/dnd/math.d.ts +0 -26
  134. package/dist/dnd/math.js +1 -45
  135. package/dist/dnd/prose-tags.d.ts +1 -15
  136. package/dist/dnd/prose-tags.js +1 -18
  137. package/dist/dnd/resource-die.d.ts +0 -4
  138. package/dist/dnd/resource-die.js +1 -17
  139. package/dist/dnd/resource-formula.d.ts +0 -43
  140. package/dist/dnd/resource-formula.js +1 -14
  141. package/dist/dnd/resource-words.d.ts +0 -2
  142. package/dist/dnd/resource-words.js +1 -30
  143. package/dist/dnd/srd-tag-converter.d.ts +0 -21
  144. package/dist/dnd/srd-tag-converter.js +1 -12
  145. package/dist/dnd/tag-grammar.js +1 -12
  146. package/dist/dnd/warn-once.js +1 -8
  147. package/dist/encounter/encounter.ai-schema.js +1 -8
  148. package/dist/entities/base-item-resolver.d.ts +0 -26
  149. package/dist/entities/base-item-resolver.js +1 -11
  150. package/dist/entities/registry-revision.d.ts +10 -0
  151. package/dist/entities/registry-revision.js +1 -0
  152. package/dist/entities/slug.d.ts +1 -31
  153. package/dist/entities/slug.js +1 -12
  154. package/dist/entities/wikilink-display.d.ts +0 -2
  155. package/dist/entities/wikilink-display.js +1 -10
  156. package/dist/feat/feat.category-codes.d.ts +1 -26
  157. package/dist/feat/feat.category-codes.js +1 -14
  158. package/dist/feat/feat.codec.d.ts +0 -6
  159. package/dist/feat/feat.codec.js +1 -12
  160. package/dist/feat/feat.parser.js +1 -11
  161. package/dist/feat/feat.schema.d.ts +31 -1
  162. package/dist/feat/feat.schema.js +1 -10
  163. package/dist/feat/feat.types.d.ts +0 -6
  164. package/dist/index.js +45 -138113
  165. package/dist/inline-tag-parser.js +1 -6
  166. package/dist/item/item.actions-map.d.ts +4 -63
  167. package/dist/item/item.actions-map.js +1 -10
  168. package/dist/item/item.ai-schema.js +1 -6
  169. package/dist/item/item.attunement.d.ts +0 -14
  170. package/dist/item/item.attunement.js +1 -6
  171. package/dist/item/item.bonuses.js +1 -10
  172. package/dist/item/item.codec.js +1 -9
  173. package/dist/item/item.conditions.d.ts +0 -7
  174. package/dist/item/item.conditions.js +1 -11
  175. package/dist/item/item.conditions.types.d.ts +0 -2
  176. package/dist/item/item.cost.js +1 -29
  177. package/dist/item/item.enrichment.js +1 -9
  178. package/dist/item/item.icon.d.ts +0 -8
  179. package/dist/item/item.icon.js +1 -211
  180. package/dist/item/item.parser.js +1 -8
  181. package/dist/item/item.schema.d.ts +2 -0
  182. package/dist/item/item.schema.js +1 -11
  183. package/dist/item/item.types.d.ts +2 -28
  184. package/dist/monster/monster.ai-schema.js +1 -6
  185. package/dist/monster/monster.codec.d.ts +0 -10
  186. package/dist/monster/monster.enrichment.js +1 -19
  187. package/dist/monster/monster.format.d.ts +0 -69
  188. package/dist/monster/monster.format.js +1 -78
  189. package/dist/monster/monster.parser.d.ts +0 -4
  190. package/dist/monster/monster.parser.js +1 -15
  191. package/dist/monster/monster.resolve.d.ts +0 -4
  192. package/dist/monster/monster.schema.d.ts +0 -9
  193. package/dist/monster/monster.schema.js +1 -34
  194. package/dist/monster/monster.types.d.ts +0 -3
  195. package/dist/monster/monster.types.js +1 -1
  196. package/dist/optional-feature/optional-feature.codec.d.ts +0 -11
  197. package/dist/optional-feature/optional-feature.codec.js +1 -13
  198. package/dist/optional-feature/optional-feature.parser.js +1 -12
  199. package/dist/optional-feature/optional-feature.schema.d.ts +30 -1
  200. package/dist/optional-feature/optional-feature.schema.js +1 -15
  201. package/dist/pack.d.ts +0 -9
  202. package/dist/pc/conditions.constants.js +1 -6
  203. package/dist/pc/decision-recognizer.js +1 -8
  204. package/dist/pc/pc.additional-spells.d.ts +4 -14
  205. package/dist/pc/pc.additional-spells.js +1 -23
  206. package/dist/pc/pc.amount-bindings.d.ts +4 -20
  207. package/dist/pc/pc.amount-bindings.js +1 -23
  208. package/dist/pc/pc.asi-flatten.d.ts +0 -59
  209. package/dist/pc/pc.asi-flatten.js +1 -16
  210. package/dist/pc/pc.conditions.d.ts +1 -0
  211. package/dist/pc/pc.conditions.js +1 -6
  212. package/dist/pc/pc.containment.d.ts +0 -5
  213. package/dist/pc/pc.containment.js +1 -24
  214. package/dist/pc/pc.decision-engine.d.ts +4 -141
  215. package/dist/pc/pc.decision-engine.js +1 -52
  216. package/dist/pc/pc.defense-normalize.d.ts +0 -10
  217. package/dist/pc/pc.defense-normalize.js +1 -6
  218. package/dist/pc/pc.entry-overrides.d.ts +0 -58
  219. package/dist/pc/pc.entry-overrides.js +1 -40
  220. package/dist/pc/pc.equipment.d.ts +2 -22
  221. package/dist/pc/pc.equipment.js +1 -33
  222. package/dist/pc/pc.feature-effects.d.ts +23 -275
  223. package/dist/pc/pc.feature-effects.js +1 -26
  224. package/dist/pc/pc.formula-context.js +1 -11
  225. package/dist/pc/pc.infusions.d.ts +0 -65
  226. package/dist/pc/pc.infusions.js +1 -64
  227. package/dist/pc/pc.item-effects.d.ts +18 -0
  228. package/dist/pc/pc.member-choices.d.ts +18 -49
  229. package/dist/pc/pc.member-choices.js +1 -32
  230. package/dist/pc/pc.parser.js +1 -58
  231. package/dist/pc/pc.pools.d.ts +7 -10
  232. package/dist/pc/pc.pools.js +1 -26
  233. package/dist/pc/pc.proficiencies.d.ts +7 -33
  234. package/dist/pc/pc.proficiencies.js +1 -107
  235. package/dist/pc/pc.proficiency-grants.d.ts +0 -26
  236. package/dist/pc/pc.proficiency-normalize.d.ts +4 -25
  237. package/dist/pc/pc.proficiency-normalize.js +1 -12
  238. package/dist/pc/pc.proficiency-query.d.ts +0 -13
  239. package/dist/pc/pc.proficiency-query.js +1 -27
  240. package/dist/pc/pc.recalc.d.ts +7 -131
  241. package/dist/pc/pc.recalc.js +1 -946
  242. package/dist/pc/pc.resolver.d.ts +0 -104
  243. package/dist/pc/pc.resolver.js +1 -59
  244. package/dist/pc/pc.resource-seed.d.ts +0 -8
  245. package/dist/pc/pc.resource-seed.js +1 -42
  246. package/dist/pc/pc.resources.d.ts +1 -59
  247. package/dist/pc/pc.resources.js +1 -23
  248. package/dist/pc/pc.rest.d.ts +1 -20
  249. package/dist/pc/pc.rest.js +1 -230
  250. package/dist/pc/pc.schema.d.ts +19 -2
  251. package/dist/pc/pc.schema.js +1 -9
  252. package/dist/pc/pc.slotting.d.ts +0 -29
  253. package/dist/pc/pc.slotting.js +1 -28
  254. package/dist/pc/pc.speeds.d.ts +19 -0
  255. package/dist/pc/pc.spell-scope.d.ts +6 -0
  256. package/dist/pc/pc.spellcasting.d.ts +0 -70
  257. package/dist/pc/pc.spellcasting.js +1 -28
  258. package/dist/pc/pc.table-column.d.ts +0 -22
  259. package/dist/pc/pc.table-column.js +1 -18
  260. package/dist/pc/pc.tool-picks.d.ts +0 -27
  261. package/dist/pc/pc.tool-picks.js +1 -18
  262. package/dist/pc/pc.types.d.ts +85 -344
  263. package/dist/pc/pc.weapon-grant.d.ts +0 -6
  264. package/dist/pc/pool-layout.d.ts +0 -39
  265. package/dist/pc/pool-layout.js +1 -18
  266. package/dist/pc/resource-equivalents.d.ts +2 -40
  267. package/dist/pc/roll-scope.js +1 -8
  268. package/dist/pc/roll-tag-labels.d.ts +0 -32
  269. package/dist/pc/roll-tag-labels.js +1 -17
  270. package/dist/pc/spell-source.d.ts +0 -11
  271. package/dist/pc/spell-source.js +1 -8
  272. package/dist/race/race.codec.d.ts +0 -6
  273. package/dist/race/race.codec.js +1 -15
  274. package/dist/race/race.parser.js +1 -14
  275. package/dist/race/race.schema.d.ts +0 -8
  276. package/dist/race/race.schema.js +1 -14
  277. package/dist/race/race.structural.d.ts +0 -6
  278. package/dist/race/race.structural.js +1 -6
  279. package/dist/race/race.types.d.ts +0 -8
  280. package/dist/schemas/attack-schema.d.ts +5 -0
  281. package/dist/schemas/caster-type-schema.d.ts +1 -6
  282. package/dist/schemas/caster-type-schema.js +1 -6
  283. package/dist/schemas/choice-schema.js +1 -7
  284. package/dist/schemas/duration-schema.d.ts +0 -2
  285. package/dist/schemas/duration-schema.js +1 -6
  286. package/dist/schemas/entity-extras-schema.d.ts +0 -30
  287. package/dist/schemas/entity-extras-schema.js +1 -10
  288. package/dist/schemas/equipment-grant-schema.d.ts +0 -2
  289. package/dist/schemas/equipment-grant-schema.js +1 -12
  290. package/dist/schemas/feature-alias.d.ts +0 -27
  291. package/dist/schemas/feature-effect-schema.d.ts +30 -1
  292. package/dist/schemas/feature-effect-schema.js +1 -6
  293. package/dist/schemas/feature-schema.d.ts +0 -6
  294. package/dist/schemas/feature-schema.js +1 -12
  295. package/dist/schemas/resource-schema.d.ts +1 -34
  296. package/dist/schemas/resource-schema.js +1 -12
  297. package/dist/schemas/selection-pool-schema.js +1 -10
  298. package/dist/spell/casting-time.d.ts +0 -15
  299. package/dist/spell/casting-time.js +1 -6
  300. package/dist/spell/spell.access.d.ts +0 -6
  301. package/dist/spell/spell.access.js +1 -45
  302. package/dist/spell/spell.ai-schema.js +1 -6
  303. package/dist/spell/spell.codec.js +1 -9
  304. package/dist/spell/spell.enrichment.js +1 -9
  305. package/dist/spell/spell.filter.d.ts +0 -5
  306. package/dist/spell/spell.filter.js +1 -75
  307. package/dist/spell/spell.parser.d.ts +0 -31
  308. package/dist/spell/spell.parser.js +1 -16
  309. package/dist/spell/spell.scaling.d.ts +0 -46
  310. package/dist/spell/spell.scaling.js +1 -79
  311. package/dist/spell/spell.schema.js +1 -7
  312. package/dist/spell/spell.types.d.ts +0 -7
  313. package/dist/srd/retired-items.d.ts +0 -4
  314. package/dist/srd/retired-items.js +1 -11
  315. package/dist/srd-store.d.ts +0 -33
  316. package/dist/subclass/subclass.codec.d.ts +0 -8
  317. package/dist/subclass/subclass.codec.js +1 -17
  318. package/dist/subclass/subclass.parser.js +1 -16
  319. package/dist/subclass/subclass.schema.d.ts +2 -1
  320. package/dist/subclass/subclass.schema.js +1 -14
  321. package/dist/subclass/subclass.types.d.ts +0 -3
  322. package/dist/types/attack.d.ts +2 -0
  323. package/dist/types/casting-option.d.ts +0 -4
  324. package/dist/types/choice.d.ts +1 -72
  325. package/dist/types/choice.js +1 -24
  326. package/dist/types/edition.d.ts +0 -3
  327. package/dist/types/equipment-grant.d.ts +1 -27
  328. package/dist/types/equipment-grant.js +1 -12
  329. package/dist/types/feature-effect.d.ts +14 -14
  330. package/dist/types/feature.d.ts +0 -22
  331. package/dist/types/optional-feature.types.d.ts +1 -31
  332. package/dist/types/resource.d.ts +1 -21
  333. package/dist/types/selection-pool.d.ts +0 -24
  334. package/dist/weapon/weapon-mastery.d.ts +0 -1
  335. package/dist/weapon/weapon.classify.d.ts +0 -11
  336. package/dist/weapon/weapon.classify.js +1 -7
  337. package/dist/weapon/weapon.codec.d.ts +0 -9
  338. package/dist/weapon/weapon.codec.js +1 -9
  339. package/dist/weapon/weapon.parser.js +1 -8
  340. package/dist/weapon/weapon.schema.js +1 -7
  341. package/dist/weapon/weapon.types.d.ts +0 -3
  342. package/package.json +3 -3
  343. package/src/data-srd/ATTRIBUTION.md +1 -1
  344. package/dist/chunk-2FRUSVZS.js +0 -489
  345. package/dist/chunk-2JSQE3DD.js +0 -206
  346. package/dist/chunk-2LULMQTF.js +0 -14
  347. package/dist/chunk-2UDSN6VW.js +0 -18
  348. package/dist/chunk-3LWMFYKS.js +0 -57
  349. package/dist/chunk-3MGQFFNE.js +0 -110
  350. package/dist/chunk-3TM34RSJ.js +0 -23
  351. package/dist/chunk-3VZZDKRA.js +0 -1014
  352. package/dist/chunk-4U55VNC7.js +0 -22
  353. package/dist/chunk-5GKJAUMX.js +0 -59
  354. package/dist/chunk-5MXFW4O3.js +0 -71
  355. package/dist/chunk-656QCX4U.js +0 -22
  356. package/dist/chunk-6EI737IO.js +0 -19
  357. package/dist/chunk-6GNXYAYP.js +0 -25
  358. package/dist/chunk-6PXTNCBP.js +0 -133
  359. package/dist/chunk-6X2NV665.js +0 -33
  360. package/dist/chunk-7ATNGKBS.js +0 -178
  361. package/dist/chunk-7Q2VPKCD.js +0 -181
  362. package/dist/chunk-7QN7XSAK.js +0 -19
  363. package/dist/chunk-A54HHCWW.js +0 -67
  364. package/dist/chunk-AZRGFUSR.js +0 -18
  365. package/dist/chunk-B3DP42OM.js +0 -55
  366. package/dist/chunk-CJYCVNW2.js +0 -7
  367. package/dist/chunk-CM5CWO4K.js +0 -735
  368. package/dist/chunk-DEEHHLAP.js +0 -271
  369. package/dist/chunk-DOXSFYLH.js +0 -158
  370. package/dist/chunk-DPUJDOKV.js +0 -365
  371. package/dist/chunk-EJP263OP.js +0 -186
  372. package/dist/chunk-EVMUJYUD.js +0 -195
  373. package/dist/chunk-EYX4JMAU.js +0 -101
  374. package/dist/chunk-FANQVQ3D.js +0 -89
  375. package/dist/chunk-FC4IGH5Y.js +0 -18
  376. package/dist/chunk-G6MHJDVT.js +0 -41
  377. package/dist/chunk-G6PBI2BU.js +0 -18
  378. package/dist/chunk-H5PTKYXL.js +0 -101
  379. package/dist/chunk-HHBD4SQ6.js +0 -24
  380. package/dist/chunk-HS6FIOLP.js +0 -52
  381. package/dist/chunk-HTYMW5CH.js +0 -228
  382. package/dist/chunk-IHE6KVC3.js +0 -13
  383. package/dist/chunk-IN4M4X7P.js +0 -34
  384. package/dist/chunk-IUAAXXNO.js +0 -58
  385. package/dist/chunk-JCMUVZIK.js +0 -133
  386. package/dist/chunk-JSM6JFZR.js +0 -709
  387. package/dist/chunk-K5NJBTE2.js +0 -18
  388. package/dist/chunk-KR6JF3BF.js +0 -14
  389. package/dist/chunk-KSTV7J2U.js +0 -112
  390. package/dist/chunk-KU3YLF6D.js +0 -106
  391. package/dist/chunk-LBEXLN6I.js +0 -91
  392. package/dist/chunk-LF5AGJA4.js +0 -81
  393. package/dist/chunk-LHZXYFBU.js +0 -94
  394. package/dist/chunk-LSLSG67V.js +0 -31
  395. package/dist/chunk-LVQLWRCU.js +0 -15
  396. package/dist/chunk-MBX25B6D.js +0 -18
  397. package/dist/chunk-MYY2C5MB.js +0 -233
  398. package/dist/chunk-OFCSP6MT.js +0 -23
  399. package/dist/chunk-ONTGZR5T.js +0 -1806
  400. package/dist/chunk-OOSRUJBI.js +0 -19
  401. package/dist/chunk-PDJSUH24.js +0 -110
  402. package/dist/chunk-PKX6TGRE.js +0 -93
  403. package/dist/chunk-PQZ4LM4Z.js +0 -19
  404. package/dist/chunk-PTXBIDG7.js +0 -63
  405. package/dist/chunk-PVCEA4HZ.js +0 -6
  406. package/dist/chunk-PXVNAY7T.js +0 -84
  407. package/dist/chunk-QH36K2PU.js +0 -158
  408. package/dist/chunk-QS5L5YTJ.js +0 -24
  409. package/dist/chunk-QYZV2MQA.js +0 -97
  410. package/dist/chunk-QZSWN2KT.js +0 -18
  411. package/dist/chunk-RLGQ5PZZ.js +0 -16
  412. package/dist/chunk-RYLXAYIQ.js +0 -18
  413. package/dist/chunk-S3YUXDSC.js +0 -278
  414. package/dist/chunk-S7REMWW4.js +0 -21
  415. package/dist/chunk-T6QIF5XR.js +0 -348
  416. package/dist/chunk-TOM66P2P.js +0 -38
  417. package/dist/chunk-TULQ4FFX.js +0 -353
  418. package/dist/chunk-UA5KS2PL.js +0 -26
  419. package/dist/chunk-UUBJCNQU.js +0 -187
  420. package/dist/chunk-UZXG6QSY.js +0 -58
  421. package/dist/chunk-VPYBK2MG.js +0 -18
  422. package/dist/chunk-VRV3NNTA.js +0 -161
  423. package/dist/chunk-VTTA2ALZ.js +0 -16
  424. package/dist/chunk-W6GC6OKK.js +0 -16
  425. package/dist/chunk-WELIKLZF.js +0 -256
  426. package/dist/chunk-WSVMLNTO.js +0 -31
  427. package/dist/chunk-WYGD2UGN.js +0 -14
  428. package/dist/chunk-XCFC7LGF.js +0 -122
  429. package/dist/chunk-XJ2F2WO6.js +0 -8
  430. package/dist/chunk-Y5VVP73C.js +0 -23
  431. package/dist/chunk-YBLDE5CG.js +0 -42
  432. package/dist/chunk-YD2VAHA6.js +0 -159
  433. package/dist/chunk-YDGMBMYI.js +0 -25
  434. package/dist/chunk-YHYTW5QA.js +0 -20
  435. package/dist/chunk-YKL6SHRJ.js +0 -23
  436. package/dist/chunk-ZCTUYGNV.js +0 -26
  437. package/dist/chunk-ZDAEGJH4.js +0 -102
  438. package/dist/chunk-ZJXSXVFP.js +0 -58
  439. package/dist/chunk-ZUQW5VBZ.js +0 -89
@@ -1,195 +0,0 @@
1
- // src/dnd/resource-formula.ts
2
- var IDENTS = /* @__PURE__ */ new Set([
3
- "level",
4
- "class_level",
5
- "prof",
6
- "str_mod",
7
- "dex_mod",
8
- "con_mod",
9
- "int_mod",
10
- "wis_mod",
11
- "cha_mod"
12
- ]);
13
- var AT_WILL_MAX = 999;
14
- var FUNCS = /* @__PURE__ */ new Set(["ceil", "floor", "max", "min"]);
15
- function tokenize(input) {
16
- input = input.trim();
17
- const tokens = [];
18
- const re = /\s*('[^']*'|\{[a-z_]+\}|[a-z_]+|\d+|[+\-*/(),])/y;
19
- let i = 0;
20
- while (i < input.length) {
21
- re.lastIndex = i;
22
- const m = re.exec(input);
23
- if (!m || m.index !== i) return null;
24
- const raw = m[1];
25
- i = re.lastIndex;
26
- if (/^\d+$/.test(raw)) tokens.push({ kind: "num", value: parseInt(raw, 10) });
27
- else if (raw.startsWith("'")) tokens.push({ kind: "str", value: raw.slice(1, -1) });
28
- else if (raw === "(") tokens.push({ kind: "lparen" });
29
- else if (raw === ")") tokens.push({ kind: "rparen" });
30
- else if (raw === ",") tokens.push({ kind: "comma" });
31
- else if (raw === "+" || raw === "-" || raw === "*" || raw === "/") tokens.push({ kind: "op", op: raw });
32
- else {
33
- const braced = raw.startsWith("{");
34
- const name = braced ? raw.slice(1, -1) : raw;
35
- if (!braced && FUNCS.has(name)) tokens.push({ kind: "fn", name });
36
- else if (!braced && name === "column") tokens.push({ kind: "col" });
37
- else if (IDENTS.has(name)) tokens.push({ kind: "id", name });
38
- else return null;
39
- }
40
- }
41
- return tokens.length > 0 ? tokens : null;
42
- }
43
- function evalTokens(tokens, b) {
44
- let pos = 0;
45
- const peek = () => tokens[pos];
46
- const factor = () => {
47
- var _a, _b, _c, _d, _e, _f, _g, _h;
48
- const t = peek();
49
- if (!t) return null;
50
- if (t.kind === "num") {
51
- pos++;
52
- return t.value;
53
- }
54
- if (t.kind === "id") {
55
- const val = b[t.name];
56
- if (val === void 0) return null;
57
- pos++;
58
- return val;
59
- }
60
- if (t.kind === "fn") {
61
- pos++;
62
- if (((_a = peek()) == null ? void 0 : _a.kind) !== "lparen") return null;
63
- pos++;
64
- const args = [];
65
- const first = expr();
66
- if (first === null) return null;
67
- args.push(first);
68
- while (((_b = peek()) == null ? void 0 : _b.kind) === "comma") {
69
- pos++;
70
- const next = expr();
71
- if (next === null) return null;
72
- args.push(next);
73
- }
74
- if (((_c = peek()) == null ? void 0 : _c.kind) !== "rparen") return null;
75
- pos++;
76
- if (t.name === "ceil" || t.name === "floor") {
77
- if (args.length !== 1) return null;
78
- return t.name === "ceil" ? Math.ceil(args[0]) : Math.floor(args[0]);
79
- }
80
- if (args.length < 2) return null;
81
- return t.name === "max" ? Math.max(...args) : Math.min(...args);
82
- }
83
- if (t.kind === "col") {
84
- pos++;
85
- if (((_d = peek()) == null ? void 0 : _d.kind) !== "lparen") return null;
86
- pos++;
87
- const s = peek();
88
- if (!s || s.kind !== "str") return null;
89
- pos++;
90
- if (((_e = peek()) == null ? void 0 : _e.kind) !== "rparen") return null;
91
- pos++;
92
- return (_g = (_f = b.columns) == null ? void 0 : _f[s.value]) != null ? _g : 0;
93
- }
94
- if (t.kind === "lparen") {
95
- pos++;
96
- const inner = expr();
97
- if (inner === null) return null;
98
- if (((_h = peek()) == null ? void 0 : _h.kind) !== "rparen") return null;
99
- pos++;
100
- return inner;
101
- }
102
- return null;
103
- };
104
- const term = () => {
105
- var _a;
106
- let v = factor();
107
- if (v === null) return null;
108
- while (((_a = peek()) == null ? void 0 : _a.kind) === "op" && (peek().op === "*" || peek().op === "/")) {
109
- const op = peek().op;
110
- pos++;
111
- const r = factor();
112
- if (r === null) return null;
113
- v = op === "*" ? v * r : v / r;
114
- }
115
- return v;
116
- };
117
- const expr = () => {
118
- var _a;
119
- let v = term();
120
- if (v === null) return null;
121
- while (((_a = peek()) == null ? void 0 : _a.kind) === "op" && (peek().op === "+" || peek().op === "-")) {
122
- const op = peek().op;
123
- pos++;
124
- const r = term();
125
- if (r === null) return null;
126
- v = op === "+" ? v + r : v - r;
127
- }
128
- return v;
129
- };
130
- const result = expr();
131
- if (result === null || pos !== tokens.length) return null;
132
- return result;
133
- }
134
- var ZERO = {
135
- level: 1,
136
- class_level: 1,
137
- prof: 2,
138
- str_mod: 0,
139
- dex_mod: 0,
140
- con_mod: 0,
141
- int_mod: 0,
142
- wis_mod: 0,
143
- cha_mod: 0,
144
- columns: {}
145
- };
146
- function isValidMaxFormula(formula) {
147
- const toks = tokenize(formula);
148
- if (!toks) return false;
149
- return evalTokens(toks, ZERO) !== null;
150
- }
151
- function evaluateMaxFormula(formula, bindings) {
152
- const toks = tokenize(formula);
153
- if (!toks) throw new Error(`invalid max_formula: ${JSON.stringify(formula)}`);
154
- const v = evalTokens(toks, bindings);
155
- if (v === null) throw new Error(`invalid max_formula: ${JSON.stringify(formula)}`);
156
- return v;
157
- }
158
- function resolveMaxAt(totalLevel, resource) {
159
- var _a;
160
- let chosen = resource.max_formula;
161
- let best = 0;
162
- for (const step of (_a = resource.scales_at) != null ? _a : []) {
163
- if (step.level <= totalLevel && step.level > best) {
164
- best = step.level;
165
- chosen = step.max;
166
- }
167
- }
168
- return chosen;
169
- }
170
- function resolveMaxCountAt(level, resource, bindings) {
171
- var _a;
172
- const tryEval = (s) => {
173
- const toks = tokenize(s);
174
- return toks ? evalTokens(toks, bindings) : null;
175
- };
176
- let best = 0;
177
- let chosen = null;
178
- for (const step of (_a = resource.scales_at) != null ? _a : []) {
179
- if (step.level > level || step.level <= best) continue;
180
- const v = tryEval(step.max);
181
- if (v === null) continue;
182
- best = step.level;
183
- chosen = v;
184
- }
185
- if (chosen !== null) return chosen;
186
- return tryEval(resource.max_formula);
187
- }
188
-
189
- export {
190
- AT_WILL_MAX,
191
- isValidMaxFormula,
192
- evaluateMaxFormula,
193
- resolveMaxAt,
194
- resolveMaxCountAt
195
- };
@@ -1,101 +0,0 @@
1
- import {
2
- itemEntitySchema
3
- } from "./chunk-S3YUXDSC.js";
4
-
5
- // src/item/item.parser.ts
6
- import { parseYaml } from "@archivist-gg/core";
7
- var KNOWN_KEYS = /* @__PURE__ */ new Set([
8
- "name",
9
- "slug",
10
- "type",
11
- "rarity",
12
- "base_item",
13
- "bonuses",
14
- "resist",
15
- "immune",
16
- "vulnerable",
17
- "condition_immune",
18
- "charges",
19
- "attached_spells",
20
- "attunement",
21
- "grants",
22
- "container",
23
- "light",
24
- "cursed",
25
- "sentient",
26
- "focus",
27
- "tier",
28
- "tattoo",
29
- // declared I2a; the converter emits it (27 carriers)
30
- "damage",
31
- "weapon_category",
32
- "armor_category",
33
- "weight",
34
- "cost",
35
- "source",
36
- "page",
37
- "edition",
38
- "description",
39
- "entries",
40
- "effects",
41
- "damage_riders",
42
- "raw",
43
- "scroll_level",
44
- "unidentified",
45
- "masked_category",
46
- // Modelled top-level converter keys (spec §4). The schema declaring them is NOT
47
- // enough: this set is the second, independent gate — a key missing here is
48
- // copied into `raw` as well, so the two lists must move together.
49
- "modify_speed",
50
- "rendering_hint",
51
- "icon",
52
- "has_fluff",
53
- "has_fluff_images",
54
- "image",
55
- // Legacy fields kept (removed in Slice 7 after grep verifies no consumer)
56
- "damage_dice",
57
- "damage_type",
58
- "properties",
59
- "recharge",
60
- "curse"
61
- ]);
62
- function migrateAttunement(raw) {
63
- const legacy = raw.requires_attunement;
64
- if (raw.attunement === void 0 && typeof legacy === "boolean") {
65
- raw.attunement = { required: legacy };
66
- }
67
- if (legacy !== void 0) {
68
- delete raw.requires_attunement;
69
- }
70
- const v = raw.attunement;
71
- if (v === void 0 || v === null) return;
72
- if (typeof v === "object" && !Array.isArray(v)) return;
73
- if (typeof v === "boolean") {
74
- raw.attunement = { required: v };
75
- } else if (typeof v === "string") {
76
- raw.attunement = { required: true, restriction: v };
77
- }
78
- }
79
- function parseItem(source) {
80
- var _a;
81
- const raw = parseYaml(source, ["name"]);
82
- if (!raw.success) return raw;
83
- migrateAttunement(raw.data);
84
- const result = itemEntitySchema.safeParse(raw.data);
85
- if (!result.success) {
86
- return { success: false, error: `item schema validation failed: ${result.error.message}` };
87
- }
88
- const entity = result.data;
89
- const extras = {};
90
- for (const [k, v] of Object.entries(raw.data)) {
91
- if (!KNOWN_KEYS.has(k)) extras[k] = v;
92
- }
93
- if (Object.keys(extras).length > 0) {
94
- entity.raw = { ...(_a = entity.raw) != null ? _a : {}, ...extras };
95
- }
96
- return { success: true, data: entity };
97
- }
98
-
99
- export {
100
- parseItem
101
- };
@@ -1,89 +0,0 @@
1
- import {
2
- featureSchema
3
- } from "./chunk-YD2VAHA6.js";
4
- import {
5
- choiceSchema
6
- } from "./chunk-5MXFW4O3.js";
7
- import {
8
- additionalSpellsEntrySchema,
9
- imageField
10
- } from "./chunk-UA5KS2PL.js";
11
-
12
- // src/race/race.schema.ts
13
- import { z } from "zod";
14
- var abilityEnum = z.enum(["str", "dex", "con", "int", "wis", "cha"]);
15
- var editionEnum = z.enum(["2014", "2024"]);
16
- var sizeEnum = z.enum(["tiny", "small", "medium", "large", "huge"]);
17
- var wikilinkRegex = /^\[\[[^[\]]+\]\]$/;
18
- var speedSchema = z.object({
19
- walk: z.number().int().nonnegative().optional(),
20
- fly: z.number().int().nonnegative().optional(),
21
- swim: z.number().int().nonnegative().optional(),
22
- climb: z.number().int().nonnegative().optional(),
23
- burrow: z.number().int().nonnegative().optional(),
24
- hover: z.boolean().optional()
25
- });
26
- var visionSchema = z.object({
27
- darkvision: z.number().int().nonnegative().optional(),
28
- blindsight: z.number().int().nonnegative().optional(),
29
- tremorsense: z.number().int().nonnegative().optional(),
30
- truesight: z.number().int().nonnegative().optional()
31
- });
32
- var fixedAsiSchema = z.object({ ability: abilityEnum, amount: z.number().int() });
33
- var choiceAsiSchema = z.object({
34
- choose: z.number().int().positive(),
35
- pool: z.array(abilityEnum).nonempty(),
36
- amount: z.number().int()
37
- });
38
- var asiSchema = z.union([fixedAsiSchema, choiceAsiSchema]);
39
- var languagesSchema = z.object({
40
- fixed: z.array(z.string()),
41
- choice: z.object({
42
- count: z.number().int().positive(),
43
- from: z.union([z.string(), z.array(z.string())])
44
- }).optional()
45
- });
46
- var raceEntitySchema = z.object({
47
- slug: z.string().min(1),
48
- name: z.string().min(1),
49
- edition: editionEnum,
50
- source: z.string().min(1),
51
- description: z.string(),
52
- size: sizeEnum,
53
- speed: speedSchema,
54
- ability_score_increases: z.array(asiSchema),
55
- age: z.string(),
56
- alignment: z.string(),
57
- vision: visionSchema,
58
- languages: languagesSchema,
59
- variant_label: z.string().min(1),
60
- traits: z.array(featureSchema),
61
- choices: z.array(choiceSchema).optional(),
62
- subspecies_of: z.string().regex(wikilinkRegex).optional(),
63
- rendering_hint: z.string().optional(),
64
- has_fluff: z.boolean().optional(),
65
- has_fluff_images: z.boolean().optional(),
66
- creature_type: z.array(z.string().min(1)).optional(),
67
- // guarded non-empty at the emitter (finding 24)
68
- creature_type_tags: z.array(z.string().min(1)).optional(),
69
- additional_spells: z.union([
70
- z.array(additionalSpellsEntrySchema),
71
- // converter form, 109 docs
72
- additionalSpellsEntrySchema
73
- // SHIPPED-BUNDLE bare-object form, 3 docs (§2.8)
74
- ]).optional(),
75
- // The four RAW 5etools PASSTHROUGHS (race-mapper.ts D13 block copies them VERBATIM, no shape
76
- // guard — finding 24): today's variant set is a snapshot, not a contract (lineage is already
77
- // string|null|boolean), and NO G row ever reads them. Maximally loose by ruling; the guard
78
- // test §9.5 pins today's variant classes since the census goes blind under z.unknown().
79
- trait_tags: z.unknown().optional(),
80
- lineage: z.unknown().optional(),
81
- height_and_weight: z.unknown().optional(),
82
- sound_clip: z.unknown().optional(),
83
- image: imageField
84
- });
85
-
86
- export {
87
- fixedAsiSchema,
88
- raceEntitySchema
89
- };
@@ -1,18 +0,0 @@
1
- import {
2
- parseArmor
3
- } from "./chunk-UZXG6QSY.js";
4
-
5
- // src/armor/armor.codec.ts
6
- import yaml from "js-yaml";
7
- var armorCodec = {
8
- parse(doc) {
9
- return parseArmor(doc.body);
10
- },
11
- serialize(entity) {
12
- return yaml.dump(entity, { lineWidth: -1, sortKeys: false });
13
- }
14
- };
15
-
16
- export {
17
- armorCodec
18
- };
@@ -1,41 +0,0 @@
1
- // src/schemas/selection-pool-schema.ts
2
- import { z } from "zod";
3
- var wikilinkRegex = /^\[\[[^[\]]+\]\]$/;
4
- var selectionPoolSchema = z.object({
5
- id: z.string().min(1),
6
- label: z.string().min(1),
7
- source: z.object({
8
- entity_type: z.literal("optional-feature"),
9
- where: z.object({
10
- feature_type: z.string().min(1),
11
- available_to: z.literal("self")
12
- })
13
- }),
14
- // ART-a (spec §4.5): `count.label`, `active` and `head_resource` carry NO zod default: the defaults are applied at
15
- // read by `poolCountLabel` / `poolActiveWords`, so a parse never adds a key (the importer's round trip).
16
- count: z.object({ column: z.string().min(1), label: z.string().min(1).optional() }),
17
- replaceable: z.boolean().optional(),
18
- active: z.object({ column: z.string().min(1), label: z.string().min(1), verb: z.string().min(1), counter_label: z.string().min(1).optional(), create_label: z.string().min(1).optional(), create_verb: z.string().min(1).optional() }).optional(),
19
- head_resource: z.string().min(1).optional()
20
- });
21
- var poolGrantSchema = z.object({
22
- pool: z.string().min(1),
23
- grants: z.array(z.object({
24
- feature: z.string().regex(wikilinkRegex),
25
- at_level: z.number().int().positive()
26
- }))
27
- });
28
- var tabDeclSchema = z.object({
29
- id: z.string().min(1),
30
- label: z.string().min(1),
31
- renders: z.object({
32
- pool: z.string().min(1),
33
- layout: z.enum(["spell-like", "blocks", "dice-pool", "point-pool"]).optional()
34
- })
35
- });
36
-
37
- export {
38
- selectionPoolSchema,
39
- poolGrantSchema,
40
- tabDeclSchema
41
- };
@@ -1,18 +0,0 @@
1
- import {
2
- parseOptionalFeature
3
- } from "./chunk-PQZ4LM4Z.js";
4
-
5
- // src/optional-feature/optional-feature.codec.ts
6
- import yaml from "js-yaml";
7
- var optionalFeatureCodec = {
8
- parse(doc) {
9
- return parseOptionalFeature(doc.body);
10
- },
11
- serialize(entity) {
12
- return yaml.dump(entity, { lineWidth: -1, sortKeys: false });
13
- }
14
- };
15
-
16
- export {
17
- optionalFeatureCodec
18
- };
@@ -1,101 +0,0 @@
1
- import {
2
- ALL_TOOLS,
3
- ARTISANS_TOOLS,
4
- GAMING_SETS,
5
- MUSICAL_INSTRUMENTS
6
- } from "./chunk-KU3YLF6D.js";
7
- import {
8
- toProfSlug
9
- } from "./chunk-RLGQ5PZZ.js";
10
-
11
- // src/pc/pc.tool-picks.ts
12
- var TOOL_CATEGORIES = {
13
- "musical-instrument": { pool: MUSICAL_INSTRUMENTS, itemType: "instrument", label: "a musical instrument" },
14
- "artisan's-tools": { pool: ARTISANS_TOOLS, itemType: "artisan's tools", label: "artisan's tools" },
15
- "gaming-set": { pool: GAMING_SETS, itemType: "gaming set", label: "a gaming set" }
16
- };
17
- function categoryWords(token) {
18
- return token.replace(/([a-z])([A-Z])/g, "$1-$2").toLowerCase().replace(/['’ʼ]/g, "").split(/[\s_-]+/).filter(Boolean).map((w) => w.length > 3 && w.endsWith("s") && !w.endsWith("ss") ? w.slice(0, -1) : w);
19
- }
20
- var CATEGORY_BY_WORDS = /* @__PURE__ */ new Map([
21
- ["musical instrument", "musical-instrument"],
22
- ["artisan tool", "artisan's-tools"],
23
- ["gaming set", "gaming-set"]
24
- ]);
25
- function toolCategoriesOf(token) {
26
- const parts = [[]];
27
- for (const w of categoryWords(token)) {
28
- if (w === "or") parts.push([]);
29
- else parts[parts.length - 1].push(w);
30
- }
31
- const out = [];
32
- for (const p of parts) {
33
- const c = CATEGORY_BY_WORDS.get(p.filter((w) => w !== "any" && w !== "one").join(" "));
34
- if (!c) return void 0;
35
- if (!out.includes(c)) out.push(c);
36
- }
37
- return out;
38
- }
39
- function expandToolPool(from) {
40
- const out = [];
41
- const seen = /* @__PURE__ */ new Set();
42
- const add = (v) => {
43
- const k = toProfSlug(v);
44
- if (seen.has(k)) return;
45
- seen.add(k);
46
- out.push(v);
47
- };
48
- for (const v of from) {
49
- const cats = toolCategoriesOf(v);
50
- if (cats) for (const c of cats) for (const t of TOOL_CATEGORIES[c].pool) add(t);
51
- else add(v);
52
- }
53
- return out;
54
- }
55
- var EMPTY = { decisions: [], grants: [] };
56
- var poolOf = (from) => Array.isArray(from) ? from.filter((v) => typeof v === "string" && v.length > 0) : typeof from === "string" && from.length > 0 ? [from] : [];
57
- var countOf = (count) => {
58
- const n = Number(count != null ? count : 1);
59
- return Number.isFinite(n) && n > 0 ? Math.floor(n) : 1;
60
- };
61
- var KNOWN_TOOLS = new Set(ALL_TOOLS.map(toProfSlug));
62
- var namesToolsOutright = (from) => from.every((v) => !toolCategoriesOf(v) && KNOWN_TOOLS.has(toProfSlug(v)));
63
- var authorsToolPick = (choices) => Array.isArray(choices) && choices.some((c) => !!c && typeof c === "object" && c.kind === "select-proficiency" && c.domain === "tool");
64
- function toolPick(count, from, id, allowDecision) {
65
- const authored = poolOf(from);
66
- const pool = expandToolPool(authored);
67
- const n = countOf(count);
68
- if (pool.length === 0) return EMPTY;
69
- if (n >= pool.length && namesToolsOutright(authored)) return { decisions: [], grants: pool };
70
- if (!allowDecision) return EMPTY;
71
- return { decisions: [{ kind: "select-proficiency", id, count: n, domain: "tool", from: pool }], grants: [] };
72
- }
73
- function classToolPicks(entity) {
74
- var _a;
75
- const tools = (_a = entity == null ? void 0 : entity.proficiencies) == null ? void 0 : _a.tools;
76
- const choice = tools == null ? void 0 : tools.choice;
77
- if (!choice || typeof choice !== "object") return EMPTY;
78
- return toolPick(choice.count, choice.from, "tool", !authorsToolPick(entity == null ? void 0 : entity.choices));
79
- }
80
- function backgroundToolPicks(bg) {
81
- const entries = Array.isArray(bg == null ? void 0 : bg.tool_proficiencies) ? bg.tool_proficiencies : [];
82
- const allowDecision = !authorsToolPick(bg == null ? void 0 : bg.choices);
83
- const out = { decisions: [], grants: [] };
84
- for (const e of entries) {
85
- if (!e || typeof e !== "object" || e.kind !== "choice") continue;
86
- const id = out.decisions.length === 0 ? "tool" : `tool-${out.decisions.length + 1}`;
87
- const r = toolPick(e.count, e.from, id, allowDecision);
88
- out.decisions.push(...r.decisions);
89
- out.grants.push(...r.grants);
90
- }
91
- return out;
92
- }
93
-
94
- export {
95
- TOOL_CATEGORIES,
96
- categoryWords,
97
- toolCategoriesOf,
98
- expandToolPool,
99
- classToolPicks,
100
- backgroundToolPicks
101
- };
@@ -1,24 +0,0 @@
1
- import {
2
- evaluateConditions
3
- } from "./chunk-A54HHCWW.js";
4
-
5
- // src/item/item.bonuses.ts
6
- function isConditionalBonus(x) {
7
- return !!x && typeof x === "object" && typeof x.value === "number" && Array.isArray(x.when);
8
- }
9
- function readNumericBonus(raw, ctx) {
10
- if (raw === void 0 || raw === null) return null;
11
- if (typeof raw === "number") {
12
- return raw === 0 ? null : { kind: "applied", value: raw };
13
- }
14
- if (!isConditionalBonus(raw)) return null;
15
- if (raw.value === 0) return null;
16
- const outcome = evaluateConditions(raw.when, ctx);
17
- if (outcome === "true") return { kind: "applied", value: raw.value };
18
- if (outcome === "false") return { kind: "skipped" };
19
- return { kind: "informational", value: raw.value, conditions: raw.when };
20
- }
21
-
22
- export {
23
- readNumericBonus
24
- };
@@ -1,52 +0,0 @@
1
- import {
2
- imageField
3
- } from "./chunk-UA5KS2PL.js";
4
-
5
- // src/armor/armor.schema.ts
6
- import { z } from "zod";
7
- var acSchema = z.object({
8
- base: z.number().int(),
9
- flat: z.number().int().default(0),
10
- add_dex: z.boolean().default(false),
11
- dex_max: z.number().int().nonnegative().optional(),
12
- add_con: z.boolean().default(false),
13
- add_wis: z.boolean().default(false),
14
- description: z.string().optional()
15
- });
16
- var armorEntitySchema = z.object({
17
- name: z.string().min(1),
18
- slug: z.string().min(1),
19
- category: z.string(),
20
- ac: acSchema,
21
- strength_requirement: z.number().int().optional(),
22
- stealth_disadvantage: z.boolean().optional(),
23
- weight: z.union([z.number(), z.string()]).optional(),
24
- cost: z.string().optional(),
25
- rarity: z.string().optional(),
26
- source: z.string().optional(),
27
- page: z.number().int().optional(),
28
- edition: z.string().optional(),
29
- entries: z.array(z.unknown()).optional(),
30
- // Root extras the converter and the SRD bundle emit on more than one root (spec §5).
31
- // Carrier counts measured on the G1b close census. `rendering_hint` is ALWAYS the empty
32
- // string today, so `.min(1)` is forbidden here.
33
- rendering_hint: z.string().optional(),
34
- // 27
35
- // The icon key (I3): a key of the renderer's icon set or a Lucide name; itemIconKey reads it first.
36
- icon: z.string().optional(),
37
- has_fluff: z.boolean().optional(),
38
- // 0 carriers — symmetry with weapon
39
- has_fluff_images: z.boolean().optional(),
40
- // 13
41
- // Already `.optional()` at its source — never append a second one.
42
- image: imageField,
43
- // 0 today (images-OFF tree)
44
- raw: z.record(z.string(), z.unknown()).optional()
45
- // `.loose()` is load-bearing for the `strength_required` alias (armor.parser.ts): the alias
46
- // rides through onto the typed output as an inert extra, which is what keeps its census
47
- // disposal `kept` instead of minting a `stripped` row. See the parser's comment.
48
- }).loose();
49
-
50
- export {
51
- armorEntitySchema
52
- };