optolith-database-schema 0.41.0 → 0.42.1

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 (39) hide show
  1. package/CHANGELOG.md +26 -0
  2. package/gen/types.d.ts +521 -9
  3. package/lib/main.js +2 -0
  4. package/lib/types/Ceremony.d.ts +3 -0
  5. package/lib/types/FamiliarsTrick.d.ts +1 -0
  6. package/lib/types/FamiliarsTrick.js +8 -2
  7. package/lib/types/LiturgicalChant.d.ts +3 -0
  8. package/lib/types/Locale.d.ts +10 -6
  9. package/lib/types/Locale.js +10 -6
  10. package/lib/types/Profession.d.ts +14 -0
  11. package/lib/types/Race.d.ts +6 -4
  12. package/lib/types/Race.js +10 -2
  13. package/lib/types/Ritual.d.ts +3 -0
  14. package/lib/types/Spell.d.ts +3 -0
  15. package/lib/types/_ActivatableSkill.d.ts +8 -0
  16. package/lib/types/_ActivatableSkillCheckResultBased.d.ts +2 -0
  17. package/lib/types/_ActivatableSkillCheckResultBased.js +1 -0
  18. package/lib/types/_ActivatableSkillCost.d.ts +48 -0
  19. package/lib/types/_ActivatableSkillCost.js +2 -2
  20. package/lib/types/_ActivatableSkillDuration.d.ts +2 -0
  21. package/lib/types/_ActivatableSkillRange.d.ts +1 -0
  22. package/lib/types/_Identifier.d.ts +2 -0
  23. package/lib/types/_Identifier.js +4 -0
  24. package/lib/types/_IdentifierGroup.d.ts +2 -0
  25. package/lib/types/_IdentifierGroup.js +3 -1
  26. package/lib/types/index.d.ts +2 -0
  27. package/lib/types/index.js +2 -0
  28. package/lib/types/magicalActions/AnimistPower.d.ts +1 -0
  29. package/lib/types/magicalActions/Bannzeichen.d.ts +244 -0
  30. package/lib/types/magicalActions/Bannzeichen.js +231 -0
  31. package/lib/types/magicalActions/Curse.d.ts +2 -0
  32. package/lib/types/magicalActions/DominationRitual.d.ts +2 -0
  33. package/lib/types/magicalActions/GeodeRitual.d.ts +1 -0
  34. package/lib/types/magicalActions/GoblinRitual.d.ts +286 -0
  35. package/lib/types/magicalActions/GoblinRitual.js +196 -0
  36. package/lib/types/magicalActions/JesterTrick.d.ts +3 -0
  37. package/lib/types/magicalActions/MagicalRune.d.ts +2 -0
  38. package/lib/types/magicalActions/ZibiljaRitual.d.ts +2 -0
  39. package/package.json +1 -1
@@ -58,6 +58,7 @@ export declare const DurationForOneTime: DB.Enum<"DurationForOneTime", {
58
58
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
59
59
  QualityLevels: DB.EnumCase<null>;
60
60
  SkillPoints: DB.EnumCase<null>;
61
+ SkillRating: DB.EnumCase<null>;
61
62
  }, []>>, true>;
62
63
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
63
64
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -121,6 +122,7 @@ export declare const CheckResultBasedDuration: DB.TypeAlias<"CheckResultBasedDur
121
122
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
122
123
  QualityLevels: DB.EnumCase<null>;
123
124
  SkillPoints: DB.EnumCase<null>;
125
+ SkillRating: DB.EnumCase<null>;
124
126
  }, []>>, true>;
125
127
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
126
128
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -24,6 +24,7 @@ export declare const Range: DB.TypeAlias<"Range", DB.Object<{
24
24
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
25
25
  QualityLevels: DB.EnumCase<null>;
26
26
  SkillPoints: DB.EnumCase<null>;
27
+ SkillRating: DB.EnumCase<null>;
27
28
  }, []>>, true>;
28
29
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
29
30
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -23,6 +23,7 @@ export declare const AspectIdentifier: () => R;
23
23
  export declare const AttireEnchantmentIdentifier: () => R;
24
24
  export declare const AttributeIdentifier: () => R;
25
25
  export declare const BandageOrRemedyIdentifier: () => R;
26
+ export declare const BannzeichenIdentifier: () => R;
26
27
  export declare const BeutelzauberIdentifier: () => R;
27
28
  export declare const BlessedTraditionIdentifier: () => R;
28
29
  export declare const BlessingIdentifier: () => R;
@@ -71,6 +72,7 @@ export declare const GeneralSelectOptionIdentifier: () => R;
71
72
  export { GeneralSelectOptionIdentifier as GeneralIdentifier };
72
73
  export declare const GeneralSpecialAbilityIdentifier: () => R;
73
74
  export declare const GeodeRitualIdentifier: () => R;
75
+ export declare const GoblinRitualIdentifier: () => R;
74
76
  export declare const GuidelineIdentifier: () => R;
75
77
  export declare const HairColorIdentifier: () => R;
76
78
  export declare const HaubenzauberIdentifier: () => R;
