@optolith/database-schema 0.99.0 → 0.101.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 (40) hide show
  1. package/CHANGELOG.md +40 -0
  2. package/gen/types.d.ts +628 -123
  3. package/lib/main.js +1 -0
  4. package/lib/types/Culture.d.ts +312 -152
  5. package/lib/types/Locale.d.ts +8 -1
  6. package/lib/types/Locale.js +5 -0
  7. package/lib/types/Profession.d.ts +807 -466
  8. package/lib/types/Profession.js +20 -0
  9. package/lib/types/Race.d.ts +624 -304
  10. package/lib/types/_ActivatableAdvanced.d.ts +28 -0
  11. package/lib/types/_ActivatableAdvanced.js +57 -1
  12. package/lib/types/_ActivatableCombat.d.ts +45 -41
  13. package/lib/types/_ActivatableCombat.js +71 -77
  14. package/lib/types/_CommonnessRatedAdvantageDisadvantage.d.ts +80 -2
  15. package/lib/types/_CommonnessRatedAdvantageDisadvantage.js +58 -3
  16. package/lib/types/_Identifier.d.ts +1 -0
  17. package/lib/types/_Identifier.js +2 -0
  18. package/lib/types/_IdentifierGroup.d.ts +1 -0
  19. package/lib/types/_IdentifierGroup.js +2 -1
  20. package/lib/types/equipment/EquipmentPackage.d.ts +1 -0
  21. package/lib/types/equipment/item/ItemComponent.d.ts +128 -0
  22. package/lib/types/equipment/item/ItemComponent.js +316 -0
  23. package/lib/types/index.d.ts +1 -0
  24. package/lib/types/index.js +1 -0
  25. package/lib/types/prerequisites/PrerequisiteGroups.d.ts +80 -5
  26. package/lib/types/prerequisites/PrerequisiteGroups.js +5 -1
  27. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisite.js +2 -2
  28. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisiteForProfession.d.ts +150 -0
  29. package/lib/types/prerequisites/single/RatedMinimumNumberPrerequisiteForProfession.js +53 -0
  30. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +42 -41
  31. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +42 -41
  32. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +42 -41
  33. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +70 -41
  34. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +42 -41
  35. package/lib/types/specialAbility/LiturgicalStyleSpecialAbility.d.ts +28 -0
  36. package/lib/types/specialAbility/MagicStyleSpecialAbility.d.ts +28 -0
  37. package/lib/types/specialAbility/MagicalTradition.d.ts +1 -0
  38. package/lib/types/specialAbility/MagicalTradition.js +5 -1
  39. package/lib/types/specialAbility/SkillStyleSpecialAbility.d.ts +28 -0
  40. package/package.json +2 -2
@@ -1,6 +1,6 @@
1
1
  import { sortObjectKeys } from "@elyukai/utils/object";
2
2
  import * as DB from "tsondb/schema/dsl";
