optolith-database-schema 0.2.1 → 0.2.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.
package/CHANGELOG.md CHANGED
@@ -2,6 +2,42 @@
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.2.4](https://github.com/elyukai/optolith-database-schema/compare/v0.2.3...v0.2.4) (2022-03-30)
6
+
7
+
8
+ ### Features
9
+
10
+ * add actions as duration unit ([5e64e38](https://github.com/elyukai/optolith-database-schema/commit/5e64e38dbbcda2980bb70a2b1c1b8d01b3a31324))
11
+ * add cantrips as target category ([ac4cf38](https://github.com/elyukai/optolith-database-schema/commit/ac4cf380bc96ea20c214938fd96eca1af28b3952))
12
+ * add notes to tradition notes of cantrips ([7b37327](https://github.com/elyukai/optolith-database-schema/commit/7b373271312324064b0bac824511248d07f4ffbe))
13
+ * guild mages tradition can be noted as common for in general ([df175d1](https://github.com/elyukai/optolith-database-schema/commit/df175d1f523fb9f09c0e672b4bc71437763f34b1))
14
+ * remove compressed paramater description option ([7897b72](https://github.com/elyukai/optolith-database-schema/commit/7897b723258d97c1c71dcfef422821657c8efea2))
15
+
16
+
17
+ ### Bug Fixes
18
+
19
+ * compressed name should be optional ([7281f6a](https://github.com/elyukai/optolith-database-schema/commit/7281f6ae055588511dfdb4ebc186f5e492e823c8))
20
+ * cost needs to be required ([05fd208](https://github.com/elyukai/optolith-database-schema/commit/05fd2086642ee8781f1a33021f98333685234b50))
21
+
22
+ ### [0.2.3](https://github.com/elyukai/optolith-database-schema/compare/v0.2.2...v0.2.3) (2022-03-29)
23
+
24
+
25
+ ### Features
26
+
27
+ * allow dis-/advantages to not contribute to maximum AP value ([9e401d0](https://github.com/elyukai/optolith-database-schema/commit/9e401d0be40797a5758220233af6c162d1ce76fb))
28
+
29
+
30
+ ### Bug Fixes
31
+
32
+ * state prerequisite should have unique tag ([7710fd5](https://github.com/elyukai/optolith-database-schema/commit/7710fd538582b85cd67cb81b2f791774102d17db))
33
+
34
+ ### [0.2.2](https://github.com/elyukai/optolith-database-schema/compare/v0.2.1...v0.2.2) (2022-03-29)
35
+
36
+
37
+ ### Features
38
+
39
+ * add offset option for deriving AP value from improvement cost ([f556207](https://github.com/elyukai/optolith-database-schema/commit/f55620751b7a68383c74ba8c4256d11802ab99c7))
40
+
5
41
  ### [0.2.1](https://github.com/elyukai/optolith-database-schema/compare/v0.2.0...v0.2.1) (2022-03-29)
6
42
 
7
43
 
@@ -16,7 +16,7 @@ export declare type Advantage = {
16
16
  skill_uses?: Activatable.SkillUses;
17
17
  maximum?: Activatable.Maximum;
18
18
  prerequisites?: AdvantageDisadvantagePrerequisites;
19
- ap_value: Activatable.AdventurePointsValue;
19
+ ap_value: Activatable.AdventurePointsValueAdvantagesDisadvantages;
20
20
  /**
21
21
  * Does this advantage not count towards the maximum of AP to be spent
22
22
  * on advantages?
@@ -103,20 +103,9 @@ declare type PerformanceParameters = {
103
103
  [localeId: string]: {
104
104
  /**
105
105
  * A description of the duration.
106
+ * @minLength 1
106
107
  */
107
- description: {
108
- /**
109
- * The full description of the duration.
110
- * @minLength 1
111
- */
112
- default: string;
113
- /**
114
- * A compressed description of the duration for use in small areas
115
- * (e.g. on character sheet).
116
- * @minLength 1
117
- */
118
- compressed: string;
119
- };
108
+ description: string;
120
109
  };
121
110
  };
122
111
  };
@@ -188,9 +188,25 @@ export declare type CommonNote = {
188
188
  /**
189
189
  * The magical tradition's identifier.
190
190
  * @integer
191
- * @minimum 2
191
+ * @minimum 1
192
192
  */
193
193
  id: number;
194
+ /**
195
+ * All translations for the entry, identified by IETF language tag (BCP47).
196
+ * @minProperties 1
197
+ */
198
+ translations?: {
199
+ /**
200
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
201
+ */
202
+ [localeId: string]: {
203
+ /**
204
+ * A note, appended to the generated string in parenthesis.
205
+ * @minLength 1
206
+ */
207
+ note: string;
208
+ };
209
+ };
194
210
  };
195
211
  export declare const validateSchema: import("../validation/schema.js").TypeValidator<Cantrip>;
196
212
  export {};
@@ -14,7 +14,7 @@ export declare type Disadvantage = {
14
14
  select_options?: Activatable.SelectOptions;
15
15
  maximum?: Activatable.Maximum;
16
16
  prerequisites?: AdvantageDisadvantagePrerequisites;
17
- ap_value: Activatable.AdventurePointsValue;
17
+ ap_value: Activatable.AdventurePointsValueAdvantagesDisadvantages;
18
18
  /**
19
19
  * Does this disadvantage not count towards the maximum of AP to be granted by
20
20
  * disadvantages?
@@ -357,53 +357,53 @@ declare type CategoryOption = {
357
357
  /**
358
358
  * Generate AP values for each entry.
359
359
  */
360
- ap_value?: OptionSkillDeriveAdventurePointsValue<SkillIdentifier> | {
361
- tag: "CombatTechniques";
360
+ ap_value?: OptionSkillDeriveAdventurePointsValue<SkillIdentifier>;
361
+ } | {
362
+ tag: "CombatTechniques";
363
+ /**
364
+ * A list of combat technique categories.
365
+ * @minItems 1
366
+ */
367
+ categories: {
368
+ tag: CombatTechniqueCategory;
362
369
  /**
363
- * A list of combat technique categories.
364
- * @minItems 1
370
+ * Only include (`Intersection`) or exclude (`Difference`) specific
371
+ * entries.
365
372
  */
366
- categories: {
367
- tag: CombatTechniqueCategory;
368
- /**
369
- * Only include (`Intersection`) or exclude (`Difference`) specific
370
- * entries.
371
- */
372
- specific?: {
373
- operation: {
374
- tag: "Intersection";
375
- } | {
376
- tag: "Difference";
377
- };
378
- /**
379
- * The list of specific entries.
380
- * @minItems 1
381
- * @uniqueItems
382
- */
383
- list: {
384
- /**
385
- * The entry's identifier.
386
- * @integer
387
- * @minimum 1
388
- * @maximum 59
389
- */
390
- id: number;
391
- }[];
373
+ specific?: {
374
+ operation: {
375
+ tag: "Intersection";
376
+ } | {
377
+ tag: "Difference";
392
378
  };
393
379
  /**
394
- * Generate prerequisites for each entry of the category.
380
+ * The list of specific entries.
395
381
  * @minItems 1
382
+ * @uniqueItems
396
383
  */
397
- prerequisites?: (OptionSkillSelfPrerequisite | OptionOptionPrerequisite)[];
398
- }[];
384
+ list: {
385
+ /**
386
+ * The entry's identifier.
387
+ * @integer
388
+ * @minimum 1
389
+ * @maximum 59
390
+ */
391
+ id: number;
392
+ }[];
393
+ };
399
394
  /**
400
- * Generate AP values for each entry.
395
+ * Generate prerequisites for each entry of the category.
396
+ * @minItems 1
401
397
  */
402
- ap_value?: OptionSkillDeriveAdventurePointsValue<CombatTechniqueIdentifier>;
403
- };
398
+ prerequisites?: (OptionSkillSelfPrerequisite | OptionOptionPrerequisite)[];
399
+ }[];
400
+ /**
401
+ * Generate AP values for each entry.
402
+ */
403
+ ap_value?: OptionSkillDeriveAdventurePointsValue<CombatTechniqueIdentifier>;
404
404
  };
405
405
  declare enum SkillWithEnhancementsCategory {
406
- spells = "spells",
406
+ Spells = "Spells",
407
407
  Rituals = "Rituals",
408
408
  LiturgicalChants = "LiturgicalChants",
409
409
  Ceremonies = "Ceremonies"
@@ -445,14 +445,27 @@ declare type OptionOptionPrerequisite = {
445
445
  * Generate AP values for each entry.
446
446
  */
447
447
  declare type OptionSkillDeriveAdventurePointsValue<Identifier> = {
448
+ /**
449
+ * Derive the cost from the improvement cost of each entry.
450
+ *
451
+ * AP Value = Improvement Cost × `multiplier` + `offset`
452
+ */
448
453
  tag: "DerivedFromImprovementCost";
449
454
  /**
450
455
  * This number is multiplied with the improvement cost of the entry
451
456
  * (A = 1 to D = 4).
452
457
  * @integer
453
458
  * @minimum 2
459
+ * @default 1
454
460
  */
455
461
  multiplier?: number;
462
+ /**
463
+ * This number is added to the maybe multiplied improvement cost of the
464
+ * entry.
465
+ * @integer
466
+ * @default 0
467
+ */
468
+ offset?: number;
456
469
  } | {
457
470
  tag: "Fixed";
458
471
  /**
@@ -1801,25 +1814,49 @@ export declare type AdventurePointsValue = {
1801
1814
  */
1802
1815
  values: AdventurePointsSingleValue[];
1803
1816
  } | {
1804
- tag: "ByImprovementCost";
1805
1817
  /**
1806
- * An entry with a selection of skills may have different costs for
1807
- * different improvement costs of the selected skill.
1808
- *
1809
- * If the select options will not have entries with improvement cost A
1810
- * (combat techniques only), you may leave out A.
1811
- */
1812
- values: {
1813
- A?: AdventurePointsSingleValue;
1814
- B: AdventurePointsSingleValue;
1815
- C: AdventurePointsSingleValue;
1816
- D: AdventurePointsSingleValue;
1817
- };
1818
+ * Used if AP value is defined by the selected option(s) or special rules.
1819
+ */
1820
+ tag: "Indefinite";
1821
+ };
1822
+ export declare type AdventurePointsValueAdvantagesDisadvantages = {
1823
+ tag: "Fixed";
1824
+ /**
1825
+ * A fixed adventure points value. If the entry has levels, this is the cost
1826
+ * for each level as well.
1827
+ */
1828
+ value: AdventurePointsSingleValue;
1829
+ /**
1830
+ * The AP Value of the entry does not contribute to the AP maximum for
1831
+ * advantages or disadvantages, so it may also be bought if the maximum has
1832
+ * already been reached.
1833
+ */
1834
+ does_not_contribute_to_maximum?: true;
1835
+ } | {
1836
+ tag: "ByLevel";
1837
+ /**
1838
+ * An entry with levels may have different costs for each level. The length
1839
+ * of the list must match the amount of levels the special ability has.
1840
+ * @minItems 2
1841
+ */
1842
+ values: AdventurePointsSingleValue[];
1843
+ /**
1844
+ * The AP Value of the entry does not contribute to the AP maximum for
1845
+ * advantages or disadvantages, so it may also be bought if the maximum has
1846
+ * already been reached.
1847
+ */
1848
+ does_not_contribute_to_maximum?: true;
1818
1849
  } | {
1819
1850
  /**
1820
1851
  * Used if AP value is defined by the selected option(s) or special rules.
1821
1852
  */
1822
1853
  tag: "Indefinite";
1854
+ /**
1855
+ * The AP Value of the entry does not contribute to the AP maximum for
1856
+ * advantages or disadvantages, so it may also be bought if the maximum has
1857
+ * already been reached.
1858
+ */
1859
+ does_not_contribute_to_maximum?: true;
1823
1860
  };
1824
1861
  /**
1825
1862
  * A single adventure points value.
@@ -4,7 +4,7 @@
4
4
  */
5
5
  var SkillWithEnhancementsCategory;
6
6
  (function (SkillWithEnhancementsCategory) {
7
- SkillWithEnhancementsCategory["spells"] = "spells";
7
+ SkillWithEnhancementsCategory["Spells"] = "Spells";
8
8
  SkillWithEnhancementsCategory["Rituals"] = "Rituals";
9
9
  SkillWithEnhancementsCategory["LiturgicalChants"] = "LiturgicalChants";
10
10
  SkillWithEnhancementsCategory["Ceremonies"] = "Ceremonies";
@@ -963,6 +963,7 @@ export declare namespace Duration {
963
963
  Months = "Months",
964
964
  Years = "Years",
965
965
  Centuries = "Centuries",
966
+ Actions = "Actions",
966
967
  CombatRounds = "CombatRounds"
967
968
  }
968
969
  type UnitValue = {
@@ -1012,6 +1013,8 @@ export declare namespace TargetCategory {
1012
1013
  tag: "Zone";
1013
1014
  } | {
1014
1015
  tag: "LiturgicalChantsAndCeremonies";
1016
+ } | {
1017
+ tag: "Cantrips";
1015
1018
  } | {
1016
1019
  tag: "Predefined";
1017
1020
  /**
@@ -29,6 +29,7 @@ export var Duration;
29
29
  Unit["Months"] = "Months";
30
30
  Unit["Years"] = "Years";
31
31
  Unit["Centuries"] = "Centuries";
32
+ Unit["Actions"] = "Actions";
32
33
  Unit["CombatRounds"] = "CombatRounds";
33
34
  })(Unit = Duration.Unit || (Duration.Unit = {}));
34
35
  })(Duration || (Duration = {}));
@@ -5,7 +5,7 @@ import { DisplayOption } from "../DisplayOption.js";
5
5
  * @title State Prerequisite
6
6
  */
7
7
  export declare type StatePrerequisite = {
8
- tag: "Culture";
8
+ tag: "State";
9
9
  id: OneOrManyNumericIdentifiers;
10
10
  display_option?: DisplayOption;
11
11
  };
@@ -3,7 +3,7 @@
3
3
  * background information – or the referenced entities were not made available
4
4
  * for use yet – e.g. races –, but which should be displayed, because it is part
5
5
  * of the prerequisite string from the sources.
6
- * @title Impossible Prerequisite
6
+ * @title Text Prerequisite
7
7
  */
8
8
  export declare type TextPrerequisite = {
9
9
  tag: "Text";
@@ -147,7 +147,7 @@ export declare type BlessedTradition = {
147
147
  * descriptions.
148
148
  * @minLength 1
149
149
  */
150
- name_compressed: string;
150
+ name_compressed?: string;
151
151
  name_in_library?: Activatable.NameInLibrary;
152
152
  /**
153
153
  * The special rules of the tradition. They should be sorted like they are
@@ -15,7 +15,7 @@ export declare type AttireEnchantment = {
15
15
  maximum?: Activatable.Maximum;
16
16
  prerequisites?: GeneralPrerequisites;
17
17
  volume: Activatable.Volume;
18
- cost?: Activatable.EnchantmentCost;
18
+ cost: Activatable.EnchantmentCost;
19
19
  property: Activatable.Property;
20
20
  ap_value: Activatable.AdventurePointsValue;
21
21
  src: PublicationRefs;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "optolith-database-schema",
3
- "version": "0.2.1",
3
+ "version": "0.2.4",
4
4
  "description": "Definitions and utilities for the flat-file database of Optolith, a character creation tool for the Pen and Paper RPG “The Dark Eye 5”, and its external integrations into other software.",
5
5
  "keywords": [
6
6
  "tde",
@@ -29,7 +29,7 @@
29
29
  "$ref": "./_Prerequisite.schema.json#/definitions/AdvantageDisadvantagePrerequisites"
30
30
  },
31
31
  "ap_value": {
32
- "$ref": "./_Activatable.schema.json#/definitions/AdventurePointsValue"
32
+ "$ref": "./_Activatable.schema.json#/definitions/AdventurePointsValueAdvantagesDisadvantages"
33
33
  },
34
34
  "has_no_maximum_spent_influence": {
35
35
  "description": "Does this advantage not count towards the maximum of AP to be spent\non advantages?",
@@ -178,24 +178,8 @@
178
178
  "properties": {
179
179
  "description": {
180
180
  "description": "A description of the duration.",
181
- "type": "object",
182
- "properties": {
183
- "default": {
184
- "description": "The full description of the duration.",
185
- "type": "string",
186
- "minLength": 1
187
- },
188
- "compressed": {
189
- "description": "A compressed description of the duration for use in small areas\n(e.g. on character sheet).",
190
- "type": "string",
191
- "minLength": 1
192
- }
193
- },
194
- "required": [
195
- "default",
196
- "compressed"
197
- ],
198
- "additionalProperties": false
181
+ "type": "string",
182
+ "minLength": 1
199
183
  }
200
184
  },
201
185
  "required": [
@@ -347,7 +347,29 @@
347
347
  "id": {
348
348
  "description": "The magical tradition's identifier.",
349
349
  "type": "integer",
350
- "minimum": 2
350
+ "minimum": 1
351
+ },
352
+ "translations": {
353
+ "description": "All translations for the entry, identified by IETF language tag (BCP47).",
354
+ "type": "object",
355
+ "patternProperties": {
356
+ "^[a-z]{2}-[A-Z]{2}$": {
357
+ "type": "object",
358
+ "properties": {
359
+ "note": {
360
+ "description": "A note, appended to the generated string in parenthesis.",
361
+ "type": "string",
362
+ "minLength": 1
363
+ }
364
+ },
365
+ "required": [
366
+ "note"
367
+ ],
368
+ "additionalProperties": false
369
+ }
370
+ },
371
+ "minProperties": 1,
372
+ "additionalProperties": false
351
373
  }
352
374
  },
353
375
  "required": [
@@ -23,7 +23,7 @@
23
23
  "$ref": "./_Prerequisite.schema.json#/definitions/AdvantageDisadvantagePrerequisites"
24
24
  },
25
25
  "ap_value": {
26
- "$ref": "./_Activatable.schema.json#/definitions/AdventurePointsValue"
26
+ "$ref": "./_Activatable.schema.json#/definitions/AdventurePointsValueAdvantagesDisadvantages"
27
27
  },
28
28
  "has_no_maximum_spent_influence": {
29
29
  "description": "Does this disadvantage not count towards the maximum of AP to be granted by\ndisadvantages?",
@@ -644,233 +644,238 @@
644
644
  "description": "Generate AP values for each entry.",
645
645
  "oneOf": [
646
646
  {
647
- "description": "Generate AP values for each entry.",
648
- "oneOf": [
649
- {
650
- "type": "object",
651
- "properties": {
652
- "tag": {
653
- "const": "DerivedFromImprovementCost"
654
- },
655
- "multiplier": {
656
- "description": "This number is multiplied with the improvement cost of the entry\n(A = 1 to D = 4).",
657
- "type": "integer",
658
- "minimum": 2
659
- }
660
- },
661
- "required": [
662
- "tag"
663
- ],
664
- "additionalProperties": false
647
+ "type": "object",
648
+ "properties": {
649
+ "tag": {
650
+ "description": "Derive the cost from the improvement cost of each entry.\n\nAP Value = Improvement Cost × `multiplier` + `offset`",
651
+ "const": "DerivedFromImprovementCost"
665
652
  },
666
- {
667
- "type": "object",
668
- "properties": {
669
- "tag": {
670
- "const": "Fixed"
671
- },
672
- "map": {
673
- "description": "A mapping of skill identifiers to their specific AP values.",
674
- "type": "array",
675
- "items": {
676
- "type": "object",
677
- "properties": {
678
- "id": {
679
- "$ref": "./_Identifier.schema.json#/definitions/SkillIdentifier"
680
- },
681
- "ap_value": {
682
- "description": "The AP value for the specified entry.",
683
- "type": "integer",
684
- "minimum": 1
685
- }
686
- },
687
- "required": [
688
- "id",
689
- "ap_value"
690
- ],
691
- "additionalProperties": false
692
- }
693
- },
694
- "default": {
695
- "description": "The default value of an entry. Used as a fallback if no value is\nfound in `list`.",
696
- "type": "integer",
697
- "minimum": 1
698
- }
699
- },
700
- "required": [
701
- "tag",
702
- "map",
703
- "default"
704
- ],
705
- "additionalProperties": false
653
+ "multiplier": {
654
+ "description": "This number is multiplied with the improvement cost of the entry\n(A = 1 to D = 4).",
655
+ "type": "integer",
656
+ "minimum": 2
657
+ },
658
+ "offset": {
659
+ "description": "This number is added to the maybe multiplied improvement cost of the\nentry.",
660
+ "type": "integer"
706
661
  }
707
- ]
662
+ },
663
+ "required": [
664
+ "tag"
665
+ ],
666
+ "additionalProperties": false
708
667
  },
709
668
  {
710
669
  "type": "object",
711
670
  "properties": {
712
671
  "tag": {
713
- "const": "CombatTechniques"
672
+ "const": "Fixed"
714
673
  },
715
- "categories": {
716
- "description": "A list of combat technique categories.",
674
+ "map": {
675
+ "description": "A mapping of skill identifiers to their specific AP values.",
717
676
  "type": "array",
718
677
  "items": {
719
678
  "type": "object",
720
679
  "properties": {
721
- "tag": {
722
- "$ref": "#/definitions/CombatTechniqueCategory"
680
+ "id": {
681
+ "$ref": "./_Identifier.schema.json#/definitions/SkillIdentifier"
723
682
  },
724
- "specific": {
725
- "description": "Only include (`Intersection`) or exclude (`Difference`) specific\nentries.",
683
+ "ap_value": {
684
+ "description": "The AP value for the specified entry.",
685
+ "type": "integer",
686
+ "minimum": 1
687
+ }
688
+ },
689
+ "required": [
690
+ "id",
691
+ "ap_value"
692
+ ],
693
+ "additionalProperties": false
694
+ }
695
+ },
696
+ "default": {
697
+ "description": "The default value of an entry. Used as a fallback if no value is\nfound in `list`.",
698
+ "type": "integer",
699
+ "minimum": 1
700
+ }
701
+ },
702
+ "required": [
703
+ "tag",
704
+ "map",
705
+ "default"
706
+ ],
707
+ "additionalProperties": false
708
+ }
709
+ ]
710
+ }
711
+ },
712
+ "required": [
713
+ "tag",
714
+ "categories"
715
+ ],
716
+ "additionalProperties": false
717
+ },
718
+ {
719
+ "type": "object",
720
+ "properties": {
721
+ "tag": {
722
+ "const": "CombatTechniques"
723
+ },
724
+ "categories": {
725
+ "description": "A list of combat technique categories.",
726
+ "type": "array",
727
+ "items": {
728
+ "type": "object",
729
+ "properties": {
730
+ "tag": {
731
+ "$ref": "#/definitions/CombatTechniqueCategory"
732
+ },
733
+ "specific": {
734
+ "description": "Only include (`Intersection`) or exclude (`Difference`) specific\nentries.",
735
+ "type": "object",
736
+ "properties": {
737
+ "operation": {
738
+ "oneOf": [
739
+ {
726
740
  "type": "object",
727
741
  "properties": {
728
- "operation": {
729
- "oneOf": [
730
- {
731
- "type": "object",
732
- "properties": {
733
- "tag": {
734
- "const": "Intersection"
735
- }
736
- },
737
- "required": [
738
- "tag"
739
- ],
740
- "additionalProperties": false
741
- },
742
- {
743
- "type": "object",
744
- "properties": {
745
- "tag": {
746
- "const": "Difference"
747
- }
748
- },
749
- "required": [
750
- "tag"
751
- ],
752
- "additionalProperties": false
753
- }
754
- ]
755
- },
756
- "list": {
757
- "description": "The list of specific entries.",
758
- "type": "array",
759
- "items": {
760
- "type": "object",
761
- "properties": {
762
- "id": {
763
- "description": "The entry's identifier.",
764
- "type": "integer",
765
- "maximum": 59,
766
- "minimum": 1
767
- }
768
- },
769
- "required": [
770
- "id"
771
- ],
772
- "additionalProperties": false
773
- },
774
- "minItems": 1,
775
- "uniqueItems": true
742
+ "tag": {
743
+ "const": "Intersection"
776
744
  }
777
745
  },
778
746
  "required": [
779
- "operation",
780
- "list"
747
+ "tag"
781
748
  ],
782
749
  "additionalProperties": false
783
750
  },
784
- "prerequisites": {
785
- "description": "Generate prerequisites for each entry of the category.",
786
- "type": "array",
787
- "items": {
788
- "oneOf": [
789
- {
790
- "$ref": "#/definitions/OptionSkillSelfPrerequisite"
791
- },
792
- {
793
- "$ref": "#/definitions/OptionOptionPrerequisite"
794
- }
795
- ]
751
+ {
752
+ "type": "object",
753
+ "properties": {
754
+ "tag": {
755
+ "const": "Difference"
756
+ }
796
757
  },
797
- "minItems": 1
758
+ "required": [
759
+ "tag"
760
+ ],
761
+ "additionalProperties": false
798
762
  }
799
- },
800
- "required": [
801
- "tag"
802
- ],
803
- "additionalProperties": false
763
+ ]
804
764
  },
805
- "minItems": 1
806
- },
807
- "ap_value": {
808
- "description": "Generate AP values for each entry.",
809
- "oneOf": [
810
- {
765
+ "list": {
766
+ "description": "The list of specific entries.",
767
+ "type": "array",
768
+ "items": {
811
769
  "type": "object",
812
770
  "properties": {
813
- "tag": {
814
- "const": "DerivedFromImprovementCost"
815
- },
816
- "multiplier": {
817
- "description": "This number is multiplied with the improvement cost of the entry\n(A = 1 to D = 4).",
771
+ "id": {
772
+ "description": "The entry's identifier.",
818
773
  "type": "integer",
819
- "minimum": 2
774
+ "maximum": 59,
775
+ "minimum": 1
820
776
  }
821
777
  },
822
778
  "required": [
823
- "tag"
779
+ "id"
824
780
  ],
825
781
  "additionalProperties": false
826
782
  },
783
+ "minItems": 1,
784
+ "uniqueItems": true
785
+ }
786
+ },
787
+ "required": [
788
+ "operation",
789
+ "list"
790
+ ],
791
+ "additionalProperties": false
792
+ },
793
+ "prerequisites": {
794
+ "description": "Generate prerequisites for each entry of the category.",
795
+ "type": "array",
796
+ "items": {
797
+ "oneOf": [
798
+ {
799
+ "$ref": "#/definitions/OptionSkillSelfPrerequisite"
800
+ },
827
801
  {
828
- "type": "object",
829
- "properties": {
830
- "tag": {
831
- "const": "Fixed"
832
- },
833
- "map": {
834
- "description": "A mapping of skill identifiers to their specific AP values.",
835
- "type": "array",
836
- "items": {
837
- "type": "object",
838
- "properties": {
839
- "id": {
840
- "$ref": "./_Identifier.schema.json#/definitions/CombatTechniqueIdentifier"
841
- },
842
- "ap_value": {
843
- "description": "The AP value for the specified entry.",
844
- "type": "integer",
845
- "minimum": 1
846
- }
847
- },
848
- "required": [
849
- "id",
850
- "ap_value"
851
- ],
852
- "additionalProperties": false
853
- }
854
- },
855
- "default": {
856
- "description": "The default value of an entry. Used as a fallback if no value is\nfound in `list`.",
857
- "type": "integer",
858
- "minimum": 1
859
- }
860
- },
861
- "required": [
862
- "tag",
863
- "map",
864
- "default"
865
- ],
866
- "additionalProperties": false
802
+ "$ref": "#/definitions/OptionOptionPrerequisite"
867
803
  }
868
804
  ]
805
+ },
806
+ "minItems": 1
807
+ }
808
+ },
809
+ "required": [
810
+ "tag"
811
+ ],
812
+ "additionalProperties": false
813
+ },
814
+ "minItems": 1
815
+ },
816
+ "ap_value": {
817
+ "description": "Generate AP values for each entry.",
818
+ "oneOf": [
819
+ {
820
+ "type": "object",
821
+ "properties": {
822
+ "tag": {
823
+ "description": "Derive the cost from the improvement cost of each entry.\n\nAP Value = Improvement Cost × `multiplier` + `offset`",
824
+ "const": "DerivedFromImprovementCost"
825
+ },
826
+ "multiplier": {
827
+ "description": "This number is multiplied with the improvement cost of the entry\n(A = 1 to D = 4).",
828
+ "type": "integer",
829
+ "minimum": 2
830
+ },
831
+ "offset": {
832
+ "description": "This number is added to the maybe multiplied improvement cost of the\nentry.",
833
+ "type": "integer"
834
+ }
835
+ },
836
+ "required": [
837
+ "tag"
838
+ ],
839
+ "additionalProperties": false
840
+ },
841
+ {
842
+ "type": "object",
843
+ "properties": {
844
+ "tag": {
845
+ "const": "Fixed"
846
+ },
847
+ "map": {
848
+ "description": "A mapping of skill identifiers to their specific AP values.",
849
+ "type": "array",
850
+ "items": {
851
+ "type": "object",
852
+ "properties": {
853
+ "id": {
854
+ "$ref": "./_Identifier.schema.json#/definitions/CombatTechniqueIdentifier"
855
+ },
856
+ "ap_value": {
857
+ "description": "The AP value for the specified entry.",
858
+ "type": "integer",
859
+ "minimum": 1
860
+ }
861
+ },
862
+ "required": [
863
+ "id",
864
+ "ap_value"
865
+ ],
866
+ "additionalProperties": false
867
+ }
868
+ },
869
+ "default": {
870
+ "description": "The default value of an entry. Used as a fallback if no value is\nfound in `list`.",
871
+ "type": "integer",
872
+ "minimum": 1
869
873
  }
870
874
  },
871
875
  "required": [
872
876
  "tag",
873
- "categories"
877
+ "map",
878
+ "default"
874
879
  ],
875
880
  "additionalProperties": false
876
881
  }
@@ -887,7 +892,7 @@
887
892
  },
888
893
  "SkillWithEnhancementsCategory": {
889
894
  "enum": [
890
- "spells",
895
+ "Spells",
891
896
  "Rituals",
892
897
  "LiturgicalChants",
893
898
  "Ceremonies"
@@ -3323,31 +3328,57 @@
3323
3328
  "type": "object",
3324
3329
  "properties": {
3325
3330
  "tag": {
3326
- "const": "ByImprovementCost"
3331
+ "description": "Used if AP value is defined by the selected option(s) or special rules.",
3332
+ "const": "Indefinite"
3333
+ }
3334
+ },
3335
+ "required": [
3336
+ "tag"
3337
+ ],
3338
+ "additionalProperties": false
3339
+ }
3340
+ ]
3341
+ },
3342
+ "AdventurePointsValueAdvantagesDisadvantages": {
3343
+ "oneOf": [
3344
+ {
3345
+ "type": "object",
3346
+ "properties": {
3347
+ "tag": {
3348
+ "const": "Fixed"
3349
+ },
3350
+ "value": {
3351
+ "description": "A fixed adventure points value. If the entry has levels, this is the cost\nfor each level as well.",
3352
+ "$ref": "#/definitions/AdventurePointsSingleValue"
3353
+ },
3354
+ "does_not_contribute_to_maximum": {
3355
+ "description": "The AP Value of the entry does not contribute to the AP maximum for\nadvantages or disadvantages, so it may also be bought if the maximum has\nalready been reached.",
3356
+ "const": true
3357
+ }
3358
+ },
3359
+ "required": [
3360
+ "tag",
3361
+ "value"
3362
+ ],
3363
+ "additionalProperties": false
3364
+ },
3365
+ {
3366
+ "type": "object",
3367
+ "properties": {
3368
+ "tag": {
3369
+ "const": "ByLevel"
3327
3370
  },
3328
3371
  "values": {
3329
- "description": "An entry with a selection of skills may have different costs for\ndifferent improvement costs of the selected skill.\n\nIf the select options will not have entries with improvement cost A\n(combat techniques only), you may leave out A.",
3330
- "type": "object",
3331
- "properties": {
3332
- "A": {
3333
- "$ref": "#/definitions/AdventurePointsSingleValue"
3334
- },
3335
- "B": {
3336
- "$ref": "#/definitions/AdventurePointsSingleValue"
3337
- },
3338
- "C": {
3339
- "$ref": "#/definitions/AdventurePointsSingleValue"
3340
- },
3341
- "D": {
3342
- "$ref": "#/definitions/AdventurePointsSingleValue"
3343
- }
3372
+ "description": "An entry with levels may have different costs for each level. The length\nof the list must match the amount of levels the special ability has.",
3373
+ "type": "array",
3374
+ "items": {
3375
+ "$ref": "#/definitions/AdventurePointsSingleValue"
3344
3376
  },
3345
- "required": [
3346
- "B",
3347
- "C",
3348
- "D"
3349
- ],
3350
- "additionalProperties": false
3377
+ "minItems": 2
3378
+ },
3379
+ "does_not_contribute_to_maximum": {
3380
+ "description": "The AP Value of the entry does not contribute to the AP maximum for\nadvantages or disadvantages, so it may also be bought if the maximum has\nalready been reached.",
3381
+ "const": true
3351
3382
  }
3352
3383
  },
3353
3384
  "required": [
@@ -3362,6 +3393,10 @@
3362
3393
  "tag": {
3363
3394
  "description": "Used if AP value is defined by the selected option(s) or special rules.",
3364
3395
  "const": "Indefinite"
3396
+ },
3397
+ "does_not_contribute_to_maximum": {
3398
+ "description": "The AP Value of the entry does not contribute to the AP maximum for\nadvantages or disadvantages, so it may also be bought if the maximum has\nalready been reached.",
3399
+ "const": true
3365
3400
  }
3366
3401
  },
3367
3402
  "required": [
@@ -1600,6 +1600,7 @@
1600
1600
  "Months",
1601
1601
  "Years",
1602
1602
  "Centuries",
1603
+ "Actions",
1603
1604
  "CombatRounds"
1604
1605
  ]
1605
1606
  },
@@ -1729,6 +1730,18 @@
1729
1730
  ],
1730
1731
  "additionalProperties": false
1731
1732
  },
1733
+ {
1734
+ "type": "object",
1735
+ "properties": {
1736
+ "tag": {
1737
+ "const": "Cantrips"
1738
+ }
1739
+ },
1740
+ "required": [
1741
+ "tag"
1742
+ ],
1743
+ "additionalProperties": false
1744
+ },
1732
1745
  {
1733
1746
  "type": "object",
1734
1747
  "properties": {
@@ -8,7 +8,7 @@
8
8
  "type": "object",
9
9
  "properties": {
10
10
  "tag": {
11
- "const": "Culture"
11
+ "const": "State"
12
12
  },
13
13
  "id": {
14
14
  "$ref": "../../_Identifier.schema.json#/definitions/OneOrManyNumericIdentifiers"
@@ -3,7 +3,7 @@
3
3
  "$id": "/prerequisites/single/TextPrerequisite.schema.json",
4
4
  "definitions": {
5
5
  "TextPrerequisite": {
6
- "title": "Impossible Prerequisite",
6
+ "title": "Text Prerequisite",
7
7
  "description": "A prerequisite that is either not verifyable in general – e.g. roleplay or\nbackground information – or the referenced entities were not made available\nfor use yet – e.g. races –, but which should be displayed, because it is part\nof the prerequisite string from the sources.",
8
8
  "type": "object",
9
9
  "properties": {
@@ -282,7 +282,6 @@
282
282
  },
283
283
  "required": [
284
284
  "name",
285
- "name_compressed",
286
285
  "special_rules"
287
286
  ],
288
287
  "additionalProperties": false
@@ -81,6 +81,7 @@
81
81
  "required": [
82
82
  "id",
83
83
  "volume",
84
+ "cost",
84
85
  "property",
85
86
  "ap_value",
86
87
  "src",