Difference between revisions of "Modding"

From UnReal World Wiki
Jump to: navigation, search
(Adding Strong and Thin cordage)
([assist] tag added)
 
(3 intermediate revisions by one user not shown)
Line 218: Line 218:
 
: With the [noquality] parameter in the first line of the recipe, all items produced by this recipe will be of decent or unnamed quality, regardless of skill or skill modifier.
 
: With the [noquality] parameter in the first line of the recipe, all items produced by this recipe will be of decent or unnamed quality, regardless of skill or skill modifier.
  
 +
 +
=====<u>'''[assist:value]'''</u>=====
 +
 +
: This tag defines maximum number of companions whose labor input can help to shorten the working time. The value can be 1, 2 or 3. Companions shorten the working time by 10-20% for the first companion and 5-10% per additional effective companion.
 
<center>[[File:seperatoricon.png]]</center>
 
<center>[[File:seperatoricon.png]]</center>
  
Line 286: Line 290:
 
:As a rock object weights 1 pound by default, the following would be seen in your inventory after having done this.
 
:As a rock object weights 1 pound by default, the following would be seen in your inventory after having done this.
 
: [[File:URW_WeightExample.png|frame|left|Consuming part of a full object will leave this meter showing.]] <div style="clear: both"></div>
 
: [[File:URW_WeightExample.png|frame|left|Consuming part of a full object will leave this meter showing.]] <div style="clear: both"></div>
 +
 +
=====<u>'''=length='''</u>=====
 +
 +
:Required length of raw material for crafting can be indicated with a numerical value between equals signs (=). The length unit is foot and value has to be whole number. The tag can be naturally applied only to items that have a length property. For example:
 +
 +
{Birch-bark strip} =5= [remove] 
 +
 +
:This means that 5 feet of birch-bark strips are required, which are then removed in the process.
  
 
=====<u>'''[patchwise]'''</u>=====
 
=====<u>'''[patchwise]'''</u>=====
Line 341: Line 353:
  
 
: In this case, a log must be nearby to craft this recipe but need not be carried.
 
: In this case, a log must be nearby to craft this recipe but need not be carried.
 +
 +
=====<u>'''[nominlen]'''</u>=====
 +
 +
:This tag, which stands for "no minimum length", can be used to indicate that length-based material requirement can be composed of several shorter pieces. For example:
 +
 +
{Cord} =5= [nominlen] [remove]
 +
 +
:This means that 5 feet of cord is required but you can come up with the total length using several shorter pieces. If [nominlen] tag wasn't used here the selected cord would need to be at least 5 feet long.
 +
  
 
=====<u>'''[name: %s]'''</u>=====
 
=====<u>'''[name: %s]'''</u>=====
Line 547: Line 568:
  
 
: Requires a pot and a fire. The final product will be stored in the pot as a liquid.  Any item marked with [boil] or [bake] is limited to the amount the pot can hold. So adding 20lbs of ingredients all marked with the appropriate tags will still result in having a 6lb pot of food.
 
: Requires a pot and a fire. The final product will be stored in the pot as a liquid.  Any item marked with [boil] or [bake] is limited to the amount the pot can hold. So adding 20lbs of ingredients all marked with the appropriate tags will still result in having a 6lb pot of food.
 +
 +
=====<u>'''[ember-roast]'''</u>=====
 +
: Using this tag the associated food item is prepared by the ember-roast method. Glowing embers automatically becomes a requirement when using the tag.
  
 
====<u>'''Food Parameters'''</u>====
 
====<u>'''Food Parameters'''</u>====

Latest revision as of 17:00, 4 August 2024

2010 and patch 3.13 brought an exciting new change to the game: the ability to start adding in our own modifications. The overall ability to mod started out very rudimentary and was largely undocumented, but as time has gone by we have seen steady improvements and additions. This is an attempt to create a complete, readable piece of documentation on modding and how it can be applied, and is intended to be a growing body of work as this amazing aspect of the game continues to grow and be developed.

Moddable Files

Modding in UnReal World is done in a simple text-based format. Moddable text files are saved in the main directory of the game. They are dynamically loaded in by the game, and so can be edited in real time with the game running. This allows you to modify and immediately test your mods without having to restart the game. The syntax is simple and easy to learn. There is no documentation of the syntax in the file itself, but using this guide you will quickly become accustomed to it and become able to write new mods in no time.
What tools do I need to start modding?
As all of the files you'll be modifying are text files, any simple text editor will do the job.
For Windows machines, Notepad++ comes highly recommended, as it has some additional tools to make editing files simpler. On OSX Textedit or Textmate both work well and vim or emacs will work fine on Unix-based systems.
What files will I be working with?
There are two ways to modify UnrealWorld. First, you can modify the pre-existing files in the game directory however you like. Second, you can add new files to the game directory with appropriate names that will be loaded by the game as well as the pre-existing files. When possible, it is best to create new files for a mod, as that helps prevent conflict between different mods being used.
Open up the game directory for UnrealWorld. On Windows, simply open the folder containing the executable file. On OSX, right-click the App icon and select "Show Package Contents", then click on the "Contents" and "Resources" subdirectories.