3
- import { AdvancedCombatSpecialAbilityIdentifier, AdvancedKarmaSpecialAbilityIdentifier, AdvancedMagicalSpecialAbilityIdentifier, AdvancedSkillSpecialAbilityIdentifier, AdvantageIdentifier, AmmunitionIdentifier, AncestorGlyphIdentifier, AnimalCareIdentifier, AnimalIdentifier, AnimalShapeIdentifier, AnimalShapeSizeIdentifier, AnimistPowerIdentifier, ArcaneBardTraditionIdentifier, ArcaneDancerTraditionIdentifier, ArcaneOrbEnchantmentIdentifier, ArmorAccessoryIdentifier, ArmorIdentifier, AspectIdentifier, AttireEnchantmentIdentifier, AttributeIdentifier, BandageOrRemedyIdentifier, BannzeichenIdentifier, BeutelzauberIdentifier, BlessedTraditionIdentifier, BlessingIdentifier, BookIdentifier, BowlEnchantmentIdentifier, BrawlingSpecialAbilityIdentifier, CantripIdentifier, CauldronEnchantmentIdentifier, CeremonialItemIdentifier, CeremonialItemSpecialAbilityIdentifier, CeremonyIdentifier, ChronicleEnchantmentIdentifier, CloseCombatTechniqueIdentifier, ClothesIdentifier, ClothingPackageIdentifier, CombatSpecialAbilityIdentifier, CombatStyleSpecialAbilityIdentifier, CommandSpecialAbilityIdentifier, ContainerIdentifier, CultureIdentifier, CurseIdentifier, DaggerRitualIdentifier, DisadvantageIdentifier, DiseaseIdentifier, DominationRitualIdentifier, ElementIdentifier, ElixirIdentifier, ElvenMagicalSongIdentifier, EnhancementIdentifier, EquipmentOfBlessedOnesIdentifier, FamiliarSpecialAbilityIdentifier, FatePointSexSpecialAbilityIdentifier, FatePointSpecialAbilityIdentifier, FocusRuleIdentifier, FoolsHatEnchantmentIdentifier, GemOrPreciousStoneIdentifier, GeneralIdentifier, GeneralSpecialAbilityIdentifier, GeodeRitualIdentifier, GoblinRitualIdentifier, HaubenzauberIdentifier, HauerkettenzauberIdentifier, IlluminationLightSourceIdentifier, IlluminationRefillOrSupplyIdentifier, InstrumentEnchantmentIdentifier, JesterTrickIdentifier, JewelryIdentifier, KarmaSpecialAbilityIdentifier, KeulenzauberIdentifier, KrallenkettenzauberIdentifier, KristallkugelzauberIdentifier, LaboratoryIdentifier, LanguageIdentifier, LiebesspielzeugIdentifier, LiturgicalChantIdentifier, LiturgicalStyleSpecialAbilityIdentifier, LuxuryGoodIdentifier, LycantropicGiftIdentifier, MagicalArtifactIdentifier, MagicalDanceIdentifier, MagicalMelodyIdentifier, MagicalRuneIdentifier, MagicalSignIdentifier, MagicalSpecialAbilityIdentifier, MagicalTraditionIdentifier, MagicStyleSpecialAbilityIdentifier, MusicalInstrumentIdentifier, NewspaperIdentifier, OptionalRuleIdentifier, OrbEnchantmentIdentifier, OrienteeringAidIdentifier, PactGiftIdentifier, PatronIdentifier, PoisonIdentifier, PropertyIdentifier, ProtectiveWardingCircleSpecialAbilityIdentifier, RaceIdentifier, RangedCombatTechniqueIdentifier, RingEnchantmentIdentifier, RitualIdentifier, RopeOrChainIdentifier, SchweinetrommelzauberIdentifier, ScriptIdentifier, SermonIdentifier, SexPracticeIdentifier, SexSpecialAbilityIdentifier, SickleRitualIdentifier, SikaryanDrainSpecialAbilityIdentifier, SkillApplicationIdentifier, SkillGroupIdentifier, SkillIdentifier, SkillStyleSpecialAbilityIdentifier, SpellIdentifier, SpellSwordEnchantmentIdentifier, StaffEnchantmentIdentifier, StationeryIdentifier, TargetCategoryIdentifier, ThievesToolIdentifier, ToolOfTheTradeIdentifier, ToyEnchantmentIdentifier, TradeSecretIdentifier, TravelGearOrToolIdentifier, TrinkhornzauberIdentifier, VampiricGiftIdentifier, VehicleIdentifier, VisionIdentifier, WandEnchantmentIdentifier, WeaponAccessoryIdentifier, WeaponEnchantmentIdentifier, WeaponIdentifier, WorkingSupernaturalCreatureIdentifier, ZibiljaRitualIdentifier, } from "./_Identifier.js";
3
+ import { AdvancedCombatSpecialAbilityIdentifier, AdvancedKarmaSpecialAbilityIdentifier, AdvancedMagicalSpecialAbilityIdentifier, AdvancedSkillSpecialAbilityIdentifier, AdvantageIdentifier, AmmunitionIdentifier, AncestorGlyphIdentifier, AnimalCareIdentifier, AnimalIdentifier, AnimalShapeIdentifier, AnimalShapeSizeIdentifier, AnimistPowerIdentifier, ArcaneBardTraditionIdentifier, ArcaneDancerTraditionIdentifier, ArcaneOrbEnchantmentIdentifier, ArmorAccessoryIdentifier, ArmorIdentifier, AspectIdentifier, AttireEnchantmentIdentifier, AttributeIdentifier, BandageOrRemedyIdentifier, BannzeichenIdentifier, BeutelzauberIdentifier, BlessedTraditionIdentifier, BlessingIdentifier, BookIdentifier, BowlEnchantmentIdentifier, BrawlingSpecialAbilityIdentifier, CantripIdentifier, CauldronEnchantmentIdentifier, CeremonialItemIdentifier, CeremonialItemSpecialAbilityIdentifier, CeremonyIdentifier, ChronicleEnchantmentIdentifier, CloseCombatTechniqueIdentifier, ClothesIdentifier, ClothingPackageIdentifier, CombatSpecialAbilityIdentifier, CombatStyleSpecialAbilityIdentifier, CommandSpecialAbilityIdentifier, ContainerIdentifier, CultureIdentifier, CurseIdentifier, DaggerRitualIdentifier, DisadvantageIdentifier, DiseaseIdentifier, DominationRitualIdentifier, ElementIdentifier, ElixirIdentifier, ElvenMagicalSongIdentifier, EnhancementIdentifier, EquipmentOfBlessedOnesIdentifier, FamiliarSpecialAbilityIdentifier, FatePointSexSpecialAbilityIdentifier, FatePointSpecialAbilityIdentifier, FocusRuleIdentifier, FoolsHatEnchantmentIdentifier, GemOrPreciousStoneIdentifier, GeneralIdentifier, GeneralSpecialAbilityIdentifier, GeodeRitualIdentifier, GoblinRitualIdentifier, HaubenzauberIdentifier, HauerkettenzauberIdentifier, IlluminationLightSourceIdentifier, IlluminationRefillOrSupplyIdentifier, InstrumentEnchantmentIdentifier, ItemComponentIdentifier, JesterTrickIdentifier, JewelryIdentifier, KarmaSpecialAbilityIdentifier, KeulenzauberIdentifier, KrallenkettenzauberIdentifier, KristallkugelzauberIdentifier, LaboratoryIdentifier, LanguageIdentifier, LiebesspielzeugIdentifier, LiturgicalChantIdentifier, LiturgicalStyleSpecialAbilityIdentifier, LuxuryGoodIdentifier, LycantropicGiftIdentifier, MagicalArtifactIdentifier, MagicalDanceIdentifier, MagicalMelodyIdentifier, MagicalRuneIdentifier, MagicalSignIdentifier, MagicalSpecialAbilityIdentifier, MagicalTraditionIdentifier, MagicStyleSpecialAbilityIdentifier, MusicalInstrumentIdentifier, NewspaperIdentifier, OptionalRuleIdentifier, OrbEnchantmentIdentifier, OrienteeringAidIdentifier, PactGiftIdentifier, PatronIdentifier, PoisonIdentifier, PropertyIdentifier, ProtectiveWardingCircleSpecialAbilityIdentifier, RaceIdentifier, RangedCombatTechniqueIdentifier, RingEnchantmentIdentifier, RitualIdentifier, RopeOrChainIdentifier, SchweinetrommelzauberIdentifier, ScriptIdentifier, SermonIdentifier, SexPracticeIdentifier, SexSpecialAbilityIdentifier, SickleRitualIdentifier, SikaryanDrainSpecialAbilityIdentifier, SkillApplicationIdentifier, SkillGroupIdentifier, SkillIdentifier, SkillStyleSpecialAbilityIdentifier, SpellIdentifier, SpellSwordEnchantmentIdentifier, StaffEnchantmentIdentifier, StationeryIdentifier, TargetCategoryIdentifier, ThievesToolIdentifier, ToolOfTheTradeIdentifier, ToyEnchantmentIdentifier, TradeSecretIdentifier, TravelGearOrToolIdentifier, TrinkhornzauberIdentifier, VampiricGiftIdentifier, VehicleIdentifier, VisionIdentifier, WandEnchantmentIdentifier, WeaponAccessoryIdentifier, WeaponEnchantmentIdentifier, WeaponIdentifier, WorkingSupernaturalCreatureIdentifier, ZibiljaRitualIdentifier, } from "./_Identifier.js";
4
4
  export const ActivatableIdentifier = DB.Enum(import.meta.url, {
5
5
  name: "ActivatableIdentifier",
6
6
  values: () => ({
@@ -322,6 +322,7 @@ export const EquipmentIdentifier = DB.Enum(import.meta.url, {
322
322
  GemOrPreciousStone: DB.EnumCase({ type: GemOrPreciousStoneIdentifier() }),
323
323
  IlluminationLightSource: DB.EnumCase({ type: IlluminationLightSourceIdentifier() }),
324
324
  IlluminationRefillOrSupply: DB.EnumCase({ type: IlluminationRefillOrSupplyIdentifier() }),
325
+ ItemComponent: DB.EnumCase({ type: ItemComponentIdentifier() }),
325
326
  Jewelry: DB.EnumCase({ type: JewelryIdentifier() }),
326
327
  Laboratory: DB.EnumCase({ type: LaboratoryIdentifier() }),
327
328
  Liebesspielzeug: DB.EnumCase({ type: LiebesspielzeugIdentifier() }),
@@ -18,6 +18,7 @@ export declare const EquipmentPackage: DB.Entity<"EquipmentPackage", {
18
18
  GemOrPreciousStone: DB.EnumCase<DB.ReferenceIdentifier>;
19
19
  IlluminationLightSource: DB.EnumCase<DB.ReferenceIdentifier>;
20
20
  IlluminationRefillOrSupply: DB.EnumCase<DB.ReferenceIdentifier>;
21
+ ItemComponent: DB.EnumCase<DB.ReferenceIdentifier>;
21
22
  Jewelry: DB.EnumCase<DB.ReferenceIdentifier>;
22
23
  Laboratory: DB.EnumCase<DB.ReferenceIdentifier>;
23
24
  Liebesspielzeug: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -0,0 +1,128 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ export declare const ItemComponent: DB.Entity<"ItemComponent", {
3
+ options: DB.MemberDecl<DB.ChildEntities<DB.Entity<"ItemComponentOption", {
4
+ parent: DB.MemberDecl<DB.ReferenceIdentifier, true>;
5
+ cost: DB.MemberDecl<DB.Float, true>;
6
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ItemComponentOptionTranslation", {
7
+ label: DB.MemberDecl<DB.String, true>;
8
+ }>, true>;
9
+ }, "parent">>, true>;
10
+ cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ItemComponentCost", {
11
+ Fixed: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"FixedCost", DB.Object<{
12
+ value: DB.MemberDecl<DB.Float, true>;
13
+ translations: DB.MemberDecl<DB.NestedEntityMap<"FixedCostTranslation", {
14
+ wrap_in_text: DB.MemberDecl<DB.String, true>;
15
+ }>, false>;
16
+ }>, []>>>;
17
+ ByCombatTechnique: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ItemComponentCostByCombatTechnique", DB.Object<{
18
+ close: DB.MemberDecl<DB.NestedEntityMap<string, {
19
+ value: DB.MemberDecl<DB.Float, true>;
20
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ItemComponentCostByCloseCombatTechniqueTranslation", {
21
+ label: DB.MemberDecl<DB.String, true>;
22
+ }>, false>;
23
+ }>, false>;
24
+ ranged: DB.MemberDecl<DB.NestedEntityMap<string, {
25
+ value: DB.MemberDecl<DB.Float, true>;
26
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ItemComponentCostByRangedCombatTechniqueTranslation", {
27
+ label: DB.MemberDecl<DB.String, true>;
28
+ }>, false>;
29
+ }>, false>;
30
+ }>, []>>>;
31
+ Factor: DB.EnumCase<DB.Float>;
32
+ DerivedFromOption: DB.EnumCase<null>;
33
+ }, []>>, true>;
34
+ weight: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Weight", DB.Float, []>>, false>;
35
+ applicableItems: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableItems", {
36
+ MeleeWeapon: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableMeleeWeapons", DB.Object<{
37
+ weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
38
+ combatTechniques: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
39
+ category: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableMeleeWeaponCategory", {
40
+ HasMetalSurface: DB.EnumCase<null>;
41
+ HasMetalBladeOrTip: DB.EnumCase<null>;
42
+ }, []>>, false>;
43
+ }>, []>>>;
44
+ RangedWeapon: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableRangedWeapons", DB.Object<{
45
+ weapons: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
46
+ combatTechniques: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
47
+ minimumReloadTime: DB.MemberDecl<DB.Integer, false>;
48
+ usesBullets: DB.MemberDecl<DB.Boolean, false>;
49
+ }>, []>>>;
50
+ Ammunition: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableAmmunition", DB.Object<{
51
+ ammunition: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
52
+ invertAmmunition: DB.MemberDecl<DB.Boolean, false>;
53
+ category: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableAmmunitionCategory", {
54
+ ArrowOrBolt: DB.EnumCase<null>;
55
+ }, []>>, false>;
56
+ }>, []>>>;
57
+ Armor: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ApplicableArmor", DB.Object<{
58
+ armor: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
59
+ category: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ApplicableArmorCategory", {
60
+ Metal: DB.EnumCase<null>;
61
+ }, []>>, false>;
62
+ }>, []>>>;
63
+ }, []>>, true>;
64
+ incompatibleWith: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, false>;
65
+ rules: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ItemComponentRules", DB.Object<{
66
+ baseItemModifications: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ItemComponentBaseItemModifications", DB.Object<{
67
+ damagePoints: DB.MemberDecl<DB.Integer, false>;
68
+ attackModifier: DB.MemberDecl<DB.Integer, false>;
69
+ parryModifier: DB.MemberDecl<DB.Integer, false>;
70
+ protection: DB.MemberDecl<DB.Integer, false>;
71
+ encumbrance: DB.MemberDecl<DB.Integer, false>;
72
+ range: DB.MemberDecl<DB.Integer, false>;
73
+ reloadTime: DB.MemberDecl<DB.Integer, false>;
74
+ weight: DB.MemberDecl<DB.Float, false>;
75
+ breakingPointRating: DB.MemberDecl<DB.Integer, false>;
76
+ }>, []>>, false>;
77
+ }>, []>>, false>;
78
+ src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
79
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
80
+ occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
81
+ initial: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"InitialOccurrence", DB.Object<{
82
+ printing: DB.MemberDecl<DB.Integer, false>;
83
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
84
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
85
+ InsideCoverFront: DB.EnumCase<null>;
86
+ InsideCoverBack: DB.EnumCase<null>;
87
+ Numbered: DB.EnumCase<DB.Integer>;
88
+ }, []>>, true>;
89
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
90
+ InsideCoverFront: DB.EnumCase<null>;
91
+ InsideCoverBack: DB.EnumCase<null>;
92
+ Numbered: DB.EnumCase<DB.Integer>;
93
+ }, []>>, false>;
94
+ }>, []>>>, true>;
95
+ isRemoved: DB.MemberDecl<DB.Boolean, false>;
96
+ }>, []>>, true>;
97
+ revisions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"Revision", {
98
+ Since: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Since", DB.Object<{
99
+ printing: DB.MemberDecl<DB.Integer, true>;
100
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
101
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
102
+ InsideCoverFront: DB.EnumCase<null>;
103
+ InsideCoverBack: DB.EnumCase<null>;
104
+ Numbered: DB.EnumCase<DB.Integer>;
105
+ }, []>>, true>;
106
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
107
+ InsideCoverFront: DB.EnumCase<null>;
108
+ InsideCoverBack: DB.EnumCase<null>;
109
+ Numbered: DB.EnumCase<DB.Integer>;
110
+ }, []>>, false>;
111
+ }>, []>>>, true>;
112
+ }>, []>>>;
113
+ Deprecated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Deprecation", DB.Object<{
114
+ printing: DB.MemberDecl<DB.Integer, true>;
115
+ }>, []>>>;
116
+ }, []>>>, false>;
117
+ }>, true>;
118
+ }>, []>>>, []>>, true>;
119
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ItemComponentTranslation", {
120
+ name: DB.MemberDecl<DB.String, true>;
121
+ rules: DB.MemberDecl<DB.String, false>;
122
+ applicableItems: DB.MemberDecl<DB.String, false>;
123
+ errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
124
+ date: DB.MemberDecl<DB.Date, true>;
125
+ description: DB.MemberDecl<DB.String, true>;
126
+ }>, []>>>, []>>, false>;
127
+ }>, true>;
128
+ }, undefined>;
@@ -0,0 +1,316 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ import { AmmunitionIdentifier, ArmorIdentifier, CloseCombatTechniqueIdentifier, ItemComponentIdentifier, RangedCombatTechniqueIdentifier, WeaponIdentifier, } from "../../_Identifier.js";
3
+ import { CloseCombatTechnique, RangedCombatTechnique } from "../../CombatTechnique.js";
4
+ import { NestedTranslationMap } from "../../Locale.js";
5
+ import { Errata } from "../../source/_Erratum.js";
6
+ import { src } from "../../source/_PublicationRef.js";
7
+ import { FixedCost, Weight } from "./_Item.js";
8
+ export const ItemComponent = DB.Entity(import.meta.url, {
9
+ name: "ItemComponent",
10
+ namePlural: "ItemComponents",
11
+ type: () => DB.Object({
12
+ options: DB.Required({
13
+ type: DB.ChildEntities(ItemComponentOption),
14
+ }),
15
+ cost: DB.Required({
16
+ comment: ItemComponentCost.comment,
17
+ type: DB.IncludeIdentifier(ItemComponentCost),
18
+ }),
19
+ weight: DB.Optional({
20
+ comment: "The weight in kg.",
21
+ type: DB.IncludeIdentifier(Weight),
22
+ }),
23
+ applicableItems: DB.Required({
24
+ comment: "The items the component can be applied to.",
25
+ type: DB.IncludeIdentifier(ApplicableItems),
26
+ }),
27
+ incompatibleWith: DB.Optional({
28
+ comment: "Other components this component is not compatible with.",
29
+ type: DB.Array(ItemComponentIdentifier(), {
30
+ minItems: 1,
31
+ uniqueItems: true,
32
+ }),
33
+ }),
34
+ rules: DB.Optional({
35
+ comment: "Special rules for the item component.",
36
+ type: DB.IncludeIdentifier(ItemComponentRules),
37
+ }),
38
+ src,
39
+ translations: NestedTranslationMap(DB.Required, "ItemComponent", DB.Object({
40
+ name: DB.Required({
41
+ comment: "The item’s name.",
42
+ type: DB.String({ minLength: 1 }),
43
+ }),
44
+ rules: DB.Optional({
45
+ comment: "Special rules text.",
46
+ type: DB.String({ minLength: 1, markdown: "block" }),
47
+ }),
48
+ applicableItems: DB.Optional({
49
+ comment: "The items the component can be applied to. Used if the generated text is not sufficient.",
50
+ type: DB.String({ minLength: 1, markdown: "inline" }),
51
+ }),
52
+ errata: DB.Optional({
53
+ type: DB.IncludeIdentifier(Errata),
54
+ }),
55
+ })),
56
+ }),
57
+ instanceDisplayName: {},
58
+ uniqueConstraints: [
59
+ {
60
+ entityMapKeyPath: "translations",
61
+ keyPathInEntityMap: "name",
62
+ },
63
+ ],
64
+ });
65
+ const ItemComponentOption = DB.Entity(import.meta.url, {
66
+ name: "ItemComponentOption",
67
+ namePlural: "ItemComponentOptions",
68
+ type: () => DB.Object({
69
+ parent: DB.Required({
70
+ comment: "The item component this option belongs to.",
71
+ type: ItemComponentIdentifier(),
72
+ }),
73
+ cost: DB.Required({
74
+ comment: "The cost in silverthalers.",
75
+ type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
76
+ }),
77
+ translations: NestedTranslationMap(DB.Required, "ItemComponentOption", DB.Object({
78
+ label: DB.Required({
79
+ comment: "The label for the option.",
80
+ type: DB.String({ minLength: 1 }),
81
+ }),
82
+ })),
83
+ }),
84
+ instanceDisplayName: { pathInLocaleMap: "label" },
85
+ parentReferenceKey: "parent",
86
+ });
87
+ const ItemComponentCost = DB.Enum(import.meta.url, {
88
+ name: "ItemComponentCost",
89
+ comment: "The cost in silverthalers.",
90
+ values: () => ({
91
+ Fixed: DB.EnumCase({
92
+ comment: "The cost is a fixed amount of silverthalers.",
93
+ type: DB.IncludeIdentifier(FixedCost),
94
+ }),
95
+ ByCombatTechnique: DB.EnumCase({
96
+ comment: "The cost depends on the combat technique of the item it is applied to.",
97
+ type: DB.IncludeIdentifier(ItemComponentCostByCombatTechnique),
98
+ }),
99
+ Factor: DB.EnumCase({
100
+ comment: "The cost is a percentage of the cost of the item it is applied to.",
101
+ type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
102
+ }),
103
+ DerivedFromOption: DB.EnumCase({
104
+ comment: "The cost depends on the selected option.",
105
+ type: null,
106
+ }),
107
+ }),
108
+ });
109
+ const ItemComponentCostByCombatTechnique = DB.TypeAlias(import.meta.url, {
110
+ name: "ItemComponentCostByCombatTechnique",
111
+ type: () => DB.Object({
112
+ close: DB.Optional({
113
+ comment: "The cost in silverthalers for close combat techniques.",
114
+ type: DB.NestedEntityMap({
115
+ name: "ItemComponentCostByCloseCombatTechnique",
116
+ namePlural: "ItemComponentCostsByCloseCombatTechnique",
117
+ secondaryEntity: CloseCombatTechnique,
118
+ type: DB.Object({
119
+ value: DB.Required({
120
+ comment: "The cost in silverthalers for the close combat technique.",
121
+ type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
122
+ }),
123
+ translations: NestedTranslationMap(DB.Optional, "ItemComponentCostByCloseCombatTechnique", DB.IncludeIdentifier(ItemComponentCostByCombatTechniqueTranslation)),
124
+ }),
125
+ }),
126
+ }),
127
+ ranged: DB.Optional({
128
+ comment: "The cost in silverthalers for ranged combat techniques.",
129
+ type: DB.NestedEntityMap({
130
+ name: "ItemComponentCostByRangedCombatTechnique",
131
+ namePlural: "ItemComponentCostsByRangedCombatTechnique",
132
+ secondaryEntity: RangedCombatTechnique,
133
+ type: DB.Object({
134
+ value: DB.Required({
135
+ comment: "The cost in silverthalers for the ranged combat technique.",
136
+ type: DB.Float({ minimum: { value: 0, isExclusive: true } }),
137
+ }),
138
+ translations: NestedTranslationMap(DB.Optional, "ItemComponentCostByRangedCombatTechnique", DB.IncludeIdentifier(ItemComponentCostByCombatTechniqueTranslation)),
139
+ }),
140
+ }),
141
+ }),
142
+ }, { minProperties: 1 }),
143
+ });
144
+ const ItemComponentCostByCombatTechniqueTranslation = DB.TypeAlias(import.meta.url, {
145
+ name: "ItemComponentCostByCombatTechniqueTranslation",
146
+ type: () => DB.Object({
147
+ label: DB.Required({
148
+ comment: "The label for cost, if different from the name of the combat technique.",
149
+ type: DB.String({ minLength: 1 }),
150
+ }),
151
+ }),
152
+ });
153
+ const ApplicableItems = DB.Enum(import.meta.url, {
154
+ name: "ApplicableItems",
155
+ comment: "The items the component can be applied to.",
156
+ values: () => ({
157
+ MeleeWeapon: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableMeleeWeapons) }),
158
+ RangedWeapon: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableRangedWeapons) }),
159
+ Ammunition: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableAmmunition) }),
160
+ Armor: DB.EnumCase({ type: DB.IncludeIdentifier(ApplicableArmor) }),
161
+ }),
162
+ });
163
+ const ApplicableMeleeWeapons = DB.TypeAlias(import.meta.url, {
164
+ name: "ApplicableMeleeWeapons",
165
+ type: () => DB.Object({
166
+ weapons: DB.Optional({
167
+ comment: "Specific weapons this component can be applied to.",
168
+ type: DB.Array(WeaponIdentifier(), {
169
+ minItems: 1,
170
+ uniqueItems: true,
171
+ }),
172
+ }),
173
+ combatTechniques: DB.Optional({
174
+ comment: "Weapons of combat techniques this component can be applied to.",
175
+ type: DB.Array(CloseCombatTechniqueIdentifier(), {
176
+ minItems: 1,
177
+ uniqueItems: true,
178
+ }),
179
+ }),
180
+ category: DB.Optional({
181
+ comment: "The category of weapons this component can be applied to.",
182
+ type: DB.IncludeIdentifier(ApplicableMeleeWeaponCategory),
183
+ }),
184
+ }, { minProperties: 1 }),
185
+ });
186
+ const ApplicableMeleeWeaponCategory = DB.Enum(import.meta.url, {
187
+ name: "ApplicableMeleeWeaponCategory",
188
+ values: () => ({
189
+ HasMetalSurface: DB.EnumCase({ type: null }),
190
+ HasMetalBladeOrTip: DB.EnumCase({ type: null }),
191
+ }),
192
+ });
193
+ const ApplicableRangedWeapons = DB.TypeAlias(import.meta.url, {
194
+ name: "ApplicableRangedWeapons",
195
+ type: () => DB.Object({
196
+ weapons: DB.Optional({
197
+ comment: "Specific weapons this component can be applied to.",
198
+ type: DB.Array(WeaponIdentifier(), {
199
+ minItems: 1,
200
+ uniqueItems: true,
201
+ }),
202
+ }),
203
+ combatTechniques: DB.Optional({
204
+ comment: "Weapons of combat techniques this component can be applied to.",
205
+ type: DB.Array(RangedCombatTechniqueIdentifier(), {
206
+ minItems: 1,
207
+ uniqueItems: true,
208
+ }),
209
+ }),
210
+ minimumReloadTime: DB.Optional({
211
+ comment: "The minimum reload time a crossbow must have for it to be compatible with this component.",
212
+ type: DB.Integer({ minimum: 1 }),
213
+ }),
214
+ usesBullets: DB.Optional({
215
+ comment: "Whether the crossbow must use bullets to be compatible with this component.",
216
+ type: DB.Boolean(),
217
+ }),
218
+ }, { minProperties: 1 }),
219
+ });
220
+ const ApplicableAmmunition = DB.TypeAlias(import.meta.url, {
221
+ name: "ApplicableAmmunition",
222
+ type: () => DB.Object({
223
+ ammunition: DB.Optional({
224
+ comment: "Specific ammunition this component can be applied to.",
225
+ type: DB.Array(AmmunitionIdentifier(), {
226
+ minItems: 1,
227
+ uniqueItems: true,
228
+ }),
229
+ }),
230
+ invertAmmunition: DB.Optional({
231
+ comment: "Whether the list of ammunition is inverted, i.e. whether the component can be applied to all ammunition – or those of the specified category – except for the listed ammunition.",
232
+ type: DB.Boolean(),
233
+ }),
234
+ category: DB.Optional({
235
+ comment: "The category of weapons this component can be applied to.",
236
+ type: DB.IncludeIdentifier(ApplicableAmmunitionCategory),
237
+ }),
238
+ }, { minProperties: 1 }),
239
+ });
240
+ const ApplicableAmmunitionCategory = DB.Enum(import.meta.url, {
241
+ name: "ApplicableAmmunitionCategory",
242
+ values: () => ({
243
+ ArrowOrBolt: DB.EnumCase({ type: null }),
244
+ }),
245
+ });
246
+ const ApplicableArmor = DB.TypeAlias(import.meta.url, {
247
+ name: "ApplicableArmor",
248
+ type: () => DB.Object({
249
+ armor: DB.Optional({
250
+ comment: "Specific armor this component can be applied to.",
251
+ type: DB.Array(ArmorIdentifier(), {
252
+ minItems: 1,
253
+ uniqueItems: true,
254
+ }),
255
+ }),
256
+ category: DB.Optional({
257
+ comment: "The category of weapons this component can be applied to.",
258
+ type: DB.IncludeIdentifier(ApplicableArmorCategory),
259
+ }),
260
+ }),
261
+ });
262
+ const ApplicableArmorCategory = DB.Enum(import.meta.url, {
263
+ name: "ApplicableArmorCategory",
264
+ values: () => ({
265
+ Metal: DB.EnumCase({ type: null }),
266
+ }),
267
+ });
268
+ const ItemComponentRules = DB.TypeAlias(import.meta.url, {
269
+ name: "ItemComponentRules",
270
+ type: () => DB.Object({
271
+ baseItemModifications: DB.Optional({
272
+ type: DB.IncludeIdentifier(ItemComponentBaseItemModifications),
273
+ }),
274
+ }, { minProperties: 1 }),
275
+ });
276
+ const ItemComponentBaseItemModifications = DB.TypeAlias(import.meta.url, {
277
+ name: "ItemComponentBaseItemModifications",
278
+ type: () => DB.Object({
279
+ damagePoints: DB.Optional({
280
+ comment: "The damage points added to the damage points of the base item. Negative values lower the damage points.",
281
+ type: DB.Integer(),
282
+ }),
283
+ attackModifier: DB.Optional({
284
+ comment: "The attack modifier added to the attack modifier of the base item. Negative values lower the attack modifier.",
285
+ type: DB.Integer(),
286
+ }),
287
+ parryModifier: DB.Optional({
288
+ comment: "The parry modifier added to the parry modifier of the base item. Negative values lower the parry modifier.",
289
+ type: DB.Integer(),
290
+ }),
291
+ protection: DB.Optional({
292
+ comment: "The protection added to the protection of the base item. Negative values lower the protection.",
293
+ type: DB.Integer(),
294
+ }),
295
+ encumbrance: DB.Optional({
296
+ comment: "The encumbrance added to the encumbrance of the base item. Negative values lower the encumbrance.",
297
+ type: DB.Integer(),
298
+ }),
299
+ range: DB.Optional({
300
+ comment: "The range added to the range of the base item. Negative values lower the range.",
301
+ type: DB.Integer(),
302
+ }),
303
+ reloadTime: DB.Optional({
304
+ comment: "The reload time added to the reload time of the base item. Negative values lower the reload time.",
305
+ type: DB.Integer(),
306
+ }),
307
+ weight: DB.Optional({
308
+ comment: "The weight added to the weight of the base item. Negative values lower the weight.",
309
+ type: DB.Float(),
310
+ }),
311
+ breakingPointRating: DB.Optional({
312
+ comment: "The breaking point rating added to the breaking point rating of the base item. Negative values lower the breaking point rating.",
313
+ type: DB.Integer(),
314
+ }),
315
+ }, { minProperties: 1 }),
316
+ });
@@ -37,6 +37,7 @@ export { HerbalPreservation } from "./equipment/item/HerbalPreservation.js";
37
37
  export { IlluminationLightSource } from "./equipment/item/IlluminationLightSource.js";
