overhaul quickfort alias documentation
- move the alias syntax and usage docs from dfhack-config/quickfort/aliases.txt to a proper guide written in RST. Add examples and more details.
- move the alias library docs from data/quickfort/aliases-common.txt to the new guide
- reorder aliases in aliases-common to match the order in the docs
- factor out the character used to enter the stockpile config screen so we can use the same aliases for stockpiles and hauling routes (use 's' for stockpiles and '{Enter}' for hauling routes)
- reference the new guide in the quickfort user guide
- do an editorial pass of the quickfort user guide
  - change name to "Quickfort Blueprint Guide", but only in the text, not the filename, so we don't change the URL
  - add `quickfort-blueprint-guide` as a label, in addition to the existing `quickfort-user-guide`
  - changed table-like lists to actual tables
  - changed "grid" tables into "simple" tables where possible
  - used ':kbd:' markers whenever we refer to a single character
  - turned Meta blueprints and Notes blueprints sections into subsections of a new "Other blueprint modes" section, in preparation for a few new modes coming in -r5.
  - updated out-of date caveat about bookcases, display furniture, and offering places not being supported
			
			
				develop
			
			
		
							parent
							
								
									855ce84eca
								
							
						
					
					
						commit
						025c9ff758
					
				| @ -1,106 +1,17 @@ | ||||
| # Aliases for quickfort #query mode blueprints | ||||
| # Custom aliases for quickfort query mode blueprints | ||||
| # | ||||
| # This file defines custom keycode shortcuts for #query mode blueprints. | ||||
| # Definitions in this file take precedence over any definitions in the baseline | ||||
| # aliases configuration file at hack/data/quickfort/aliases-common.txt. See that | ||||
| # file for the many useful aliases that are already defined. | ||||
| # This file defines custom key sequence shortcuts for query mode blueprints. | ||||
| # Definitions in this file take precedence over any definitions in the | ||||
| # baseline aliases configuration file in | ||||
| #   hack/data/quickfort/aliases-common.txt | ||||
| # | ||||
| # If possible, build on the baseline aliases when defining your own aliases. If | ||||
| # the DF UI screens change, updated baseline aliases may allow your aliases to | ||||
| # automatically adapt to the new UI. For example, if you create an alias to | ||||
| # modify particular furniture stockpile settings, start your alias with | ||||
| # "{furnitureprefix}" instead of manually writing "s{Down 2}". Then, if the | ||||
| # location of the furniture setting changes, your alias will automatically | ||||
| # inherit the updated position when DFHack is updated. | ||||
| # Please see | ||||
| #   https://docs.dfhack.org/en/latest/docs/guides/quickfort-alias-guide.html | ||||
| # or | ||||
| #   hack/docs/docs/guides/quickfort-alias-guide.html | ||||
| # in your DF installation directory for alias syntax documentation and an | ||||
| # overview of the DFHack alias standard library. | ||||
| # | ||||
| # Aliases simplify repetitive tasks, such as configuring workshop profiles or | ||||
| # adjusting a food stockpile to accept only seeds. Making new aliases is just a | ||||
| # matter of mimicking the keys used to navigate through the menus and select | ||||
| # options. Use the aliases in your blueprint spreadsheets by writing an alias by | ||||
| # itself in a cell, like "nocontainers", or reference an alias in a larger | ||||
| # sequence by enclosing it in curly brackets, like "{nocontainers}{linksonly}" | ||||
| # | ||||
| # For example, say you have the following build and place blueprints: | ||||
| # | ||||
| # #build masonry workshop | ||||
| # ~, ~,~,`,`,` | ||||
| # ~,wm,~,`,`,` | ||||
| # ~, ~,~,`,`,` | ||||
| # | ||||
| # #place stockpile for mason | ||||
| # ~,~,~,s,s,s | ||||
| # ~,~,~,s,s,s | ||||
| # ~,~,~,s,s,s | ||||
| # | ||||
| # and you want to configure the stockpile to hold only non-economic ("other") | ||||
| # stone and to give to the adjacent mason workshop. You could write the | ||||
| # keystrokes directly: | ||||
| # | ||||
| # #query start(4;1;upper left corner of stockpile) configure mason | ||||
| # ~,~,~,s{Down 5}deb{Right}{Down 2}p^,`,` | ||||
| # ~,~,~,g{Left 2}&,                   `,` | ||||
| # ~,~,~,`,                            `,` | ||||
| # | ||||
| # or you could use alias names: | ||||
| # | ||||
| # #query start(4;1;upper left corner of stockpile) configure mason | ||||
| # ~,~,~,otherstone,`,` | ||||
| # ~,~,~,give2left, `,` | ||||
| # ~,~,~,`,         `,` | ||||
| # | ||||
| # you can combine the two aliases above into a single cell as well, if desired: | ||||
| # | ||||
| # #query start(4;1;upper left corner of stockpile) configure mason | ||||
| # ~,~,~,{otherstone}{give2left},`,` | ||||
| # ~,~,~,`,                      `,` | ||||
| # ~,~,~,`,                      `,` | ||||
| # | ||||
| # The syntax for defining aliases is: | ||||
| #   aliasname: keystrokes | ||||
| # | ||||
| # Where aliasname is at least two letters or digits long (including dashes and | ||||
| # underscores) and keystrokes are whatever you would type into the DF UI. A | ||||
| # keystroke can also be a named keycode from the DF interface definition file | ||||
| # (data/init/interface.txt), enclosed in curly brackets like an alias, like: | ||||
| # "{Right}" or "{Enter}". In # order to avoid naming conflicts between aliases | ||||
| # and keycodes, the convention is to start aliases with a lowercase letter. | ||||
| # | ||||
| # Anything enclosed within curly brackets can also have a number after it, | ||||
| # indicating how many times that alias or keycode should be repeated. For | ||||
| # example: "{togglesequence 9}" or "{Down 5}". | ||||
| # | ||||
| # Finally, you can specify sub-aliases that will only be defined while the | ||||
| # current alias is being resolved by adding them after the alias name (but | ||||
| # before the repetition number, if it is specified), for example: | ||||
| #   {quantumstopfromeast name="Trash Dump"} | ||||
| # The value of the sub-alias 'name' is used by quantumstopfromeast (or one of | ||||
| # the aliases it calls) to give a useful name to your quantum dump hauling | ||||
| # route. You can also use this format to temporarily override the value of an | ||||
| # existing regularly-defined alias. | ||||
| # | ||||
| # Sub-aliases must be in one of the following formats: | ||||
| #   subaliasname=valwithnospaces | ||||
| #   subaliasname="val with spaces" | ||||
| #   subaliasname={someotheralias repetitions} | ||||
| # | ||||
| # Ctrl, Alt, and Shift modifiers can be specified for the next keycode by adding | ||||
| # them into the key sequence. For example, Alt-h is written as "{Alt}h". | ||||
| # | ||||
| # Some frequently-used keystrokes are assigned shorthand characters. Think of | ||||
| # them as single-character aliases that don't need to be surrounded in curly | ||||
| # brackets: | ||||
| #   &   expands to {Enter} | ||||
| #   @   expands to {Shift}{Enter} | ||||
| #   ~   expands to {Alt} | ||||
| #   !   expands to {Ctrl} | ||||
| #   ^   expands to {ESC} | ||||
| # | ||||
| # There is also a non-standard alias built into the code for the common | ||||
| # shorthand for "make room": | ||||
| #   r+  expands to r+& | ||||
| # | ||||
| # If you need literal verisons of the shorthand characters, surround them in | ||||
| # curly brackets, for example: "{!}" | ||||
| # | ||||
| # | ||||
| # Add your custom aliases here: | ||||
| # Add your custom aliases here. Example: | ||||
| #   food_stash: {foodprefix}b{Right}{Down 11}p^{permitplants} | ||||
|  | ||||
| @ -0,0 +1,850 @@ | ||||
| .. _quickfort-alias-guide: | ||||
| 
 | ||||
