When enabled, every new negative dwarven thought will be multiplied by a factor (2 by default).
@@ -2421,7 +2468,7 @@ twice.
-
+
Lua or ruby scripts placed in the hack/scripts/ directory are considered for
execution as if they were native DFHack commands. They are listed at the end
of the 'ls' command output.
@@ -2430,7 +2477,7 @@ only be listed by ls if called as 'ls -a'. This is intended as a way to hide
scripts that are obscure, developer-oriented, or should be used as keybindings.
Some notable scripts:
-
+
Scripts in this subdirectory fix various bugs and issues, some of them obscure.
fix/dead-units
@@ -2456,22 +2503,22 @@ caused by autodump bugs or other hacking mishaps.
-
+
Scripts that implement dialogs inserted into the main game window are put in this
directory.
-
+
If called in dwarf mode, makes DF immediately auto-save the game by setting a flag
normally used in seasonal auto-save.
-
+
Run setfps <number> to set the FPS cap at runtime, in case you want to watch
combat in slow motion or something :)
-
+
Wakes up sleeping units, cancels breaks and stops parties either everywhere,
or in the burrows given as arguments. In return, adds bad thoughts about
noise, tiredness and lack of protection. Also, the units with interrupted
@@ -2479,7 +2526,7 @@ breaks will go on break again a lot sooner. The script is intended for
emergencies, e.g. when a siege appears, and all your military is partying.
-
+
Instantly grow seeds inside farming plots.
With no argument, this command list the various seed types currently in
use in your farming plots.
@@ -2491,7 +2538,7 @@ growcrops plump 40
-
+
This script remove negative thoughts from your dwarves. Very useful against
tantrum spirals.
The script can target a single creature, when used with the him argument,
@@ -2505,7 +2552,7 @@ but in the short term your dwarves will get much more joyful.
quickly after you unpause.
-
+
Kills any unit of a given race.
With no argument, lists the available races.
With the special argument him, targets only the selected creature.
@@ -2531,7 +2578,7 @@ slayrace elve magma
-
+
Create an infinite magma source on a tile.
This script registers a map tile as a magma source, and every 12 game ticks
that tile receives 1 new unit of flowing magma.
@@ -2546,7 +2593,7 @@ To remove all placed sources, call
magmasource stop
With no argument, this command shows an help message and list existing sources.
-
+
A script to designate an area for digging according to a plan in csv format.
This script, inspired from quickfort, can designate an area for digging.
Your plan should be stored in a .csv file like this:
@@ -2564,7 +2611,7 @@ To skip a row in your design, use a single
;.<
The script takes the plan filename, starting from the root df folder.
-
+
Similar to fastdwarf, per-creature.
To make any creature superfast, target it ingame using 'v' and:
@@ -2574,17 +2621,17 @@ superdwarf add
This plugin also shortens the 'sleeping' and 'on break' periods of targets.
-
+
Remove all 'aquifer' tag from the map blocks. Irreversible.
-
+
Focus a body part ingame, and this script will display the cause of death of
the creature.
-
+
These tools work by displaying dialogs or overlays in the game window, and
are mostly implemented by lua scripts.
@@ -2595,7 +2642,7 @@ display the word "DFHack" on the screen somewhere while active.
guideline because it arguably just fixes small usability bugs in the game UI.
-
+
Implemented by the manipulator plugin. To activate, open the unit screen and
press 'l'.
This tool implements a Dwarf Therapist-like interface within the game UI. The
@@ -2631,13 +2678,13 @@ cursor onto that cell instead of toggling it.
directly to the main dwarf mode screen.
-
+
To use, bind to a key and activate in the 'k' mode.
While active, use the suggested keys to switch the usual liquids parameters, and Enter
to select the target area and apply changes.
-
+
To use, bind to a key and activate in the 'q' mode.
Lists mechanisms connected to the building, and their links. Navigating the list centers
the view on the relevant linked buildings.
@@ -2646,7 +2693,7 @@ focus on the current one. Shift-Enter has an effect equivalent to pressing Enter
re-entering the mechanisms ui.
-
+
Backed by the rename plugin, this script allows entering the desired name
via a simple dialog in the game ui.
-
+
To use, bind to a key and activate in the 'q' mode, either immediately or after opening
the assign owner page.
The script lists other rooms owned by the same owner, or by the unit selected in the assign
list, and allows unassigning them.
-
+
Bind to a key, and activate in the Equip->View/Customize page of the military screen.
Depending on the cursor location, it rewrites all 'individual choice weapon' entries
in the selected squad or position to use a specific weapon type matching the assigned
@@ -2678,9 +2725,84 @@ only that entry, and does it even if it is not 'individual choice'.
Rationale: individual choice seems to be unreliable when there is a weapon shortage,
and may lead to inappropriate weapons being selected.
+
+
+
Bind to a key, and activate in the Hauling menu with the cursor over a Guide order.
+
The script displays the cached path that will be used by the order; the game
+computes it when the order is executed for the first time.
+
+
+
+
Bind to a key, and activate with a job selected in a workshop in the 'q' mode.
+
The script shows a list of the input reagents of the selected job, and allows changing
+them like the job item-type and job item-material commands.
+
Specifically, pressing the 'i' key pops up a dialog that lets you select an item
+type from a list. Pressing 'm', unless the item type does not allow a material,
+lets you choose a material.
+
+
Warning
+
Due to the way input reagent matching works in DF, you must select an item type
+if you select a material, or the material will be matched incorrectly in some cases.
+If you press 'm' without choosing an item type, the script will auto-choose it
+if there is only one valid choice, or pop up an error message box instead of the
+material selection dialog.
+
+
Note that both materials and item types presented in the dialogs are filtered
+by the job input flags, and even the selected item type for material selection,
+or material for item type selection. Many jobs would let you select only one
+input item type.
+
For example, if you choose a plant input item type for your prepare meal job,
+it will only let you select cookable materials.
+
If you choose a barrel item instead (meaning things stored in barrels, like
+drink or milk), it will let you select any material, since in this case the
+material is matched against the barrel itself. Then, if you select, say, iron,
+and then try to change the input item type, now it won't let you select plant;
+you have to unset the material first.
+
+
+
+
Bind to a key, and activate with a job selected in a workshop in the 'q' mode.
+
This script provides a simple interface to constraints managed by the workflow
+plugin. When active, it displays a list of all constraints applicable to the
+current job, and their current status.
+
A constraint specifies a certain range to be compared against either individual
+item or whole stack count, an item type and optionally a material. When the
+current count is below the lower bound of the range, the job is resumed; if it
+is above or equal to the top bound, it will be suspended. Within the range, the
+specific constraint has no effect on the job; others may still affect it.
+
Pressing 'c' switches the current constraint between counting stacks or items.
+Pressing 'm' lets you input the range directly; 'e', 'r', 'd', 'f' adjust the
+bounds by 1, 5, or 25 depending on the direction and the 'c' setting (counting
+items and expanding the range each gives a 5x bonus).
+
Pressing 'n' produces a list of possible outputs of this job as guessed by
+workflow, and lets you create a new constraint by just choosing one. If you
+don't see the choice you want in the list, it likely means you have to adjust
+the job material first using job item-material or gui/workshop-job,
+as described in workflow documentation above. In this manner, this feature
+can be used for troubleshooting jobs that don't match the right constraints.
+
+
+
+
Bind to a key, and activate when viewing a weapon rack in the 'q' mode.
+
This script is part of a group of related fixes to make the armory storage
+work again. The existing issues are:
+
+- Weapon racks have to each be assigned to a specific squad, like with
+beds/boxes/armor stands and individual squad members, but nothing in
+the game does this. This issue is what this script addresses.
+- Even if assigned by the script, the game will unassign the racks again without a binary patch.
+Check the comments for this bug to get it:
+http://www.bay12games.com/dwarves/mantisbt/view.php?id=1445
+- Haulers still take equpment stored in the armory away to the stockpiles,
+unless the fix-armory plugin above is used.
+
+
The script interface simply lets you designate one of the squads that
+are assigned to the barracks/armory containing the selected stand as
+the intended user.
+
-
+
These plugins, when activated via configuration UI or by detecting certain
structures in RAWs, modify the game engine behavior concerning the target
objects to add features not otherwise present.
@@ -2691,20 +2813,20 @@ technical challenge, and do not represent any long-term plans to produce more
similar modifications of the game.
-
+
The siege-engine plugin enables siege engines to be linked to stockpiles, and
aimed at an arbitrary rectangular area across Z levels, instead of the original
four directions. Also, catapults can be ordered to load arbitrary objects, not
just stones.
-
+
Siege engines are a very interesting feature, but sadly almost useless in the current state
because they haven't been updated since 2D and can only aim in four directions. This is an
attempt to bring them more up to date until Toady has time to work on it. Actual improvements,
e.g. like making siegers bring their own, are something only Toady can do.
-
+
The configuration front-end to the plugin is implemented by the gui/siege-engine
script. Bind it to a key and activate after selecting a siege engine in 'q' mode.
The main mode displays the current target, selected ammo item type, linked stockpiles and
@@ -2725,7 +2847,7 @@ menu.
-
+
The power-meter plugin implements a modified pressure plate that detects power being
supplied to gear boxes built in the four adjacent N/S/W/E tiles.
The configuration front-end is implemented by the gui/power-meter script. Bind it to a
@@ -2734,11 +2856,11 @@ key and activate after selecting Pressure Plate in the build menu.
configuration page, but configures parameters relevant to the modded power meter building.
-
+
The steam-engine plugin detects custom workshops with STEAM_ENGINE in
their token, and turns them into real steam engines.
-
+
The vanilla game contains only water wheels and windmills as sources of
power, but windmills give relatively little power, and water wheels require
flowing water, which must either be a real river and thus immovable and
@@ -2749,7 +2871,7 @@ it can be done just by combining existing features of the game engine
in a new way with some glue code and a bit of custom logic.
-
+
The workshop needs water as its input, which it takes via a
passable floor tile below it, like usual magma workshops do.
The magma version also needs magma.
@@ -2773,7 +2895,7 @@ short axles that can be built later than both of the engines.
-
+
In order to operate the engine, queue the Stoke Boiler job (optionally
on repeat). A furnace operator will come, possibly bringing a bar of fuel,
and perform it. As a result, a "boiling water" item will appear
@@ -2804,7 +2926,7 @@ decrease it by further 4%, and also decrease the whole steam
use rate by 10%.
-
+
The engine must be constructed using barrel, pipe and piston
from fire-safe, or in the magma version magma-safe metals.
During operation weak parts get gradually worn out, and
@@ -2813,7 +2935,7 @@ toppled during operation by a building destroyer, or a
tantruming dwarf.
-
+
It should be safe to load and view engine-using fortresses
from a DF version without DFHack installed, except that in such
case the engines won't work. However actually making modifications
@@ -2824,7 +2946,7 @@ being generated.
-
+
This plugin makes reactions with names starting with SPATTER_ADD_
produce contaminants on the items instead of improvements. The produced
contaminants are immune to being washed away by water or destroyed by
diff --git a/Readme.rst b/Readme.rst
index 39d44d975..ad42035a5 100644
--- a/Readme.rst
+++ b/Readme.rst
@@ -231,6 +231,8 @@ Controls speedydwarf and teledwarf. Speedydwarf makes dwarves move quickly and p
* 'fastdwarf 1 1' enables both
* 'fastdwarf 0' disables both
* 'fastdwarf 1' enables speedydwarf and disables teledwarf
+ * 'fastdwarf 2 ...' sets a native debug flag in the game memory
+ that implements an even more aggressive version of speedydwarf.
Game interface
==============
@@ -1070,6 +1072,51 @@ Subcommands that persist until disabled or DF quit:
:military-color-assigned: Color squad candidates already assigned to other squads in brown/green
to make them stand out more in the list.
+fix-armory
+----------
+
+Enables a fix for storage of squad equipment in barracks.
+
+Specifically, it prevents your haulers from moving that equipment
+to stockpiles, and instead queues jobs to store it on weapon racks,
+armor stands, and in containers.
+
+.. note::
+
+ In order to actually be used, weapon racks have to be patched and
+ assigned to a squad. See documentation for ``gui/assign-rack`` below.
+
+ Also, the default capacity of armor stands is way too low, so check out
+ http://www.bay12games.com/dwarves/mantisbt/view.php?id=1445
+ for a patch addressing that too.
+
+Note that the buildings in the armory are used as follows:
+
+* Weapon racks when fixed are used to store any assigned weapons.
+ Each rack belongs to a specific squad, and can store up to 5 weapons.
+
+* Armor stands belong to specific squad members and are used for
+ armor and shields. By default one stand can store one item of each
+ type (hence one boot or gauntlet); if patched, the limit is raised to 2,
+ which should be sufficient.
+
+* Cabinets are used to store assigned clothing for a specific squad member.
+ They are **never** used to store owned clothing.
+
+* Chests (boxes, etc) are used for a flask, backpack or quiver assigned
+ to the squad member. Due to a bug, food is dropped out of the backpack
+ when it is stored.
+
+Contrary to the common misconception, all these uses are controlled by the
+*Individual Equipment* usage flag; the Squad Equipment mode means nothing.
+
+.. warning::
+
+ Although armor stands, cabinets and chests properly belong only to one
+ squad member, the owner of the building used to create the barracks will
+ randomly use any containers inside the room. Thus, it is recommended to
+ always create the armory from a weapon rack.
+
Mode switch and reclaim
=======================
@@ -1213,6 +1260,9 @@ amount goes above or below the limit. The gap specifies how much below the limit
the amount has to drop before jobs are resumed; this is intended to reduce
the frequency of jobs being toggled.
+Check out the ``gui/workflow`` script below for a simple front-end integrated
+in the game UI.
+
Constraint examples
...................
@@ -1896,6 +1946,102 @@ Rationale: individual choice seems to be unreliable when there is a weapon short
and may lead to inappropriate weapons being selected.
+gui/guide-path
+==============
+
+Bind to a key, and activate in the Hauling menu with the cursor over a Guide order.
+
+The script displays the cached path that will be used by the order; the game
+computes it when the order is executed for the first time.
+
+
+gui/workshop-job
+================
+
+Bind to a key, and activate with a job selected in a workshop in the 'q' mode.
+
+The script shows a list of the input reagents of the selected job, and allows changing
+them like the ``job item-type`` and ``job item-material`` commands.
+
+Specifically, pressing the 'i' key pops up a dialog that lets you select an item
+type from a list. Pressing 'm', unless the item type does not allow a material,
+lets you choose a material.
+
+.. warning::
+
+ Due to the way input reagent matching works in DF, you must select an item type
+ if you select a material, or the material will be matched incorrectly in some cases.
+ If you press 'm' without choosing an item type, the script will auto-choose it
+ if there is only one valid choice, or pop up an error message box instead of the
+ material selection dialog.
+
+Note that both materials and item types presented in the dialogs are filtered
+by the job input flags, and even the selected item type for material selection,
+or material for item type selection. Many jobs would let you select only one
+input item type.
+
+For example, if you choose a *plant* input item type for your prepare meal job,
+it will only let you select cookable materials.
+
+If you choose a *barrel* item instead (meaning things stored in barrels, like
+drink or milk), it will let you select any material, since in this case the
+material is matched against the barrel itself. Then, if you select, say, iron,
+and then try to change the input item type, now it won't let you select *plant*;
+you have to unset the material first.
+
+
+gui/workflow
+============
+
+Bind to a key, and activate with a job selected in a workshop in the 'q' mode.
+
+This script provides a simple interface to constraints managed by the workflow
+plugin. When active, it displays a list of all constraints applicable to the
+current job, and their current status.
+
+A constraint specifies a certain range to be compared against either individual
+*item* or whole *stack* count, an item type and optionally a material. When the
+current count is below the lower bound of the range, the job is resumed; if it
+is above or equal to the top bound, it will be suspended. Within the range, the
+specific constraint has no effect on the job; others may still affect it.
+
+Pressing 'c' switches the current constraint between counting stacks or items.
+Pressing 'm' lets you input the range directly; 'e', 'r', 'd', 'f' adjust the
+bounds by 1, 5, or 25 depending on the direction and the 'c' setting (counting
+items and expanding the range each gives a 5x bonus).
+
+Pressing 'n' produces a list of possible outputs of this job as guessed by
+workflow, and lets you create a new constraint by just choosing one. If you
+don't see the choice you want in the list, it likely means you have to adjust
+the job material first using ``job item-material`` or ``gui/workshop-job``,
+as described in ``workflow`` documentation above. In this manner, this feature
+can be used for troubleshooting jobs that don't match the right constraints.
+
+
+gui/assign-rack
+===============
+
+Bind to a key, and activate when viewing a weapon rack in the 'q' mode.
+
+This script is part of a group of related fixes to make the armory storage
+work again. The existing issues are:
+
+* Weapon racks have to each be assigned to a specific squad, like with
+ beds/boxes/armor stands and individual squad members, but nothing in
+ the game does this. This issue is what this script addresses.
+
+* Even if assigned by the script, **the game will unassign the racks again without a binary patch**.
+ Check the comments for this bug to get it:
+ http://www.bay12games.com/dwarves/mantisbt/view.php?id=1445
+
+* Haulers still take equpment stored in the armory away to the stockpiles,
+ unless the ``fix-armory`` plugin above is used.
+
+The script interface simply lets you designate one of the squads that
+are assigned to the barracks/armory containing the selected stand as
+the intended user.
+
+
=============
Behavior Mods
=============