Practice recipes allow practicing skills and proficiencies by working on crafts that are "just for practice", and do not yield a finished result (although they may have some byproducts). They may be designed to focus on specific niche skills or proficiencies, which might be prohibitive to learn from the more productive (and time-consuming) crafting recipes requiring many proficiencies.
The practice recipe JSON format is a form of the "recipe" type, with a few differences noted below. See Recipes section of JSON_INFO for more on recipe fields.
Practice recipes have type "practice", and they cannot define a "result", since they are not
intended to make a specific item. In most other ways, they are just like "recipe" definitions, are
loaded into the main recipe_dictionary
used for crafting, and appear in the crafting UI.
They:
- must define
id
,name
,description
andpractice_data
- must not define a
result
ordifficulty
- may define
byproducts
/byproduct_group
The practice_data
field is required for practice recipes, and must be defined. It is an object
with its own fields, as follows:
min_difficulty
- Lowest skill level when practice recipe can be attempted.max_difficulty
- Highest skill level difficulty you will get credit for when practicing.skill_limit
- Hard cap on highest skill level that can be obtained. Optional, default max skill level (10). This should not be set higher thanmax_difficulty
+ 1.
The difficulty of the recipe will match your current practical skill level if it is between
min_difficulty
and max_difficulty
.
The "category" and "subcategory" fields tell where the recipe should appear in the crafting menu. Use category "CC_PRACTICE" for practice recipes, and set a subcategory like "CSC_TAILORING" to make it appear in the corresponding skill sub-tab.
As with other recipes, the skill_used
and proficiencies
will affect what is learned during
practice crafting, the components
, tools
, and using
fields for ingredients and requirements
work the same way.
For example, here is a recipe for practicing intermediate level computer skill:
[
{
"id": "prac_computer_int",
"type": "practice",
"activity_level": "NO_EXERCISE",
"category": "CC_PRACTICE",
"subcategory": "CSC_PRACTICE_COMPUTERS",
"name": "computer (intermediate)",
"description": "Practice using the command line, writing and running scripts making use of common algorithms and data structures.",
"skill_used": "computer",
"time": "1 h",
"practice_data": { "min_difficulty": 2, "max_difficulty": 4, "skill_limit": 5 },
"autolearn": [ [ "computer", 4 ] ],
"book_learn": [ [ "manual_computers", 2 ], [ "computer_science", 3 ] ],
"tools": [ [ [ "laptop", 50 ] ] ]
}
]
The recipe time
should be set to the standard 1 h
unless there is a compelling reason to do
otherwise. Practice recipes will be easier to balance against one another for skill and proficiency
development if they all adhere to the same standard recipe length.