|
|
|
@ -0,0 +1,801 @@
|
|
|
|
|
.. _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` (installed under the ``hack`` folder
|
|
|
|
|
in your DFHack installation). 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``.
|
|
|
|
|
|
|
|
|
|
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. As a simple example, the ``givename`` alias is defined
|
|
|
|
|
like this::
|
|
|
|
|
|
|
|
|
|
givename: !n{name}&
|
|
|
|
|
|
|
|
|
|
Note the use of the ``name`` alias inside of the ``givename`` expansion. In your
|
|
|
|
|
``#query`` blueprint, you could write something like this, say, while over your
|
|
|
|
|
main drawbridge::
|
|
|
|
|
|
|
|
|
|
{givename name="Front Gate"}
|
|
|
|
|
|
|
|
|
|
The value that you give the sub-alias ``name`` will be used when the
|
|
|
|
|
``givename`` alias is expanded. Without sub-aliases, we'd have to define ``givename`` like this::
|
|
|
|
|
|
|
|
|
|
givenameprefix: !n
|
|
|
|
|
givenamesuffix: &
|
|
|
|
|
|
|
|
|
|
and use it like this::
|
|
|
|
|
|
|
|
|
|
{givenameprefix}Front Gate{givenamesuffix}
|
|
|
|
|
|
|
|
|
|
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}}
|
|
|
|
|
|
|
|
|
|
If an alias uses a sub-alias in its expansion, but the sub-alias is not defined when the alias is used, quickfort will halt the ``#query`` blueprint with an error. If you want your aliases to work regardless of whether sub-aliases are defined, then you must define them with default values like ``quantum_enable`` above.
|
|
|
|
|
|
|
|
|
|
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="Steel bar quantum" route_enable="{enablebars}{steelbars}"}
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
=============== ====================== ====================
|