@@ -62,10 +62,12 @@ import { Curriculum, Guideline, LessonPackage } from "./Lessons.js";
62
62
  import { LiturgicalChant } from "./LiturgicalChant.js";
63
63
  import { AnimistPower } from "./magicalActions/AnimistPower.js";
64
64
  import { Tribe } from "./magicalActions/AnimistPower_Tribe.js";
65
+ import { Bannzeichen } from "./magicalActions/Bannzeichen.js";
65
66
  import { Curse } from "./magicalActions/Curse.js";
66
67
  import { DominationRitual } from "./magicalActions/DominationRitual.js";
67
68
  import { ElvenMagicalSong } from "./magicalActions/ElvenMagicalSong.js";
68
69
  import { GeodeRitual } from "./magicalActions/GeodeRitual.js";
70
+ import { GoblinRitual } from "./magicalActions/GoblinRitual.js";
69
71
  import { JesterTrick } from "./magicalActions/JesterTrick.js";
70
72
  import { MagicalDance } from "./magicalActions/MagicalDance.js";
71
73
  import { MagicalMelody } from "./magicalActions/MagicalMelody.js";
@@ -176,6 +178,7 @@ export const AspectIdentifier = () => R(Aspect);
176
178
  export const AttireEnchantmentIdentifier = () => R(AttireEnchantment);
177
179
  export const AttributeIdentifier = () => R(Attribute);
178
180
  export const BandageOrRemedyIdentifier = () => R(BandageOrRemedy);
181
+ export const BannzeichenIdentifier = () => R(Bannzeichen);
179
182
  export const BeutelzauberIdentifier = () => R(Beutelzauber);
180
183
  export const BlessedTraditionIdentifier = () => R(BlessedTradition);
181
184
  export const BlessingIdentifier = () => R(Blessing);
@@ -224,6 +227,7 @@ export const GeneralSelectOptionIdentifier = () => R(GeneralSelectOption);
224
227
  export { GeneralSelectOptionIdentifier as GeneralIdentifier };
225
228
  export const GeneralSpecialAbilityIdentifier = () => R(GeneralSpecialAbility);
226
229
  export const GeodeRitualIdentifier = () => R(GeodeRitual);
230
+ export const GoblinRitualIdentifier = () => R(GoblinRitual);
227
231
  export const GuidelineIdentifier = () => R(Guideline);
228
232
  export const HairColorIdentifier = () => R(HairColor);
229
233
  export const HaubenzauberIdentifier = () => R(Haubenzauber);
@@ -243,6 +243,7 @@ export declare const LiturgyIdentifier: DB.Enum<"LiturgyIdentifier", {
243
243
  Ceremony: DB.EnumCase<DB.ReferenceIdentifier>;
244
244
  }, []>;
245
245
  export declare const MagicalActionIdentifier: DB.Enum<"MagicalActionIdentifier", {
246
+ Bannzeichen: DB.EnumCase<DB.ReferenceIdentifier>;
246
247
  Curse: DB.EnumCase<DB.ReferenceIdentifier>;
247
248
  ElvenMagicalSong: DB.EnumCase<DB.ReferenceIdentifier>;
248
249
  DominationRitual: DB.EnumCase<DB.ReferenceIdentifier>;
@@ -251,6 +252,7 @@ export declare const MagicalActionIdentifier: DB.Enum<"MagicalActionIdentifier",
251
252
  JesterTrick: DB.EnumCase<DB.ReferenceIdentifier>;
252
253
  AnimistPower: DB.EnumCase<DB.ReferenceIdentifier>;
253
254
  GeodeRitual: DB.EnumCase<DB.ReferenceIdentifier>;
255
+ GoblinRitual: DB.EnumCase<DB.ReferenceIdentifier>;
254
256
  ZibiljaRitual: DB.EnumCase<DB.ReferenceIdentifier>;
255
257
  MagicalRune: DB.EnumCase<DB.ReferenceIdentifier>;
256
258
  }, []>;
@@ -1,5 +1,5 @@
1
1
  import * as DB from "tsondb/schema/dsl";
