@archivist-gg/dnd5e 0.3.1 → 0.3.4

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 (259) hide show
  1. package/LICENSES/SRD.md +25 -6
  2. package/dist/armor/armor.codec.js +4 -3
  3. package/dist/armor/armor.parser.js +3 -2
  4. package/dist/armor/armor.schema.d.ts +4 -0
  5. package/dist/armor/armor.schema.js +2 -1
  6. package/dist/armor/armor.types.d.ts +8 -0
  7. package/dist/background/background.codec.js +7 -6
  8. package/dist/background/background.parser.js +6 -5
  9. package/dist/background/background.schema.d.ts +26 -0
  10. package/dist/background/background.schema.js +5 -4
  11. package/dist/background/background.types.d.ts +22 -0
  12. package/dist/{chunk-4TIJKN6O.js → chunk-23LZLBJK.js} +1 -1
  13. package/dist/{chunk-AFKTJXRA.js → chunk-2DFENQIJ.js} +18 -0
  14. package/dist/chunk-2FRUSVZS.js +489 -0
  15. package/dist/chunk-4FWNK4FD.js +159 -0
  16. package/dist/chunk-4U55VNC7.js +22 -0
  17. package/dist/{chunk-4JHOHWBI.js → chunk-4XTNPNQB.js} +1 -1
  18. package/dist/{chunk-HCP3GMHS.js → chunk-5N2GW72F.js} +15 -2
  19. package/dist/{chunk-42Y5IJKT.js → chunk-5U5FFFA3.js} +5 -1
  20. package/dist/{chunk-4F6AIZ36.js → chunk-5XMQPTHD.js} +1 -1
  21. package/dist/{chunk-GJOI2GHP.js → chunk-6GNXYAYP.js} +1 -1
  22. package/dist/chunk-6PKV5V2H.js +178 -0
  23. package/dist/{chunk-66XXW2Z2.js → chunk-6PXTNCBP.js} +2 -2
  24. package/dist/chunk-6X2NV665.js +33 -0
  25. package/dist/{chunk-LV4SNWZQ.js → chunk-6X4KUDMU.js} +8 -1
  26. package/dist/{chunk-ZMR77DDL.js → chunk-AW3EHF3L.js} +1 -1
  27. package/dist/chunk-CJYCVNW2.js +7 -0
  28. package/dist/chunk-COEOOQX2.js +133 -0
  29. package/dist/{chunk-XTIQWSFM.js → chunk-D5U7GMPX.js} +1 -1
  30. package/dist/{chunk-RAWJTA45.js → chunk-DEEHHLAP.js} +1 -1
  31. package/dist/{chunk-6IRYTM5V.js → chunk-DPUJDOKV.js} +119 -28
  32. package/dist/{chunk-73HOFQQ5.js → chunk-ESS46GR4.js} +1 -1
  33. package/dist/chunk-EVMUJYUD.js +195 -0
  34. package/dist/{chunk-2BWAID3Y.js → chunk-FDBWYMZK.js} +29 -3
  35. package/dist/{chunk-K6Q5OUGK.js → chunk-GFZ7PITJ.js} +86 -10
  36. package/dist/chunk-H7KBLR4X.js +81 -0
  37. package/dist/{chunk-L7E2UT5A.js → chunk-HB7XZXDK.js} +5 -1
  38. package/dist/{chunk-BIK4DFWK.js → chunk-HJ5EEZ47.js} +1 -1
  39. package/dist/{chunk-6NK2MUD3.js → chunk-HZA7OE7N.js} +9 -2
  40. package/dist/{chunk-TN6ZLTNU.js → chunk-I2NDWFDD.js} +51 -4
  41. package/dist/{chunk-RSDRMH54.js → chunk-IMZFOOVL.js} +1 -1
  42. package/dist/{chunk-3DZ74AKK.js → chunk-IN4M4X7P.js} +8 -2
  43. package/dist/chunk-IUAAXXNO.js +58 -0
  44. package/dist/{chunk-XJNECUPT.js → chunk-JC5UNIVM.js} +19 -0
  45. package/dist/chunk-JJ46T5XX.js +297 -0
  46. package/dist/{chunk-SE7AZDR3.js → chunk-JRDPUDT5.js} +29 -3
  47. package/dist/{chunk-24GFQU7T.js → chunk-JSZ4H6AQ.js} +1 -1
  48. package/dist/chunk-KU3YLF6D.js +106 -0
  49. package/dist/{chunk-5INR4NSL.js → chunk-LDDCNPHD.js} +1 -1
  50. package/dist/{chunk-5ZBE4CWV.js → chunk-LMBAEIP6.js} +1 -1
  51. package/dist/chunk-LVQLWRCU.js +15 -0
  52. package/dist/chunk-MI7P3NX3.js +161 -0
  53. package/dist/chunk-O4SRD3J5.js +165 -0
  54. package/dist/{chunk-D3CLOBE3.js → chunk-OSQFPGLM.js} +44 -8
  55. package/dist/chunk-OZP6JFGT.js +162 -0
  56. package/dist/{chunk-NAEPSZAM.js → chunk-PDJSUH24.js} +24 -2
  57. package/dist/chunk-PP2UHLBA.js +50 -0
  58. package/dist/chunk-PVCEA4HZ.js +6 -0
  59. package/dist/{chunk-XLSVNUTK.js → chunk-R3VAKWKW.js} +1 -1
  60. package/dist/chunk-RIXI5D3R.js +89 -0
  61. package/dist/chunk-RLGQ5PZZ.js +16 -0
  62. package/dist/chunk-S7REMWW4.js +21 -0
  63. package/dist/{chunk-7VJ6BOA5.js → chunk-SMLXZUBH.js} +9 -1
  64. package/dist/{chunk-NXSWH3AE.js → chunk-T26ZVCL5.js} +1 -1
  65. package/dist/chunk-TOM66P2P.js +38 -0
  66. package/dist/chunk-UA5KS2PL.js +26 -0
  67. package/dist/{chunk-N6N74K6X.js → chunk-UBBKSYBY.js} +1 -1
  68. package/dist/{chunk-353WXS6S.js → chunk-UIRMA5KM.js} +1 -1
  69. package/dist/{chunk-GE4TLPWM.js → chunk-US5IKYCW.js} +1 -1
  70. package/dist/chunk-UXPGW4TI.js +101 -0
  71. package/dist/chunk-VQAXTIBW.js +100 -0
  72. package/dist/{chunk-WP2CX2JO.js → chunk-WELIKLZF.js} +22 -1
  73. package/dist/chunk-WPWOHGPI.js +172 -0
  74. package/dist/{chunk-GZ46OVGZ.js → chunk-WSVMLNTO.js} +1 -1
  75. package/dist/{chunk-4LZJXJJS.js → chunk-WXWPK3LI.js} +6 -2
  76. package/dist/{chunk-ZZGEVJKX.js → chunk-XBQMCEI2.js} +1 -1
  77. package/dist/{chunk-PHQRGDRQ.js → chunk-XGOFP7AQ.js} +5 -1
  78. package/dist/chunk-XJ2F2WO6.js +8 -0
  79. package/dist/chunk-XQCSGNXE.js +1580 -0
  80. package/dist/chunk-YBLDE5CG.js +42 -0
  81. package/dist/{chunk-JEYQU3JT.js → chunk-YHYTW5QA.js} +2 -18
  82. package/dist/{chunk-TLYDBT5F.js → chunk-YJJTISBN.js} +64 -7
  83. package/dist/{chunk-PZOWBI3B.js → chunk-YLL2QXY2.js} +7 -2
  84. package/dist/{chunk-MDEJHMKK.js → chunk-ZONJ66NE.js} +26 -5
  85. package/dist/class/class.codec.js +12 -9
  86. package/dist/class/class.parser.js +11 -8
  87. package/dist/class/class.schema.d.ts +55 -3
  88. package/dist/class/class.schema.js +9 -7
  89. package/dist/class/class.types.d.ts +48 -3
  90. package/dist/condition/condition.codec.d.ts +9 -0
  91. package/dist/condition/condition.entity-type.d.ts +2 -0
  92. package/dist/condition/condition.parser.d.ts +13 -0
  93. package/dist/condition/condition.parser.js +7 -0
  94. package/dist/condition/condition.schema.d.ts +29 -0
  95. package/dist/condition/condition.types.d.ts +15 -0
  96. package/dist/condition/condition.types.js +0 -0
  97. package/dist/dnd/constants.d.ts +22 -0
  98. package/dist/dnd/constants.js +9 -3
  99. package/dist/dnd/formula-tags.js +2 -2
  100. package/dist/dnd/math.d.ts +26 -0
  101. package/dist/dnd/math.js +12 -2
  102. package/dist/dnd/prose-tags.js +1 -1
  103. package/dist/dnd/resource-formula.d.ts +36 -10
  104. package/dist/dnd/resource-formula.js +10 -155
  105. package/dist/dnd/srd-tag-converter.js +3 -3
  106. package/dist/dnd/tag-grammar.js +1 -1
  107. package/dist/dnd/warn-once.d.ts +2 -0
  108. package/dist/dnd/warn-once.js +8 -0
  109. package/dist/entities/base-item-resolver.js +2 -2
  110. package/dist/entities/slug.d.ts +13 -0
  111. package/dist/entities/slug.js +5 -3
  112. package/dist/entities/wikilink-display.d.ts +3 -0
  113. package/dist/entities/wikilink-display.js +10 -0
  114. package/dist/feat/feat.category-codes.d.ts +32 -0
  115. package/dist/feat/feat.category-codes.js +14 -0
  116. package/dist/feat/feat.codec.js +7 -5
  117. package/dist/feat/feat.parser.js +6 -4
  118. package/dist/feat/feat.schema.d.ts +230 -0
  119. package/dist/feat/feat.schema.js +5 -3
  120. package/dist/feat/feat.types.d.ts +37 -1
  121. package/dist/index.js +2033 -6907
  122. package/dist/item/item.codec.js +4 -3
  123. package/dist/item/item.enrichment.js +4 -4
  124. package/dist/item/item.parser.js +3 -2
  125. package/dist/item/item.schema.d.ts +69 -3
  126. package/dist/item/item.schema.js +2 -1
  127. package/dist/item/item.types.d.ts +69 -3
  128. package/dist/monster/monster.codec.d.ts +7 -6
  129. package/dist/monster/monster.enrichment.js +4 -4
  130. package/dist/monster/monster.format.d.ts +135 -0
  131. package/dist/monster/monster.format.js +78 -0
  132. package/dist/monster/monster.parser.d.ts +6 -1
  133. package/dist/monster/monster.parser.js +10 -1
  134. package/dist/monster/monster.schema.d.ts +369 -0
  135. package/dist/monster/monster.schema.js +34 -0
  136. package/dist/monster/monster.types.d.ts +200 -14
  137. package/dist/optional-feature/optional-feature.codec.js +6 -5
  138. package/dist/optional-feature/optional-feature.parser.js +5 -4
  139. package/dist/optional-feature/optional-feature.schema.d.ts +176 -0
  140. package/dist/optional-feature/optional-feature.schema.js +4 -3
  141. package/dist/pack.d.ts +1 -1
  142. package/dist/pc/conditions.constants.d.ts +0 -1
  143. package/dist/pc/conditions.constants.js +1 -3
  144. package/dist/pc/decision-recognizer.js +1 -1
  145. package/dist/pc/pc.additional-spells.d.ts +47 -0
  146. package/dist/pc/pc.additional-spells.js +23 -0
  147. package/dist/pc/pc.asi-flatten.d.ts +18 -0
  148. package/dist/pc/pc.decision-engine.d.ts +105 -17
  149. package/dist/pc/pc.decision-engine.js +28 -12
  150. package/dist/pc/pc.defense-normalize.d.ts +11 -0
  151. package/dist/pc/pc.defense-normalize.js +6 -0
  152. package/dist/pc/pc.equipment.d.ts +30 -1
  153. package/dist/pc/pc.equipment.js +12 -8
  154. package/dist/pc/pc.feature-effects.d.ts +225 -11
  155. package/dist/pc/pc.feature-effects.js +21 -5
  156. package/dist/pc/pc.parser.js +2 -2
  157. package/dist/pc/pc.pools.d.ts +11 -3
  158. package/dist/pc/pc.pools.js +9 -13
  159. package/dist/pc/pc.proficiencies.d.ts +54 -29
  160. package/dist/pc/pc.proficiencies.js +74 -95
  161. package/dist/pc/pc.proficiency-grants.d.ts +58 -0
  162. package/dist/pc/pc.proficiency-normalize.d.ts +24 -0
  163. package/dist/pc/pc.proficiency-normalize.js +12 -0
  164. package/dist/pc/pc.proficiency-query.d.ts +13 -0
  165. package/dist/pc/pc.proficiency-query.js +1 -1
  166. package/dist/pc/pc.recalc.d.ts +69 -14
  167. package/dist/pc/pc.recalc.js +261 -122
  168. package/dist/pc/pc.resolver.d.ts +34 -8
  169. package/dist/pc/pc.resolver.js +27 -12
  170. package/dist/pc/pc.resource-seed.d.ts +3 -2
  171. package/dist/pc/pc.resource-seed.js +19 -17
  172. package/dist/pc/pc.resources.d.ts +87 -0
  173. package/dist/pc/pc.resources.js +21 -0
  174. package/dist/pc/pc.rest.d.ts +10 -1
  175. package/dist/pc/pc.rest.js +66 -12
  176. package/dist/pc/pc.schema.d.ts +139 -3
  177. package/dist/pc/pc.schema.js +4 -2
  178. package/dist/pc/pc.slotting.js +3 -3
  179. package/dist/pc/pc.spellcasting.d.ts +75 -6
  180. package/dist/pc/pc.spellcasting.js +16 -6
  181. package/dist/pc/pc.table-column.d.ts +23 -0
  182. package/dist/pc/pc.table-column.js +13 -3
  183. package/dist/pc/pc.types.d.ts +251 -12
  184. package/dist/pc/pool-layout.d.ts +47 -0
  185. package/dist/pc/pool-layout.js +16 -0
  186. package/dist/pc/roll-scope.d.ts +2 -0
  187. package/dist/pc/roll-scope.js +8 -0
  188. package/dist/pc/roll-tag-labels.d.ts +40 -0
  189. package/dist/pc/roll-tag-labels.js +17 -0
  190. package/dist/pc/spell-source.d.ts +21 -0
  191. package/dist/pc/spell-source.js +13 -0
  192. package/dist/race/race.codec.js +9 -7
  193. package/dist/race/race.parser.js +8 -6
  194. package/dist/race/race.schema.d.ts +51 -1
  195. package/dist/race/race.schema.js +8 -5
  196. package/dist/race/race.structural.d.ts +7 -0
  197. package/dist/race/race.structural.js +6 -0
  198. package/dist/race/race.types.d.ts +20 -0
  199. package/dist/schemas/attack-schema.d.ts +5 -0
  200. package/dist/schemas/caster-type-schema.d.ts +14 -0
  201. package/dist/schemas/caster-type-schema.js +6 -0
  202. package/dist/schemas/choice-schema.js +2 -2
  203. package/dist/schemas/entity-extras-schema.d.ts +53 -0
  204. package/dist/schemas/entity-extras-schema.js +10 -0
  205. package/dist/schemas/equipment-grant-schema.d.ts +2 -0
  206. package/dist/schemas/equipment-grant-schema.js +1 -1
  207. package/dist/schemas/feature-alias.d.ts +34 -0
  208. package/dist/schemas/feature-effect-schema.d.ts +124 -0
  209. package/dist/schemas/feature-effect-schema.js +1 -1
  210. package/dist/schemas/feature-schema.d.ts +8 -0
  211. package/dist/schemas/feature-schema.js +6 -4
  212. package/dist/schemas/resource-schema.d.ts +43 -0
  213. package/dist/schemas/resource-schema.js +1 -1
  214. package/dist/schemas/selection-pool-schema.d.ts +2 -0
  215. package/dist/schemas/selection-pool-schema.js +1 -1
  216. package/dist/spell/spell.access.js +23 -3
  217. package/dist/spell/spell.codec.js +4 -3
  218. package/dist/spell/spell.enrichment.js +4 -4
  219. package/dist/spell/spell.parser.d.ts +30 -0
  220. package/dist/spell/spell.parser.js +9 -2
  221. package/dist/spell/spell.scaling.d.ts +27 -6
  222. package/dist/spell/spell.scaling.js +25 -6
  223. package/dist/spell/spell.schema.d.ts +44 -2
  224. package/dist/spell/spell.schema.js +2 -1
  225. package/dist/spell/spell.types.d.ts +14 -0
  226. package/dist/subclass/subclass.codec.d.ts +1 -1
  227. package/dist/subclass/subclass.codec.js +11 -8
  228. package/dist/subclass/subclass.parser.js +10 -7
  229. package/dist/subclass/subclass.schema.d.ts +54 -7
  230. package/dist/subclass/subclass.schema.js +8 -6
  231. package/dist/subclass/subclass.types.d.ts +20 -2
  232. package/dist/types/choice.d.ts +53 -2
  233. package/dist/types/choice.js +13 -1
  234. package/dist/types/equipment-grant.d.ts +8 -1
  235. package/dist/types/feature-effect.d.ts +78 -23
  236. package/dist/types/feature.d.ts +70 -1
  237. package/dist/types/optional-feature.types.d.ts +28 -0
  238. package/dist/types/resource.d.ts +21 -1
  239. package/dist/types/selection-pool.d.ts +17 -2
  240. package/dist/weapon/weapon.classify.js +2 -2
  241. package/dist/weapon/weapon.codec.js +4 -3
  242. package/dist/weapon/weapon.parser.js +3 -2
  243. package/dist/weapon/weapon.schema.d.ts +4 -0
  244. package/dist/weapon/weapon.schema.js +2 -1
  245. package/dist/weapon/weapon.types.d.ts +8 -0
  246. package/package.json +2 -2
  247. package/dist/chunk-5XUXXAQJ.js +0 -30
  248. package/dist/chunk-7P65Q426.js +0 -158
  249. package/dist/chunk-7TEK5KK7.js +0 -49
  250. package/dist/chunk-AIRFC5NQ.js +0 -143
  251. package/dist/chunk-CZPMTQOY.js +0 -68
  252. package/dist/chunk-N2JE7BWL.js +0 -81
  253. package/dist/chunk-NXR3BD2V.js +0 -90
  254. package/dist/chunk-O5EYMKFH.js +0 -6
  255. package/dist/chunk-Q5K6LWBZ.js +0 -45
  256. package/dist/chunk-TNUFPIXI.js +0 -1110
  257. package/dist/chunk-TZK36BU7.js +0 -38
  258. package/dist/chunk-W7HWMMBF.js +0 -46
  259. package/dist/chunk-Y4I74YEG.js +0 -33