| Quickfort Alias Guide | ||||
| ===================== | ||||
| 
 | ||||
| Aliases allow you to use simple words to represent complicated key sequences | ||||
| when configuring buildings and stockpiles in quickfort ``#query`` blueprints. | ||||
| 
 | ||||
| For example, say you have the following ``#build`` and ``#place`` blueprints: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #build masonry workshop | ||||
|     ~, ~,~,`,`,` | ||||
|     ~,wm,~,`,`,` | ||||
|     ~, ~,~,`,`,` | ||||
| 
 | ||||
|     #place stockpile for mason | ||||
|     ~,~,~,s,s,s | ||||
|     ~,~,~,s,s,s | ||||
|     ~,~,~,s,s,s | ||||
| 
 | ||||
| and you want to configure the stockpile to hold only non-economic ("other") | ||||
| stone and to give to the adjacent mason workshop. You could write the | ||||
| key sequences directly: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #query configure stockpile with expanded key sequences | ||||
|     ~,~,~,s{Down 5}deb{Right}{Down 2}p^,`,` | ||||
|     ~,~,~,g{Left 2}&,                   `,` | ||||
|     ~,~,~,`,                            `,` | ||||
| 
 | ||||
| or you could use aliases: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #query configure stockpile with aliases | ||||
|     ~,~,~,otherstone,`,` | ||||
|     ~,~,~,give2left, `,` | ||||
|     ~,~,~,`,         `,` | ||||
| 
 | ||||
| If the stockpile had only a single tile, you could also replay both aliases in | ||||
| a single cell: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #query configure mason with multiple aliases in one cell | ||||
|     ~,~,~,{otherstone}{give2left},`,` | ||||
|     ~,~,~,`,                      `,` | ||||
|     ~,~,~,`,                      `,` | ||||
| 
 | ||||
| With aliases, blueprints are much easier to read and understand. They also | ||||
| save you from having to copy the same long key sequences everywhere. | ||||
| 
 | ||||
| Alias definition files | ||||
| ---------------------- | ||||
| 
 | ||||
| DFHack comes with a library of aliases for you to use that are always | ||||
| available when you run a ``#query`` blueprint. Many blueprints can be built | ||||
| with just those aliases. This "standard alias library" is stored in | ||||
| :source:`data/quickfort/aliases-common.txt`. The aliases in that file are | ||||
| described at the `bottom of this document <quickfort-alias-library>`. | ||||
| 
 | ||||
| Please do not edit the aliases in the standard library directly. The file will | ||||
| get overwritten when DFHack is updated and you'll lose your changes. Instead, | ||||
| add your custom aliases to :source:`dfhack-config/quickfort/aliases.txt`. | ||||
| Definitions in this file take precedence over any definitions in the standard | ||||
| library. | ||||
| 
 | ||||
| Alias syntax and usage | ||||
| ---------------------- | ||||
| 
 | ||||
| The syntax for defining aliases is: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     aliasname: expansion | ||||
| 
 | ||||
| Where ``aliasname`` is at least two letters or digits long (dashes and | ||||
| underscores are also allowed) and ``expansion`` is whatever you would type | ||||
| into the DF UI. | ||||
| 
 | ||||
| You use an alias by typing its name into a ``#query`` blueprint cell where you | ||||
| want it to be applied. You can use an alias by itself or as part of a larger | ||||
| sequence, potentially with other aliases. If the alias is the only text in the | ||||
| cell, the alias name is matched and its expansion is used. If the alias has | ||||
| other keys before or after it, the alias name must be surrounded in curly | ||||
| brackets (:kbd:`{` and :kbd:`}`). An alias can be surrounded in curly brackets | ||||
| even if it is the only text in the cell, it just isn't necesary. For example, | ||||
| the following blueprint uses the ``aliasname`` alias by itself in the first | ||||
| two rows and uses it as part of a longer sequence in the third row: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #query apply alias 'aliasname' in three different ways | ||||
|     aliasname | ||||
|     {aliasname} | ||||
|     literaltext{aliasname}literaltext | ||||
| 
 | ||||
| For a more concrete example of an alias definition, a simple alias that | ||||
| configures a stockpile to have no bins (:kbd:`C`) and no barrels (:kbd:`E`) | ||||
| assigned to it would look like this: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     nocontainers: CE | ||||
| 
 | ||||
| The alias definition can also contain references to other aliases by including | ||||
| the alias names in curly brackets. For example, ``nocontainers`` could be | ||||
| equivalently defined like this: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     nobins: C | ||||
|     nobarrels: E | ||||
|     nocontainers: {nobins}{nobarrels} | ||||
| 
 | ||||
| Aliases used in alias definitions *must* be surrounded by curly brackets, even | ||||
| if they are the only text in the definition: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     alias1: text1 | ||||
|     alias2: alias1 | ||||
|     alias3: {alias1} | ||||
| 
 | ||||
| Here, ``alias1`` and ``alias3`` expand to ``text1``, but ``alias2`` expands to | ||||
| the literal text ``alias1``. | ||||
| 
 | ||||
| Keycodes | ||||
| ~~~~~~~~ | ||||
| 
 | ||||
| Non-printable characters, like the arrow keys, are represented by their | ||||
| keycode name and are also surrounded by curly brackets, like ``{Right}`` or | ||||
| ``{Enter}``. Keycodes are used exactly like aliases -- they just have special | ||||
| expansions that you wouldn't be able to write yourself. In order to avoid | ||||
| naming conflicts between aliases and keycodes, the convention is to start | ||||
| aliases with a lowercase letter. | ||||
| 
 | ||||
| Any keycode name from the DF interface definition file | ||||
| (data/init/interface.txt) is valid, but only a few keycodes are actually | ||||
| useful for blueprints: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     Up | ||||
|     Down | ||||
|     Left | ||||
|     Right | ||||
|     Enter | ||||
|     ESC | ||||
|     Backspace | ||||
|     Space | ||||
|     Tab | ||||
| 
 | ||||
| Repetitions | ||||
| ~~~~~~~~~~~ | ||||
| 
 | ||||
| Anything enclosed within curly brackets can also have a number, indicating how | ||||
| many times that alias or keycode should be repeated. For example: | ||||
| ``{togglesequence 9}`` or ``{Down 5}`` will repeat the ``togglesequence`` | ||||
| alias nine times and the ``Down`` keycode five times, respectively. | ||||
| 
 | ||||
| Modifier keys | ||||
| ~~~~~~~~~~~~~ | ||||
| 
 | ||||
| Ctrl, Alt, and Shift modifiers can be specified for the next key by adding | ||||
| them into the key sequence. For example, Alt-h is written as ``{Alt}h``. | ||||
| 
 | ||||
| Note that DF does not handle keys that have more than a single modifier, so | ||||
| sequences like ``{Ctrl}{Alt}a`` will result in an error. | ||||
| 
 | ||||
| Shorthand characters | ||||
| ~~~~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| Some frequently-used keycodes are assigned shorthand characters. Think of them | ||||
| as single-character aliases that don't need to be surrounded in curly | ||||
| brackets: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     &   expands to {Enter} | ||||
|     @   expands to {Shift}{Enter} | ||||
|     ~   expands to {Alt} | ||||
|     !   expands to {Ctrl} | ||||
|     ^   expands to {ESC} | ||||
| 
 | ||||
| If you need literal versions of the shorthand characters, surround them in | ||||
| curly brackets, for example: use ``{!}`` for a literal exclamation point. | ||||
| 
 | ||||
| Built-in aliases | ||||
| ~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| Most aliases that come with DFHack are in ``aliases-common.txt``, but there is | ||||
| one alias built into the code for the common shorthand for "make room": | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     r+  expands to r+{Enter} | ||||
| 
 | ||||
| This needs special code support since ``+`` can't normally be used in alias | ||||
| names. You can use it just like any other alias, either by itself in a cell | ||||
| (``r+``) or surrounded in curly brackets (``{r+}``). | ||||
| 
 | ||||
| Sub-aliases | ||||
| ~~~~~~~~~~~ | ||||
| 
 | ||||
| You can specify sub-aliases that will only be defined while the current alias | ||||
| is being resolved. This is useful for "injecting" custom behavior into the | ||||
| middle of a larger alias. For example: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     {quantumstopfromeast name="Trash Dump"} | ||||
| 
 | ||||
| The value of the sub-alias ``name`` is used in the middle of the definition of | ||||
| ``quantumstopfromeast`` to give a useful name to your quantum dump hauling | ||||
| route. Without sub-aliases, we'd have to write something like: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     {quantumstopfromeastprefix}Trash Dump{quantumstopfromeastsuffix} | ||||
| 
 | ||||
| which is more difficult to write and more difficult to understand. | ||||
| 
 | ||||
| A handy technique is to define an alias with some sort of default | ||||
| behavior and then use sub-aliases to override that behavior as necessary. For | ||||
| example, here is a simplified version of the standard ``quantum`` alias that | ||||
| sets up quantum stockpiles: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     quantum_enable: {enableanimals}{enablefood}{enablefurniture}... | ||||
|     quantum: {linksonly}{nocontainers}{quantum_enable} | ||||
| 
 | ||||
| You can use the default behavior of ``quantum_enable`` by just using the | ||||
| ``quantum`` alias by itself. But you can override ``quantum_enable`` to just | ||||
| enable furniture for some specific stockpile like this: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     {quantum quantum_enable={enablefurniture}} | ||||
| 
 | ||||
| Sub-aliases must be in one of the following formats: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     subaliasname=keyswithnospaces | ||||
|     subaliasname="keys with spaces or {aliases}" | ||||
|     subaliasname={singlealias} | ||||
| 
 | ||||
| If you specify both a sub-alias and a number of repetitions, the number for | ||||
| repetitions goes last, right before the :kbd:`}`: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     {alias subaliasname=value repetitions} | ||||
| 
 | ||||
| Beyond query mode | ||||
| ----------------- | ||||
| ``#query`` blueprints normally do things in DF :kbd:`q`\uery mode, but nobody | ||||
| said that we have to *stay* in query mode. ``#query`` blueprints send | ||||
| arbitrary key sequences to Dwarf Fortress. Anything you can do by typing keys | ||||
| into DF, you can do in a ``#query`` blueprint. It is absolutely fine to | ||||
| temporarily exit out of query mode, go into, say, hauling or zone or hotkey | ||||
| mode, and do whatever needs to be done. | ||||
| 
 | ||||
| You just have to make certain to exit out of that alternate mode and get back | ||||
| into :kbd:`q`\uery mode at the end of the key sequence. That way quickfort can | ||||
| continue on configuring the next tile -- a tile configuration that assumes the | ||||
| game is still in query mode. | ||||
| 
 | ||||
| For example, here is the standard library alias for giving a name to a zone: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     namezone: ^i{givename}^q | ||||
| 
 | ||||
| The first :kbd:`\^` exits out of query mode. Then :kbd:`i` enters zones mode. | ||||
| We then reuse the standard alias for giving something a name. Finally, we exit | ||||
| out of zones mode with another :kbd:`\^` and return to :kbd:`q`\uery mode. | ||||
| 
 | ||||
| .. _quickfort-alias-library: | ||||
| 
 | ||||
| The DFHack standard alias library | ||||
| --------------------------------- | ||||
| 
 | ||||
| DFHack comes with many useful aliases for you to use in your blueprints. Many | ||||
| blueprints can be built with just these aliases alone, with no custom aliases | ||||
| required. | ||||
| 
 | ||||
| This section goes through all aliases provided by the DFHack standard alias | ||||
| library, discussing their intended usage and detailing sub-aliases that you | ||||
| can define to customize their behavior. | ||||
| 
 | ||||
| If you do define your own custom aliases in | ||||
| ``dfhack-config/quickfort/aliases.txt``, try to build on the library aliases. | ||||
| For example, if you create an alias to modify particular furniture stockpile | ||||
| settings, start your alias with ``{furnitureprefix}`` instead of | ||||
| ``s{Down 2}``. Using library prefixes will allow sub-aliases to work with your | ||||
| aliases just like they do with library aliases. In this case, using | ||||
| ``{furnitureprefix}`` will allow your stockpile customization alias to work | ||||
| with both stockpiles and hauling routes. | ||||
| 
 | ||||
| Naming aliases | ||||
| ~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| These aliases give descriptive names to workshops, levers, stockpiles, zones, | ||||
| etc. Dwarf Fortress building, stockpile, and zone names have a maximum length | ||||
| of 20 characters. | ||||
| 
 | ||||
| ========  =========== | ||||
| Alias     Sub-aliases | ||||
| ========  =========== | ||||
| givename  name | ||||
| namezone  name | ||||
| ========  =========== | ||||
| 
 | ||||
| ``givename`` works anywhere you can hit Ctrl-n to customize a name, like when | ||||
| the cursor is over buildings and stockpiles. Example: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #place | ||||
|     f(10x2) | ||||
| 
 | ||||
|     #query | ||||
|     {booze}{givename name="booze"} | ||||
| 
 | ||||
| ``namezone`` is intended to be used when over an activity zone. It includes | ||||
| commands to get into zones mode, set the zone name, and get back to query | ||||
| mode. Example: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #zone | ||||
|     n(2x2) | ||||
| 
 | ||||
|     #query | ||||
|     {namezone name="guard dog pen"} | ||||
| 
 | ||||
| Quantum stockpile aliases | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| These aliases make it easy to create :wiki:`minecart stop-based quantum stockpiles <Quantum_stockpile#The_Minecart_Stop>`. | ||||
| 
 | ||||
