optolith-database-schema 0.29.1 → 0.30.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 (42) hide show
  1. package/CHANGELOG.md +24 -0
  2. package/gen/types.d.ts +157 -45
  3. package/lib/types/DerivedCharacteristic.d.ts +1 -0
  4. package/lib/types/DerivedCharacteristic.js +4 -0
  5. package/lib/types/Locale.d.ts +92 -2
  6. package/lib/types/Locale.js +99 -2
  7. package/lib/types/_ActivatableCombat.d.ts +9 -11
  8. package/lib/types/_ActivatableCombat.js +12 -28
  9. package/lib/types/_ActivatableNonMundane.d.ts +18 -38
  10. package/lib/types/_ActivatableNonMundane.js +55 -23
  11. package/lib/types/_IdentifierGroup.d.ts +4 -0
  12. package/lib/types/_IdentifierGroup.js +7 -0
  13. package/lib/types/rule/FocusRule.d.ts +1 -1
  14. package/lib/types/rule/FocusRule.js +1 -1
  15. package/lib/types/specialAbility/AdvancedCombatSpecialAbility.d.ts +9 -11
  16. package/lib/types/specialAbility/BrawlingSpecialAbility.d.ts +9 -11
  17. package/lib/types/specialAbility/CombatSpecialAbility.d.ts +9 -11
  18. package/lib/types/specialAbility/CombatStyleSpecialAbility.d.ts +9 -11
  19. package/lib/types/specialAbility/CommandSpecialAbility.d.ts +9 -11
  20. package/lib/types/specialAbility/SkillStyleSpecialAbility.js +2 -2
  21. package/lib/types/traditionArtifacts/ArcaneOrbEnchantment.d.ts +9 -19
  22. package/lib/types/traditionArtifacts/AttireEnchantment.d.ts +9 -19
  23. package/lib/types/traditionArtifacts/Beutelzauber.d.ts +9 -19
  24. package/lib/types/traditionArtifacts/BowlEnchantment.d.ts +9 -19
  25. package/lib/types/traditionArtifacts/CauldronEnchantment.d.ts +9 -19
  26. package/lib/types/traditionArtifacts/ChronicleEnchantment.d.ts +9 -19
  27. package/lib/types/traditionArtifacts/DaggerRitual.d.ts +9 -19
  28. package/lib/types/traditionArtifacts/FoolsHatEnchantment.d.ts +9 -19
  29. package/lib/types/traditionArtifacts/Haubenzauber.d.ts +9 -19
  30. package/lib/types/traditionArtifacts/InstrumentEnchantment.d.ts +9 -19
  31. package/lib/types/traditionArtifacts/Krallenkettenzauber.d.ts +9 -19
  32. package/lib/types/traditionArtifacts/Kristallkugelzauber.d.ts +9 -19
  33. package/lib/types/traditionArtifacts/OrbEnchantment.d.ts +9 -19
  34. package/lib/types/traditionArtifacts/RingEnchantment.d.ts +9 -19
  35. package/lib/types/traditionArtifacts/SickleRitual.d.ts +9 -19
  36. package/lib/types/traditionArtifacts/SpellSwordEnchantment.d.ts +9 -19
  37. package/lib/types/traditionArtifacts/StaffEnchantment.d.ts +9 -19
  38. package/lib/types/traditionArtifacts/ToyEnchantment.d.ts +9 -19
  39. package/lib/types/traditionArtifacts/Trinkhornzauber.d.ts +9 -19
  40. package/lib/types/traditionArtifacts/WandEnchantment.d.ts +9 -19
  41. package/lib/types/traditionArtifacts/WeaponEnchantment.d.ts +9 -19
  42. package/package.json +4 -2