38
38
  export { IlluminationRefillOrSupply } from "./equipment/item/IlluminationRefillOrSupply.js";
39
39
  export { Item } from "./equipment/item/Item.js";
40
+ export { ItemComponent } from "./equipment/item/ItemComponent.ts";
40
41
  export { Jewelry } from "./equipment/item/Jewelry.js";
41
42
  export { Laboratory } from "./equipment/item/Laboratory.js";
42
43
  export { Liebesspielzeug } from "./equipment/item/Liebesspielzeug.js";
@@ -37,6 +37,7 @@ export { HerbalPreservation } from "./equipment/item/HerbalPreservation.js";
37
37
  export { IlluminationLightSource } from "./equipment/item/IlluminationLightSource.js";
38
38
  export { IlluminationRefillOrSupply } from "./equipment/item/IlluminationRefillOrSupply.js";
39
39
  export { Item } from "./equipment/item/Item.js";
40
+ export { ItemComponent } from "./equipment/item/ItemComponent.js";
40
41
  export { Jewelry } from "./equipment/item/Jewelry.js";
41
42
  export { Laboratory } from "./equipment/item/Laboratory.js";
42
43
  export { Liebesspielzeug } from "./equipment/item/Liebesspielzeug.js";
@@ -762,6 +762,25 @@ export declare const ProfessionPrerequisiteGroup: DB.Enum<"ProfessionPrerequisit
762
762
  }>, []>>>;
