optolith-database-schema 0.1.3 → 0.1.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 (109) hide show
  1. package/CHANGELOG.md +10 -0
  2. package/lib/types/Advantage.d.ts +1 -0
  3. package/lib/types/Disadvantage.d.ts +1 -0
  4. package/lib/types/FamiliarsTrick.d.ts +2 -1
  5. package/lib/types/_Activatable.d.ts +561 -4
  6. package/lib/types/_ActivatableSkill.d.ts +4 -0
  7. package/lib/types/_Identifier.d.ts +5 -0
  8. package/lib/types/_Identifier.js +5 -0
  9. package/lib/types/magicalActions/Curse.d.ts +1 -1
  10. package/lib/types/magicalActions/ElvenMagicalSong.d.ts +1 -1
  11. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +1 -0
  12. package/lib/types/specialAbility/AdvancedKarmaSpecialAbility.d.ts +1 -0
  13. package/lib/types/specialAbility/AdvancedMagicalSpecialAbility.d.ts +1 -0
  14. package/lib/types/specialAbility/AdvancedSkillSpecialAbility.d.ts +1 -0
  15. package/lib/types/specialAbility/AncestorGlyph.d.ts +1 -0
  16. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +1 -0
  17. package/lib/types/specialAbility/CeremonialItemSpecialAbility.d.ts +1 -0
  18. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +1 -0
  19. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +1 -0
  20. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +1 -0
  21. package/lib/types/specialAbility/FamiliarSpecialAbility.d.ts +1 -0
  22. package/lib/types/specialAbility/FatePointSexSpecialAbility.d.ts +1 -0
  23. package/lib/types/specialAbility/FatePointSpecialAbility.d.ts +1 -0
  24. package/lib/types/specialAbility/GeneralSpecialAbility.d.ts +1 -0
  25. package/lib/types/specialAbility/KarmaSpecialAbility.d.ts +1 -0
  26. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +1 -0
  27. package/lib/types/specialAbility/LycantropicGift.d.ts +1 -0
  28. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +1 -0
  29. package/lib/types/specialAbility/MagicalSpecialAbility.d.ts +1 -0
  30. package/lib/types/specialAbility/PactGift.d.ts +1 -0
  31. package/lib/types/specialAbility/ProtectiveWardingCircleSpecialAbility.d.ts +1 -0
  32. package/lib/types/specialAbility/Sermon.d.ts +1 -0
  33. package/lib/types/specialAbility/SexSpecialAbility.d.ts +1 -0
  34. package/lib/types/specialAbility/SikaryanDrainSpecialAbility.d.ts +1 -0
  35. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +1 -0
  36. package/lib/types/specialAbility/VampiricGift.d.ts +1 -0
  37. package/lib/types/specialAbility/Vision.d.ts +1 -0
  38. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +3 -0
  39. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +3 -0
  40. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +3 -0
  41. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +4 -1
  42. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +3 -0
  43. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +3 -0
  44. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +3 -0
  45. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +3 -0
  46. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +3 -0
  47. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +3 -0
  48. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +3 -0
  49. package/lib/types/traditionArtifacts/SickleRitual.d.ts +3 -0
  50. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +3 -0
  51. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +3 -0
  52. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +3 -0
  53. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +3 -0
  54. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +3 -0
  55. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +3 -0
  56. package/package.json +1 -1
  57. package/schema/Advantage.schema.json +3 -0
  58. package/schema/Disadvantage.schema.json +3 -0
  59. package/schema/FamiliarsTrick.schema.json +1 -0
  60. package/schema/_Activatable.schema.json +823 -10
  61. package/schema/_ActivatableSkill.schema.json +1 -0
  62. package/schema/_Identifier.schema.json +24 -0
  63. package/schema/magicalActions/Curse.schema.json +1 -1
  64. package/schema/magicalActions/ElvenMagicalSong.schema.json +1 -1
  65. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +3 -0
  66. package/schema/specialAbility/AdvancedKarmaSpecialAbility.schema.json +3 -0
  67. package/schema/specialAbility/AdvancedMagicalSpecialAbility.schema.json +3 -0
  68. package/schema/specialAbility/AdvancedSkillSpecialAbility.schema.json +3 -0
  69. package/schema/specialAbility/AncestorGlyph.schema.json +3 -0
  70. package/schema/specialAbility/BrawlingSpecialAbility.schema.json +3 -0
  71. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +3 -0
  72. package/schema/specialAbility/CombatSpecialAbility.schema.json +3 -0
  73. package/schema/specialAbility/CombatStyleSpecialAbility.schema.json +3 -0
  74. package/schema/specialAbility/CommandSpecialAbility.schema.json +3 -0
  75. package/schema/specialAbility/FamiliarSpecialAbility.schema.json +3 -0
  76. package/schema/specialAbility/FatePointSexSpecialAbility.schema.json +3 -0
  77. package/schema/specialAbility/FatePointSpecialAbility.schema.json +3 -0
  78. package/schema/specialAbility/GeneralSpecialAbility.schema.json +3 -0
  79. package/schema/specialAbility/KarmaSpecialAbility.schema.json +3 -0
  80. package/schema/specialAbility/LiturgicalStyleSpecialAbility.schema.json +3 -0
  81. package/schema/specialAbility/LycantropicGift.schema.json +3 -0
  82. package/schema/specialAbility/MagicStyleSpecialAbility.schema.json +3 -0
  83. package/schema/specialAbility/MagicalSpecialAbility.schema.json +3 -0
  84. package/schema/specialAbility/PactGift.schema.json +3 -0
  85. package/schema/specialAbility/ProtectiveWardingCircleSpecialAbility.schema.json +3 -0
  86. package/schema/specialAbility/Sermon.schema.json +3 -0
  87. package/schema/specialAbility/SexSpecialAbility.schema.json +3 -0
  88. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +3 -0
  89. package/schema/specialAbility/SkillStyleSpecialAbility.schema.json +3 -0
  90. package/schema/specialAbility/VampiricGift.schema.json +3 -0
  91. package/schema/specialAbility/Vision.schema.json +3 -0
  92. package/schema/traditionArtifacts/ArcaneOrbEnchantment.schema.json +10 -0
  93. package/schema/traditionArtifacts/AttireEnchantment.schema.json +10 -0
  94. package/schema/traditionArtifacts/BowlEnchantment.schema.json +10 -0
  95. package/schema/traditionArtifacts/CauldronEnchantment.schema.json +13 -3
  96. package/schema/traditionArtifacts/ChronicleEnchantment.schema.json +10 -0
  97. package/schema/traditionArtifacts/DaggerRitual.schema.json +10 -0
  98. package/schema/traditionArtifacts/FoolsHatEnchantment.schema.json +10 -0
  99. package/schema/traditionArtifacts/InstrumentEnchantment.schema.json +10 -0
  100. package/schema/traditionArtifacts/Krallenkettenzauber.schema.json +10 -0
  101. package/schema/traditionArtifacts/OrbEnchantment.schema.json +10 -0
  102. package/schema/traditionArtifacts/RingEnchantment.schema.json +10 -0
  103. package/schema/traditionArtifacts/SickleRitual.schema.json +10 -0
  104. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +10 -0
  105. package/schema/traditionArtifacts/StaffEnchantment.schema.json +10 -0
  106. package/schema/traditionArtifacts/ToyEnchantment.schema.json +10 -0
  107. package/schema/traditionArtifacts/Trinkhornzauber.schema.json +10 -0
  108. package/schema/traditionArtifacts/WandEnchantment.schema.json +10 -0
  109. package/schema/traditionArtifacts/WeaponEnchantment.schema.json +10 -0