package/CHANGELOG.md CHANGED
@@ -2,6 +2,30 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [commit-and-tag-version](https://github.com/absolute-version/commit-and-tag-version) for commit guidelines.
4
4
 
5
+ ## [0.30.1](https://github.com/elyukai/optolith-database-schema/compare/v0.30.0...v0.30.1) (2026-02-13)
6
+
7
+
8
+ ### Features
9
+
10
+ * add translations for curricula ([7da65cf](https://github.com/elyukai/optolith-database-schema/commit/7da65cf3b8015be63dccf93137dfa4cc97ed1d24))
11
+
12
+ ## [0.30.0](https://github.com/elyukai/optolith-database-schema/compare/v0.29.1...v0.30.0) (2026-02-12)
13
+
14
+
15
+ ### ⚠ BREAKING CHANGES
16
+
17
+ * adjust for activatable display
18
+ * require focus rule subjects
19
+ * more advanced identifier options
20
+
21
+ ### Features
22
+
23
+ * add more translations ([b2a0d58](https://github.com/elyukai/optolith-database-schema/commit/b2a0d5820240fd3b89461c1742b894981c1acdbd))
24
+ * add optional derived characteristic description ([403d4bc](https://github.com/elyukai/optolith-database-schema/commit/403d4bc1e3768a78d4bc71778c80b29c3a13d91e))
25
+ * adjust for activatable display ([40c07ba](https://github.com/elyukai/optolith-database-schema/commit/40c07baa30361b7955f478b840717e06767054cb))
26
+ * more advanced identifier options ([e0ac1e3](https://github.com/elyukai/optolith-database-schema/commit/e0ac1e31e4c9d19f6dacff60a120c08311a165bf)), closes [#120](https://github.com/elyukai/optolith-database-schema/issues/120)
27
+ * require focus rule subjects ([78b69fb](https://github.com/elyukai/optolith-database-schema/commit/78b69fbe7063ba39301392382f8e8429284e7220))
28
+
5
29
  ## [0.29.1](https://github.com/elyukai/optolith-database-schema/compare/v0.29.0...v0.29.1) (2026-02-09)
6
30
 
7
31
 
package/gen/types.d.ts CHANGED
@@ -198,6 +198,7 @@ export type EnumMap = {
198
198
  AbilityAdjustment: AbilityAdjustment
199
199
  ActivatableIdentifier: ActivatableIdentifier
200
200
  ActivatableSkillEffect: ActivatableSkillEffect
201
+ AdvancedSkillStyleSpecialAbilityIdentifier: AdvancedSkillStyleSpecialAbilityIdentifier
201
202
  AdvancedSpecialAbility: AdvancedSpecialAbility<unknown>
202
203
  AdvancedSpecialAbilityRestrictedOptionIdentifier: AdvancedSpecialAbilityRestrictedOptionIdentifier
203
204
  AdvantageDisadvantagePrerequisiteGroup: AdvantageDisadvantagePrerequisiteGroup
@@ -220,6 +221,7 @@ export type EnumMap = {
220
221
  ApplicableSpecificCombatTechniquesRestriction: ApplicableSpecificCombatTechniquesRestriction
221
222
  ApplicationCategory: ApplicationCategory
222
223
  ArcaneEnergyCost: ArcaneEnergyCost
224
+ ArcaneEnergyCostByLevelStyle: ArcaneEnergyCostByLevelStyle
223
225
  ArcaneTraditionPrerequisiteGroup: ArcaneTraditionPrerequisiteGroup
224
226
  ArmorComplexity: ArmorComplexity
225
227
  AutomaticEntryAction: AutomaticEntryAction
@@ -447,12 +449,12 @@ export type TypeAliasMap = {
447
449
  ApplicableCombatTechniquesLevelRestriction: ApplicableCombatTechniquesLevelRestriction
448
450
  ApplicableCombatTechniquesNegativeCombatTechniquesRestriction: ApplicableCombatTechniquesNegativeCombatTechniquesRestriction<unknown>
449
451
  ApplicableCombatTechniquesRaceRestriction: ApplicableCombatTechniquesRaceRestriction
450
- ApplicableCombatTechniquesWeaponRestriction: ApplicableCombatTechniquesWeaponRestriction
451
452
  Applications: Applications
452
453
  ArcaneBardTraditionReference: ArcaneBardTraditionReference
453
454
  ArcaneDancerTraditionReference: ArcaneDancerTraditionReference
455
+ ArcaneEnergyCostByLevel: ArcaneEnergyCostByLevel
456
+ ArcaneEnergyCostByLevelLevel: ArcaneEnergyCostByLevelLevel
454
457
  ArcaneEnergyCostDisjunction: ArcaneEnergyCostDisjunction
455
- ArcaneEnergyCostDisjunctionInterval: ArcaneEnergyCostDisjunctionInterval
456
458
  ArcaneEnergyCostDisjunctionOption: ArcaneEnergyCostDisjunctionOption
457
459
  ArcaneEnergyCostPerCountable: ArcaneEnergyCostPerCountable
458
460
  ArcaneTraditionPrerequisites: ArcaneTraditionPrerequisites
@@ -1187,6 +1189,7 @@ export interface Locale {
1187
1189
  "Adventure Points": string
1188
1190
  "AP": string
1189
1191
  ".input {$value :number} {{{$value} Adventure Points}}": string & { __params: { "value": number } }
1192
+ "{$value} Adventure Points": string & { __params: { "value": StringableTranslationParameter } }
1190
1193
  "{$value} AP": string & { __params: { "value": StringableTranslationParameter } }
1191
1194
  "{$value} Total AP": string & { __params: { "value": StringableTranslationParameter } }
1192
1195
  "{$value} AP Spent": string & { __params: { "value": StringableTranslationParameter } }
@@ -1988,8 +1991,7 @@ export interface Locale {
1988
1991
  "disadvantage": string
1989
1992
  "domain {$domain}": string & { __params: { "domain": StringableTranslationParameter } }
1990
1993
  "{$pact} level {$pactLevel}": string & { __params: { "pact": StringableTranslationParameter; "pactLevel": StringableTranslationParameter } }
1991
- "Level {$level}:": string & { __params: { "level": StringableTranslationParameter } }
1992
- ".input {$level :number} {{Level {$level}}}": string & { __params: { "level": number } }
1994
+ "Level {$level}": string & { __params: { "level": StringableTranslationParameter } }
1993
1995
  "cannot be chosen at the same time as {$trait}": string & { __params: { "trait": StringableTranslationParameter } }
1994
1996
  "must have {$trait}": string & { __params: { "trait": StringableTranslationParameter } }
1995
1997
  "inlinewiki.castingtime": string
@@ -2183,6 +2185,96 @@ export interface Locale {
2183
2185
  "Race Base {$abbreviation}": string & { __params: { "abbreviation": StringableTranslationParameter } }
2184
2186
  "Primary attribute for the magic user’s Tradition": string
2185
2187
  "Primary attribute for the Blessed One’s Tradition": string
2188
+ "The following rule is a Level {$level} focus rule for the topic {$topic}.": string & { __params: { "level": StringableTranslationParameter; "topic": StringableTranslationParameter } }
2189
+ "Protective Circle": string
2190
+ "Warding Circle": string
2191
+ "Prerequisites": string
2192
+ "AP Value": string
2193
+ ".input {$value :number} {{{$value} Adventure Points per level}}": string & { __params: { "value": number } }
2194
+ "tiny": string
2195
+ "small": string
2196
+ "medium": string
2197
+ "large": string
2198
+ "huge": string
2199
+ "{$values} AP for size category {$labels} (per level)": string & { __params: { "values": StringableTranslationParameter; "labels": StringableTranslationParameter } }
2200
+ "A/B/C/D skill": string
2201
+ "A/B/C/D spell": string
2202
+ "A/B/C/D ritual": string
2203
+ "A/B/C/D liturgical chant": string
2204
+ "A/B/C/D ceremony": string
2205
+ "A/B/C/D spellwork": string
2206
+ "A/B/C/D liturgical chant or ceremony": string
2207
+ "A/B/C/D ability": string
2208
+ "B/C/D combat technique": string
2209
+ "depending on the trade secret": string
2210
+ "{$values} Adventure Points for the {$labels} purchase": string & { __params: { "values": StringableTranslationParameter; "labels": StringableTranslationParameter } }
2211
+ "{$values}/and so on Adventure Points for the {$labels}/and so on purchase": string & { __params: { "values": StringableTranslationParameter; "labels": StringableTranslationParameter } }
2212
+ ".input {$value :number} {{{$value} Adventure Points with {$name}}}": string & { __params: { "value": number; "name": StringableTranslationParameter } }
2213
+ "Half the chosen disease’s level in adventure points": string
2214
+ "The chosen disease’s level in adventure points": string
2215
+ "Half the chosen poison’s level in adventure points": string
2216
+ "The chosen poison’s level in adventure points": string
2217
+ "{$values} adventure points for a {$sized} animal shape": string & { __params: { "values": StringableTranslationParameter; "sized": StringableTranslationParameter } }
2218
+ "Aspect": string
2219
+ "As chosen": string
2220
+ "Passive": string
2221
+ "Basic Maneuver": string
2222
+ "Special Maneuver": string
2223
+ "Volume": string
2224
+ "Penalty": string
2225
+ "Binding Cost": string
2226
+ "All": string
2227
+ "All Close Combat Techniques": string
2228
+ "All Ranged Combat Techniques": string
2229
+ "Depends on combat style; both combat styles can be used only for their corresponding combat techniques": string
2230
+ "only improvised weapons": string
2231
+ "weapon must have a pointed blade": string
2232
+ "while mounted": string
2233
+ "while weapon of race {$race}": string & { __params: { "race": StringableTranslationParameter } }
2234
+ "except {$list}": string & { __params: { "list": StringableTranslationParameter } }
2235
+ "All Two-Handed Weapons": string
2236
+ "All Parrying Weapons": string
2237
+ "with parry": string
2238
+ "that may be performed with one-handed weapons": string
2239
+ "only those with at least one blunt side": string
2240
+ "only {$nameWithLevel}": string & { __params: { "nameWithLevel": StringableTranslationParameter } }
2241
+ "only {$weapons}": string & { __params: { "weapons": StringableTranslationParameter } }
2242
+ ".input {$ord :number} {{{$ord}. attack}}": string & { __params: { "ord": number } }
2243
+ ".input {$ord :number} {{{$ord}. throw}}": string & { __params: { "ord": number } }
2244
+ "depending on the level of the special ability {$name}": string & { __params: { "name": StringableTranslationParameter } }
2245
+ "for parry": string
2246
+ "one-handed weapon": string
2247
+ "two-handed weapon": string
2248
+ "for secondary fighters with/without special ability {$name}": string & { __params: { "name": StringableTranslationParameter } }
2249
+ "{$start} to {$end}": string & { __params: { "start": StringableTranslationParameter; "end": StringableTranslationParameter } }
2250
+ "Depends on zone": string
2251
+ ".input {$points :number} {{{$points} points}}": string & { __params: { "points": number } }
2252
+ ".input {$points :number} {{{$points} points per level}}": string & { __params: { "points": number } }
2253
+ "{$points} points": string & { __params: { "points": StringableTranslationParameter } }
2254
+ "{$points} points for levels {$levels}": string & { __params: { "points": StringableTranslationParameter; "levels": StringableTranslationParameter } }
2255
+ "{$value} LP": string & { __params: { "value": StringableTranslationParameter } }
2256
+ ".input {$value :number} {{{$value} permanent AE}}": string & { __params: { "value": number } }
2257
+ "{$cost} per {$interval}": string & { __params: { "cost": StringableTranslationParameter; "interval": StringableTranslationParameter } }
2258
+ "{$cost} per {$countable}": string & { __params: { "cost": StringableTranslationParameter; "countable": StringableTranslationParameter } }
2259
+ "{$cost} per level": string & { __params: { "cost": StringableTranslationParameter } }
2260
+ "{$cost} for level {$level}": string & { __params: { "cost": StringableTranslationParameter; "level": StringableTranslationParameter } }
2261
+ "{$cost} (activation) + {$halvedCost} per {$interval}": string & { __params: { "cost": StringableTranslationParameter; "halvedCost": StringableTranslationParameter; "interval": StringableTranslationParameter } }
2262
+ "Variable": string
2263
+ "{$value} permanent AE": string & { __params: { "value": StringableTranslationParameter } }
2264
+ "Guideline": string
2265
+ "Elective Spellworks Package": string
2266
+ "Restricted Spellworks": string
2267
+ "All, at the GM’s discretion": string
2268
+ ".input {$count :number} {{only {$count} additional spellwork with the Property {$property}}}": string & { __params: { "count": number; "property": StringableTranslationParameter } }
2269
+ "no spellworks with the Property {$property}": string & { __params: { "property": StringableTranslationParameter } }
2270
+ "Demon Summoning": string
2271
+ "the following spells are not taught: {$spells}": string & { __params: { "spells": StringableTranslationParameter } }
2272
+ "no Borbaradian spellworks": string
2273
+ "no spellworks that inflict DP or sDP on intelligent creatures": string
2274
+ "Spellwork Changes": string
2275
+ "Skills (+)": string
2276
+ "Skills (−)": string
2277
+ "{$replacement} instead of {$base}": string & { __params: { "replacement": StringableTranslationParameter; "base": StringableTranslationParameter } }
2186
2278
  }
2187
2279
  }
2188
2280
 
@@ -6607,7 +6699,7 @@ export interface FocusRule {
6607
6699
  /**
6608
6700
  * The associated subject.
6609
6701
  */
6610
- subject?: Subject_ID
6702
+ subject: Subject_ID
6611
6703
 
6612
6704
  /**
6613
6705
  * The focus rule’s level.
@@ -9829,6 +9921,10 @@ export type ArcaneEnergyCost =
9829
9921
  | {
9830
9922
  kind: "Variable"
9831
9923
  }
9924
+ | {
9925
+ kind: "ByLevel"
9926
+ ByLevel: ArcaneEnergyCostByLevel
9927
+ }
9832
9928
 
9833
9929
  export interface FixedArcaneEnergyCost {
9834
9930
  /**
@@ -9971,36 +10067,12 @@ export type IndefiniteArcaneEnergyCostModifierArithmetic =
9971
10067
  }
9972
10068
 
9973
10069
  export interface ArcaneEnergyCostDisjunction {
9974
- /**
9975
- * Specified if the selected AE cost option has to be paid for each time interval.
9976
- */
9977
- interval?: ArcaneEnergyCostDisjunctionInterval
9978
-
9979
10070
  /**
9980
10071
  * The possible AE cost values.
9981
10072
  */
9982
10073
  options: ArcaneEnergyCostDisjunctionOption[]
9983
10074
  }
9984
10075
 
9985
- export interface ArcaneEnergyCostDisjunctionInterval {
9986
- /**
9987
- * The interval itself.
9988
- */
9989
- value: DurationUnitValue
9990
-
9991
- /**
9992
- * The AE cost value for activation.
9993
- */
9994
- activation_value: number
9995
-
9996
- /**
9997
- * Set to `true` if the action where the enchantment is casted does not as a part of the first interval that has to be payed, so that the first interval payment needs to be done after the activation.
9998
- *
9999
- * This works different than other sustained spells, since for them the end of the cast usually already counts as part of the first interval.
10000
- */
10001
- after_activation: boolean
10002
- }
10003
-
10004
10076
  export interface ArcaneEnergyCostDisjunctionOption {
10005
10077
  /**
10006
10078
  * A possible AE cost value.
@@ -10022,6 +10094,36 @@ export interface ArcaneEnergyCostDisjunctionOptionTranslation {
10022
10094
  note?: ResponsiveTextOptional
10023
10095
  }
10024
10096
 
10097
+ export interface ArcaneEnergyCostByLevel {
10098
+ /**
10099
+ * A continuous range of arcane energy cost for each level. The first element is the AE cost for the first level, the second element is the AE cost for the second level, and so on.
10100
+ */
10101
+ levels: ArcaneEnergyCostByLevelLevel[]
10102
+
10103
+ /**
10104
+ * How to display the AE cost by level.
10105
+ */
10106
+ style: ArcaneEnergyCostByLevelStyle
10107
+ }
10108
+
10109
+ export interface ArcaneEnergyCostByLevelLevel {
10110
+ /**
10111
+ * The arcane energy cost for this level.
10112
+ */
10113
+ value: number
10114
+ }
10115
+
10116
+ /**
10117
+ * The AE cost are defined by level of the enchantment. It may either be displayed in a compressed way (e.g. `1/2 AE for level I/II`) or in a verbose way (e.g. `1 AE for level I; 2 AE for level II`).
10118
+ */
10119
+ export type ArcaneEnergyCostByLevelStyle =
10120
+ | {
10121
+ kind: "Compressed"
10122
+ }
10123
+ | {
10124
+ kind: "Verbose"
10125
+ }
10126
+
10025
10127
  /**
10026
10128
  * The binding cost for an enchantment.
10027
10129
  */
@@ -10633,7 +10735,7 @@ export type ApplicableCombatTechniques =
10633
10735
  }
10634
10736
 
10635
10737
  export interface AllApplicableCombatTechniques {
10636
- restrictions?: ApplicableAllCombatTechniquesRestriction[]
10738
+ restriction?: ApplicableAllCombatTechniquesRestriction
10637
10739
  }
10638
10740
 
10639
10741
  export type ApplicableAllCombatTechniquesRestriction =
@@ -10665,7 +10767,7 @@ export interface ApplicableCombatTechniquesNegativeCombatTechniquesRestriction<R
10665
10767
  }
10666
10768
 
10667
10769
  export interface AllApplicableCloseCombatTechniques {
10668
- restrictions?: ApplicableCloseCombatTechniquesRestriction[]
10770
+ restriction?: ApplicableCloseCombatTechniquesRestriction
10669
10771
  }
10670
10772
 
10671
10773
  export type ApplicableCloseCombatTechniquesRestriction =
@@ -10700,7 +10802,7 @@ export type ApplicableCloseCombatTechniquesRestriction =
10700
10802
  }
10701
10803
 
10702
10804
  export interface AllApplicableRangedCombatTechniques {
10703
- restrictions?: ApplicableRangedCombatTechniquesRestriction[]
10805
+ restriction?: ApplicableRangedCombatTechniquesRestriction
10704
10806
  }
10705
10807
 
10706
10808
  export type ApplicableRangedCombatTechniquesRestriction =
@@ -10728,7 +10830,13 @@ export interface SpecificApplicableCombatTechniques {
10728
10830
 
10729
10831
  export interface SpecificApplicableCombatTechnique {
10730
10832
  id: CombatTechniqueIdentifier
10731
- restrictions?: ApplicableSpecificCombatTechniquesRestriction[]
10833
+
10834
+ restriction?: ApplicableSpecificCombatTechniquesRestriction
10835
+
10836
+ /**
10837
+ * The specific weapons this combat special ability is only applicable to.
10838
+ */
10839
+ weapons?: Weapon_ID[]
10732
10840
  }
10733
10841
 
10734
10842
  export type ApplicableSpecificCombatTechniquesRestriction =
@@ -10749,10 +10857,6 @@ export type ApplicableSpecificCombatTechniquesRestriction =
10749
10857
  kind: "Level"
10750
10858
  Level: ApplicableCombatTechniquesLevelRestriction
10751
10859
  }
10752
- | {
10753
- kind: "Weapons"
10754
- Weapons: ApplicableCombatTechniquesWeaponRestriction
10755
- }
10756
10860
  | {
10757
10861
  kind: "OneBluntSide"
10758
10862
  }
@@ -10764,13 +10868,6 @@ export interface ApplicableCombatTechniquesLevelRestriction {
10764
10868
  level: number
10765
10869
  }
10766
10870
 
10767
- export interface ApplicableCombatTechniquesWeaponRestriction {
10768
- /**
10769
- * The specific weapons this combat special ability is only applicable to.
10770
- */
10771
- list: Weapon_ID[]
10772
- }
10773
-
10774
10871
  export interface Weapon {
10775
10872
  /**
10776
10873
  * The cost in silverthalers.
@@ -14993,7 +15090,7 @@ export interface SkillStyleSpecialAbility {
14993
15090
  /**
14994
15091
  * The Advanced Special Abilities for the respective Style Special Ability. Sometimes, only a specific select option or a set of select options of an entry is allowed, which can be modelled by the option property. It can also be that you can choose from a set of special abilities, but then you can’t specify an option.
14995
15092
  */
14996
- advanced: [AdvancedSpecialAbility<AdvancedSkillSpecialAbility_ID>, AdvancedSpecialAbility<AdvancedSkillSpecialAbility_ID>, AdvancedSpecialAbility<AdvancedSkillSpecialAbility_ID>]
15093
+ advanced: [AdvancedSpecialAbility<AdvancedSkillStyleSpecialAbilityIdentifier>, AdvancedSpecialAbility<AdvancedSkillStyleSpecialAbilityIdentifier>, AdvancedSpecialAbility<AdvancedSkillStyleSpecialAbilityIdentifier>]
14997
15094
 
14998
15095
  prerequisites?: GeneralPrerequisites
14999
15096
 
@@ -15051,6 +15148,16 @@ export interface SkillStyleSpecialAbilityTranslation {
15051
15148
  errata?: Errata
15052
15149
  }
15053
15150
 
15151
+ export type AdvancedSkillStyleSpecialAbilityIdentifier =
15152
+ | {
15153
+ kind: "AdvancedCombatSpecialAbility"
15154
+ AdvancedCombatSpecialAbility: AdvancedCombatSpecialAbility_ID
15155
+ }
15156
+ | {
15157
+ kind: "AdvancedSkillSpecialAbility"
15158
+ AdvancedSkillSpecialAbility: AdvancedSkillSpecialAbility_ID
15159
+ }
15160
+
15054
15161
  export interface SpellSwordEnchantment {
15055
15162
  /**
15056
15163
  * Number of available levels.
@@ -20076,6 +20183,11 @@ export interface DerivedCharacteristicTranslation {
20076
20183
  */
20077
20184
  abbreviation: string
20078
20185
 
20186
+ /**
20187
+ * The derived characteristic’s description.
20188
+ */
20189
+ description?: string
20190
+
20079
20191
  /**
20080
20192
  * Possible calculation strings for the final value.
20081
20193
  */
@@ -230,6 +230,7 @@ export declare const DerivedCharacteristic: DB.Entity<"DerivedCharacteristic", {
230
230
  translations: DB.MemberDecl<DB.NestedEntityMap<"DerivedCharacteristicTranslation", {
231
231
  name: DB.MemberDecl<DB.String, true>;
232
232
  abbreviation: DB.MemberDecl<DB.String, true>;
233
+ description: DB.MemberDecl<DB.String, false>;
233
234
  calculation: DB.MemberDecl<DB.IncludeIdentifier<[], DB.TypeAlias<"CalculationTranslation", DB.Object<{
234
235
  default: DB.MemberDecl<DB.String, true>;
235
236
  half_primary: DB.MemberDecl<DB.String, false>;
@@ -31,6 +31,10 @@ export const DerivedCharacteristic = DB.Entity(import.meta.url, {
31
31
  comment: "The derived characteristic’s abbreviation.",
32
32
  type: DB.String({ minLength: 1 }),
33
33
  }),
34
+ description: DB.Optional({
35
+ comment: "The derived characteristic’s description.",
36
+ type: DB.String({ minLength: 1, isMarkdown: true }),
37
+ }),
34
38
  calculation: DB.Optional({
35
39
  comment: "Possible calculation strings for the final value.",
36
40
  type: DB.IncludeIdentifier(CalculationTranslation),
@@ -101,6 +101,7 @@ export declare const Locale: DB.Entity<"Locale", {
101
101
  * - `0`: AP value
102
102
  */
103
103
  ".input {$value :number} {{{$value} Adventure Points}}": null;
104
+ "{$value} Adventure Points": null;
104
105
  /**
105
106
  * - `0`: AP value
106
107
  */
@@ -1058,8 +1059,7 @@ export declare const Locale: DB.Entity<"Locale", {
1058
1059
  disadvantage: null;
1059
1060
  "domain {$domain}": null;
1060
1061
  "{$pact} level {$pactLevel}": null;
1061
- "Level {$level}:": null;
1062
- ".input {$level :number} {{Level {$level}}}": null;
1062
+ "Level {$level}": null;
1063
1063
  "cannot be chosen at the same time as {$trait}": null;
1064
1064
  "must have {$trait}": null;
1065
1065
  "inlinewiki.castingtime": null;
@@ -1268,6 +1268,96 @@ export declare const Locale: DB.Entity<"Locale", {
1268
1268
  "Race Base {$abbreviation}": null;
1269
1269
  "Primary attribute for the magic user\u2019s Tradition": null;
1270
1270
  "Primary attribute for the Blessed One\u2019s Tradition": null;
1271
+ "The following rule is a Level {$level} focus rule for the topic {$topic}.": null;
1272
+ "Protective Circle": null;
1273
+ "Warding Circle": null;
1274
+ Prerequisites: null;
1275
+ "AP Value": null;
1276
+ ".input {$value :number} {{{$value} Adventure Points per level}}": null;
1277
+ tiny: null;
1278
+ small: null;
1279
+ medium: null;
1280
+ large: null;
1281
+ huge: null;
1282
+ "{$values} AP for size category {$labels} (per level)": null;
1283
+ "A/B/C/D skill": null;
1284
+ "A/B/C/D spell": null;
1285
+ "A/B/C/D ritual": null;
1286
+ "A/B/C/D liturgical chant": null;
1287
+ "A/B/C/D ceremony": null;
1288
+ "A/B/C/D spellwork": null;
1289
+ "A/B/C/D liturgical chant or ceremony": null;
1290
+ "A/B/C/D ability": null;
1291
+ "B/C/D combat technique": null;
1292
+ "depending on the trade secret": null;
1293
+ "{$values} Adventure Points for the {$labels} purchase": null;
1294
+ "{$values}/and so on Adventure Points for the {$labels}/and so on purchase": null;
1295
+ ".input {$value :number} {{{$value} Adventure Points with {$name}}}": null;
1296
+ "Half the chosen disease\u2019s level in adventure points": null;
1297
+ "The chosen disease\u2019s level in adventure points": null;
1298
+ "Half the chosen poison\u2019s level in adventure points": null;
1299
+ "The chosen poison\u2019s level in adventure points": null;
1300
+ "{$values} adventure points for a {$sized} animal shape": null;
1301
+ Aspect: null;
1302
+ "As chosen": null;
1303
+ Passive: null;
1304
+ "Basic Maneuver": null;
1305
+ "Special Maneuver": null;
1306
+ Volume: null;
1307
+ Penalty: null;
1308
+ "Binding Cost": null;
1309
+ All: null;
1310
+ "All Close Combat Techniques": null;
1311
+ "All Ranged Combat Techniques": null;
1312
+ "Depends on combat style; both combat styles can be used only for their corresponding combat techniques": null;
1313
+ "only improvised weapons": null;
1314
+ "weapon must have a pointed blade": null;
1315
+ "while mounted": null;
1316
+ "while weapon of race {$race}": null;
1317
+ "except {$list}": null;
1318
+ "All Two-Handed Weapons": null;
1319
+ "All Parrying Weapons": null;
1320
+ "with parry": null;
1321
+ "that may be performed with one-handed weapons": null;
1322
+ "only those with at least one blunt side": null;
1323
+ "only {$nameWithLevel}": null;
1324
+ "only {$weapons}": null;
1325
+ ".input {$ord :number} {{{$ord}. attack}}": null;
1326
+ ".input {$ord :number} {{{$ord}. throw}}": null;
1327
+ "depending on the level of the special ability {$name}": null;
1328
+ "for parry": null;
1329
+ "one-handed weapon": null;
1330
+ "two-handed weapon": null;
1331
+ "for secondary fighters with/without special ability {$name}": null;
1332
+ "{$start} to {$end}": null;
1333
+ "Depends on zone": null;
1334
+ ".input {$points :number} {{{$points} points}}": null;
1335
+ ".input {$points :number} {{{$points} points per level}}": null;
1336
+ "{$points} points": null;
1337
+ "{$points} points for levels {$levels}": null;
1338
+ "{$value} LP": null;
1339
+ ".input {$value :number} {{{$value} permanent AE}}": null;
1340
+ "{$cost} per {$interval}": null;
1341
+ "{$cost} per {$countable}": null;
1342
+ "{$cost} per level": null;
1343
+ "{$cost} for level {$level}": null;
1344
+ "{$cost} (activation) + {$halvedCost} per {$interval}": null;
1345
+ Variable: null;
1346
+ "{$value} permanent AE": null;
1347
+ Guideline: null;
1348
+ "Elective Spellworks Package": null;
1349
+ "Restricted Spellworks": null;
1350
+ "All, at the GM\u2019s discretion": null;
1351
+ ".input {$count :number} {{only {$count} additional spellwork with the Property {$property}}}": null;
1352
+ "no spellworks with the Property {$property}": null;
1353
+ "Demon Summoning": null;
1354
+ "the following spells are not taught: {$spells}": null;
1355
+ "no Borbaradian spellworks": null;
1356
+ "no spellworks that inflict DP or sDP on intelligent creatures": null;
1357
+ "Spellwork Changes": null;
1358
+ "Skills (+)": null;
1359
+ "Skills (\u2212)": null;
1360
+ "{$replacement} instead of {$base}": null;
1271
1361
  }>, false>;
1272
1362
  }, undefined>;
1273
1363
  export declare const NestedTranslationMap: <Name extends string, T extends Record<string, DB.MemberDecl>, R extends boolean>(MemberDeclCreator: <T_1 extends DB.Type>(options: {
@@ -123,6 +123,7 @@ export const Locale = DB.Entity(import.meta.url, {
123
123
  * - `0`: AP value
124
124
  */
125
125
  ".input {$value :number} {{{$value} Adventure Points}}": null,
126
+ "{$value} Adventure Points": null,
126
127
  /**
127
128
  * - `0`: AP value
128
129
  */
@@ -1085,9 +1086,8 @@ export const Locale = DB.Entity(import.meta.url, {
1085
1086
  "disadvantage": null,
1086
1087
  "domain {$domain}": null,
1087
1088
  "{$pact} level {$pactLevel}": null,
1088
- "Level {$level}:": null,
1089
1089
  // Personality Trait prerequisite
1090
- ".input {$level :number} {{Level {$level}}}": null,
1090
+ "Level {$level}": null,
1091
1091
  "cannot be chosen at the same time as {$trait}": null,
1092
1092
  "must have {$trait}": null,
1093
1093
  "inlinewiki.castingtime": null,
@@ -1301,6 +1301,103 @@ export const Locale = DB.Entity(import.meta.url, {
1301
1301
  "Race Base {$abbreviation}": null,
1302
1302
  "Primary attribute for the magic user’s Tradition": null,
1303
1303
  "Primary attribute for the Blessed One’s Tradition": null,
1304
+ // Focus Rules
1305
+ "The following rule is a Level {$level} focus rule for the topic {$topic}.": null,
1306
+ // Special Abilities
1307
+ "Protective Circle": null,
1308
+ "Warding Circle": null,
1309
+ "Prerequisites": null,
1310
+ "AP Value": null,
1311
+ ".input {$value :number} {{{$value} Adventure Points per level}}": null,
1312
+ "tiny": null,
1313
+ "small": null,
1314
+ "medium": null,
1315
+ "large": null,
1316
+ "huge": null,
1317
+ "{$values} AP for size category {$labels} (per level)": null,
1318
+ "A/B/C/D skill": null,
1319
+ "A/B/C/D spell": null,
1320
+ "A/B/C/D ritual": null,
1321
+ "A/B/C/D liturgical chant": null,
1322
+ "A/B/C/D ceremony": null,
1323
+ "A/B/C/D spellwork": null,
1324
+ "A/B/C/D liturgical chant or ceremony": null,
1325
+ "A/B/C/D ability": null,
1326
+ "B/C/D combat technique": null,
1327
+ "depending on the trade secret": null,
1328
+ "{$values} Adventure Points for the {$labels} purchase": null,
1329
+ "{$values}/and so on Adventure Points for the {$labels}/and so on purchase": null,
1330
+ ".input {$value :number} {{{$value} Adventure Points with {$name}}}": null,
1331
+ "Half the chosen disease’s level in adventure points": null,
1332
+ "The chosen disease’s level in adventure points": null,
1333
+ "Half the chosen poison’s level in adventure points": null,
1334
+ "The chosen poison’s level in adventure points": null,
1335
+ "{$values} adventure points for a {$sized} animal shape": null,
1336
+ "Aspect": null,
1337
+ "As chosen": null,
1338
+ "Passive": null,
1339
+ "Basic Maneuver": null,
1340
+ "Special Maneuver": null,
1341
+ "Volume": null,
1342
+ "Penalty": null,
1343
+ "Binding Cost": null,
1344
+ // combat special ability -- applicable combat techniques
1345
+ "All": null,
1346
+ "All Close Combat Techniques": null,
1347
+ "All Ranged Combat Techniques": null,
1348
+ "Depends on combat style; both combat styles can be used only for their corresponding combat techniques": null,
1349
+ "only improvised weapons": null,
1350
+ "weapon must have a pointed blade": null,
1351
+ "while mounted": null,
1352
+ "while weapon of race {$race}": null,
1353
+ "except {$list}": null,
1354
+ "All Two-Handed Weapons": null,
1355
+ "All Parrying Weapons": null,
1356
+ "with parry": null,
1357
+ "that may be performed with one-handed weapons": null,
1358
+ "only those with at least one blunt side": null,
1359
+ "only {$nameWithLevel}": null,
1360
+ "only {$weapons}": null,
1361
+ // combat special ability -- penalty
1362
+ ".input {$ord :number} {{{$ord}. attack}}": null,
1363
+ ".input {$ord :number} {{{$ord}. throw}}": null,
1364
+ "depending on the level of the special ability {$name}": null,
1365
+ "for parry": null,
1366
+ "one-handed weapon": null,
1367
+ "two-handed weapon": null,
1368
+ "for secondary fighters with/without special ability {$name}": null,
1369
+ "{$start} to {$end}": null,
1370
+ "Depends on zone": null,
1371
+ // tradition artifact enchantments -- volume
1372
+ ".input {$points :number} {{{$points} points}}": null,
1373
+ ".input {$points :number} {{{$points} points per level}}": null,
1374
+ "{$points} points": null,
1375
+ "{$points} points for levels {$levels}": null,
1376
+ // tradition articact enchantments -- cost
1377
+ "{$value} LP": null,
1378
+ ".input {$value :number} {{{$value} permanent AE}}": null,
1379
+ "{$cost} per {$interval}": null,
1380
+ "{$cost} per {$countable}": null,
1381
+ "{$cost} per level": null,
1382
+ "{$cost} for level {$level}": null,
1383
+ "{$cost} (activation) + {$halvedCost} per {$interval}": null,
1384
+ "Variable": null,
1385
+ "{$value} permanent AE": null,
1386
+ // curricula
1387
+ "Guideline": null,
1388
+ "Elective Spellworks Package": null,
1389
+ "Restricted Spellworks": null,
1390
+ "All, at the GM’s discretion": null,
1391
+ ".input {$count :number} {{only {$count} additional spellwork with the Property {$property}}}": null,
1392
+ "no spellworks with the Property {$property}": null,
1393
+ "Demon Summoning": null,
1394
+ "the following spells are not taught: {$spells}": null,
1395
+ "no Borbaradian spellworks": null,
1396
+ "no spellworks that inflict DP or sDP on intelligent creatures": null,
1397
+ "Spellwork Changes": null,
1398
+ "Skills (+)": null,
1399
+ "Skills (−)": null,
1400
+ "{$replacement} instead of {$base}": null,
1304
1401
  }, { allKeysAreRequired: true }),
1305
1402
  }),
1306
1403
  }),