763
763
  }, []>>, false>;
764
764
  }>, []>>>;
765
+ Rule: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RulePrerequisite", DB.Object<{
766
+ id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ExtensionRuleIdentifier", {
767
+ FocusRule: DB.EnumCase<DB.ReferenceIdentifier>;
768
+ OptionalRule: DB.EnumCase<DB.ReferenceIdentifier>;
769
+ }, []>>, true>;
770
+ active: DB.MemberDecl<DB.Boolean, true>;
771
+ display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
772
+ Hide: DB.EnumCase<null>;
773
+ ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
774
+ sentence_type: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SentenceType", {
775
+ Standalone: DB.EnumCase<null>;
776
+ Connected: DB.EnumCase<null>;
777
+ }, []>>, false>;
778
+ translations: DB.MemberDecl<DB.NestedEntityMap<"ReplacementDisplayOptionTranslation", {
779
+ replacement: DB.MemberDecl<DB.String, true>;
780
+ }>, true>;
781
+ }>, []>>>;
782
+ }, []>>, false>;
783
+ }>, []>>>;
765
784
  Activatable: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ActivatablePrerequisite", DB.Object<{
766
785
  id: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ActivatableIdentifier", {
767
786
  ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -925,10 +944,10 @@ export declare const ProfessionPrerequisiteGroup: DB.Enum<"ProfessionPrerequisit
