@optolith/database-schema 0.86.0 → 0.88.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.
@@ -14,8 +14,9 @@ export type DerivedTradeSecretsCache = {
14
14
  herbary: {
15
15
  [K in HerbaryEntitiesWithTradeSecrets]: Record<string, TradeSecret>;
16
16
  };
17
+ talismans: Record<string, TradeSecret>;
17
18
  all: {
18
- id: Case<"TradeSecret" | EquipmentEntitiesWithComplexities | HerbaryEntitiesWithTradeSecrets, string>;
19
+ id: Case<"TradeSecret" | EquipmentEntitiesWithComplexities | HerbaryEntitiesWithTradeSecrets | "Talisman", string>;
19
20
  content: TradeSecret;
20
21
  }[];
21
22
  };
@@ -35,6 +35,7 @@ export const buildDerivedTradeSecretsCache = (database, settings) => {
35
35
  const cache = {
36
36
  equipment: emptyDerivedEquipmentTradeSecretsCache,
37
37
  herbary: emptyDerivedHerbaryTradeSecretsCache,
38
+ talismans: {},
38
39
  all: database.getAllInstanceContainersOfEntity("TradeSecret").map(container => ({
39
40
  id: Case("TradeSecret", container.id),
40
41
  content: container.content,
@@ -122,5 +123,31 @@ export const buildDerivedTradeSecretsCache = (database, settings) => {
122
123
  return assertExhaustive(entity);
123
124
  }
124
125
  }
126
+ for (const container of database.getAllInstanceContainersOfEntity("Talisman")) {
127
+ if (container.content.ap_value !== undefined) {
128
+ const derivedTradeSecret = {
129
+ ap_value: Case("Fixed", container.content.ap_value),
130
+ is_secret_knowledge: false,
131
+ prerequisites: [
132
+ Case("Single", Case("Rule", {
133
+ id: Case("FocusRule", settings.derivedTradeSecrets.requiredFocusRuleForTalismans),
134
+ active: true,
135
+ })),
136
+ ],
137
+ src: container.content.src,
138
+ translations: Object.fromEntries(Object.entries(container.content.translations).map(([lang, translation]) => [
139
+ lang,
140
+ {
141
+ name: translation.name,
142
+ },
143
+ ])),
144
+ };
145
+ cache.talismans[container.id] = derivedTradeSecret;
146
+ cache.all.push({
147
+ id: Case("Talisman", container.id),
148
+ content: derivedTradeSecret,
149
+ });
150
+ }
151
+ }
125
152
  return cache;
126
153
  };
@@ -3,7 +3,6 @@ import { CommonnessRatedAdvantageDisadvantage } from "./_CommonnessRatedAdvantag
3
3
  import { AdvantageIdentifier, BlessedTraditionIdentifier, DisadvantageIdentifier, LanguageIdentifier, LanguageSpecializationIdentifier, MagicalTraditionIdentifier, ProfessionIdentifier, ProfessionVariantIdentifier, ScriptIdentifier, SkillIdentifier, SocialStatusIdentifier, } from "./_Identifier.js";
4
4
  import { BinarySex } from "./_Sex.js";
5
5
  import { NestedTranslationMap } from "./Locale.js";
6
- import { MundaneProfessionGroup } from "./Profession.js";
7
6
  import { Errata } from "./source/_Erratum.js";
8
7
  import { src } from "./source/_PublicationRef.js";
9
8
  export const Culture = DB.Entity(import.meta.url, {
@@ -248,7 +247,6 @@ const MundaneCommonProfessionConstraint = DB.Enum(import.meta.url, {
248
247
  name: "MundaneCommonProfessionConstraint",
249
248
  values: () => ({
250
249
  Profession: DB.EnumCase({ type: DB.IncludeIdentifier(ProfessionConstraint) }),
251
- Group: DB.EnumCase({ type: DB.IncludeIdentifier(MundaneProfessionGroup) }),
252
250
  }),
253
251
  });
254
252
  const MagicCommonProfessionConstraint = DB.Enum(import.meta.url, {
@@ -264,6 +262,7 @@ const BlessedCommonProfessionConstraint = DB.Enum(import.meta.url, {
264
262
  values: () => ({
265
263
  Tradition: DB.EnumCase({ type: DB.IncludeIdentifier(BlessedTraditionConstraint) }),
266
264
  Profession: DB.EnumCase({ type: DB.IncludeIdentifier(ProfessionConstraint) }),
265
+ Religious: DB.EnumCase({ type: null }),
267
266
  }),
268
267
  });
269
268
  const PlainCommonProfessions = DB.TypeAlias(import.meta.url, {
@@ -31,6 +31,7 @@ export declare const DerivedCharacteristic: DB.Entity<"DerivedCharacteristic", {
31
31
  FocusRule: DB.EnumCase<DB.ReferenceIdentifier>;
32
32
  OptionalRule: DB.EnumCase<DB.ReferenceIdentifier>;
33
33
  }, []>>, true>;
34
+ active: DB.MemberDecl<DB.Boolean, true>;
34
35
  display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
35
36
  Hide: DB.EnumCase<null>;
36
37
  ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
@@ -160,6 +161,7 @@ export declare const DerivedCharacteristic: DB.Entity<"DerivedCharacteristic", {
160
161
  FocusRule: DB.EnumCase<DB.ReferenceIdentifier>;
161
162
  OptionalRule: DB.EnumCase<DB.ReferenceIdentifier>;
162
163
  }, []>>, true>;
164
+ active: DB.MemberDecl<DB.Boolean, true>;
163
165
  display_option: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DisplayOption", {
164
166
  Hide: DB.EnumCase<null>;
165
167
  ReplaceWith: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReplacementDisplayOption", DB.Object<{
@@ -259,6 +261,8 @@ export declare const DerivedCharacteristic: DB.Entity<"DerivedCharacteristic", {
259
261
  translations: DB.MemberDecl<DB.NestedEntityMap<"DerivedCharacteristicTranslation", {
260
262
  name: DB.MemberDecl<DB.String, true>;
261
263
  abbreviation: DB.MemberDecl<DB.String, true>;
264
+ unitAbbreviation: DB.MemberDecl<DB.String, false>;
265
+ unitAbbreviationValueAware: DB.MemberDecl<DB.String, false>;
262
266
  description: DB.MemberDecl<DB.String, false>;
263
267
  calculation: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CalculationTranslation", DB.Object<{
264
268
  default: DB.MemberDecl<DB.String, true>;
@@ -37,6 +37,14 @@ export const DerivedCharacteristic = DB.Entity(import.meta.url, {
37
37
  comment: "The derived characteristic’s abbreviation.",
38
38
  type: DB.String({ minLength: 1 }),
39
39
  }),
40
+ unitAbbreviation: DB.Optional({
41
+ comment: "The unit the derived characteristic is measured in, if different from the main abbreviation.",
42
+ type: DB.String({ minLength: 1 }),
43
+ }),
44
+ unitAbbreviationValueAware: DB.Optional({
45
+ comment: "The value-aware unit the derived characteristic is measured in, if different from the normal unit abbreviation. The string must follow the MessageFormat 2 specification and receives the value for the unit as the parameter `$value`. This can be used to display the unit in singular or plural form depending on the value, if relevant.",
46
+ type: DB.String({ minLength: 1 }),
47
+ }),
40
48
  description: DB.Optional({
41
49
  comment: "The derived characteristic’s description.",
42
50
  type: DB.String({ minLength: 1, markdown: "block" }),
@@ -1715,6 +1715,12 @@ export declare const Locale: DB.Entity<"Locale", {
1715
1715
  "Ritual Enhancement {$ritual}": null;
1716
1716
  "Liturgical Enhancement {$liturgicalChantOrCeremony}": null;
1717
1717
  "Secret Knowledge": null;
1718
+ Activation: null;
1719
+ "Main Talisman": null;
1720
+ "Minor Talisman": null;
1721
+ "Powerful Talisman": null;
1722
+ Regalia: null;
1723
+ Talisman: null;
1718
1724
  "Profession Package": null;
1719
1725
  "Optional Rule": null;
1720
1726
  }>, false>;
@@ -1770,6 +1770,13 @@ export const Locale = DB.Entity(import.meta.url, {
1770
1770
  "Liturgical Enhancement {$liturgicalChantOrCeremony}": null,
1771
1771
  // Trade secrets
1772
1772
  "Secret Knowledge": null,
1773
+ // talismans
1774
+ "Activation": null,
1775
+ "Main Talisman": null,
1776
+ "Minor Talisman": null,
1777
+ "Powerful Talisman": null,
1778
+ "Regalia": null,
1779
+ "Talisman": null,
1773
1780
  // Library Entry Subtitles
1774
1781
  "Profession Package": null,
1775
1782
  "Optional Rule": null,
@@ -4,13 +4,15 @@ export declare const Profession: DB.Entity<"Profession", {
4
4
  Mundane: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"MundaneProfessionGroup", {
5
5
  Profane: DB.EnumCase<null>;
6
6
  Fighter: DB.EnumCase<null>;
7
- Religious: DB.EnumCase<null>;
8
7
  }, []>>>;
9
8
  Magical: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"MagicalProfessionGroup", DB.Object<{
10
9
  curriculum: DB.MemberDecl<DB.ReferenceIdentifier, false>;
11
10
  subgroup: DB.MemberDecl<DB.ReferenceIdentifier, false>;
12
11
  }>, []>>>;
13
12
  Blessed: DB.EnumCase<null>;
13
+ Religious: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ReligiousProfessionGroup", DB.Object<{
14
+ associatedTradition: DB.MemberDecl<DB.ReferenceIdentifier, false>;
15
+ }>, []>>>;
14
16
  }, []>>, true>;
15
17
  versions: DB.MemberDecl<DB.ChildEntities<DB.Entity<"ProfessionVersion", {
16
18
  profession: DB.MemberDecl<DB.ReferenceIdentifier, true>;
@@ -53,6 +55,12 @@ export declare const Profession: DB.Entity<"Profession", {
53
55
  includeScripts: DB.MemberDecl<DB.Boolean, true>;
54
56
  ap_value: DB.MemberDecl<DB.Integer, true>;
55
57
  }>, []>>, false>;
58
+ specialAbilitiesForAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SpecialAbilitiesForAdventurePointsOption", DB.Object<{
59
+ groups: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilitiesForAdventurePointsOptionGroup", {
60
+ [k: string]: DB.EnumCase<null>;
61
+ }, []>>>, true>;
62
+ apValue: DB.MemberDecl<DB.Integer, true>;
63
+ }>, []>>, false>;
56
64
  combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CombatTechniquesOptions", DB.Object<{
57
65
  fixed: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"RatingForCombatTechniquesNumber", DB.Object<{
58
66
  number: DB.MemberDecl<DB.Integer, true>;
@@ -87,6 +95,65 @@ export declare const Profession: DB.Entity<"Profession", {
87
95
  number: DB.MemberDecl<DB.Integer, true>;
88
96
  apValue: DB.MemberDecl<DB.Integer, true>;
89
97
  }>, []>>, false>;
98
+ spellworksForChosenProperty: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SpellworksForChosenProperty", DB.Object<{
99
+ entry: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
100
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
101
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
102
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
103
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
104
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
105
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
106
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
107
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
108
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
109
+ Hauerkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
110
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
111
+ Keulenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
112
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
113
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
114
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
115
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
116
+ Schweinetrommelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
117
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
118
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
119
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
120
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
121
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
122
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
123
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
124
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
125
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
126
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
127
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
128
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
129
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
130
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
131
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
132
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
133
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
134
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
135
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
136
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
137
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
138
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
139
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
140
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
141
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
142
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
143
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
144
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
145
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
146
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
147
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
148
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
149
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
150
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
151
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
152
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
153
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
154
+ }, []>>, true>;
155
+ apValue: DB.MemberDecl<DB.Integer, true>;
156
+ }>, []>>, false>;
90
157
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LiturgiesOptions", DB.Object<{
91
158
  ap_value: DB.MemberDecl<DB.Integer, true>;
92
159
  }>, []>>, false>;
@@ -327,6 +394,10 @@ export declare const Profession: DB.Entity<"Profession", {
327
394
  Remove: DB.EnumCase<null>;
328
395
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
329
396
  }, [T: DB.Param<"T", DB.Type>]>>, false>;
397
+ specialAbilitiesForAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
398
+ Remove: DB.EnumCase<null>;
399
+ Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
400
+ }, [T: DB.Param<"T", DB.Type>]>>, false>;
330
401
  combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
331
402
  Remove: DB.EnumCase<null>;
332
403
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
@@ -351,6 +422,10 @@ export declare const Profession: DB.Entity<"Profession", {
351
422
  Remove: DB.EnumCase<null>;
352
423
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
353
424
  }, [T: DB.Param<"T", DB.Type>]>>, false>;
425
+ spellworksForChosenProperty: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
426
+ Remove: DB.EnumCase<null>;
427
+ Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
428
+ }, [T: DB.Param<"T", DB.Type>]>>, false>;
354
429
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
355
430
  Remove: DB.EnumCase<null>;
356
431
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
@@ -805,7 +880,6 @@ export declare const Profession: DB.Entity<"Profession", {
805
880
  export declare const MundaneProfessionGroup: DB.Enum<"MundaneProfessionGroup", {
806
881
  Profane: DB.EnumCase<null>;
807
882
  Fighter: DB.EnumCase<null>;
808
- Religious: DB.EnumCase<null>;
809
883
  }, []>;
810
884
  export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
811
885
  profession: DB.MemberDecl<DB.ReferenceIdentifier, true>;
@@ -848,6 +922,12 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
848
922
  includeScripts: DB.MemberDecl<DB.Boolean, true>;
849
923
  ap_value: DB.MemberDecl<DB.Integer, true>;
850
924
  }>, []>>, false>;
925
+ specialAbilitiesForAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SpecialAbilitiesForAdventurePointsOption", DB.Object<{
926
+ groups: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilitiesForAdventurePointsOptionGroup", {
927
+ [k: string]: DB.EnumCase<null>;
928
+ }, []>>>, true>;
929
+ apValue: DB.MemberDecl<DB.Integer, true>;
930
+ }>, []>>, false>;
851
931
  combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CombatTechniquesOptions", DB.Object<{
852
932
  fixed: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"RatingForCombatTechniquesNumber", DB.Object<{
853
933
  number: DB.MemberDecl<DB.Integer, true>;
@@ -882,6 +962,65 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
882
962
  number: DB.MemberDecl<DB.Integer, true>;
883
963
  apValue: DB.MemberDecl<DB.Integer, true>;
884
964
  }>, []>>, false>;
965
+ spellworksForChosenProperty: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SpellworksForChosenProperty", DB.Object<{
966
+ entry: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
967
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
968
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
969
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
970
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
971
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
972
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
973
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
974
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
975
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
976
+ Hauerkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
977
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
978
+ Keulenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
979
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
980
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
981
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
982
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
983
+ Schweinetrommelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
984
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
985
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
986
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
987
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
988
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
989
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
990
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
991
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
992
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
993
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
994
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
995
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
996
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
997
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
998
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
999
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1000
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1001
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1002
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1003
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1004
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1005
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1006
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1007
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1008
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
1009
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
1010
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1011
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
1012
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1013
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
1014
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1015
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
1016
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1017
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1018
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1019
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
1020
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
1021
+ }, []>>, true>;
1022
+ apValue: DB.MemberDecl<DB.Integer, true>;
1023
+ }>, []>>, false>;
885
1024
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LiturgiesOptions", DB.Object<{
886
1025
  ap_value: DB.MemberDecl<DB.Integer, true>;
887
1026
  }>, []>>, false>;
@@ -1122,6 +1261,10 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
1122
1261
  Remove: DB.EnumCase<null>;
1123
1262
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
1124
1263
  }, [T: DB.Param<"T", DB.Type>]>>, false>;
1264
+ specialAbilitiesForAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
1265
+ Remove: DB.EnumCase<null>;
1266
+ Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
1267
+ }, [T: DB.Param<"T", DB.Type>]>>, false>;
1125
1268
  combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
1126
1269
  Remove: DB.EnumCase<null>;
1127
1270
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
@@ -1146,6 +1289,10 @@ export declare const ProfessionVersion: DB.Entity<"ProfessionVersion", {
1146
1289
  Remove: DB.EnumCase<null>;
1147
1290
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
1148
1291
  }, [T: DB.Param<"T", DB.Type>]>>, false>;
1292
+ spellworksForChosenProperty: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
1293
+ Remove: DB.EnumCase<null>;
1294
+ Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
1295
+ }, [T: DB.Param<"T", DB.Type>]>>, false>;
1149
1296
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
1150
1297
  Remove: DB.EnumCase<null>;
1151
1298
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
@@ -1635,6 +1782,12 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1635
1782
  includeScripts: DB.MemberDecl<DB.Boolean, true>;
1636
1783
  ap_value: DB.MemberDecl<DB.Integer, true>;
1637
1784
  }>, []>>, false>;