Root Files:

Within the root directory several text-editable files are found that contain much of the information for the game.  Not all of the game's crafting, cooking, and activities are available in these mod files (some is hard-coded), but quite a lot is.
Core Crafting Recipes
diy_glossary.txt                - Vanilla do-it-yourself recipes     (items)

biy_glossary.txt                - Vanilla build-it-yourself          (constructions) 

cookery_glossary.txt            - Vanilla cooking recipes            (food)

menudef_additional.txt          - Empty file for submenu definitions (menus)
Within the above files are found the moddable vanilla recipes for crafting, building, and cooking food of all types.  You'll note that some actions like smoking meat or peeling bark from a tree, are not found within these files.  Anything not found here is hardcoded in the game and not available for modding. These files will be quite useful as references when you're making your own mods.
Any new text files with the diy_ biy_ cookery_ or menudef_ prefixes placed in the root directory will be loaded in by the game as mods. We'll get into how to create and structure these files later.
Core Plant Files
The definitions of plants within the game are defined in flora_* files, as described below.
flora_berries.txt               - Vanilla berries

flora_cultivated.txt            - Vanilla crops

flora_herbs.txt                 - Vanilla herbs

flora_mushroom.txt              - Vanilla mushrooms

flora_newherbs.txt              - More vanilla herbs
As with crafting recipes, new plants can be added to the game by adding a new text file with the flora_ prefix to the game directory. This will make the plant available to the game but not necessarily spawn it within pre-existing game worlds. Full modding and testing of plant files can be more complex than adding simple recipes and new items. For more details, see Modding Plants.
Encyclopaedia File
The ingame encyclopaedia can be edited. All text is contained in one file:
 GAME.NFO

For more details, see Modding Encyclopaedia. It may be a good idea to add encyclopaedia entries for new and unusual items your mod may be adding to the game to make it easier to use for players.

Seperatoricon.png

Modding Syntax

In this section we'll discuss the syntax for mods and how it's used across the crafting, building, and cooking files.

Basic Crafting Parameters

First, open up diy_glossary in a text file, and take a look at the first item listed:
[SUBMENU_START:weapon]
.Stone-axe. [effort:2] [phys:arms] *COMMON*  /3h/
{Stone} [remove]
{Slender trunk} [remove]
{Rope} [remove]
{Knife}
...
[SUBMENU_END:weapon]
[SUBMENU]
Every crafting option in the game is accessible through a menu.  The [SUBMENU] parameter tells the game where you want this particular set of crafting options to appear.  Multiple items can appear in a single submenu.  In this case, the stone axe should show up in the weapon submenu.
Defining which submenu a crafting option appears in is done with the [SUBMENU_START:"Name"] and [SUBMENU_END:"Name"] flags. Start the submenu, add in all the items you wish to appear in that submenu, then end the submenu. Items can be easily added on to the default submenus: lumber, trapping, transport, utility article, weapon, etc.
[SUBMENU_START:MenuName]
<Modded items>
[SUBMENU_END:MenuName]
Custom Menus
By creating a new menudef_<anyname>.txt file it's possible to add sub-menus to the MAKE and COOKERY menus. Just make a list of submenu headers to create in the new file:
.foundry.       -A- *MAKE*
.linen.         -D- *MAKE*
The name of the new submenu starts the line, beginning and ending with a period '.'
The menu key "-A-" starts and ends with a dash, must be specified, and can be any upper case key that does not conflict with a previously defined submenu.
Finally, the parent menu can be defined as *MAKE* or *COOKERY*, to determine where the new submenu shows up.

Then just place the craftable items in your diy_ or cookery_ files between submenu start and end tags for the according submenuname

[SUBMENU_START:submenuname]
[SUBMENU_END:submenuname]
Seperatoricon.png

First Line Parameters

The first line of each item looks something like