925
944
  }>, []>>>;
926
945
  }, []>>, false>;
927
946
  }>, []>>>;
928
- RatedMinimumNumber: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisite", DB.Object<{
947
+ RatedMinimumNumber: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisiteForProfession", DB.Object<{
929
948
  number: DB.MemberDecl<DB.Integer, true>;
930
949
  value: DB.MemberDecl<DB.Integer, true>;
931
- targets: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RatedMinimumNumberPrerequisiteTarget", {
950
+ targets: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"RatedMinimumNumberPrerequisiteTargetForProfession", {
932
951
  Skills: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisiteSkillsTarget", DB.Object<{
933
952
  targets: DB.MemberDecl<DB.Array<DB.ReferenceIdentifier>, true>;
934
953
  }>, []>>>;
@@ -939,9 +958,65 @@ export declare const ProfessionPrerequisiteGroup: DB.Enum<"ProfessionPrerequisit
939
958
  Ranged: DB.EnumCase<null>;
940
959
  }, []>>, true>;
941
960
  }>, []>>>;
942
- Spellworks: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisiteSpellworksTarget", DB.Object<{
943
- property: DB.MemberDecl<DB.ReferenceIdentifier, true>;
944
- }>, []>>>;
961
+ Spellworks: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"RatedMinimumNumberPrerequisiteSpellworksTargetForProfession", {
962
+ Specific: DB.EnumCase<DB.ReferenceIdentifier>;
963
+ SelectOptions: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
964
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
965
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
966
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
967
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
968
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
969
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
970
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
971
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
972
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
973
+ Hauerkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
974
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
975
+ Keulenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
976
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
977
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
978
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
979
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
980
+ Schweinetrommelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
981
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
982
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
983
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
984
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
985
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
986
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
987
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
988
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
989
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
990
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
991
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
992
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
993
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
994
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
995
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
996
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
997
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
998
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
999
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1000
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1001
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1002
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1003
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1004
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1005
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
1006
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
1007
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1008
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
1009
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1010
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
1011
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1012
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
1013
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1014
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1015
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1016
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
1017
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
1018
+ }, []>>>;
1019
+ }, []>>>;
945
1020
  Liturgies: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"RatedMinimumNumberPrerequisiteLiturgiesTarget", DB.Object<{
946
1021
  aspect: DB.MemberDecl<DB.ReferenceIdentifier, true>;
947
1022
  }>, []>>>;