| +----------------------+------------------+ | ||||
| | Alias                | Sub-aliases      | | ||||
| +======================+==================+ | ||||
| | quantum              | | name           | | ||||
| |                      | | quantum_enable | | ||||
| +----------------------+------------------+ | ||||
| | quantumstopfromnorth | | name           | | ||||
| +----------------------+ | stop_name      | | ||||
| | quantumstopfromsouth | | route_enable   | | ||||
| +----------------------+                  | | ||||
| | quantumstopfromeast  |                  | | ||||
| +----------------------+                  | | ||||
| | quantumstopfromwest  |                  | | ||||
| +----------------------+------------------+ | ||||
| | quantumstop          | | name           | | ||||
| |                      | | stop_name      | | ||||
| |                      | | route_enable   | | ||||
| |                      | | move           | | ||||
| |                      | | move_back      | | ||||
| +----------------------+------------------+ | ||||
| 
 | ||||
| The idea is to use a minecart on a track stop to dump an infinite number of | ||||
| items into a receiving "quantum" stockpile, which significantly simplifies | ||||
| stockpile management. These aliases configure the quantum stockpile and | ||||
| hauling route that make it all work. Here is a complete example for quantum | ||||
| stockpiling weapons, armor, and ammunition. It has a 3x1 feeder stockpile on | ||||
| the bottom (South), the trackstop in the center, and the quantum stockpile on | ||||
| the top (North). Note that the feeder stockpile is the only stockpile that | ||||
| needs to be configured to control which types of items end up in the quantum | ||||
| stockpile. By default, the hauling route and quantum stockpile itself simply | ||||
| accept whatever is put into them. | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #place | ||||
|      ,c | ||||
|      , | ||||
|     pdz(3x1) | ||||
| 
 | ||||