1785
+ specialAbilitiesForAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SpecialAbilitiesForAdventurePointsOption", DB.Object<{
1786
+ groups: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilitiesForAdventurePointsOptionGroup", {
1787
+ [k: string]: DB.EnumCase<null>;
1788
+ }, []>>>, true>;
1789
+ apValue: DB.MemberDecl<DB.Integer, true>;
1790
+ }>, []>>, false>;
1638
1791
  combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CombatTechniquesOptions", DB.Object<{
1639
1792
  fixed: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"RatingForCombatTechniquesNumber", DB.Object<{
1640
1793
  number: DB.MemberDecl<DB.Integer, true>;
@@ -1669,6 +1822,65 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1669
1822
  number: DB.MemberDecl<DB.Integer, true>;
1670
1823
  apValue: DB.MemberDecl<DB.Integer, true>;
1671
1824
  }>, []>>, false>;
1825
+ spellworksForChosenProperty: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SpellworksForChosenProperty", DB.Object<{
1826
+ entry: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"SpecialAbilityIdentifier", {
1827
+ ArcaneOrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1828
+ AttireEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1829
+ Beutelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
1830
+ BowlEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1831
+ CauldronEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1832
+ ChronicleEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1833
+ DaggerRitual: DB.EnumCase<DB.ReferenceIdentifier>;
1834
+ FoolsHatEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1835
+ Haubenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
1836
+ Hauerkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
1837
+ InstrumentEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1838
+ Keulenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
1839
+ Krallenkettenzauber: DB.EnumCase<DB.ReferenceIdentifier>;
1840
+ Kristallkugelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
1841
+ OrbEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1842
+ RingEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1843
+ Schweinetrommelzauber: DB.EnumCase<DB.ReferenceIdentifier>;
1844
+ SickleRitual: DB.EnumCase<DB.ReferenceIdentifier>;
1845
+ SpellSwordEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1846
+ StaffEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1847
+ ToyEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1848
+ Trinkhornzauber: DB.EnumCase<DB.ReferenceIdentifier>;
1849
+ WandEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1850
+ WeaponEnchantment: DB.EnumCase<DB.ReferenceIdentifier>;
1851
+ AdvancedCombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1852
+ AdvancedKarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1853
+ AdvancedMagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1854
+ AdvancedSkillSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1855
+ AncestorGlyph: DB.EnumCase<DB.ReferenceIdentifier>;
1856
+ BlessedTradition: DB.EnumCase<DB.ReferenceIdentifier>;
1857
+ BrawlingSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1858
+ CeremonialItemSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1859
+ CombatSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1860
+ CombatStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1861
+ CommandSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1862
+ FamiliarSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1863
+ FatePointSexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1864
+ FatePointSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1865
+ GeneralSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1866
+ KarmaSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1867
+ LiturgicalStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1868
+ LycantropicGift: DB.EnumCase<DB.ReferenceIdentifier>;
1869
+ MagicalSign: DB.EnumCase<DB.ReferenceIdentifier>;
1870
+ MagicalSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1871
+ MagicalTradition: DB.EnumCase<DB.ReferenceIdentifier>;
1872
+ MagicStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1873
+ PactGift: DB.EnumCase<DB.ReferenceIdentifier>;
1874
+ ProtectiveWardingCircleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1875
+ Sermon: DB.EnumCase<DB.ReferenceIdentifier>;
1876
+ SexSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1877
+ SikaryanDrainSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1878
+ SkillStyleSpecialAbility: DB.EnumCase<DB.ReferenceIdentifier>;
1879
+ VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
1880
+ Vision: DB.EnumCase<DB.ReferenceIdentifier>;
1881
+ }, []>>, true>;
1882
+ apValue: DB.MemberDecl<DB.Integer, true>;
1883
+ }>, []>>, false>;
1672
1884
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"LiturgiesOptions", DB.Object<{
1673
1885
  ap_value: DB.MemberDecl<DB.Integer, true>;
1674
1886
  }>, []>>, false>;
