optolith-database-schema 0.40.0 → 0.42.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 (288) hide show
  1. package/CHANGELOG.md +59 -0
  2. package/README.md +1 -1
  3. package/gen/types.d.ts +1705 -1582
  4. package/lib/types/Ceremony.d.ts +3 -0
  5. package/lib/types/DerivedCharacteristic.d.ts +23 -14
  6. package/lib/types/DerivedCharacteristic.js +58 -21
  7. package/lib/types/Disease.d.ts +2 -0
  8. package/lib/types/Disease.js +8 -0
  9. package/lib/types/FamiliarsTrick.d.ts +1 -0
  10. package/lib/types/FamiliarsTrick.js +8 -2
  11. package/lib/types/LiturgicalChant.d.ts +3 -0
  12. package/lib/types/Locale.d.ts +10 -6
  13. package/lib/types/Locale.js +10 -6
  14. package/lib/types/Profession.d.ts +31 -14
  15. package/lib/types/Profession.js +12 -2
  16. package/lib/types/Race.d.ts +28 -19
  17. package/lib/types/Race.js +36 -22
  18. package/lib/types/Ritual.d.ts +3 -0
  19. package/lib/types/Spell.d.ts +3 -0
  20. package/lib/types/Talisman.d.ts +32 -6
  21. package/lib/types/Talisman.js +51 -11
  22. package/lib/types/_ActivatableSkill.d.ts +8 -0
  23. package/lib/types/_ActivatableSkillCheckResultBased.d.ts +2 -0
  24. package/lib/types/_ActivatableSkillCheckResultBased.js +1 -0
  25. package/lib/types/_ActivatableSkillDuration.d.ts +2 -0
  26. package/lib/types/_ActivatableSkillRange.d.ts +1 -0
  27. package/lib/types/_Identifier.d.ts +1 -0
  28. package/lib/types/_Identifier.js +2 -0
  29. package/lib/types/_IdentifierGroup.d.ts +58 -0
  30. package/lib/types/_IdentifierGroup.js +15 -1
  31. package/lib/types/equipment/item/BandageOrRemedy.d.ts +5 -2
  32. package/lib/types/equipment/item/CeremonialItem.d.ts +6 -3
  33. package/lib/types/equipment/item/CeremonialItem.js +1 -1
  34. package/lib/types/equipment/item/Clothes.d.ts +5 -2
  35. package/lib/types/equipment/item/Container.d.ts +5 -2
  36. package/lib/types/equipment/item/Elixir.d.ts +16 -1
  37. package/lib/types/equipment/item/Elixir.js +35 -5
  38. package/lib/types/equipment/item/EquipmentOfBlessedOnes.d.ts +5 -2
  39. package/lib/types/equipment/item/IlluminationLightSource.d.ts +5 -2
  40. package/lib/types/equipment/item/IlluminationRefillOrSupply.d.ts +5 -2
  41. package/lib/types/equipment/item/Liebesspielzeug.d.ts +5 -2
  42. package/lib/types/equipment/item/LuxuryGood.d.ts +5 -2
  43. package/lib/types/equipment/item/MagicalArtifact.d.ts +5 -2
  44. package/lib/types/equipment/item/MusicalInstrument.d.ts +5 -2
  45. package/lib/types/equipment/item/OrienteeringAid.d.ts +5 -2
  46. package/lib/types/equipment/item/Poison.d.ts +64 -91
  47. package/lib/types/equipment/item/Poison.js +5 -34
  48. package/lib/types/equipment/item/RopeOrChain.d.ts +5 -2
  49. package/lib/types/equipment/item/Stationery.d.ts +5 -2
  50. package/lib/types/equipment/item/ThievesTool.d.ts +5 -2
  51. package/lib/types/equipment/item/TravelGearOrTool.d.ts +5 -2
  52. package/lib/types/equipment/item/Weapon.d.ts +10 -4
  53. package/lib/types/equipment/item/WeaponAccessory.d.ts +5 -2
  54. package/lib/types/equipment/item/_Herbary.d.ts +31 -0
  55. package/lib/types/equipment/item/_Herbary.js +9 -0
  56. package/lib/types/equipment/item/_Item.d.ts +10 -4
  57. package/lib/types/equipment/item/_MeleeWeapon.d.ts +2 -2
  58. package/lib/types/equipment/item/_MeleeWeapon.js +1 -1
  59. package/lib/types/equipment/item/_RangedWeapon.d.ts +8 -2
  60. package/lib/types/equipment/item/_RangedWeapon.js +2 -2
  61. package/lib/types/equipment/item/sub/Reach.d.ts +1 -0
  62. package/lib/types/equipment/item/sub/Reach.js +7 -0
  63. package/lib/types/magicalActions/AnimistPower.d.ts +1 -0
  64. package/lib/types/magicalActions/Curse.d.ts +2 -0
  65. package/lib/types/magicalActions/DominationRitual.d.ts +2 -0
  66. package/lib/types/magicalActions/GeodeRitual.d.ts +1 -0
  67. package/lib/types/magicalActions/JesterTrick.d.ts +3 -0
  68. package/lib/types/magicalActions/MagicalMelody.d.ts +15 -0
  69. package/lib/types/magicalActions/MagicalMelody.js +5 -0
  70. package/lib/types/magicalActions/MagicalRune.d.ts +2 -0
  71. package/lib/types/magicalActions/ZibiljaRitual.d.ts +2 -0
  72. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +132 -0
  73. package/lib/types/prerequisites/PrerequisiteGroups.js +1 -0
  74. package/package.json +7 -7
  75. package/schema/Advantage.schema.json +0 -108
  76. package/schema/AnimalDisease.schema.json +0 -74
  77. package/schema/AnimalType.schema.json +0 -47
  78. package/schema/ArcaneBardTradition.schema.json +0 -11
  79. package/schema/ArcaneDancerTradition.schema.json +0 -11
  80. package/schema/Aspect.schema.json +0 -51
  81. package/schema/Attribute.schema.json +0 -57
  82. package/schema/Blessing.schema.json +0 -265
  83. package/schema/Cantrip.schema.json +0 -443
  84. package/schema/Ceremony.schema.json +0 -122
  85. package/schema/CombatTechnique_Close.schema.json +0 -116
  86. package/schema/CombatTechnique_Ranged.schema.json +0 -99
  87. package/schema/Condition.schema.json +0 -68
  88. package/schema/Continent.schema.json +0 -49
  89. package/schema/Culture.schema.json +0 -781
  90. package/schema/DerivedCharacteristic.schema.json +0 -90
  91. package/schema/Disadvantage.schema.json +0 -97
  92. package/schema/Disease.schema.json +0 -58
  93. package/schema/Element.schema.json +0 -48
  94. package/schema/ExperienceLevel.schema.json +0 -84
  95. package/schema/EyeColor.schema.json +0 -47
  96. package/schema/FamiliarsTrick.schema.json +0 -576
  97. package/schema/HairColor.schema.json +0 -47
  98. package/schema/Kirchenpraegung.schema.json +0 -11
  99. package/schema/Lessons_Curriculum.schema.json +0 -499
  100. package/schema/Lessons_Guideline.schema.json +0 -53
  101. package/schema/LiturgicalChant.schema.json +0 -122
  102. package/schema/Locale.schema.json +0 -38
  103. package/schema/MetaCondition.schema.json +0 -69
  104. package/schema/PactCategory.schema.json +0 -150
  105. package/schema/Patron.schema.json +0 -352
  106. package/schema/PatronCategory.schema.json +0 -57
  107. package/schema/PersonalityTrait.schema.json +0 -100
  108. package/schema/Profession.schema.json +0 -1424
  109. package/schema/Property.schema.json +0 -51
  110. package/schema/Race.schema.json +0 -534
  111. package/schema/Region.schema.json +0 -47
  112. package/schema/Ritual.schema.json +0 -120
  113. package/schema/Service.schema.json +0 -79
  114. package/schema/SexPractice.schema.json +0 -70
  115. package/schema/Skill.schema.json +0 -223
  116. package/schema/SkillGroup.schema.json +0 -57
  117. package/schema/SkillModificationLevel.schema.json +0 -153
  118. package/schema/SocialStatus.schema.json +0 -47
  119. package/schema/Spell.schema.json +0 -119
  120. package/schema/State.schema.json +0 -59
  121. package/schema/Talisman.schema.json +0 -120
  122. package/schema/TargetCategory.schema.json +0 -65
  123. package/schema/UI.schema.json +0 -4441
  124. package/schema/_Activatable.schema.json +0 -2755
  125. package/schema/_ActivatableSelectOptionCategory.schema.json +0 -1313
  126. package/schema/_ActivatableSkill.schema.json +0 -188
  127. package/schema/_ActivatableSkillCastingTime.schema.json +0 -181
  128. package/schema/_ActivatableSkillCheckResultBased.schema.json +0 -65
  129. package/schema/_ActivatableSkillCost.schema.json +0 -513
  130. package/schema/_ActivatableSkillDuration.schema.json +0 -353
  131. package/schema/_ActivatableSkillEffect.schema.json +0 -122
  132. package/schema/_ActivatableSkillRange.schema.json +0 -264
  133. package/schema/_ActivatableSkillTargetCategory.schema.json +0 -145
  134. package/schema/_AlternativeNames.schema.json +0 -23
  135. package/schema/_ArcaneTradition.schema.json +0 -51
  136. package/schema/_Blessed.schema.json +0 -64
  137. package/schema/_Dice.schema.json +0 -40
  138. package/schema/_DiseasePoison.schema.json +0 -152
  139. package/schema/_Enhancements.schema.json +0 -85
  140. package/schema/_I18n.schema.json +0 -55
  141. package/schema/_Identifier.schema.json +0 -2577
  142. package/schema/_IdentifierGroup.schema.json +0 -753
  143. package/schema/_ImprovementCost.schema.json +0 -23
  144. package/schema/_Influence.schema.json +0 -84
  145. package/schema/_NonEmptyString.schema.json +0 -14
  146. package/schema/_Prerequisite.schema.json +0 -1518
  147. package/schema/_ResponsiveText.schema.json +0 -66
  148. package/schema/_Sex.schema.json +0 -18
  149. package/schema/_SimpleReferences.schema.json +0 -522
  150. package/schema/_SkillCheck.schema.json +0 -38
  151. package/schema/_Spellwork.schema.json +0 -54
  152. package/schema/equipment/EquipmentPackage.schema.json +0 -79
  153. package/schema/equipment/item/Ammunition.schema.json +0 -56
  154. package/schema/equipment/item/Animal.schema.json +0 -36
  155. package/schema/equipment/item/AnimalCare.schema.json +0 -124
  156. package/schema/equipment/item/Armor.schema.json +0 -309
  157. package/schema/equipment/item/BandageOrRemedy.schema.json +0 -53
  158. package/schema/equipment/item/Book.schema.json +0 -89
  159. package/schema/equipment/item/CeremonialItem.schema.json +0 -59
  160. package/schema/equipment/item/Clothes.schema.json +0 -10
  161. package/schema/equipment/item/Container.schema.json +0 -10
  162. package/schema/equipment/item/Elixir.schema.json +0 -103
  163. package/schema/equipment/item/EquipmentOfBlessedOnes.schema.json +0 -49
  164. package/schema/equipment/item/GemOrPreciousStone.schema.json +0 -69
  165. package/schema/equipment/item/IlluminationLightSource.schema.json +0 -120
  166. package/schema/equipment/item/IlluminationRefillsOrSupplies.schema.json +0 -10
  167. package/schema/equipment/item/Jewelry.schema.json +0 -113
  168. package/schema/equipment/item/Liebesspielzeug.schema.json +0 -10
  169. package/schema/equipment/item/LuxuryGood.schema.json +0 -53
  170. package/schema/equipment/item/MagicalArtifact.schema.json +0 -64
  171. package/schema/equipment/item/MusicalInstrument.schema.json +0 -49
  172. package/schema/equipment/item/OrienteeringAid.schema.json +0 -10
  173. package/schema/equipment/item/Poison.schema.json +0 -835
  174. package/schema/equipment/item/RopeOrChain.schema.json +0 -10
  175. package/schema/equipment/item/Stationary.schema.json +0 -10
  176. package/schema/equipment/item/ThievesTool.schema.json +0 -10
  177. package/schema/equipment/item/ToolOfTheTrade.schema.json +0 -93
  178. package/schema/equipment/item/TravelGearOrTool.schema.json +0 -10
  179. package/schema/equipment/item/Vehicle.schema.json +0 -36
  180. package/schema/equipment/item/Weapon.schema.json +0 -285
  181. package/schema/equipment/item/WeaponAccessory.schema.json +0 -10
  182. package/schema/equipment/item/_Herbary.schema.json +0 -62
  183. package/schema/equipment/item/_Item.schema.json +0 -384
  184. package/schema/equipment/item/_MeleeWeapon.schema.json +0 -164
  185. package/schema/equipment/item/_RangedWeapon.schema.json +0 -185
  186. package/schema/equipment/item/_Weapon.schema.json +0 -99
  187. package/schema/equipment/item/sub/ArmorType.schema.json +0 -52
  188. package/schema/equipment/item/sub/Reach.schema.json +0 -47
  189. package/schema/magicalActions/AnimistPower.schema.json +0 -488
  190. package/schema/magicalActions/AnimistPower_Tribe.schema.json +0 -47
  191. package/schema/magicalActions/Curse.schema.json +0 -332
  192. package/schema/magicalActions/DominationRitual.schema.json +0 -275
  193. package/schema/magicalActions/ElvenMagicalSong.schema.json +0 -196
  194. package/schema/magicalActions/GeodeRitual.schema.json +0 -327
  195. package/schema/magicalActions/JesterTrick.schema.json +0 -311
  196. package/schema/magicalActions/MagicalDance.schema.json +0 -198
  197. package/schema/magicalActions/MagicalMelody.schema.json +0 -193
  198. package/schema/magicalActions/MagicalRune.schema.json +0 -578
  199. package/schema/magicalActions/ZibiljaRitual.schema.json +0 -165
  200. package/schema/magicalActions/_MusicTradition.schema.json +0 -82
  201. package/schema/magicalActions/_SkillReference.schema.json +0 -20
  202. package/schema/prerequisites/ConditionalPrerequisites.schema.json +0 -15
  203. package/schema/prerequisites/DisplayOption.schema.json +0 -70
  204. package/schema/prerequisites/PrerequisiteGroups.schema.json +0 -1029
  205. package/schema/prerequisites/single/ActivatablePrerequisite.schema.json +0 -45
  206. package/schema/prerequisites/single/AncestorBloodPrerequisite.schema.json +0 -14
  207. package/schema/prerequisites/single/AnimistPowerPrerequisite.schema.json +0 -36
  208. package/schema/prerequisites/single/CulturePrerequisite.schema.json +0 -24
  209. package/schema/prerequisites/single/EnhancementPrerequisite.schema.json +0 -61
  210. package/schema/prerequisites/single/InfluencePrerequisite.schema.json +0 -28
  211. package/schema/prerequisites/single/PactPrerequisite.schema.json +0 -36
  212. package/schema/prerequisites/single/PrimaryAttributePrerequisite.schema.json +0 -39
  213. package/schema/prerequisites/single/PublicationPrerequisite.schema.json +0 -22
  214. package/schema/prerequisites/single/RacePrerequisite.schema.json +0 -28
  215. package/schema/prerequisites/single/RatedMinimumNumberPrerequisite.schema.json +0 -172
  216. package/schema/prerequisites/single/RatedPrerequisite.schema.json +0 -29
  217. package/schema/prerequisites/single/RatedSumPrerequisite.schema.json +0 -33
  218. package/schema/prerequisites/single/RulePrerequisite.schema.json +0 -22
  219. package/schema/prerequisites/single/SexPrerequisite.schema.json +0 -23
  220. package/schema/prerequisites/single/SexualCharacteristicPrerequisite.schema.json +0 -30
  221. package/schema/prerequisites/single/SocialStatusPrerequisite.schema.json +0 -24
  222. package/schema/prerequisites/single/StatePrerequisite.schema.json +0 -23
  223. package/schema/prerequisites/single/TextPrerequisite.schema.json +0 -64
  224. package/schema/prerequisites/single/TraditionPrerequisite.schema.json +0 -58
  225. package/schema/rule/CoreRule.schema.json +0 -1403
  226. package/schema/rule/FocusRule.schema.json +0 -76
  227. package/schema/rule/FocusRule_Subject.schema.json +0 -48
  228. package/schema/rule/OptionalRule.schema.json +0 -64
  229. package/schema/source/Publication.schema.json +0 -103
  230. package/schema/source/_Erratum.schema.json +0 -36
  231. package/schema/source/_PublicationRef.schema.json +0 -285
  232. package/schema/specialAbility/AdvancedCombatSpecialAbility.schema.json +0 -102
  233. package/schema/specialAbility/AdvancedKarmaSpecialAbility.schema.json +0 -80
  234. package/schema/specialAbility/AdvancedMagicalSpecialAbility.schema.json +0 -80
  235. package/schema/specialAbility/AdvancedSkillSpecialAbility.schema.json +0 -80
  236. package/schema/specialAbility/AncestorGlyph.schema.json +0 -80
  237. package/schema/specialAbility/BlessedTradition.schema.json +0 -354
  238. package/schema/specialAbility/BrawlingSpecialAbility.schema.json +0 -82
  239. package/schema/specialAbility/CeremonialItemSpecialAbility.schema.json +0 -87
  240. package/schema/specialAbility/CombatSpecialAbility.schema.json +0 -98
  241. package/schema/specialAbility/CombatStyleSpecialAbility.schema.json +0 -273
  242. package/schema/specialAbility/CommandSpecialAbility.schema.json +0 -82
  243. package/schema/specialAbility/FamiliarSpecialAbility.schema.json +0 -74
  244. package/schema/specialAbility/FatePointSexSpecialAbility.schema.json +0 -74
  245. package/schema/specialAbility/FatePointSpecialAbility.schema.json +0 -84
  246. package/schema/specialAbility/GeneralSpecialAbility.schema.json +0 -88
  247. package/schema/specialAbility/KarmaSpecialAbility.schema.json +0 -78
  248. package/schema/specialAbility/LiturgicalStyleSpecialAbility.schema.json +0 -260
  249. package/schema/specialAbility/LycantropicGift.schema.json +0 -74
  250. package/schema/specialAbility/MagicStyleSpecialAbility.schema.json +0 -260
  251. package/schema/specialAbility/MagicalSign.schema.json +0 -72
  252. package/schema/specialAbility/MagicalSpecialAbility.schema.json +0 -88
  253. package/schema/specialAbility/MagicalTradition.schema.json +0 -163
  254. package/schema/specialAbility/PactGift.schema.json +0 -254
  255. package/schema/specialAbility/ProtectiveWardingCircleSpecialAbility.schema.json +0 -86
  256. package/schema/specialAbility/Sermon.schema.json +0 -74
  257. package/schema/specialAbility/SexSpecialAbility.schema.json +0 -80
  258. package/schema/specialAbility/SikaryanDrainSpecialAbility.schema.json +0 -78
  259. package/schema/specialAbility/SkillStyleSpecialAbility.schema.json +0 -254
  260. package/schema/specialAbility/VampiricGift.schema.json +0 -78
  261. package/schema/specialAbility/Vision.schema.json +0 -74
  262. package/schema/specialAbility/_Tradition.schema.json +0 -23
  263. package/schema/specialAbility/sub/Language.schema.json +0 -222
  264. package/schema/specialAbility/sub/Script.schema.json +0 -90
  265. package/schema/specialAbility/sub/TradeSecret.schema.json +0 -72
  266. package/schema/specialAbility/sub/_LanguageScript.schema.json +0 -24
  267. package/schema/traditionArtifacts/ArcaneOrbEnchantment.schema.json +0 -95
  268. package/schema/traditionArtifacts/AttireEnchantment.schema.json +0 -95
  269. package/schema/traditionArtifacts/BowlEnchantment.schema.json +0 -95
  270. package/schema/traditionArtifacts/CauldronEnchantment.schema.json +0 -115
  271. package/schema/traditionArtifacts/ChronicleEnchantment.schema.json +0 -95
  272. package/schema/traditionArtifacts/DaggerRitual.schema.json +0 -176
  273. package/schema/traditionArtifacts/FoolsHatEnchantment.schema.json +0 -95
  274. package/schema/traditionArtifacts/InstrumentEnchantment.schema.json +0 -95
  275. package/schema/traditionArtifacts/Krallenkettenzauber.schema.json +0 -95
  276. package/schema/traditionArtifacts/OrbEnchantment.schema.json +0 -95
  277. package/schema/traditionArtifacts/RingEnchantment.schema.json +0 -95
  278. package/schema/traditionArtifacts/SickleRitual.schema.json +0 -95
  279. package/schema/traditionArtifacts/SpellSwordEnchantment.schema.json +0 -99
  280. package/schema/traditionArtifacts/StaffEnchantment.schema.json +0 -103
  281. package/schema/traditionArtifacts/ToyEnchantment.schema.json +0 -95
  282. package/schema/traditionArtifacts/Trinkhornzauber.schema.json +0 -95
  283. package/schema/traditionArtifacts/WandEnchantment.schema.json +0 -87
  284. package/schema/traditionArtifacts/WeaponEnchantment.schema.json +0 -95
  285. package/schema/traditionArtifacts/sub/AnimalShape.schema.json +0 -85
  286. package/schema/traditionArtifacts/sub/AnimalShapePath.schema.json +0 -47
  287. package/schema/traditionArtifacts/sub/AnimalShapeSize.schema.json +0 -59
  288. package/schema/traditionArtifacts/sub/Brew.schema.json +0 -47