|     #build | ||||
|      , | ||||
|      ,trackstopN | ||||
| 
 | ||||
|     #query message(remember to assign a minecart to the new route) | ||||
|      ,quantum | ||||
|      ,quantumstopfromsouth | ||||
|     nocontainers | ||||
| 
 | ||||
| The ``quantum`` alias configures a 1x1 stockpile to be a quantum stockpile. It | ||||
| bans all containers and prevents the stockpile from being manually filled. By | ||||
| default, it also enables storage of all item categories (except corpses and | ||||
| refuse), so it doesn't really matter what letter you use to place the | ||||
| stockpile. :wiki:`Refuse` is excluded by default since otherwise clothes and | ||||
| armor in the quantum stockpile would rot away. If you want corpses or bones in | ||||
| your quantum stockpile, use :kbd:`y` and/or :kbd:`r` to place the stockpile | ||||
| and the ``quantum`` alias will just enable the remaining types. If you *do* | ||||
| enable refuse in your quantum stockpile, be sure you avoid putting useful | ||||
| clothes or armor in there! | ||||
| 
 | ||||
| The ``quantumstopfromsouth`` alias is run over the track stop and configures | ||||
| the hauling route, again, allowing all item categories into the minecart by | ||||
| default so any item that can go into the feeder stockpile can then be placed | ||||
| in the minecart. It also links the hauling route with the feeder stockpile to | ||||
| the South.The track stop does not need to be fully constructed before the | ||||
| ``#query`` blueprint is run, but the feeder stockpile needs to exist so we can | ||||
| link to it. This means that the three blueprints above can be run one right | ||||
| after another, without any dwarven labor in between them, and the quantum | ||||
| stockpile will work properly. | ||||
| 
 | ||||