package/LICENSES/SRD.md CHANGED
@@ -27,11 +27,30 @@ Coast. This project is unofficial and not affiliated with or endorsed by Wizards
27
27
 
28
28
  ## Provenance and changes made (CC-BY "indicate if changes were made")
29
29
 
30
- The shipped SRD data is a MERGE, assembled by `tools/srd-canonical/` from: the **Open5e** v2
31
- API (the immediate redistribution source of the SRD content), a structured-rules dump, and
32
- supplemental activation data, combined with a hand-curated overlay. Content is transformed
33
- structurally (reformatted to this project's schema and to Markdown) and normalized; narrative
34
- prose is preserved. **No non-SRD content is bundled** — every shipped entry's `source` field is
35
- `SRD 5.1` or `SRD 5.2` (verified: see the repository's SRD-content assertion).
30
+ The shipped SRD data is MODIFIED, and it is a MERGE. It was not taken from the SRD PDFs. It is
31
+ assembled by `tools/srd-canonical/` from:
32
+
33
+ - the **Open5e** v2 API, queried with the official-SRD document filter
34
+ `document__key__in=srd-2014` / `srd-2024`, the immediate redistribution source of the SRD
35
+ text, itself a CC-BY-4.0 redistribution;
36
+ - a structured-rules JSON dump, used to enrich mechanical fields, to expand the SRD's generic
37
+ magic-item variants into one entity per base item, and, for the 15 conditions per edition, as
38
+ the text source (Open5e exposes no condition endpoint for these documents);
39
+ - virtual-tabletop activation data, used to derive typed item effects;
40
+ - a hand-curated overlay (`tools/srd-canonical/overlays/`), authored for this project.
41
+
42
+ Content is reformatted to this project's schema and to Markdown, cross-references become vault
43
+ wikilinks, and dice and save expressions become this project's inline roll tags; narrative prose
44
+ is preserved and no mechanics are invented. A small number of entities with no SRD counterpart
45
+ (the base Shield entry, an Ability Score Improvement entry, spell scrolls and unidentified-item
46
+ placeholders) are authored here and marked as such.
47
+
48
+ Entity selection is governed by Open5e's document filter and by the structured-rules dump's own
49
+ per-entry SRD flags: every shipped entry's `source` field is `SRD 5.1` or `SRD 5.2`, and no
50
+ content from a non-SRD publication is bundled. Because a correct `source` field is a claim about
51
+ the ENTITY and not about every byte of its text, the emit path additionally runs
52
+ `tools/srd-canonical/sanitize.ts` over every file it writes, removing the upstream tooling's own
53
+ markup (reference tags, source-book abbreviation suffixes, template pointers, third-party
54
+ database identifiers) and the editorial commentary its contributors wrote about the SRD.
36
55
 
37
56
  Credit to **Open5e** (https://open5e.com) as the immediate SRD-redistribution source.
@@ -1,8 +1,9 @@
1
1
  import {
2
2
  armorCodec
3
- } from "../chunk-ZMR77DDL.js";
4
- import "../chunk-HCP3GMHS.js";
5
- import "../chunk-XJNECUPT.js";
3
+ } from "../chunk-AW3EHF3L.js";
4
+ import "../chunk-5N2GW72F.js";
5
+ import "../chunk-JC5UNIVM.js";
6
+ import "../chunk-UA5KS2PL.js";
6
7
  export {
7
8
  armorCodec
8
9
  };
@@ -1,7 +1,8 @@
1
1
  import {
2
2
  parseArmor
3
- } from "../chunk-HCP3GMHS.js";
4
- import "../chunk-XJNECUPT.js";
3
+ } from "../chunk-5N2GW72F.js";
4
+ import "../chunk-JC5UNIVM.js";
5
+ import "../chunk-UA5KS2PL.js";
5
6
  export {
6
7
  parseArmor
7
8
  };
@@ -21,5 +21,9 @@ export declare const armorEntitySchema: z.ZodObject<{
21
21
  page: z.ZodOptional<z.ZodNumber>;
22
22
  edition: z.ZodOptional<z.ZodString>;
23
23
  entries: z.ZodOptional<z.ZodArray<z.ZodUnknown>>;
24
+ rendering_hint: z.ZodOptional<z.ZodString>;
25
+ has_fluff: z.ZodOptional<z.ZodBoolean>;
26
+ has_fluff_images: z.ZodOptional<z.ZodBoolean>;
27
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
24
28
  raw: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
25
29
  }, z.core.$loose>;
@@ -1,6 +1,7 @@
1
1
  import {
2
2
  armorEntitySchema
3
- } from "../chunk-XJNECUPT.js";
3
+ } from "../chunk-JC5UNIVM.js";
4
+ import "../chunk-UA5KS2PL.js";
4
5
  export {
5
6
  armorEntitySchema
6
7
  };