@@ -1909,6 +2121,10 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1909
2121
  Remove: DB.EnumCase<null>;
1910
2122
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
1911
2123
  }, [T: DB.Param<"T", DB.Type>]>>, false>;
2124
+ specialAbilitiesForAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
2125
+ Remove: DB.EnumCase<null>;
2126
+ Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
2127
+ }, [T: DB.Param<"T", DB.Type>]>>, false>;
1912
2128
  combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
1913
2129
  Remove: DB.EnumCase<null>;
1914
2130
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
@@ -1933,6 +2149,10 @@ export declare const ProfessionPackage: DB.Entity<"ProfessionPackage", {
1933
2149
  Remove: DB.EnumCase<null>;
1934
2150
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
1935
2151
  }, [T: DB.Param<"T", DB.Type>]>>, false>;
2152
+ spellworksForChosenProperty: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
2153
+ Remove: DB.EnumCase<null>;
2154
+ Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
2155
+ }, [T: DB.Param<"T", DB.Type>]>>, false>;
1936
2156
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
1937
2157
  Remove: DB.EnumCase<null>;
1938
2158
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
@@ -2189,6 +2409,10 @@ export declare const ProfessionVariant: DB.Entity<"ProfessionVariant", {
2189
2409
  Remove: DB.EnumCase<null>;
2190
2410
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
2191
2411
  }, [T: DB.Param<"T", DB.Type>]>>, false>;