| Finally, the ``nocontainers`` alias simply configures the feeder stockpile to | ||||
| not have any containers (which would just get in the way here). If we wanted | ||||
| to be more specific about what item types we want in the quantum stockpile, we | ||||
| could configure the feeder stockpile further, for example with standard | ||||
| `stockpile adjustment aliases <quickfort-stockpile-aliases>`. | ||||
| 
 | ||||
| After the blueprints are run, the last step is to manually assign a minecart | ||||
| to the newly-defined hauling route. | ||||
| 
 | ||||
| You can define sub-aliases to customize how these aliases work, for example to | ||||
| have fine-grained control over what item types are enabled for the route and | ||||
| quantum stockpile. We'll go over those options below, but first, here is an | ||||
| example for how to just give names to everything: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #query message(remember to assign a minecart to the new route) | ||||
|      ,{quantum name="armory quantum"} | ||||
|      ,{quantumstopfromsouth name="Armory quantum" stop_name="Armory quantum stop"}{givename name="armory dumper"}	` | ||||
|     {givename name="armory feeder"} | ||||
| 
 | ||||
| All ``name`` sub-aliases are completely optional, of course. Keep in mind that | ||||
| hauling route names have a maximum length of 22 characters, hauling route stop | ||||
| names have a maximum length of 21 characters, and all other names have a | ||||
| maximum length of 20 characters. | ||||
| 
 | ||||
| If you want to be absolutely certain that nothing ends up in your quantum | ||||
| stockpile other than what you've configured in the feeder stockpile, you can | ||||
| set the ``quantum_enable`` sub-alias for the ``quantum`` alias. This can | ||||
| prevent, for example, somebody's knocked-out tooth from being considered part | ||||
| of your furniture quantum stockpile when it happened to land on it during a | ||||
| fistfight: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #query | ||||
|     {quantum name="furniture quantum" quantum_enable={enablefurniture}} | ||||
| 
 | ||||
| You can have similar control over the hauling route if you need to be more | ||||
| selective about what item types are allowed into the minecart. If you have | ||||
| multiple specialized quantum stockpiles that use a common feeder pile, for | ||||
| example, you can set the ``route_enable`` sub-alias: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #query | ||||
|     {quantumstopfromsouth name="Armory quantum" route_enable="{enableweapons}{enablearmor}{enableammo}"} | ||||
| 
 | ||||
| Any of the `stockpile configuration aliases <quickfort-stockpile-aliases>` can | ||||
| be used for either the ``quantum_enable`` or ``route_enable`` sub-aliases. | ||||
| Experienced Dwarf Fortress players may be wondering how the same aliases can | ||||
| work in both contexts since the keys for entering the configuration screen | ||||
| differ. Fear not! There is some sub-alias magic at work here. If you define | ||||
| your own stockpile configuraiton aliases, you can use the magic yourself by | ||||
| building your aliases on the ``*prefix`` aliases described later in this | ||||
| guide. | ||||
| 
 | ||||
| Finally, the ``quantumstop`` alias is a more general version of the | ||||
| ``quantumstopfrom*`` aliases. The ``quantumstopfrom*`` aliases assume that the | ||||
| feeder stockpile is orthogonally adjacent to your track stop (which is how | ||||
| most people set them up). If your feeder stockpile is somewhere further away, | ||||
| you can use the ``quantumstop`` alias directly. In addition to the | ||||
| ``quantumstopfrom*`` sub-aliases, you can also define the ``move`` and | ||||
| ``move_back`` sub-aliases, which let you specify the cursor keys required to | ||||
| move from the track stop to the feeder stockpile and back again, respectively: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #query | ||||
|     {quantumstop move="{Right 2}{Up}" move_back="{Down}{Left 2}"} | ||||
| 
 | ||||
| Farm plots | ||||
| ~~~~~~~~~~ | ||||
| 
 | ||||
| Sets a farm plot to grow the first or last type of seed in the list of | ||||
| available seeds for all four seasons. The last seed is usually Plump helmet | ||||
| spawn, suitable for post-embark. But if you only have one seed type, that'll | ||||
| be grown instead. | ||||
| 
 | ||||
| +------------------+ | ||||
| | Alias            | | ||||
| +==================+ | ||||
| | growlastcropall  | | ||||
| +------------------+ | ||||
| | growfirstcropall | | ||||
| +------------------+ | ||||
| 
 | ||||
| Instead of these aliases, though, it might be more useful to use the DFHack | ||||
| `autofarm` plugin. | ||||
| 
 | ||||
| Stockpile configuration utility aliases | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| ===============  =========== | ||||
| Alias            Sub-aliases | ||||
| ===============  =========== | ||||
| linksonly | ||||
| nocontainers | ||||
| give2up | ||||
| give2down | ||||
| give2left | ||||
| give2right | ||||
| give10up | ||||
| give10down | ||||
| give10left | ||||
| give10right | ||||
| give             move | ||||
| togglesequence | ||||
| togglesequence2 | ||||
| ===============  =========== | ||||
| 
 | ||||
| ``linksonly`` and ``nocontainers`` set the named basic properties on | ||||
| stockpiles. ``nocontainers`` sets bins and barrels to 0, but does not affect | ||||
| wheelbarrows since the hotkeys for changing the number of wheelbarrows depend | ||||
| on whether you have the DFHack `stockpiles` plugin active. It is better to set | ||||
| the number of wheelbarrows via the `quickfort` ``stockpiles_max_wheelbarrows`` | ||||
| setting. It is set to ``0`` by default. | ||||
| 
 | ||||
| The ``give*`` aliases set a stockpile to give to a workshop or another | ||||
| stockpile located at the indicated number of tiles in the indicated direction | ||||
| from the current tile. For example, here we use the ``give2down`` alias to | ||||
| connect an ``otherstone`` stockpile with a mason workshop: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #place | ||||
|     s,s,s,s,s | ||||
|     s, , , ,s | ||||
|     s, , , ,s | ||||
|     s, , , ,s | ||||
|     s,s,s,s,s | ||||
| 
 | ||||
|     #build | ||||
|     `,`,`,`,` | ||||
|     `, , , ,` | ||||
|     `, ,wm,,` | ||||
|     `, , , ,` | ||||
|     `,`,`,`,` | ||||
| 
 | ||||
|     #query | ||||
|      , ,give2down | ||||
|     otherstone | ||||
| 
 | ||||
| and here is a generic stone stockpile that gives to a stockpile that only | ||||
| takes flux: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #place | ||||
|     s(10x1) | ||||
|     s(10x10) | ||||
| 
 | ||||
|     #query | ||||
|     flux | ||||
|     , | ||||
|     give2up | ||||
| 
 | ||||
| If you want to give to some other tile that is not already covered by the | ||||
| ``give2*`` or ``give10*`` aliases, you can use the generic ``give`` alias and | ||||
| specify the movement keys yourself in the ``move`` sub-alias. Here is how to | ||||
| give to a stockpile or workshop one z-level above, 9 tiles to the left, and 14 | ||||
| tiles down: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     #query | ||||
|     {give move="<{Left 9}{Down 14}"} | ||||
| 
 | ||||
| ``togglesequence`` and ``togglesequence2`` send ``{Down}{Enter}`` or | ||||
| ``{Down 2}{Enter}`` to toggle adjacent (or alternating) items in a list. This | ||||
| is useful when toggling a bunch of related item types in the stockpile config. | ||||
| For example, the ``dye`` and ``tallow`` aliases in the standard alias library | ||||
| need to select specific items from long lists: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     dye:    {foodprefix}b{Right}{Down 11}{Right}{Down 28}{togglesequence 4}^ | ||||
|     tallow: {foodprefix}b{Right}{Down 13}{Right}{Down}{togglesequence2 811}^ | ||||
| 
 | ||||
| .. _quickfort-stockpile-aliases: | ||||
| 
 | ||||
| Stockpile adjustment aliases | ||||
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||||
| 
 | ||||
| For each stockpile item category, there are three standard aliases: | ||||
| 
 | ||||
| * ``*prefix`` aliases enter the stockpile configuration screen and position | ||||
|   the cursor at a particular item category in the left-most column, ready for | ||||
|   further keys that configure the elements within that category. All other | ||||
|   stockpile adjustment aliases are built on these prefixes. You can use them | ||||
|   yourself to create stockpile adjustment aliases that aren't already covered | ||||
|   by the standard library aliases. Using the library prefix instead of | ||||
|   creating your own also allows your stockpile configuration aliases to be | ||||
|   used for both stockpiles and hauling routes. For example, here is the | ||||
|   library definition for ``booze``: | ||||
| 
 | ||||
| :: | ||||
| 
 | ||||
|     booze: {foodprefix}b{Right}{Down 5}p{Down}p^ | ||||
| 
 | ||||
| * ``enable*`` aliases enter the stockpile configuration screen, enable all | ||||
|   subtypes of the named category, and exit the stockpile configuration screen | ||||
| * ``disable*`` aliases enter the stockpile configuration screen, disable all | ||||
|   subtypes of the named category, and exit the stockpile configuration screen | ||||
| 
 | ||||
| ====================  ====================  ===================== | ||||
| Prefix                Enable                Disable | ||||
| ====================  ====================  ===================== | ||||
| animalsprefix         enableanimals         disableanimals | ||||
| foodprefix            enablefood            disablefood | ||||
| furnitureprefix       enablefurniture       disablefurniture | ||||
| corpsesprefix         enablecorpses         disablecorpses | ||||
| refuseprefix          enablerefuse          disablerefuse | ||||
| stoneprefix           enablestone           disablestone | ||||
| ammoprefix            enableammo            disableammo | ||||
| coinsprefix           enablecoins           disablecoins | ||||
| barsprefix            enablebars            disablebars | ||||
| gemsprefix            enablegems            disablegems | ||||
| finishedgoodsprefix   enablefinishedgoods   disablefinishedgoods | ||||
| leatherprefix         enableleather         disableleather | ||||
| clothprefix           enablecloth           disablecloth | ||||
| woodprefix            enablewood            disablewood | ||||
| weaponsprefix         enableweapons         disableweapons | ||||
| armorprefix           enablearmor           disablearmor | ||||
| sheetprefix           enablesheet           disablesheet | ||||
| ====================  ====================  ===================== | ||||
| 
 | ||||
| Then, for each item category, there are aliases that manipulate interesting | ||||
| subsets of that category: | ||||
| 
 | ||||
| * Exclusive aliases forbid everthing within a category and then enable only | ||||
|   the named item type (or named class of items) | ||||
| * ``forbid*`` aliases forbid the named type and leave the rest of the | ||||
|   stockpile untouched. | ||||
| * ``permit*`` aliases permit the named type and leave the rest of the | ||||
|   stockpile untouched. | ||||
| 
 | ||||
| Note that for specific item types (items in the third stockpile configuration | ||||
| column), you can only toggle the item type on and off. Aliases can't know | ||||
| whether sending the ``{Enter}`` key will enable or disable the type. The | ||||
| ``forbid*`` aliases that affect these item types assume the item type was | ||||
| enabled and toggle it off. Likewise, the ``permit*`` aliases assume the item | ||||
| type was disabled and toggle it on. If the item type is not in the expected | ||||
| enabled/disabled state when the alias is run, the aliases will not behave | ||||
| properly. | ||||
| 
 | ||||
| Animal stockpile adjustments | ||||
| ```````````````````````````` | ||||
| 
 | ||||
| ===========  ===========  ============ | ||||
| Exclusive    Forbid       Permit | ||||
| ===========  ===========  ============ | ||||
| cages        forbidcages  permitcages | ||||
| traps        forbidtraps  permittraps | ||||
| ===========  ===========  ============ | ||||
| 
 | ||||
| Food stockpile adjustments | ||||
| `````````````````````````` | ||||
| 
 | ||||
| ===============  ====================  ==================== | ||||
| Exclusive        Forbid                Permit | ||||
| ===============  ====================  ==================== | ||||
| preparedfood     forbidpreparedfood    permitpreparedfood | ||||
| unpreparedfish   forbidunpreparedfish  permitunpreparedfish | ||||
| plants           forbidplants          permitplants | ||||
| booze            forbidbooze           permitbooze | ||||
| seeds            forbidseeds           permitseeds | ||||
| dye              forbiddye             permitdye | ||||
| tallow           forbidtallow          permittallow | ||||
| miscliquid       forbidmiscliquid      permitmiscliquid | ||||
| ===============  ====================  ==================== | ||||
| 
 | ||||
| Furniture stockpile adjustments | ||||
| ``````````````````````````````` | ||||
| 
 | ||||
