diff --git a/docs/reference/_Identifier.md b/docs/reference/_Identifier.md index 5417daf8..4daf32bd 100644 --- a/docs/reference/_Identifier.md +++ b/docs/reference/_Identifier.md @@ -2398,6 +2398,72 @@ The gem or precious stone’s identifier. --- +### `HerbIdentifier` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`herb` | The herb’s identifier. | See details + +#### `tag` + +- **Constant:** `"Herb"` + +#### `herb` + +The herb’s identifier. + +- **Type:** Integer +- **Minimum:** `1` + +--- + +### `HerbalAidIdentifier` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`herbal_aid` | The herbal aid’s identifier. | See details + +#### `tag` + +- **Constant:** `"HerbalAid"` + +#### `herbal_aid` + +The herbal aid’s identifier. + +- **Type:** Integer +- **Minimum:** `1` + +--- + +### `HerbalPreserveIdentifier` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`herbal_preserve` | The herbal preserve’s identifier. | See details + +#### `tag` + +- **Constant:** `"HerbalPreserve"` + +#### `herbal_preserve` + +The herbal preserve’s identifier. + +- **Type:** Integer +- **Minimum:** `1` + +--- + ### `IlluminationLightSourceIdentifier` - **Type:** Object @@ -2618,22 +2684,22 @@ The rope or chain’s identifier. --- -### `StationaryIdentifier` +### `StationeryIdentifier` - **Type:** Object Key | Description | Details :-- | :-- | :-- -`tag` | | See details -`stationary` | The stationary’s identifier. | See details +`tag` | | See details +`stationery` | The stationery’s identifier. | See details -#### `tag` +#### `tag` -- **Constant:** `"Stationary"` +- **Constant:** `"Stationery"` -#### `stationary` +#### `stationery` -The stationary’s identifier. +The stationery’s identifier. - **Type:** Integer - **Minimum:** `1` diff --git a/docs/reference/_IdentifierGroup.md b/docs/reference/_IdentifierGroup.md index ecebf7e1..c0908108 100644 --- a/docs/reference/_IdentifierGroup.md +++ b/docs/reference/_IdentifierGroup.md @@ -1258,7 +1258,7 @@ ### `EquipmentIdentifier` - **Type:** Union -- **Cases:** EquipmentIdentifier'AmmunitionIdentifier | EquipmentIdentifier'AnimalIdentifier | EquipmentIdentifier'AnimalCareIdentifier | EquipmentIdentifier'ArmorIdentifier | EquipmentIdentifier'BandageOrRemedyIdentifier | EquipmentIdentifier'BookIdentifier | EquipmentIdentifier'CeremonialItemIdentifier | EquipmentIdentifier'ClothesIdentifier | EquipmentIdentifier'ContainerIdentifier | EquipmentIdentifier'ElixirIdentifier | EquipmentIdentifier'EquipmentOfBlessedOnesIdentifier | EquipmentIdentifier'GemOrPreciousStoneIdentifier | EquipmentIdentifier'IlluminationLightSourceIdentifier | EquipmentIdentifier'IlluminationRefillsOrSuppliesIdentifier | EquipmentIdentifier'JewelryIdentifier | EquipmentIdentifier'LiebesspielzeugIdentifier | EquipmentIdentifier'LuxuryGoodIdentifier | EquipmentIdentifier'MagicalArtifactIdentifier | EquipmentIdentifier'MusicalInstrumentIdentifier | EquipmentIdentifier'OrienteeringAidIdentifier | EquipmentIdentifier'PoisonIdentifier | EquipmentIdentifier'RopeOrChainIdentifier | EquipmentIdentifier'StationaryIdentifier | EquipmentIdentifier'ThievesToolIdentifier | EquipmentIdentifier'ToolOfTheTradeIdentifier | EquipmentIdentifier'TravelGearOrToolIdentifier | EquipmentIdentifier'VehicleIdentifier | EquipmentIdentifier'WeaponIdentifier | EquipmentIdentifier'WeaponAccessoryIdentifier +- **Cases:** EquipmentIdentifier'AmmunitionIdentifier | EquipmentIdentifier'AnimalIdentifier | EquipmentIdentifier'AnimalCareIdentifier | EquipmentIdentifier'ArmorIdentifier | EquipmentIdentifier'BandageOrRemedyIdentifier | EquipmentIdentifier'BookIdentifier | EquipmentIdentifier'CeremonialItemIdentifier | EquipmentIdentifier'ClothesIdentifier | EquipmentIdentifier'ContainerIdentifier | EquipmentIdentifier'ElixirIdentifier | EquipmentIdentifier'EquipmentOfBlessedOnesIdentifier | EquipmentIdentifier'GemOrPreciousStoneIdentifier | EquipmentIdentifier'IlluminationLightSourceIdentifier | EquipmentIdentifier'IlluminationRefillsOrSuppliesIdentifier | EquipmentIdentifier'JewelryIdentifier | EquipmentIdentifier'LiebesspielzeugIdentifier | EquipmentIdentifier'LuxuryGoodIdentifier | EquipmentIdentifier'MagicalArtifactIdentifier | EquipmentIdentifier'MusicalInstrumentIdentifier | EquipmentIdentifier'OrienteeringAidIdentifier | EquipmentIdentifier'PoisonIdentifier | EquipmentIdentifier'RopeOrChainIdentifier | EquipmentIdentifier'StationeryIdentifier | EquipmentIdentifier'ThievesToolIdentifier | EquipmentIdentifier'ToolOfTheTradeIdentifier | EquipmentIdentifier'TravelGearOrToolIdentifier | EquipmentIdentifier'VehicleIdentifier | EquipmentIdentifier'WeaponIdentifier | EquipmentIdentifier'WeaponAccessoryIdentifier --- @@ -1394,9 +1394,9 @@ --- -### `EquipmentIdentifier'StationaryIdentifier` +### `EquipmentIdentifier'StationeryIdentifier` -- **Type:** StationaryIdentifier +- **Type:** StationeryIdentifier --- @@ -1473,3 +1473,53 @@ ### `ManyNumericIdentifiers[]` - **Type:** OneNumericIdentifier + +--- + +### `RecipeIdentifier` + +- **Type:** Union +- **Cases:** RecipeIdentifier'ElixirIdentifier | RecipeIdentifier'PoisonIdentifier | RecipeIdentifier'HerbalAidIdentifier | RecipeIdentifier'HerbalPreserveIdentifier + +--- + +### `RecipeIdentifier'ElixirIdentifier` + +- **Type:** ElixirIdentifier + +--- + +### `RecipeIdentifier'PoisonIdentifier` + +- **Type:** PoisonIdentifier + +--- + +### `RecipeIdentifier'HerbalAidIdentifier` + +- **Type:** HerbalAidIdentifier + +--- + +### `RecipeIdentifier'HerbalPreserveIdentifier` + +- **Type:** HerbalPreserveIdentifier + +--- + +### `HerbalAidOrPreserveIdentifier` + +- **Type:** Union +- **Cases:** HerbalAidOrPreserveIdentifier'HerbalAidIdentifier | HerbalAidOrPreserveIdentifier'HerbalPreserveIdentifier + +--- + +### `HerbalAidOrPreserveIdentifier'HerbalAidIdentifier` + +- **Type:** HerbalAidIdentifier + +--- + +### `HerbalAidOrPreserveIdentifier'HerbalPreserveIdentifier` + +- **Type:** HerbalPreserveIdentifier diff --git a/docs/reference/_SimpleReferences.md b/docs/reference/_SimpleReferences.md index f7fa452d..de775e74 100644 --- a/docs/reference/_SimpleReferences.md +++ b/docs/reference/_SimpleReferences.md @@ -615,3 +615,59 @@ Key | Description | Details #### `id` - **Type:** TraditionIdentifier + +--- + +### `RecipeReference` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`id` | | See details + +#### `id` + +- **Type:** RecipeIdentifier + +--- + +### `HerbalAidReference` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`id` | | See details + +#### `id` + +- **Type:** HerbalAidIdentifier + +--- + +### `HerbalPreserveReference` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`id` | | See details + +#### `id` + +- **Type:** HerbalPreserveIdentifier + +--- + +### `HerbReference` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`id` | | See details + +#### `id` + +- **Type:** HerbIdentifier diff --git a/docs/reference/equipment/item/Herb.md b/docs/reference/equipment/item/Herb.md new file mode 100644 index 00000000..8f90ae51 --- /dev/null +++ b/docs/reference/equipment/item/Herb.md @@ -0,0 +1,636 @@ +# Herb + +## Definitions + +### Herb (`Herb`) + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`id` | The herb's identifier. An unique, increasing integer. | See details +`effect_types` | Effect type(s) of the plant's effect(s) and usage(s). | See details +`prevalence` | The herb's prevalence per landscape type. | See details +`search_difficulty` | Modifier for plant lore check when searching for the plant. | See details +`identification_difficulty` | Modifier for plant lore check when identifying the plant. | See details +`uses` | Doses of plant material found with a search check per quality level. | See details +`value` | Value per dose, in silverthalers. | See details +`cost` | Price per dose, in silverthalers. | See details +`recipes?` | The recipes the herb is used in. | See details +`storage_life` | The Storage life of the raw herb. | See details +`preservation_methods` | The preservation options and respective storage life. | See details +`src` | | See details +`translations` | All translations for the entry, identified by IETF language tag (BCP47). | See details + +#### `id` + +The herb's identifier. An unique, increasing integer. + +- **Type:** Integer +- **Minimum:** `1` + +#### `effect_types` + +Effect type(s) of the plant's effect(s) and usage(s). + +- **Type:** List +- **Items:** Herb/effect_types[] +- **Minimum Items:** `1` +- **Unique Items:** Yes + +#### `prevalence` + +The herb's prevalence per landscape type. + +- **Type:** List +- **Items:** Herb/prevalence[] +- **Minimum Items:** `1` +- **Unique Items:** Yes + +#### `search_difficulty` + +Modifier for plant lore check when searching for the plant. + +- **Type:** Integer + +#### `identification_difficulty` + +Modifier for plant lore check when identifying the plant. + +- **Type:** Integer + +#### `uses` + +Doses of plant material found with a search check per quality level. + +- **Type:** List +- **Items:** Herb/uses[] +- **Minimum Items:** `6` +- **Maximum Items:** `6` + +#### `value` + +Value per dose, in silverthalers. + +- **Type:** Number +- **Minimum:** `0` + +#### `cost` + +Price per dose, in silverthalers. + +- **Type:** Number +- **Minimum:** `0` + +#### `recipes?` + +The recipes the herb is used in. + +- **Type:** List +- **Items:** Herb/recipes[] +- **Unique Items:** Yes + +#### `storage_life` + +The Storage life of the raw herb. + +- **Type:** StorageLifeRaw + +#### `preservation_methods` + +The preservation options and respective storage life. + +- **Type:** List +- **Items:** Herb/preservation_methods[] + +#### `src` + +- **Type:** PublicationRefs + +#### `translations` + +All translations for the entry, identified by IETF language tag (BCP47). + +- **Type:** LocaleMap<HerbTranslation> + +--- + +### `Herb/effect_types[]` + +- **Type:** EffectType + +--- + +### `Herb/prevalence[]` + +- **Type:** LandscapeTypePrevalences + +--- + +### `Herb/uses[]` + +- **Type:** Number + +--- + +### `Herb/recipes[]` + +- **Type:** RecipeReference + +--- + +### `Herb/preservation_methods[]` + +- **Type:** PreservationMethod + +--- + +### `LandscapeTypePrevalences` + +Prevalence and/or conditional prevalence(s) per landscape type. + +- **Type:** Union +- **Cases:** LandscapeTypePrevalences'PrevalenceFarNorth | LandscapeTypePrevalences'PrevalenceVeld | LandscapeTypePrevalences'PrevalenceMarsh | LandscapeTypePrevalences'PrevalenceWoods | LandscapeTypePrevalences'PrevalenceRainForest | LandscapeTypePrevalences'PrevalenceMountains | LandscapeTypePrevalences'PrevalenceDesert | LandscapeTypePrevalences'PrevalenceMaraskan + +--- + +### `LandscapeTypePrevalences'PrevalenceFarNorth` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`prevalence_far_north` | | See details + +#### `tag` + +- **Constant:** `"PrevalenceFarNorth"` + +#### `prevalence_far_north` + +- **Type:** List +- **Items:** LandscapeTypePrevalences'PrevalenceFarNorth/prevalence_far_north[] + +--- + +### `LandscapeTypePrevalences'PrevalenceFarNorth/prevalence_far_north[]` + +- **Type:** LandscapeTypePrevalence + +--- + +### `LandscapeTypePrevalences'PrevalenceVeld` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`prevalence_veld` | | See details + +#### `tag` + +- **Constant:** `"PrevalenceVeld"` + +#### `prevalence_veld` + +- **Type:** List +- **Items:** LandscapeTypePrevalences'PrevalenceVeld/prevalence_veld[] + +--- + +### `LandscapeTypePrevalences'PrevalenceVeld/prevalence_veld[]` + +- **Type:** LandscapeTypePrevalence + +--- + +### `LandscapeTypePrevalences'PrevalenceMarsh` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`prevalence_marsh` | | See details + +#### `tag` + +- **Constant:** `"PrevalenceMarsh"` + +#### `prevalence_marsh` + +- **Type:** List +- **Items:** LandscapeTypePrevalences'PrevalenceMarsh/prevalence_marsh[] + +--- + +### `LandscapeTypePrevalences'PrevalenceMarsh/prevalence_marsh[]` + +- **Type:** LandscapeTypePrevalence + +--- + +### `LandscapeTypePrevalences'PrevalenceWoods` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`prevalence_woods` | | See details + +#### `tag` + +- **Constant:** `"PrevalenceWoods"` + +#### `prevalence_woods` + +- **Type:** List +- **Items:** LandscapeTypePrevalences'PrevalenceWoods/prevalence_woods[] + +--- + +### `LandscapeTypePrevalences'PrevalenceWoods/prevalence_woods[]` + +- **Type:** LandscapeTypePrevalence + +--- + +### `LandscapeTypePrevalences'PrevalenceRainForest` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`prevalence_rain_forest` | | See details + +#### `tag` + +- **Constant:** `"PrevalenceRainForest"` + +#### `prevalence_rain_forest` + +- **Type:** List +- **Items:** LandscapeTypePrevalences'PrevalenceRainForest/prevalence_rain_forest[] + +--- + +### `LandscapeTypePrevalences'PrevalenceRainForest/prevalence_rain_forest[]` + +- **Type:** LandscapeTypePrevalence + +--- + +### `LandscapeTypePrevalences'PrevalenceMountains` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`prevalence_mountains` | | See details + +#### `tag` + +- **Constant:** `"PrevalenceMountains"` + +#### `prevalence_mountains` + +- **Type:** List +- **Items:** LandscapeTypePrevalences'PrevalenceMountains/prevalence_mountains[] + +--- + +### `LandscapeTypePrevalences'PrevalenceMountains/prevalence_mountains[]` + +- **Type:** LandscapeTypePrevalence + +--- + +### `LandscapeTypePrevalences'PrevalenceDesert` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`prevalence_desert` | | See details + +#### `tag` + +- **Constant:** `"PrevalenceDesert"` + +#### `prevalence_desert` + +- **Type:** List +- **Items:** LandscapeTypePrevalences'PrevalenceDesert/prevalence_desert[] + +--- + +### `LandscapeTypePrevalences'PrevalenceDesert/prevalence_desert[]` + +- **Type:** LandscapeTypePrevalence + +--- + +### `LandscapeTypePrevalences'PrevalenceMaraskan` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`prevalence_maraskan` | | See details + +#### `tag` + +- **Constant:** `"PrevalenceMaraskan"` + +#### `prevalence_maraskan` + +- **Type:** List +- **Items:** LandscapeTypePrevalences'PrevalenceMaraskan/prevalence_maraskan[] + +--- + +### `LandscapeTypePrevalences'PrevalenceMaraskan/prevalence_maraskan[]` + +- **Type:** LandscapeTypePrevalence + +--- + +### `LandscapeTypePrevalence` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`prevalence` | Prevalence class. | See details +`condition?` | Condition or restrictions concerning the prevalence. | See details + +#### `prevalence` + +Prevalence class. + +- **Type:** PrevalenceClass + +#### `condition?` + +Condition or restrictions concerning the prevalence. + +- **Type:** LocaleMap<NonEmptyString> + +--- + +### `PrevalenceClass` + +Prevalence class from 5 (common) down to 1 (very rare) + +- **Type:** Union +- **Cases:** PrevalenceClass'0 | PrevalenceClass'1 | PrevalenceClass'2 | PrevalenceClass'3 | PrevalenceClass'4 + +--- + +### `PrevalenceClass'0` + +- **Constant:** `"Common"` + +--- + +### `PrevalenceClass'1` + +- **Constant:** `"Occasional"` + +--- + +### `PrevalenceClass'2` + +- **Constant:** `"NowAndThen"` + +--- + +### `PrevalenceClass'3` + +- **Constant:** `"Rare"` + +--- + +### `PrevalenceClass'4` + +- **Constant:** `"VeryRare"` + +--- + +### `StorageLifeRaw` + +The Storage life of a raw herb. + +- **Type:** Union +- **Cases:** StorageLifeRaw'Default | StorageLifeRaw'Special + +--- + +### `StorageLifeRaw'Default` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`default` | | See details + +#### `tag` + +- **Constant:** `"Default"` + +#### `default` + +- **Type:** Object + +--- + +### `StorageLifeRaw'Default/default` + +- **Type:** Empty Object + +--- + +### `StorageLifeRaw'Special` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`special` | | See details + +#### `tag` + +- **Constant:** `"Special"` + +#### `special` + +- **Type:** LocaleMap<NonEmptyString> + +--- + +### `PreservationMethod` + +The preservation options of a herb and respective storage life. + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`method` | | See details +`storage_life` | | See details + +#### `method` + +- **Type:** PreservationMethodDescription + +#### `storage_life` + +- **Type:** StorageLife + +--- + +### `PreservationMethodDescription` + +Details on the preservation method of a herb. + +- **Type:** Union +- **Cases:** PreservationMethodDescription'HerbalAidIdentifier | PreservationMethodDescription'HerbalPreserveIdentifier | PreservationMethodDescription'Special + +--- + +### `PreservationMethodDescription'HerbalAidIdentifier` + +- **Type:** HerbalAidIdentifier + +--- + +### `PreservationMethodDescription'HerbalPreserveIdentifier` + +- **Type:** HerbalPreserveIdentifier + +--- + +### `PreservationMethodDescription'Special` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`tag` | | See details +`special` | | See details + +#### `tag` + +- **Constant:** `"Special"` + +#### `special` + +- **Type:** LocaleMap<NonEmptyString> + +--- + +### `HerbTranslation` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`name` | The name of the herb. | See details +`alternative_names?` | A list of alternative names. | See details +`description?` | The plant's description. | See details +`effect_touch?` | The raw plant's effect(s) when touched. | See details +`effect_inhale?` | The raw plant's effect(s) when inhaled. | See details +`effect_ingest?` | The raw plant's effect(s) when ingested. | See details +`simple_recipe?` | Simple recipes the herb is used in. | See details +`prevalence_remarks?` | Additional remarks on the prevalence per landscape type of the herb. | See details +`prevalence_regions` | Description of the plant's regional prevalence. | See details +`legend_tradition` | Description of traditonal use of and legends about the herb. | See details +`errata?` | | See details + +#### `name` + +The name of the herb. + +- **Type:** NonEmptyString + +#### `alternative_names?` + +A list of alternative names. + +- **Type:** List +- **Items:** HerbTranslation/alternative_names[] +- **Minimum Items:** `1` + +#### `description?` + +The plant's description. + +- **Type:** NonEmptyString + +#### `effect_touch?` + +The raw plant's effect(s) when touched. + +- **Type:** NonEmptyString + +#### `effect_inhale?` + +The raw plant's effect(s) when inhaled. + +- **Type:** NonEmptyString + +#### `effect_ingest?` + +The raw plant's effect(s) when ingested. + +- **Type:** NonEmptyString + +#### `simple_recipe?` + +Simple recipes the herb is used in. + +- **Type:** List +- **Items:** HerbTranslation/simple_recipe[] + +#### `prevalence_remarks?` + +Additional remarks on the prevalence per landscape type of the herb. + +- **Type:** NonEmptyString + +#### `prevalence_regions` + +Description of the plant's regional prevalence. + +- **Type:** NonEmptyString + +#### `legend_tradition` + +Description of traditonal use of and legends about the herb. + +- **Type:** NonEmptyString + +#### `errata?` + +- **Type:** Errata + +--- + +### `HerbTranslation/alternative_names[]` + +- **Type:** AlternativeName + +--- + +### `HerbTranslation/simple_recipe[]` + +- **Type:** NonEmptyString diff --git a/docs/reference/equipment/item/HerbalAid.md b/docs/reference/equipment/item/HerbalAid.md new file mode 100644 index 00000000..2b26aa0e --- /dev/null +++ b/docs/reference/equipment/item/HerbalAid.md @@ -0,0 +1,108 @@ +# HerbalAid + +## Definitions + +### HerbalAid (`HerbalAid`) + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`id` | The aid's identifier. An unique, increasing integer. | See details +`main_ingredient` | The main ingredient, a herb. | See details +`alternative_main_ingredient?` | An alternative main ingredient, a herb. | See details +`production_difficulty` | Modifier for plant lore check when making the aid. | See details +`translation` | All translations for the entry, identified by IETF language tag (BCP47). | See details +`src` | | See details + +#### `id` + +The aid's identifier. An unique, increasing integer. + +- **Type:** Integer +- **Minimum:** `1` + +#### `main_ingredient` + +The main ingredient, a herb. + +- **Type:** HerbReference + +#### `alternative_main_ingredient?` + +An alternative main ingredient, a herb. + +- **Type:** HerbReference + +#### `production_difficulty` + +Modifier for plant lore check when making the aid. + +- **Type:** Integer + +#### `translation` + +All translations for the entry, identified by IETF language tag (BCP47). + +- **Type:** LocaleMap<HerbalAidTranslation> + +#### `src` + +- **Type:** PublicationRefs + +--- + +### `HerbalAidTranslation` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`name` | Name of the preservation method. | See details +`description` | Description of the production method and/or effect. | See details +`additional_ingredients?` | Ingredients beside the main ingredient. | See details +`typical_tools` | Tools and aids used in the production process. | See details +`errata?` | | See details + +#### `name` + +Name of the preservation method. + +- **Type:** NonEmptyString + +#### `description` + +Description of the production method and/or effect. + +- **Type:** NonEmptyString + +#### `additional_ingredients?` + +Ingredients beside the main ingredient. + +- **Type:** List +- **Items:** HerbalAidTranslation/additional_ingredients[] +- **Minimum Items:** `1` + +#### `typical_tools` + +Tools and aids used in the production process. + +- **Type:** List +- **Items:** HerbalAidTranslation/typical_tools[] + +#### `errata?` + +- **Type:** Errata + +--- + +### `HerbalAidTranslation/additional_ingredients[]` + +- **Type:** NonEmptyString + +--- + +### `HerbalAidTranslation/typical_tools[]` + +- **Type:** NonEmptyString diff --git a/docs/reference/equipment/item/HerbalPreserve.md b/docs/reference/equipment/item/HerbalPreserve.md new file mode 100644 index 00000000..ac0232f5 --- /dev/null +++ b/docs/reference/equipment/item/HerbalPreserve.md @@ -0,0 +1,79 @@ +# HerbalPreserve + +## Definitions + +### HerbalPreserve (`HerbalPreserve`) + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`id` | The preserve's identifier. An unique, increasing integer. | See details +`main_ingredient` | The main ingredient, a herb. | See details +`storage_life` | The storage life of the product. | See details +`translation` | All translations for the entry, identified by IETF language tag (BCP47). | See details +`src` | | See details + +#### `id` + +The preserve's identifier. An unique, increasing integer. + +- **Type:** Integer +- **Minimum:** `1` + +#### `main_ingredient` + +The main ingredient, a herb. + +- **Type:** HerbReference + +#### `storage_life` + +The storage life of the product. + +- **Type:** StorageLife + +#### `translation` + +All translations for the entry, identified by IETF language tag (BCP47). + +- **Type:** LocaleMap<HerbalPreserveTranslation> + +#### `src` + +- **Type:** PublicationRefs + +--- + +### `HerbalPreserveTranslation` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`name` | Name of the preservation method. | See details +`preparation` | Description of the preservation method. | See details +`alternative_effect` | Alternative effect of the product. | See details +`errata?` | | See details + +#### `name` + +Name of the preservation method. + +- **Type:** NonEmptyString + +#### `preparation` + +Description of the preservation method. + +- **Type:** NonEmptyString + +#### `alternative_effect` + +Alternative effect of the product. + +- **Type:** NonEmptyString + +#### `errata?` + +- **Type:** Errata diff --git a/docs/reference/equipment/item/Poison.md b/docs/reference/equipment/item/Poison.md index a8ca9f46..2899214f 100644 --- a/docs/reference/equipment/item/Poison.md +++ b/docs/reference/equipment/item/Poison.md @@ -296,7 +296,7 @@ Key | Description | Details #### `unit` -- **Type:** PoisonTimeUnit +- **Type:** TimeUnit --- @@ -315,38 +315,7 @@ Key | Description | Details #### `unit` -- **Type:** PoisonTimeUnit - ---- - -### `PoisonTimeUnit` - -- **Type:** Union -- **Cases:** PoisonTimeUnit'0 | PoisonTimeUnit'1 | PoisonTimeUnit'2 | PoisonTimeUnit'3 - ---- - -### `PoisonTimeUnit'0` - -- **Constant:** `"CombatRounds"` - ---- - -### `PoisonTimeUnit'1` - -- **Constant:** `"Minutes"` - ---- - -### `PoisonTimeUnit'2` - -- **Constant:** `"Hours"` - ---- - -### `PoisonTimeUnit'3` - -- **Constant:** `"Days"` +- **Type:** TimeUnit --- diff --git a/docs/reference/equipment/item/Stationary.md b/docs/reference/equipment/item/Stationery.md similarity index 69% rename from docs/reference/equipment/item/Stationary.md rename to docs/reference/equipment/item/Stationery.md index fb22f4ff..89bfb9ab 100644 --- a/docs/reference/equipment/item/Stationary.md +++ b/docs/reference/equipment/item/Stationery.md @@ -2,6 +2,6 @@ ## Definitions -### `Stationary` +### `Stationery` - **Type:** DefaultItem diff --git a/docs/reference/equipment/item/_Herbary.md b/docs/reference/equipment/item/_Herbary.md index 2de0dc28..3b8b910c 100644 --- a/docs/reference/equipment/item/_Herbary.md +++ b/docs/reference/equipment/item/_Herbary.md @@ -100,3 +100,73 @@ The AP value of the trade secret. The prerequisites of the trade secret, if any. - **Type:** PlainGeneralPrerequisites + +--- + +### `StorageLife` + +- **Type:** Object + +Key | Description | Details +:-- | :-- | :-- +`value` | The storage life of a (processed) herb. | See details +`unit` | | See details + +#### `value` + +The storage life of a (processed) herb. + +- **Type:** Integer + +#### `unit` + +- **Type:** TimeUnit + +--- + +### `TimeUnit` + +- **Type:** Union +- **Cases:** TimeUnit'0 | TimeUnit'1 | TimeUnit'2 | TimeUnit'3 | TimeUnit'4 | TimeUnit'5 | TimeUnit'6 + +--- + +### `TimeUnit'0` + +- **Constant:** `"CombatRounds"` + +--- + +### `TimeUnit'1` + +- **Constant:** `"Minutes"` + +--- + +### `TimeUnit'2` + +- **Constant:** `"Hours"` + +--- + +### `TimeUnit'3` + +- **Constant:** `"Days"` + +--- + +### `TimeUnit'4` + +- **Constant:** `"Weeks"` + +--- + +### `TimeUnit'5` + +- **Constant:** `"Months"` + +--- + +### `TimeUnit'6` + +- **Constant:** `"Years"` diff --git a/schema/_Identifier.schema.json b/schema/_Identifier.schema.json index 3c9f8cc1..593a85cb 100644 --- a/schema/_Identifier.schema.json +++ b/schema/_Identifier.schema.json @@ -1960,6 +1960,60 @@ ], "additionalProperties": false }, + "HerbIdentifier": { + "type": "object", + "properties": { + "tag": { + "const": "Herb" + }, + "herb": { + "description": "The herb’s identifier.", + "type": "integer", + "minimum": 1 + } + }, + "required": [ + "tag", + "herb" + ], + "additionalProperties": false + }, + "HerbalAidIdentifier": { + "type": "object", + "properties": { + "tag": { + "const": "HerbalAid" + }, + "herbal_aid": { + "description": "The herbal aid’s identifier.", + "type": "integer", + "minimum": 1 + } + }, + "required": [ + "tag", + "herbal_aid" + ], + "additionalProperties": false + }, + "HerbalPreserveIdentifier": { + "type": "object", + "properties": { + "tag": { + "const": "HerbalPreserve" + }, + "herbal_preserve": { + "description": "The herbal preserve’s identifier.", + "type": "integer", + "minimum": 1 + } + }, + "required": [ + "tag", + "herbal_preserve" + ], + "additionalProperties": false + }, "IlluminationLightSourceIdentifier": { "type": "object", "properties": { @@ -2140,21 +2194,21 @@ ], "additionalProperties": false }, - "StationaryIdentifier": { + "StationeryIdentifier": { "type": "object", "properties": { "tag": { - "const": "Stationary" + "const": "Stationery" }, - "stationary": { - "description": "The stationary’s identifier.", + "stationery": { + "description": "The stationery’s identifier.", "type": "integer", "minimum": 1 } }, "required": [ "tag", - "stationary" + "stationery" ], "additionalProperties": false }, diff --git a/schema/_IdentifierGroup.schema.json b/schema/_IdentifierGroup.schema.json index 4029e2a0..13a3f221 100644 --- a/schema/_IdentifierGroup.schema.json +++ b/schema/_IdentifierGroup.schema.json @@ -706,7 +706,7 @@ "$ref": "./_Identifier.schema.json#/$defs/RopeOrChainIdentifier" }, { - "$ref": "./_Identifier.schema.json#/$defs/StationaryIdentifier" + "$ref": "./_Identifier.schema.json#/$defs/StationeryIdentifier" }, { "$ref": "./_Identifier.schema.json#/$defs/ThievesToolIdentifier" @@ -748,6 +748,32 @@ "$ref": "#/$defs/OneNumericIdentifier" }, "minItems": 2 + }, + "RecipeIdentifier": { + "oneOf": [ + { + "$ref": "./_Identifier.schema.json#/$defs/ElixirIdentifier" + }, + { + "$ref": "./_Identifier.schema.json#/$defs/PoisonIdentifier" + }, + { + "$ref": "./_Identifier.schema.json#/$defs/HerbalAidIdentifier" + }, + { + "$ref": "./_Identifier.schema.json#/$defs/HerbalPreserveIdentifier" + } + ] + }, + "HerbalAidOrPreserveIdentifier": { + "oneOf": [ + { + "$ref": "./_Identifier.schema.json#/$defs/HerbalAidIdentifier" + }, + { + "$ref": "./_Identifier.schema.json#/$defs/HerbalPreserveIdentifier" + } + ] } } } diff --git a/schema/_SimpleReferences.schema.json b/schema/_SimpleReferences.schema.json index b7ca6d53..200d95cd 100644 --- a/schema/_SimpleReferences.schema.json +++ b/schema/_SimpleReferences.schema.json @@ -517,6 +517,54 @@ "id" ], "additionalProperties": false + }, + "RecipeReference": { + "type": "object", + "properties": { + "id": { + "$ref": "./_IdentifierGroup.schema.json#/$defs/RecipeIdentifier" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "HerbalAidReference": { + "type": "object", + "properties": { + "id": { + "$ref": "./_Identifier.schema.json#/$defs/HerbalAidIdentifier" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "HerbalPreserveReference": { + "type": "object", + "properties": { + "id": { + "$ref": "./_Identifier.schema.json#/$defs/HerbalPreserveIdentifier" + } + }, + "required": [ + "id" + ], + "additionalProperties": false + }, + "HerbReference": { + "type": "object", + "properties": { + "id": { + "$ref": "./_Identifier.schema.json#/$defs/HerbIdentifier" + } + }, + "required": [ + "id" + ], + "additionalProperties": false } } } diff --git a/schema/equipment/item/Herb.schema.json b/schema/equipment/item/Herb.schema.json new file mode 100644 index 00000000..5747deca --- /dev/null +++ b/schema/equipment/item/Herb.schema.json @@ -0,0 +1,473 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "/equipment/item/Herb.schema.json", + "$ref": "#/$defs/Herb", + "$defs": { + "Herb": { + "title": "Herb", + "type": "object", + "properties": { + "id": { + "description": "The herb's identifier. An unique, increasing integer.", + "type": "integer", + "minimum": 1 + }, + "effect_types": { + "description": "Effect type(s) of the plant's effect(s) and usage(s).", + "type": "array", + "items": { + "$ref": "./_Herbary.schema.json#/$defs/EffectType" + }, + "minItems": 1, + "uniqueItems": true + }, + "prevalence": { + "description": "The herb's prevalence per landscape type.", + "type": "array", + "items": { + "$ref": "#/$defs/LandscapeTypePrevalences" + }, + "minItems": 1, + "uniqueItems": true + }, + "search_difficulty": { + "description": "Modifier for plant lore check when searching for the plant.", + "type": "integer" + }, + "identification_difficulty": { + "description": "Modifier for plant lore check when identifying the plant.", + "type": "integer" + }, + "uses": { + "description": "Doses of plant material found with a search check per quality level.", + "type": "array", + "items": { + "type": "number" + }, + "minItems": 6, + "maxItems": 6 + }, + "value": { + "description": "Value per dose, in silverthalers.", + "type": "number", + "minimum": 0 + }, + "cost": { + "description": "Price per dose, in silverthalers.", + "type": "number", + "minimum": 0 + }, + "recipes": { + "description": "The recipes the herb is used in.", + "type": "array", + "items": { + "$ref": "../../_SimpleReferences.schema.json#/$defs/RecipeReference" + }, + "uniqueItems": true + }, + "storage_life": { + "description": "The Storage life of the raw herb.", + "$ref": "#/$defs/StorageLifeRaw" + }, + "preservation_methods": { + "description": "The preservation options and respective storage life.", + "type": "array", + "items": { + "$ref": "#/$defs/PreservationMethod" + } + }, + "src": { + "$ref": "../../source/_PublicationRef.schema.json#/$defs/PublicationRefs" + }, + "translations": { + "description": "All translations for the entry, identified by IETF language tag (BCP47).", + "type": "object", + "patternProperties": { + "^[a-z]{2}-[A-Z]{2}$": { + "$ref": "#/$defs/HerbTranslation" + } + }, + "minProperties": 1, + "additionalProperties": false + } + }, + "required": [ + "id", + "effect_types", + "prevalence", + "search_difficulty", + "identification_difficulty", + "uses", + "value", + "cost", + "storage_life", + "preservation_methods", + "src", + "translations" + ], + "additionalProperties": false + }, + "LandscapeTypePrevalences": { + "description": "Prevalence and/or conditional prevalence(s) per landscape type.", + "oneOf": [ + { + "type": "object", + "properties": { + "tag": { + "const": "PrevalenceFarNorth" + }, + "prevalence_far_north": { + "type": "array", + "items": { + "$ref": "#/$defs/LandscapeTypePrevalence" + } + } + }, + "required": [ + "tag", + "prevalence_far_north" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "tag": { + "const": "PrevalenceVeld" + }, + "prevalence_veld": { + "type": "array", + "items": { + "$ref": "#/$defs/LandscapeTypePrevalence" + } + } + }, + "required": [ + "tag", + "prevalence_veld" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "tag": { + "const": "PrevalenceMarsh" + }, + "prevalence_marsh": { + "type": "array", + "items": { + "$ref": "#/$defs/LandscapeTypePrevalence" + } + } + }, + "required": [ + "tag", + "prevalence_marsh" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "tag": { + "const": "PrevalenceWoods" + }, + "prevalence_woods": { + "type": "array", + "items": { + "$ref": "#/$defs/LandscapeTypePrevalence" + } + } + }, + "required": [ + "tag", + "prevalence_woods" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "tag": { + "const": "PrevalenceRainForest" + }, + "prevalence_rain_forest": { + "type": "array", + "items": { + "$ref": "#/$defs/LandscapeTypePrevalence" + } + } + }, + "required": [ + "tag", + "prevalence_rain_forest" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "tag": { + "const": "PrevalenceMountains" + }, + "prevalence_mountains": { + "type": "array", + "items": { + "$ref": "#/$defs/LandscapeTypePrevalence" + } + } + }, + "required": [ + "tag", + "prevalence_mountains" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "tag": { + "const": "PrevalenceDesert" + }, + "prevalence_desert": { + "type": "array", + "items": { + "$ref": "#/$defs/LandscapeTypePrevalence" + } + } + }, + "required": [ + "tag", + "prevalence_desert" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "tag": { + "const": "PrevalenceMaraskan" + }, + "prevalence_maraskan": { + "type": "array", + "items": { + "$ref": "#/$defs/LandscapeTypePrevalence" + } + } + }, + "required": [ + "tag", + "prevalence_maraskan" + ], + "additionalProperties": false + } + ] + }, + "LandscapeTypePrevalence": { + "type": "object", + "properties": { + "prevalence": { + "description": "Prevalence class.", + "$ref": "#/$defs/PrevalenceClass" + }, + "condition": { + "description": "All translations for the entry, identified by IETF language tag (BCP47).", + "type": "object", + "patternProperties": { + "^[a-z]{2}-[A-Z]{2}$": { + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + } + }, + "minProperties": 1, + "additionalProperties": false + } + }, + "required": [ + "prevalence" + ], + "additionalProperties": false + }, + "PrevalenceClass": { + "description": "Prevalence class from 5 (common) down to 1 (very rare)", + "oneOf": [ + { + "const": "Common" + }, + { + "const": "Occasional" + }, + { + "const": "NowAndThen" + }, + { + "const": "Rare" + }, + { + "const": "VeryRare" + } + ] + }, + "StorageLifeRaw": { + "description": "The Storage life of a raw herb.", + "oneOf": [ + { + "type": "object", + "properties": { + "tag": { + "const": "Default" + }, + "default": { + "type": "object", + "properties": {}, + "required": [], + "additionalProperties": false + } + }, + "required": [ + "tag", + "default" + ], + "additionalProperties": false + }, + { + "type": "object", + "properties": { + "tag": { + "const": "Special" + }, + "special": { + "description": "All translations for the entry, identified by IETF language tag (BCP47).", + "type": "object", + "patternProperties": { + "^[a-z]{2}-[A-Z]{2}$": { + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + } + }, + "minProperties": 1, + "additionalProperties": false + } + }, + "required": [ + "tag", + "special" + ], + "additionalProperties": false + } + ] + }, + "PreservationMethod": { + "description": "The preservation options of a herb and respective storage life.", + "type": "object", + "properties": { + "method": { + "$ref": "#/$defs/PreservationMethodDescription" + }, + "storage_life": { + "$ref": "./_Herbary.schema.json#/$defs/StorageLife" + } + }, + "required": [ + "method", + "storage_life" + ], + "additionalProperties": false + }, + "PreservationMethodDescription": { + "description": "Details on the preservation method of a herb.", + "oneOf": [ + { + "$ref": "../../_Identifier.schema.json#/$defs/HerbalAidIdentifier" + }, + { + "$ref": "../../_Identifier.schema.json#/$defs/HerbalPreserveIdentifier" + }, + { + "type": "object", + "properties": { + "tag": { + "const": "Special" + }, + "special": { + "description": "All translations for the entry, identified by IETF language tag (BCP47).", + "type": "object", + "patternProperties": { + "^[a-z]{2}-[A-Z]{2}$": { + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + } + }, + "minProperties": 1, + "additionalProperties": false + } + }, + "required": [ + "tag", + "special" + ], + "additionalProperties": false + } + ] + }, + "HerbTranslation": { + "type": "object", + "properties": { + "name": { + "description": "The name of the herb.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "alternative_names": { + "description": "A list of alternative names.", + "type": "array", + "items": { + "$ref": "../../_AlternativeNames.schema.json#/$defs/AlternativeName" + }, + "minItems": 1 + }, + "description": { + "description": "The plant's description.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "effect_touch": { + "description": "The raw plant's effect(s) when touched.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "effect_inhale": { + "description": "The raw plant's effect(s) when inhaled.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "effect_ingest": { + "description": "The raw plant's effect(s) when ingested.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "simple_recipe": { + "description": "Simple recipes the herb is used in.", + "type": "array", + "items": { + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + } + }, + "prevalence_remarks": { + "description": "Additional remarks on the prevalence per landscape type of the herb.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "prevalence_regions": { + "description": "Description of the plant's regional prevalence.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "legend_tradition": { + "description": "Description of traditonal use of and legends about the herb.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "errata": { + "$ref": "../../source/_Erratum.schema.json#/$defs/Errata" + } + }, + "required": [ + "name", + "prevalence_regions", + "legend_tradition" + ], + "additionalProperties": false + } + } +} diff --git a/schema/equipment/item/HerbalAid.schema.json b/schema/equipment/item/HerbalAid.schema.json new file mode 100644 index 00000000..7510a2d4 --- /dev/null +++ b/schema/equipment/item/HerbalAid.schema.json @@ -0,0 +1,89 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "/equipment/item/HerbalAid.schema.json", + "$ref": "#/$defs/HerbalAid", + "$defs": { + "HerbalAid": { + "title": "HerbalAid", + "type": "object", + "properties": { + "id": { + "description": "The aid's identifier. An unique, increasing integer.", + "type": "integer", + "minimum": 1 + }, + "main_ingredient": { + "description": "The main ingredient, a herb.", + "$ref": "../../_SimpleReferences.schema.json#/$defs/HerbReference" + }, + "alternative_main_ingredient": { + "description": "An alternative main ingredient, a herb.", + "$ref": "../../_SimpleReferences.schema.json#/$defs/HerbReference" + }, + "production_difficulty": { + "description": "Modifier for plant lore check when making the aid.", + "type": "integer" + }, + "translation": { + "description": "All translations for the entry, identified by IETF language tag (BCP47).", + "type": "object", + "patternProperties": { + "^[a-z]{2}-[A-Z]{2}$": { + "$ref": "#/$defs/HerbalAidTranslation" + } + }, + "minProperties": 1, + "additionalProperties": false + }, + "src": { + "$ref": "../../source/_PublicationRef.schema.json#/$defs/PublicationRefs" + } + }, + "required": [ + "id", + "main_ingredient", + "production_difficulty", + "translation", + "src" + ], + "additionalProperties": false + }, + "HerbalAidTranslation": { + "type": "object", + "properties": { + "name": { + "description": "Name of the preservation method.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "description": { + "description": "Description of the production method and/or effect.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "additional_ingredients": { + "description": "Ingredients beside the main ingredient.", + "type": "array", + "items": { + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "minItems": 1 + }, + "typical_tools": { + "description": "Tools and aids used in the production process.", + "type": "array", + "items": { + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + } + }, + "errata": { + "$ref": "../../source/_Erratum.schema.json#/$defs/Errata" + } + }, + "required": [ + "name", + "description", + "typical_tools" + ], + "additionalProperties": false + } + } +} diff --git a/schema/equipment/item/HerbalPreserve.schema.json b/schema/equipment/item/HerbalPreserve.schema.json new file mode 100644 index 00000000..50feddac --- /dev/null +++ b/schema/equipment/item/HerbalPreserve.schema.json @@ -0,0 +1,74 @@ +{ + "$schema": "https://json-schema.org/draft/2019-09/schema", + "$id": "/equipment/item/HerbalPreserve.schema.json", + "$ref": "#/$defs/HerbalPreserve", + "$defs": { + "HerbalPreserve": { + "title": "HerbalPreserve", + "type": "object", + "properties": { + "id": { + "description": "The preserve's identifier. An unique, increasing integer.", + "type": "integer", + "minimum": 1 + }, + "main_ingredient": { + "description": "The main ingredient, a herb.", + "$ref": "../../_SimpleReferences.schema.json#/$defs/HerbReference" + }, + "storage_life": { + "description": "The storage life of the product.", + "$ref": "./_Herbary.schema.json#/$defs/StorageLife" + }, + "translation": { + "description": "All translations for the entry, identified by IETF language tag (BCP47).", + "type": "object", + "patternProperties": { + "^[a-z]{2}-[A-Z]{2}$": { + "$ref": "#/$defs/HerbalPreserveTranslation" + } + }, + "minProperties": 1, + "additionalProperties": false + }, + "src": { + "$ref": "../../source/_PublicationRef.schema.json#/$defs/PublicationRefs" + } + }, + "required": [ + "id", + "main_ingredient", + "storage_life", + "translation", + "src" + ], + "additionalProperties": false + }, + "HerbalPreserveTranslation": { + "type": "object", + "properties": { + "name": { + "description": "Name of the preservation method.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "preparation": { + "description": "Description of the preservation method.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "alternative_effect": { + "description": "Alternative effect of the product.", + "$ref": "../../_NonEmptyString.schema.json#/$defs/NonEmptyString" + }, + "errata": { + "$ref": "../../source/_Erratum.schema.json#/$defs/Errata" + } + }, + "required": [ + "name", + "preparation", + "alternative_effect" + ], + "additionalProperties": false + } + } +} diff --git a/schema/equipment/item/Poison.schema.json b/schema/equipment/item/Poison.schema.json index 03a24546..77c68229 100644 --- a/schema/equipment/item/Poison.schema.json +++ b/schema/equipment/item/Poison.schema.json @@ -237,7 +237,7 @@ "type": "number" }, "unit": { - "$ref": "#/$defs/PoisonTimeUnit" + "$ref": "./_Herbary.schema.json#/$defs/TimeUnit" } }, "required": [ @@ -253,7 +253,7 @@ "$ref": "../../_Dice.schema.json#/$defs/Dice" }, "unit": { - "$ref": "#/$defs/PoisonTimeUnit" + "$ref": "./_Herbary.schema.json#/$defs/TimeUnit" } }, "required": [ @@ -262,22 +262,6 @@ ], "additionalProperties": false }, - "PoisonTimeUnit": { - "oneOf": [ - { - "const": "CombatRounds" - }, - { - "const": "Minutes" - }, - { - "const": "Hours" - }, - { - "const": "Days" - } - ] - }, "IndefinitePoisonTime": { "type": "object", "properties": { diff --git a/schema/equipment/item/Stationary.schema.json b/schema/equipment/item/Stationery.schema.json similarity index 58% rename from schema/equipment/item/Stationary.schema.json rename to schema/equipment/item/Stationery.schema.json index bdbcb641..0803d167 100644 --- a/schema/equipment/item/Stationary.schema.json +++ b/schema/equipment/item/Stationery.schema.json @@ -1,9 +1,9 @@ { "$schema": "https://json-schema.org/draft/2019-09/schema", - "$id": "/equipment/item/Stationary.schema.json", - "$ref": "#/$defs/Stationary", + "$id": "/equipment/item/Stationery.schema.json", + "$ref": "#/$defs/Stationery", "$defs": { - "Stationary": { + "Stationery": { "$ref": "./_Item.schema.json#/$defs/DefaultItem" } } diff --git a/schema/equipment/item/_Herbary.schema.json b/schema/equipment/item/_Herbary.schema.json index 2368dc9e..2c90c067 100644 --- a/schema/equipment/item/_Herbary.schema.json +++ b/schema/equipment/item/_Herbary.schema.json @@ -57,6 +57,48 @@ "ap_value" ], "additionalProperties": false + }, + "StorageLife": { + "type": "object", + "properties": { + "value": { + "description": "The storage life of a (processed) herb.", + "type": "integer" + }, + "unit": { + "$ref": "#/$defs/TimeUnit" + } + }, + "required": [ + "value", + "unit" + ], + "additionalProperties": false + }, + "TimeUnit": { + "oneOf": [ + { + "const": "CombatRounds" + }, + { + "const": "Minutes" + }, + { + "const": "Hours" + }, + { + "const": "Days" + }, + { + "const": "Weeks" + }, + { + "const": "Months" + }, + { + "const": "Years" + } + ] } } } diff --git a/src/config/types.ts b/src/config/types.ts index cb9e929f..f6fb950d 100644 --- a/src/config/types.ts +++ b/src/config/types.ts @@ -70,7 +70,7 @@ import * as MusicalInstrument from "../types/equipment/item/MusicalInstrument.js import * as OrienteeringAid from "../types/equipment/item/OrienteeringAid.js" import * as Poison from "../types/equipment/item/Poison.js" import * as RopeOrChain from "../types/equipment/item/RopeOrChain.js" -import * as Stationary from "../types/equipment/item/Stationary.js" +import * as Stationery from "../types/equipment/item/Stationery.js" import * as ThievesTool from "../types/equipment/item/ThievesTool.js" import * as ToolOfTheTrade from "../types/equipment/item/ToolOfTheTrade.js" import * as TravelGearOrTool from "../types/equipment/item/TravelGearOrTool.js" @@ -286,7 +286,7 @@ export type TypeMap = { spellSwordEnchantments: SpellSwordEnchantment.SpellSwordEnchantment staffEnchantments: StaffEnchantment.StaffEnchantment states: State.State - stationary: Stationary.Stationary + stationery: Stationery.Stationery talismans: Talisman.Talisman targetCategories: TargetCategory.TargetCategory thievesTools: ThievesTool.ThievesTool @@ -441,7 +441,7 @@ export const configMap = { spellSwordEnchantments: SpellSwordEnchantment.config, staffEnchantments: StaffEnchantment.config, states: State.config, - stationary: Stationary.config, + stationery: Stationery.config, talismans: Talisman.config, targetCategories: TargetCategory.config, thievesTools: ThievesTool.config, diff --git a/src/types/_Identifier.ts b/src/types/_Identifier.ts index c9d791aa..d05e023d 100644 --- a/src/types/_Identifier.ts +++ b/src/types/_Identifier.ts @@ -1214,6 +1214,40 @@ export type GemOrPreciousStoneIdentifier = { gem_or_precious_stone: number } + +export type HerbIdentifier = { + tag: "Herb" + + /** + * The herb’s identifier. + * @integer + * @minimum 1 + */ + herb: number +} + +export type HerbalAidIdentifier = { + tag: "HerbalAid" + + /** + * The herbal aid’s identifier. + * @integer + * @minimum 1 + */ + herbal_aid: number +} + +export type HerbalPreserveIdentifier = { + tag: "HerbalPreserve" + + /** + * The herbal preserve’s identifier. + * @integer + * @minimum 1 + */ + herbal_preserve: number +} + export type IlluminationLightSourceIdentifier = { tag: "IlluminationLightSource" @@ -1324,15 +1358,15 @@ export type RopeOrChainIdentifier = { rope_or_chain: number } -export type StationaryIdentifier = { - tag: "Stationary" +export type StationeryIdentifier = { + tag: "Stationery" /** - * The stationary’s identifier. + * The stationery’s identifier. * @integer * @minimum 1 */ - stationary: number + stationery: number } export type ThievesToolIdentifier = { diff --git a/src/types/_IdentifierGroup.ts b/src/types/_IdentifierGroup.ts index 8b88c0de..d645de29 100644 --- a/src/types/_IdentifierGroup.ts +++ b/src/types/_IdentifierGroup.ts @@ -242,7 +242,7 @@ export type EquipmentIdentifier = | Identifier.OrienteeringAidIdentifier | Identifier.PoisonIdentifier | Identifier.RopeOrChainIdentifier - | Identifier.StationaryIdentifier + | Identifier.StationeryIdentifier | Identifier.ThievesToolIdentifier | Identifier.ToolOfTheTradeIdentifier | Identifier.TravelGearOrToolIdentifier @@ -261,3 +261,14 @@ type OneNumericIdentifier = number * @minItems 2 */ type ManyNumericIdentifiers = OneNumericIdentifier[] + +export type RecipeIdentifier = + | Identifier.ElixirIdentifier + | Identifier.PoisonIdentifier + | Identifier.HerbalAidIdentifier + | Identifier.HerbalPreserveIdentifier + +export type HerbalAidOrPreserveIdentifier = + | Identifier.HerbalAidIdentifier + | Identifier.HerbalPreserveIdentifier + \ No newline at end of file diff --git a/src/types/_SimpleReferences.ts b/src/types/_SimpleReferences.ts index 3bad257d..9b6839b7 100644 --- a/src/types/_SimpleReferences.ts +++ b/src/types/_SimpleReferences.ts @@ -1,5 +1,5 @@ -import { AdvantageIdentifier, AnimalTypeIdentifier, AnimistTribeIdentifier, ArmorIdentifier, AspectIdentifier, AttributeIdentifier, BlessedTraditionIdentifier, BlessingIdentifier, CantripIdentifier, CeremonyIdentifier, CloseCombatTechniqueIdentifier, CultureIdentifier, CurriculumIdentifier, DisadvantageIdentifier, ElementIdentifier, EyeColorIdentifier, GuidelineIdentifier, HairColorIdentifier, LanguageIdentifier, LiturgicalChantIdentifier, MagicalTraditionIdentifier, PactCategoryIdentifier, PactDomainIdentifier, PatronCategoryIdentifier, PatronIdentifier, PersonalityTraitIdentifier, ProfessionIdentifier, ProfessionVariantIdentifier, PropertyIdentifier, RaceIdentifier, RangedCombatTechniqueIdentifier, RitualIdentifier, ScriptIdentifier, SkillGroupIdentifier, SkillIdentifier, SocialStatusIdentifier, SpellIdentifier, SubjectIdentifier, TargetCategoryIdentifier, WeaponIdentifier } from "./_Identifier.js" -import { CombatTechniqueIdentifier, SpellworkIdentifier, TraditionIdentifier } from "./_IdentifierGroup.js" +import { AdvantageIdentifier, AnimalTypeIdentifier, AnimistTribeIdentifier, ArmorIdentifier, AspectIdentifier, AttributeIdentifier, BlessedTraditionIdentifier, BlessingIdentifier, CantripIdentifier, CeremonyIdentifier, CloseCombatTechniqueIdentifier, CultureIdentifier, CurriculumIdentifier, DisadvantageIdentifier, ElementIdentifier, EyeColorIdentifier, GuidelineIdentifier, HairColorIdentifier, HerbalAidIdentifier, HerbalPreserveIdentifier, HerbIdentifier, LanguageIdentifier, LiturgicalChantIdentifier, MagicalTraditionIdentifier, PactCategoryIdentifier, PactDomainIdentifier, PatronCategoryIdentifier, PatronIdentifier, PersonalityTraitIdentifier, ProfessionIdentifier, ProfessionVariantIdentifier, PropertyIdentifier, RaceIdentifier, RangedCombatTechniqueIdentifier, RitualIdentifier, ScriptIdentifier, SkillGroupIdentifier, SkillIdentifier, SocialStatusIdentifier, SpellIdentifier, SubjectIdentifier, TargetCategoryIdentifier, WeaponIdentifier } from "./_Identifier.js" +import { CombatTechniqueIdentifier, HerbalAidOrPreserveIdentifier, SpellworkIdentifier, TraditionIdentifier, RecipeIdentifier } from "./_IdentifierGroup.js" export type FocusRuleSubjectReference = { id: SubjectIdentifier @@ -176,3 +176,19 @@ export type ArmorReference = { export type TraditionReference = { id: TraditionIdentifier } + +export type RecipeReference = { + id: RecipeIdentifier +} + +export type HerbalAidReference = { + id: HerbalAidIdentifier +} + +export type HerbalPreserveReference = { + id: HerbalPreserveIdentifier +} + +export type HerbReference = { + id: HerbIdentifier +} diff --git a/src/types/equipment/item/Herb.ts b/src/types/equipment/item/Herb.ts new file mode 100644 index 00000000..cd02da5c --- /dev/null +++ b/src/types/equipment/item/Herb.ts @@ -0,0 +1,208 @@ +/** + * @main Herb + */ + +import { TypeConfig } from "../../../typeConfig.js" +import { todo } from "../../../validation/builders/integrity.js" +import { validateEntityFileName } from "../../../validation/builders/naming.js" +import { createSchemaValidator } from "../../../validation/builders/schema.js" +import { getFilenamePrefixAsNumericId } from "../../../validation/filename.js" +import { AlternativeName } from "../../_AlternativeNames.js" +import { LocaleMap } from "../../_LocaleMap.js" +import { NonEmptyMarkdown, NonEmptyString } from "../../_NonEmptyString.js" +import { Errata } from "../../source/_Erratum.js" +import { PublicationRefs } from "../../source/_PublicationRef.js" +import { EffectType, StorageLife } from "./_Herbary.js" +import { RecipeReference } from "../../_SimpleReferences.js" +import { ElixirIdentifier, HerbalAidIdentifier, HerbalPreserveIdentifier, PoisonIdentifier } from "../../_Identifier.js" + +/** + * @title Herb + */ +export type Herb = { + /** + * The herb's identifier. An unique, increasing integer. + * @integer + * @minimum 1 + */ + id: number + + /** + * Effect type(s) of the plant's effect(s) and usage(s). + * @minItems 1 + * @uniqueItems + */ + effect_types: EffectType[] + + /** + * The herb's prevalence per landscape type. + * @minItems 1 + * @uniqueItems + */ + prevalence: LandscapeTypePrevalences[] + + /** + * Modifier for plant lore check when searching for the plant. + * @integer + */ + search_difficulty: number + + /** + * Modifier for plant lore check when identifying the plant. + * @integer + */ + identification_difficulty: number + + /** + * Doses of plant material found with a search check per quality level. + * @minItems 6 + * @maxItems 6 + */ + uses: number[] + + /** + * Value per dose, in silverthalers. + * @float + * @minimum 0 + */ + value: number + + /** + * Price per dose, in silverthalers. + * @float + * @minimum 0 + */ + cost: number + + /** + * The recipes the herb is used in. + * @uniqueItems + */ + recipes?: RecipeReference[] + + /** + * The Storage life of the raw herb. + */ + storage_life: StorageLifeRaw + + /** + * The preservation options and respective storage life. + */ + preservation_methods: PreservationMethod[] + + src: PublicationRefs + + /** + * All translations for the entry, identified by IETF language tag (BCP47). + */ + translations: LocaleMap +} + +/** + * Prevalence and/or conditional prevalence(s) per landscape type. + */ +export type LandscapeTypePrevalences = + | { tag: "PrevalenceFarNorth", prevalence_far_north: LandscapeTypePrevalence[] } + | { tag: "PrevalenceVeld", prevalence_veld: LandscapeTypePrevalence[] } + | { tag: "PrevalenceMarsh", prevalence_marsh: LandscapeTypePrevalence[] } + | { tag: "PrevalenceWoods", prevalence_woods: LandscapeTypePrevalence[] } + | { tag: "PrevalenceRainForest", prevalence_rain_forest: LandscapeTypePrevalence[] } + | { tag: "PrevalenceMountains", prevalence_mountains: LandscapeTypePrevalence[] } + | { tag: "PrevalenceDesert", prevalence_desert: LandscapeTypePrevalence[] } + | { tag: "PrevalenceMaraskan", prevalence_maraskan: LandscapeTypePrevalence[] } + | { tag: "PrevalenceAny", prevalence_any: LandscapeTypePrevalence[] } + +export type LandscapeTypePrevalence = { + /** + * Prevalence class. + */ + prevalence: PrevalenceClass + /** + * Condition or restrictions concerning the prevalence. + */ + condition?: LocaleMap +} + +/** + * Prevalence class from 5 (common) down to 1 (very rare) + */ +export type PrevalenceClass = + | "Common" + | "Occasional" + | "NowAndThen" + | "Rare" + | "VeryRare" + +/** + * The Storage life of a raw herb. + */ +export type StorageLifeRaw = + | { tag: "Default", default: {} } + | { tag: "Custom", custom: StorageLife } + | { tag: "Special", special: LocaleMap } + +/** + * The preservation options of a herb and respective storage life. + */ +export type PreservationMethod = { + method: PreservationMethodDescription + storage_life: StorageLife +} + +/** + * Details on the preservation method of a herb. + */ +export type PreservationMethodDescription = +| HerbalAidIdentifier +| HerbalPreserveIdentifier +| PoisonIdentifier +| ElixirIdentifier +| { tag: "Special", special: LocaleMap } + +export type HerbTranslation = { + /** + * The name of the herb. + */ + name: NonEmptyString + + /** + * A list of alternative names. + * @minItems 1 + */ + alternative_names?: AlternativeName[] + + /** + * The plant's description. + */ + description?: NonEmptyString + + /** + * The raw plant's effect(s) when touched. + */ + effect_touch?: NonEmptyString + + /** + * The raw plant's effect(s) when inhaled. + */ + effect_inhale?: NonEmptyString + + /** + * The raw plant's effect(s) when ingested. + */ + effect_ingest?: NonEmptyString + + /** + * Simple recipes the herb is used in. + */ + simple_recipe?: NonEmptyString[] + + errata?: Errata +} + +export const config: TypeConfig = { + name: "Herb", + id: getFilenamePrefixAsNumericId, + integrityValidator: todo("Herb"), + schemaValidator: createSchemaValidator(import.meta.url), + fileNameValidator: validateEntityFileName, +} diff --git a/src/types/equipment/item/HerbalAid.ts b/src/types/equipment/item/HerbalAid.ts new file mode 100644 index 00000000..f8dac8f1 --- /dev/null +++ b/src/types/equipment/item/HerbalAid.ts @@ -0,0 +1,81 @@ +/** + * @main HerbalAid + */ + +import { TypeConfig } from "../../../typeConfig.js" +import { todo } from "../../../validation/builders/integrity.js" +import { validateEntityFileName } from "../../../validation/builders/naming.js" +import { createSchemaValidator } from "../../../validation/builders/schema.js" +import { getFilenamePrefixAsNumericId } from "../../../validation/filename.js" +import { LocaleMap } from "../../_LocaleMap.js" +import { NonEmptyString } from "../../_NonEmptyString.js" +import { Errata } from "../../source/_Erratum.js" +import { PublicationRefs } from "../../source/_PublicationRef.js" +import { HerbReference } from "../../_SimpleReferences.js" + +/** + * @title HerbalAid + */ +export type HerbalAid = { + /** + * The aid's identifier. An unique, increasing integer. + * @integer + * @minimum 1 + */ + id: number + + /** + * The main ingredient, a herb. + */ + main_ingredient: HerbReference + + /** + * An alternative main ingredient, a herb. + */ + alternative_main_ingredient?: HerbReference + + /** + * Modifier for plant lore check when making the aid. + * @integer + */ + production_difficulty: number + + /** + * All translations for the entry, identified by IETF language tag (BCP47). + */ + translation: LocaleMap + + src: PublicationRefs +} + +export type HerbalAidTranslation = { + /** + * Name of the preservation method. + */ + name: NonEmptyString + /** + * Description of the production method and/or effect. + */ + description: NonEmptyString + + /** + * Ingredients beside the main ingredient. + * @minItems 1 + */ + additional_ingredients?: NonEmptyString[] + + /** + * Tools and aids used in the production process. + */ + typical_tools: NonEmptyString[] + + errata?: Errata +} + +export const config: TypeConfig = { + name: "HerbalAid", + id: getFilenamePrefixAsNumericId, + integrityValidator: todo("HerbalAid"), + schemaValidator: createSchemaValidator(import.meta.url), + fileNameValidator: validateEntityFileName, +} \ No newline at end of file diff --git a/src/types/equipment/item/HerbalPreserve.ts b/src/types/equipment/item/HerbalPreserve.ts new file mode 100644 index 00000000..c0efdd1d --- /dev/null +++ b/src/types/equipment/item/HerbalPreserve.ts @@ -0,0 +1,71 @@ +/** + * @main HerbalPreserve + */ + +import { TypeConfig } from "../../../typeConfig.js" +import { todo } from "../../../validation/builders/integrity.js" +import { validateEntityFileName } from "../../../validation/builders/naming.js" +import { createSchemaValidator } from "../../../validation/builders/schema.js" +import { getFilenamePrefixAsNumericId } from "../../../validation/filename.js" +import { LocaleMap } from "../../_LocaleMap.js" +import { NonEmptyString } from "../../_NonEmptyString.js" +import { Errata } from "../../source/_Erratum.js" +import { PublicationRefs } from "../../source/_PublicationRef.js" +import { StorageLife } from "./_Herbary.js" +import { HerbReference } from "../../_SimpleReferences.js" + +/** + * @title HerbalPreserve + */ +export type HerbalPreserve = { + /** + * The preserve's identifier. An unique, increasing integer. + * @integer + * @minimum 1 + */ + id: number + + /** + * The main ingredient, a herb. + */ + main_ingredient: HerbReference + + /** + * The storage life of the product. + */ + storage_life: StorageLife + + /** + * All translations for the entry, identified by IETF language tag (BCP47). + */ + translation: LocaleMap + + src: PublicationRefs +} + +export type HerbalPreserveTranslation = { + /** + * Name of the preservation method. + */ + name: NonEmptyString + + /** + * Description of the preservation method. + */ + preparation: NonEmptyString + + /** + * Alternative effect of the product. + */ + alternative_effect: NonEmptyString + + errata?: Errata +} + +export const config: TypeConfig = { + name: "HerbalPreserve", + id: getFilenamePrefixAsNumericId, + integrityValidator: todo("HerbalPreserve"), + schemaValidator: createSchemaValidator(import.meta.url), + fileNameValidator: validateEntityFileName, +} \ No newline at end of file diff --git a/src/types/equipment/item/Poison.ts b/src/types/equipment/item/Poison.ts index 9b0ff042..85698b5e 100644 --- a/src/types/equipment/item/Poison.ts +++ b/src/types/equipment/item/Poison.ts @@ -14,7 +14,7 @@ import { LocaleMap } from "../../_LocaleMap.js" import { NonEmptyMarkdown, NonEmptyString } from "../../_NonEmptyString.js" import { Errata } from "../../source/_Erratum.js" import { PublicationRefs } from "../../source/_PublicationRef.js" -import { EffectType, LaboratoryLevel, RecipeTradeSecret } from "./_Herbary.js" +import { EffectType, LaboratoryLevel, RecipeTradeSecret, TimeUnit } from "./_Herbary.js" /** * @title Poison @@ -91,16 +91,14 @@ export type PoisonDuration = export type ConstantPoisonTime = { value: number - unit: PoisonTimeUnit + unit: TimeUnit } export type DiceBasedPoisonTime = { dice: Dice - unit: PoisonTimeUnit + unit: TimeUnit } -export type PoisonTimeUnit = "CombatRounds" | "Minutes" | "Hours" | "Days" - export type IndefinitePoisonTime = { /** * All translations for the entry, identified by IETF language tag (BCP47). diff --git a/src/types/equipment/item/Stationary.ts b/src/types/equipment/item/Stationery.ts similarity index 75% rename from src/types/equipment/item/Stationary.ts rename to src/types/equipment/item/Stationery.ts index 90bc4def..a62c9248 100644 --- a/src/types/equipment/item/Stationary.ts +++ b/src/types/equipment/item/Stationery.ts @@ -1,5 +1,5 @@ /** - * @main Stationary + * @main Stationery */ import { TypeConfig } from "../../../typeConfig.js" @@ -9,12 +9,12 @@ import { createSchemaValidator } from "../../../validation/builders/schema.js" import { getFilenamePrefixAsNumericId } from "../../../validation/filename.js" import { DefaultItem } from "./_Item.js" -export type Stationary = DefaultItem +export type Stationery = DefaultItem -export const config: TypeConfig = { - name: "Stationary", +export const config: TypeConfig = { + name: "Stationery", id: getFilenamePrefixAsNumericId, - integrityValidator: todo("Stationary"), + integrityValidator: todo("Stationery"), schemaValidator: createSchemaValidator(import.meta.url), fileNameValidator: validateEntityFileName, } diff --git a/src/types/equipment/item/_Herbary.ts b/src/types/equipment/item/_Herbary.ts index 35c8ded2..a35738a9 100644 --- a/src/types/equipment/item/_Herbary.ts +++ b/src/types/equipment/item/_Herbary.ts @@ -32,3 +32,24 @@ export type RecipeTradeSecret = { */ prerequisites?: PlainGeneralPrerequisites } + +export type StorageLife = { + /** + * The storage life of a (processed) herb. + * @integer + * @minmum 1 + */ + value: number + unit: TimeUnit +} + +export type TimeUnit = + | "CombatRounds" + | "Minutes" + | "Hours" + | "Days" + | "Weeks" + | "Months" + | "Years" + +