2412
+ specialAbilitiesForAdventurePoints: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
2413
+ Remove: DB.EnumCase<null>;
2414
+ Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
2415
+ }, [T: DB.Param<"T", DB.Type>]>>, false>;
2192
2416
  combat_techniques: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
2193
2417
  Remove: DB.EnumCase<null>;
2194
2418
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
@@ -2213,6 +2437,10 @@ export declare const ProfessionVariant: DB.Entity<"ProfessionVariant", {
2213
2437
  Remove: DB.EnumCase<null>;
2214
2438
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
2215
2439
  }, [T: DB.Param<"T", DB.Type>]>>, false>;
2440
+ spellworksForChosenProperty: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
2441
+ Remove: DB.EnumCase<null>;
2442
+ Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
2443
+ }, [T: DB.Param<"T", DB.Type>]>>, false>;
2216
2444
  liturgies: DB.MemberDecl<DB.IncludeIdentifier<DB.Param<string, DB.Type>[], DB.Enum<"VariantOptionAction", {
2217
2445
  Remove: DB.EnumCase<null>;
2218
2446
  Override: DB.EnumCase<DB.TypeArgument<DB.Param<"T", DB.Type>>>;
@@ -2,8 +2,8 @@ import { isNotNullish } from "@elyukai/utils/nullable";
2
2
  import * as DB from "tsondb/schema/dsl";
3
3
  import { verifyOptionsForActivatableEntry } from "./_ActivatableSelectOptions.js";
4
4
  import { CommonnessRatedAdvantageDisadvantage } from "./_CommonnessRatedAdvantageDisadvantage.js";
5
- import { AdvantageIdentifier, BannzeichenOptionIdentifier, CantripIdentifier, CurriculumIdentifier, DisadvantageIdentifier, ExperienceLevelIdentifier, MagicalTraditionIdentifier, ProfessionIdentifier, ProfessionPackageIdentifier, ProfessionVersionIdentifier, SkillGroupIdentifier, SkillIdentifier, } from "./_Identifier.js";
6
- import { CombatTechniqueIdentifier, LiturgyIdentifier, MagicalActionIdentifier, ProfessionSpecialAbilityIdentifier, RequirableSelectOptionIdentifier, SpellworkIdentifier, } from "./_IdentifierGroup.js";
5
+ import { AdvantageIdentifier, BannzeichenOptionIdentifier, BlessedTraditionIdentifier, CantripIdentifier, CurriculumIdentifier, DisadvantageIdentifier, ExperienceLevelIdentifier, MagicalTraditionIdentifier, ProfessionIdentifier, ProfessionPackageIdentifier, ProfessionVersionIdentifier, SkillGroupIdentifier, SkillIdentifier, } from "./_Identifier.js";
6
+ import { CombatTechniqueIdentifier, LiturgyIdentifier, MagicalActionIdentifier, ProfessionSpecialAbilityIdentifier, RequirableSelectOptionIdentifier, SpecialAbilityIdentifier, SpellworkIdentifier, } from "./_IdentifierGroup.js";
7
7
  import { ProfessionPrerequisites, ProfessionVariantPrerequisites } from "./_Prerequisite.js";
8
8
  import { NestedTranslationMap } from "./Locale.js";
9
9
  import { Errata } from "./source/_Erratum.js";
@@ -47,6 +47,7 @@ const ProfessionGroup = DB.Enum(import.meta.url, {
47
47
  Mundane: DB.EnumCase({ type: DB.IncludeIdentifier(MundaneProfessionGroup) }),
48
48
  Magical: DB.EnumCase({ type: DB.IncludeIdentifier(MagicalProfessionGroup) }),
49
49
  Blessed: DB.EnumCase({ type: null }),
50
+ Religious: DB.EnumCase({ type: DB.IncludeIdentifier(ReligiousProfessionGroup) }),
50
51
  }),
51
52
  });