@@ -1,21 +1,8 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  export declare const Race: DB.Entity<"Race", {
3
3
  ap_value: DB.MemberDecl<DB.Integer, true>;
4
- base_values: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"BaseValues", DB.Object<{
5
- life_points: DB.MemberDecl<DB.Integer, true>;
6
- spirit: DB.MemberDecl<DB.Integer, true>;
7
- toughness: DB.MemberDecl<DB.Integer, true>;
8
- movement: DB.MemberDecl<DB.Integer, true>;
9
- }>, []>>, true>;
10
- attribute_adjustments: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"AttributeAdjustments", DB.Object<{
11
- fixed: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedAttributeAdjustment", DB.Object<{
12
- id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
13
- value: DB.MemberDecl<DB.Integer, true>;
14
- }>, []>>>, false>;
15
- selectable: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectableAttributeAdjustment", DB.Object<{
16
- list: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
17
- value: DB.MemberDecl<DB.Integer, true>;
18
- }>, []>>>, false>;
4
+ base_values: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"BaseValues", DB.NestedEntityMap<string, {
5
+ value: DB.MemberDecl<DB.Integer, true>;
19
6
  }>, []>>, true>;
20
7
  automatic_advantages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"AutomaticAdvantageDisadvantage", DB.Object<{
21
8
  id: DB.MemberDecl<DB.TypeArgument<DB.Param<"Identifier", DB.Type>>, true>;
@@ -35,6 +22,7 @@ export declare const Race: DB.Entity<"Race", {
35
22
  options: DB.MemberDecl<DB.String, true>;
36
23
  }>, false>;
37
24
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
25
+ hairColorCount: DB.MemberDecl<DB.Integer, false>;
38
26
  weight: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RandomWeightGeneration", DB.Object<{
39
27
  base: DB.MemberDecl<DB.Integer, true>;
40
28
  random: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"WeightDice", DB.Object<{
@@ -56,6 +44,16 @@ export declare const Race: DB.Entity<"Race", {
56
44
  }>, true>;
57
45
  variants: DB.MemberDecl<DB.ChildEntities<DB.Entity<"RaceVariant", {
58
46
  race: DB.MemberDecl<DB.ReferenceIdentifier, true>;
47
+ attribute_adjustments: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"AttributeAdjustments", DB.Object<{
48
+ fixed: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedAttributeAdjustment", DB.Object<{
49
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
50
+ value: DB.MemberDecl<DB.Integer, true>;
51
+ }>, []>>>, false>;
52
+ selectable: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectableAttributeAdjustment", DB.Object<{
53
+ list: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
54
+ value: DB.MemberDecl<DB.Integer, true>;
55
+ }>, []>>>, false>;
56
+ }>, []>>, true>;
59
57
  common_cultures: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
60
58
  common_advantages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"CommonnessRatedAdvantageDisadvantage", DB.Object<{
61
59
  id: DB.MemberDecl<DB.TypeArgument<DB.Param<"Identifier", DB.Type>>, true>;
@@ -81,8 +79,8 @@ export declare const Race: DB.Entity<"Race", {
81
79
  options: DB.MemberDecl<DB.String, true>;
82
80
  }>, false>;
83
81
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
84
- hair_color: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
85
- eye_color: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
82
+ hair_color: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
83
+ eye_color: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
86
84
  height: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RandomHeightGeneration", DB.Object<{
87
85
  base: DB.MemberDecl<DB.Integer, true>;
88
86
  random: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
@@ -146,6 +144,7 @@ export declare const Race: DB.Entity<"Race", {
146
144
  automatic_disadvantages: DB.MemberDecl<DB.String, false>;
147
145
  strongly_recommended_advantages: DB.MemberDecl<DB.String, false>;
148
146
  strongly_recommended_disadvantages: DB.MemberDecl<DB.String, false>;
147
+ hairColorLabel: DB.MemberDecl<DB.String, false>;
149
148
  errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
150
149
  date: DB.MemberDecl<DB.Date, true>;
151
150
  description: DB.MemberDecl<DB.String, true>;
@@ -154,6 +153,16 @@ export declare const Race: DB.Entity<"Race", {
154
153
  }, undefined>;
155
154
  export declare const RaceVariant: DB.Entity<"RaceVariant", {
156
155
  race: DB.MemberDecl<DB.ReferenceIdentifier, true>;
156
+ attribute_adjustments: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"AttributeAdjustments", DB.Object<{
157
+ fixed: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedAttributeAdjustment", DB.Object<{
158
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
159
+ value: DB.MemberDecl<DB.Integer, true>;
160
+ }>, []>>>, false>;
161
+ selectable: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"SelectableAttributeAdjustment", DB.Object<{
162
+ list: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
163
+ value: DB.MemberDecl<DB.Integer, true>;
164
+ }>, []>>>, false>;
165
+ }>, []>>, true>;
157
166
  common_cultures: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
158
167
  common_advantages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"CommonnessRatedAdvantageDisadvantage", DB.Object<{
159
168
  id: DB.MemberDecl<DB.TypeArgument<DB.Param<"Identifier", DB.Type>>, true>;
@@ -179,8 +188,8 @@ export declare const RaceVariant: DB.Entity<"RaceVariant", {
179
188
  options: DB.MemberDecl<DB.String, true>;
180
189
  }>, false>;
181
190
  }>, [Identifier: DB.Param<"Identifier", DB.Type>]>>>, false>;
182
- hair_color: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
183
- eye_color: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
191
+ hair_color: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
192
+ eye_color: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
184
193
  height: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"RandomHeightGeneration", DB.Object<{
185
194
  base: DB.MemberDecl<DB.Integer, true>;
186
195
  random: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Dice", DB.Object<{
package/lib/types/Race.js CHANGED
@@ -1,7 +1,9 @@
1
+ import { isNotNullish } from "@elyukai/utils/nullable";
1
2
  import * as DB from "tsondb/schema/dsl";
2
3
  import { CommonnessRatedAdvantageDisadvantage } from "./_CommonnessRatedAdvantageDisadvantage.js";
3
4
  import { Dice, DieType } from "./_Dice.js";
4
5
  import { AdvantageIdentifier, AttributeIdentifier, CultureIdentifier, DisadvantageIdentifier, EyeColorIdentifier, HairColorIdentifier, RaceIdentifier, } from "./_Identifier.js";
6
+ import { calculationContainsRaceBase, DerivedCharacteristic } from "./DerivedCharacteristic.js";
5
7
  import { ExperienceLevel } from "./ExperienceLevel.js";
6
8
  import { NestedTranslationMap } from "./Locale.js";
7
9
  import { Errata } from "./source/_Erratum.js";
@@ -18,10 +20,6 @@ export const Race = DB.Entity(import.meta.url, {
18
20
  comment: "The race’s base values.",
19
21
  type: DB.IncludeIdentifier(BaseValues),
20
22
  }),
21
- attribute_adjustments: DB.Required({
22
- comment: "Describes how to raise or lower maximum attribute values during character creation.",
23
- type: DB.IncludeIdentifier(AttributeAdjustments),
24
- }),
25
23
  automatic_advantages: DB.Optional({
26
24
  comment: "A list of automatically applied advantages. This does only work for advantages with no further configuration such as level or special selection.",
27
25
  type: DB.Array(DB.GenIncludeIdentifier(AutomaticAdvantageDisadvantage, [AdvantageIdentifier()]), {
@@ -40,6 +38,10 @@ export const Race = DB.Entity(import.meta.url, {
40
38
  comment: "A list of strongly recommended disadvantages.",
41
39
  type: DB.Array(DB.GenIncludeIdentifier(CommonnessRatedAdvantageDisadvantage, [DisadvantageIdentifier()]), { minItems: 1 }),
42
40
  }),
41
+ hairColorCount: DB.Optional({
42
+ comment: "How many different hair colors a race may have. By default, they have a single one that is for their whole body, but a race may have multiple if their hair color is different for different body parts. Additionally, if the hair color is labelled differently (e.g. scale color), there might be multiple colors for different body parts as well. This should only be set if the hair color count is higher than 1.",
43
+ type: DB.Integer({ minimum: 2 }),
44
+ }),
43
45
  weight: DB.Required({
44
46
  comment: "Configuration for random weight generation.",
45
47
  type: DB.IncludeIdentifier(RandomWeightGeneration),
@@ -93,6 +95,10 @@ export const Race = DB.Entity(import.meta.url, {
93
95
  comment: "The respective strongly recommended disadvantages text from the source book.",
94
96
  type: DB.String({ minLength: 1 }),
95
97
  }),
98
+ hairColorLabel: DB.Optional({
99
+ comment: "The label for hair colors if it is not a hair color in that sense: Some races may have different labels for hair color such as scale color.",
100
+ type: DB.String({ minLength: 1 }),
101
+ }),
96
102
  errata: DB.Optional({
97
103
  type: DB.IncludeIdentifier(Errata),
98
104
  }),
@@ -105,25 +111,29 @@ export const Race = DB.Entity(import.meta.url, {
105
111
  keyPathInEntityMap: "name",
106
112
  },
107
113
  ],
114
+ customConstraints: ({ instanceContent, getAllInstanceContainers, getDisplayNameAndId }) => {
115
+ const expectedBaseValues = getAllInstanceContainers("DerivedCharacteristic").filter(dc => calculationContainsRaceBase(dc.content.calculation.base));
116
+ const actualBaseValues = Object.keys(instanceContent.base_values);
117
+ return [
118
+ expectedBaseValues.length !== actualBaseValues.length ||
119
+ actualBaseValues.some(actual => !expectedBaseValues.some(expected => actual === expected.id))
120
+ ? `The race needs to define base values for ${expectedBaseValues.map(dc => getDisplayNameAndId("DerivedCharacteristic", dc.id)).join(", ")}, but defines ${actualBaseValues.map(dcId => getDisplayNameAndId("DerivedCharacteristic", dcId)).join(", ")}.`
121
+ : null,
122
+ ].filter(isNotNullish);
123
+ },
108
124
  });
109
125
  const BaseValues = DB.TypeAlias(import.meta.url, {
110
126
  name: "BaseValues",
111
- type: () => DB.Object({
112
- life_points: DB.Required({
113
- comment: "The race’s life point base value.",
114
- type: DB.Integer(),
115
- }),
116
- spirit: DB.Required({
117
- comment: "The race’s Spirit base value.",
118
- type: DB.Integer(),
119
- }),
120
- toughness: DB.Required({
121
- comment: "The race’s Toughness base value.",
122
- type: DB.Integer(),
123
- }),
124
- movement: DB.Required({
125
- comment: "The race’s tactical movement rate.",
126
- type: DB.Integer(),
127
+ type: () => DB.NestedEntityMap({
128
+ name: "RaceBaseValue",
129
+ namePlural: "RaceBaseValues",
130
+ comment: "The base value for a derived characteristic that is granted by the race.",
131
+ secondaryEntity: DerivedCharacteristic,
132
+ type: DB.Object({
133
+ value: DB.Required({
134
+ comment: "The base value for the derived characteristic that is granted by the race.",
135
+ type: DB.Integer(),
136
+ }),
127
137
  }),
128
138
  }),
129
139
  });
@@ -233,6 +243,10 @@ export const RaceVariant = DB.Entity(import.meta.url, {
233
243
  comment: "The associated race.",
234
244
  type: RaceIdentifier(),
235
245
  }),
246
+ attribute_adjustments: DB.Required({
247
+ comment: "Describes how to raise or lower maximum attribute values during character creation.",
248
+ type: DB.IncludeIdentifier(AttributeAdjustments),
249
+ }),
236
250
  common_cultures: DB.Optional({
237
251
  comment: "The list of common cultures.",
238
252
  type: DB.Array(CultureIdentifier(), { minItems: 1 }),
@@ -253,11 +267,11 @@ export const RaceVariant = DB.Entity(import.meta.url, {
253
267
  comment: "A list of uncommon disadvantages.",
254
268
  type: DB.Array(DB.GenIncludeIdentifier(CommonnessRatedAdvantageDisadvantage, [DisadvantageIdentifier()]), { minItems: 1 }),
255
269
  }),
256
- hair_color: DB.Optional({
270
+ hair_color: DB.Required({
257
271
  comment: "An array containing 20 (numeric) hair color identifiers. The array also represents the 20-sided die for a random hair color.",
258
272
  type: DB.Array(HairColorIdentifier(), { minItems: 20, maxItems: 20 }),
259
273
  }),
260
- eye_color: DB.Optional({
274
+ eye_color: DB.Required({
261
275
  comment: "An array containing 20 (numeric) eye color identifiers. The array also represents the 20-sided die for a random eye color.",
262
276
  type: DB.Array(EyeColorIdentifier(), { minItems: 20, maxItems: 20 }),
263
277
  }),
@@ -194,6 +194,7 @@ export declare const Ritual: DB.Entity<"Ritual", {
194
194
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
195
195
  QualityLevels: DB.EnumCase<null>;
196
196
  SkillPoints: DB.EnumCase<null>;
197
+ SkillRating: DB.EnumCase<null>;
197
198
  }, []>>, true>;
198
199
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
199
200
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -279,6 +280,7 @@ export declare const Ritual: DB.Entity<"Ritual", {
279
280
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
280
281
  QualityLevels: DB.EnumCase<null>;
281
282
  SkillPoints: DB.EnumCase<null>;
283
+ SkillRating: DB.EnumCase<null>;
282
284
  }, []>>, true>;
283
285
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
284
286
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -420,6 +422,7 @@ export declare const Ritual: DB.Entity<"Ritual", {
420
422
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
421
423
  QualityLevels: DB.EnumCase<null>;
422
424
  SkillPoints: DB.EnumCase<null>;
425
+ SkillRating: DB.EnumCase<null>;
423
426
  }, []>>, true>;
424
427
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
425
428
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -194,6 +194,7 @@ export declare const Spell: DB.Entity<"Spell", {
194
194
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
195
195
  QualityLevels: DB.EnumCase<null>;
196
196
  SkillPoints: DB.EnumCase<null>;
197
+ SkillRating: DB.EnumCase<null>;
197
198
  }, []>>, true>;
198
199
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
199
200
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -279,6 +280,7 @@ export declare const Spell: DB.Entity<"Spell", {
279
280
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
280
281
  QualityLevels: DB.EnumCase<null>;
281
282
  SkillPoints: DB.EnumCase<null>;
283
+ SkillRating: DB.EnumCase<null>;
282
284
  }, []>>, true>;
283
285
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
284
286
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -420,6 +422,7 @@ export declare const Spell: DB.Entity<"Spell", {
420
422
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
421
423
  QualityLevels: DB.EnumCase<null>;
422
424
  SkillPoints: DB.EnumCase<null>;
425
+ SkillRating: DB.EnumCase<null>;
423
426
  }, []>>, true>;
424
427
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
425
428
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -1,4 +1,5 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import { MathOperation } from "./_MathExpression.js";
2
3
  export declare const Talisman: DB.Entity<"Talisman", {
3
4
  tradition: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
4
5
  type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"TalismanType", {
@@ -8,6 +9,27 @@ export declare const Talisman: DB.Entity<"Talisman", {
8
9
  Regalia: DB.EnumCase<null>;
9
10
  PowerfulTalisman: DB.EnumCase<null>;
10
11
  }, []>>, false>;
12
+ activation: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivation", DB.Object<{
13
+ cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivationCost", DB.Object<{
14
+ value: DB.MemberDecl<DB.Integer, true>;
15
+ unit: DB.MemberDecl<DB.ReferenceIdentifier, true>;
16
+ }>, []>>, true>;
17
+ duration: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivationDuration", DB.Object<{
18
+ value: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivationDurationExpression", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], MathOperation>, []>>, true>;
19
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
20
+ Seconds: DB.EnumCase<null>;
21
+ Minutes: DB.EnumCase<null>;
22
+ Hours: DB.EnumCase<null>;
23
+ Days: DB.EnumCase<null>;
24
+ Weeks: DB.EnumCase<null>;
25
+ Months: DB.EnumCase<null>;
26
+ Years: DB.EnumCase<null>;
27
+ Centuries: DB.EnumCase<null>;
28
+ Actions: DB.EnumCase<null>;
29
+ CombatRounds: DB.EnumCase<null>;
30
+ }, []>>, true>;
31
+ }>, []>>, true>;
32
+ }>, []>>, false>;
11
33
  ap_value: DB.MemberDecl<DB.Integer, false>;
12
34
  combatUse: DB.MemberDecl<DB.Object<{
13
35
  melee_uses: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -25,7 +47,7 @@ export declare const Talisman: DB.Entity<"Talisman", {
25
47
  }, []>>, false>;
26
48
  attackModifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"AttackModifier", DB.Integer, []>>, false>;
27
49
  parryModifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ParryModifier", DB.Integer, []>>, false>;
28
- reach: DB.MemberDecl<DB.ReferenceIdentifier, false>;
50
+ reach: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
29
51
  length: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Length", DB.Integer, []>>, false>;
30
52
  size: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ShieldSize", {
31
53
  Small: DB.EnumCase<null>;
@@ -48,7 +70,10 @@ export declare const Talisman: DB.Entity<"Talisman", {
48
70
  medium: DB.MemberDecl<DB.Integer, true>;
49
71
  far: DB.MemberDecl<DB.Integer, true>;
50
72
  }>, []>>, true>;
51
- ammunition: DB.MemberDecl<DB.ReferenceIdentifier, false>;
73
+ ammunition: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"AmmunitionishIdentifier", {
74
+ Ammunition: DB.EnumCase<DB.ReferenceIdentifier>;
75
+ Weapon: DB.EnumCase<DB.ReferenceIdentifier>;
76
+ }, []>>, false>;
52
77
  length: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Length", DB.Integer, []>>, false>;
53
78
  is_improvised_weapon: DB.MemberDecl<DB.Boolean, true>;
54
79
  }>, false>;
@@ -97,13 +122,14 @@ export declare const Talisman: DB.Entity<"Talisman", {
97
122
  translations: DB.MemberDecl<DB.NestedEntityMap<"TalismanTranslation", {
98
123
  name: DB.MemberDecl<DB.String, true>;
99
124
  effect: DB.MemberDecl<DB.String, true>;
100
- activation: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"TalismanActivationTranslation", DB.Object<{
101
- cost: DB.MemberDecl<DB.Integer, true>;
102
- duration: DB.MemberDecl<DB.String, true>;
103
- }>, []>>, false>;
104
125
  errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
105
126
  date: DB.MemberDecl<DB.Date, true>;
106
127
  description: DB.MemberDecl<DB.String, true>;
107
128
  }>, []>>>, []>>, false>;
108
129
  }>, true>;
109
130
  }, undefined>;
131
+ export declare const TalismanActivationDurationExpression: DB.TypeAlias<"TalismanActivationDurationExpression", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], MathOperation>, []>;
132
+ export declare const TalismanActivationDurationExpressionValue: DB.Enum<"TalismanActivationDurationExpressionValue", {
133
+ Constant: DB.EnumCase<DB.Integer>;
134
+ QualityLevels: DB.EnumCase<null>;
135
+ }, []>;
@@ -1,6 +1,7 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import { DurationUnit } from "./_ActivatableSkillDuration.js";
2
3
  import { Dice } from "./_Dice.js";
3
- import { BlessedTraditionIdentifier } from "./_Identifier.js";
4
+ import { BlessedTraditionIdentifier, DerivedCharacteristicIdentifier } from "./_Identifier.js";
4
5
  import { MathOperation } from "./_MathExpression.js";
5
6
  import { CloseCombatTechnique, RangedCombatTechnique } from "./CombatTechnique.js";
6
7
  import { GenMeleeWeapon } from "./equipment/item/_MeleeWeapon.js";
@@ -21,6 +22,10 @@ export const Talisman = DB.Entity(import.meta.url, {
21
22
  comment: "The talisman type, if any.",
22
23
  type: DB.IncludeIdentifier(TalismanType),
23
24
  }),
25
+ activation: DB.Optional({
26
+ comment: "The activation parameters.",
27
+ type: DB.IncludeIdentifier(TalismanActivation),
28
+ }),
24
29
  ap_value: DB.Optional({
25
30
  comment: "The AP value for the required trade secret, if possible.",
26
31
  type: DB.Integer({ minimum: 5, multipleOf: 5 }),
@@ -59,10 +64,6 @@ export const Talisman = DB.Entity(import.meta.url, {
59
64
  comment: "The effect description.",
60
65
  type: DB.String({ minLength: 1, markdown: "block" }),
61
66
  }),
62
- activation: DB.Optional({
63
- comment: "The activation parameters.",
64
- type: DB.IncludeIdentifier(TalismanActivationTranslation),
65
- }),
66
67
  errata: DB.Optional({
67
68
  type: DB.IncludeIdentifier(Errata),
68
69
  }),
@@ -113,16 +114,55 @@ const TalismanType = DB.Enum(import.meta.url, {
113
114
  PowerfulTalisman: DB.EnumCase({ type: null }),
114
115
  }),
115
116
  });
116
- const TalismanActivationTranslation = DB.TypeAlias(import.meta.url, {
117
- name: "TalismanActivationTranslation",
117
+ const TalismanActivation = DB.TypeAlias(import.meta.url, {
118
+ name: "TalismanActivation",
118
119
  type: () => DB.Object({
119
120
  cost: DB.Required({
120
- comment: "The KP cost.",
121
- type: DB.Integer({ minimum: 0 }),
121
+ comment: "The cost to activate the talisman.",
122
+ type: DB.IncludeIdentifier(TalismanActivationCost),
122
123
  }),
123
124
  duration: DB.Required({
124
- comment: "The duration.",
125
- type: DB.String({ minLength: 1 }),
125
+ comment: "The duration of how long the talisman will be active.",
126
+ type: DB.IncludeIdentifier(TalismanActivationDuration),
127
+ }),
128
+ }),
129
+ });
130
+ const TalismanActivationCost = DB.TypeAlias(import.meta.url, {
131
+ name: "TalismanActivationCost",
132
+ type: () => DB.Object({
133
+ value: DB.Required({
134
+ comment: "The (numeric) cost value.",
135
+ type: DB.Integer({ minimum: 0 }),
126
136
  }),
137
+ unit: DB.Required({
138
+ comment: "The unit in which to pay the cost.",
139
+ type: DerivedCharacteristicIdentifier(),
140
+ }),
141
+ }),
142
+ });
143
+ const TalismanActivationDuration = DB.TypeAlias(import.meta.url, {
144
+ name: "TalismanActivationDuration",
145
+ type: () => DB.Object({
146
+ value: DB.Required({
147
+ comment: "The (numeric) duration value.",
148
+ type: DB.IncludeIdentifier(TalismanActivationDurationExpression),
149
+ }),
150
+ unit: DB.Required({
151
+ comment: "The unit of the duration.",
152
+ type: DB.IncludeIdentifier(DurationUnit),
153
+ }),
154
+ }),
155
+ });
156
+ export const TalismanActivationDurationExpression = DB.TypeAlias(import.meta.url, {
157
+ name: "TalismanActivationDurationExpression",
158
+ type: () => DB.GenIncludeIdentifier(MathOperation, [
159
+ DB.IncludeIdentifier(TalismanActivationDurationExpressionValue),
160
+ ]),
161
+ });
162
+ export const TalismanActivationDurationExpressionValue = DB.Enum(import.meta.url, {
163
+ name: "TalismanActivationDurationExpressionValue",
164
+ values: () => ({
165
+ Constant: DB.EnumCase({ type: DB.Integer({ minimum: 1 }) }),
166
+ QualityLevels: DB.EnumCase({ type: null }),
127
167
  }),
128
168
  });
@@ -185,6 +185,7 @@ export declare const OneTimePerformanceParameters: DB.TypeAlias<"OneTimePerforma
185
185
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
186
186
  QualityLevels: DB.EnumCase<null>;
187
187
  SkillPoints: DB.EnumCase<null>;
188
+ SkillRating: DB.EnumCase<null>;
188
189
  }, []>>, true>;
189
190
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
190
191
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -270,6 +271,7 @@ export declare const OneTimePerformanceParameters: DB.TypeAlias<"OneTimePerforma
270
271
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
271
272
  QualityLevels: DB.EnumCase<null>;
272
273
  SkillPoints: DB.EnumCase<null>;
274
+ SkillRating: DB.EnumCase<null>;
273
275
  }, []>>, true>;
274
276
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
275
277
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -491,6 +493,7 @@ export declare const FastPerformanceParameters: DB.Enum<"FastPerformanceParamete
491
493
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
492
494
  QualityLevels: DB.EnumCase<null>;
493
495
  SkillPoints: DB.EnumCase<null>;
496
+ SkillRating: DB.EnumCase<null>;
494
497
  }, []>>, true>;
495
498
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
496
499
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -576,6 +579,7 @@ export declare const FastPerformanceParameters: DB.Enum<"FastPerformanceParamete
576
579
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
577
580
  QualityLevels: DB.EnumCase<null>;
578
581
  SkillPoints: DB.EnumCase<null>;
582
+ SkillRating: DB.EnumCase<null>;
579
583
  }, []>>, true>;
580
584
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
581
585
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -717,6 +721,7 @@ export declare const FastPerformanceParameters: DB.Enum<"FastPerformanceParamete
717
721
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
718
722
  QualityLevels: DB.EnumCase<null>;
719
723
  SkillPoints: DB.EnumCase<null>;
724
+ SkillRating: DB.EnumCase<null>;
720
725
  }, []>>, true>;
721
726
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
722
727
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -946,6 +951,7 @@ export declare const SlowPerformanceParameters: DB.Enum<"SlowPerformanceParamete
946
951
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
947
952
  QualityLevels: DB.EnumCase<null>;
948
953
  SkillPoints: DB.EnumCase<null>;
954
+ SkillRating: DB.EnumCase<null>;
949
955
  }, []>>, true>;
950
956
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
951
957
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -1031,6 +1037,7 @@ export declare const SlowPerformanceParameters: DB.Enum<"SlowPerformanceParamete
1031
1037
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
1032
1038
  QualityLevels: DB.EnumCase<null>;
1033
1039
  SkillPoints: DB.EnumCase<null>;
1040
+ SkillRating: DB.EnumCase<null>;
1034
1041
  }, []>>, true>;
1035
1042
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
1036
1043
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -1172,6 +1179,7 @@ export declare const SlowPerformanceParameters: DB.Enum<"SlowPerformanceParamete
1172
1179
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
1173
1180
  QualityLevels: DB.EnumCase<null>;
1174
1181
  SkillPoints: DB.EnumCase<null>;
1182
+ SkillRating: DB.EnumCase<null>;
1175
1183
  }, []>>, true>;
1176
1184
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
1177
1185
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -2,6 +2,7 @@ import * as DB from "tsondb/schema/dsl";
2
2
  export declare const CheckResultValue: DB.Enum<"CheckResultValue", {
3
3
  QualityLevels: DB.EnumCase<null>;
4
4
  SkillPoints: DB.EnumCase<null>;
5
+ SkillRating: DB.EnumCase<null>;
5
6
  }, []>;
6
7
  export declare const CheckResultBasedModifier: DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
7
8
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -14,6 +15,7 @@ export declare const CheckResultBased: DB.TypeAlias<"CheckResultBased", DB.Objec
14
15
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
15
16
  QualityLevels: DB.EnumCase<null>;
16
17
  SkillPoints: DB.EnumCase<null>;
18
+ SkillRating: DB.EnumCase<null>;
17
19
  }, []>>, true>;
18
20
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
19
21
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -5,6 +5,7 @@ export const CheckResultValue = DB.Enum(import.meta.url, {
5
5
  values: () => ({
6
6
  QualityLevels: DB.EnumCase({ type: null }),
7
7
  SkillPoints: DB.EnumCase({ type: null }),
8
+ SkillRating: DB.EnumCase({ type: null }),
8
9
  }),
9
10
  });
10
11
  const CheckResultArithmetic = DB.Enum(import.meta.url, {
@@ -58,6 +58,7 @@ export declare const DurationForOneTime: DB.Enum<"DurationForOneTime", {
58
58
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
59
59
  QualityLevels: DB.EnumCase<null>;
60
60
  SkillPoints: DB.EnumCase<null>;
61
+ SkillRating: DB.EnumCase<null>;
61
62
  }, []>>, true>;
62
63
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
63
64
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -121,6 +122,7 @@ export declare const CheckResultBasedDuration: DB.TypeAlias<"CheckResultBasedDur
121
122
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
122
123
  QualityLevels: DB.EnumCase<null>;
123
124
  SkillPoints: DB.EnumCase<null>;
125
+ SkillRating: DB.EnumCase<null>;
124
126
  }, []>>, true>;
125
127
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
126
128
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -24,6 +24,7 @@ export declare const Range: DB.TypeAlias<"Range", DB.Object<{
24
24
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
25
25
  QualityLevels: DB.EnumCase<null>;
26
26
  SkillPoints: DB.EnumCase<null>;
27
+ SkillRating: DB.EnumCase<null>;
27
28
  }, []>>, true>;
28
29
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
29
30
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -50,6 +50,7 @@ export declare const CultureIdentifier: () => R;
50
50
  export declare const CurriculumIdentifier: () => R;
51
51
  export declare const CurseIdentifier: () => R;
52
52
  export declare const DaggerRitualIdentifier: () => R;
53
+ export declare const DerivedCharacteristicIdentifier: () => R;
53
54
  export declare const DisadvantageIdentifier: () => R;
54
55
  export declare const DiseaseIdentifier: () => R;
55
56
  export declare const DominationRitualIdentifier: () => R;
@@ -15,6 +15,7 @@ import { CloseCombatTechnique, RangedCombatTechnique } from "./CombatTechnique.j
15
15
  import { Condition } from "./Condition.js";
16
16
  import { Continent } from "./Continent.js";
17
17
  import { Culture } from "./Culture.js";
18
+ import { DerivedCharacteristic } from "./DerivedCharacteristic.js";
18
19
  import { Disadvantage } from "./Disadvantage.js";
19
20
  import { Disease } from "./Disease.js";
20
21
  import { Element } from "./Element.js";
@@ -202,6 +203,7 @@ export const CultureIdentifier = () => R(Culture);
202
203
  export const CurriculumIdentifier = () => R(Curriculum);
203
204
  export const CurseIdentifier = () => R(Curse);
204
205
  export const DaggerRitualIdentifier = () => R(DaggerRitual);
206
+ export const DerivedCharacteristicIdentifier = () => R(DerivedCharacteristic);
205
207
  export const DisadvantageIdentifier = () => R(Disadvantage);
206
208
  export const DiseaseIdentifier = () => R(Disease);
207
209
  export const DominationRitualIdentifier = () => R(DominationRitual);
@@ -133,6 +133,60 @@ export declare const CombatRelatedSpecialAbilityIdentifier: DB.Enum<"CombatRelat
133
133
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
134
134
  CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
135
135
  }, []>;
136
+ export declare const ProfessionSpecialAbilityIdentifier: DB.Enum<"ProfessionSpecialAbilityIdentifier", {
137
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
138
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
139
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
140
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
141
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
142
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
143
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
144
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
145
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
146
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
147
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
148
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
149
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
150
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
151
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
152
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
153
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
154
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
155
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
156
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
157
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
158
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
159
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
160
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
161
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
162
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
163
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
164
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
165
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
166
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
167
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
168
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
169
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
170
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
171
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
172
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
173
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
174
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
175
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
176
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
177
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
178
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
179
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
180
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
181
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
182
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
183
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
184
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
185
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
186
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
187
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
188
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
189
+ }, []>;
136
190
  export declare const TraditionIdentifier: DB.Enum<"TraditionIdentifier", {
137
191
  MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
138
192
  BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -347,6 +401,10 @@ export declare const EquipmentIdentifier: DB.Enum<"EquipmentIdentifier", {
347
401
  WeaponAccessory: DB.EnumCase<DB.ReferenceIdentifier>;
348
402
  WorkingSupernaturalCreature: DB.EnumCase<DB.ReferenceIdentifier>;
349
403
  }, []>;
404
+ export declare const AmmunitionishIdentifier: DB.Enum<"AmmunitionishIdentifier", {
405
+ Ammunition: DB.EnumCase<DB.ReferenceIdentifier>;
406
+ Weapon: DB.EnumCase<DB.ReferenceIdentifier>;
407
+ }, []>;
350
408
  export declare const AdvancedSkillStyleSpecialAbilityIdentifier: DB.Enum<"AdvancedSkillStyleSpecialAbilityIdentifier", {
351
409
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
352
410
  AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;