| +-----------+ | ||||
| | Exclusive | | ||||
| +===========+ | ||||
| | pots      | | ||||
| +-----------+ | ||||
| | bags      | | ||||
| +-----------+ | ||||
| | buckets   | | ||||
| +-----------+ | ||||
| | sand      | | ||||
| +-----------+ | ||||
| 
 | ||||
| Notes: | ||||
| 
 | ||||
| * Because of the limitations of Dwarf Fortress, ``bags`` cannot distinguish | ||||
|   between empty and filled bags | ||||
| 
 | ||||
| Refuse stockpile adjustments | ||||
| ```````````````````````````` | ||||
| 
 | ||||
| ===========  ==================  ================== | ||||
| Exclusive    Forbid              Permit | ||||
| ===========  ==================  ================== | ||||
| bodyparts    forbidbodyparts     permitbodyparts | ||||
| rawhides     forbidrawhides      permitrawhides | ||||
| tannedhides  forbidtannedhides   permittannedhides | ||||
| skulls       forbidskulls        permitskulls | ||||
| bones        forbidbones         permitbones | ||||
| shells       forbidshells        permitshells | ||||
| teeth        forbidteeth         permitteeth | ||||
| horns        forbidhorns         permithorns | ||||
| hair         forbidhair          permithair | ||||
| craftrefuse  forbidcraftrefuse   permitcraftrefuse | ||||
| ===========  ==================  ================== | ||||
| 
 | ||||
