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 supporteddevelop
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