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
@@ -194,6 +194,7 @@ export declare const Ceremony: DB.Entity<"Ceremony", {
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 Ceremony: DB.Entity<"Ceremony", {
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 Ceremony: DB.Entity<"Ceremony", {
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,7 +1,27 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
+ import type { DerivedCharacteristicBase } from "../../gen/types.js";
2
3
  import { MathOperation } from "./_MathExpression.ts";
3
4
  export declare const DerivedCharacteristic: DB.Entity<"DerivedCharacteristic", {
4
5
  position: DB.MemberDecl<DB.Integer, true>;
6
+ type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DerivedCharacteristicType", {
7
+ Energy: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"EnergyType", DB.Object<{
8
+ purchase: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicPurchase", DB.Object<{
9
+ improvementCost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ImprovementCost", {
10
+ A: DB.EnumCase<null>;
11
+ B: DB.EnumCase<null>;
12
+ C: DB.EnumCase<null>;
13
+ D: DB.EnumCase<null>;
14
+ }, []>>, true>;
15
+ maximum: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicBase", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], MathOperation>, []>>, true>;
16
+ }>, []>>, false>;
17
+ permanentLoss: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicPermanentLoss", DB.Object<{
18
+ canBeBoughtBack: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicBuyBack", DB.Object<{
19
+ cost: DB.MemberDecl<DB.Integer, true>;
20
+ }>, []>>, false>;
21
+ }>, []>>, false>;
22
+ }>, []>>>;
23
+ Resistance: DB.EnumCase<null>;
24
+ }, []>>, false>;
5
25
  calculation: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicCalculation", DB.Object<{
6
26
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicBase", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], MathOperation>, []>>, true>;
7
27
  modifiers: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicModifier", DB.Object<{
@@ -165,20 +185,6 @@ export declare const DerivedCharacteristic: DB.Entity<"DerivedCharacteristic", {
165
185
  }, []>>, true>;
166
186
  value: DB.MemberDecl<DB.Integer, true>;
167
187
  }>, []>>>, false>;
168
- purchasable: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicPurchase", DB.Object<{
169
- improvementCost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ImprovementCost", {
170
- A: DB.EnumCase<null>;
171
- B: DB.EnumCase<null>;
172
- C: DB.EnumCase<null>;
173
- D: DB.EnumCase<null>;
174
- }, []>>, true>;
175
- maximum: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicBase", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], MathOperation>, []>>, true>;
176
- }>, []>>, false>;
177
- permanentLoss: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicPermanentLoss", DB.Object<{
178
- canBeBoughtBack: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicBuyBack", DB.Object<{
179
- cost: DB.MemberDecl<DB.Integer, true>;
180
- }>, []>>, false>;
181
- }>, []>>, false>;
182
188
  }>, []>>, true>;
183
189
  prerequisites: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"DerivedCharacteristicPrerequisites", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.TypeAlias<"PlainPrerequisites", DB.Array<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"PrerequisitesElement", {
184
190
  Single: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
@@ -256,3 +262,6 @@ export declare const DerivedCharacteristic: DB.Entity<"DerivedCharacteristic", {
256
262
  }>, []>>, false>;
257
263
  }>, true>;
258
264
  }, undefined>;
265
+ declare const DerivedCharacteristicBase: DB.TypeAlias<"DerivedCharacteristicBase", DB.IncludeIdentifier<DB.Param<string, DB.Type>[], MathOperation>, []>;
266
+ export declare const calculationContainsRaceBase: (base: DerivedCharacteristicBase) => boolean;
267
+ export {};
@@ -1,4 +1,6 @@
1
+ import { assertExhaustive } from "@elyukai/utils/typeSafety";
1
2
  import * as DB from "tsondb/schema/dsl";
3
+ import { fromUniformCase } from "tsondb/schema/gen";
2
4
  import { NestedTranslationMap } from "./Locale.js";
3
5
  import { AttributeIdentifier } from "./_Identifier.js";
4
6
  import { ImprovementCost } from "./_ImprovementCost.js";
@@ -14,6 +16,10 @@ export const DerivedCharacteristic = DB.Entity(import.meta.url, {
14
16
  comment: "The position of the derived characteristic in lists. This has to be a unique value.",
15
17
  type: DB.Integer({ minimum: 0 }),
16
18
  }),
