@optolith/database-schema 0.77.0 → 0.78.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 (48) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/gen/types.d.ts +299 -3
  3. package/lib/cache/activatableSelectOptions.d.ts +2 -2
  4. package/lib/cache/activatableSelectOptions.js +2 -58
  5. package/lib/main.js +2 -0
  6. package/lib/types/Attribute.js +1 -3
  7. package/lib/types/Culture.d.ts +1 -0
  8. package/lib/types/Culture.js +5 -1
  9. package/lib/types/DerivedCharacteristic.js +1 -3
  10. package/lib/types/Locale.d.ts +10 -0
  11. package/lib/types/Locale.js +11 -0
  12. package/lib/types/Profession.d.ts +178 -154
  13. package/lib/types/Profession.js +40 -1
  14. package/lib/types/Race.d.ts +1 -0
  15. package/lib/types/Race.js +10 -0
  16. package/lib/types/SkillGroup.js +1 -3
  17. package/lib/types/SocialStatus.js +1 -0
  18. package/lib/types/Talisman.js +1 -1
  19. package/lib/types/_ActivatableSelectOptions.d.ts +10 -0
  20. package/lib/types/_ActivatableSelectOptions.js +40 -0
  21. package/lib/types/_Identifier.d.ts +2 -0
  22. package/lib/types/_Identifier.js +4 -0
  23. package/lib/types/equipment/item/BandageOrRemedy.js +1 -1
  24. package/lib/types/equipment/item/CeremonialItem.js +1 -1
  25. package/lib/types/equipment/item/Clothes.js +1 -1
  26. package/lib/types/equipment/item/Container.js +1 -1
  27. package/lib/types/equipment/item/EquipmentCategory.d.ts +121 -0
  28. package/lib/types/equipment/item/EquipmentCategory.js +131 -0
  29. package/lib/types/equipment/item/EquipmentOfBlessedOnes.js +1 -1
  30. package/lib/types/equipment/item/IlluminationLightSource.js +1 -1
  31. package/lib/types/equipment/item/IlluminationRefillOrSupply.js +1 -1
  32. package/lib/types/equipment/item/Item.d.ts +287 -0
  33. package/lib/types/equipment/item/Item.js +167 -0
  34. package/lib/types/equipment/item/Liebesspielzeug.js +1 -1
  35. package/lib/types/equipment/item/LuxuryGood.js +1 -1
  36. package/lib/types/equipment/item/MagicalArtifact.js +1 -1
  37. package/lib/types/equipment/item/MusicalInstrument.js +1 -1
  38. package/lib/types/equipment/item/TravelGearOrTool.js +1 -1
  39. package/lib/types/equipment/item/Weapon.js +1 -1
  40. package/lib/types/equipment/item/WeaponAccessory.js +1 -1
  41. package/lib/types/equipment/item/_Item.js +1 -1
  42. package/lib/types/equipment/item/_Weapon.d.ts +2 -2
  43. package/lib/types/equipment/item/_Weapon.js +7 -4
  44. package/lib/types/equipment/item/sub/Reach.js +1 -3
  45. package/lib/types/index.d.ts +2 -0
  46. package/lib/types/index.js +2 -0
  47. package/lib/types/prerequisites/single/ActivatablePrerequisite.js +2 -0
  48. package/package.json +9 -9