@@ -1,3 +1,5 @@
1
+ import type { imageField } from "@archivist-gg/dnd5e/schemas/entity-extras-schema";
2
+ import type { z } from "zod";
1
3
  export type { Ability } from "@archivist-gg/dnd5e/types/choice";
2
4
  export type ArmorCategory = "light" | "medium" | "heavy" | "shield" | "natural" | "feature" | "spell" | string;
3
5
  export interface ArmorEntity {
@@ -22,5 +24,11 @@ export interface ArmorEntity {
22
24
  page?: number;
23
25
  edition?: "2014" | "2024" | string;
24
26
  entries?: unknown[];
27
+ /** Carried as the empty string on every converter armor carrier today (27). */
28
+ rendering_hint?: string;
29
+ has_fluff?: boolean;
30
+ has_fluff_images?: boolean;
31
+ /** One wikilink, or an array for >= 2 fluff images (images-ON emit). */
32
+ image?: z.infer<typeof imageField>;
25
33
  raw?: Record<string, unknown>;
26
34
  }
@@ -1,11 +1,12 @@
1
1
  import {
2
2
  backgroundCodec
3
- } from "../chunk-BIK4DFWK.js";
4
- import "../chunk-5ZBE4CWV.js";
5
- import "../chunk-SE7AZDR3.js";
6
- import "../chunk-3DZ74AKK.js";
7
- import "../chunk-NXSWH3AE.js";
8
- import "../chunk-NXR3BD2V.js";
3
+ } from "../chunk-HJ5EEZ47.js";
4
+ import "../chunk-LMBAEIP6.js";
5
+ import "../chunk-JRDPUDT5.js";
6
+ import "../chunk-IN4M4X7P.js";
7
+ import "../chunk-T26ZVCL5.js";
8
+ import "../chunk-WPWOHGPI.js";
9
+ import "../chunk-UA5KS2PL.js";
9
10
  export {
10
11
  backgroundCodec
11
12
  };
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  parseBackground
3
- } from "../chunk-5ZBE4CWV.js";
4
- import "../chunk-SE7AZDR3.js";
5
- import "../chunk-3DZ74AKK.js";
6
- import "../chunk-NXSWH3AE.js";
7
- import "../chunk-NXR3BD2V.js";
3
+ } from "../chunk-LMBAEIP6.js";
4
+ import "../chunk-JRDPUDT5.js";
5
+ import "../chunk-IN4M4X7P.js";
6
+ import "../chunk-T26ZVCL5.js";
7
+ import "../chunk-WPWOHGPI.js";
8
+ import "../chunk-UA5KS2PL.js";
8
9
  export {
9
10
  parseBackground
10
11
  };