.Stone-axe. [effort:2] [phys:arms] *COMMON*  /3h/
.ItemName.
The first element of the first line determines both the default name of the crafted object and how the crafting option appears in the crafting submenu.
.Stone-axe.
The name needs to begin and end with a period and start the line. If you wish to use a different name for the entry in the crafting submenu and the item name, use the submenu entry name here and the name can be redefined elsewhere.
"Base Item"
This property isn't actually used in the diy_glossary file, but is required for mods. If the item you wish to craft isn't a vanilla item like the Stone-axe, then this will determine what item it inherits all of its item properties from (like weight, price, armor, attack, etc.).  This allows you create a Stone Knife, for instance, that is based upon the basic knife.
.Stone Knife. "Knife"
Any vanilla item can be used, and it needs to begin and end with a double quotation mark ".
Be warned that your new item will appear to the game as both the original base item and the new item. So if you create a .Lump of Iron. item that inherits from "Stone" then that item can be used as both a Lump of Iron or as a Stone --- including, for example, when crafting a Cellar or a Stone-Axe. It's wise to use base items that aren't likely to be used as crafting ingredients. Hunting Horn is a commonly used base item, for example.
[effort: ]
When performing any task in the game, from felling a tree to fishing, there is a section labeled "Effort" under your progress meter. This determines how difficult a task is and how much fatigue you gain while performing it.
There are 6 levels of effort:
0: Easy (Not fatiguing at all)
1: Light
2: Moderate
3: Hard
4: Heavy
5: Very Heavy
.Stone-axe. [effort:2] [phys:arms] *COMMON* /3h/
This parameter must be in lowercase. Simply add [effort:X] to the first line of your item to describe how difficult it is to craft. This parameter is optional, and defaults to easy (no fatigue) if not included.
[phys:]
Some crafting tasks have specific physical requirements of the character. Some must be done standing, or require two hands, etc., and may not be able to be done if the character is injured.
Possible tags for this parameter are:
stance              - be standing
arm                 - one arm from shoulder to hand in usable condition
arms                - both arms from shoulder to hand in usable condition
hand                - one hand (plus forearm and elbow) in usable condition
hands               - both hands (plus forearms and elbows) in usable condition
one-armed           - possible to perform the task with only one arm/hand, but it will be slow and difficult.
In all but the last case, the tag describes the requirements for the task.
To use the parameter, add [phys:X] to the first line of your item, where X is a comma-separated list of appropriate tags.
For example, below is a diy version of a javelin recipe:
.Javelin. [effort:1] [phys:hands,one-armed] *COMMON* /30/ [patch]

This recipe states that ideally both hands will be available for the work, but if necessary the task can be performed one-handed.  It will take longer and have lower chance of success in these instances, but it can be done.

*SKILL*
This parameter indicates what skill is used during the crafting task. This affects the quality of the items produced, the time taken, and allows for training of the skill with this task.
All available skills can be used here, as well as *COMMON*. *COMMON* is simply a default skill that is always at skill 50% and can never be increased. This can make it a good reference skill if other skills don't fit well.
.Stone-axe. [effort:2] [phys:arms] *COMMON* /3h/
To use, add the name of the skill you wish to use in all uppercase, beginning and ending with an asterisk *.
The largest impact of skill is on item quality, where the character skill determines the minimum and maximum quality item it is possible to produce with good quality ingredients and tools. Below 20%, no decent items can be made. Below 40%, no fine items can be made. Below 70%, no masterwork items can be made. At 40% no crude items will be made.


/TimeToMake/
This parameter determines how long it takes to complete a particular recipe.  It can take longer than this if your fatigue level is high, your skill is poor, or your tools are poor.
.Stone-axe. [effort:2] [phys:arms] *COMMON* /3h/
This is optional component, and defaults to 15 minutes if not included.  The number is normally read in minutes, but h or d after the number can be included to read in hours or days.
\TimeToComplete\
While /5/ determines how long it takes to actually create the item, \ \ determines how long it must sit after crafting has finished to be ready.  So in the below example, it takes 2 hours to create Charcoal, and another 4 hours after that (during which my character can go do other things) for the item to be ready.  
.Charcoal. [effort:2] [phys:stance,arms] *TIMBERCRAFT* /2h/ \4h\
By including this value the item will sit on the ground where the recipe was completed until it is done.  This is often included in *COOKERY* recipes, but is also familiar from tanning hides.
|Skill Advance|
This parameter indicates how likely a skill increase check is made for the skill used when crafting the item. The lower the number, the less likely you are to be able to increase your skill with this recipe.
.Birch-bark box. [effort:2] [phys:arms] *TIMBERCRAFT* /3h/ |-2|
This parameter defaults to 0, but can range over -2, -1, 0, 1, and 2. Commonly used for simple items to make it difficult to use them to grind up skills.
%SkillModifier%
This value impacts how likely you are to get high quality results from crafting. This can be anywhere between -100 and 100 and acts as a modifier to the skill in question when the recipe is used.
.Stone-axe. [effort:2] [phys:arms] *COMMON* /3h/ %20%
In this case, COMMON is always 50%, so the modified skill value is 70%. This then increases the likelihood of getting the best possible results (i.e., fine).
It is important to note that the skill modifier is only one part of a recipe, and even a recipe that reduces the modified skill to 0% can still regularly get decent or fine quality items if the materials are good and the character's base skill is high.