| Notes: | ||||
| 
 | ||||
| * ``bodyparts`` includes remains/corpses and rotten rawhdes. | ||||
| * ``craftrefuse`` includes everything a craftsdwarf can use: skulls, bones, | ||||
|   shells, teeth, horns, and hair. | ||||
| 
 | ||||
| Stone stockpile adjustments | ||||
| ``````````````````````````` | ||||
| 
 | ||||
| =============  ====================  ==================== | ||||
| Exclusive      Forbid                Permit | ||||
| =============  ====================  ==================== | ||||
| metal          forbidmetal           permitmetal | ||||
| iron           forbidiron            permitiron | ||||
| economic       forbideconomic        permiteconomic | ||||
| flux           forbidflux            permitflux | ||||
| plaster        forbidplaster         permitplaster | ||||
| coalproducing  forbidcoalproducing   permitcoalproducing | ||||
| otherstone     forbidotherstone      permitotherstone | ||||
| bauxite        forbidbauxite         permitbauxite | ||||
| clay           forbidclay            permitclay | ||||
| =============  ====================  ==================== | ||||
| 
 | ||||
| Ammo stockpile adjustments | ||||
| `````````````````````````` | ||||
| 
 | ||||
| ===============  ==================== | ||||
| Exclusive        Forbid | ||||
| ===============  ==================== | ||||
| bolts | ||||
| \                forbidmetalbolts | ||||
| \                forbidwoodenbolts | ||||
| \                forbidbonebolts | ||||
| ===============  ==================== | ||||
| 
 | ||||
| Bar stockpile adjustments | ||||
| ````````````````````````` | ||||
| 
 | ||||
