From 2490ebca9304a21213617af26cbc154e610f591d Mon Sep 17 00:00:00 2001 From: Lector Date: Tue, 24 Mar 2026 00:16:18 +0100 Subject: [PATCH 1/9] Bannzeichen --- src/types/_Identifier.ts | 2 + src/types/_IdentifierGroup.ts | 2 + src/types/magicalActions/Bannzeichen.ts | 194 ++++++++++++++++++++++++ 3 files changed, 198 insertions(+) create mode 100644 src/types/magicalActions/Bannzeichen.ts diff --git a/src/types/_Identifier.ts b/src/types/_Identifier.ts index 5b2e1f2e..57c37090 100644 --- a/src/types/_Identifier.ts +++ b/src/types/_Identifier.ts @@ -62,6 +62,7 @@ import { Curriculum, Guideline, LessonPackage } from "./Lessons.js" import { LiturgicalChant } from "./LiturgicalChant.js" import { AnimistPower } from "./magicalActions/AnimistPower.js" import { Tribe } from "./magicalActions/AnimistPower_Tribe.js" +import { Bannzeichen } from "./magicalActions/Bannzeichen.js" import { Curse } from "./magicalActions/Curse.js" import { DominationRitual } from "./magicalActions/DominationRitual.js" import { ElvenMagicalSong } from "./magicalActions/ElvenMagicalSong.js" @@ -184,6 +185,7 @@ export const AspectIdentifier: () => R = () => R(Aspect) export const AttireEnchantmentIdentifier: () => R = () => R(AttireEnchantment) export const AttributeIdentifier: () => R = () => R(Attribute) export const BandageOrRemedyIdentifier: () => R = () => R(BandageOrRemedy) +export const BannzeichenIdentifier: () => R = () => R(Bannzeichen) export const BeutelzauberIdentifier: () => R = () => R(Beutelzauber) export const BlessedTraditionIdentifier: () => R = () => R(BlessedTradition) export const BlessingIdentifier: () => R = () => R(Blessing) diff --git a/src/types/_IdentifierGroup.ts b/src/types/_IdentifierGroup.ts index 636413ec..2415e0fa 100644 --- a/src/types/_IdentifierGroup.ts +++ b/src/types/_IdentifierGroup.ts @@ -20,6 +20,7 @@ import { AttireEnchantmentIdentifier, AttributeIdentifier, BandageOrRemedyIdentifier, + BannzeichenIdentifier, BeutelzauberIdentifier, BlessedTraditionIdentifier, BlessingIdentifier, @@ -338,6 +339,7 @@ export const LiturgyIdentifier = DB.Enum(import.meta.url, { export const MagicalActionIdentifier = DB.Enum(import.meta.url, { name: "MagicalActionIdentifier", values: () => ({ + Bannzeichen: DB.EnumCase({ type: BannzeichenIdentifier() }), Curse: DB.EnumCase({ type: CurseIdentifier() }), ElvenMagicalSong: DB.EnumCase({ type: ElvenMagicalSongIdentifier() }), DominationRitual: DB.EnumCase({ type: DominationRitualIdentifier() }), diff --git a/src/types/magicalActions/Bannzeichen.ts b/src/types/magicalActions/Bannzeichen.ts new file mode 100644 index 00000000..07b288fa --- /dev/null +++ b/src/types/magicalActions/Bannzeichen.ts @@ -0,0 +1,194 @@ +import * as DB from "tsondb/schema/dsl" +import { name_in_library } from "../_Activatable.js" +import { OldParameter } from "../_ActivatableSkill.js" +import { CheckResultBasedDuration } from "../_ActivatableSkillDuration.js" +import { ActivatableSkillEffect } from "../_ActivatableSkillEffect.js" +import { PropertyIdentifier } from "../_Identifier.js" +import { ImprovementCost } from "../_ImprovementCost.js" +import { ResponsiveText, ResponsiveTextOptional } from "../_ResponsiveText.js" +import { SkillCheck } from "../_SkillCheck.js" +import { NestedTranslationMap } from "../Locale.js" +import { Errata } from "../source/_Erratum.js" +import { src } from "../source/_PublicationRef.js" + +export const Bannzeichen = DB.Entity(import.meta.url, { + name: "Bannzeichen", + namePlural: "Bannzeichen", + type: () => + DB.Object({ + check: DB.Required({ + comment: "Lists the linked three attributes used to make a skill check.", + type: DB.IncludeIdentifier(SkillCheck), + }), + parameters: DB.Required({ + comment: "Measurable parameters of a magical rune.", + type: DB.IncludeIdentifier(BannzeichenPerformanceParameters), + }), + property: DB.Required({ + comment: "The associated property.", + type: PropertyIdentifier(), + }), + improvement_cost: DB.Required({ + comment: "States which column is used to improve the skill.", + type: DB.IncludeIdentifier( BannzeichenImprovementCost), + }), + src, + translations: NestedTranslationMap( + DB.Required, + "Bannzeichen", + DB.Object({ + name: DB.Required({ + comment: `The bannzeichen’s name. + +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.`, + type: DB.String({ minLength: 1 }), + }), + name_in_library, + native_name: DB.Optional({ + comment: + "The native name of the bannzeichen. It has to be specified unless it is defined by an option.", + type: DB.String({ minLength: 1 }), + }), + effect: DB.Required({ + 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.", + type: DB.IncludeIdentifier(ActivatableSkillEffect), + }), + cost: DB.Optional({ + isDeprecated: true, + type: DB.IncludeIdentifier(OldParameter), + }), + errata: DB.Optional({ + type: DB.IncludeIdentifier(Errata), + }), + }), + ), + }), + instanceDisplayName: {}, + uniqueConstraints: [ + { + entityMapKeyPath: "translations", + keyPathInEntityMap: "name", + }, + ], +}) + +const BannzeichenPerformanceParameters = DB.TypeAlias(import.meta.url, { + name: "BannzeichenPerformanceParameters", + comment: "Measurable parameters of a magical rune.", + type: () => + DB.Object({ + cost: DB.Required({ + comment: "The AE cost.", + type: DB.IncludeIdentifier(BannzeichenCost), + }), + crafting_time: DB.Required({ + comment: "The crafting time.", + type: DB.IncludeIdentifier(BannzeichenCraftingTime), + }), + duration: DB.Required({ + comment: "The duration.", + type: DB.IncludeIdentifier(BannzeichenDuration), + }), + }), +}) + +const BannzeichenCost = DB.Enum(import.meta.url, { + name: "BannzeichenCost", + values: () => ({ + Single: DB.EnumCase({ type: DB.IncludeIdentifier(SingleBannzeichenCost) }), + Disjunction: DB.EnumCase({ type: DB.IncludeIdentifier(BannzeichenCostDisjunction) }), + DerivedFromOption: DB.EnumCase({ type: null }), + }), +}) + +const SingleBannzeichenCost = DB.TypeAlias(import.meta.url, { + name: "SingleBannzeichenCost", + type: () => + DB.Object({ + value: DB.Required({ + comment: "The AE cost value.", + type: DB.Integer({ minimum: 1 }), + }), + translations: NestedTranslationMap( + DB.Optional, + "SingleBannzeichenCost", + DB.Object({ + note: DB.Required({ + comment: "A note, appended to the generated string in parenthesis.", + type: DB.IncludeIdentifier(ResponsiveTextOptional), + }), + }), + ), + }), +}) + +const BannzeichenCostDisjunction = DB.TypeAlias(import.meta.url, { + name: "BannzeichenCostDisjunction", + type: () => + DB.Object({ + list: DB.Required({ + comment: "A set of possible AE cost values.", + type: DB.Array(DB.IncludeIdentifier(SingleBannzeichenCost), { + minItems: 2, + uniqueItems: true, + }), + }), + }), +}) + +const BannzeichenCraftingTimePerCountable = DB.TypeAlias(import.meta.url, { + name: "BannzeichenCraftingTimePerCountable", + type: () => + DB.Object({ + translations: NestedTranslationMap( + DB.Required, + "BannzeichenCraftingTimePerCountable", + DB.Object({ + countable: DB.Required({ + comment: "The countable entity name.", + type: DB.IncludeIdentifier(ResponsiveText), + }), + }), + ), + }), +}) + +const BannzeichenCraftingTime = DB.TypeAlias(import.meta.url, { + name: "BannzeichenCraftingTime", + type: () => + DB.Object({ + value: DB.Required({ + comment: "The crafting time in actions.", + type: DB.Integer({ minimum: 1 }), + }), + per: DB.Optional({ + comment: + "The crafting time has to be per a specific countable entity, e.g. `8 Actions per person`.", + type: DB.IncludeIdentifier(BannzeichenCraftingTimePerCountable), + }), + }), +}) + +const BannzeichenDuration = DB.TypeAlias(import.meta.url, { + name: "BannzeichenDuration", + type: () => + DB.Object({ + slow: DB.Required({ + comment: "The duration on slow rune application.", + type: DB.IncludeIdentifier(CheckResultBasedDuration), + }), + fast: DB.Required({ + comment: "The duration on fast rune application.", + type: DB.IncludeIdentifier(CheckResultBasedDuration), + }), + }), +}) + +const BannzeichenImprovementCost = DB.Enum(import.meta.url, { + name: "BannzeichenImprovementCost", + values: () => ({ + Constant: DB.EnumCase({ type: DB.IncludeIdentifier(ImprovementCost) }), + DerivedFromOption: DB.EnumCase({ type: null }), + }), +}) From cd5ef77f674878b2721bce116a9ca692318428b1 Mon Sep 17 00:00:00 2001 From: Lector Date: Tue, 24 Mar 2026 00:18:22 +0100 Subject: [PATCH 2/9] Prettier --- src/types/magicalActions/Bannzeichen.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/types/magicalActions/Bannzeichen.ts b/src/types/magicalActions/Bannzeichen.ts index 07b288fa..c086f95f 100644 --- a/src/types/magicalActions/Bannzeichen.ts +++ b/src/types/magicalActions/Bannzeichen.ts @@ -30,7 +30,7 @@ export const Bannzeichen = DB.Entity(import.meta.url, { }), improvement_cost: DB.Required({ comment: "States which column is used to improve the skill.", - type: DB.IncludeIdentifier( BannzeichenImprovementCost), + type: DB.IncludeIdentifier(BannzeichenImprovementCost), }), src, translations: NestedTranslationMap( @@ -74,7 +74,7 @@ If the bannzeichen has an option, the option’s name will/should not be include }) const BannzeichenPerformanceParameters = DB.TypeAlias(import.meta.url, { - name: "BannzeichenPerformanceParameters", + name: "BannzeichenPerformanceParameters", comment: "Measurable parameters of a magical rune.", type: () => DB.Object({ From 858e9115e88cf452002a6b0c7892b6265cf71246 Mon Sep 17 00:00:00 2001 From: Lector Date: Tue, 24 Mar 2026 01:37:00 +0100 Subject: [PATCH 3/9] Added options to Bannzeichen.ts analog to Magical Runes --- src/types/magicalActions/Bannzeichen.ts | 79 ++++++++++++++++++++++++- 1 file changed, 78 insertions(+), 1 deletion(-) diff --git a/src/types/magicalActions/Bannzeichen.ts b/src/types/magicalActions/Bannzeichen.ts index c086f95f..79123a33 100644 --- a/src/types/magicalActions/Bannzeichen.ts +++ b/src/types/magicalActions/Bannzeichen.ts @@ -3,7 +3,7 @@ import { name_in_library } from "../_Activatable.js" import { OldParameter } from "../_ActivatableSkill.js" import { CheckResultBasedDuration } from "../_ActivatableSkillDuration.js" import { ActivatableSkillEffect } from "../_ActivatableSkillEffect.js" -import { PropertyIdentifier } from "../_Identifier.js" +import { PropertyIdentifier, BannzeichenIdentifier } from "../_Identifier.js" import { ImprovementCost } from "../_ImprovementCost.js" import { ResponsiveText, ResponsiveTextOptional } from "../_ResponsiveText.js" import { SkillCheck } from "../_SkillCheck.js" @@ -16,6 +16,12 @@ export const Bannzeichen = DB.Entity(import.meta.url, { namePlural: "Bannzeichen", type: () => DB.Object({ + options: DB.Required({ + comment: `The options the magical rune has, if any. + +If there are multiple options, the magical rune may be activated for each option, that is, multiple times.`, + type: DB.ChildEntities(BannzeichenOption), + }), check: DB.Required({ comment: "Lists the linked three attributes used to make a skill check.", type: DB.IncludeIdentifier(SkillCheck), @@ -192,3 +198,74 @@ const BannzeichenImprovementCost = DB.Enum(import.meta.url, { DerivedFromOption: DB.EnumCase({ type: null }), }), }) + +export const BannzeichenOption = DB.Entity(import.meta.url, { + name: "BannzeichenOption", + namePlural: "BannzeichenOptions", + type: () => + DB.Object({ + parent: DB.Required({ + comment: "The bannzeichen this option belongs to.", + type: BannzeichenIdentifier(), + }), + cost: DB.Optional({ + comment: "The option-specific AE cost.", + type: DB.IncludeIdentifier(SingleBannzeichenCost), + }), + improvement_cost: DB.Optional({ + comment: "The option-specific improvement cost.", + type: DB.IncludeIdentifier(ImprovementCost), + }), + suboption: DB.Optional({ + type: DB.IncludeIdentifier(BannzeichenSuboption), + }), + translations: NestedTranslationMap( + DB.Required, + "BannzeichenOption", + DB.Object({ + name: DB.Required({ + comment: `The bannzeichen option’s name. + +The surrounding parenthesis will/should not be included, they will/should be generated.`, + type: DB.String({ minLength: 1 }), + }), + native_name: DB.Required({ + comment: "The native name of the bannzeichen option.", + type: DB.String({ minLength: 1 }), + }), + }), + ), + }), + parentReferenceKey: "parent", + instanceDisplayName: {}, +}) + +const BannzeichenSuboption = DB.Enum(import.meta.url, { + name: "BannzeichenSuboption", + values: () => ({ + Custom: DB.EnumCase({ + comment: "The sub-option may be defined by the user (as a arbitrary text).", + type: DB.IncludeIdentifier(CustomBannzeichenSuboption), + }), + }), +}) + +const CustomBannzeichenSuboption = DB.TypeAlias(import.meta.url, { + name: "CustomBannzeichenSuboption", + type: () => + DB.Object({ + translations: NestedTranslationMap( + DB.Required, + "CustomBannzeichenSuboption", + DB.Object( + { + examples: DB.Optional({ + comment: "One or more examples for the suboption.", + type: DB.Array(DB.String({ minLength: 1 }), { minItems: 1, uniqueItems: true }), + }), + }, + { minProperties: 1 }, + ), + ), + }), +}) From e331850ac7ebb1d6b516c07373edf436f63887ec Mon Sep 17 00:00:00 2001 From: Lector Date: Tue, 24 Mar 2026 09:46:49 +0100 Subject: [PATCH 4/9] corrected copy&paste errors --- src/types/magicalActions/Bannzeichen.ts | 29 ++++++++++--------------- 1 file changed, 12 insertions(+), 17 deletions(-) diff --git a/src/types/magicalActions/Bannzeichen.ts b/src/types/magicalActions/Bannzeichen.ts index 79123a33..24b11cae 100644 --- a/src/types/magicalActions/Bannzeichen.ts +++ b/src/types/magicalActions/Bannzeichen.ts @@ -1,6 +1,5 @@ import * as DB from "tsondb/schema/dsl" import { name_in_library } from "../_Activatable.js" -import { OldParameter } from "../_ActivatableSkill.js" import { CheckResultBasedDuration } from "../_ActivatableSkillDuration.js" import { ActivatableSkillEffect } from "../_ActivatableSkillEffect.js" import { PropertyIdentifier, BannzeichenIdentifier } from "../_Identifier.js" @@ -17,9 +16,9 @@ export const Bannzeichen = DB.Entity(import.meta.url, { type: () => DB.Object({ options: DB.Required({ - comment: `The options the magical rune has, if any. + comment: `The options the Bannzeichen has, if any. -If there are multiple options, the magical rune may be activated for each option, that is, multiple times.`, +If there are multiple options, the Bannzeichen may be activated for each option, that is, multiple times.`, type: DB.ChildEntities(BannzeichenOption), }), check: DB.Required({ @@ -27,7 +26,7 @@ If there are multiple options, the magical rune may be activated for each option type: DB.IncludeIdentifier(SkillCheck), }), parameters: DB.Required({ - comment: "Measurable parameters of a magical rune.", + comment: "Measurable parameters of a Bannzeichen.", type: DB.IncludeIdentifier(BannzeichenPerformanceParameters), }), property: DB.Required({ @@ -44,15 +43,15 @@ If there are multiple options, the magical rune may be activated for each option "Bannzeichen", DB.Object({ name: DB.Required({ - comment: `The bannzeichen’s name. + comment: `The Bannzeichen’s name. -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.`, +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.`, type: DB.String({ minLength: 1 }), }), name_in_library, native_name: DB.Optional({ comment: - "The native name of the bannzeichen. It has to be specified unless it is defined by an option.", + "The native name of the Bannzeichen. It has to be specified unless it is defined by an option.", type: DB.String({ minLength: 1 }), }), effect: DB.Required({ @@ -60,10 +59,6 @@ If the bannzeichen has an option, the option’s name will/should not be include "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.", type: DB.IncludeIdentifier(ActivatableSkillEffect), }), - cost: DB.Optional({ - isDeprecated: true, - type: DB.IncludeIdentifier(OldParameter), - }), errata: DB.Optional({ type: DB.IncludeIdentifier(Errata), }), @@ -81,7 +76,7 @@ If the bannzeichen has an option, the option’s name will/should not be include const BannzeichenPerformanceParameters = DB.TypeAlias(import.meta.url, { name: "BannzeichenPerformanceParameters", - comment: "Measurable parameters of a magical rune.", + comment: "Measurable parameters of a Bannzeichen.", type: () => DB.Object({ cost: DB.Required({ @@ -181,11 +176,11 @@ const BannzeichenDuration = DB.TypeAlias(import.meta.url, { type: () => DB.Object({ slow: DB.Required({ - comment: "The duration on slow rune application.", + comment: "The duration on slow Bannzeichen application.", type: DB.IncludeIdentifier(CheckResultBasedDuration), }), fast: DB.Required({ - comment: "The duration on fast rune application.", + comment: "The duration on fast Bannzeichen application.", type: DB.IncludeIdentifier(CheckResultBasedDuration), }), }), @@ -205,7 +200,7 @@ export const BannzeichenOption = DB.Entity(import.meta.url, { type: () => DB.Object({ parent: DB.Required({ - comment: "The bannzeichen this option belongs to.", + comment: "The Bannzeichen this option belongs to.", type: BannzeichenIdentifier(), }), cost: DB.Optional({ @@ -224,13 +219,13 @@ export const BannzeichenOption = DB.Entity(import.meta.url, { "BannzeichenOption", DB.Object({ name: DB.Required({ - comment: `The bannzeichen option’s name. + comment: `The Bannzeichen option’s name. The surrounding parenthesis will/should not be included, they will/should be generated.`, type: DB.String({ minLength: 1 }), }), native_name: DB.Required({ - comment: "The native name of the bannzeichen option.", + comment: "The native name of the Bannzeichen option.", type: DB.String({ minLength: 1 }), }), }), From 6db53cc49694b01da8c6a767c1fa5859d7f730f8 Mon Sep 17 00:00:00 2001 From: Lector Date: Tue, 24 Mar 2026 09:51:51 +0100 Subject: [PATCH 5/9] Bannzeichen now has a duration and a crafting_time in the translation as optional fields --- src/types/magicalActions/Bannzeichen.ts | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/src/types/magicalActions/Bannzeichen.ts b/src/types/magicalActions/Bannzeichen.ts index 24b11cae..76ac95aa 100644 --- a/src/types/magicalActions/Bannzeichen.ts +++ b/src/types/magicalActions/Bannzeichen.ts @@ -59,6 +59,16 @@ If the Bannzeichen has an option, the option’s name will/should not be include "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.", type: DB.IncludeIdentifier(ActivatableSkillEffect), }), + crafting_time: DB.Optional({ + comment: + "The crafting time of the Bannzeichen", + type: DB.String({ minLength: 1 }) + }), + duration: DB.Optional({ + comment: + "The duration of the Bannzeichen", + type: DB.String({ minLength: 1 }) + }), errata: DB.Optional({ type: DB.IncludeIdentifier(Errata), }), From e24b995971f4a590baff4bf5b348ecd01bf144d9 Mon Sep 17 00:00:00 2001 From: Lector Date: Tue, 24 Mar 2026 09:53:25 +0100 Subject: [PATCH 6/9] prettier --- src/types/magicalActions/Bannzeichen.ts | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/src/types/magicalActions/Bannzeichen.ts b/src/types/magicalActions/Bannzeichen.ts index 76ac95aa..5b3669d0 100644 --- a/src/types/magicalActions/Bannzeichen.ts +++ b/src/types/magicalActions/Bannzeichen.ts @@ -60,14 +60,12 @@ If the Bannzeichen has an option, the option’s name will/should not be include type: DB.IncludeIdentifier(ActivatableSkillEffect), }), crafting_time: DB.Optional({ - comment: - "The crafting time of the Bannzeichen", - type: DB.String({ minLength: 1 }) + comment: "The crafting time of the Bannzeichen", + type: DB.String({ minLength: 1 }), }), duration: DB.Optional({ - comment: - "The duration of the Bannzeichen", - type: DB.String({ minLength: 1 }) + comment: "The duration of the Bannzeichen", + type: DB.String({ minLength: 1 }), }), errata: DB.Optional({ type: DB.IncludeIdentifier(Errata), From 1b328856300d5468686d8308dc18e4b97e12082c Mon Sep 17 00:00:00 2001 From: Lector Date: Tue, 24 Mar 2026 10:19:19 +0100 Subject: [PATCH 7/9] added cost to translation of Bannzeichen.ts --- src/types/magicalActions/Bannzeichen.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/types/magicalActions/Bannzeichen.ts b/src/types/magicalActions/Bannzeichen.ts index 5b3669d0..6d3ee9f9 100644 --- a/src/types/magicalActions/Bannzeichen.ts +++ b/src/types/magicalActions/Bannzeichen.ts @@ -59,6 +59,10 @@ If the Bannzeichen has an option, the option’s name will/should not be include "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.", type: DB.IncludeIdentifier(ActivatableSkillEffect), }), + cost: DB.Optional({ + comment: "The ae-cost of the Bannzeichen", + type: DB.String({ minLength: 1 }), + }), crafting_time: DB.Optional({ comment: "The crafting time of the Bannzeichen", type: DB.String({ minLength: 1 }), From 9388f94014514c24b2cbf0550316043ec04ff6ad Mon Sep 17 00:00:00 2001 From: Lector Date: Tue, 24 Mar 2026 10:20:58 +0100 Subject: [PATCH 8/9] prettier --- src/types/magicalActions/Bannzeichen.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/types/magicalActions/Bannzeichen.ts b/src/types/magicalActions/Bannzeichen.ts index 6d3ee9f9..97311edd 100644 --- a/src/types/magicalActions/Bannzeichen.ts +++ b/src/types/magicalActions/Bannzeichen.ts @@ -61,7 +61,7 @@ If the Bannzeichen has an option, the option’s name will/should not be include }), cost: DB.Optional({ comment: "The ae-cost of the Bannzeichen", - type: DB.String({ minLength: 1 }), + type: DB.String({ minLength: 1 }), }), crafting_time: DB.Optional({ comment: "The crafting time of the Bannzeichen", From 7990259027ff176d8c1866d25a2eeb524e25dbff Mon Sep 17 00:00:00 2001 From: Lector Date: Tue, 24 Mar 2026 10:47:06 +0100 Subject: [PATCH 9/9] added Bannzeichen to main and index --- src/main.ts | 1 + src/types/index.ts | 1 + 2 files changed, 2 insertions(+) diff --git a/src/main.ts b/src/main.ts index 8a09721c..6156ded2 100644 --- a/src/main.ts +++ b/src/main.ts @@ -45,6 +45,7 @@ export const schema = new Schema( Types.AttireEnchantment, Types.Attribute, Types.BandageOrRemedy, + Types.Bannzeichen, Types.Beutelzauber, Types.BlessedTradition, Types.Blessing, diff --git a/src/types/index.ts b/src/types/index.ts index db94c0bd..c38ece4e 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -62,6 +62,7 @@ export { LiturgicalChant } from "./LiturgicalChant.js" export { Locale } from "./Locale.js" export { AnimistPower } from "./magicalActions/AnimistPower.js" export { Tribe } from "./magicalActions/AnimistPower_Tribe.js" +export { Bannzeichen } from "./magicalActions/Bannzeichen.js" export { Curse } from "./magicalActions/Curse.js" export { DominationRitual } from "./magicalActions/DominationRitual.js" export { ElvenMagicalSong } from "./magicalActions/ElvenMagicalSong.js"