(NumberProduced)
A number in parentheses in this section indicates how many of the item will be produced per completed recipe. This means that with the resources listed in the recipe, you will wind up with this many items.  This is one of two ways to use a recipe to produce multiple objects, the other is [patch:]
.Stone-axe. (2) *COMMON* /3h/  %20%


[patch:]
This parameter gives you the ability to make a varying amount of the recipe in a single go, and defines the maximum number of items which can be created at one time. The first place many encounter this is in *COOKERY*, where you can set up to 10 items to roast at once over a fire. Unlike with (NumberProduced), the number used for [patch:] acts as a multiplier to both the items used for the recipe (if marked as [patchwise]) and the /TimeToMake/.  If included without a number as [patch], it defaults to 10.


[noquality]
With the [noquality] parameter in the first line of the recipe, all items produced by this recipe will be of decent or unnamed quality, regardless of skill or skill modifier.


[assist:value]
This tag defines maximum number of companions whose labor input can help to shorten the working time. The value can be 1, 2 or 3. Companions shorten the working time by 10-20% for the first companion and 5-10% per additional effective companion.
Seperatoricon.png

Ingredients and Related Modifiers

Now that you've finished all the first line parameters, describing the item and the parameters of making it, it's time to move on to describing the ingredients, and how they're handled in the recipe.  This section will describe what tools and resources are required, and what happens to them during crafting.  It is important to note that both tools and resources are treated as ingredients and can, if you choose, be consumed in the process.
{item}
This parameter can occur multiple times following the first line of the recipe, and indicates an ingredient, tool, or other requirement for the recipe.
Let's refer back to our example.
{Stone} [remove]
{Slender trunk} [remove]
{Rope} [remove]
{Knife} <Broad Knife>
Each of these lines describes an item required in the creation of our modded object. In this case, the vanilla stone-axe. The first line says we need a stone, and that that stone will be consumed by the recipe.  The first three lines are essentially the same, indicating that a stone, a slender trunk, and a rope will all be required, and all of them will be consumed.  The last line indicates that you must also have any knife available, with the broad knife preferred. As it doesn't have the [remove] parameter, the knife will remain after you finish crafting your new axe.
Any item name in the game can be used here --- including the names of new items you have modded into the game. There are also several special general names that can be found in the Reference section at the bottom of this document.
Wildcards
Sometimes you want to allow multiple types of items to be used in a recipe but there's no predefined general name for what you want. To do this, you can use a wildcard *, such as in the following example:
{* leather} [remove] #2.0#


The * will permit any item whose name ends in "leather" to be used in the recipe.  As this requires 2.0 lbs of leather, multiple different leather items can be combined as ingredients here.
<Preferred Item>
Sometimes you may want to allow a job to be performed with many types of tools, but to prefer a particular type.  In the event that the proper tool isn't available, another tool will stand in, but it will take longer to accomplish.
Referencing our example again, the last item listed is the tool knife.
{Knife} <Broad Knife>
In this example any knife would be able to get the job done, but a broad knife would make the job go faster. Using a different type of knife may also lower the quality of the item.
There are only a couple of places where this can be done; wildcards cannot be used to define this. In particular, cutting weapons, axes, knives, and shovels can all have a preferred tool set for them.
[remove]
{Stone} [remove]
This parameter indicates that the resource in question will be removed from your inventory upon completion of the recipe. That's pretty much all there is to it. Remember that {item} can be a tool as well as a resource, so it isn't always appropriate to remove an ingredient in your recipe.
(NumberRequired)
When included in the ingredient section after an item, a number in ()'s indicates the number of this item required to perform the task.  For instance:
{Stone} (2) [remove]
Will require two stones in your inventory, both of which will be removed, to complete the recipe.  This is one of the main ways to indicate multiple items being required in a recipe.


