diff --git a/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts b/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts index ed312eaa..f4e4aa37 100644 --- a/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts +++ b/src/cache/magicalAndBlessedAdvantagesAndDisadvantages.ts @@ -81,6 +81,7 @@ const isPrerequisiteFor = ( case "PrimaryAttribute": case "BlessedTradition": case "MagicalTradition": + case "TinyActivatable": case "RatedMinimumNumber": case "RatedSum": case "Enhancement": diff --git a/src/types/_IdentifierGroup.ts b/src/types/_IdentifierGroup.ts index e8c5aa57..e60b3e58 100644 --- a/src/types/_IdentifierGroup.ts +++ b/src/types/_IdentifierGroup.ts @@ -505,3 +505,11 @@ export const AdvancedSkillStyleSpecialAbilityIdentifier = DB.Enum(import.meta.ur AdvancedSkillSpecialAbility: DB.EnumCase({ type: AdvancedSkillSpecialAbilityIdentifier() }), }), }) + +export const TinyActivatableIdentifier = DB.Enum(import.meta.url, { + name: "TinyActivatableIdentifier", + values: () => ({ + Blessing: DB.EnumCase({ type: BlessingIdentifier() }), + Cantrip: DB.EnumCase({ type: CantripIdentifier() }), + }), +}) diff --git a/src/types/prerequisites/PrerequisiteGroups.ts b/src/types/prerequisites/PrerequisiteGroups.ts index 47ed01ef..9ba4329d 100644 --- a/src/types/prerequisites/PrerequisiteGroups.ts +++ b/src/types/prerequisites/PrerequisiteGroups.ts @@ -2,13 +2,14 @@ import * as DB from "tsondb/schema/dsl" import { ActivatablePrerequisite } from "./single/ActivatablePrerequisite.js" import { AncestorBloodPrerequisite } from "./single/AncestorBloodPrerequisite.js" import { AnimistPowerPrerequisite } from "./single/AnimistPowerPrerequisite.js" +import { TinyActivatablePrerequisite } from "./single/TinyActivatablePrerequisite.js" import { CulturePrerequisite } from "./single/CulturePrerequisite.js" import { EnhancementPrerequisite } from "./single/EnhancementPrerequisite.js" import { InfluencePrerequisite } from "./single/InfluencePrerequisite.js" import { PactPrerequisite } from "./single/PactPrerequisite.js" import { PersonalityTraitPrerequisite } from "./single/PersonalityTraitPrerequisite.js" import { PrimaryAttributePrerequisite } from "./single/PrimaryAttributePrerequisite.js" -import { ProfessionPrerequisite } from "./single/ProfessionPrerequisite.ts" +import { ProfessionPrerequisite } from "./single/ProfessionPrerequisite.js" import { PublicationPrerequisite } from "./single/PublicationPrerequisite.js" import { RacePrerequisite } from "./single/RacePrerequisite.js" import { RatedMinimumNumberPrerequisite } from "./single/RatedMinimumNumberPrerequisite.js" @@ -59,6 +60,7 @@ export const PublicationPrerequisiteGroup = DB.Enum(import.meta.url, { export const GeneralPrerequisiteGroup = DB.Enum(import.meta.url, { name: "GeneralPrerequisiteGroup", values: () => ({ + Activatable: DB.EnumCase({ type: DB.IncludeIdentifier(ActivatablePrerequisite) }), Sex: DB.EnumCase({ type: DB.IncludeIdentifier(SexPrerequisite) }), Race: DB.EnumCase({ type: DB.IncludeIdentifier(RacePrerequisite) }), Culture: DB.EnumCase({ type: DB.IncludeIdentifier(CulturePrerequisite) }), @@ -67,9 +69,9 @@ export const GeneralPrerequisiteGroup = DB.Enum(import.meta.url, { State: DB.EnumCase({ type: DB.IncludeIdentifier(StatePrerequisite) }), Rule: DB.EnumCase({ type: DB.IncludeIdentifier(RulePrerequisite) }), PrimaryAttribute: DB.EnumCase({ type: DB.IncludeIdentifier(PrimaryAttributePrerequisite) }), - Activatable: DB.EnumCase({ type: DB.IncludeIdentifier(ActivatablePrerequisite) }), BlessedTradition: DB.EnumCase({ type: DB.IncludeIdentifier(BlessedTraditionPrerequisite) }), MagicalTradition: DB.EnumCase({ type: DB.IncludeIdentifier(MagicalTraditionPrerequisite) }), + TinyActivatable: DB.EnumCase({ type: DB.IncludeIdentifier(TinyActivatablePrerequisite) }), Rated: DB.EnumCase({ type: DB.IncludeIdentifier(RatedPrerequisite) }), RatedMinimumNumber: DB.EnumCase({ type: DB.IncludeIdentifier(RatedMinimumNumberPrerequisite) }), RatedSum: DB.EnumCase({ type: DB.IncludeIdentifier(RatedSumPrerequisite) }), diff --git a/src/types/prerequisites/single/BlessingPrerequisite.ts b/src/types/prerequisites/single/BlessingPrerequisite.ts new file mode 100644 index 00000000..9ceb89b9 --- /dev/null +++ b/src/types/prerequisites/single/BlessingPrerequisite.ts @@ -0,0 +1,18 @@ +import * as DB from "tsondb/schema/dsl" +import { BlessingIdentifier } from "../../_Identifier.js" +import { DisplayOption } from "../DisplayOption.js" + +export const BlessingPrerequisite = DB.TypeAlias(import.meta.url, { + name: "BlessingPrerequisite", + comment: "Requires a specific blessing.", + type: () => + DB.Object({ + id: DB.Required({ + comment: "The required blessing.", + type: BlessingIdentifier(), + }), + display_option: DB.Optional({ + type: DB.IncludeIdentifier(DisplayOption), + }), + }), +}) diff --git a/src/types/prerequisites/single/CantripPrerequisite.ts b/src/types/prerequisites/single/CantripPrerequisite.ts new file mode 100644 index 00000000..3447d80d --- /dev/null +++ b/src/types/prerequisites/single/CantripPrerequisite.ts @@ -0,0 +1,18 @@ +import * as DB from "tsondb/schema/dsl" +import { CantripIdentifier } from "../../_Identifier.js" +import { DisplayOption } from "../DisplayOption.js" + +export const CantripPrerequisite = DB.TypeAlias(import.meta.url, { + name: "CantripPrerequisite", + comment: "Requires a specific cantrip.", + type: () => + DB.Object({ + id: DB.Required({ + comment: "The required cantrip.", + type: CantripIdentifier(), + }), + display_option: DB.Optional({ + type: DB.IncludeIdentifier(DisplayOption), + }), + }), +}) diff --git a/src/types/prerequisites/single/TinyActivatablePrerequisite.ts b/src/types/prerequisites/single/TinyActivatablePrerequisite.ts new file mode 100644 index 00000000..fab59cb5 --- /dev/null +++ b/src/types/prerequisites/single/TinyActivatablePrerequisite.ts @@ -0,0 +1,26 @@ +import * as DB from "tsondb/schema/dsl" +import { BlessingIdentifier, CantripIdentifier } from "../../_Identifier.js" +import { DisplayOption } from "../DisplayOption.js" + +export const TinyActivatablePrerequisite = DB.TypeAlias(import.meta.url, { + name: "TinyActivatablePrerequisite", + comment: "Requires a specific cantrip or blessing.", + type: () => + DB.Object({ + id: DB.Required({ + comment: "The required item.", + type: DB.IncludeIdentifierType(TinyActivatableCategory), + }), + display_option: DB.Optional({ + type: DB.IncludeIdentifier(DisplayOption), + }), + }), +}) + +const TinyActivatableCategory = DB.Enum(import.meta.url, { + name: "TinyActivatableCategory", + values: () => ({ + Blessing: DB.EnumCase({ type: BlessingIdentifier() }), + Cantrip: DB.EnumCase({ type: CantripIdentifier() }), + }), +})