19
+ type: DB.Optional({
20
+ comment: "The derived characteristic may have a specific use in the game.",
21
+ type: DB.IncludeIdentifier(DerivedCharacteristicType),
22
+ }),
17
23
  calculation: DB.Required({
18
24
  comment: "Instructions for calculating the derived characteristic’s value.",
19
25
  type: DB.IncludeIdentifier(DerivedCharacteristicCalculation),
@@ -59,6 +65,34 @@ export const DerivedCharacteristic = DB.Entity(import.meta.url, {
59
65
  },
60
66
  ],
61
67
  });
68
+ const DerivedCharacteristicType = DB.Enum(import.meta.url, {
69
+ name: "DerivedCharacteristicType",
70
+ comment: "The type of the derived characteristic, which determines how it can be used in the game.",
71
+ values: () => ({
72
+ Energy: DB.EnumCase({
73
+ comment: "The derived characteristic works like an energy in that it can be spent on various actions and abilities, and also be refilled based on certain conditions.",
74
+ type: DB.IncludeIdentifier(EnergyType),
75
+ }),
76
+ Resistance: DB.EnumCase({
77
+ comment: "The derived characteristic represents a resistance against certain effects.",
78
+ type: null,
79
+ }),
80
+ }),
81
+ });
82
+ const EnergyType = DB.TypeAlias(import.meta.url, {
83
+ name: "EnergyType",
84
+ comment: "Additional values that can be defined for an energy.",
85
+ type: () => DB.Object({
86
+ purchase: DB.Optional({
87
+ comment: "If set, the energy’s maximum value can be improved by spending AP.\n\nIf the energy’s permanent losses can be bought back, points will not be able to be purchased unless all permanent losses have been bought back.",
88
+ type: DB.IncludeIdentifier(DerivedCharacteristicPurchase),
89
+ }),
90
+ permanentLoss: DB.Optional({
91
+ comment: "If set, the energy can suffer permanent losses that reduce its maximum value. It may also be possible to buy back these permanent losses.",
92
+ type: DB.IncludeIdentifier(DerivedCharacteristicPermanentLoss),
93
+ }),
94
+ }),
95
+ });
62
96
  const DerivedCharacteristicCalculation = DB.TypeAlias(import.meta.url, {
63
97
  name: "DerivedCharacteristicCalculation",
64
98
  type: () => DB.Object({
@@ -70,23 +104,6 @@ const DerivedCharacteristicCalculation = DB.TypeAlias(import.meta.url, {
70
104
  comment: "A list of modifiers that are applied to the base value. The modifiers are applied in the order they appear in the list.",
71
105
  type: DB.Array(DB.IncludeIdentifier(DerivedCharacteristicModifier), { minItems: 1 }),
72
106
  }),
73
- purchasable: DB.Optional({
74
- comment: "If set, the derived characteristic can be improved by spending AP.\n\nIf the derived characteristic’s permanent losses can be bought back, points will not be able to be purchased unless all permanent losses have been bought back.",
75
- type: DB.IncludeIdentifier(DerivedCharacteristicPurchase),
76
- }),
77
- permanentLoss: DB.Optional({
78
- comment: "If set, the derived characteristic can suffer permanent losses that reduce its maximum value. It may also be possible to buy back these permanent losses.",
79
- type: DB.IncludeIdentifier(DerivedCharacteristicPermanentLoss),
80
- }),
81
- }),
82
- });
83
- const DerivedCharacteristicRaceBaseValue = DB.Enum(import.meta.url, {
84
- name: "DerivedCharacteristicRaceBaseValue",
85
- values: () => ({
86
- LifePoints: DB.EnumCase({ type: null }),
87
- Spirit: DB.EnumCase({ type: null }),
88
- Toughness: DB.EnumCase({ type: null }),
89
- Movement: DB.EnumCase({ type: null }),
90
107
  }),
91
108
  });