Seperatoricon.png
#weight#
This parameter contains a numerical value that can be either a whole number, or a decimal.  (%5% vs %.05%)  While it appears that any number of decimal places can be used, it will round up or down to two decimal places.
It is possible to require a certain amount of a resource WITHOUT it being consumed, so the below example would require .5 pounds of rock to use the recipe, but the rock would remain after.
{Rock} #.5#
While the below would remove .5 pounds of rock from your inventory.
{Rock} #.5# [remove]
As a rock object weights 1 pound by default, the following would be seen in your inventory after having done this.
Consuming part of a full object will leave this meter showing.
=length=
Required length of raw material for crafting can be indicated with a numerical value between equals signs (=). The length unit is foot and value has to be whole number. The tag can be naturally applied only to items that have a length property. For example:
{Birch-bark strip} =5= [remove]  
This means that 5 feet of birch-bark strips are required, which are then removed in the process.
[patchwise]
Patchwise on ingredients is used when patch is set in the first line of the recipe.  It flags an ingredient as being required for each output item produced, rather than only once for the recipe as a whole. Thus if you have a [patch:10] recipe that takes .5 lbs of rock, without [patchwise] it will always take .5 lbs of rock. With [patchwise] it will take .5 lbs for every item you make, up to the max of 5 lbs when you make 10 items.
{Rock} #.5# [remove] [patchwise]
[yield:num]
The [yield:num] tag is used to specify for how many produced items the single raw material entry is enough for, i.e. how many finished items it can yield. The tag is used for making blunt arrows as follows:
{Slender trunk} [yield:3] 
This means one slender tree trunk can yield three produced items ie. blunt arrows. So, for example to craft six blunt arrows you would need 2 trunks. Crafting 7-9 blunt arrows you would need 3 trunks, and so on.


[optional]
This parameter describes ingredients that may or may not be used when crafting the item. Most commonly used in cooking recipes, where ingredients may be optionally used that increase the nutritiousness of the produced dish.  In the below example, the seasoning doesn't have to be included in the mix, but will add its nutrition if it is.
.Flatbread. (5) *COOKERY* /45/ %30% |-1|
{Flour}     #0.5#   [remove] [roast] [name]
{Water}     #0.25#  [remove] 
{Seasoning} #0.15#  [remove] [roast] [optional]
[noquality]
The [noquality] parameter can also be used with ingredients, where it prevents the ingredients from affecting the quality of the item being produced. For example in the vanilla arrow recipe
.Arrow. [effort:1] [phys:hands,one-armed]  	*CARPENTRY*        /30/    [patch:5]
{Branch}   [remove] [patchwise] [noquality]
{Knife}
{Feather} (3) [remove] [patchwise] [noquality]
{Tying equipment} [remove] [patchwise] 
{Rock} [remove] [patchwise] [noquality]
We can see that {Branch}, {Feather}, and {Rock} all have the [noquality] tag, because none of them have qualities in the normal game. This means that the final quality of the arrow produced is based only on carpentry skill, the tying equipment quality, and the knife quality.
[wearpct:num] and [nowear]
The [wearpct:num] and [nowear] parameters were added in v3.83 and are used to describe the wear on the tools' haft durability used for a crafting operation. [wearpct:num] specifies custom wear out percentage rate (1-100) in relation to the highest rate (100) where tool is used intensely during the whole task, while the [nowear] tag means that the used tool doesn't wear out at all. These modifiers apply to all haftable items: Axes, Spears and Iron shovels, as of 3.84. See these examples:
{Axe} <Carving axe> [nowear] 
Here an axe is needed, preferably a carving axe, and it doesn't wear out at all in the said crafting/building task.
{Cutting_weapon} <Axe> [wearpct:25]
Here a cutting weapon, preferably an axe, is needed. It wears out in 25% rate compared to the continuous intense axe work. Maybe the axe is needed only 25% of the time in this crafting/building task.
[ground]
This parameter indicates that an ingredient or a tool may be used for the recipe when it's on the ground next to the character rather than only in the character's inventory. Commonly used for heavy items (like logs and tree trunks) or tools. For example:
.Bow Stave. "Board" *CARPENTRY* %-10% /3h/ 
{Log} [remove] [ground]
{Axe} <Woodsman's Axe>
In this case, a log must be nearby to craft this recipe but need not be carried.
[nominlen]
This tag, which stands for "no minimum length", can be used to indicate that length-based material requirement can be composed of several shorter pieces. For example:
{Cord} =5= [nominlen] [remove] 
This means that 5 feet of cord is required but you can come up with the total length using several shorter pieces. If [nominlen] tag wasn't used here the selected cord would need to be at least 5 feet long.