package/CHANGELOG.md CHANGED
@@ -2,6 +2,36 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [0.78.0](https://github.com/Optolith/database-schema/compare/v0.77.1...v0.78.0) (2026-10-05)
6
+
7
+ ### ⚠ BREAKING CHANGES
8
+
9
+ * generalize special ability option selection for professions
10
+ * languages option with optional scripts inclusion
11
+ * missing magical action category translations
12
+ * some plant translations
13
+ * translation for empty profession variants
14
+
15
+ ### Features
16
+
17
+ * generalize special ability option selection for professions ([ef7d2c9](https://github.com/Optolith/database-schema/commit/ef7d2c9903f987720f173815e5454fdfa06b3a84))
18
+ * languages option with optional scripts inclusion ([31862d3](https://github.com/Optolith/database-schema/commit/31862d38d0027dae845f8b69218395c4307bf59d))
19
+ * optional different race and culture names within prerequisites ([5025e80](https://github.com/Optolith/database-schema/commit/5025e80131e41ad68aca9e51881f5ee08c23dad1))
20
+ * prepare activatable options validation ([d0c7e87](https://github.com/Optolith/database-schema/commit/d0c7e87e3ae9aac67aa4259e63ce8c9c51e1fb3e))
21
+ * some plant translations ([8f3fa6b](https://github.com/Optolith/database-schema/commit/8f3fa6ba1b569b9bcd3b355d01fd86c9fe287478))
22
+
23
+ ### Bug Fixes
24
+
25
+ * missing magical action category translations ([510d11b](https://github.com/Optolith/database-schema/commit/510d11bd9e98d478ec3e4ab37627496b3c8deec9))
26
+ * translation for empty profession variants ([8f63b30](https://github.com/Optolith/database-schema/commit/8f63b30e14508ee0f900626bdefafed1b2657078))
27
+
28
+ ## [0.77.1](https://github.com/Optolith/database-schema/compare/v0.77.0...v0.77.1) (2026-10-03)
29
+
30
+ ### Features
31
+
32
+ * generic item and equipment category entities ([c154d95](https://github.com/Optolith/database-schema/commit/c154d955d161b02d8d43d13dad8a6b881a333e92))
33
+ * mark entities sortable by index value ([5c8dd28](https://github.com/Optolith/database-schema/commit/5c8dd28937e9176b431cb8e693e816e06fcfb8d5))
34
+
5
35
  ## [0.77.0](https://github.com/Optolith/database-schema/compare/v0.76.0...v0.77.0) (2026-10-01)
6
36
 
7
37
  ### ⚠ BREAKING CHANGES
package/gen/types.d.ts CHANGED
@@ -65,6 +65,7 @@ export type EntityMap = {
65
65
  Elixir: Elixir
66
66
  ElvenMagicalSong: ElvenMagicalSong
67
67
  Enhancement: Enhancement
68
+ EquipmentCategory: EquipmentCategory
68
69
  EquipmentOfBlessedOnes: EquipmentOfBlessedOnes
69
70
  EquipmentPackage: EquipmentPackage
70
71
  ExperienceLevel: ExperienceLevel
@@ -91,6 +92,7 @@ export type EntityMap = {
91
92
  IlluminationRefillOrSupply: IlluminationRefillOrSupply
92
93
  Influence: Influence
93
94
  InstrumentEnchantment: InstrumentEnchantment
95
+ Item: Item
94
96
  JesterTrick: JesterTrick
95
97
  Jewelry: Jewelry
96
98
  KarmaSpecialAbility: KarmaSpecialAbility
@@ -317,6 +319,7 @@ export type EnumMap = {
317
319
  EncumbranceInfluence: EncumbranceInfluence
318
320
  EnhancementAdventurePoints: EnhancementAdventurePoints
319
321
  EnhancementPrerequisiteGroup: EnhancementPrerequisiteGroup
322
+ EquipmentCategoryType: EquipmentCategoryType
320
323
  EquipmentIdentifier: EquipmentIdentifier
321
324
  ExpressionBasedParameterExpressionValue: ExpressionBasedParameterExpressionValue
322
325
  ExpressionBasedPoisonTimeExpressionValue: ExpressionBasedPoisonTimeExpressionValue
@@ -410,6 +413,7 @@ export type EnumMap = {
410
413
  ProfessionPrerequisiteGroup: ProfessionPrerequisiteGroup
411
414
  ProfessionSpecialAbility: ProfessionSpecialAbility
412
415
  ProfessionSpecialAbilityIdentifier: ProfessionSpecialAbilityIdentifier
416
+ ProfessionSpecialAbilityOption: ProfessionSpecialAbilityOption
413
417
  PropertyDeclaration: PropertyDeclaration
414
418
  PublicationCategory: PublicationCategory
415
419
  PublicationPrerequisiteGroup: PublicationPrerequisiteGroup
@@ -452,6 +456,7 @@ export type EnumMap = {
452
456
  SlowSkillCastingTimeUnit: SlowSkillCastingTimeUnit
453
457
  SpecialAbilityGroup: SpecialAbilityGroup
454
458
  SpecialAbilityIdentifier: SpecialAbilityIdentifier
459
+ SpecialEquipmentCategoryEntity: SpecialEquipmentCategoryEntity
455
460
  SpecificAffectedTargetCategoryIdentifier: SpecificAffectedTargetCategoryIdentifier
456
461
  SpecificFromSkillSelectOptionCategoryCategoryOperation: SpecificFromSkillSelectOptionCategoryCategoryOperation
457
462
  SpellFilter: SpellFilter
@@ -470,6 +475,7 @@ export type EnumMap = {
470
475
  TradeSecretSelectOptionCategory: TradeSecretSelectOptionCategory
471
476
  TribePrerequisiteGroup: TribePrerequisiteGroup
472
477
  ValueMapStyle: ValueMapStyle
478
+ ValueRule: ValueRule
473
479
  VariantOptionAction: VariantOptionAction<unknown>
474
480
  VariantSpecialAbilityAction: VariantSpecialAbilityAction
475
481
  Volume: Volume
@@ -503,6 +509,7 @@ export type TypeAliasMap = {
503
509
  AllApplicableCloseCombatTechniques: AllApplicableCloseCombatTechniques
504
510
  AllApplicableCombatTechniques: AllApplicableCombatTechniques
505
511
  AllApplicableRangedCombatTechniques: AllApplicableRangedCombatTechniques
512
+ AllowedCombatValues: AllowedCombatValues
506
513
  AlternativeName: AlternativeName
507
514
  AnimalFeed: AnimalFeed
508
515
  AnimalPowers: AnimalPowers
@@ -596,6 +603,7 @@ export type TypeAliasMap = {
596
603
  CustomDurationUnit: CustomDurationUnit
597
604
  CustomMagicalRuneSuboption: CustomMagicalRuneSuboption
598
605
  DaggerRitualArcaneEnergyCost: DaggerRitualArcaneEnergyCost
606
+ DefaultEquipmentCategoryTypeRules: DefaultEquipmentCategoryTypeRules
599
607
  DefaultPrimaryAttributeDamageThreshold: DefaultPrimaryAttributeDamageThreshold
600
608
  DefaultRangedDamage: DefaultRangedDamage
601
609
  DefiniteBookCostVariant: DefiniteBookCostVariant
@@ -833,6 +841,7 @@ export type TypeAliasMap = {
833
841
  ProfessionPrerequisite: ProfessionPrerequisite
834
842
  ProfessionPrerequisites: ProfessionPrerequisites
835
843
  ProfessionSpecialAbilitySelection: ProfessionSpecialAbilitySelection
844
+ ProfessionSpecialAbilitySelectionItem: ProfessionSpecialAbilitySelectionItem
836
845
  ProfessionSpellworkIdentifier: ProfessionSpellworkIdentifier
837
846
  ProfessionVariantPackageOptions: ProfessionVariantPackageOptions
838
847
  ProfessionVariantPrerequisites: ProfessionVariantPrerequisites
@@ -2019,6 +2028,9 @@ export interface Locale {
2019
2028
  "Animist Powers": string
2020
2029
  "Geode Rituals": string
2021
2030
  "Zibilja Rituals": string
2031
+ "Bannzeichen": string
2032
+ "Goblin Rituals": string
2033
+ "Magical Runes": string
2022
2034
  "Mod": string
2023
2035
  "Check Modifier": string
2024
2036
  "spells.traditions.general": string
@@ -2690,6 +2702,10 @@ export interface Locale {
2690
2702
  ".input {$count :number} {{check required every {$count}. application in the same month}}": string & { __params: { "count": number } }
2691
2703
  "see {$link}": string & { __params: { "link": string } }
2692
2704
  "CoD": string
2705
+ "Search Difficulty": string
2706
+ "Identification Difficulty": string
2707
+ "Plant Applications": string
2708
+ "Remedies and Traditions": string
2693
2709
  "Romance Novel": string
2694
2710
  "Poetry": string
2695
2711
  "Political Pamphlet": string
@@ -2782,6 +2798,8 @@ export interface Locale {
2782
2798
  "Variants": string
2783
2799
  "Languages and Literacy totaling {$apValue} AP": string & { __params: { "apValue": string } }
2784
2800
  "no Languages and Literacy totaling {$apValue} AP": string & { __params: { "apValue": string } }
2801
+ "Languages totaling {$apValue} AP": string & { __params: { "apValue": string } }
2802
+ "no Languages totaling {$apValue} AP": string & { __params: { "apValue": string } }
2785
2803
  "Skill Specialization {$possibleSkills}": string & { __params: { "possibleSkills": string } }
2786
2804
  "no Skill Specialization {$possibleSkills}": string & { __params: { "possibleSkills": string } }
2787
2805
  "Skill Specialization for a {$skillOfGroup}": string & { __params: { "skillOfGroup": string } }
@@ -2808,6 +2826,7 @@ export interface Locale {
2808
2826
  "except for {$list :list type=conjunction}": string & { __params: { "list": string[] } }
2809
2827
  "depends on selected tradition": string
2810
2828
  "Additional Prerequisites": string
2829
+ "no changes": string
2811
2830
  "Enhancements": string
2812
2831
  "SR {$value}": string & { __params: { "value": string } }
2813
2832
  ".input {$hiddenCount :number} {{Prerequisites}}": string & { __params: { "hiddenCount": number } }
@@ -4672,6 +4691,11 @@ export interface RaceTranslation {
4672
4691
  */
4673
4692
  name: string
4674
4693
 
4694
+ /**
4695
+ * The race’s name in prerequisites, if different from the normal race’s name.
4696
+ */
4697
+ nameInPrerequisites?: string
4698
+
4675
4699
  /**
4676
4700
  * 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.
4677
4701
  */
@@ -9754,10 +9778,15 @@ export type Culture_ID = string
9754
9778
 
9755
9779
  export interface CultureTranslation {
9756
9780
  /**
9757
- * The race’s name.
9781
+ * The culture’s name.
9758
9782
  */
9759
9783
  name: string
9760
9784
 
9785
+ /**
9786
+ * The culture’s name in prerequisites, if different from the normal culture’s name.
9787
+ */
9788
+ nameInPrerequisites?: string
9789
+
9761
9790
  /**
9762
9791
  * The description of the area knowledge.
9763
9792
  */
@@ -10154,6 +10183,11 @@ export interface SpecificSkillSpecializationOptions {
10154
10183
  * Buy languages and scripts for a specific amount of AP.
10155
10184
  */
10156
10185
  export interface LanguagesScriptsOptions {
10186
+ /**
10187
+ * If scripts are included in the selection.
10188
+ */
10189
+ includeScripts: boolean
10190
+
10157
10191
  /**
10158
10192
  * The AP value you can buy languages and scripts for.
10159
10193
  */
@@ -10510,7 +10544,7 @@ export interface ConstantProfessionSpecialAbility {
10510
10544
  /**
10511
10545
  * Received select options. Order is important. Typically, you only need the first array index, though.
10512
10546
  */
10513
- options?: RequirableSelectOptionIdentifier[]
10547
+ options?: ProfessionSpecialAbilityOption[]
10514
10548
  }
10515
10549
 
10516
10550
  export type ProfessionSpecialAbilityIdentifier =
@@ -18273,11 +18307,37 @@ export interface WeaponEnchantmentTranslation {
18273
18307
  errata?: Errata
18274
18308
  }
18275
18309
 
18310
+ export type ProfessionSpecialAbilityOption =
18311
+ | {
18312
+ kind: "Identifier"
18313
+ Identifier: RequirableSelectOptionIdentifier
18314
+ }
18315
+ | {
18316
+ kind: "Select"
18317
+ }
18318
+
18276
18319
  export interface ProfessionSpecialAbilitySelection {
18277
18320
  /**
18278
18321
  * The list of special abilities to choose from. Must contain at least two entries.
18279
18322
  */
18280
- options: ConstantProfessionSpecialAbility[]
18323
+ options: ProfessionSpecialAbilitySelectionItem[]
18324
+ }
18325
+
18326
+ export interface ProfessionSpecialAbilitySelectionItem {
18327
+ /**
18328
+ * The identifier of the special ability to grant.
18329
+ */
18330
+ id: ProfessionSpecialAbilityIdentifier
18331
+
18332
+ /**
18333
+ * The level of the received special ability. If not specified and the special ability has levels, level 1 is used automatically.
18334
+ */
18335
+ level?: number
18336
+
18337
+ /**
18338
+ * Received select options. Order is important. Typically, you only need the first array index, though.
18339
+ */
18340
+ options?: RequirableSelectOptionIdentifier[]
18281
18341
  }
18282
18342
 
18283
18343
  export interface CombatTechniqueRating {
@@ -24228,6 +24288,126 @@ export interface ElixirEffectForEachQualityLevel {
24228
24288
  qualityLevels: [string, string, string, string, string, string]
24229
24289
  }
24230
24290
 
24291
+ export interface EquipmentCategory {
24292
+ /**
24293
+ * The position of the category in the list. This has to be a unique value.
24294
+ */
24295
+ position: number
24296
+
24297
+ /**
24298
+ * The type of the equipment category.
24299
+ */
24300
+ type: EquipmentCategoryType
24301
+
24302
+ /**
24303
+ * All translations for the entry, identified by IETF language tag (BCP47).
24304
+ */
24305
+ translations: {
24306
+ [localeId: string]: EquipmentCategoryTranslation
24307
+ }
24308
+ }
24309
+
24310
+ /**
24311
+ * The entity’s identifier. A UUID or a locale code if it is registered as the locale entity.
24312
+ */
24313
+ export type EquipmentCategory_ID = string
24314
+
24315
+ export interface EquipmentCategoryTranslation {
24316
+ /**
24317
+ * The equipment category’s name.
24318
+ */
24319
+ name: string
24320
+ }
24321
+
24322
+ export type EquipmentCategoryType =
24323
+ | {
24324
+ kind: "Default"
24325
+ Default: DefaultEquipmentCategoryTypeRules
24326
+ }
24327
+ | {
24328
+ kind: "Special"
24329
+ Special: SpecialEquipmentCategoryEntity
24330
+ }
24331
+
24332
+ export interface DefaultEquipmentCategoryTypeRules {
24333
+ /**
24334
+ * The combat values that are allowed for this category. If any combat value is allowed and used, advantages, disadvantages and known item specifics are also allowed to be defined for the item.
24335
+ */
24336
+ combatValues: AllowedCombatValues
24337
+
24338
+ /**
24339
+ * Presence of restrictions to certain groups for items in this category.
24340
+ */
24341
+ restrictedTo: ValueRule
24342
+
24343
+ /**
24344
+ * Presence of structure points to certain groups for items in this category.
24345
+ */
24346
+ structurePoints: ValueRule
24347
+
24348
+ /**
24349
+ * Presence of weight to certain groups for items in this category.
24350
+ */
24351
+ weight: ValueRule
24352
+
24353
+ /**
24354
+ * Presence of complexity to certain groups for items in this category.
24355
+ */
24356
+ complexity: ValueRule
24357
+ }
24358
+
24359
+ /**
24360
+ * The combat values that are allowed for this category. If any combat value is allowed and used, advantages, disadvantages and known item specifics are also allowed to be defined for the item.
24361
+ */
24362
+ export interface AllowedCombatValues {
24363
+ /**
24364
+ * Is the item allowed to be used as a weapon?
24365
+ */
24366
+ isWeaponAllowed: boolean
24367
+
24368
+ /**
24369
+ * Is the item allowed to be used as an armor?
24370
+ */
24371
+ isArmorAllowed: boolean
24372
+ }
24373
+
24374
+ /**
24375
+ * Defines if an instance MUST/CAN/MUST NOT define a value for this parameter. If multiple rules apply to the same parameter, the order of precedence is Required > Optional > Prohibited.
24376
+ */
24377
+ export type ValueRule =
24378
+ | {
24379
+ kind: "Required"
24380
+ }
24381
+ | {
24382
+ kind: "Optional"
24383
+ }
24384
+ | {
24385
+ kind: "Prohibited"
24386
+ }
24387
+
24388
+ export type SpecialEquipmentCategoryEntity =
24389
+ | {
24390
+ kind: "AnimalCare"
24391
+ }
24392
+ | {
24393
+ kind: "Book"
24394
+ }
24395
+ | {
24396
+ kind: "Elixir"
24397
+ }
24398
+ | {
24399
+ kind: "GemOrPreciousStone"
24400
+ }
24401
+ | {
24402
+ kind: "Newspaper"
24403
+ }
24404
+ | {
24405
+ kind: "Poison"
24406
+ }
24407
+ | {
24408
+ kind: "WorkingSupernaturalCreature"
24409
+ }
24410
+
24231
24411
  export interface EquipmentOfBlessedOnes {
24232
24412
  /**
24233
24413
  * The cost in silverthalers.
@@ -26132,6 +26312,122 @@ export interface HomunculusTypeTranslation {
26132
26312
  name: string
26133
26313
  }
26134
26314
 
26315
+ export interface Item {
26316
+ /**
26317
+ * The categories this item belongs to.
26318
+ */
26319
+ categories: EquipmentCategory_ID[]
26320
+
26321
+ /**
26322
+ * The cost in silverthalers.
26323
+ */
26324
+ cost: Cost
26325
+
26326
+ /**
26327
+ * The weight in kg.
26328
+ */
26329
+ weight: Weight
26330
+
26331
+ /**
26332
+ * The complexity of crafting the item.
26333
+ */
26334
+ complexity?: Complexity
26335
+
26336
+ /**
26337
+ * The structure points of the item. Use an array if the item consists of multiple components that have individual structure points.
26338
+ */
26339
+ structurePoints: StructurePoints
26340
+
26341
+ /**
26342
+ * A list of stat blocks for each close combat technique this weapon can be used with.
26343
+ */
26344
+ meleeUses?: {
26345
+ [closeCombatTechniqueId: string]: MeleeWeaponUse2
26346
+ }
26347
+
26348
+ /**
26349
+ * A list of stat blocks for each ranged combat technique this weapon can be used with.
26350
+ */
26351
+ rangedUses?: {
26352
+ [rangedCombatTechniqueId: string]: RangedWeaponUse2
26353
+ }
26354
+
26355
+ /**
26356
+ * Stats for this item being used as an armor.
26357
+ */
26358
+ armorUse?: SecondaryArmor
26359
+
26360
+ /**
26361
+ * Define if during character creation this weapon can only be bought by a specific subset of characters.
26362
+ */
26363
+ restrictedTo?: RestrictedTo
26364
+
26365
+ /**
26366
+ * The weapon is a known item, which implies some additional values.
26367
+ */
26368
+ knownItemSpecifics?: KnownItemSpecifics
26369
+
26370
+ /**
26371
+ * References to where in which publications this entry has been defined. Entries may also be added or removed in later printings.
26372
+ */
26373
+ src: PublicationRefs
26374
+
26375
+ /**
26376
+ * All translations for the entry, identified by IETF language tag (BCP47).
26377
+ */
26378
+ translations: {
26379
+ [localeId: string]: ItemTranslation
26380
+ }
26381
+ }
26382
+
26383
+ /**
26384
+ * The entity’s identifier. A UUID or a locale code if it is registered as the locale entity.
26385
+ */
26386
+ export type Item_ID = string
26387
+
26388
+ export type MeleeWeaponUse2 = MeleeWeapon
26389
+
26390
+ export type RangedWeaponUse2 = RangedWeapon
26391
+
26392
+ export interface ItemTranslation {
26393
+ /**
26394
+ * The item’s name.
26395
+ */
26396
+ name: string
26397
+
26398
+ /**
26399
+ * An auxiliary name or label of the item, if available.
26400
+ */
26401
+ secondaryName?: string
26402
+
26403
+ /**
26404
+ * Note text.
26405
+ */
26406
+ note?: string
26407
+
26408
+ /**
26409
+ * Special rules text.
26410
+ */
26411
+ rules?: string
26412
+
26413
+ /**
26414
+ * The weapon advantage text.
26415
+ */
26416
+ advantage?: string
26417
+
26418
+ /**
26419
+ * The weapon disadvantage text.
26420
+ */
26421
+ disadvantage?: string
26422
+
26423
+ /**
26424
+ * The weapon is a known item, which implies some additional values.
26425
+ */
26426
+ knownItemSpecifics?: KnownItemSpecificsTranslation
26427
+
26428
+ errata?: Errata
26429
+ }
26430
+
26135
26431
  /**
26136
26432
  * Meta Conditions are rule elements that work like conditions in the sense that they have four levels with different effects, but which are not explicitly listed as conditions.
26137
26433
  */
@@ -1,5 +1,5 @@
1
1
  import { Case } from "tsondb/schema/gen";
2
- import type { ActivatableIdentifier, GeneralSelectOption, RequirableSelectOptionIdentifier, TradeSecretAdventurePointsValue } from "../../gen/types.js";
2
+ import type { ActivatableIdentifier as ActivatableIdentifierType, GeneralSelectOption, RequirableSelectOptionIdentifier, TradeSecretAdventurePointsValue } from "../../gen/types.js";
3
3
  import type { CacheBuilder } from "./internal.ts";
4
4
  import type { ResolvedNewSkillApplication, ResolvedSkillUse } from "./newApplicationsAndUses.ts";
5
5
  export type ResolvedSelectOptionIdentifier = RequirableSelectOptionIdentifier | Case<"Blessing" | "Cantrip" | "Script" | "Culture" | "SexPractice" | "HomunculusType" | "BlessedTradition" | "Disease" | "Poison" | "TargetCategory", string>;
@@ -12,7 +12,7 @@ export type ResolvedSelectOption = {
12
12
  newApplications: ResolvedNewSkillApplication[];
13
13
  uses: ResolvedSkillUse[];
14
14
  };
15
- export type ActivatableSelectOptionsCache = Record<ActivatableIdentifier["kind"], {
15
+ export type ActivatableSelectOptionsCache = Record<ActivatableIdentifierType["kind"], {
16
16
  [id: string]: ResolvedSelectOption[];
17
17
  }>;
18
18
  export declare const activatableSelectOptionsCacheBuilder: CacheBuilder<ActivatableSelectOptionsCache>;
@@ -4,6 +4,7 @@ import { mapObject } from "@elyukai/utils/object";
4
4
  import { compareNullish, compareNumber } from "@elyukai/utils/ordering";
5
5
  import { assertExhaustive } from "@elyukai/utils/typeSafety";
6
6
  import { Case, fromUniformCase } from "tsondb/schema/gen";
7
+ import { ActivatableIdentifier } from "../types/_IdentifierGroup.js";
7
8
  const wrapPlainApValue = (apValue) => apValue === undefined ? undefined : Case("Fixed", apValue);
8
9
  const matchesSpecificSkillishIdList = (config, matches) => {
9
10
  const isInList = config.list.some(matches);
@@ -758,64 +759,7 @@ const getSelectOptionsForResults = (database, entity, results) => results.reduce
758
759
  }
759
760
  return acc;
760
761
  }, {});
761
- const cacheKeyBase = {
762
- Advantage: null,
763
- Disadvantage: null,
764
- AdvancedCombatSpecialAbility: null,
765
- AdvancedKarmaSpecialAbility: null,
766
- AdvancedMagicalSpecialAbility: null,
767
- AdvancedSkillSpecialAbility: null,
768
- AncestorGlyph: null,
769
- ArcaneOrbEnchantment: null,
770
- AttireEnchantment: null,
771
- Beutelzauber: null,
772
- BlessedTradition: null,
773
- BowlEnchantment: null,
774
- BrawlingSpecialAbility: null,
775
- CauldronEnchantment: null,
776
- CeremonialItemSpecialAbility: null,
777
- ChronicleEnchantment: null,
778
- CombatSpecialAbility: null,
779
- CombatStyleSpecialAbility: null,
780
- CommandSpecialAbility: null,
781
- DaggerRitual: null,
782
- FamiliarSpecialAbility: null,
783
- FatePointSexSpecialAbility: null,
784
- FatePointSpecialAbility: null,
785
- FoolsHatEnchantment: null,
786
- GeneralSpecialAbility: null,
787
- Haubenzauber: null,
788
- Hauerkettenzauber: null,
789
- InstrumentEnchantment: null,
790
- KarmaSpecialAbility: null,
791
- Keulenzauber: null,
792
- Krallenkettenzauber: null,
793
- Kristallkugelzauber: null,
794
- LiturgicalStyleSpecialAbility: null,
795
- LycantropicGift: null,
796
- MagicalSign: null,
797
- MagicalSpecialAbility: null,
798
- MagicalTradition: null,
799
- MagicStyleSpecialAbility: null,
800
- OrbEnchantment: null,
801
- PactGift: null,
802
- ProtectiveWardingCircleSpecialAbility: null,
803
- RingEnchantment: null,
804
- Schweinetrommelzauber: null,
805
- Sermon: null,
806
- SexSpecialAbility: null,
807
- SickleRitual: null,
808
- SikaryanDrainSpecialAbility: null,
809
- SkillStyleSpecialAbility: null,
810
- SpellSwordEnchantment: null,
811
- StaffEnchantment: null,
812
- ToyEnchantment: null,
813
- Trinkhornzauber: null,
814
- VampiricGift: null,
815
- Vision: null,
816
- WandEnchantment: null,
817
- WeaponEnchantment: null,
818
- };
762
+ const cacheKeyBase = mapObject(ActivatableIdentifier.type.value.values, () => null);
819
763
  export const activatableSelectOptionsCacheBuilder = database => Object.fromEntries(Object.keys(cacheKeyBase).map((entity) => [
820
764
  entity,
821
765
  getSelectOptionsForResults(database, entity, database.getAllInstanceContainersOfEntity(entity)),
package/lib/main.js CHANGED
@@ -63,6 +63,7 @@ export const schema = new Schema([
63
63
  Types.Element,
64
64
  Types.Elixir,
65
65
  Types.ElvenMagicalSong,
66
+ Types.EquipmentCategory,
66
67
  Types.EquipmentOfBlessedOnes,
67
68
  Types.EquipmentPackage,
68
69
  Types.ExperienceLevel,
@@ -87,6 +88,7 @@ export const schema = new Schema([
87
88
  Types.IlluminationLightSource,
88
89
  Types.IlluminationRefillOrSupply,
89
90
  Types.InstrumentEnchantment,
91
+ Types.Item,
90
92
  Types.JesterTrick,
91
93
  Types.Jewelry,
92
94
  Types.KarmaSpecialAbility,
@@ -30,9 +30,7 @@ export const Attribute = DB.Entity(import.meta.url, {
30
30
  })),
31
31
  }),
32
32
  instanceDisplayName: {},
33
- sortOrder: {
34
- keyPath: "position",
35
- },
33
+ sortOrder: { keyPath: "position", isIndex: true },
36
34
  uniqueConstraints: [
37
35
  {
38
36
  keyPath: "position",
@@ -242,6 +242,7 @@ export declare const Culture: DB.Entity<"Culture", {
242
242
  }>, []>>>, []>>, true>;
243
243
  translations: DB.MemberDecl<DB.NestedEntityMap<"CultureTranslation", {
244
244
  name: DB.MemberDecl<DB.String, true>;
245
+ nameInPrerequisites: DB.MemberDecl<DB.String, false>;
245
246
  area_knowledge: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"AreaKnowledgeTranslation", DB.Object<{
246
247
  description: DB.MemberDecl<DB.String, true>;
247
248
  abbreviated: DB.MemberDecl<DB.String, true>;
@@ -60,7 +60,11 @@ export const Culture = DB.Entity(import.meta.url, {
60
60
  src,
61
61
  translations: NestedTranslationMap(DB.Required, "Culture", DB.Object({
62
62
  name: DB.Required({
63
- comment: "The race’s name.",
63
+ comment: "The culture’s name.",
64
+ type: DB.String({ minLength: 1 }),
65
+ }),
66
+ nameInPrerequisites: DB.Optional({
67
+ comment: "The culture’s name in prerequisites, if different from the normal culture’s name.",
64
68
  type: DB.String({ minLength: 1 }),
65
69
  }),
66
70
  area_knowledge: DB.Required({
@@ -48,9 +48,7 @@ export const DerivedCharacteristic = DB.Entity(import.meta.url, {
48
48
  })),
49
49
  }),
50
50
  instanceDisplayName: {},
51
- sortOrder: {
52
- keyPath: "position",
53
- },
51
+ sortOrder: { keyPath: "position", isIndex: true },
54
52
  uniqueConstraints: [
55
53
  {
56
54
  keyPath: "position",
@@ -889,6 +889,9 @@ export declare const Locale: DB.Entity<"Locale", {
889
889
  "Animist Powers": null;
890
890
  "Geode Rituals": null;
891
891
  "Zibilja Rituals": null;
892
+ Bannzeichen: null;
893
+ "Goblin Rituals": null;
894
+ "Magical Runes": null;
892
895
  Mod: null;
893
896
  "Check Modifier": null;
894
897
  "spells.traditions.general": null;
@@ -1575,6 +1578,10 @@ export declare const Locale: DB.Entity<"Locale", {
1575
1578
  ".input {$count :number} {{check required every {$count}. application in the same month}}": null;
1576
1579
  "see {$link}": null;
1577
1580
  CoD: null;
1581
+ "Search Difficulty": null;
1582
+ "Identification Difficulty": null;
1583
+ "Plant Applications": null;
1584
+ "Remedies and Traditions": null;
1578
1585
  "Romance Novel": null;
1579
1586
  Poetry: null;
1580
1587
  "Political Pamphlet": null;
@@ -1667,6 +1674,8 @@ export declare const Locale: DB.Entity<"Locale", {
1667
1674
  Variants: null;
1668
1675
  "Languages and Literacy totaling {$apValue} AP": null;
1669
1676
  "no Languages and Literacy totaling {$apValue} AP": null;
1677
+ "Languages totaling {$apValue} AP": null;
1678
+ "no Languages totaling {$apValue} AP": null;
1670
1679
  "Skill Specialization {$possibleSkills}": null;
1671
1680
  "no Skill Specialization {$possibleSkills}": null;
1672
1681
  "Skill Specialization for a {$skillOfGroup}": null;
@@ -1693,6 +1702,7 @@ export declare const Locale: DB.Entity<"Locale", {
1693
1702
  "except for {$list :list type=conjunction}": null;
1694
1703
  "depends on selected tradition": null;
1695
1704
  "Additional Prerequisites": null;
1705
+ "no changes": null;
1696
1706
  Enhancements: null;
1697
1707
  "SR {$value}": null;
1698
1708
  ".input {$hiddenCount :number} {{Prerequisites}}": null;