@@ -79,4 +79,30 @@ export declare const backgroundEntitySchema: z.ZodObject<{
79
79
  flaws: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
80
80
  }, z.core.$strip>>;
81
81
  choices: z.ZodOptional<z.ZodArray<z.ZodType<import("../index.js").Choice, unknown, z.core.$ZodTypeInternals<import("../index.js").Choice, unknown>>>>;
82
+ rendering_hint: z.ZodOptional<z.ZodString>;
83
+ has_fluff_images: z.ZodOptional<z.ZodBoolean>;
84
+ tables: z.ZodOptional<z.ZodArray<z.ZodObject<{
85
+ name: z.ZodString;
86
+ dice: z.ZodString;
87
+ rows: z.ZodArray<z.ZodObject<{
88
+ roll: z.ZodString;
89
+ text: z.ZodString;
90
+ }, z.core.$strip>>;
91
+ }, z.core.$strip>>>;
92
+ additional_spells: z.ZodOptional<z.ZodArray<z.ZodObject<{
93
+ name: z.ZodOptional<z.ZodString>;
94
+ ability: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodObject<{
95
+ choose: z.ZodArray<z.ZodString>;
96
+ }, z.core.$strip>]>>;
97
+ known: z.ZodOptional<z.ZodUnknown>;
98
+ innate: z.ZodOptional<z.ZodUnknown>;
99
+ prepared: z.ZodOptional<z.ZodUnknown>;
100
+ expanded: z.ZodOptional<z.ZodUnknown>;
101
+ resourceName: z.ZodOptional<z.ZodString>;
102
+ }, z.core.$strip>>>;
103
+ prerequisites: z.ZodOptional<z.ZodArray<z.ZodObject<{
104
+ kind: z.ZodLiteral<"campaign">;
105
+ slug: z.ZodString;
106
+ }, z.core.$strip>>>;
107
+ image: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodArray<z.ZodString>]>>;
82
108
  }, z.core.$strip>;