[name: %s]
This parameter overrides the default name given, allowing you to produce custom-named items based on the ingredients used to craft the item. In the below recipe, if you use cranberries as the berry ingredient, the result will be called 'Cranberry porridge', rather than 'berry porridge'
.Berry porridge. *COOKERY* /15/   \90\  %50% |-1|
{Berries}  #1#     [remove] [boil] [name:%s porridge]
{Water} #0.5#   [remove] 
{Flour}  #0.1#   [remove] [boil] [optional]
The %s can appear anywhere in the name, and it will produce the same results. So 
[name: This %s Thing] = This Cranberry Thing
[name: Thing %s]      = Thing Cranberry
[name: %s Thing]      = Cranberry Thing
This takes the name of the item used, such as "Cranberry" above, and plugs it in for the %s. Note that %s can be only used once.
If multiple ingredients are used as input, then "Mixed" becomes the name used.
[naming: ]
This parameter can only be used with the [name] parameter, and affects how the final item name is determined. There are two options for this parameter:
[naming:last word] - %s will get value of the last word of selected material/item name 
[naming:original]  - %s will get value of original and complete selected material/item name
For example,
{* leggings} [name:Modded %s] [naming:last word]
will produce an item called "Modded leggings", while
{* leggings} [name:Modded %s] [naming:original]
will produce an item such as "Modded leather leggings" if crafted with leather leggings. Similarly,
{Leather *} [name:Modded %s] [naming:last word]
if crafted using a leather shirt, would create an item called "Modded shirt".

Terrain and Tile Requirements

It's possible to add requirements about the kind of terrain and nearby tiles that would make sense for a particular recipe.