package/CHANGELOG.md CHANGED
@@ -2,6 +2,16 @@
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.1.4](https://github.com/elyukai/optolith-database-schema/compare/v0.1.3...v0.1.4) (2022-03-09)
6
+
7
+
8
+ ### Features
9
+
10
+ * maximum activatable activations ([1750796](https://github.com/elyukai/optolith-database-schema/commit/175079672da1a692a2a2c49df86d818257af771a))
11
+ * tradition artifact enchantment arcane energy cost ([f71916c](https://github.com/elyukai/optolith-database-schema/commit/f71916cfa9fe5f32ad75cd7d9341c9fdef4cfba6))
12
+ * tradition artifact enchantment binding cost ([07c25fe](https://github.com/elyukai/optolith-database-schema/commit/07c25fe1b6330bba1698794d47abc6cb0dfae402))
13
+ * tradition artifact enchantment volume points ([5cc8ce6](https://github.com/elyukai/optolith-database-schema/commit/5cc8ce63c4eb6928faca5c6ed58cd7da9abb27cd))
14
+
5
15
  ### [0.1.3](https://github.com/elyukai/optolith-database-schema/compare/v0.1.2...v0.1.3) (2022-03-09)
6
16
 
7
17
 
@@ -12,6 +12,7 @@ export declare type Advantage = {
12
12
  levels?: Activatable.Levels;
13
13
  skill_applications?: Activatable.SkillApplications;
14
14
  skill_uses?: Activatable.SkillUses;
15
+ maximum?: Activatable.Maximum;
15
16
  ap_value: Activatable.AdventurePointsValue;
16
17
  /**
17
18
  * Does this advantage not count towards the maximum of AP to be spent
@@ -10,6 +10,7 @@ import * as Activatable from "./_Activatable";
10
10
  export declare type Disadvantage = {
11
11
  id: Activatable.Id;
12
12
  levels?: Activatable.Levels;
13
+ maximum?: Activatable.Maximum;
13
14
  ap_value: Activatable.AdventurePointsValue;
14
15
  /**
15
16
  * Does this disadvantage not count towards the maximum of AP to be granted by
@@ -163,7 +163,8 @@ declare type PerformanceParameters = {
163
163
  */
164
164
  [localeId: string]: {
165
165
  /**
166
- *
166
+ * The cost have to be per a specific countable entity, e.g. `8 KP
167
+ * per person`.
167
168
  */
168
169
  per?: {
169
170
  /**
@@ -2,6 +2,7 @@
2
2
  * General type specifications used by multiple activatable entries.
3
3
  * @title Activatable
4
4
  */
5
+ import { Duration } from "./_ActivatableSkill";
5
6
  import { Identifier } from "./_Identifier";
6
7
  import { Prerequisite } from "./_Prerequisite";
7
8
  /**
@@ -28,9 +29,19 @@ export declare type NameInLibrary = string;
28
29
  */
29
30
  export declare type Levels = number;
30
31
  /**
32
+ * The number stating how often you can buy the entry. The **default** depends on
33
+ * the entry type:
31
34
  *
35
+ * - **Advantage:** `1` in all cases (as specified in the **Core Rules**)
36
+ * - **Disadvantage:** `1` in all cases (as specified in the **Core Rules**)
37
+ * - **Special Abilities:** `1` if no options can be selected, otherwise the
38
+ * number of possible options
39
+ *
40
+ * The maximum is only set if it differs from the defaults specified above.
41
+ * @integer
42
+ * @minimum 1
32
43
  */
33
- export declare type Maximum = "";
44
+ export declare type Maximum = number;
34
45
  /**
35
46
  *
36
47
  */
@@ -306,18 +317,564 @@ export declare type Penalty = {
306
317
  } | {
307
318
  tag: "DependsOnHitZone";
308
319
  };
320
+ export declare type EnchantmentCost = {
321
+ tag: "ArcaneEnergyCost";
322
+ ae_cost: ArcaneEnergyCost;
323
+ } | {
324
+ tag: "BindingCost";
325
+ binding_cost: BindingCost;
326
+ };
309
327
  /**
310
328
  * The AE Cost.
311
329
  */
312
- export declare type ArcaneEnergyCost = "";
330
+ export declare type ArcaneEnergyCost = {
331
+ tag: "Fixed";
332
+ /**
333
+ * The AE cost value.
334
+ * @integer
335
+ * @minimum 1
336
+ */
337
+ value: number;
338
+ /**
339
+ * Set to `true` if the AE costs are permanent.
340
+ * @integer
341
+ * @minimum 1
342
+ */
343
+ is_permanent?: true;
344
+ /**
345
+ * Specified if the AE cost `value` has to be paid for each time interval.
346
+ */
347
+ interval?: Duration.UnitValue;
348
+ /**
349
+ * The AE cost are per level of the enchantment. It may either be displayed
350
+ * in a compressed way (e.g. `1 AE per level`) or in a verbose way (e.g. `1
351
+ * AE for level I; 2 AE for level II`).
352
+ */
353
+ per_level?: {
354
+ tag: "Compressed";
355
+ } | {
356
+ tag: "Verbose";
357
+ };
358
+ /**
359
+ * All translations for the entry, identified by IETF language tag
360
+ * (BCP47).
361
+ * @minProperties 1
362
+ */
363
+ translations?: {
364
+ /**
365
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
366
+ * @minProperties 1
367
+ */
368
+ [localeId: string]: {
369
+ /**
370
+ * A note, appended to the generated string in parenthesis.
371
+ */
372
+ note?: {
373
+ /**
374
+ * The full note.
375
+ * @minLength 1
376
+ */
377
+ default: string;
378
+ /**
379
+ * A compressed note, if applicable. If not specified it should not
380
+ * be displayed in small location.
381
+ * @minLength 1
382
+ */
383
+ compressed?: string;
384
+ };
385
+ };
386
+ };
387
+ } | {
388
+ tag: "PerCountable";
389
+ /**
390
+ * The AE cost value that has to be per a specific countable entity.
391
+ * @integer
392
+ * @minimum 1
393
+ */
394
+ value: number;
395
+ /**
396
+ * If defined, in addition to the cost per entity you have to pay a flat
397
+ * amount, regardless of the entity count.
398
+ * @integer
399
+ * @minimum 1
400
+ */
401
+ base_value?: number;
402
+ /**
403
+ * All translations for the entry, identified by IETF language tag
404
+ * (BCP47).
405
+ * @minProperties 1
406
+ */
407
+ translations?: {
408
+ /**
409
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
410
+ * @minProperties 1
411
+ */
412
+ [localeId: string]: {
413
+ /**
414
+ * The cost have to be per a specific countable entity, e.g. `8 AE per
415
+ * person`.
416
+ */
417
+ per: {
418
+ /**
419
+ * The full countable entity name.
420
+ * @minLength 1
421
+ */
422
+ default: string;
423
+ /**
424
+ * The compressed countable entity name.
425
+ * @minLength 1
426
+ */
427
+ compressed: string;
428
+ };
429
+ /**
430
+ * A note, appended to the generated string in parenthesis.
431
+ */
432
+ note?: {
433
+ /**
434
+ * The full note.
435
+ * @minLength 1
436
+ */
437
+ default: string;
438
+ /**
439
+ * A compressed note, if applicable. If not specified it should not
440
+ * be displayed in small location.
441
+ * @minLength 1
442
+ */
443
+ compressed?: string;
444
+ };
445
+ };
446
+ };
447
+ } | {
448
+ tag: "ActivationAndHalfInterval";
449
+ /**
450
+ * The AE cost value that has to be payed for activation. Half of this value
451
+ * has to be payed each interval.
452
+ * @integer
453
+ * @minimum 2
454
+ * @multipleOf 2
455
+ */
456
+ value: number;
457
+ /**
458
+ * The time interval for which the AE cost `value` has to be paid.
459
+ */
460
+ interval: Duration.UnitValue;
461
+ } | {
462
+ tag: "Indefinite";
463
+ /**
464
+ * The indefinite AE cost may be modified by a certain value.
465
+ */
466
+ modifier: {
467
+ /**
468
+ * The arithmetic how to apply the `value` to the indefinite base value.
469
+ */
470
+ arithmetic: {
471
+ tag: "Add";
472
+ } | {
473
+ tag: "Multiply";
474
+ };
475
+ /**
476
+ * The value that is applied to the indefinite base value using the
477
+ * defined `arithmetic`.
478
+ * @integer
479
+ * @minimum 1
480
+ */
481
+ value: number;
482
+ };
483
+ /**
484
+ * All translations for the entry, identified by IETF language tag (BCP47).
485
+ * @minProperties 1
486
+ */
487
+ translations: {
488
+ /**
489
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
490
+ */
491
+ [localeId: string]: {
492
+ /**
493
+ * A description of where the cost come from.
494
+ */
495
+ description: {
496
+ /**
497
+ * The full description of where the cost come from.
498
+ * @minLength 1
499
+ */
500
+ default: string;
501
+ /**
502
+ * A compressed description of where the cost come from for use in
503
+ * small areas (e.g. on character sheet).
504
+ * @minLength 1
505
+ */
506
+ compressed: string;
507
+ };
508
+ };
509
+ };
510
+ } | {
511
+ tag: "Disjunction";
512
+ /**
513
+ * Specified if the selected AE cost option has to be paid for each time
514
+ * interval.
515
+ */
516
+ interval?: {
517
+ /**
518
+ * The interval itself.
519
+ */
520
+ value: Duration.UnitValue;
521
+ /**
522
+ * The AE cost value for activation.
523
+ * @integer
524
+ * @minimum 1
525
+ */
526
+ activation_value: number;
527
+ /**
528
+ * Set to `true` if the action where the enchantment is casted does
529
+ * **not** as a part of the first interval that has to be payed, so that
530
+ * the first interval payment needs to be done after the activation.
531
+ *
532
+ * This works different than other sustained spells, since for them the
533
+ * end of the cast usually already counts as part of the first interval.
534
+ */
535
+ after_activation: boolean;
536
+ };
537
+ /**
538
+ * The possible AE cost values.
539
+ */
540
+ options: {
541
+ /**
542
+ * A possible AE cost value.
543
+ * @integer
544
+ * @minimum 1
545
+ */
546
+ value: number;
547
+ /**
548
+ * All translations for the entry, identified by IETF language tag
549
+ * (BCP47).
550
+ * @minProperties 1
551
+ */
552
+ translations?: {
553
+ /**
554
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
555
+ * @minProperties 1
556
+ */
557
+ [localeId: string]: {
558
+ /**
559
+ * A note, appended to the generated option string in parenthesis.
560
+ */
561
+ note?: {
562
+ /**
563
+ * The full note.
564
+ * @minLength 1
565
+ */
566
+ default: string;
567
+ /**
568
+ * A compressed note, if applicable. If not specified it should not
569
+ * be displayed in small location.
570
+ * @minLength 1
571
+ */
572
+ compressed?: string;
573
+ };
574
+ };
575
+ };
576
+ }[];
577
+ } | {
578
+ tag: "None";
579
+ /**
580
+ * All translations for the entry, identified by IETF language tag
581
+ * (BCP47).
582
+ * @minProperties 1
583
+ */
584
+ translations?: {
585
+ /**
586
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
587
+ * @minProperties 1
588
+ */
589
+ [localeId: string]: {
590
+ /**
591
+ * A note, appended to the generated string in parenthesis.
592
+ */
593
+ note?: {
594
+ /**
595
+ * The full note.
596
+ * @minLength 1
597
+ */
598
+ default: string;
599
+ /**
600
+ * A compressed note, if applicable. If not specified it should not
601
+ * be displayed in small location.
602
+ * @minLength 1
603
+ */
604
+ compressed?: string;
605
+ };
606
+ };
607
+ };
608
+ } | {
609
+ tag: "Variable";
610
+ };
313
611
  /**
314
612
  * The volume points the enchantment needs.
315
613
  */
316
- export declare type Volume = "";
614
+ export declare type Volume = {
615
+ tag: "Fixed";
616
+ /**
617
+ * The volume points.
618
+ * @integer
619
+ * @minimum 0
620
+ */
621
+ points: number;
622
+ } | {
623
+ tag: "PerLevel";
624
+ /**
625
+ * The volume points per level.
626
+ * @integer
627
+ * @minimum 1
628
+ */
629
+ points: number;
630
+ } | {
631
+ tag: "ByLevel";
632
+ /**
633
+ * The volume points for each level. The first element is the volume points
634
+ * for the first level, the second element is the volume points for the
635
+ * second level, and so on.
636
+ * @minItems 2
637
+ */
638
+ list: {
639
+ /**
640
+ * The volume points for this level.
641
+ * @integer
642
+ * @minimum 0
643
+ */
644
+ points: number;
645
+ }[];
646
+ } | {
647
+ tag: "Map";
648
+ map: VolumeMap;
649
+ };
650
+ /**
651
+ * A content that is `3/4/5 Points for Chimera, Daimonid, Golems, Undead /
652
+ * Fairies, Ghosts / Demons, Elementals` may be respresented as the following
653
+ * map:
654
+ *
655
+ * ```yaml
656
+ * options:
657
+ * - points: 3
658
+ * associated_options:
659
+ * - id:
660
+ * tag: General
661
+ * value: # ...
662
+ * # ...
663
+ * translations:
664
+ * en-US:
665
+ * label: "Chimera, Daimonid, Golems, Undead"
666
+ * label_standalone: "Chimera/Daimonid/Golems/Undead"
667
+ * - points: 4
668
+ * associated_options:
669
+ * - id:
670
+ * tag: General
671
+ * value: # ...
672
+ * # ...
673
+ * translations:
674
+ * en-US:
675
+ * label: "Fairies, Ghosts"
676
+ * label_standalone: "Fairies/Ghosts"
677
+ * - points: 5
678
+ * associated_options:
679
+ * - id:
680
+ * tag: General
681
+ * value: # ...
682
+ * # ...
683
+ * translations:
684
+ * en-US:
685
+ * label: "Demons, Elementals"
686
+ * label_standalone: "Demons/Elementals"
687
+ * ```
688
+ *
689
+ * This will generate the exact same string as seen above. The associated
690
+ * options are not present in the example, but they link to the options the
691
+ * volume specification is meant for.
692
+ */
693
+ export declare type VolumeMap = {
694
+ /**
695
+ * The possible costs and associated labels.
696
+ * @minItems 2
697
+ */
698
+ options: VolumeMapOption[];
699
+ /**
700
+ * All translations for the entry, identified by IETF language tag (BCP47).
701
+ * @minProperties 1
702
+ */
703
+ translations?: {
704
+ /**
705
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
706
+ */
707
+ [localeId: string]: {
708
+ /**
709
+ * Place a string between the `for` and the grouped map option labels.
710
+ */
711
+ list_prepend?: string;
712
+ /**
713
+ * Place a string after the grouped map option labels.
714
+ */
715
+ list_append?: string;
716
+ /**
717
+ * If the string from the book cannot be generated using the default
718
+ * generation technique, use this string. All options still need to be
719
+ * inserted propertly, since it may be used by in-game tools to provide a
720
+ * selection to players.
721
+ */
722
+ replacement?: string;
723
+ };
724
+ };
725
+ };
726
+ export declare type VolumeMapOption = {
727
+ /**
728
+ * The full permanent AE cost value for this option.
729
+ * @integer
730
+ * @minimum 1
731
+ */
732
+ points: number;
733
+ /**
734
+ * Links to the options this volume specification is meant for.
735
+ */
736
+ associated_options: {
737
+ /**
738
+ * The option's identifier.
739
+ */
740
+ id: Identifier.Group.VolumePointsOptionReference;
741
+ }[];
742
+ /**
743
+ * All translations for the entry, identified by IETF language tag (BCP47).
744
+ * @minProperties 1
745
+ */
746
+ translations?: {
747
+ /**
748
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
749
+ */
750
+ [localeId: string]: {
751
+ /**
752
+ * The description of the option for cost string generation.
753
+ * @minLength 1
754
+ */
755
+ label: string;
756
+ /**
757
+ * The description of the option if used standalone. Only used if
758
+ * different from `label`.
759
+ * @minLength 1
760
+ */
761
+ label_standalone?: string;
762
+ };
763
+ };
764
+ };
317
765
  /**
318
766
  * The binding cost for an enchantment.
319
767
  */
320
- export declare type BindingCost = "";
768
+ export declare type BindingCost = {
769
+ tag: "Fixed";
770
+ /**
771
+ * The permanent AE cost.
772
+ * @integer
773
+ * @minimum 1
774
+ */
775
+ permanent_value: number;
776
+ } | {
777
+ tag: "PerLevel";
778
+ /**
779
+ * The permanent AE cost per level.
780
+ * @integer
781
+ * @minimum 1
782
+ */
783
+ permanent_value: number;
784
+ } | {
785
+ tag: "Map";
786
+ map: BindingCostMap;
787
+ };
788
+ /**
789
+ * A content that is `2/4/8 permanent AE for spell-swords with the combat
790
+ * technique Daggers, Swords, or Two-Handed Swords` may be respresented as the
791
+ * following map:
792
+ *
793
+ * ```yaml
794
+ * options:
795
+ * - permanent_value: 2
796
+ * translations:
797
+ * en-US:
798
+ * label: "Daggers"
799
+ * label_standalone: "Dagger"
800
+ * - permanent_value: 4
801
+ * translations:
802
+ * en-US:
803
+ * label: "Swords"
804
+ * label_standalone: "Sword"
805
+ * - permanent_value: 8
806
+ * translations:
807
+ * en-US:
808
+ * label: "Two-Handed Swords"
809
+ * label_standalone: "Two-Handed Sword"
810
+ * list_prepend: "spell-swords with the combat technique"
811
+ * ```
812
+ *
813
+ * This will generate the exact same string as seen above.
814
+ */
815
+ export declare type BindingCostMap = {
816
+ /**
817
+ * The possible costs and associated labels.
818
+ * @minItems 2
819
+ */
820
+ options: VolumeMapOption[];
821
+ /**
822
+ * All translations for the entry, identified by IETF language tag (BCP47).
823
+ * @minProperties 1
824
+ */
825
+ translations?: {
826
+ /**
827
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
828
+ */
829
+ [localeId: string]: {
830
+ /**
831
+ * Place a string between the `for` and the grouped map option labels.
832
+ */
833
+ list_prepend?: string;
834
+ /**
835
+ * Place a string after the grouped map option labels.
836
+ */
837
+ list_append?: string;
838
+ /**
839
+ * If the string from the book cannot be generated using the default
840
+ * generation technique, use this string. All options still need to be
841
+ * inserted propertly, since it may be used by in-game tools to provide a
842
+ * selection to players.
843
+ */
844
+ replacement?: string;
845
+ };
846
+ };
847
+ };
848
+ export declare type BindingCostMapOption = {
849
+ /**
850
+ * The full permanent AE cost value for this option.
851
+ * @integer
852
+ * @minimum 1
853
+ */
854
+ permanent_value: number;
855
+ /**
856
+ * All translations for the entry, identified by IETF language tag (BCP47).
857
+ * @minProperties 1
858
+ */
859
+ translations?: {
860
+ /**
861
+ * @patternProperties ^[a-z]{2}-[A-Z]{2}$
862
+ */
863
+ [localeId: string]: {
864
+ /**
865
+ * The description of the option for cost string generation.
866
+ * @minLength 1
867
+ */
868
+ label: string;
869
+ /**
870
+ * The description of the option if used standalone. Only used if
871
+ * different from `label`.
872
+ * @minLength 1
873
+ */
874
+ label_standalone?: string;
875
+ };
876
+ };
877
+ };
321
878
  /**
322
879
  * The magic property's identifier. `DependingOnProperty` can only be used if
323
880
  * the special ability has an option to select a property.
@@ -255,6 +255,10 @@ export declare namespace Cost {
255
255
  * @minimum 1
256
256
  */
257
257
  permanent_value?: number;
258
+ /**
259
+ * The cost have to be per a specific countable entity, e.g. `8 KP per
260
+ * person`.
261
+ */
258
262
  per?: {
259
263
  /**
260
264
  * If defined, the minimum total AE that have to be spent casting the
@@ -68,6 +68,10 @@ export declare namespace Identifier {
68
68
  General = "General",
69
69
  Element = "Element"
70
70
  }
71
+ enum VolumePointsOptionReference {
72
+ General = "General",
73
+ AnimalShapeSize = "AnimalShapeSize"
74
+ }
71
75
  enum CombatTechnique {
72
76
  CloseCombatTechnique = "CloseCombatTechnique",
73
77
  RangedCombatTechnique = "RangedCombatTechnique"
@@ -87,6 +91,7 @@ export declare namespace Identifier {
87
91
  type CombatRelatedSpecialAbility = Tagged<Tag.CombatRelatedSpecialAbility>;
88
92
  type Rated = Tagged<Tag.Rated>;
89
93
  type AdvancedSpecialAbilityRestrictedOption = Tagged<Tag.AdvancedSpecialAbilityRestrictedOption>;
94
+ type VolumePointsOptionReference = Tagged<Tag.VolumePointsOptionReference>;
90
95
  type CombatTechnique = Tagged<Tag.CombatTechnique>;
91
96
  }
92
97
  }
@@ -74,6 +74,11 @@ export var Identifier;
74
74
  AdvancedSpecialAbilityRestrictedOption["General"] = "General";
75
75
  AdvancedSpecialAbilityRestrictedOption["Element"] = "Element";
76
76
  })(AdvancedSpecialAbilityRestrictedOption = Tag.AdvancedSpecialAbilityRestrictedOption || (Tag.AdvancedSpecialAbilityRestrictedOption = {}));
77
+ let VolumePointsOptionReference;
78
+ (function (VolumePointsOptionReference) {
79
+ VolumePointsOptionReference["General"] = "General";
80
+ VolumePointsOptionReference["AnimalShapeSize"] = "AnimalShapeSize";
81
+ })(VolumePointsOptionReference = Tag.VolumePointsOptionReference || (Tag.VolumePointsOptionReference = {}));
77
82
  let CombatTechnique;
78
83
  (function (CombatTechnique) {
79
84
  CombatTechnique["CloseCombatTechnique"] = "CloseCombatTechnique";
@@ -99,7 +99,7 @@ declare type PerformanceParameters = {
99
99
  [localeId: string]: {
100
100
  /**
101
101
  * The cost have to be per a specific countable entity, e.g. `8 KP
102
- * per person`
102
+ * per person`.
103
103
  */
104
104
  per?: {
105
105
  /**
@@ -95,7 +95,7 @@ declare type PerformanceParameters = {
95
95
  */
96
96
  value: number;
97
97
  /**
98
- * Specified if the AE cost `value` have to paid for each time interval.
98
+ * Specified if the AE cost `value` has to be paid for each time interval.
99
99
  */
100
100
  interval?: Duration.UnitValue;
101
101
  /**