92
109
  const DerivedCharacteristicPrimaryAttributeValue = DB.Enum(import.meta.url, {
@@ -101,10 +118,7 @@ const DerivedCharacteristicBaseValue = DB.Enum(import.meta.url, {
101
118
  values: () => ({
102
119
  Constant: DB.EnumCase({ type: DB.Integer() }),
103
120
  Attribute: DB.EnumCase({ type: AttributeIdentifier() }),
104
- RaceBaseValue: DB.EnumCase({
105
- displayName: "Base Value from Race",
106
- type: DB.IncludeIdentifier(DerivedCharacteristicRaceBaseValue),
107
- }),
121
+ RaceBaseValue: DB.EnumCase({ displayName: "Base Value from Race", type: null }),
108
122
  PrimaryAttribute: DB.EnumCase({
109
123
  type: DB.IncludeIdentifier(DerivedCharacteristicPrimaryAttributeValue),
110
124
  }),
@@ -114,6 +128,29 @@ const DerivedCharacteristicBase = DB.TypeAlias(import.meta.url, {
114
128
  name: "DerivedCharacteristicBase",
115
129
  type: () => DB.GenIncludeIdentifier(MathOperation, [DB.IncludeIdentifier(DerivedCharacteristicBaseValue)]),
116
130
  });
131
+ export const calculationContainsRaceBase = (base) => {
132
+ switch (base.kind) {
133
+ case "Value":
134
+ switch (base.Value.kind) {
135
+ case "RaceBaseValue":
136
+ return true;
137
+ case "Constant":
138
+ case "Attribute":
139
+ case "PrimaryAttribute":
140
+ return false;
141
+ default:
142
+ return assertExhaustive(base.Value);
143
+ }
144
+ case "Addition":
145
+ case "Subtraction":
146
+ case "Multiplication":
147
+ case "Division":
148
+ case "Exponentiation": {
149
+ const [left, right] = fromUniformCase(base);
150
+ return calculationContainsRaceBase(left) || calculationContainsRaceBase(right);
151
+ }
152
+ }
153
+ };
117
154
  const DerivedCharacteristicModifierOperation = DB.Enum(import.meta.url, {
118
155
  name: "DerivedCharacteristicModifierOperation",
119
156
  values: () => ({
@@ -41,6 +41,8 @@ export declare const Disease: DB.Entity<"Disease", {
41
41
  }>, [T: DB.Param<"T", DB.Type>]>>>;
42
42
  }, [T: DB.Param<"T", DB.Type>]>>>, [T: DB.Param<"T", DB.Type>]>>, []>>, false>;
43
43
  }>, []>>, false>;
44
+ isChildhoodDisease: DB.MemberDecl<DB.Boolean, true>;
45
+ isMagicalDisease: DB.MemberDecl<DB.Boolean, true>;
44
46
  src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
45
47
  id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
46
48
  occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
@@ -14,6 +14,14 @@ export const Disease = DB.Entity(import.meta.url, {
14
14
  comment: "AP value and prerequisites of the disease’s trade secret.",
15
15
  type: DB.IncludeIdentifier(RecipeTradeSecret),
16
16
  }),
17
+ isChildhoodDisease: DB.Required({
18
+ comment: "Whether the disease is a childhood disease.",
19
+ type: DB.Boolean(),
20
+ }),
21
+ isMagicalDisease: DB.Required({
22
+ comment: "Whether the disease is a magical disease.",
23
+ type: DB.Boolean(),
24
+ }),
17
25
  src,
18
26
  translations: NestedTranslationMap(DB.Required, "Disease", DiseaseTranslation),
19
27
  }),
@@ -1,6 +1,7 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
2
  export declare const FamiliarsTrick: DB.Entity<"FamiliarsTrick", {
3
3
  animal_types: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
4
+ traditions: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
4
5
  parameters: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"FamiliarsTrickPerformanceParameters", {
5
6
  OneTime: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FamiliarsTrickOneTimePerformanceParameters", DB.Object<{
6
7
  cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"FamiliarsTrickOneTimeCost", {
@@ -2,7 +2,7 @@ import * as DB from "tsondb/schema/dsl";
2
2
  import { OldParameter } from "./_ActivatableSkill.js";
3
3
  import { IndefiniteOneTimeCost, NonModifiableOneTimeCostPerCountable, } from "./_ActivatableSkillCost.js";
4
4
  import { DurationUnitValue, FixedDuration, IndefiniteDuration, } from "./_ActivatableSkillDuration.js";
5
- import { AnimalTypeIdentifier, PropertyIdentifier } from "./_Identifier.js";
5
+ import { AnimalTypeIdentifier, MagicalTraditionIdentifier, PropertyIdentifier, } from "./_Identifier.js";
6
6
  import { ResponsiveText } from "./_ResponsiveText.js";
7
7
  import { NestedTranslationMap } from "./Locale.js";
8
8
  import { Errata } from "./source/_Erratum.js";
@@ -16,9 +16,15 @@ export const FamiliarsTrick = DB.Entity(import.meta.url, {
16
16
  animal_types: DB.Required({
17
17
  comment: `The animal types this trick is available to. Either it is available to all or only a list of specific animal types.
18
18
 
19
- If no animal types are given, the animal disease applies to all animal types.`,
19
+ If no animal types are given, the familiars trick applies to all animal types.`,
20
20
  type: DB.Array(AnimalTypeIdentifier(), { uniqueItems: true }),
21
21
  }),
22
+ traditions: DB.Optional({
23
+ comment: `The magical traditions whose familiars can use this trick. Either it is available to all or only a list of specific traditions.
24
+
25
+ If no traditions are given, the familiars trick is not restricted by the magical tradition at all.`,
26
+ type: DB.Array(MagicalTraditionIdentifier(), { uniqueItems: true, minItems: 1 }),
27
+ }),
22
28
  parameters: DB.Required({
23
29
  comment: "Measurable parameters of a familiar’s trick.",
24
30
  type: DB.IncludeIdentifier(FamiliarsTrickPerformanceParameters),
@@ -194,6 +194,7 @@ export declare const LiturgicalChant: DB.Entity<"LiturgicalChant", {
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 LiturgicalChant: DB.Entity<"LiturgicalChant", {
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 LiturgicalChant: DB.Entity<"LiturgicalChant", {
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", {
@@ -75,7 +75,7 @@ export declare const Locale: DB.Entity<"Locale", {
75
75
  "Personal Data": null;
76
76
  "Character Sheet": null;
77
77
  Pact: null;
78
- Rules: null;
78
+ "Rule Set": null;
79
79
  "Race, Culture & Profession": null;
80
80
  Race: null;
81
81
  Culture: null;
@@ -902,6 +902,7 @@ export declare const Locale: DB.Entity<"Locale", {
902
902
  CD: null;
903
903
  Object: null;
904
904
  Effect: null;
905
+ Rules: null;
905
906
  "Casting Time": null;
906
907
  "Ritual Time": null;
907
908
  "Liturgical Time": null;
@@ -1514,6 +1515,8 @@ export declare const Locale: DB.Entity<"Locale", {
1514
1515
  ".input {$value :number} {{{$value}%}}": null;
1515
1516
  "Animal Types": null;
1516
1517
  "Communicability to Intelligent Creatures": null;
1518
+ "childhood disease": null;
1519
+ "magical disease": null;
1517
1520
  "Can be combined with": null;
1518
1521
  Skill: null;
1519
1522
  "{$defaultDuration}, but no more than {$maximumDuration}": null;
@@ -1533,10 +1536,7 @@ export declare const Locale: DB.Entity<"Locale", {
1533
1536
  "All AE": null;
1534
1537
  "All AE, at least {$value} AE": null;
1535
1538
  "depends on spent AE": null;
1536
- "Life Point Base Value": null;
1537
- "Spirit Base Value": null;
1538
- "Toughness Base Value": null;
1539
- "Movement Base Value": null;
1539
+ "{$derivedCharacteristic} Base Value": null;
1540
1540
  "Attribute Adjustments": null;
1541
1541
  "one attribute of your choice": null;
1542
1542
  "Common Cultures": null;
@@ -1576,12 +1576,13 @@ export declare const Locale: DB.Entity<"Locale", {
1576
1576
  "no Skill Specialization for a {$skillOfGroup}": null;
1577
1577
  ".input {$count :number} {{{$count} of the following combat techniques {$rating}}}": null;
1578
1578
  ".input {$count :number} {{{$previous}, {$count} others {$rating}}}": null;
1579
- "{$previous}, all others {$rating}": null;
1579
+ "{$previous}, the others {$rating}": null;
1580
1580
  "Curses totaling {$apValue} AP": null;
1581
1581
  "no Curses totaling {$apValue} AP": null;
1582
1582
  "Liturgies totaling {$apValue} AP": null;
1583
1583
  "no Liturgies totaling {$apValue} AP": null;
1584
1584
  "{$apValue} AP to improve other {$skillsOfGroup}": null;
1585
+ "{$apValue} AP to distribute among the following skills: {$list}": null;
1585
1586
  "no AP to improve other {$skillsOfGroup}": null;
1586
1587
  ".input {$count :number} {{{$count} cantrips}}": null;
1587
1588
  "{$count} from the following list": null;
@@ -1592,6 +1593,9 @@ export declare const Locale: DB.Entity<"Locale", {
1592
1593
  Enhancements: null;
1593
1594
  "SR {$value}": null;
1594
1595
  ".input {$hiddenCount :number} {{Prerequisites}}": null;
1596
+ "Spell Enhancement {$spell}": null;
1597
+ "Ritual Enhancement {$ritual}": null;
1598
+ "Liturgical Enhancement {$liturgicalChantOrCeremony}": null;
1595
1599
  "Profession Package": null;
1596
1600
  "Optional Rule": null;
1597
1601
  }>, false>;
@@ -94,7 +94,7 @@ export const Locale = DB.Entity(import.meta.url, {
94
94
  "Personal Data": null,
95
95
  "Character Sheet": null,
96
96
  "Pact": null,
97
- "Rules": null,
97
+ "Rule Set": null,
98
98
  "Race, Culture & Profession": null,
99
99
  "Race": null,
100
100
  "Culture": null,
@@ -926,6 +926,7 @@ export const Locale = DB.Entity(import.meta.url, {
926
926
  "CD": null,
927
927
  "Object": null,
928
928
  "Effect": null,
929
+ "Rules": null,
929
930
  "Casting Time": null,
930
931
  "Ritual Time": null,
931
932
  "Liturgical Time": null,
@@ -1558,6 +1559,8 @@ export const Locale = DB.Entity(import.meta.url, {
1558
1559
  ".input {$value :number} {{{$value}%}}": null,
1559
1560
  "Animal Types": null,
1560
1561
  "Communicability to Intelligent Creatures": null,
1562
+ "childhood disease": null,
1563
+ "magical disease": null,
1561
1564
  // personality traits
1562
1565
  "Can be combined with": null,
1563
1566
  // magical actions
@@ -1581,10 +1584,7 @@ export const Locale = DB.Entity(import.meta.url, {
1581
1584
  "All AE, at least {$value} AE": null,
1582
1585
  "depends on spent AE": null,
1583
1586
  // races
1584
- "Life Point Base Value": null,
1585
- "Spirit Base Value": null,
1586
- "Toughness Base Value": null,
1587
- "Movement Base Value": null,
1587
+ "{$derivedCharacteristic} Base Value": null,
1588
1588
  "Attribute Adjustments": null,
1589
1589
  "one attribute of your choice": null,
1590
1590
  "Common Cultures": null,
@@ -1626,12 +1626,13 @@ export const Locale = DB.Entity(import.meta.url, {
1626
1626
  "no Skill Specialization for a {$skillOfGroup}": null,
1627
1627
  ".input {$count :number} {{{$count} of the following combat techniques {$rating}}}": null,
1628
1628
  ".input {$count :number} {{{$previous}, {$count} others {$rating}}}": null,
1629
- "{$previous}, all others {$rating}": null,
1629
+ "{$previous}, the others {$rating}": null,
1630
1630
  "Curses totaling {$apValue} AP": null,
1631
1631
  "no Curses totaling {$apValue} AP": null,
1632
1632
  "Liturgies totaling {$apValue} AP": null,
1633
1633
  "no Liturgies totaling {$apValue} AP": null,
1634
1634
  "{$apValue} AP to improve other {$skillsOfGroup}": null,
1635
+ "{$apValue} AP to distribute among the following skills: {$list}": null,
1635
1636
  "no AP to improve other {$skillsOfGroup}": null,
1636
1637
  ".input {$count :number} {{{$count} cantrips}}": null,
1637
1638
  "{$count} from the following list": null,
@@ -1643,6 +1644,9 @@ export const Locale = DB.Entity(import.meta.url, {
1643
1644
  "Enhancements": null,
1644
1645
  "SR {$value}": null,
1645
1646
  ".input {$hiddenCount :number} {{Prerequisites}}": null,
1647
+ "Spell Enhancement {$spell}": null,
1648
+ "Ritual Enhancement {$ritual}": null,
1649
+ "Liturgical Enhancement {$liturgicalChantOrCeremony}": null,
1646
1650
  // Library Entry Subtitles
1647
1651
  "Profession Package": null,
1648
1652
  "Optional Rule": null,
@@ -71,6 +71,7 @@ export declare const Profession: DB.Entity<"Profession", {
71
71
  }>, []>>, false>;
72
72
  skills: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SkillsOptions", DB.Object<{
73
73
  group: DB.MemberDecl<DB.ReferenceIdentifier, true>;
74
+ specific: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
74
75
  ap_value: DB.MemberDecl<DB.Integer, true>;
75
76
  }>, []>>, false>;
76
77
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LiturgiesOptions", DB.Object<{
@@ -79,7 +80,8 @@ export declare const Profession: DB.Entity<"Profession", {
79
80
  }>, []>>, false>;
80
81
  special_abilities: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
81
82
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
82
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
83
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
84
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
83
85
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
84
86
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
85
87
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -156,7 +158,8 @@ export declare const Profession: DB.Entity<"Profession", {
156
158
  }>, []>>>;
157
159
  Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
158
160
  options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
159
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
161
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
162
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
160
163
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
161
164
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
162
165
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -342,7 +345,8 @@ export declare const Profession: DB.Entity<"Profession", {
342
345
  }, []>>, true>;
343
346
  value: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
344
347
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
345
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
348
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
349
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
346
350
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
347
351
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
348
352
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -419,7 +423,8 @@ export declare const Profession: DB.Entity<"Profession", {
419
423
  }>, []>>>;
420
424
  Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
421
425
  options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
422
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
426
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
427
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
423
428
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
424
429
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
425
430
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -704,6 +709,7 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
704
709
  }>, []>>, false>;
705
710
  skills: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SkillsOptions", DB.Object<{
706
711
  group: DB.MemberDecl<DB.ReferenceIdentifier, true>;
712
+ specific: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
707
713
  ap_value: DB.MemberDecl<DB.Integer, true>;
708
714
  }>, []>>, false>;
709
715
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LiturgiesOptions", DB.Object<{
@@ -712,7 +718,8 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
712
718
  }>, []>>, false>;
713
719
  special_abilities: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
714
720
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
715
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
721
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
722
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
716
723
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
717
724
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
718
725
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -789,7 +796,8 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
789
796
  }>, []>>>;
790
797
  Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
791
798
  options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
792
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
799
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
800
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
793
801
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
794
802
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
795
803
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -975,7 +983,8 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
975
983
  }, []>>, true>;
976
984
  value: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
977
985
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
978
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
986
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
987
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
979
988
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
980
989
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
981
990
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1052,7 +1061,8 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
1052
1061
  }>, []>>>;
1053
1062
  Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
1054
1063
  options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
1055
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
1064
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
1065
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
1056
1066
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1057
1067
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1058
1068
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1329,6 +1339,7 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1329
1339
  }>, []>>, false>;
1330
1340
  skills: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SkillsOptions", DB.Object<{
1331
1341
  group: DB.MemberDecl<DB.ReferenceIdentifier, true>;
1342
+ specific: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
1332
1343
  ap_value: DB.MemberDecl<DB.Integer, true>;
1333
1344
  }>, []>>, false>;
1334
1345
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LiturgiesOptions", DB.Object<{
@@ -1337,7 +1348,8 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1337
1348
  }>, []>>, false>;
1338
1349
  special_abilities: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
1339
1350
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
1340
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
1351
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
1352
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
1341
1353
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1342
1354
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1343
1355
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1414,7 +1426,8 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1414
1426
  }>, []>>>;
1415
1427
  Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
1416
1428
  options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
1417
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
1429
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
1430
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
1418
1431
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1419
1432
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1420
1433
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1600,7 +1613,8 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1600
1613
  }, []>>, true>;
1601
1614
  value: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
1602
1615
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
1603
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
1616
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
1617
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
1604
1618
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1605
1619
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1606
1620
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1677,7 +1691,8 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1677
1691
  }>, []>>>;
1678
1692
  Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
1679
1693
  options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
1680
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
1694
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
1695
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
1681
1696
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1682
1697
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1683
1698
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1874,7 +1889,8 @@ export declare const ProfessionVariant: DB.Entity<"ProfessionVariant", {
1874
1889
  }, []>>, true>;
1875
1890
  value: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbility", {
1876
1891
  Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
1877
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
1892
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
1893
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
1878
1894
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1879
1895
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1880
1896
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1951,7 +1967,8 @@ export declare const ProfessionVariant: DB.Entity<"ProfessionVariant", {
1951
1967
  }>, []>>>;
1952
1968
  Selection: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ProfessionSpecialAbilitySelection", DB.Object<{
1953
1969
  options: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"ConstantProfessionSpecialAbility", DB.Object<{
1954
- id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
1970
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ProfessionSpecialAbilityIdentifier", {
1971
+ Enhancement: DB.EnumCase<DB.ReferenceIdentifier>;
1955
1972
  AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1956
1973
  AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1957
1974
  AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -1,7 +1,8 @@
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 { AdvantageIdentifier, CantripIdentifier, CurriculumIdentifier, DisadvantageIdentifier, ExperienceLevelIdentifier, MagicalTraditionIdentifier, ProfessionIdentifier, ProfessionPackageIdentifier, ProfessionVersionIdentifier, SkillGroupIdentifier, SkillIdentifier, } from "./_Identifier.js";
4
- import { CombatTechniqueIdentifier, LiturgyIdentifier, MagicalActionIdentifier, RequirableSelectOptionIdentifier, SpecialAbilityIdentifier, SpellworkIdentifier, } from "./_IdentifierGroup.js";
5
+ import { CombatTechniqueIdentifier, LiturgyIdentifier, MagicalActionIdentifier, ProfessionSpecialAbilityIdentifier, RequirableSelectOptionIdentifier, SpellworkIdentifier, } from "./_IdentifierGroup.js";
5
6
  import { ProfessionPrerequisites } from "./_Prerequisite.js";
6
7
  import { NestedTranslationMap } from "./Locale.js";
7
8
  import { Errata } from "./source/_Erratum.js";
@@ -305,7 +306,7 @@ const ConstantProfessionSpecialAbility = DB.TypeAlias(import.meta.url, {
305
306
  type: () => DB.Object({
306
307
  id: DB.Required({
307
308
  comment: "The identifier of the special ability to grant.",
308
- type: DB.IncludeIdentifier(SpecialAbilityIdentifier),
309
+ type: DB.IncludeIdentifier(ProfessionSpecialAbilityIdentifier),
309
310
  }),
310
311
  level: DB.Optional({
311
312
  comment: "The level of the received special ability. If not specified and the special ability has levels, level 1 is used automatically.",
@@ -585,11 +586,20 @@ const SkillsOptions = DB.TypeAlias(import.meta.url, {
585
586
  comment: "If specified, you may only choose from skills of the specified group.",
586
587
  type: SkillGroupIdentifier(),
587
588
  }),
589
+ specific: DB.Optional({
590
+ comment: "The list of specific skills to distribute AP to.",
591
+ type: DB.Array(SkillIdentifier(), { minItems: 2 }),
592
+ }),
588
593
  ap_value: DB.Required({
589
594
  comment: "The AP value you can buy skills for.",
590
595
  type: DB.Integer({ minimum: 1 }),
591
596
  }),
592
597
  }),
598
+ customConstraints: ({ instanceContent, getInstanceById }) => [
599
+ (instanceContent.specific?.some(skillId => getInstanceById("Skill", skillId)?.group !== instanceContent.group) ?? false)
600
+ ? "All selected skills must be from the selected group."
601
+ : undefined,
602
+ ].filter(isNotNullish),
593
603
  });
594
604
  const LiturgiesOptions = DB.TypeAlias(import.meta.url, {
595
605
  name: "LiturgiesOptions",