{[TERRAIN: ]}
Sometimes you want a particular recipe to only be applicable when the character is in a particular kind terrain.  In the example below, quartz is only available from river beds.
.Quartz. "Rock" *COMMON* /30/ %-30%  
{[TERRAIN:river]}
With the {[TERRAIN: } parameter, this recipe will only be able to be used if the character is in a river terrain.  Trying it anywhere else will give the message "The setting you are at now doesn't meet the requirements!"
Multiple TERRAINS can be specified in this parameter, separated by spaces.  In the following example Quartz can be found in both river and mountain terrain.
.Quartz. "Rock" *COMMON* /30/ %-30% 
{[TERRAIN:river mountain]}
This includes the terrain as a necessary 'ingredient' in the recipe.  But it will show up in your list of ingredients as [TERRAIN: river mountain] which isn't very attractive.  We'll address this further in +'descriptive text'.
A list of possible terrain types can be found in the Reference section of this document.
{[NEARBY_TILE]}
Not every tile in a local map is a river tile; it includes the shore and some of the surrounding terrain as well.  If you want to ensure that the character is both in a river terrain and next to water, you'll need to add the {[NEARBY_TILE]} parameter.
.Quartz. "Rock" *COMMON* /30/ %-30% 
{[TERRAIN:river]}
{[NEARBY_TILE:water]}
Now the character needs to be in a river terrain and standing next to or in a water tile to use the recipe. There are many times when this may be appropriate, such as when you want to specify that a character must be next to a natural water tile to soak leather or sticks for some purpose, or if you need to be near a particular kind of tree for some timbercraft purpose.
{[TILE]}
{[TILE]} is used just like {[NEARBY_TILE]} except that it requires the character to be directly on the tile in question instead of only nearby. Make sure you don't use it with tiles that the character can't enter!
+'descriptive text'
The TERRAIN: and NEARBY_TERRAIN: parameters seen without +'descriptive text'
When putting together a recipe, such as the above one involving quartz, you may want to change the description of the components to add immersion or make it less ugly.
The +'descriptive text' parameter allows you to set alternative descriptions of a particular requirement or ingredient in the crafting screen.
.Quartz. "Rock" *COMMON* /30/ %-30% 
{[TERRAIN:river]}
{[NEARBY_TILE:water]}


In this example, [TERRAIN:river] will show up as one of the requirements for the recipe, as will [NEARBY_TILE:water], as seen in the image above.  To prevent this, we can use the +'descriptive text' parameter.
With +'descriptive text'
.Quartz. "Rock" *COMMON* /30/ %-30% 
{[TERRAIN:river]} +'Be near a river'
{[NEARBY_TILE:water]} +'Be by the water'
This parameter can also be used with regular ingredients to add more of a description.
If the plus is inside the quotes, as in '+descriptive text', the text will be added right after the ingredient text. Otherwise, it will substitute the entire ingredient entry (except for the quantity) as in the example above.

Item Property Parameters

Several parameters can be used not just to define the recipe, but instead to adjust the properties of the crafted item. The default properties are inherited from the base item used for the recipe.
These parameters are all used one per line after the ingredients list.
General Parameters

[NAME: ]

This parameter allows redefining the name of the item produced. Preferable to the [name: ] parameter on an ingredient because it's less buggy. For example:
.Mine stone. 'Stone' *COMMON* /15/
{[NEARBY_TILE:Big rock]} +'A rock to quarry'
[NAME:Stone]

[TILEGFX:]

Use a new tile for the item. Should be the name of the graphic file without the filename extension. File must be in the truetile folder. For more information, see Modding Graphics.

[TYPE:]

Define the type of the item. Mostly determines what section of inventory it can be found in. Can be any of
weapon / armour / tool / container / skin / food / timber / vehicle / plant / valuable

[WEIGHT:]

The weight of the item in pounds (by default), or in grams if the value is followed by a g abbreviation.

[LENGTH:]

The item length in feet. It's usage is intended for specifying length for modded ropes and cords so be sure to use it within proper item type context. Must be an integer (no fractions allowed).

[PRICE:]

The trading value of the item in squirrel hides per item (default) or per lb if the value is followed by 'per lb'.

[MATERIAL:]

The raw material the item is made of. Can be any of
wood / iron / leather / fur / birch-bark / cloth / wool / rock / bone / antler

[CONT_CAPACITY:]

For containers, the capacity of the container in pounds.
Weapon Parameters

[SKILL:]

The skill associated with the weapon. Can be any of the weapon skills:
unarmed / knife / sword / axe / spear / club / bow / crossbow / flail / shield

[*_ATTACK:]

There are three damage parameters that can be set for a weapon, each on its own line: [POINT_ATTACK:], [EDGE_ATTACK:], and [BLUNT_ATTACK:]. They can be any integer between 0 and 9, or a dash -, in which case that type of attack is not allowed with the weapon.

[1H_PENALTY:]

The skill penalty associated with using this weapon one-handed. Can be any integer between 0 and 50.

[AD_CLASS:]

The attack and defense bonuses for the weapon. Two values between 0 and 6, separated by a /. First value is the attack bonus, second is the defense bonus. Default is 0/0 (i.e., no bonuses).
Armour Parameters

[ARMOUR_MATERIAL:]

The material the armour is made of. This defines the protection values for the armour. Can be any of:
lamellar / iron / mail / leather / fur / cloth / wool / birch-bark

[ARMOUR_COVERAGE:]

The parts of the body the armour protects. Can be defined either using some predefined coverage categories:
cloak / hauberk / long_hauberk / habergeon / cuirass / overcoat / 
greaves / rerebraces / vambraces / shirt / short_shirt / long_shirt / trousers / tunic
Or with a space-separated list of bodypart values:
skull / face / neck / shoulder / upper_arm / elbow / forearm / hand / 
thorax / abdomen / hip / groin / thigh / knee / calf / foot

Cookery Specific Parameters

One of the primary differences between crafting recipes and cookery recipes, is that the items produced by the cooking recipe can spoil.  Some of the above parameters have slight differences in meaning, but are essentially applied the same way.
\TimeToCook\
This parameter functions exactly like \TimeToComplete\ listed above, with one important exception.  If the time indicated passes, the object will continue to cook.  This will result in the item burning, and the quality of the item progressively getting worse until it becomes 'spoiled'.  Not all recipes have a \TimeToCook\, and are complete as soon as the /TimeToMake/ is up, such as with the .Flatbread. recipe listed below.

Cooking Parameters

Note that any item not marked with a [roast], [boil], or [bake] tag will NOT contribute their weight and nutrition to the final product. All food ingredients need to be marked with one of these three tags.
[roast]
If any ingredient is marked with this tag, you need to be next to a fire or fireplace with embers.
[bake]
Requires a pot and a "heated room". i.e. a fireplace with embers. The final product will be stored in the pot as a liquid.
[boil]
Requires a pot and a fire. The final product will be stored in the pot as a liquid.  Any item marked with [boil] or [bake] is limited to the amount the pot can hold. So adding 20lbs of ingredients all marked with the appropriate tags will still result in having a 6lb pot of food.
[ember-roast]
Using this tag the associated food item is prepared by the ember-roast method. Glowing embers automatically becomes a requirement when using the tag.

Food Parameters

Default food parameters can be overridden as described above (e.g., [NAME:] and [TILEGFX:]) but there are some additional parameters which apply only to food.

[COOK_WEIGHT_DIV:]

The total weight of the finished food is divided by this number. Used for drying or compressing food into a smaller quantity.

[SPOILAGE_DAYS:]

The number of days until the food spoils. If set to 0, the food never spoils. Maximum value 253.

[CARB:] [FAT:] [PROTEIN:] [WATER:]

The nutritional content of the produced food. Each is given as the percent of the total weight for carbohydrates (~4 calories per gram), fat (~9 calories per gram), protein (~4 calories per gram) and water (no calories, but quenches thirst). Maximum of any is 99, make sure their sum doesn't go over 100.
Seperatoricon.png

Reference

Menu List

Seperatoricon.png

Item List

This is a starting list of items that can be used as parts of a recipe.  It is definitely incomplete, but it is relatively safe to assume that any object in the game can be used as part of a recipe, though it may yield unexpected results.  This list will be expanded as appropriate.


List of Items usable in {item} (Likely Incomplete)

Animal Hide Leather Raw meat or fish
Cooking pot Heated Fireplace Threshing Tool
Flail Beater Root vegetables
Vegetables Grinding Stone Berries
Seeds Grains Container
Water Raw ingredients Flour
Raw meat Raw Fish Fire
Cutting Weapon or by hand Tying Equipment Axe
Knife Cutting Weapon Cloth
Mushrooms Flowers Herbs
Seasoning Shovel Cover for kota
Tanning material Heated Fireplace Hammering tool
Axe or carving knife Strong cordage Thin cordage
Seperatoricon.png

Tile List

A rather comprehensive list of valid values for use in the {[TILE:]} and {[NEARBY_TILE:]} parameters. 

List of Valid Values for {[TILE:]} or {[NEARBY_TILE:]}

Water Ground Ford Lichenous Pine Forest
River Rapids Sea Grove
Shutter Big Rock Fence Heathland
Road Cave Fireplace Young Pine
Sleeping Bunk Open door Bench Pine
Camp Shelter Spruce Spruce mire
Birch Inside of a Kota Framework Thicket
Kota doorway Rowan Alder Cellar
Hole in the Ground Young Spruce Coniferous Forest Prepared Soil
Settlement Armory Weaponsmith Food Storehouse
Fish Storehouse Fishing Shed Bowyer Hideworker
Granary Goods Shed Metalsmith North-west corner of a Kota
Mountain Southern Wall Northern Wall North-east corner of a kota
Hill Pine mire South-west corner South-west corner of a kota
Open mire Bushes North-west corner South-east corner of a kota
Village Fortified Village Eastern wall Northern wall of a kota
Table Field Western Wall Southern wall of a kota
Pasture Door North-east corner Eastern wall of a kota
Surface of the Earth Inside of a building South-east corner Western wall of a kota
Cave Floor High Cliff
Seperatoricon.png

Terrain List

This is a list of values that are valid in the {[TERRAIN: ]} parameter.  Some of the types apply to multiple terrains, and we have incomplete information on those.  The values on the left are word of Sami Please check {[TERRAIN:cave]} seems to work properly in v3.19.

Valid {[TERRAIN: ]} Values Applies to Terrain types
barren
lake
pond
river
dryish
dry
fresh
grove
open_mire
spruce_mire

pine_mire

wetland
settlement

meadow

clearing
field
cliff
mountain
Seperatoricon.png

Quick and Dirty Tutorials

A simple mining widget.

Open or create menudef_name.txt file and add:

.mining. -A- *MAKE*
Where .mining. is the new menu to add to the Make menu.
-A- or any letter that is not in use on the Make menu, this is the quick key for the menu.
This sets *MAKE* to be the parent menu.

Open or edit diy_name.txt and add:

[SUBMENU_START:mining]
.Miner Pick. "Wooden shovel" [effort:2] *COMMON* /30/
.Mine Ore. "Stone" [effort:3] [phys:stance,arms,hands] *COMMON* /2h/
{[TERRAIN:cave]} 'You need find a cave'
{[NEARBY_TILE:Cave floor]} 'Get underground to dig'
{[NEARBY_TILE:High cliff]} 'Find vein in cave wall'
{Miner Pick} <Miner pick> 'A miner pick for digging'
[SUBMENU_END:mining]
[SUBMENU_START:mining] marks the start of the items that will appear on the "mining" menu.
.Miner Pick. creates an item named "Miner pick" with an item type of "Wooden shovel" (appears as shovel on ground).
The effort is moderate (2) to make the pick. *the skill applied to make the pick is Common.
The pick will take 30 minutes to make. I have not filled in needed items or tools to make the pick.
.Mine Ore. creates an item named "Mine Ore" with an item type of "Stone" (appears as stone on ground).
The effort to mine one ore hard (3). Physical [phys:] needs standing position and both arms and hands to do without penalty.
The skill applied to the task is Common. The task will take 2 hrs.
The Terrain and nearby tile tags mean you must be in cave terrain, inside the actual cave and against a wall to mine.