v50 Steam/Premium information for editors
- v50 information can now be added to pages in the main namespace. v0.47 information can still be found in the DF2014 namespace. See here for more details on the new versioning policy.
- Use this page to report any issues related to the migration.
This notice may be cached—the current version can be found here.
Editing Reaction
Jump to navigation
Jump to search
Warning: You are not logged in.
Your IP address will be recorded in this page's edit history.
If you are creating a redirect to the current version's page, do not use any namespace. For example: use #REDIRECT [[Cat]], not #REDIRECT [[Main:Cat]] or #REDIRECT [[cv:Cat]]. See DF:Versions for more information.
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
− | {{Quality|Superior}} | + | {{Quality|Superior|19:56, 28 August 2013 (UTC)}} |
{{av}} | {{av}} | ||
− | |||
− | + | Reactions are modular, editable formulas that take specific ingredients, or reagents, and use them to produce a desired item. A lot of reactions are hardcoded—building beds or creating glass, for example—but a few are freely editable, and it's (sometimes) quite simple to add additional ones. There is a separate page with custom [[reaction examples]]. | |
== Reaction differences between modes == | == Reaction differences between modes == | ||
− | |||
In [[fortress mode]], reactions are linked to specific buildings, and must be added to a civilization's [[entity token|entity file]] to be usable by that civilization. This has the useful effect of limiting new items and materials (such as special [[wood]] or [[metal]]) to civilizations that have the requisite reaction — so that if you give your custom civilization a reaction to produce "star metal" or some other custom material, only they will be able to use it. | In [[fortress mode]], reactions are linked to specific buildings, and must be added to a civilization's [[entity token|entity file]] to be usable by that civilization. This has the useful effect of limiting new items and materials (such as special [[wood]] or [[metal]]) to civilizations that have the requisite reaction — so that if you give your custom civilization a reaction to produce "star metal" or some other custom material, only they will be able to use it. | ||
Line 13: | Line 11: | ||
== Anatomy of a reaction == | == Anatomy of a reaction == | ||
− | |||
− | + | Reactions are found within reaction_x files (such as reaction_smelter or reaction_other). Generally speaking they adhere to the following structure: | |
[REACTION:<identifier>] | [REACTION:<identifier>] | ||
Line 24: | Line 21: | ||
[FUEL] | [FUEL] | ||
[SKILL:<SKILL TOKEN>] | [SKILL:<SKILL TOKEN>] | ||
− | |||
[AUTOMATIC] | [AUTOMATIC] | ||
[ADVENTURE_MODE_ENABLED] | [ADVENTURE_MODE_ENABLED] | ||
− | |||
− | |||
* ''[[#Reaction identifier|identifier]]'': The internal ID of the reaction. | * ''[[#Reaction identifier|identifier]]'': The internal ID of the reaction. | ||
* ''[[#Reaction name|name]]'': The name of the reaction, visible to the player in the Fortress mode or Adventure mode menus. | * ''[[#Reaction name|name]]'': The name of the reaction, visible to the player in the Fortress mode or Adventure mode menus. | ||
Line 34: | Line 28: | ||
* ''[[#Reagents|...reagents...]]'': Zero or more reagents (ingredients) that are required to be in stock for the reaction to be possible. | * ''[[#Reagents|...reagents...]]'': Zero or more reagents (ingredients) that are required to be in stock for the reaction to be possible. | ||
* ''[[#Products|...products...]]'': Zero or more products that are created from the reaction. | * ''[[#Products|...products...]]'': Zero or more products that are created from the reaction. | ||
− | * ''[[# | + | * ''[[#fuel|fuel]]'': (optional) If present, the reaction requires charcoal, coke or a magma-powered workshop. |
− | * ''[[# | + | * ''[[#skill|skill]]'': (optional) The skill required and trained by the reaction. |
− | * ''[[# | + | * ''[[#automatic|automatic]]'': (optional) If present, the reaction will automatically be enqueued whenever it can possibly be performed. |
− | + | * ''[[#adventure mode|adventure mode]]'': (optional) If present, the reaction is used by the player in Adventure mode instead. | |
− | * ''[[# | ||
− | |||
=== Reaction identifier === | === Reaction identifier === | ||
− | |||
− | |||
− | The | + | The reaction identifier may be anything, so long as it is unique within the raw data files. A good habit to get into is to append a short prefix or suffix to each name related to the name of your mod, to ensure nobody else is going to make an identical reaction and thereby mess up the game if their mod is run alongside yours. |
=== Reaction name === | === Reaction name === | ||
− | |||
− | |||
− | + | This can be anything at all, and is usually used to describe the reaction. '''Tan a hide''', for example, is the name of the default leather-producing reaction. Generally this should be written as a small descriptive verb phrase, with the first letter capitalized, for consistency with the existing reactions. | |
− | This can be anything at all, and is | ||
=== Building === | === Building === | ||
− | |||
− | [BUILDING:< | + | [BUILDING:<BUILDING NAME>:<BUILDING KEY>] |
− | * | + | * ''name'': The ID (that is the internal TOKEN each building can be referred to into reactions) of the building where this reaction will appear in the tasks menu. |
− | * | + | * ''key'': The keyboard shortcut used to queue up the reaction. |
− | + | The BUILDING NAME is the name of the building that will house this reaction, and the building key is the keyboard shortcut that will queue up the reaction. If two reactions have the same key, then one of them will be assigned a different key, the first alphabetically available at the building. | |
− | |||
− | + | Valid buildings TOKENS are as follows: | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* KILN - [[Kiln]] and [[Magma kiln]] | * KILN - [[Kiln]] and [[Magma kiln]] | ||
+ | * SMELTER - [[Smelter]] and [[Magma smelter]] | ||
+ | * TANNER - [[Tanner's shop]] | ||
* KITCHEN - [[Kitchen]] | * KITCHEN - [[Kitchen]] | ||
− | * | + | * QUERN - [[Quern]] |
− | |||
− | |||
* MILLSTONE - [[Millstone]] | * MILLSTONE - [[Millstone]] | ||
− | |||
− | |||
− | |||
* STILL - [[Still]] | * STILL - [[Still]] | ||
− | * | + | * FARMER - [[Farmer's workshop]] |
− | * WOOD - [[Wood furnace]] | + | * CRAFTSMAN - [[Craftsdwarf's workshop]] |
− | * Any custom (raw-defined) building, such as: | + | * GLASS{{version|0.42.01}} - [[Glass furnace]] |
+ | * WOOD{{version|0.42.01}} - [[Wood furnace]] | ||
+ | * MASON{{version|0.42.01}} - [[Mason's workshop]] | ||
+ | * ASHERY{{version|0.42.01}} - [[Ashery]] | ||
+ | * LEATHER{{version|0.42.01}} - [[Leather works]] | ||
+ | * BOWYER{{version|0.42.01}} - [[Bowyer's workshop]] | ||
+ | * SIEGE{{version|0.42.01}} - [[Siege workshop]] | ||
+ | * CLOTHES{{version|0.42.01}} - [[Clothier's shop]] | ||
+ | * METALSMITH{{version|0.42.01}} - [[Metalsmith's forge]] | ||
+ | * CARPENTER{{version|0.42.01}} - [[Carpenter's workshop]] | ||
+ | * Any custom (raw-defined) building type, such as: | ||
** SOAP_MAKER - [[Soap maker's workshop]] | ** SOAP_MAKER - [[Soap maker's workshop]] | ||
** SCREW_PRESS - [[Screw press]] | ** SCREW_PRESS - [[Screw press]] | ||
− | + | Specifying multiple BUILDING tokens will cause the reaction to be available at all of the specified buildings. | |
− | |||
− | ==== | + | === Category === |
− | |||
− | + | {{new in v0.42}} | |
Categories are custom submenus for buildings' reaction menus. A reaction doesn't require a category, but if you have a lot of reactions, categories can be invaluable for organizing and presenting those reactions to players. | Categories are custom submenus for buildings' reaction menus. A reaction doesn't require a category, but if you have a lot of reactions, categories can be invaluable for organizing and presenting those reactions to players. | ||
Categories can be nested indefinitely—you can have a category within a category within a category within a category within a category within... but as a practical matter, nesting categories more than 2 deep is not recommended. | Categories can be nested indefinitely—you can have a category within a category within a category within a category within a category within... but as a practical matter, nesting categories more than 2 deep is not recommended. | ||
− | |||
− | |||
Categories currently have no effect on adventure mode reactions. | Categories currently have no effect on adventure mode reactions. | ||
Line 113: | Line 95: | ||
! Description | ! Description | ||
|- | |- | ||
− | + | | CATEGORY || Category ID || The category ID is a unique identifier for the category. It is only used in the raws, and will not appear in the game. | |
If you're defining multiple categories within the same reaction - for example, if you intend the reaction to be nested two deep, and haven't yet defined the super-category - the ''last'' CATEGORY token within the reaction definition is the one that the reaction will appear in. | If you're defining multiple categories within the same reaction - for example, if you intend the reaction to be nested two deep, and haven't yet defined the super-category - the ''last'' CATEGORY token within the reaction definition is the one that the reaction will appear in. | ||
|- | |- | ||
− | + | | CATEGORY_NAME || String || The name of the category as displayed in-game. | |
|- | |- | ||
− | + | | CATEGORY_DESCRIPTION || String || Optional. If present, when the category is highlighted in a building menu, this string will be displayed in the Helpful Hint box. | |
|- | |- | ||
− | + | | CATEGORY_PARENT || Category ID || Optional. If present, this category will be a submenu of the indicated category, rather than a submenu of the reaction's building. | |
|- | |- | ||
− | + | | CATEGORY_KEY || [[interface.txt|Hotkey token]] || Optional. If present, this category can be selected from its parent menu (whether a building or a parent category) using the given hotkey. | |
|} | |} | ||
Line 137: | Line 119: | ||
[REAGENT:<name>:<quantity>:<item token>:<material token>][...modifiers...] | [REAGENT:<name>:<quantity>:<item token>:<material token>][...modifiers...] | ||
− | * ''[[# | + | * ''[[#name|name]]'': The name of the reagent, local to the reaction. |
− | * ''[[# | + | * ''[[#quantity|quantity]]'': The amount of the item that will be used in the reaction. |
− | * ''[[# | + | * ''[[#item_token|item token]]'': The type (and subtype) of the item you require. |
− | * ''[[# | + | * ''[[#material_token|material token]]'': The material the item should be made of. |
* ''[[#Modifiers|...modifiers...]]'': Zero or more tokens which further clarify the acceptable types when the item type and material types are insufficient to distinguish them. | * ''[[#Modifiers|...modifiers...]]'': Zero or more tokens which further clarify the acceptable types when the item type and material types are insufficient to distinguish them. | ||
− | ==== | + | ==== name ==== |
The name field is a small string used to identify the reagent within the reaction. The name is not visible to the player. It is local to the reaction and does not need to be unique across all of the reactions, so you can reuse the same names over and over, although each reagent within the same individual reaction must have a different name. | The name field is a small string used to identify the reagent within the reaction. The name is not visible to the player. It is local to the reaction and does not need to be unique across all of the reactions, so you can reuse the same names over and over, although each reagent within the same individual reaction must have a different name. | ||
− | Most reagents are simply named '''A''', '''B''', and so forth in default reactions, although names such as '''TOOLSTONE''' | + | Most reagents are simply named '''A''', '''B''', and so forth in default reactions, although names such as '''TOOLSTONE''' or '''FLUX''' will also work equally well. The PRODUCT may make reference to this name – for instance, if a container '''B''' is specified as a reagent, PRODUCT_TO_CONTAINER:B specifies that container. |
− | ==== | + | ==== quantity ==== |
− | + | The quantity differs between item types. Generally speaking, cloth, thread, powder, bars, liquids and globs use numbers representing the size of material within one item, and everything else uses a static quantity. While REAGENT:A:'''''10''''':'''''THREAD''''':NONE:NONE:NONE thread is an extremely tiny portion of a random spool of thread, REAGENT:A:'''''10''''':'''''TOY''''':NONE:NONE:NONE is ten unique, solid toy items. | |
− | If one of the reagents is in a stack | + | If one of the reagents is in a stack, the reaction will use the entire stack and multiply the product--for example, using only 1 BAR instead of 150 BAR will multiply the product quantity by 150. One can see which items have what quantities in the description of the [[Reaction#PRODUCT_DIMENSION]] token. |
− | ==== | + | ==== item token ==== |
[[Item token]]s are of the form ITEM_TYPE:ITEM_SUBTYPE. | [[Item token]]s are of the form ITEM_TYPE:ITEM_SUBTYPE. | ||
− | The | + | The item type is the sort of item you require; WEAPON, TOY or SKIN_TANNED, for example. A [[item token|full list]] is available. |
− | + | For reagents, the item token can also be set to ANY_RAW_MATERIAL:NONE (to permit BAR, BOULDER, POWDER_MISC, or GLOB) or ANY_CRAFT:NONE (to permit FIGURINE, AMULET, SCEPTER, CROWN, RING, EARRING, or BRACELET). Internally, these special values are both converted to NONE:NONE and merely set special modifiers (similar to [BUILDMAT])—they cannot be used in any other context. | |
− | + | The item subtype is name of the exact item that you require. Examples are ITEM_WEAPON_SPEAR or ITEM_TOY_PUZZLEBOX. Some items, like quivers or backpacks, or chunks of stone or metal, only require the item token to be filled in, so if you're asking for those you should set the subtype to NONE. Subtypes are defined within the local raw data files and their exact names can be referenced by looking at the corresponding file. | |
For backwards compatibility, reagents can also accept "METAL_ORE:metal_id" in place of both the item and material tokens—this is equivalent to using the reagent BOULDER:NONE:NONE:NONE with the modifier [METAL_ORE:metal_id] (see below). | For backwards compatibility, reagents can also accept "METAL_ORE:metal_id" in place of both the item and material tokens—this is equivalent to using the reagent BOULDER:NONE:NONE:NONE with the modifier [METAL_ORE:metal_id] (see below). | ||
− | ==== | + | ==== material token ==== |
− | |||
− | |||
− | + | [[Material token]]s come in several forms. For most reagents, this will typically be INORGANIC:MATERIAL_ID or NONE:NONE (to allow multiple materials using other filters). | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
==== Modifiers ==== | ==== Modifiers ==== | ||
− | Reagents may also have extra tokens added on, | + | Reagents may also have extra tokens added on afterwards, placed just after the REAGENT tag. |
− | Generally speaking, if you set a field in a reagent to NONE, the reaction won't discriminate when it comes to that particular field. For example, if you require a BOULDER reagent but leave the material as NONE:NONE, it will grab any available BOULDER-type item regardless of material | + | Generally speaking, if you set a field in a reagent to NONE, the reaction won't discriminate when it comes to that particular field. For example, if you require a BOULDER reagent but leave the material as NONE:NONE, it will grab any available BOULDER-type item regardless of material. |
− | + | A list of them follows: | |
{| {{prettytable}} | {| {{prettytable}} | ||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
! Token | ! Token | ||
− | ! | + | ! Meaning |
− | |||
|- | |- | ||
− | | | + | | [REACTION_CLASS:X] |
− | + | | Reagent material must have the specified reaction class - see below for more details. | |
− | | Reagent material must have the | ||
|- | |- | ||
− | | | + | | [HAS_MATERIAL_REACTION_PRODUCT:X] |
− | + | | Reagent material must have the specified material reaction product - see below for more details. | |
− | | Reagent material must have the | ||
|- | |- | ||
− | | | + | | [HAS_ITEM_REACTION_PRODUCT:X] |
− | + | | Reagent material must have the specified item reaction product - see below for more details. This can be used interchangeably with HAS_MATERIAL_REACTION_PRODUCT. | |
− | | Reagent material must have the | ||
|- | |- | ||
− | | | + | | [CONTAINS:X] |
− | + | | Reagent is a container that holds the specified reagent (where ''X'' is the [[#name|name]] of the reagent). | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [UNROTTEN] |
− | + | | Reagent must not be rotten, mainly for organic materials. | |
− | | Reagent | ||
|- | |- | ||
− | | style="vertical-align: top"| | + | | style="vertical-align: top"| [CONTAINS_LYE] |
− | + | | Reagent must be a BARREL or TOOL which contains at least one item of type LIQUID_MISC made of LYE. Use of this token is discouraged, as it does not work with buckets (instead, use [CONTAINS:lye] — note the colon — and a corresponding lye reagent [REAGENT:lye:150:LIQUID_MISC:NONE:LYE]). | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [POTASHABLE] (Deprecated) |
− | + | | Alias for [CONTAINS_LYE]. | |
− | | | ||
|- | |- | ||
− | | | + | | [NOT_WEB] |
− | + | | Reagent must be collected (to distinguish silk thread from webs). Only makes sense for items of type THREAD. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [WEB_ONLY] |
− | + | | Reagent must be undisturbed (to distinguish silk thread from webs). Only makes sense for items of type THREAD. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [EMPTY] |
− | | | + | | If the reagent is a container, it must be empty. |
− | |||
|- | |- | ||
− | | | + | | [NOT_CONTAIN_BARREL_ITEM] |
− | + | | If the reagent is a container, it must not contain [[lye]] or [[milk]]. Not necessary if specifying [EMPTY]. | |
− | | | ||
|- | |- | ||
− | | | + | | [BAG] |
− | + | | Reagent must be a bag - that is, a BOX made of plant fiber, silk, yarn, or leather. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [GLASS_MATERIAL] |
− | + | | Reagent material must have the [IS_GLASS] token. All 3 types of [[glass]] have this token hardcoded. | |
− | | Reagent material must have the [ | ||
|- | |- | ||
− | | | + | | [BUILDMAT] |
− | |||
− | |||
− | |||
− | |||
− | |||
| Reagent must be a general [[building material]] - BAR, BLOCKS, BOULDER, or WOOD. | | Reagent must be a general [[building material]] - BAR, BLOCKS, BOULDER, or WOOD. | ||
|- | |- | ||
− | | | + | | [FIRE_BUILD_SAFE] |
− | + | | Reagent material must be solid and stable at temperatures approaching 11000. Only works with items of type BAR, BLOCKS, BOULDER, WOOD, and ANVIL - all others are considered unsafe. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [MAGMA_BUILD_SAFE] |
− | + | | Reagent material must be solid and stable at temperatures approaching 12000. Only works with items of type BAR, BLOCKS, BOULDER, WOOD, and ANVIL - all others are considered unsafe. | |
− | |||
− | | Reagent | ||
|- | |- | ||
− | | | + | | [CAN_USE_ARTIFACT] |
− | + | | Reagent can be an Artifact. Using [PRESERVE_REAGENT] with this is strongly advised. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [WORTHLESS_STONE_ONLY] |
− | + | | Reagent material must be non-[[economic]]. | |
− | | Reagent material must | ||
|- | |- | ||
− | | | + | | [ANY_PLANT_MATERIAL] |
− | + | | Reagent material must be subordinate to a PLANT object. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [ANY_SILK_MATERIAL] |
− | | | + | | Reagent material must have the [SILK] token. |
− | |||
|- | |- | ||
− | | | + | | [ANY_YARN_MATERIAL] |
− | + | | Reagent material must have the [YARN] token. | |
− | | Reagent material must | ||
|- | |- | ||
− | | | + | | [ANY_SOAP_MATERIAL] |
− | + | | Reagent material must have the [SOAP] token. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [ANY_LEATHER_MATERIAL] |
− | + | | Reagent material must have the [LEATHER] token. | |
− | | Reagent material must have the | ||
|- | |- | ||
− | | | + | | [ANY_BONE_MATERIAL] |
− | + | | Reagent material must have the [BONE] token. | |
− | | Reagent material must have the [ | ||
|- | |- | ||
− | | | + | | [ANY_STRAND_TISSUE] |
− | + | | Reagent is made of a tissue having [TISSUE_SHAPE:STRANDS], intended for matching hair and wool. Must be used with [USE_BODY_COMPONENT]. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [ANY_SHELL_MATERIAL] |
− | + | | Reagent material must have the [SHELL] token. | |
− | |||
− | | Reagent material must have the | ||
|- | |- | ||
− | | | + | | [ANY_TOOTH_MATERIAL] |
− | + | | Reagent material must have the [TOOTH] token. | |
− | |||
− | | Reagent material must have the | ||
|- | |- | ||
− | | | + | | [ANY_HORN_MATERIAL] |
− | + | | Reagent material must have the [HORN] token. | |
− | |||
− | | Reagent must | ||
|- | |- | ||
− | | | + | | [ANY_PEARL_MATERIAL] |
− | + | | Reagent material must have the [PEARL] token. | |
− | |||
− | |||
− | |||
− | |||
− | | Reagent material must have the [ | ||
|- | |- | ||
− | | | + | | [IS_SAND_MATERIAL] |
− | |||
| Reagent material must have the [SOIL_SAND] token. | | Reagent material must have the [SOIL_SAND] token. | ||
|- | |- | ||
− | | | + | | [USE_BODY_COMPONENT] |
− | + | | Reagent must be a body part (CORPSE or CORPSEPIECE). Must be used even if your reagent item type is CORPSE or CORPSEPIECE, otherwise it will match any item. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [NO_EDGE_ALLOWED] |
− | + | | Reagent must not have an edge - excludes sharp stones (produced using knapping) and most types of weapon/ammo. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [HAS_EDGE]{{version|0.42.01}} |
− | + | | Reagent must have an edge. | |
− | |||
− | | Reagent | ||
|- | |- | ||
− | | | + | | [NOT_ENGRAVED] |
− | + | | Reagent can not be engraved. For example, a memorial slab can not be engraved. | |
− | |||
− | | Reagent | ||
|- | |- | ||
− | | | + | | [NOT_IMPROVED] |
− | + | | Reagent has not been decorated. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [DOES_NOT_ABSORB] |
− | + | | Reagent material must have [ABSORPTION:0] | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [FOOD_STORAGE_CONTAINER] |
− | | | + | | Reagent is either a BARREL or a TOOL with the FOOD_STORAGE use. |
− | |||
|- | |- | ||
− | | | + | | [HARD_ITEM_MATERIAL] |
− | + | | Reagent material must have [ITEMS_HARD]. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [METAL_ITEM_MATERIAL] |
− | + | | Reagent material must have [ITEMS_METAL]. | |
− | | Reagent | ||
|- | |- | ||
− | | | + | | [NOT_PRESSED] |
− | |||
| Reagent must not be in the SOLID_PRESSED state. | | Reagent must not be in the SOLID_PRESSED state. | ||
|- | |- | ||
− | | | + | | [METAL_ORE:X] |
− | + | | Reagent material must be an ore of the specified metal. | |
− | | Reagent must be | ||
|- | |- | ||
− | | | + | | [MIN_DIMENSION:X] |
− | + | | Reagent's item dimension must be at least this large. The reagent's item type must be BAR, POWDER_MISC, LIQUID_MISC, DRINK, THREAD, CLOTH, or GLOB for this to work. | |
− | | Reagent must be | ||
|- | |- | ||
− | | | + | | [HAS_TOOL_USE:X] |
− | | | + | | Reagent must be a [[tool]] with the specific TOOL_USE value. The reagent's item type must be TOOL:NONE for this to make any sense. |
− | |||
|- | |- | ||
− | | | + | | [PRESERVE_REAGENT] |
− | |||
| Reagent is not destroyed, which is the normal effect, at the completion of the reaction. Typically used for containers. | | Reagent is not destroyed, which is the normal effect, at the completion of the reaction. Typically used for containers. | ||
|- | |- | ||
− | | | + | | [DOES_NOT_DETERMINE_PRODUCT_AMOUNT] |
− | + | | Reagent quantity is ignored for the purposes of producing extra outputs. Typically used for containers so that [[stack]]s of reagents will correctly produce additional outputs. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | | Reagent | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
Line 419: | Line 306: | ||
Products are the end product of the reaction. A reaction can have as many products as it likes. | Products are the end product of the reaction. A reaction can have as many products as it likes. | ||
− | Products are almost identical to reagents, except that they do not need to be named, can't have fields undefined, and don't use the quantity field to determine the product size. Instead, the token | + | Products are almost identical to reagents, except that they do not need to be named, can't have fields undefined, and don't use the quantity field to determine the product size. Instead, the token PRODUCT_DIMENSION:X is tacked on after the PRODUCT token, determining the size of the product. |
− | Products can be produced directly to a container using the [PRODUCT_TO_CONTAINER: | + | Products can be produced directly to a container using the [PRODUCT_TO_CONTAINER:<IDENTIFIER>] token, where the IDENTIFIER is the name of a reagent. This requires the reagent to have the PRESERVE_REAGENT token. |
Restating this in the above style, we have: | Restating this in the above style, we have: | ||
[PRODUCT:<probability>:<quantity>:<item token>:<material token>][...modifiers...] | [PRODUCT:<probability>:<quantity>:<item token>:<material token>][...modifiers...] | ||
− | ==== | + | ==== probability ==== |
− | The percentage chance the product will be produced when the reaction is completed | + | The percentage chance the product will be produced when the reaction is completed. |
− | ==== | + | ==== quantity ==== |
Determines how many of the product will be produced. For the item types AMMO, REMAINS, MEAT, FISH, FISH_RAW, PLANT, PLANT_GROWTH, DRINK, CHEESE, LIQUID_MISC, COIN, and EGG, the resulting items will be created as a single [[stack]], while all other item types will produce multiple individual items. | Determines how many of the product will be produced. For the item types AMMO, REMAINS, MEAT, FISH, FISH_RAW, PLANT, PLANT_GROWTH, DRINK, CHEESE, LIQUID_MISC, COIN, and EGG, the resulting items will be created as a single [[stack]], while all other item types will produce multiple individual items. | ||
Line 436: | Line 323: | ||
If a reaction can take stacks of input items, then it will attempt to perform the reaction enough times to consume as many full sets of reagents as it can—for example, if a reaction "1 piece of meat + 2 pieces of fish -> 3 pieces of cheese" is given a stack of 5 meat and 5 fish, it will produce 6 pieces of cheese and leave 3 meat and 1 fish behind. Using the token DOES_NOT_DETERMINE_PRODUCT_AMOUNT allows a reagent to be excluded from this calculation - for example, with the reaction "1 plant + 1 barrel -> 5 alcohol (into barrel)", using this on the barrel allows the reaction to be performed as "5 plant + 1 barrel -> 25 alcohol" instead of "5 plant + 5 barrel -> 25 alcohol". | If a reaction can take stacks of input items, then it will attempt to perform the reaction enough times to consume as many full sets of reagents as it can—for example, if a reaction "1 piece of meat + 2 pieces of fish -> 3 pieces of cheese" is given a stack of 5 meat and 5 fish, it will produce 6 pieces of cheese and leave 3 meat and 1 fish behind. Using the token DOES_NOT_DETERMINE_PRODUCT_AMOUNT allows a reagent to be excluded from this calculation - for example, with the reaction "1 plant + 1 barrel -> 5 alcohol (into barrel)", using this on the barrel allows the reaction to be performed as "5 plant + 1 barrel -> 25 alcohol" instead of "5 plant + 5 barrel -> 25 alcohol". | ||
− | ==== | + | ==== item token ==== |
The [[item token]] and subtype of the item you produce. | The [[item token]] and subtype of the item you produce. | ||
− | If | + | If you want the item type and material to be derived from one of the reagents, you can use GET_ITEM_DATA_FROM_REAGENT:reagent:REACTION_PRODUCT_ID in place of both the item token ''and'' the material token below. You can also specify GET_ITEM_DATA_FROM_REAGENT:reagent:NONE in order to make a direct copy of the source item, though this will not work for complex items such as corpses or prepared meals. |
For products, this can also be set to CRAFTS:NONE to produce up to three random [[craft]] items. This value cannot be used in any other context. | For products, this can also be set to CRAFTS:NONE to produce up to three random [[craft]] items. This value cannot be used in any other context. | ||
− | ==== | + | ==== material token ==== |
A [[material token]] describing what the product will be made of. | A [[material token]] describing what the product will be made of. | ||
− | If you want the product's material to be derived from one of the reagents | + | If you want the product's material to be derived from one of the reagents, you can use GET_MATERIAL_FROM_REAGENT:reagent:REACTION_PRODUCT_ID in place of the material token. You can also specify GET_MATERIAL_FROM_REAGENT:reagent:NONE in order to directly use the reagent's own material. |
− | |||
− | |||
==== Product modifiers ==== | ==== Product modifiers ==== | ||
− | Zero or more tokens which further | + | Zero or more tokens which further clarify the acceptable types when the item type and material types are insufficient to distinguish them. |
{| {{prettytable}} | {| {{prettytable}} | ||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
! Token | ! Token | ||
− | ! | + | ! Meaning |
− | |||
|- | |- | ||
− | | | + | | [FORCE_EDGE] |
− | |||
| Product is given a sharp edge. Used for knapping. | | Product is given a sharp edge. Used for knapping. | ||
|- | |- | ||
− | | | + | | [PRODUCT_PASTE] |
− | |||
| Product is created in the SOLID_PASTE state. | | Product is created in the SOLID_PASTE state. | ||
|- | |- | ||
− | | | + | | [PRODUCT_PRESSED] |
− | |||
| Product is created in the SOLID_PRESSED state. | | Product is created in the SOLID_PRESSED state. | ||
|- | |- | ||
− | | | + | | [PRODUCT_DIMENSION:<size>] |
− | + | | Specifies the dimensions of the product. A product of 150 is typical for BAR, POWDER_MISC, LIQUID_MISC, DRINK, and GLOB. 15000 is typical for THREAD, and a size of 10000 is typical for CLOTH. Has no effect on any other item types. Note: this is not the actual volume of the product, which is hard-coded by the item token. | |
− | |||
− | | Specifies the | ||
|- | |- | ||
− | | | + | | [PRODUCT_TO_CONTAINER:<id>] |
− | + | | Places the product in a container; <id> must be the name of a reagent with the PRESERVE_REAGENT token and a container item type. | |
− | |||
− | | Places the product in a container; | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|} | |} | ||
Line 501: | Line 369: | ||
[IMPROVEMENT:<probability>:<reagent name>:<improvement type>:<material token>] | [IMPROVEMENT:<probability>:<reagent name>:<improvement type>:<material token>] | ||
− | ==== | + | ==== probability ==== |
+ | |||
The percentage chance the improvement will be applied to the reagent when the reaction is completed. | The percentage chance the improvement will be applied to the reagent when the reaction is completed. | ||
− | ==== | + | ==== reagent name ==== |
− | The | + | |
+ | The name of the reagent that will be improved. In order to be meaningful, this reagent must have [PRESERVE_REAGENT]. | ||
+ | |||
+ | ==== improvement type ==== | ||
− | |||
The following improvement types can be used: | The following improvement types can be used: | ||
Line 513: | Line 384: | ||
|- bgcolor="#dddddd" | |- bgcolor="#dddddd" | ||
! Token | ! Token | ||
− | ! | + | ! Meaning |
|- | |- | ||
| COVERED | | COVERED | ||
Line 532: | Line 403: | ||
| PAGES | | PAGES | ||
| Adds pages to a [[book]]. | | Adds pages to a [[book]]. | ||
− | |||
− | |||
− | |||
|} | |} | ||
All other item improvement tokens (ART_IMAGE, ITEMSPECIFIC, THREAD, CLOTH, SEWN_IMAGE, and ILLUSTRATION) are ignored. | All other item improvement tokens (ART_IMAGE, ITEMSPECIFIC, THREAD, CLOTH, SEWN_IMAGE, and ILLUSTRATION) are ignored. | ||
− | ==== | + | ==== material token ==== |
A [[material token]] describing what the decoration will be made of. | A [[material token]] describing what the decoration will be made of. | ||
− | If you want the | + | If you want the decoration's material to be derived from one of the reagents, you can use GET_MATERIAL_FROM_REAGENT:reagent:REACTION_PRODUCT_ID in place of the material token. You can also specify GET_MATERIAL_FROM_REAGENT:reagent:NONE in order to directly use the reagent's own material. |
=== Other tokens === | === Other tokens === | ||
− | ==== | + | ==== fuel ==== |
The FUEL token means that the reaction requires coke or charcoal to be performed. Fuel is not needed when the reaction is performed at a magma workshop (a [[magma kiln]], [[magma smelter]], or any custom building having [NEEDS_MAGMA]). | The FUEL token means that the reaction requires coke or charcoal to be performed. Fuel is not needed when the reaction is performed at a magma workshop (a [[magma kiln]], [[magma smelter]], or any custom building having [NEEDS_MAGMA]). | ||
− | ==== | + | ==== skill ==== |
− | The [[Skill token| | + | The [[Skill token|SKILL token]] determines what skill the reaction requires and what skill it trains. Only one skill may be specified. For custom reactions, the amount of experience gained is linearly correlated with the amount of product created; a reaction with no product will yield no experience for the performing dwarf. A reaction with no skill associated will always be instant. |
− | + | One may also adjust how much skill is gained using the [SKILL_IP:<integer>] token. The default is 30; more will increase the amount of skill gain. Attribute gain from the skill gain can also be adjusted with [ATTRIBUTE_IP:<integer>], with the default being 10.{{version|0.47.01}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | + | It's also possible to change how much skill affects the outcome (i.e. quality) of the reaction using the [SKILL_ROLL_RANGE:<basic range>:<multiplier>] token.{{version|0.47.01}} The default is [SKILL_ROLL_RANGE:11:5]. The first number is the base roll and the second number is how much the dwarf's skill can affect the reaction; the skill roll is random(basic range) + random((skill level * multipler)/2 + 1) + random((skill level * multipler)/2 + 1), where random(x) gives a random number from 0 to x-1, inclusive (which also means that the minimum for the basic range is 1). The higher result on the roll, the better. Both numbers can be lowered to the skill harder. For example, a dwarf who is proficient in a skill has a skill level of 5; their roll will be random(11)+random(13)+random(13), meaning this dwarf can roll anywhere from 0 to 34; similarly, unskilled dwarves can have 0 to 10 while legendary+0 (skill 15) dwarves can have 0 to 84. If this is changed to [SKILL_ROLL_RANGE:1:8], then instead a proficient dwarf will have random(1)+random(21)+random(21), giving a range from 0 to 40 for proficient dwarves, with unskilled dwarves always having 0 and legendary dwarves going all the way up to 120. | |
− | |||
− | + | As a consequence, increasing the multiplier will '''always''' make legendary dwarves more effective, even if base roll is reduced to its minimum of 1, with the default going up to 84 for default and 90 for [SKILL_ROLL_RANGE:1:6]. | |
− | + | ==== automatic ==== | |
− | |||
− | ==== | ||
The AUTOMATIC token means that the reaction will be queued automatically if the reaction reagents are all present. | The AUTOMATIC token means that the reaction will be queued automatically if the reaction reagents are all present. | ||
Line 595: | Line 435: | ||
This token only works with jobs performed at a [[kiln]], [[smelter]], [[tanner's shop]], [[kitchen]], or custom workshop, and [[standing orders]] allow you to limit which ones trigger; custom reactions performed at a [[quern]], [[millstone]]{{verify}}, [[still]]{{verify}} or [[craftsdwarf's workshop]]{{verify}} cannot be made automatic. | This token only works with jobs performed at a [[kiln]], [[smelter]], [[tanner's shop]], [[kitchen]], or custom workshop, and [[standing orders]] allow you to limit which ones trigger; custom reactions performed at a [[quern]], [[millstone]]{{verify}}, [[still]]{{verify}} or [[craftsdwarf's workshop]]{{verify}} cannot be made automatic. | ||
− | ==== Adventure | + | ==== Adventure Mode enabled ==== |
− | |||
− | |||
− | + | The ADVENTURE_MODE_ENABLED token means that this version of the reaction is not used by dwarves at home in a fortress, but rather the wanderers of Adventure Mode. When using this token, it will be allowed for adventurers of any race, without editing entity files. | |
− | + | ==== max multiplier ==== | |
− | The [ | + | The [MAX_MULTIPLIER:<#>] specifies how many times to do the reaction. This can be used to limit stacked reagent use to the specified quantity instead of the whole stack.{{version|0.42.01}} |
== Reaction classes and products == | == Reaction classes and products == | ||
Line 613: | Line 451: | ||
The simplest token is the reaction class. If it is tacked on a material, a reaction can limit reagents to only those materials that have the specified arbitrary [REACTION_CLASS:whatever] identifier. | The simplest token is the reaction class. If it is tacked on a material, a reaction can limit reagents to only those materials that have the specified arbitrary [REACTION_CLASS:whatever] identifier. | ||
− | We want a reaction that smelts iron and flux into pig iron. However, there | + | We want a reaction that smelts iron and flux into pig iron. However, there's half-dozen different stones that count as flux. Instead of clogging up the smelter job menu with half-dozen nearly identical reactions that all take in either dolomite or limestone or marble for the same result, we use a reaction class. |
[REACTION:PIG_IRON_MAKING] | [REACTION:PIG_IRON_MAKING] | ||
Line 648: | Line 486: | ||
[BUILDING:TANNER:CUSTOM_T] | [BUILDING:TANNER:CUSTOM_T] | ||
[REAGENT:flaps of skin:1:NONE:NONE:NONE:NONE][USE_BODY_COMPONENT][UNROTTEN] | [REAGENT:flaps of skin:1:NONE:NONE:NONE:NONE][USE_BODY_COMPONENT][UNROTTEN] | ||
− | '''[HAS_MATERIAL_REACTION_PRODUCT: | + | '''[HAS_MATERIAL_REACTION_PRODUCT:BOOT_FABRIC]''' |
− | [PRODUCT:100:1:SKIN_TANNED:NONE:'''GET_MATERIAL_FROM_REAGENT:flaps of skin: | + | [PRODUCT:100:1:SKIN_TANNED:NONE:'''GET_MATERIAL_FROM_REAGENT:flaps of skin:BOOT_FABRIC'''] |
[SKILL:TANNER] | [SKILL:TANNER] | ||
[AUTOMATIC] | [AUTOMATIC] | ||
− | Where you'd usually have some fresh bodypart with the | + | Where you'd usually have some fresh bodypart with the BOOT_FABRIC reaction class produce some generic SKIN_TANNED, this goes further. Instead of declaring a material, the spool of pattern-ready tailoring leather (SKIN_TANNED) now comes out as whatever the skin flaps' material reaction product (named BOOT_FABRIC) says in the material's definition (GET_MATERIAL_FROM_REAGENT). And what does it say? |
[MATERIAL_TEMPLATE:SKIN_TEMPLATE] | [MATERIAL_TEMPLATE:SKIN_TEMPLATE] | ||
Line 661: | Line 499: | ||
... | ... | ||
[ABSORPTION:100] | [ABSORPTION:100] | ||
− | '''[MATERIAL_REACTION_PRODUCT: | + | '''[MATERIAL_REACTION_PRODUCT:BOOT_FABRIC:LOCAL_CREATURE_MAT:LEATHER]''' |
[IMPLIES_ANIMAL_KILL] | [IMPLIES_ANIMAL_KILL] | ||
[ROTS] | [ROTS] | ||
− | It says that the caller of the | + | It says that the caller of the BOOT_FABRIC hook always comes out as the LEATHER of whatever creature the skin has been peeled off of (LOCAL_CREATURE_MAT). Make it BOOT_FABRIC:INORGANIC:GOLD instead and your tanner turns into Midas. Use your imagination. |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
As with reaction classes, some MATERIAL_REACTION_PRODUCT identifiers have special meanings to the game itself - notably, the [[site finder]] knows that "FIRED_MAT" should be connected to the "Clay" filter, and "CHEESE_MAT" is used when making [[cheese]] from [[milk]]. | As with reaction classes, some MATERIAL_REACTION_PRODUCT identifiers have special meanings to the game itself - notably, the [[site finder]] knows that "FIRED_MAT" should be connected to the "Clay" filter, and "CHEESE_MAT" is used when making [[cheese]] from [[milk]]. | ||
Line 680: | Line 509: | ||
=== Item reaction products === | === Item reaction products === | ||
− | + | The version 0.40 added an even more powerful form of the above. Where material reaction products can only affect what type of stuff the predestined end product is made of, item reaction products can decide the entire end result ahead of time. Item AND material. | |
Let's assume for a moment that we're completely tired of leather earrings and hair crowns. We want a crafting reaction that takes cloth and only produces things that make sense. | Let's assume for a moment that we're completely tired of leather earrings and hair crowns. We want a crafting reaction that takes cloth and only produces things that make sense. | ||
Line 717: | Line 546: | ||
[USE_MATERIAL_TEMPLATE:THREAD:THREAD_PLANT_TEMPLATE] | [USE_MATERIAL_TEMPLATE:THREAD:THREAD_PLANT_TEMPLATE] | ||
[MATERIAL_VALUE:2] | [MATERIAL_VALUE:2] | ||
− | '''[ITEM_REACTION_PRODUCT:BEST_OPTION: | + | '''[ITEM_REACTION_PRODUCT:BEST_OPTION:BOX:NONE:LOCAL_PLANT_MAT:THREAD]''' |
... | ... | ||
Line 750: | Line 579: | ||
! Token | ! Token | ||
! Arguments | ! Arguments | ||
− | |||
! Description | ! Description | ||
|- | |- | ||
− | + | | {{text anchor|ADVENTURE_MODE_ENABLED}} | |
| | | | ||
− | | | + | | this version of the reaction is not used by dwarves at home in a fortress, but rather the wanderers of Adventure Mode. When using this token, it will be allowed for adventurers of any race, without editing Entity files |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_BONE_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must have the [BONE] token. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_HORN_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must have the [HORN] token. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_LEATHER_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must have the [LEATHER] token. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_PEARL_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must have the [PEARL] token. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_PLANT_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must be subordinate to a PLANT object. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_SHELL_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must have the [SHELL] token. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_SILK_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must have the [SILK] token. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_SOAP_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must have the [SOAP] token. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_STRAND_TISSUE}} | |
| | | | ||
− | + | | Reagent is made of a tissue having [TISSUE_SHAPE:STRANDS], intended for matching hair and wool. Must be used with [USE_BODY_COMPONENT]. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_TOOTH_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must have the [TOOTH] token. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ANY_YARN_MATERIAL}} | |
| | | | ||
− | + | | Reagent material must have the [YARN] token. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|ATTRIBUTE_IP}}{{version|0.47.01}} | |
− | | | + | | integer |
− | | | + | | Amount of attributes given per skill improvement. Default is 10. |
− | | | ||
|- | |- | ||
− | + | | {{text anchor|AUTOMATIC}} | |
| | | | ||
− | | | + | | the reaction will be queued automatically if the reaction reagents are all present. |
− | |||
|- | |- | ||
− | + | | {{text anchor|BAG}} | |
| | | | ||
− | + | | Reagent has to be a bag. Intended to be used with an item type of BOX, to prevent chests, coffers, and other containers from being used instead. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|BUILDING}} | |
− | + | | | |
− | * | + | * Building name |
− | + | * in-building reaction hotkey | |
− | | | + | | Sets the building that the reaction will be performed in, and the button used to queue the reaction once that building's menu is accessed in-game |
|- | |- | ||
− | + | | {{text anchor|BUILDMAT}} | |
| | | | ||
− | | | + | | Reagent is able to be used to build structures (Stone, Wood, Blocks, Bars?). |
− | |||
|- | |- | ||
− | + | | {{text anchor|CAN_USE_ARTIFACT}} | |
| | | | ||
− | + | | Reagent can be an Artifact. Using [PRESERVE_REAGENT] with this is strongly advised. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|CAN_USE_HOSPITAL_RESERVED}}{{version|0.42.01}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
− | + | | Allows the reagent to be an item that is otherwise reserved for use by a [[healthcare|hospital]]. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|CAN_USE_LOCATION_RESERVED}}{{version|0.42.01}} | |
| | | | ||
− | + | | Allows the reagent to be an item that is otherwise reserved for use by a [[locations|location]]. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|CATEGORY}}{{version|0.42.01}} | |
− | | | + | | Category ID |
− | + | | Puts the reaction in a category. Categories are custom submenus for reaction menus. The category ID is a unique identifier for the category. It is only used in the raws, and will not appear in the game. | |
− | |||
− | |||
If you're defining multiple categories within the same reaction - for example, if you intend the reaction to be nested two deep, and haven't yet defined the super-category - the ''last'' CATEGORY token within the reaction definition is the one that the reaction will appear in. | If you're defining multiple categories within the same reaction - for example, if you intend the reaction to be nested two deep, and haven't yet defined the super-category - the ''last'' CATEGORY token within the reaction definition is the one that the reaction will appear in. | ||
|- | |- | ||
− | + | | {{text anchor|CATEGORY_NAME}}{{version|0.42.01}} | |
− | | | + | | String |
− | + | | The name of the category as displayed in-game. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|CATEGORY_DESCRIPTION}}{{version|0.42.01}} | |
− | | | + | | String |
− | + | | If present, when the category is highlighted in a building menu, this string will be displayed in the Helpful Hint box. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|CATEGORY_PARENT}}{{version|0.42.01}} | |
− | | | + | | Category ID |
− | + | | If present, this category will be a submenu of the indicated category, rather than a submenu of the reaction's building. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|CATEGORY_KEY}}{{version|0.42.01}} | |
− | | | + | | [[interface.txt|Hotkey token]] |
− | + | | If present, this category can be selected from its parent menu (whether a building or a parent category) using the given hotkey. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|CONTAINS}} | |
− | | | + | | required content |
− | + | | Reagent is a container that holds the specified reagent. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|CONTAINS_LYE}} (Deprecated) | |
| | | | ||
− | + | | If the reagent is a container, it must contain LYE. No longer used - instead, use one reagent for the LYE itself and another reagent with [CONTAINS:lye_reagent]. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|DESCRIPTION}} | |
− | | | + | | String |
− | + | | Description of the reaction | |
− | | | ||
− | |||
|- | |- | ||
− | + | | {{text anchor|DOES_NOT_ABSORB}} | |
| | | | ||
− | + | | Reagent material must have [ABSORPTION:0] | |
− | |||
|- | |- | ||
− | + | | {{text anchor|DOES_NOT_DETERMINE_PRODUCT_AMOUNT}} | |
| | | | ||
− | + | | Performing a reaction with large [[stack]]s of inputs can allow multiple sets of outputs to be produced. Setting this flag causes the reagent to be ignored in this process - for example, with the reaction "1 plant + 1 barrel -> 5 alcohol (into barrel)", using this on the barrel allows the reaction to be performed as "5 plant + 1 barrel -> 25 alcohol" instead of "5 plant + 5 barrel -> 25 alcohol". | |
− | |||
|- | |- | ||
− | + | | {{text anchor|EMPTY}} | |
| | | | ||
− | + | | If the reagent is a container, it must be empty. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|FIRE_BUILD_SAFE}} | |
| | | | ||
− | + | | Reagent must be considered fire safe - i.e. not wood, and not coal. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|FORCE_EDGE}} | |
| | | | ||
− | + | | Product is given a sharp edge. Used for knapping. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|FOOD_STORAGE_CONTAINER}} | |
| | | | ||
− | + | | Reagent must be a barrel or any non-absorbing tool with [TOOL_USE:FOOD_STORAGE] | |
− | |||
|- | |- | ||
− | + | | {{text anchor|FUEL}} | |
− | |||
| | | | ||
− | + | | Requires that the reaction either use up a unit of coal or charcoal or else be performed at a magma workshop | |
|- | |- | ||
− | + | | {{text anchor|GLASS_MATERIAL}} | |
| | | | ||
− | + | | Reagent material has [IS_GLASS]. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|HAS_EDGE}}{{version|0.42.01}} | |
| | | | ||
− | + | | Reagent must be sharpened (used for carving). | |
− | |||
|- | |- | ||
− | + | | {{text anchor|HAS_ITEM_REACTION_PRODUCT}} | |
− | | | + | | PRODUCT_ID (custom) |
− | + | | Similar to HAS_MATERIAL_REACTION_PRODUCT, but requires the reagents material to have a matching ITEM_REACTION_PRODUCT entry. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|HAS_MATERIAL_REACTION_PRODUCT}} | |
− | | | + | | PRODUCT_ID (custom) |
− | + | | Similar to REACTION_CLASS, but requires the reagents material to have a matching [[Material definition token|MATERIAL_REACTION_PRODUCT]] entry. Intended for reactions which transform one class of material into another, such as skin->leather and fat->tallow. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|HAS_TOOL_USE}} | |
− | | | + | | Tool-use token |
− | + | | Reagent must be a [[tool]] with the specific TOOL_USE value. The reagents item type must be TOOL:NONE for this to make any sense. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|HAS_WRITING_IMPROVEMENT}}{{version|0.42.01}} | |
| | | | ||
− | + | | Reagent must contain writing. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|IMPROVEMENT}} | |
− | + | | | |
* Probability | * Probability | ||
− | * | + | * Reagent Name |
* Improvement type | * Improvement type | ||
* Material Token | * Material Token | ||
− | | | + | | Improvement types include BANDS, COVERED, GLAZED, RINGS_HANGING, and SPIKES |
− | |||
|- | |- | ||
− | + | | {{text anchor|MAGMA_BUILD_SAFE}} | |
| | | | ||
− | | | + | | Currently broken - behaves exactly the same as FIRE_BUILD_SAFE. |
− | |||
|- | |- | ||
− | + | | {{text anchor|MAX_MULTIPLIER}}{{version|0.42.01}} | |
− | | | + | | number |
− | | | + | | Sets the maximum number of times a reaction is allowed to run when using stacked reagents. This can be used to ensure that the reaction doesn't repeat until the entire stack is depleted. |
− | | | ||
|- | |- | ||
− | + | | {{text anchor|METAL_ORE}} | |
| | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
* Inorganic material | * Inorganic material | ||
− | + | | Reagent material must be an ore of the specified metal | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|MIN_DIMENSION}} | |
− | |||
− | |||
| | | | ||
− | | | + | * size |
+ | | Requires that the reagent have a dimension of at least this value. Only effective with BAR, POWDER_MISC, LIQUID_MISC, DRINK, THREAD, CLOTH, and GLOB items. | ||
|- | |- | ||
− | + | | {{text anchor|NAME}} | |
− | | | + | | name |
− | | | + | | defines the name used by the reaction in-game |
− | |||
|- | |- | ||
− | + | | {{text anchor|NO_EDGE_ALLOWED}} | |
| | | | ||
− | + | | Reagent must not be sharpened (used for knapping). | |
− | |||
|- | |- | ||
− | + | | {{text anchor|NOT_CONTAIN_BARREL_ITEM}} | |
| | | | ||
− | + | | If the reagent is a Barrel, it must not contain an item that has to reside in a barrel. Barrel items appear to be lye and milk. Alcohol appears to be covered as part of [EMPTY]. A reaction which places an item in a barrel should probably have both tags. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|NOT_ENGRAVED}} | |
| | | | ||
− | + | | Reagent must not be an engraved memorial slab. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|NOT_IMPROVED}} | |
| | | | ||
− | + | | Reagent has not been decorated. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|NOT_PRESSED}} | |
| | | | ||
− | + | | Reagent must not be in the SOLID_PRESSED state. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|NOT_WEB}} | |
| | | | ||
− | + | | Reagent must be "collected" - used with THREAD:NONE to exclude webs. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|POTASHABLE}} (Deprecated) | |
| | | | ||
− | | | + | | Alias for CONTAINS_LYE. |
− | |||
|- | |- | ||
− | + | | {{text anchor|PRESERVE_REAGENT}} | |
| | | | ||
− | + | | Reagent is not destroyed, which is the normal effect, at the completion of the reaction. Typically used for containers. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|PRODUCT}} | |
| | | | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
*Probability of success (%) | *Probability of success (%) | ||
*Quantity | *Quantity | ||
*Item token:subtype | *Item token:subtype | ||
*Material token:subtype | *Material token:subtype | ||
− | + | | Defines a thing that comes out of the reaction. GET_MATERIAL_FROM_REAGENT and GET_ITEM_DATA_FROM_REAGENT can be used to defer the choice of material and/or item to the appropriate tag in a given reagent's material - the former comes in place of the material token, the latter replaces both the item and material tokens. See above for detailed information on how the hooks work. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|PRODUCT_DIMENSION}} | |
− | | | + | | size |
− | + | | Specifies the size of the product. A size of 150 is typical for BAR, POWDER_MISC, LIQUID_MISC, DRINK, and GLOB. A size of 15000 is typical for THREAD, and a size of 10000 is typical for CLOTH. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|PRODUCT_PASTE}} | |
| | | | ||
− | + | | Product is created in the SOLID_PASTE state. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|PRODUCT_PRESSED}} | |
| | | | ||
− | + | | Product is created in the SOLID_PRESSED state. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|PRODUCT_TO_CONTAINER}} | |
− | | | + | | Reagent ID |
− | + | | Places the product in a container; <id> must be the name of a reagent with the PRESERVE_REAGENT token and a container item type. | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|PRODUCT_TOKEN}}{{version|0.42.01}} | |
− | | | + | | name |
− | + | | Allows the product to be referred to by the given name, for the purpose of being passed down as argument in other tokens. | |
− | | | ||
− | |||
|- | |- | ||
− | + | | {{text anchor|REACTION}} | |
− | | | + | | Identifier |
− | + | | defines a new reaction | |
− | | | ||
− | |||
|- | |- | ||
− | + | | {{text anchor|REACTION_CLASS}} | |
− | | | + | | CLASS_ID (custom) |
− | + | | Requires the reagent's material to have a matching [[Material definition token|REACTION_CLASS]] entry. Intended for reactions which accept a variety of materials but where the input material does not determine the output material, such as FLUX (for making pig iron and steel) and GYPSUM (for producing plaster powder). | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|REAGENT}} | |
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
− | | | + | * name/id |
+ | * quantity | ||
+ | * [[item token]] | ||
+ | * [[material token]] | ||
+ | | Requires a given reagent as an input for a reaction | ||
|- | |- | ||
− | + | | {{text anchor|SKILL}} | |
− | | | + | | Skill Token |
− | + | | Skill used by the reaction | |
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|SKILL_IP}}{{version|0.47.01}} | |
− | + | | integer | |
− | + | | Amount of skill given per product made. Default is 30. | |
− | | | ||
− | |||
|- | |- | ||
− | + | | {{text anchor|SKILL_ROLL_RANGE}}{{version|0.47.01}} | |
− | + | | | |
− | * | + | * basic range |
− | * | + | * multiplier |
− | + | | The skill roll is random(basic range) + random((skill level * multipler)/2 + 1) + random((skill level * multipler)/2 + 1). random(x) returns a number between 0 and x-1, so basic range is always 1 or more. The default is 11. The default multiplier is 5. Higher skill rolls give better results. | |
− | | | ||
|- | |- | ||
− | + | | {{text anchor|TRANSFER_ARTIFACT_STATUS}}{{version|0.42.01}} | |
| | | | ||
− | + | | Transfers artifact status from the reagent to the product. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|UNROTTEN}} | |
| | | | ||
− | + | | Reagent must not be rotten, mainly for organic materials. | |
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
|- | |- | ||
− | + | | {{text anchor|USE_BODY_COMPONENT}} | |
| | | | ||
− | + | | Reagent material must come off a creature's body. | |
− | |||
|- | |- | ||
− | + | | {{text anchor|WEB_ONLY}} | |
| | | | ||
− | | | + | | Reagent must be "undisturbed" - used with THREAD:NONE to gather webs. |
− | |||
|- | |- | ||
− | + | | {{text anchor|WORTHLESS_STONE_ONLY}} | |
| | | | ||
− | + | | Reagent is not made of an economic stone. | |
− | |||
|} | |} | ||
− | |||
− | |||
− | |||
{{Category|Modding}} | {{Category|Modding}} | ||
{{Category|Tokens}} | {{Category|Tokens}} | ||
[[ru:Reaction]] | [[ru:Reaction]] |