optolith-database-schema 0.9.0 → 0.10.0

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 (83) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/lib/main.js +8 -3
  3. package/lib/types/Advantage.d.ts +13 -2
  4. package/lib/types/Disadvantage.d.ts +12 -2
  5. package/lib/types/Profession.d.ts +12 -2
  6. package/lib/types/Talisman.d.ts +6 -6
  7. package/lib/types/_Activatable.d.ts +111 -3
  8. package/lib/types/_Activatable.js +4 -35
  9. package/lib/types/_ActivatableSelectOptionCategory.d.ts +30 -0
  10. package/lib/types/equipment/item/Poison.d.ts +21 -1
  11. package/lib/types/equipment/item/Poison.js +1 -0
  12. package/lib/types/equipment/item/Weapon.d.ts +4 -3
  13. package/lib/types/equipment/item/sub/ArmorType.d.ts +3 -3
  14. package/lib/types/prerequisites/DisplayOption.d.ts +14 -0
  15. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +23 -1
  16. package/lib/types/prerequisites/single/AncestorBloodPrerequisite.d.ts +5 -0
  17. package/lib/types/prerequisites/single/AncestorBloodPrerequisite.js +1 -0
  18. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.d.ts +67 -0
  19. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.js +6 -0
  20. package/lib/types/prerequisites/single/RatedPrerequisite.d.ts +0 -55
  21. package/lib/types/prerequisites/single/RatedSumPrerequisite.d.ts +19 -0
  22. package/lib/types/prerequisites/single/RatedSumPrerequisite.js +1 -0
  23. package/lib/types/prerequisites/single/SexualCharacteristicPrerequisite.d.ts +11 -0
  24. package/lib/types/prerequisites/single/SexualCharacteristicPrerequisite.js +5 -0
  25. package/lib/types/prerequisites/single/TextPrerequisite.d.ts +29 -0
  26. package/lib/types/prerequisites/single/TextPrerequisite.js +5 -0
  27. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +11 -0
  28. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +7 -2
  29. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +6 -2
  30. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +5 -0
  31. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +12 -2
  32. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +7 -2
  33. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +11 -2
  34. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +5 -0
  35. package/lib/types/specialAbility/VampiricGift.d.ts +7 -2
  36. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +2 -2
  37. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +2 -2
  38. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +2 -2
  39. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +2 -2
  40. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +2 -2
  41. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +2 -2
  42. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +2 -2
  43. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +2 -2
  44. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +2 -2
  45. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +2 -2
  46. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +2 -2
  47. package/lib/types/traditionArtifacts/SickleRitual.d.ts +2 -2
  48. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +7 -2
  49. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +12 -2
  50. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +2 -2
  51. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +2 -2
  52. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +2 -2
  53. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +2 -2
  54. package/lib/validation/schema.js +2 -2
  55. package/package.json +1 -1
  56. package/schema/Advantage.schema.json +11 -0
  57. package/schema/Disadvantage.schema.json +8 -0
  58. package/schema/Profession.schema.json +8 -0
  59. package/schema/Talisman.schema.json +2 -4
  60. package/schema/_Activatable.schema.json +166 -0
  61. package/schema/_ActivatableSelectOptionCategory.schema.json +141 -0
  62. package/schema/equipment/item/Poison.schema.json +55 -1
  63. package/schema/equipment/item/Weapon.schema.json +5 -1
  64. package/schema/equipment/item/sub/ArmorType.schema.json +1 -2
  65. package/schema/prerequisites/DisplayOption.schema.json +4 -0
  66. package/schema/prerequisites/PrerequisiteGroups.schema.json +98 -2
  67. package/schema/prerequisites/single/AncestorBloodPrerequisite.schema.json +14 -0
  68. package/schema/prerequisites/single/RatedMinimumNumberPrerequisite.schema.json +166 -0
  69. package/schema/prerequisites/single/RatedPrerequisite.schema.json +0 -125
  70. package/schema/prerequisites/single/RatedSumPrerequisite.schema.json +33 -0
  71. package/schema/prerequisites/single/SexualCharacteristicPrerequisite.schema.json +26 -0
  72. package/schema/prerequisites/single/TextPrerequisite.schema.json +14 -0
  73. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +8 -0
  74. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +4 -0
  75. package/schema/specialAbility/CombatSpecialAbility.schema.json +4 -0
  76. package/schema/specialAbility/FatePointSpecialAbility.schema.json +4 -0
  77. package/schema/specialAbility/GeneralSpecialAbility.schema.json +8 -0
  78. package/schema/specialAbility/KarmaSpecialAbility.schema.json +4 -0
  79. package/schema/specialAbility/MagicalSpecialAbility.schema.json +8 -0
  80. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +4 -0
  81. package/schema/specialAbility/VampiricGift.schema.json +4 -0
  82. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +4 -0
  83. package/schema/traditionArtifacts/StaffEnchantment.schema.json +8 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,26 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [0.10.0](https://github.com/elyukai/optolith-database-schema/compare/v0.9.0...v0.10.0) (2023-05-01)
6
+
7
+
8
+ ### ⚠ BREAKING CHANGES
9
+
10
+ * finish schema
11
+
12
+ ### Features
13
+
14
+ * finish schema ([0ea6a83](https://github.com/elyukai/optolith-database-schema/commit/0ea6a838e22651b0e24708dcb10143db3c4300ca))
15
+ * sort errors by file path, with numbers in ascending order ([abc0bb1](https://github.com/elyukai/optolith-database-schema/commit/abc0bb13fd1d8d72237725ea37031c5697adaab9))
16
+
17
+
18
+ ### Bug Fixes
19
+
20
+ * allow numbers in names ([4f6b2ae](https://github.com/elyukai/optolith-database-schema/commit/4f6b2aea2dba9a92a77b2667ed98617c233bbef1))
21
+ * ignore hidden files ([230326f](https://github.com/elyukai/optolith-database-schema/commit/230326ff25c3faee88f614c3380396070efb1516))
22
+ * the file name id may be 0 for custom entries ([8b1144e](https://github.com/elyukai/optolith-database-schema/commit/8b1144e6f13b46a9ef5aa1824d987ab70cfb8a95))
23
+ * uppercase letters should be allowed after the first letter ([50b2020](https://github.com/elyukai/optolith-database-schema/commit/50b2020bd6ed81c44d944cb8048b966c72b8fb38))
24
+
5
25
  ## [0.9.0](https://github.com/elyukai/optolith-database-schema/compare/v0.8.1...v0.9.0) (2023-01-14)
6
26
 
7
27
 
package/lib/main.js CHANGED
@@ -8,10 +8,12 @@ import { jsonSchemaDir } from "../config/directories.js";
8
8
  import { typeValidatorMap } from "./config.js";
9
9
  const readdirRecursive = async (dirPath) => {
10
10
  const directoryEntries = await readdir(dirPath, { withFileTypes: true });
11
- const flattenedRecursivePaths = await Promise.all(directoryEntries.map(async (dirEntry) => {
11
+ const flattenedRecursivePaths = await Promise.all(directoryEntries
12
+ .filter(dirEntry => !dirEntry.name.startsWith("."))
13
+ .map(async (dirEntry) => {
12
14
  const absoluteEntryPath = join(dirPath, dirEntry.name);
13
15
  if (dirEntry.isDirectory()) {
14
- return await readdirRecursive(absoluteEntryPath);
16
+ return (await readdirRecursive(absoluteEntryPath));
15
17
  }
16
18
  else if (dirEntry.isFile()) {
17
19
  return [absoluteEntryPath];
@@ -39,7 +41,9 @@ const collator = Intl.Collator(undefined, { numeric: true });
39
41
  const readDataFileAssocsFromDirectory = async (dirPath) => {
40
42
  const filenames = await readdir(dirPath);
41
43
  filenames.sort(collator.compare);
42
- return await Promise.all(filenames.map(async (fileName) => {
44
+ return await Promise.all(filenames
45
+ .filter(fileName => !fileName.startsWith("."))
46
+ .map(async (fileName) => {
43
47
  const filePath = join(dirPath, fileName);
44
48
  try {
45
49
  const fileContent = YAML.parse(await readFile(join(dirPath, fileName), "utf-8"));
@@ -111,6 +115,7 @@ export const validate = async (entityDirPaths, checkIntegrity) => {
111
115
  export const printErrors = (errorsByFile, printOptions = {}) => {
112
116
  const { verbose = false } = printOptions;
113
117
  return Object.entries(errorsByFile)
118
+ .sort(([filePathA], [filePathB]) => collator.compare(filePathA, filePathB))
114
119
  .flatMap(([filePath, errors]) => {
115
120
  if (verbose) {
116
121
  return filterNullable([
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * @main Advantage
3
3
  */
4
- import { Errata } from "./source/_Erratum.js";
5
- import { PublicationRefs } from "./source/_PublicationRef.js";
6
4
  import * as Activatable from "./_Activatable.js";
7
5
  import { LocaleMap } from "./_LocaleMap.js";
8
6
  import { AdvantageDisadvantagePrerequisites } from "./_Prerequisite.js";
7
+ import { Errata } from "./source/_Erratum.js";
8
+ import { PublicationRefs } from "./source/_PublicationRef.js";
9
9
  /**
10
10
  * @title Advantage
11
11
  */
@@ -39,6 +39,10 @@ export declare type Advantage = {
39
39
  export declare type AdvantageTranslation = {
40
40
  name: Activatable.Name;
41
41
  name_in_library?: Activatable.NameInLibrary;
42
+ /**
43
+ * A string that is used as a label for an input field.
44
+ */
45
+ input?: Activatable.Input;
42
46
  rules: Activatable.Rules;
43
47
  /**
44
48
  * The range.
@@ -46,6 +50,13 @@ export declare type AdvantageTranslation = {
46
50
  * @minLength 1
47
51
  */
48
52
  range?: string;
53
+ ap_value?: Activatable.AdventurePointsValueReplacement;
54
+ /**
55
+ * A string that gets appended to the default AP Value text with a preceding
56
+ * space. This always happens if present, even if the generated AP Value text
57
+ * is replaced.
58
+ */
59
+ ap_value_append?: Activatable.AdventurePointsValueAppend;
49
60
  errata?: Errata;
50
61
  };
51
62
  export declare const validateSchema: import("../validation/schema.js").TypeValidator<Advantage>;
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * @main Disadvantage
3
3
  */
4
- import { Errata } from "./source/_Erratum.js";
5
- import { PublicationRefs } from "./source/_PublicationRef.js";
6
4
  import * as Activatable from "./_Activatable.js";
7
5
  import { LocaleMap } from "./_LocaleMap.js";
8
6
  import { AdvantageDisadvantagePrerequisites } from "./_Prerequisite.js";
7
+ import { Errata } from "./source/_Erratum.js";
8
+ import { PublicationRefs } from "./source/_PublicationRef.js";
9
9
  /**
10
10
  * @title Disadvantage
11
11
  */
@@ -35,6 +35,10 @@ export declare type Disadvantage = {
35
35
  export declare type DisadvantageTranslation = {
36
36
  name: Activatable.Name;
37
37
  name_in_library?: Activatable.NameInLibrary;
38
+ /**
39
+ * A string that is used as a label for an input field.
40
+ */
41
+ input?: Activatable.Input;
38
42
  rules: Activatable.Rules;
39
43
  /**
40
44
  * The range.
@@ -42,6 +46,12 @@ export declare type DisadvantageTranslation = {
42
46
  * @minLength 1
43
47
  */
44
48
  range?: string;
49
+ /**
50
+ * A string that gets appended to the default AP Value text with a preceding
51
+ * space. This always happens if present, even if the generated AP Value text
52
+ * is replaced.
53
+ */
54
+ ap_value_append?: Activatable.AdventurePointsValueAppend;
45
55
  errata?: Errata;
46
56
  };
47
57
  export declare const validateSchema: import("../validation/schema.js").TypeValidator<Disadvantage>;
@@ -1,8 +1,6 @@
1
1
  /**
2
2
  * @main Profession
3
3
  */
4
- import { Errata } from "./source/_Erratum.js";
5
- import { PublicationRefs } from "./source/_PublicationRef.js";
6
4
  import { CommonnessRatedAdvantageDisadvantage } from "./_CommonnessRatedAdvantageDisadvantage.js";
7
5
  import { AdvantageIdentifier, DisadvantageIdentifier, SkillIdentifier } from "./_Identifier.js";
8
6
  import { CombatTechniqueIdentifier, LiturgyIdentifier, MagicalActionIdentifier, RequirableSelectOptionIdentifier, SpecialAbilityIdentifier, SpellworkIdentifier } from "./_IdentifierGroup.js";
@@ -10,6 +8,8 @@ import { LocaleMap } from "./_LocaleMap.js";
10
8
  import { NonEmptyString } from "./_NonEmptyString.js";
11
9
  import { ProfessionPrerequisites } from "./_Prerequisite.js";
12
10
  import { CantripReference, CombatTechniqueReference, CurriculumReference, MagicalTraditionReference, SkillGroupReference, SkillReference } from "./_SimpleReferences.js";
11
+ import { Errata } from "./source/_Erratum.js";
12
+ import { PublicationRefs } from "./source/_PublicationRef.js";
13
13
  /**
14
14
  * @title Profession
15
15
  */
@@ -294,6 +294,16 @@ export declare type ProfessionVariantTranslation = {
294
294
  * Name of the profession variant.
295
295
  */
296
296
  name: ProfessionName;
297
+ /**
298
+ * A text that replaces the generated text for the profession variant.
299
+ */
300
+ full_text?: NonEmptyString;
301
+ /**
302
+ * A text that is appended to the generated text for the profession variant.
303
+ *
304
+ * Has no effect when `full_text` is set.
305
+ */
306
+ concluding_text?: NonEmptyString;
297
307
  };
298
308
  export declare type SpecialAbility = {
299
309
  tag: "Fixed";
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * @main Talisman
3
3
  */
4
- import { Errata } from "./source/_Erratum.js";
5
- import { PublicationRefs } from "./source/_PublicationRef.js";
6
4
  import { LocaleMap } from "./_LocaleMap.js";
7
5
  import { NonEmptyMarkdown, NonEmptyString } from "./_NonEmptyString.js";
8
6
  import { BlessedTraditionReference } from "./_SimpleReferences.js";
7
+ import { Errata } from "./source/_Erratum.js";
8
+ import { PublicationRefs } from "./source/_PublicationRef.js";
9
9
  /**
10
10
  * @title Talisman
11
11
  */
@@ -22,16 +22,16 @@ export declare type Talisman = {
22
22
  */
23
23
  tradition: BlessedTraditionReference[];
24
24
  /**
25
- * The talisman type.
25
+ * The talisman type, if any.
26
26
  */
27
- type: TalismanType;
27
+ type?: TalismanType;
28
28
  /**
29
- * The AP value for the required trade secret.
29
+ * The AP value for the required trade secret, if possible.
30
30
  * @integer
31
31
  * @minimum 5
32
32
  * @multipleOf 5
33
33
  */
34
- ap_value: number;
34
+ ap_value?: number;
35
35
  src: PublicationRefs;
36
36
  /**
37
37
  * All translations for the entry, identified by IETF language tag (BCP47).
@@ -2,9 +2,6 @@
2
2
  * General type specifications used by multiple activatable entries.
3
3
  * @title Activatable
4
4
  */
5
- import { DisplayOption } from "./prerequisites/DisplayOption.js";
6
- import { Errata } from "./source/_Erratum.js";
7
- import { PublicationRefs } from "./source/_PublicationRef.js";
8
5
  import { SelectOptionCategory, SkillApplicationOrUse } from "./_ActivatableSelectOptionCategory.js";
9
6
  import { DurationUnitValue } from "./_ActivatableSkillDuration.js";
10
7
  import { MagicalTraditionIdentifier, PatronIdentifier, SkillIdentifier } from "./_Identifier.js";
@@ -14,6 +11,9 @@ import { NonEmptyMarkdown, NonEmptyString } from "./_NonEmptyString.js";
14
11
  import { GeneralPrerequisites } from "./_Prerequisite.js";
15
12
  import { ResponsiveText, ResponsiveTextOptional } from "./_ResponsiveText.js";
16
13
  import { AdvancedSpecialAbilityReference, AspectReference, CloseCombatTechniqueReference, CombatTechniqueReference, PropertyReference, RaceReference, RangedCombatTechniqueReference, SkillReference, WeaponReference } from "./_SimpleReferences.js";
14
+ import { DisplayOption } from "./prerequisites/DisplayOption.js";
15
+ import { Errata } from "./source/_Erratum.js";
16
+ import { PublicationRefs } from "./source/_PublicationRef.js";
17
17
  /**
18
18
  * The activatable entry's identifier. An unique, increasing integer.
19
19
  * @integer
@@ -124,6 +124,13 @@ export declare type ExplicitGeneralSelectOption = {
124
124
  */
125
125
  skill_uses?: SkillUses;
126
126
  prerequisites?: GeneralPrerequisites;
127
+ /**
128
+ * Specific binding cost for the select option. Only has an effect if the
129
+ * associated entry supports binding costs.
130
+ * @integer
131
+ * @minimum 0
132
+ */
133
+ binding_cost?: number;
127
134
  /**
128
135
  * Specific AP cost for the select option.
129
136
  * @integer
@@ -181,6 +188,13 @@ export declare type ExplicitSkillSelectOption = {
181
188
  */
182
189
  skill_uses?: SkillApplicationOrUse[];
183
190
  prerequisites?: GeneralPrerequisites;
191
+ /**
192
+ * Specific binding cost for the select option. Only has an effect if the
193
+ * associated entry supports binding costs.
194
+ * @integer
195
+ * @minimum 0
196
+ */
197
+ binding_cost?: number;
184
198
  /**
185
199
  * Specific AP cost for the select option.
186
200
  * @integer
@@ -205,6 +219,13 @@ export declare type ExplicitCombatTechniqueSelectOption = {
205
219
  */
206
220
  id: CombatTechniqueIdentifier;
207
221
  prerequisites?: GeneralPrerequisites;
222
+ /**
223
+ * Specific binding cost for the select option. Only has an effect if the
224
+ * associated entry supports binding costs.
225
+ * @integer
226
+ * @minimum 0
227
+ */
228
+ binding_cost?: number;
208
229
  /**
209
230
  * Specific AP cost for the select option.
210
231
  * @integer
@@ -649,11 +670,31 @@ export declare type ActivationAndHalfIntervalArcaneEnergyCost = {
649
670
  interval: DurationUnitValue;
650
671
  };
651
672
  export declare type IndefiniteArcaneEnergyCost = {
673
+ /**
674
+ * Specified if the indefinite AP cost description needs to be modified by a
675
+ * certain value.
676
+ */
677
+ modifier?: IndefiniteArcaneEnergyCostModifier;
652
678
  /**
653
679
  * All translations for the entry, identified by IETF language tag (BCP47).
654
680
  */
655
681
  translations: LocaleMap<IndefiniteArcaneEnergyCostTranslation>;
656
682
  };
683
+ export declare type IndefiniteArcaneEnergyCostModifier = {
684
+ /**
685
+ * The arithmetic how to apply the `value` to the `base`.
686
+ */
687
+ arithmetic: IndefiniteArcaneEnergyCostModifierArithmetic;
688
+ /**
689
+ * The value that is applied to the `base` using the defined `arithmetic`.
690
+ * @integer
691
+ * @minimum 1
692
+ */
693
+ value: number;
694
+ };
695
+ export declare enum IndefiniteArcaneEnergyCostModifierArithmetic {
696
+ Add = "Add"
697
+ }
657
698
  export declare type IndefiniteArcaneEnergyCostTranslation = {
658
699
  /**
659
700
  * A description of where the cost come from.
@@ -744,6 +785,9 @@ export declare type Volume = {
744
785
  } | {
745
786
  tag: "Map";
746
787
  map: VolumeMap;
788
+ } | {
789
+ tag: "DerivedFromSelection";
790
+ derived_from_selection: VolumeDerivedFromSelection;
747
791
  };
748
792
  export declare type FixedVolume = {
749
793
  /**
@@ -885,6 +929,14 @@ export declare type VolumeMapOptionTranslation = {
885
929
  */
886
930
  label_standalone?: NonEmptyString;
887
931
  };
932
+ export declare type VolumeDerivedFromSelection = {
933
+ /**
934
+ * The volume for the selection if it does not define a specific one.
935
+ * @integer
936
+ * @minimum 0
937
+ */
938
+ fallback: number;
939
+ };
888
940
  /**
889
941
  * The binding cost for an enchantment.
890
942
  */
@@ -897,6 +949,9 @@ export declare type BindingCost = {
897
949
  } | {
898
950
  tag: "Map";
899
951
  map: BindingCostMap;
952
+ } | {
953
+ tag: "DerivedFromSelection";
954
+ derived_from_selection: BindingCostDerivedFromSelection;
900
955
  };
901
956
  export declare type FixedBindingCost = {
902
957
  /**
@@ -998,6 +1053,14 @@ export declare type BindingCostMapOptionTranslation = {
998
1053
  */
999
1054
  label_standalone?: NonEmptyString;
1000
1055
  };
1056
+ export declare type BindingCostDerivedFromSelection = {
1057
+ /**
1058
+ * The binding cost for the selection if it does not define a specific one.
1059
+ * @integer
1060
+ * @minimum 0
1061
+ */
1062
+ fallback: number;
1063
+ };
1001
1064
  /**
1002
1065
  * The magic property's identifier. `DependingOnProperty` can only be used if
1003
1066
  * the special ability has an option to select a property.
@@ -1095,6 +1158,11 @@ export declare type AdvancedSpecialAbilities<Identifier> = [
1095
1158
  AdvancedSpecialAbility<Identifier>,
1096
1159
  AdvancedSpecialAbility<Identifier>
1097
1160
  ];
1161
+ /**
1162
+ * The prerequisites text. It is only used if the text cannot be generated from
1163
+ * the given information.
1164
+ */
1165
+ export declare type PrerequisitesReplacement = NonEmptyMarkdown;
1098
1166
  export declare type ApplicableCombatTechniques = {
1099
1167
  tag: "None";
1100
1168
  none: {};
@@ -1252,6 +1320,9 @@ export declare type AdventurePointsValue = {
1252
1320
  } | {
1253
1321
  tag: "ByLevel";
1254
1322
  by_level: AdventurePointsValueByLevel;
1323
+ } | {
1324
+ tag: "DerivedFromSelection";
1325
+ derived_from_selection: AdventurePointsDerivedFromSelection;
1255
1326
  } | {
1256
1327
  tag: "Indefinite";
1257
1328
  indefinite: {};
@@ -1267,9 +1338,46 @@ export declare type FixedAdventurePointsValue = AdventurePointsSingleValue;
1267
1338
  * @minItems 2
1268
1339
  */
1269
1340
  export declare type AdventurePointsValueByLevel = AdventurePointsSingleValue[];
1341
+ /**
1342
+ * The adventure points value is derived from the selection of the special
1343
+ * ability. Its display value may be able to be derived from the given
1344
+ * information for the select options. If that is not the case or the generated
1345
+ * text would not match the original one, a replacement text can be provided.
1346
+ */
1347
+ export declare type AdventurePointsDerivedFromSelection = {
1348
+ /**
1349
+ * All translations for the entry, identified by IETF language tag (BCP47).
1350
+ */
1351
+ translations?: LocaleMap<AdventurePointsDerivedFromSelectionTranslation>;
1352
+ };
1353
+ /**
1354
+ * @minProperties 1
1355
+ */
1356
+ export declare type AdventurePointsDerivedFromSelectionTranslation = {
1357
+ /**
1358
+ * A replacement for the generated text if it would not match the original
1359
+ * one.
1360
+ */
1361
+ replacement?: NonEmptyMarkdown;
1362
+ };
1270
1363
  /**
1271
1364
  * A single adventure points value.
1272
1365
  * @integer
1273
1366
  * @minimum 0
1274
1367
  */
1275
1368
  export declare type AdventurePointsSingleValue = number;
1369
+ /**
1370
+ * A string that is used as a label for an input field.
1371
+ */
1372
+ export declare type Input = NonEmptyString;
1373
+ /**
1374
+ * The AP value. It is only used if the text cannot be generated from the given
1375
+ * information.
1376
+ */
1377
+ export declare type AdventurePointsValueReplacement = NonEmptyMarkdown;
1378
+ /**
1379
+ * A string that gets appended to the default AP Value text with a preceding
1380
+ * space. This always happens if present, even if the generated AP Value text is
1381
+ * replaced.
1382
+ */
1383
+ export declare type AdventurePointsValueAppend = NonEmptyMarkdown;
@@ -38,38 +38,7 @@ export var FixedArcaneEnergyCostPerLevel;
38
38
  FixedArcaneEnergyCostPerLevel["Compressed"] = "Compressed";
39
39
  FixedArcaneEnergyCostPerLevel["Verbose"] = "Verbose";
40
40
  })(FixedArcaneEnergyCostPerLevel || (FixedArcaneEnergyCostPerLevel = {}));
41
- // "Input": {
42
- // "description": "A string that is used as a placeholder text for an input field.",
43
- // "type": "string",
44
- // "minLength": 1
45
- // },
46
- // "AdvancedSpecialAbilitiesAppend": {
47
- // "description": "An addition to the default advanced special abilities text. Markdown is available.",
48
- // "type": "string",
49
- // "minLength": 1
50
- // },
51
- // "ApValueReplacement": {
52
- // "description": "The AP value. Only use this if the text provides different information than `X adventure points`, e.g. for Special Ability Property Knowledge it is \"10 adventure points for the first *Property Knowledge*, 20 adventure points for the second, 40 adventure points for the third\". Markdown is available.",
53
- // "type": "string",
54
- // "minLength": 1
55
- // },
56
- // "ApValueAppend": {
57
- // "description": "An addition to the default AP value schema. Only use this if the text provides information appended to `X adventure points` and if `apValue` is not used. Markdown is available.",
58
- // "type": "string",
59
- // "minLength": 1
60
- // },
61
- // "PrerequisitesReplacement": {
62
- // "description": "Use if text cannot be generated by the app. Markdown is available.",
63
- // "type": "string",
64
- // "minLength": 1
65
- // },
66
- // "PrerequisitesStart": {
67
- // "description": "Prepends the provided string to the main prerequisites string. No effect if `prerequisites` field is used in l10n file. Markdown is available.",
68
- // "type": "string",
69
- // "minLength": 1
70
- // },
71
- // "PrerequisitesEnd": {
72
- // "description": "Appends the provided string to the main prerequisites string. No effect if `prerequisites` field is used in l10n table. Markdown is available.",
73
- // "type": "string",
74
- // "minLength": 1
75
- // }
41
+ export var IndefiniteArcaneEnergyCostModifierArithmetic;
42
+ (function (IndefiniteArcaneEnergyCostModifierArithmetic) {
43
+ IndefiniteArcaneEnergyCostModifierArithmetic["Add"] = "Add";
44
+ })(IndefiniteArcaneEnergyCostModifierArithmetic || (IndefiniteArcaneEnergyCostModifierArithmetic = {}));
@@ -1,3 +1,4 @@
1
+ import { TargetCategoryIdentifier } from "./_Identifier.js";
1
2
  import { ActivatableIdentifier, CombatTechniqueIdentifier, SkillIdentifier } from "./_IdentifierGroup.js";
2
3
  import { LocaleMap } from "./_LocaleMap.js";
3
4
  import { CeremonyReference, CloseCombatTechniqueReference, ElementReference, LiturgicalChantReference, RangedCombatTechniqueReference, RitualReference, SkillGroupReference, SpellReference } from "./_SimpleReferences.js";
@@ -31,6 +32,9 @@ export declare type SelectOptionCategory = {
31
32
  } | {
32
33
  tag: "Cultures";
33
34
  cultures: {};
35
+ } | {
36
+ tag: "RacesAndCultures";
37
+ races_and_cultures: {};
34
38
  } | {
35
39
  tag: "BlessedTraditions";
36
40
  blessed_traditions: BlessedTraditionsSelectOptionCategory;
@@ -58,6 +62,9 @@ export declare type SelectOptionCategory = {
58
62
  } | {
59
63
  tag: "CombatTechniques";
60
64
  combat_techniques: CombatTechniquesSelectOptionCategory;
65
+ } | {
66
+ tag: "TargetCategories";
67
+ target_categories: TargetCategoriesSelectOptionCategory;
61
68
  };
62
69
  export declare type BlessedTraditionsSelectOptionCategory = {
63
70
  /**
@@ -201,6 +208,10 @@ export declare type SkillSelectOptionCategoryCategory = {
201
208
  * @minItems 1
202
209
  */
203
210
  prerequisites?: SkillSelectOptionCategoryPrerequisite[];
211
+ /**
212
+ * Generate AP values for each entry.
213
+ */
214
+ ap_value?: AdventurePointsValue<CombatTechniqueIdentifier>;
204
215
  };
205
216
  export declare type CombatTechniquesSelectOptionCategory = {
206
217
  /**
@@ -357,3 +368,22 @@ export declare type FixedAdventurePointsValueMapping<Identifier> = {
357
368
  */
358
369
  ap_value: number;
359
370
  };
371
+ export declare type TargetCategoriesSelectOptionCategory = {
372
+ /**
373
+ * A list of combat technique categories.
374
+ * @minItems 1
375
+ */
376
+ list: SpecificTargetCategory[];
377
+ };
378
+ export declare type SpecificTargetCategory = {
379
+ /**
380
+ * The target category’s identifier.
381
+ */
382
+ id: TargetCategoryIdentifier;
383
+ /**
384
+ * The volume for this specific selection.
385
+ * @integer
386
+ * @minimum 0
387
+ */
388
+ volume?: number;
389
+ };
@@ -81,6 +81,9 @@ export declare type PoisonDuration = {
81
81
  } | {
82
82
  tag: "DiceBased";
83
83
  dice_based: DiceBasedPoisonTime;
84
+ } | {
85
+ tag: "Indefinite";
86
+ indefinite: IndefinitePoisonTime;
84
87
  };
85
88
  export declare type ConstantPoisonTime = {
86
89
  value: number;
@@ -93,8 +96,21 @@ export declare type DiceBasedPoisonTime = {
93
96
  export declare enum PoisonTimeUnit {
94
97
  CombatRounds = "CombatRounds",
95
98
  Minutes = "Minutes",
96
- Hours = "Hours"
99
+ Hours = "Hours",
100
+ Days = "Days"
97
101
  }
102
+ export declare type IndefinitePoisonTime = {
103
+ /**
104
+ * All translations for the entry, identified by IETF language tag (BCP47).
105
+ */
106
+ translations: LocaleMap<IndefinitePoisonTimeTranslation>;
107
+ };
108
+ export declare type IndefinitePoisonTimeTranslation = {
109
+ /**
110
+ * A description of the duration.
111
+ */
112
+ description: NonEmptyMarkdown;
113
+ };
98
114
  export declare type PoisonSourceType = {
99
115
  tag: "AnimalVenom";
100
116
  animal_venom: AnimalVenom;
@@ -119,6 +135,10 @@ export declare type AnimalVenom = {
119
135
  * @maximum 6
120
136
  */
121
137
  level: number;
138
+ /**
139
+ * If `false`, the poison cannot be extracted.
140
+ */
141
+ is_extractable?: false;
122
142
  };
123
143
  export declare type AlchemicalPoison = {
124
144
  /**
@@ -14,6 +14,7 @@ export var PoisonTimeUnit;
14
14
  PoisonTimeUnit["CombatRounds"] = "CombatRounds";
15
15
  PoisonTimeUnit["Minutes"] = "Minutes";
16
16
  PoisonTimeUnit["Hours"] = "Hours";
17
+ PoisonTimeUnit["Days"] = "Days";
17
18
  })(PoisonTimeUnit || (PoisonTimeUnit = {}));
18
19
  export var QualityLevelDemonicPoisonLevelSource;
19
20
  (function (QualityLevelDemonicPoisonLevelSource) {
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * @main Weapon
3
3
  */
4
- import { Errata } from "../../source/_Erratum.js";
5
- import { PublicationRefs } from "../../source/_PublicationRef.js";
6
4
  import { LocaleMap } from "../../_LocaleMap.js";
7
5
  import { NonEmptyMarkdown, NonEmptyString } from "../../_NonEmptyString.js";
8
6
  import { BlessedTraditionReference, CultureReference, MagicalTraditionReference, RaceReference } from "../../_SimpleReferences.js";
7
+ import { Errata } from "../../source/_Erratum.js";
8
+ import { PublicationRefs } from "../../source/_PublicationRef.js";
9
9
  import { Complexity, Cost, StructurePoints, Weight } from "./_Item.js";
10
10
  import { MeleeWeapon } from "./_MeleeWeapon.js";
11
11
  import { RangedWeapon } from "./_RangedWeapon.js";
@@ -142,8 +142,9 @@ export declare type WeaponUseValues = {
142
142
  /**
143
143
  * If the weapon is sanctified by a god and thus restricted to it's Blessed
144
144
  * Ones.
145
+ * @minItems 1
145
146
  */
146
- export declare type SanctifiedBy = BlessedTraditionReference;
147
+ export declare type SanctifiedBy = BlessedTraditionReference[];
147
148
  /**
148
149
  * Define if during character creation this weapon can only be bought by
149
150
  * characters of a specific race or culture.
@@ -14,14 +14,14 @@ export declare type ArmorType = {
14
14
  */
15
15
  id: number;
16
16
  /**
17
- * Each armor type has a *sturdiness rating*. The higher the rating, the more
18
- * durable the armor. Rolling higher than this rating during a sturdiness
17
+ * An armor type can have a *sturdiness rating*. The higher the rating, the
18
+ * more durable the armor. Rolling higher than this rating during a sturdiness
19
19
  * check means the armor receives one level of the new condition *Wear*.
20
20
  * @integer
21
21
  * @minimum 1
22
22
  * @msximum 20
23
23
  */
24
- sturdiness_rating: number;
24
+ sturdiness_rating?: number;
25
25
  /**
26
26
  * All translations for the entry, identified by IETF language tag (BCP47).
27
27
  */
@@ -1,5 +1,6 @@
1
1
  import { LocaleMap } from "../_LocaleMap.js";
2
2
  import { NonEmptyString } from "../_NonEmptyString.js";
3
+ import { SentenceType } from "./single/TextPrerequisite.js";
3
4
  /**
4
5
  * @title Display Option
5
6
  */
@@ -11,6 +12,19 @@ export declare type DisplayOption = {
11
12
  replace_with: ReplacementDisplayOption;
12
13
  };
13
14
  export declare type ReplacementDisplayOption = {
15
+ /**
16
+ * If the replacement text is a sentence or sentence-like fragment, this
17
+ * property ensures it is integrated into the prerequisite string correctly.
18
+ *
19
+ * A standalone sentence is connected to the previous prerequisite string with
20
+ * a period and a period is also added at the end of the sentence
21
+ * automatically, if it is not present. A connected sentence is connected to
22
+ * the previous prerequisite string with a semicolon and a period is not added
23
+ * to the end of the sentence. In this case, if there are prerequisites after
24
+ * this one, they will be connected using a semicolon again, unless a
25
+ * different punctuation mark is present at the end of the given text.
26
+ */
27
+ sentence_type?: SentenceType;
14
28
  /**
15
29
  * All translations for the entry, identified by IETF language tag (BCP47).
16
30
  */