optolith-database-schema 0.1.27 → 0.2.1

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.
@@ -32,12 +32,8 @@
32
32
  "type": "object",
33
33
  "properties": {
34
34
  "derived": {
35
- "description": "A list of categories with optional further configuration. All available\nentries from the specified categories will be included as separate select\noptions. You can also specify a set of groups that should only be\nincluded. Groups not mentioned will be excluded then.",
36
- "type": "array",
37
- "items": {
38
- "$ref": "#/definitions/CategoryOption"
39
- },
40
- "minItems": 1
35
+ "description": "An entry category with optional further configuration. All available\nentries from the specified categories will be included as separate select\noptions. You can also specify a set of groups that should only be\nincluded. Groups not mentioned will be excluded then.",
36
+ "$ref": "#/definitions/CategoryOption"
41
37
  },
42
38
  "explicit": {
43
39
  "description": "A list of explicit select options. If the identifier has a specific type,\nits entry is the base of this select option, where values defined here\noverride values from the base. Define the `src` property if the options\nare not derived from the rules text of the advantage/disadvantage/special\nability but instead are listed in a separate block and/or on a separate\npage.",
@@ -359,210 +355,307 @@
359
355
  "tag": {
360
356
  "const": "Skills"
361
357
  },
362
- "groups": {
363
- "description": "Only include entries of the specified groups.",
358
+ "categories": {
359
+ "description": "A list of skill categories.",
364
360
  "type": "array",
365
361
  "items": {
366
- "type": "object",
367
- "properties": {
368
- "id": {
369
- "description": "The skill group's identifier.",
370
- "type": "integer",
371
- "maximum": 5,
372
- "minimum": 1
373
- }
374
- },
375
- "required": [
376
- "id"
377
- ],
378
- "additionalProperties": false
379
- },
380
- "minItems": 1
381
- },
382
- "specific": {
383
- "description": "Only include (`Intersection`) or exclude (`Difference`) specific skills.",
384
- "type": "object",
385
- "properties": {
386
- "operation": {
387
- "oneOf": [
388
- {
389
- "type": "object",
390
- "properties": {
391
- "tag": {
392
- "const": "Intersection"
393
- }
394
- },
395
- "required": [
396
- "tag"
397
- ],
398
- "additionalProperties": false
399
- },
400
- {
401
- "type": "object",
402
- "properties": {
403
- "tag": {
404
- "const": "Difference"
405
- }
406
- },
407
- "required": [
408
- "tag"
409
- ],
410
- "additionalProperties": false
411
- }
412
- ]
413
- },
414
- "list": {
415
- "description": "The list of specific skills.",
416
- "type": "array",
417
- "items": {
362
+ "oneOf": [
363
+ {
418
364
  "type": "object",
419
365
  "properties": {
420
- "id": {
421
- "description": "The skill's identifier.",
422
- "type": "integer",
423
- "maximum": 59,
424
- "minimum": 1
425
- }
426
- },
427
- "required": [
428
- "id"
429
- ],
430
- "additionalProperties": false
431
- },
432
- "minItems": 1,
433
- "uniqueItems": true
434
- }
435
- },
436
- "required": [
437
- "operation",
438
- "list"
439
- ],
440
- "additionalProperties": false
441
- },
442
- "skill_applications": {
443
- "description": "Registers new applications, which get enabled once this entry is\nactivated with its respective select option. It specifies an entry-unique\nidentifier, the skill it belongs to is derived from the select option\nautomatically. A translation can be left out if its name equals the name\nof the origin entry.",
444
- "type": "array",
445
- "items": {
446
- "type": "object",
447
- "properties": {
448
- "id": {
449
- "description": "The application's identifier. An entry-unique, increasing integer.",
450
- "type": "integer",
451
- "minimum": 1
452
- },
453
- "translations": {
454
- "description": "All translations for the entry, identified by IETF language tag (BCP47).",
455
- "type": "object",
456
- "patternProperties": {
457
- "^[a-z]{2}-[A-Z]{2}$": {
366
+ "tag": {
367
+ "const": "Skills"
368
+ },
369
+ "groups": {
370
+ "description": "Only include entries of the specified groups.",
371
+ "type": "array",
372
+ "items": {
373
+ "type": "object",
374
+ "properties": {
375
+ "id": {
376
+ "description": "The skill group's identifier.",
377
+ "type": "integer",
378
+ "maximum": 5,
379
+ "minimum": 1
380
+ }
381
+ },
382
+ "required": [
383
+ "id"
384
+ ],
385
+ "additionalProperties": false
386
+ },
387
+ "minItems": 1
388
+ },
389
+ "specific": {
390
+ "description": "Only include (`Intersection`) or exclude (`Difference`) specific\nskills.",
458
391
  "type": "object",
459
392
  "properties": {
460
- "name": {
461
- "description": "The name of the application if different from the activatable entry's\nname.",
462
- "type": "string",
463
- "minLength": 1
393
+ "operation": {
394
+ "oneOf": [
395
+ {
396
+ "type": "object",
397
+ "properties": {
398
+ "tag": {
399
+ "const": "Intersection"
400
+ }
401
+ },
402
+ "required": [
403
+ "tag"
404
+ ],
405
+ "additionalProperties": false
406
+ },
407
+ {
408
+ "type": "object",
409
+ "properties": {
410
+ "tag": {
411
+ "const": "Difference"
412
+ }
413
+ },
414
+ "required": [
415
+ "tag"
416
+ ],
417
+ "additionalProperties": false
418
+ }
419
+ ]
420
+ },
421
+ "list": {
422
+ "description": "The list of specific skills.",
423
+ "type": "array",
424
+ "items": {
425
+ "type": "object",
426
+ "properties": {
427
+ "id": {
428
+ "description": "The skill's identifier.",
429
+ "type": "integer",
430
+ "maximum": 59,
431
+ "minimum": 1
432
+ }
433
+ },
434
+ "required": [
435
+ "id"
436
+ ],
437
+ "additionalProperties": false
438
+ },
439
+ "minItems": 1,
440
+ "uniqueItems": true
464
441
  }
465
442
  },
466
443
  "required": [
467
- "name"
444
+ "operation",
445
+ "list"
468
446
  ],
469
447
  "additionalProperties": false
448
+ },
449
+ "skill_applications": {
450
+ "description": "Registers new applications, which get enabled once this entry is\nactivated with its respective select option. It specifies an\nentry-unique identifier, the skill it belongs to is derived from the\nselect option automatically. A translation can be left out if its\nname equals the name of the origin entry.",
451
+ "type": "array",
452
+ "items": {
453
+ "type": "object",
454
+ "properties": {
455
+ "id": {
456
+ "description": "The application's identifier. An entry-unique, increasing integer.",
457
+ "type": "integer",
458
+ "minimum": 1
459
+ },
460
+ "translations": {
461
+ "description": "All translations for the entry, identified by IETF language tag\n(BCP47).",
462
+ "type": "object",
463
+ "patternProperties": {
464
+ "^[a-z]{2}-[A-Z]{2}$": {
465
+ "type": "object",
466
+ "properties": {
467
+ "name": {
468
+ "description": "The name of the application if different from the activatable\nentry's\nname.",
469
+ "type": "string",
470
+ "minLength": 1
471
+ }
472
+ },
473
+ "required": [
474
+ "name"
475
+ ],
476
+ "additionalProperties": false
477
+ }
478
+ },
479
+ "minProperties": 1,
480
+ "additionalProperties": false
481
+ }
482
+ },
483
+ "required": [
484
+ "id"
485
+ ],
486
+ "additionalProperties": false
487
+ },
488
+ "minItems": 1
489
+ },
490
+ "skill_uses": {
491
+ "description": "Registers uses, which get enabled once this entry is activated with\nits respective select option. It specifies an entry-unique\nidentifier, the skill it belongs to is derived from the select option\nautomatically. A translation can be left out if its name equals the\nname of the origin entry.",
492
+ "type": "array",
493
+ "items": {
494
+ "type": "object",
495
+ "properties": {
496
+ "id": {
497
+ "description": "The use's identifier. An entry-unique, increasing integer.",
498
+ "type": "integer",
499
+ "minimum": 1
500
+ },
501
+ "translations": {
502
+ "description": "All translations for the entry, identified by IETF language tag\n(BCP47).",
503
+ "type": "object",
504
+ "patternProperties": {
505
+ "^[a-z]{2}-[A-Z]{2}$": {
506
+ "type": "object",
507
+ "properties": {
508
+ "name": {
509
+ "description": "The name of the use if different from the activatable entry's\nname.",
510
+ "type": "string",
511
+ "minLength": 1
512
+ }
513
+ },
514
+ "required": [
515
+ "name"
516
+ ],
517
+ "additionalProperties": false
518
+ }
519
+ },
520
+ "minProperties": 1,
521
+ "additionalProperties": false
522
+ }
523
+ },
524
+ "required": [
525
+ "id"
526
+ ],
527
+ "additionalProperties": false
528
+ },
529
+ "minItems": 1
530
+ },
531
+ "prerequisites": {
532
+ "description": "Generate prerequisites for each entry of the category.",
533
+ "type": "array",
534
+ "items": {
535
+ "oneOf": [
536
+ {
537
+ "$ref": "#/definitions/OptionSkillSelfPrerequisite"
538
+ },
539
+ {
540
+ "$ref": "#/definitions/OptionOptionPrerequisite"
541
+ }
542
+ ]
543
+ },
544
+ "minItems": 1
470
545
  }
471
546
  },
472
- "minProperties": 1,
547
+ "required": [
548
+ "tag"
549
+ ],
473
550
  "additionalProperties": false
474
- }
475
- },
476
- "required": [
477
- "id"
478
- ],
479
- "additionalProperties": false
480
- },
481
- "minItems": 1
482
- },
483
- "skill_uses": {
484
- "description": "Registers uses, which get enabled once this entry is activated with its\nrespective select option. It specifies an entry-unique identifier, the\nskill it belongs to is derived from the select option automatically. A\ntranslation can be left out if its name equals the name of the origin\nentry.",
485
- "type": "array",
486
- "items": {
487
- "type": "object",
488
- "properties": {
489
- "id": {
490
- "description": "The use's identifier. An entry-unique, increasing integer.",
491
- "type": "integer",
492
- "minimum": 1
493
551
  },
494
- "translations": {
495
- "description": "All translations for the entry, identified by IETF language tag (BCP47).",
552
+ {
496
553
  "type": "object",
497
- "patternProperties": {
498
- "^[a-z]{2}-[A-Z]{2}$": {
554
+ "properties": {
555
+ "tag": {
556
+ "$ref": "#/definitions/SkillWithEnhancementsCategory"
557
+ },
558
+ "specific": {
559
+ "description": "Only include (`Intersection`) or exclude (`Difference`) specific\nentries.",
499
560
  "type": "object",
500
561
  "properties": {
501
- "name": {
502
- "description": "The name of the use if different from the activatable entry's name.",
503
- "type": "string",
504
- "minLength": 1
562
+ "operation": {
563
+ "oneOf": [
564
+ {
565
+ "type": "object",
566
+ "properties": {
567
+ "tag": {
568
+ "const": "Intersection"
569
+ }
570
+ },
571
+ "required": [
572
+ "tag"
573
+ ],
574
+ "additionalProperties": false
575
+ },
576
+ {
577
+ "type": "object",
578
+ "properties": {
579
+ "tag": {
580
+ "const": "Difference"
581
+ }
582
+ },
583
+ "required": [
584
+ "tag"
585
+ ],
586
+ "additionalProperties": false
587
+ }
588
+ ]
589
+ },
590
+ "list": {
591
+ "description": "The list of specific entries.",
592
+ "type": "array",
593
+ "items": {
594
+ "type": "object",
595
+ "properties": {
596
+ "id": {
597
+ "description": "The entry's identifier.",
598
+ "type": "integer",
599
+ "maximum": 59,
600
+ "minimum": 1
601
+ }
602
+ },
603
+ "required": [
604
+ "id"
605
+ ],
606
+ "additionalProperties": false
607
+ },
608
+ "minItems": 1,
609
+ "uniqueItems": true
505
610
  }
506
611
  },
507
612
  "required": [
508
- "name"
613
+ "operation",
614
+ "list"
509
615
  ],
510
616
  "additionalProperties": false
617
+ },
618
+ "prerequisites": {
619
+ "description": "Generate prerequisites for each entry of the category.",
620
+ "type": "array",
621
+ "items": {
622
+ "oneOf": [
623
+ {
624
+ "$ref": "#/definitions/OptionSkillSelfPrerequisite"
625
+ },
626
+ {
627
+ "$ref": "#/definitions/OptionOptionPrerequisite"
628
+ }
629
+ ]
630
+ },
631
+ "minItems": 1
511
632
  }
512
633
  },
513
- "minProperties": 1,
634
+ "required": [
635
+ "tag"
636
+ ],
514
637
  "additionalProperties": false
515
638
  }
516
- },
517
- "required": [
518
- "id"
519
- ],
520
- "additionalProperties": false
521
- },
522
- "minItems": 1
523
- },
524
- "prerequisites": {
525
- "description": "Generate prerequisites for each entry of the category.",
526
- "type": "array",
527
- "items": {
528
- "oneOf": [
529
- {
530
- "$ref": "#/definitions/OptionSkillSelfPrerequisite"
531
- },
532
- {
533
- "$ref": "#/definitions/OptionOptionPrerequisite"
534
- }
535
639
  ]
536
640
  },
537
641
  "minItems": 1
538
642
  },
539
643
  "ap_value": {
540
644
  "description": "Generate AP values for each entry.",
541
- "$ref": "#/definitions/OptionSkillDeriveAdventurePointsValue"
542
- }
543
- },
544
- "required": [
545
- "tag"
546
- ],
547
- "additionalProperties": false
548
- },
549
- {
550
- "type": "object",
551
- "properties": {
552
- "tag": {
553
- "$ref": "#/definitions/NonSkillSkillCategory"
554
- },
555
- "specific": {
556
- "description": "Only include (`Intersection`) or exclude (`Difference`) specific entries.",
557
- "type": "object",
558
- "properties": {
559
- "operation": {
645
+ "oneOf": [
646
+ {
647
+ "description": "Generate AP values for each entry.",
560
648
  "oneOf": [
561
649
  {
562
650
  "type": "object",
563
651
  "properties": {
564
652
  "tag": {
565
- "const": "Intersection"
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
566
659
  }
567
660
  },
568
661
  "required": [
@@ -574,79 +667,236 @@
574
667
  "type": "object",
575
668
  "properties": {
576
669
  "tag": {
577
- "const": "Difference"
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
578
698
  }
579
699
  },
580
700
  "required": [
581
- "tag"
701
+ "tag",
702
+ "map",
703
+ "default"
582
704
  ],
583
705
  "additionalProperties": false
584
706
  }
585
707
  ]
586
708
  },
587
- "list": {
588
- "description": "The list of specific entries.",
589
- "type": "array",
590
- "items": {
591
- "type": "object",
592
- "properties": {
593
- "id": {
594
- "description": "The entry's identifier.",
595
- "type": "integer",
596
- "maximum": 59,
597
- "minimum": 1
598
- }
709
+ {
710
+ "type": "object",
711
+ "properties": {
712
+ "tag": {
713
+ "const": "CombatTechniques"
599
714
  },
600
- "required": [
601
- "id"
602
- ],
603
- "additionalProperties": false
715
+ "categories": {
716
+ "description": "A list of combat technique categories.",
717
+ "type": "array",
718
+ "items": {
719
+ "type": "object",
720
+ "properties": {
721
+ "tag": {
722
+ "$ref": "#/definitions/CombatTechniqueCategory"
723
+ },
724
+ "specific": {
725
+ "description": "Only include (`Intersection`) or exclude (`Difference`) specific\nentries.",
726
+ "type": "object",
727
+ "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
776
+ }
777
+ },
778
+ "required": [
779
+ "operation",
780
+ "list"
781
+ ],
782
+ "additionalProperties": false
783
+ },
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
+ ]
796
+ },
797
+ "minItems": 1
798
+ }
799
+ },
800
+ "required": [
801
+ "tag"
802
+ ],
803
+ "additionalProperties": false
804
+ },
805
+ "minItems": 1
806
+ },
807
+ "ap_value": {
808
+ "description": "Generate AP values for each entry.",
809
+ "oneOf": [
810
+ {
811
+ "type": "object",
812
+ "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).",
818
+ "type": "integer",
819
+ "minimum": 2
820
+ }
821
+ },
822
+ "required": [
823
+ "tag"
824
+ ],
825
+ "additionalProperties": false
826
+ },
827
+ {
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
867
+ }
868
+ ]
869
+ }
604
870
  },
605
- "minItems": 1,
606
- "uniqueItems": true
871
+ "required": [
872
+ "tag",
873
+ "categories"
874
+ ],
875
+ "additionalProperties": false
607
876
  }
608
- },
609
- "required": [
610
- "operation",
611
- "list"
612
- ],
613
- "additionalProperties": false
614
- },
615
- "prerequisites": {
616
- "description": "Generate prerequisites for each entry of the category.",
617
- "type": "array",
618
- "items": {
619
- "oneOf": [
620
- {
621
- "$ref": "#/definitions/OptionSkillSelfPrerequisite"
622
- },
623
- {
624
- "$ref": "#/definitions/OptionOptionPrerequisite"
625
- }
626
- ]
627
- },
628
- "minItems": 1
629
- },
630
- "ap_value": {
631
- "description": "Generate AP values for each entry.",
632
- "$ref": "#/definitions/OptionSkillDeriveAdventurePointsValue"
877
+ ]
633
878
  }
634
879
  },
635
880
  "required": [
636
- "tag"
881
+ "tag",
882
+ "categories"
637
883
  ],
638
884
  "additionalProperties": false
639
885
  }
640
886
  ]
641
887
  },
642
- "NonSkillSkillCategory": {
888
+ "SkillWithEnhancementsCategory": {
643
889
  "enum": [
644
- "CloseCombatTechniques",
645
- "RangedCombatTechniques",
890
+ "spells",
891
+ "Rituals",
646
892
  "LiturgicalChants",
647
- "Ceremonies",
648
- "Spells",
649
- "Rituals"
893
+ "Ceremonies"
894
+ ]
895
+ },
896
+ "CombatTechniqueCategory": {
897
+ "enum": [
898
+ "CloseCombatTechniques",
899
+ "RangedCombatTechniques"
650
900
  ]
651
901
  },
652
902
  "OptionSkillSelfPrerequisite": {
@@ -695,71 +945,6 @@
695
945
  ],
696
946
  "additionalProperties": false
697
947
  },
698
- "OptionSkillDeriveAdventurePointsValue": {
699
- "description": "Generate AP values for each entry.",
700
- "oneOf": [
701
- {
702
- "type": "object",
703
- "properties": {
704
- "tag": {
705
- "const": "DerivedFromImprovementCost"
706
- },
707
- "multiplier": {
708
- "description": "This number is multiplied with the improvement cost of the entry\n(A = 1 to D = 4).",
709
- "type": "integer",
710
- "minimum": 2
711
- }
712
- },
713
- "required": [
714
- "tag"
715
- ],
716
- "additionalProperties": false
717
- },
718
- {
719
- "type": "object",
720
- "properties": {
721
- "tag": {
722
- "const": "Fixed"
723
- },
724
- "map": {
725
- "description": "A mapping of skill identifiers to their specific AP values.",
726
- "type": "array",
727
- "items": {
728
- "type": "object",
729
- "properties": {
730
- "id": {
731
- "description": "The skill's identifier.",
732
- "type": "integer",
733
- "minimum": 1
734
- },
735
- "ap_value": {
736
- "description": "The AP value for the specified entry.",
737
- "type": "integer",
738
- "minimum": 1
739
- }
740
- },
741
- "required": [
742
- "id",
743
- "ap_value"
744
- ],
745
- "additionalProperties": false
746
- }
747
- },
748
- "default": {
749
- "description": "The default value of an entry. Used as a fallback if no value is\nfound in `list`.",
750
- "type": "integer",
751
- "minimum": 1
752
- }
753
- },
754
- "required": [
755
- "tag",
756
- "map",
757
- "default"
758
- ],
759
- "additionalProperties": false
760
- }
761
- ]
762
- },
763
948
  "ExplicitOption": {
764
949
  "oneOf": [
765
950
  {