2
- import { AdvancedCombatSpecialAbilityIdentifier, AdvancedKarmaSpecialAbilityIdentifier, AdvancedMagicalSpecialAbilityIdentifier, AdvancedSkillSpecialAbilityIdentifier, AdvantageIdentifier, AmmunitionIdentifier, AncestorGlyphIdentifier, AnimalCareIdentifier, AnimalIdentifier, AnimalShapeIdentifier, AnimalShapeSizeIdentifier, AnimistPowerIdentifier, ArcaneBardTraditionIdentifier, ArcaneDancerTraditionIdentifier, ArcaneOrbEnchantmentIdentifier, ArmorIdentifier, AspectIdentifier, AttireEnchantmentIdentifier, AttributeIdentifier, BandageOrRemedyIdentifier, 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, HaubenzauberIdentifier, IlluminationLightSourceIdentifier, IlluminationRefillOrSupplyIdentifier, InstrumentEnchantmentIdentifier, JesterTrickIdentifier, JewelryIdentifier, KarmaSpecialAbilityIdentifier, 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, ScriptIdentifier, SermonIdentifier, SexPracticeIdentifier, SexSpecialAbilityIdentifier, SickleRitualIdentifier, SikaryanDrainSpecialAbilityIdentifier, SkillApplicationIdentifier, 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";
2
+ import { AdvancedCombatSpecialAbilityIdentifier, AdvancedKarmaSpecialAbilityIdentifier, AdvancedMagicalSpecialAbilityIdentifier, AdvancedSkillSpecialAbilityIdentifier, AdvantageIdentifier, AmmunitionIdentifier, AncestorGlyphIdentifier, AnimalCareIdentifier, AnimalIdentifier, AnimalShapeIdentifier, AnimalShapeSizeIdentifier, AnimistPowerIdentifier, ArcaneBardTraditionIdentifier, ArcaneDancerTraditionIdentifier, ArcaneOrbEnchantmentIdentifier, 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, IlluminationLightSourceIdentifier, IlluminationRefillOrSupplyIdentifier, InstrumentEnchantmentIdentifier, JesterTrickIdentifier, JewelryIdentifier, KarmaSpecialAbilityIdentifier, 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, ScriptIdentifier, SermonIdentifier, SexPracticeIdentifier, SexSpecialAbilityIdentifier, SickleRitualIdentifier, SikaryanDrainSpecialAbilityIdentifier, SkillApplicationIdentifier, 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
3
  export const ActivatableIdentifier = DB.Enum(import.meta.url, {
4
4
  name: "ActivatableIdentifier",
5
5
  values: () => ({
@@ -193,6 +193,7 @@ export const LiturgyIdentifier = DB.Enum(import.meta.url, {
193
193
  export const MagicalActionIdentifier = DB.Enum(import.meta.url, {
194
194
  name: "MagicalActionIdentifier",
195
195
  values: () => ({
196
+ Bannzeichen: DB.EnumCase({ type: BannzeichenIdentifier() }),
196
197
  Curse: DB.EnumCase({ type: CurseIdentifier() }),
197
198
  ElvenMagicalSong: DB.EnumCase({ type: ElvenMagicalSongIdentifier() }),
198
199
  DominationRitual: DB.EnumCase({ type: DominationRitualIdentifier() }),
@@ -201,6 +202,7 @@ export const MagicalActionIdentifier = DB.Enum(import.meta.url, {
201
202
  JesterTrick: DB.EnumCase({ type: JesterTrickIdentifier() }),
202
203
  AnimistPower: DB.EnumCase({ type: AnimistPowerIdentifier() }),
203
204
  GeodeRitual: DB.EnumCase({ type: GeodeRitualIdentifier() }),
205
+ GoblinRitual: DB.EnumCase({ type: GoblinRitualIdentifier() }),
204
206
  ZibiljaRitual: DB.EnumCase({ type: ZibiljaRitualIdentifier() }),
205
207
  MagicalRune: DB.EnumCase({ type: MagicalRuneIdentifier() }),
206
208
  }),
@@ -62,10 +62,12 @@ export { LiturgicalChant } from "./LiturgicalChant.js";
62
62
  export { Locale } from "./Locale.js";
63
63
  export { AnimistPower } from "./magicalActions/AnimistPower.js";
64
64
  export { Tribe } from "./magicalActions/AnimistPower_Tribe.js";
65
+ export { Bannzeichen } from "./magicalActions/Bannzeichen.js";
65
66
  export { Curse } from "./magicalActions/Curse.js";
66
67
  export { DominationRitual } from "./magicalActions/DominationRitual.js";
67
68
  export { ElvenMagicalSong } from "./magicalActions/ElvenMagicalSong.js";
68
69
  export { GeodeRitual } from "./magicalActions/GeodeRitual.js";
70
+ export { GoblinRitual } from "./magicalActions/GoblinRitual.js";
69
71
  export { JesterTrick } from "./magicalActions/JesterTrick.js";
70
72
  export { MagicalDance } from "./magicalActions/MagicalDance.js";
71
73
  export { MagicalMelody } from "./magicalActions/MagicalMelody.js";
@@ -62,10 +62,12 @@ export { LiturgicalChant } from "./LiturgicalChant.js";
62
62
  export { Locale } from "./Locale.js";
63
63
  export { AnimistPower } from "./magicalActions/AnimistPower.js";
64
64
  export { Tribe } from "./magicalActions/AnimistPower_Tribe.js";
65
+ export { Bannzeichen } from "./magicalActions/Bannzeichen.js";
65
66
  export { Curse } from "./magicalActions/Curse.js";
66
67
  export { DominationRitual } from "./magicalActions/DominationRitual.js";
67
68
  export { ElvenMagicalSong } from "./magicalActions/ElvenMagicalSong.js";
68
69
  export { GeodeRitual } from "./magicalActions/GeodeRitual.js";
70
+ export { GoblinRitual } from "./magicalActions/GoblinRitual.js";
69
71
  export { JesterTrick } from "./magicalActions/JesterTrick.js";
70
72
  export { MagicalDance } from "./magicalActions/MagicalDance.js";
71
73
  export { MagicalMelody } from "./magicalActions/MagicalMelody.js";
@@ -68,6 +68,7 @@ export declare const AnimistPower: DB.Entity<"AnimistPower", {
68
68
  base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
69
69
  QualityLevels: DB.EnumCase<null>;
70
70
  SkillPoints: DB.EnumCase<null>;
71
+ SkillRating: DB.EnumCase<null>;
71
72
  }, []>>, true>;
72
73
  modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
73
74
  arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
@@ -0,0 +1,244 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ export declare const Bannzeichen: DB.Entity<"Bannzeichen", {
3
+ options: DB.MemberDecl<DB.ChildEntities<DB.Entity<"BannzeichenOption", {
4
+ parent: DB.MemberDecl<DB.ReferenceIdentifier, true>;
5
+ cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SingleBannzeichenCost", DB.Object<{
6
+ value: DB.MemberDecl<DB.Integer, true>;
7
+ translations: DB.MemberDecl<DB.NestedEntityMap<"SingleBannzeichenCostTranslation", {
8
+ note: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
9
+ full: DB.MemberDecl<DB.String, true>;
10
+ compressed: DB.MemberDecl<DB.String, false>;
11
+ }>, []>>, true>;
12
+ }>, false>;
13
+ }>, []>>, false>;
14
+ improvement_cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ImprovementCost", {
15
+ A: DB.EnumCase<null>;
16
+ B: DB.EnumCase<null>;
17
+ C: DB.EnumCase<null>;
18
+ D: DB.EnumCase<null>;
19
+ }, []>>, false>;
20
+ suboption: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"BannzeichenSuboption", {
21
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomBannzeichenSuboption", DB.Object<{
22
+ translations: DB.MemberDecl<DB.NestedEntityMap<"CustomBannzeichenSuboptionTranslation", {
23
+ examples: DB.MemberDecl<DB.Array<DB.String>, false>;
24
+ }>, true>;
25
+ }>, []>>>;
26
+ }, []>>, false>;
27
+ translations: DB.MemberDecl<DB.NestedEntityMap<"BannzeichenOptionTranslation", {
28
+ name: DB.MemberDecl<DB.String, true>;
29
+ native_name: DB.MemberDecl<DB.String, true>;
30
+ }>, true>;
31
+ }, "parent">>, true>;
32
+ check: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SkillCheck", DB.Array<DB.ReferenceIdentifier>, []>>, true>;
33
+ parameters: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"BannzeichenPerformanceParameters", DB.Object<{
34
+ cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"BannzeichenCost", {
35
+ Single: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"SingleBannzeichenCost", DB.Object<{
36
+ value: DB.MemberDecl<DB.Integer, true>;
37
+ translations: DB.MemberDecl<DB.NestedEntityMap<"SingleBannzeichenCostTranslation", {
38
+ note: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
39
+ full: DB.MemberDecl<DB.String, true>;
40
+ compressed: DB.MemberDecl<DB.String, false>;
41
+ }>, []>>, true>;
42
+ }>, false>;
43
+ }>, []>>>;
44
+ Disjunction: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"BannzeichenCostDisjunction", DB.Object<{
45
+ list: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"SingleBannzeichenCost", DB.Object<{
46
+ value: DB.MemberDecl<DB.Integer, true>;
47
+ translations: DB.MemberDecl<DB.NestedEntityMap<"SingleBannzeichenCostTranslation", {
48
+ note: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
49
+ full: DB.MemberDecl<DB.String, true>;
50
+ compressed: DB.MemberDecl<DB.String, false>;
51
+ }>, []>>, true>;
52
+ }>, false>;
53
+ }>, []>>>, true>;
54
+ }>, []>>>;
55
+ DerivedFromOption: DB.EnumCase<null>;
56
+ }, []>>, true>;
57
+ crafting_time: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"BannzeichenCraftingTime", DB.Object<{
58
+ value: DB.MemberDecl<DB.Integer, true>;
59
+ per: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"BannzeichenCraftingTimePerCountable", DB.Object<{
60
+ translations: DB.MemberDecl<DB.NestedEntityMap<"BannzeichenCraftingTimePerCountableTranslation", {
61
+ countable: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveText", DB.Object<{
62
+ full: DB.MemberDecl<DB.String, true>;
63
+ compressed: DB.MemberDecl<DB.String, true>;
64
+ }>, []>>, true>;
65
+ }>, true>;
66
+ }>, []>>, false>;
67
+ }>, []>>, true>;
68
+ duration: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"BannzeichenDuration", DB.Object<{
69
+ slow: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedDuration", DB.Object<{
70
+ is_maximum: DB.MemberDecl<DB.Boolean, false>;
71
+ base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
72
+ QualityLevels: DB.EnumCase<null>;
73
+ SkillPoints: DB.EnumCase<null>;
74
+ SkillRating: DB.EnumCase<null>;
75
+ }, []>>, true>;
76
+ modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
77
+ arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
78
+ Multiply: DB.EnumCase<null>;
79
+ Divide: DB.EnumCase<null>;
80
+ }, []>>, true>;
81
+ value: DB.MemberDecl<DB.Integer, true>;
82
+ }>, []>>, false>;
83
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
84
+ Seconds: DB.EnumCase<null>;
85
+ Minutes: DB.EnumCase<null>;
86
+ Hours: DB.EnumCase<null>;
87
+ Days: DB.EnumCase<null>;
88
+ Weeks: DB.EnumCase<null>;
89
+ Months: DB.EnumCase<null>;
90
+ Years: DB.EnumCase<null>;
91
+ Centuries: DB.EnumCase<null>;
92
+ Actions: DB.EnumCase<null>;
93
+ CombatRounds: DB.EnumCase<null>;
94
+ }, []>>, true>;
95
+ translations: DB.MemberDecl<DB.NestedEntityMap<"CheckResultBasedDurationTranslation", {
96
+ replacement: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextReplace", DB.Object<{
97
+ full: DB.MemberDecl<DB.String, true>;
98
+ compressed: DB.MemberDecl<DB.String, true>;
99
+ }>, []>>, false>;
100
+ }>, false>;
101
+ }>, []>>, true>;
102
+ fast: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedDuration", DB.Object<{
103
+ is_maximum: DB.MemberDecl<DB.Boolean, false>;
104
+ base: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultValue", {
105
+ QualityLevels: DB.EnumCase<null>;
106
+ SkillPoints: DB.EnumCase<null>;
107
+ SkillRating: DB.EnumCase<null>;
108
+ }, []>>, true>;
109
+ modifier: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CheckResultBasedModifier", DB.Object<{
110
+ arithmetic: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"CheckResultArithmetic", {
111
+ Multiply: DB.EnumCase<null>;
112
+ Divide: DB.EnumCase<null>;
113
+ }, []>>, true>;
114
+ value: DB.MemberDecl<DB.Integer, true>;
115
+ }>, []>>, false>;
116
+ unit: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"DurationUnit", {
117
+ Seconds: DB.EnumCase<null>;
118
+ Minutes: DB.EnumCase<null>;
119
+ Hours: DB.EnumCase<null>;
120
+ Days: DB.EnumCase<null>;
121
+ Weeks: DB.EnumCase<null>;
122
+ Months: DB.EnumCase<null>;
123
+ Years: DB.EnumCase<null>;
124
+ Centuries: DB.EnumCase<null>;
125
+ Actions: DB.EnumCase<null>;
126
+ CombatRounds: DB.EnumCase<null>;
127
+ }, []>>, true>;
128
+ translations: DB.MemberDecl<DB.NestedEntityMap<"CheckResultBasedDurationTranslation", {
129
+ replacement: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextReplace", DB.Object<{
130
+ full: DB.MemberDecl<DB.String, true>;
131
+ compressed: DB.MemberDecl<DB.String, true>;
132
+ }>, []>>, false>;
133
+ }>, false>;
134
+ }>, []>>, true>;
135
+ }>, []>>, true>;
136
+ }>, []>>, true>;
137
+ property: DB.MemberDecl<DB.ReferenceIdentifier, true>;
138
+ improvement_cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"BannzeichenImprovementCost", {
139
+ Constant: DB.EnumCase<DB.IncludeIdentifier<[], DB.Enum<"ImprovementCost", {
140
+ A: DB.EnumCase<null>;
141
+ B: DB.EnumCase<null>;
142
+ C: DB.EnumCase<null>;
143
+ D: DB.EnumCase<null>;
144
+ }, []>>>;
145
+ DerivedFromOption: DB.EnumCase<null>;
146
+ }, []>>, true>;
147
+ src: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRefs", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PublicationRef", DB.Object<{
148
+ id: DB.MemberDecl<DB.ReferenceIdentifier, true>;
149
+ occurrences: DB.MemberDecl<DB.NestedEntityMap<string, {
150
+ initial: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"InitialOccurrence", DB.Object<{
151
+ printing: DB.MemberDecl<DB.Integer, false>;
152
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
153
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
154
+ InsideCoverFront: DB.EnumCase<null>;
155
+ InsideCoverBack: DB.EnumCase<null>;
156
+ Numbered: DB.EnumCase<DB.Integer>;
157
+ }, []>>, true>;
158
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
159
+ InsideCoverFront: DB.EnumCase<null>;
160
+ InsideCoverBack: DB.EnumCase<null>;
161
+ Numbered: DB.EnumCase<DB.Integer>;
162
+ }, []>>, false>;
163
+ }>, []>>>, true>;
164
+ isRemoved: DB.MemberDecl<DB.Boolean, false>;
165
+ }>, []>>, true>;
166
+ revisions: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.Enum<"Revision", {
167
+ Since: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Since", DB.Object<{
168
+ printing: DB.MemberDecl<DB.Integer, true>;
169
+ pages: DB.MemberDecl<DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"PageRange", DB.Object<{
170
+ first_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
171
+ InsideCoverFront: DB.EnumCase<null>;
172
+ InsideCoverBack: DB.EnumCase<null>;
173
+ Numbered: DB.EnumCase<DB.Integer>;
174
+ }, []>>, true>;
175
+ last_page: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"Page", {
176
+ InsideCoverFront: DB.EnumCase<null>;
177
+ InsideCoverBack: DB.EnumCase<null>;
178
+ Numbered: DB.EnumCase<DB.Integer>;
179
+ }, []>>, false>;
180
+ }>, []>>>, true>;
181
+ }>, []>>>;
182
+ Deprecated: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"Deprecation", DB.Object<{
183
+ printing: DB.MemberDecl<DB.Integer, true>;
184
+ }>, []>>>;
185
+ }, []>>>, false>;
186
+ }>, true>;
187
+ }>, []>>>, []>>, true>;
188
+ translations: DB.MemberDecl<DB.NestedEntityMap<"BannzeichenTranslation", {
189
+ name: DB.MemberDecl<DB.String, true>;
190
+ name_in_library: DB.MemberDecl<DB.String, false>;
191
+ native_name: DB.MemberDecl<DB.String, false>;
192
+ effect: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ActivatableSkillEffect", {
193
+ Plain: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ActivatableSkillPlainEffect", DB.Object<{
194
+ text: DB.MemberDecl<DB.String, true>;
195
+ }>, []>>>;
196
+ ForEachQualityLevel: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ActivatableSkillEffectForEachQualityLevel", DB.Object<{
197
+ text_before: DB.MemberDecl<DB.String, true>;
198
+ quality_levels: DB.MemberDecl<DB.Array<DB.String>, true>;
199
+ text_after: DB.MemberDecl<DB.String, false>;
200
+ }>, []>>>;
201
+ ForEachTwoQualityLevels: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"ActivatableSkillEffectForEachTwoQualityLevels", DB.Object<{
202
+ text_before: DB.MemberDecl<DB.String, true>;
203
+ quality_levels: DB.MemberDecl<DB.Array<DB.String>, true>;
204
+ text_after: DB.MemberDecl<DB.String, false>;
205
+ }>, []>>>;
206
+ }, []>>, true>;
207
+ cost: DB.MemberDecl<DB.String, false>;
208
+ crafting_time: DB.MemberDecl<DB.String, false>;
209
+ duration: DB.MemberDecl<DB.String, false>;
210
+ errata: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"Errata", DB.Array<DB.IncludeIdentifier<[], DB.TypeAlias<"Erratum", DB.Object<{
211
+ date: DB.MemberDecl<DB.Date, true>;
212
+ description: DB.MemberDecl<DB.String, true>;
213
+ }>, []>>>, []>>, false>;
214
+ }>, true>;
215
+ }, undefined>;
216
+ export declare const BannzeichenOption: DB.Entity<"BannzeichenOption", {
217
+ parent: DB.MemberDecl<DB.ReferenceIdentifier, true>;
218
+ cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"SingleBannzeichenCost", DB.Object<{
219
+ value: DB.MemberDecl<DB.Integer, true>;
220
+ translations: DB.MemberDecl<DB.NestedEntityMap<"SingleBannzeichenCostTranslation", {
221
+ note: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"ResponsiveTextOptional", DB.Object<{
222
+ full: DB.MemberDecl<DB.String, true>;
223
+ compressed: DB.MemberDecl<DB.String, false>;
224
+ }>, []>>, true>;
225
+ }>, false>;
226
+ }>, []>>, false>;
227
+ improvement_cost: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"ImprovementCost", {
228
+ A: DB.EnumCase<null>;
229
+ B: DB.EnumCase<null>;
230
+ C: DB.EnumCase<null>;
231
+ D: DB.EnumCase<null>;
232
+ }, []>>, false>;
233
+ suboption: DB.MemberDecl<DB.IncludeIdentifier<[], DB.Enum<"BannzeichenSuboption", {
234
+ Custom: DB.EnumCase<DB.IncludeIdentifier<[], DB.TypeAlias<"CustomBannzeichenSuboption", DB.Object<{
235
+ translations: DB.MemberDecl<DB.NestedEntityMap<"CustomBannzeichenSuboptionTranslation", {
236
+ examples: DB.MemberDecl<DB.Array<DB.String>, false>;
237
+ }>, true>;
238
+ }>, []>>>;
239
+ }, []>>, false>;
240
+ translations: DB.MemberDecl<DB.NestedEntityMap<"BannzeichenOptionTranslation", {
241
+ name: DB.MemberDecl<DB.String, true>;
242
+ native_name: DB.MemberDecl<DB.String, true>;
243
+ }>, true>;
244
+ }, "parent">;
@@ -0,0 +1,231 @@
1
+ import * as DB from "tsondb/schema/dsl";
2
+ import { name_in_library } from "../_Activatable.js";
3
+ import { CheckResultBasedDuration } from "../_ActivatableSkillDuration.js";
4
+ import { ActivatableSkillEffect } from "../_ActivatableSkillEffect.js";
5
+ import { PropertyIdentifier, BannzeichenIdentifier } from "../_Identifier.js";
6
+ import { ImprovementCost } from "../_ImprovementCost.js";
7
+ import { ResponsiveText, ResponsiveTextOptional } from "../_ResponsiveText.js";
8
+ import { SkillCheck } from "../_SkillCheck.js";
9
+ import { NestedTranslationMap } from "../Locale.js";
10
+ import { Errata } from "../source/_Erratum.js";
11
+ import { src } from "../source/_PublicationRef.js";
12
+ export const Bannzeichen = DB.Entity(import.meta.url, {
13
+ name: "Bannzeichen",
14
+ namePlural: "Bannzeichen",
15
+ type: () => DB.Object({
16
+ options: DB.Required({
17
+ comment: `The options the Bannzeichen has, if any.
18
+
19
+ If there are multiple options, the Bannzeichen may be activated for each option, that is, multiple times.`,
20
+ type: DB.ChildEntities(BannzeichenOption),
21
+ }),
22
+ check: DB.Required({
23
+ comment: "Lists the linked three attributes used to make a skill check.",
24
+ type: DB.IncludeIdentifier(SkillCheck),
25
+ }),
26
+ parameters: DB.Required({
27
+ comment: "Measurable parameters of a Bannzeichen.",
28
+ type: DB.IncludeIdentifier(BannzeichenPerformanceParameters),
29
+ }),
30
+ property: DB.Required({
31
+ comment: "The associated property.",
32
+ type: PropertyIdentifier(),
33
+ }),
34
+ improvement_cost: DB.Required({
35
+ comment: "States which column is used to improve the skill.",
36
+ type: DB.IncludeIdentifier(BannzeichenImprovementCost),
37
+ }),
38
+ src,
39
+ translations: NestedTranslationMap(DB.Required, "Bannzeichen", DB.Object({
40
+ name: DB.Required({
41
+ comment: `The Bannzeichen’s name.
42
+
43
+ If the Bannzeichen has an option, the option’s name will/should not be included in the name as well as its surrounding parenthesis. It will/should be combined on demand.`,
44
+ type: DB.String({ minLength: 1 }),
45
+ }),
46
+ name_in_library,
47
+ native_name: DB.Optional({
48
+ comment: "The native name of the Bannzeichen. It has to be specified unless it is defined by an option.",
49
+ type: DB.String({ minLength: 1 }),
50
+ }),
51
+ effect: DB.Required({
52
+ comment: "The effect description may be either a plain text or a text that is divided by a list of effects for each quality level. It may also be a list for each two quality levels.",
53
+ type: DB.IncludeIdentifier(ActivatableSkillEffect),
54
+ }),
55
+ cost: DB.Optional({
56
+ comment: "The ae-cost of the Bannzeichen",
57
+ type: DB.String({ minLength: 1 }),
58
+ }),
59
+ crafting_time: DB.Optional({
60
+ comment: "The crafting time of the Bannzeichen",
61
+ type: DB.String({ minLength: 1 }),
62
+ }),
63
+ duration: DB.Optional({
64
+ comment: "The duration of the Bannzeichen",
65
+ type: DB.String({ minLength: 1 }),
66
+ }),
67
+ errata: DB.Optional({
68
+ type: DB.IncludeIdentifier(Errata),
69
+ }),
70
+ })),
71
+ }),
72
+ instanceDisplayName: {},
73
+ uniqueConstraints: [
74
+ {
75
+ entityMapKeyPath: "translations",
76
+ keyPathInEntityMap: "name",
77
+ },
78
+ ],
79
+ });
80
+ const BannzeichenPerformanceParameters = DB.TypeAlias(import.meta.url, {
81
+ name: "BannzeichenPerformanceParameters",
82
+ comment: "Measurable parameters of a Bannzeichen.",
83
+ type: () => DB.Object({
84
+ cost: DB.Required({
85
+ comment: "The AE cost.",
86
+ type: DB.IncludeIdentifier(BannzeichenCost),
87
+ }),
88
+ crafting_time: DB.Required({
89
+ comment: "The crafting time.",
90
+ type: DB.IncludeIdentifier(BannzeichenCraftingTime),
91
+ }),
92
+ duration: DB.Required({
93
+ comment: "The duration.",
94
+ type: DB.IncludeIdentifier(BannzeichenDuration),
95
+ }),
96
+ }),
97
+ });
98
+ const BannzeichenCost = DB.Enum(import.meta.url, {
99
+ name: "BannzeichenCost",
100
+ values: () => ({
101
+ Single: DB.EnumCase({ type: DB.IncludeIdentifier(SingleBannzeichenCost) }),
102
+ Disjunction: DB.EnumCase({ type: DB.IncludeIdentifier(BannzeichenCostDisjunction) }),
103
+ DerivedFromOption: DB.EnumCase({ type: null }),
104
+ }),
105
+ });
106
+ const SingleBannzeichenCost = DB.TypeAlias(import.meta.url, {
107
+ name: "SingleBannzeichenCost",
108
+ type: () => DB.Object({
109
+ value: DB.Required({
110
+ comment: "The AE cost value.",
111
+ type: DB.Integer({ minimum: 1 }),
112
+ }),
113
+ translations: NestedTranslationMap(DB.Optional, "SingleBannzeichenCost", DB.Object({
114
+ note: DB.Required({
115
+ comment: "A note, appended to the generated string in parenthesis.",
116
+ type: DB.IncludeIdentifier(ResponsiveTextOptional),
117
+ }),
118
+ })),
119
+ }),
120
+ });
121
+ const BannzeichenCostDisjunction = DB.TypeAlias(import.meta.url, {
122
+ name: "BannzeichenCostDisjunction",
123
+ type: () => DB.Object({
124
+ list: DB.Required({
125
+ comment: "A set of possible AE cost values.",
126
+ type: DB.Array(DB.IncludeIdentifier(SingleBannzeichenCost), {
127
+ minItems: 2,
128
+ uniqueItems: true,
129
+ }),
130
+ }),
131
+ }),
132
+ });
133
+ const BannzeichenCraftingTimePerCountable = DB.TypeAlias(import.meta.url, {
134
+ name: "BannzeichenCraftingTimePerCountable",
135
+ type: () => DB.Object({
136
+ translations: NestedTranslationMap(DB.Required, "BannzeichenCraftingTimePerCountable", DB.Object({
137
+ countable: DB.Required({
138
+ comment: "The countable entity name.",
139
+ type: DB.IncludeIdentifier(ResponsiveText),
140
+ }),
141
+ })),
142
+ }),
143
+ });
144
+ const BannzeichenCraftingTime = DB.TypeAlias(import.meta.url, {
145
+ name: "BannzeichenCraftingTime",
146
+ type: () => DB.Object({
147
+ value: DB.Required({
148
+ comment: "The crafting time in actions.",
149
+ type: DB.Integer({ minimum: 1 }),
150
+ }),
151
+ per: DB.Optional({
152
+ comment: "The crafting time has to be per a specific countable entity, e.g. `8 Actions per person`.",
153
+ type: DB.IncludeIdentifier(BannzeichenCraftingTimePerCountable),
154
+ }),
155
+ }),
156
+ });
157
+ const BannzeichenDuration = DB.TypeAlias(import.meta.url, {
158
+ name: "BannzeichenDuration",
159
+ type: () => DB.Object({
160
+ slow: DB.Required({
161
+ comment: "The duration on slow Bannzeichen application.",
162
+ type: DB.IncludeIdentifier(CheckResultBasedDuration),
163
+ }),
164
+ fast: DB.Required({
165
+ comment: "The duration on fast Bannzeichen application.",
166
+ type: DB.IncludeIdentifier(CheckResultBasedDuration),
167
+ }),
168
+ }),
169
+ });
170
+ const BannzeichenImprovementCost = DB.Enum(import.meta.url, {
171
+ name: "BannzeichenImprovementCost",
172
+ values: () => ({
173
+ Constant: DB.EnumCase({ type: DB.IncludeIdentifier(ImprovementCost) }),
174
+ DerivedFromOption: DB.EnumCase({ type: null }),
175
+ }),
176
+ });
177
+ export const BannzeichenOption = DB.Entity(import.meta.url, {
178
+ name: "BannzeichenOption",
179
+ namePlural: "BannzeichenOptions",
180
+ type: () => DB.Object({
181
+ parent: DB.Required({
182
+ comment: "The Bannzeichen this option belongs to.",
183
+ type: BannzeichenIdentifier(),
184
+ }),
185
+ cost: DB.Optional({
186
+ comment: "The option-specific AE cost.",
187
+ type: DB.IncludeIdentifier(SingleBannzeichenCost),
188
+ }),
189
+ improvement_cost: DB.Optional({
190
+ comment: "The option-specific improvement cost.",
191
+ type: DB.IncludeIdentifier(ImprovementCost),
192
+ }),
193
+ suboption: DB.Optional({
194
+ type: DB.IncludeIdentifier(BannzeichenSuboption),
195
+ }),
196
+ translations: NestedTranslationMap(DB.Required, "BannzeichenOption", DB.Object({
197
+ name: DB.Required({
198
+ comment: `The Bannzeichen option’s name.
199
+
200
+ The surrounding parenthesis will/should not be included, they will/should be generated.`,
201
+ type: DB.String({ minLength: 1 }),
202
+ }),
203
+ native_name: DB.Required({
204
+ comment: "The native name of the Bannzeichen option.",
205
+ type: DB.String({ minLength: 1 }),
206
+ }),
207
+ })),
208
+ }),
209
+ parentReferenceKey: "parent",
210
+ instanceDisplayName: {},
211
+ });
212
+ const BannzeichenSuboption = DB.Enum(import.meta.url, {
213
+ name: "BannzeichenSuboption",
214
+ values: () => ({
215
+ Custom: DB.EnumCase({
216
+ comment: "The sub-option may be defined by the user (as a arbitrary text).",
217
+ type: DB.IncludeIdentifier(CustomBannzeichenSuboption),
218
+ }),
219
+ }),
220
+ });
221
+ const CustomBannzeichenSuboption = DB.TypeAlias(import.meta.url, {
222
+ name: "CustomBannzeichenSuboption",
223
+ type: () => DB.Object({
224
+ translations: NestedTranslationMap(DB.Required, "CustomBannzeichenSuboption", DB.Object({
225
+ examples: DB.Optional({
226
+ comment: "One or more examples for the suboption.",
227
+ type: DB.Array(DB.String({ minLength: 1 }), { minItems: 1, uniqueItems: true }),
228
+ }),
229
+ }, { minProperties: 1 })),
230
+ }),
231
+ });