@@ -15,6 +15,7 @@ import { ProfessionPrerequisite } from "./single/ProfessionPrerequisite.js";
15
15
  import { PublicationPrerequisite } from "./single/PublicationPrerequisite.js";
16
16
  import { RacePrerequisite } from "./single/RacePrerequisite.js";
17
17
  import { RatedMinimumNumberPrerequisite } from "./single/RatedMinimumNumberPrerequisite.js";
18
+ import { RatedMinimumNumberPrerequisiteForProfession } from "./single/RatedMinimumNumberPrerequisiteForProfession.js";
18
19
  import { RatedPrerequisite } from "./single/RatedPrerequisite.js";
19
20
  import { RatedSumPrerequisite } from "./single/RatedSumPrerequisite.js";
20
21
  import { RulePrerequisite } from "./single/RulePrerequisite.js";
@@ -88,9 +89,12 @@ export const ProfessionPrerequisiteGroup = DB.Enum(import.meta.url, {
88
89
  Sex: DB.EnumCase({ type: DB.IncludeIdentifier(SexPrerequisite) }),
89
90
  Race: DB.EnumCase({ type: DB.IncludeIdentifier(RacePrerequisite) }),
90
91
  Culture: DB.EnumCase({ type: DB.IncludeIdentifier(CulturePrerequisite) }),
92
+ Rule: DB.EnumCase({ type: DB.IncludeIdentifier(RulePrerequisite) }),
91
93
  Activatable: DB.EnumCase({ type: DB.IncludeIdentifier(ActivatablePrerequisite) }),
92
94
  Rated: DB.EnumCase({ type: DB.IncludeIdentifier(RatedPrerequisite) }),
93
- RatedMinimumNumber: DB.EnumCase({ type: DB.IncludeIdentifier(RatedMinimumNumberPrerequisite) }),
95
+ RatedMinimumNumber: DB.EnumCase({
96
+ type: DB.IncludeIdentifier(RatedMinimumNumberPrerequisiteForProfession),
97
+ }),
94
98
  Energy: DB.EnumCase({ type: DB.IncludeIdentifier(EnergyPrerequisite) }),
95
99
  }),
96
100
  });
@@ -66,7 +66,7 @@ export const RatedMinimumNumberPrerequisiteSpellworksTarget = DB.TypeAlias(impor
66
66
  name: "RatedMinimumNumberPrerequisiteSpellworksTarget",
67
67
  type: () => DB.Object({
68
68
  property: DB.Required({
69
- comment: "The skills that are taken into account for satisfying the prerequisite.",
69
+ comment: "The property of which the spells are taken into account for satisfying the prerequisite.",
70
70
  type: PropertyIdentifier(),
71
71
  }),
72
72
  }),
@@ -75,7 +75,7 @@ export const RatedMinimumNumberPrerequisiteLiturgiesTarget = DB.TypeAlias(import
75
75
  name: "RatedMinimumNumberPrerequisiteLiturgiesTarget",
76
76
  type: () => DB.Object({
77
77
  aspect: DB.Required({
78
- comment: "The skills that are taken into account for satisfying the prerequisite.",
78
+ comment: "The aspect of which the liturgical chants are taken into account for satisfying the prerequisite.",
79
79
  type: AspectIdentifier(),
80
80
  }),
81
81
  }),