52
53
  export const MundaneProfessionGroup = DB.Enum(import.meta.url, {
@@ -54,7 +55,6 @@ export const MundaneProfessionGroup = DB.Enum(import.meta.url, {
54
55
  values: () => ({
55
56
  Profane: DB.EnumCase({ type: null }),
56
57
  Fighter: DB.EnumCase({ type: null }),
57
- Religious: DB.EnumCase({ type: null }),
58
58
  }),
59
59
  });
60
60
  const MagicalProfessionGroup = DB.TypeAlias(import.meta.url, {
@@ -70,6 +70,15 @@ const MagicalProfessionGroup = DB.TypeAlias(import.meta.url, {
70
70
  }),
71
71
  }),
72
72
  });
73
+ const ReligiousProfessionGroup = DB.TypeAlias(import.meta.url, {
74
+ name: "ReligiousProfessionGroup",
75
+ type: () => DB.Object({
76
+ associatedTradition: DB.Optional({
77
+ comment: "The associated blessed tradition (religion).",
78
+ type: BlessedTraditionIdentifier(),
79
+ }),
80
+ }),
81
+ });
73
82
  export const ProfessionVersion = DB.Entity(import.meta.url, {
74
83
  name: "ProfessionVersion",
75
84
  namePlural: "ProfessionVersions",
@@ -481,6 +490,9 @@ const ProfessionPackageOptions = DB.TypeAlias(import.meta.url, {
481
490
  languages_scripts: DB.Optional({
482
491
  type: DB.IncludeIdentifier(LanguagesScriptsOptions),
483
492
  }),
493
+ specialAbilitiesForAdventurePoints: DB.Optional({
494
+ type: DB.IncludeIdentifier(SpecialAbilitiesForAdventurePointsOption),
495
+ }),
484
496
  combat_techniques: DB.Optional({
485
497
  type: DB.IncludeIdentifier(CombatTechniquesOptions),
486
498
  }),
@@ -499,6 +511,9 @@ const ProfessionPackageOptions = DB.TypeAlias(import.meta.url, {
499
511
  spellworks: DB.Optional({
500
512
  type: DB.IncludeIdentifier(SpellworksOptions),
501
513
  }),
514
+ spellworksForChosenProperty: DB.Optional({
515
+ type: DB.IncludeIdentifier(SpellworksForChosenProperty),
516
+ }),
502
517
  liturgies: DB.Optional({
503
518
  type: DB.IncludeIdentifier(LiturgiesOptions),
504
519
  }),
@@ -518,6 +533,11 @@ const ProfessionVariantPackageOptions = DB.TypeAlias(import.meta.url, {
518
533
  DB.IncludeIdentifier(LanguagesScriptsOptions),
519
534
  ]),
520
535
  }),
536
+ specialAbilitiesForAdventurePoints: DB.Optional({
537
+ type: DB.GenIncludeIdentifier(VariantOptionAction, [
538
+ DB.IncludeIdentifier(SpecialAbilitiesForAdventurePointsOption),
539
+ ]),
540
+ }),
521
541
  combat_techniques: DB.Optional({
522
542
  type: DB.GenIncludeIdentifier(VariantOptionAction, [
523
543
  DB.IncludeIdentifier(CombatTechniquesOptions),
@@ -544,6 +564,11 @@ const ProfessionVariantPackageOptions = DB.TypeAlias(import.meta.url, {
544
564
  DB.IncludeIdentifier(SpellworksOptions),
545
565
  ]),
546
566
  }),
567
+ spellworksForChosenProperty: DB.Optional({
568
+ type: DB.GenIncludeIdentifier(VariantOptionAction, [
569
+ DB.IncludeIdentifier(SpellworksForChosenProperty),
570
+ ]),
571
+ }),
547
572
  liturgies: DB.Optional({
548
573
  type: DB.GenIncludeIdentifier(VariantOptionAction, [
549
574
  DB.IncludeIdentifier(LiturgiesOptions),
@@ -699,6 +724,20 @@ const SpellworksOptions = DB.TypeAlias(import.meta.url, {
699
724
  }),
700
725
  }),
701
726
  });
727
+ const SpellworksForChosenProperty = DB.TypeAlias(import.meta.url, {
728
+ name: "SpellworksForChosenProperty",
729
+ comment: `Buy spells and rituals that match the property option of a selected special ability for a specific amount of AP.`,
730
+ type: () => DB.Object({
731
+ entry: DB.Required({
732
+ comment: "The entry that has a property as a select option, where you have to choose between multiple properties within the profession (the special ability must be entered as a `Selection`).",
733
+ type: DB.IncludeIdentifier(SpecialAbilityIdentifier),
734
+ }),
735
+ apValue: DB.Required({
736
+ comment: "The AP value you can buy spells and rituals for.",
737
+ type: DB.Integer({ minimum: 1 }),
738
+ }),
739
+ }),
740
+ });
702
741
  const LiturgiesOptions = DB.TypeAlias(import.meta.url, {
703
742
  name: "LiturgiesOptions",
704
743
  comment: `Buy liturgical chants and ceremonies for a specific amount of AP.`,
@@ -709,6 +748,29 @@ const LiturgiesOptions = DB.TypeAlias(import.meta.url, {
709
748
  }),
710
749
  }),
711
750
  });
751
+ const SpecialAbilitiesForAdventurePointsOptionGroup = DB.Enum(import.meta.url, {
752
+ name: "SpecialAbilitiesForAdventurePointsOptionGroup",
753
+ values: () => Object.fromEntries(Object.keys(SpecialAbilityIdentifier.type.value.values).map(key => [
754
+ key,
755
+ DB.EnumCase({ type: null }),
756
+ ])),
757
+ });
758
+ const SpecialAbilitiesForAdventurePointsOption = DB.TypeAlias(import.meta.url, {
759
+ name: "SpecialAbilitiesForAdventurePointsOption",
760
+ comment: `Buy special abilities for a specific amount of AP.`,
761
+ type: () => DB.Object({
762
+ groups: DB.Required({
763
+ comment: "The groups you can choose special abilities from.",
764
+ type: DB.Array(DB.IncludeIdentifier(SpecialAbilitiesForAdventurePointsOptionGroup), {
765
+ minItems: 1,
766
+ }),
767
+ }),
768
+ apValue: DB.Required({
769
+ comment: "The AP value you can buy special abilities for.",
770
+ type: DB.Integer({ minimum: 1 }),
771
+ }),
772
+ }),
773
+ });
712
774
  const ProfessionName = DB.TypeAlias(import.meta.url, {
713
775
  name: "ProfessionName",
714
776
  comment: "The name of the profession that may have sex-specific names. Useful if the term in generell is different (i.e. actor/actress) or if the language uses gendered nouns. The default name is also used in case neither the male nor female name strictly applies.",
@@ -115,6 +115,7 @@ export declare const Settings: DB.SingletonEntity<"Settings", {
115
115
  VampiricGift: DB.EnumCase<DB.ReferenceIdentifier>;
116
116
  Vision: DB.EnumCase<DB.ReferenceIdentifier>;
117
117
  }, []>>, true>;
118
+ requiredFocusRuleForTalismans: DB.MemberDecl<DB.ReferenceIdentifier, true>;
118
119
  }>, []>>, true>;
119
120
  supernaturalBaseAdvantages: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SupernaturalBaseAdvantageSettings", DB.Object<{
120
121
  spellcasters: DB.MemberDecl<DB.ReferenceIdentifier, true>;