@@ -1,10 +1,11 @@
1
1
  import {
2
2
  backgroundEntitySchema,
3
3
  langProfSchema
4
- } from "../chunk-SE7AZDR3.js";
5
- import "../chunk-3DZ74AKK.js";
6
- import "../chunk-NXSWH3AE.js";
7
- import "../chunk-NXR3BD2V.js";
4
+ } from "../chunk-JRDPUDT5.js";
5
+ import "../chunk-IN4M4X7P.js";
6
+ import "../chunk-T26ZVCL5.js";
7
+ import "../chunk-WPWOHGPI.js";
8
+ import "../chunk-UA5KS2PL.js";
8
9
  export {
9
10
  backgroundEntitySchema,
10
11
  langProfSchema
@@ -2,6 +2,7 @@ import type { Ability, SkillSlug, Choice } from "@archivist-gg/dnd5e";
2
2
  import type { Edition } from "@archivist-gg/dnd5e/types/edition";
3
3
  import type { Resource } from "@archivist-gg/dnd5e/types/resource";
4
4
  import type { StartingEquipmentEntry } from "@archivist-gg/dnd5e/types/equipment-grant";
5
+ import type { AdditionalSpellsEntry } from "@archivist-gg/dnd5e/schemas/entity-extras-schema";
5
6
  export type BackgroundToolProficiency = {
6
7
  kind: "fixed";
7
8
  items: string[];
@@ -49,4 +50,25 @@ export interface BackgroundEntity {
49
50
  origin_feat: string | null;
50
51
  suggested_characteristics: SuggestedCharacteristics | null;
51
52
  choices?: Choice[];
53
+ /** Converter/bundle extras declared by background.schema.ts §2.6; all optional, none read today. */
54
+ rendering_hint?: string;
55
+ has_fluff_images?: boolean;
56
+ /** 88 roll tables over 67 docs; `roll` is a STRING on every row ("1", "2-3"). Render is G3b's
57
+ * (the 2026-09-02 G3 split; G3a renders no background tables). */
58
+ tables?: Array<{
59
+ name: string;
60
+ dice: string;
61
+ rows: Array<{
62
+ roll: string;
63
+ text: string;
64
+ }>;
65
+ }>;
66
+ additional_spells?: AdditionalSpellsEntry[];
67
+ /** The kind is CLOSED at the converter's only push site (background-mapper.ts). */
68
+ prerequisites?: Array<{
69
+ kind: "campaign";
70
+ slug: string;
71
+ }>;
72
+ /** One wikilink, or an array of them for the multi-fluff-image emit. */
73
+ image?: string | string[];
52
74
  }
@@ -26,7 +26,7 @@ var tabDeclSchema = z.object({
26
26
  label: z.string().min(1),
27
27
  renders: z.object({
28
28
  pool: z.string().min(1),
29
- layout: z.enum(["spell-like", "blocks"]).optional()
29
+ layout: z.enum(["spell-like", "blocks", "dice-pool", "point-pool"]).optional()
30
30
  })
31
31
  });
32
32
 
@@ -1,3 +1,7 @@
1
+ import {
2
+ imageField
3
+ } from "./chunk-UA5KS2PL.js";
4
+
1
5
  // src/weapon/weapon.schema.ts
2
6
  import { z } from "zod";
3
7
  var conditionalPropertySchema = z.object({
@@ -31,7 +35,21 @@ var weaponEntitySchema = z.object({
31
35
  page: z.number().int().optional(),
32
36
  edition: editionEnum,
33
37
  entries: z.array(z.unknown()).optional(),
38
+ // Root extras the converter and the SRD bundle emit on more than one root (spec §5).
39
+ // Carrier counts measured on the G1b close census. `rendering_hint` is ALWAYS the empty
40
+ // string today, so `.min(1)` is forbidden here.
41
+ rendering_hint: z.string().optional(),
42
+ // 98
43
+ has_fluff: z.boolean().optional(),
44
+ // 1
45
+ has_fluff_images: z.boolean().optional(),
46
+ // 39
47
+ // Already `.optional()` at its source — never append a second one.
48
+ image: imageField,
49
+ // 0 today (images-OFF tree)
34
50
  raw: z.record(z.string(), z.unknown()).optional()
51
+ // `weapon :: value_rarity :: duplicated` (8) is deliberately NOT declared: it is
52
+ // converter-owned and stays a named expected residual (spec §10.3).
35
53
  }).loose();
36
54
 
37
55
  export {