| ===========  ================== | ||||
| Exclusive    Forbid | ||||
| ===========  ================== | ||||
| bars         forbidbars | ||||
| metalbars    forbidmetalbars | ||||
| ironbars     forbidironbars | ||||
| steelbars    forbidsteelbars | ||||
| pigironbars  forbidpigironbars | ||||
| otherbars    forbidotherbars | ||||
| coal         forbidcoal | ||||
| potash       forbidpotash | ||||
| ash          forbidash | ||||
| pearlash     forbidpearlash | ||||
| soap         forbidsoap | ||||
| blocks       forbidblocks | ||||
| ===========  ================== | ||||
| 
 | ||||
| Gem stockpile adjustments | ||||
| ````````````````````````` | ||||
| 
 | ||||
| ===========  ================ | ||||
| Exclusive    Forbid | ||||
| ===========  ================ | ||||
| roughgems    forbidroughgems | ||||
| roughglass   forbidroughglass | ||||
| cutgems      forbidcutgems | ||||
| cutglass     forbidcutglass | ||||
| cutstone     forbidcutstone | ||||
| ===========  ================ | ||||
| 
 | ||||
| Finished goods stockpile adjustments | ||||
| ```````````````````````````````````` | ||||
| 
 | ||||
| +-----------+ | ||||
| | Exclusive | | ||||
| +===========+ | ||||
| | jugs      | | ||||
| +-----------+ | ||||
| 
 | ||||
| Cloth stockpile adjustments | ||||
| ``````````````````````````` | ||||
| 
 | ||||
| +------------------+ | ||||
| | Exclusive        | | ||||
| +==================+ | ||||
| | thread           | | ||||
| +------------------+ | ||||
| | adamantinethread | | ||||
| +------------------+ | ||||
| | cloth            | | ||||
| +------------------+ | ||||
| | adamantinecloth  | | ||||
| +------------------+ | ||||
| 
 | ||||
| Weapon stockpile adjustments | ||||
| ```````````````````````````` | ||||
| 
 | ||||
| =================  ========================  ==================== | ||||
| Exclusive          Forbid                    Permit | ||||
| =================  ========================  ==================== | ||||
| \                  forbidweapons             permitweapons | ||||
| \                  forbidtrapcomponents      permittrapcomponents | ||||
| metalweapons       forbidmetalweapons        permitmetalweapons | ||||
| \                  forbidstoneweapons        permitstoneweapons | ||||
| \                  forbidotherweapons        permitotherweapons | ||||
| ironweapons        forbidironweapons         permitironweapons | ||||
| copperweapons      forbidcopperweapons       permitcopperweapons | ||||
| steelweapons       forbidsteelweapons        permitsteelweapons | ||||
| masterworkweapons  forbidmasterworkweapons   permitmasterworkweapons | ||||
| artifactweapons    forbidartifactweapons     permitartifactweapons | ||||
| =================  ========================  ==================== | ||||
| 
 | ||||
| Armor stockpile adjustments | ||||
| ``````````````````````````` | ||||
| 
 | ||||
| ===============  ======================  ==================== | ||||
| Exclusive        Forbid                  Permit | ||||
| ===============  ======================  ==================== | ||||
| metalarmor       forbidmetalarmor        permitmetalarmor | ||||
| otherarmor       forbidotherarmor        permitotherarmor | ||||
| ironarmor        forbidironarmor         permitironarmor | ||||
| copperarmor      forbidcopperarmor       permitcopperarmor | ||||
| steelarmor       forbidsteelarmor        permitsteelarmor | ||||
| masterworkarmor  forbidmasterworkarmor   permitmasterworkarmor | ||||
| artifactarmor    forbidartifactarmor     permitartifactarmor | ||||
| ===============  ======================  ==================== | ||||
		Loading…
	
		Reference in New Issue