Add documentation.

develop
Alexander Gavrilov 2012-10-29 20:32:39 +04:00
parent 7219200d17
commit abeb9d0f0c
2 changed files with 392 additions and 124 deletions

@ -434,94 +434,99 @@ access DF memory and allow for easier development of new tools.</p>
<li><a class="reference internal" href="#fixmerchants" id="id79">fixmerchants</a></li> <li><a class="reference internal" href="#fixmerchants" id="id79">fixmerchants</a></li>
<li><a class="reference internal" href="#fixveins" id="id80">fixveins</a></li> <li><a class="reference internal" href="#fixveins" id="id80">fixveins</a></li>
<li><a class="reference internal" href="#tweak" id="id81">tweak</a></li> <li><a class="reference internal" href="#tweak" id="id81">tweak</a></li>
<li><a class="reference internal" href="#fix-armory" id="id82">fix-armory</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#mode-switch-and-reclaim" id="id82">Mode switch and reclaim</a><ul> <li><a class="reference internal" href="#mode-switch-and-reclaim" id="id83">Mode switch and reclaim</a><ul>
<li><a class="reference internal" href="#lair" id="id83">lair</a></li> <li><a class="reference internal" href="#lair" id="id84">lair</a></li>
<li><a class="reference internal" href="#mode" id="id84">mode</a></li> <li><a class="reference internal" href="#mode" id="id85">mode</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#visualizer-and-data-export" id="id85">Visualizer and data export</a><ul> <li><a class="reference internal" href="#visualizer-and-data-export" id="id86">Visualizer and data export</a><ul>
<li><a class="reference internal" href="#ssense-stonesense" id="id86">ssense / stonesense</a></li> <li><a class="reference internal" href="#ssense-stonesense" id="id87">ssense / stonesense</a></li>
<li><a class="reference internal" href="#mapexport" id="id87">mapexport</a></li> <li><a class="reference internal" href="#mapexport" id="id88">mapexport</a></li>
<li><a class="reference internal" href="#dwarfexport" id="id88">dwarfexport</a></li> <li><a class="reference internal" href="#dwarfexport" id="id89">dwarfexport</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#job-management" id="id89">Job management</a><ul> <li><a class="reference internal" href="#job-management" id="id90">Job management</a><ul>
<li><a class="reference internal" href="#job" id="id90">job</a></li> <li><a class="reference internal" href="#job" id="id91">job</a></li>
<li><a class="reference internal" href="#job-material" id="id91">job-material</a></li> <li><a class="reference internal" href="#job-material" id="id92">job-material</a></li>
<li><a class="reference internal" href="#job-duplicate" id="id92">job-duplicate</a></li> <li><a class="reference internal" href="#job-duplicate" id="id93">job-duplicate</a></li>
<li><a class="reference internal" href="#workflow" id="id93">workflow</a><ul> <li><a class="reference internal" href="#workflow" id="id94">workflow</a><ul>
<li><a class="reference internal" href="#function" id="id94">Function</a></li> <li><a class="reference internal" href="#function" id="id95">Function</a></li>
<li><a class="reference internal" href="#constraint-examples" id="id95">Constraint examples</a></li> <li><a class="reference internal" href="#constraint-examples" id="id96">Constraint examples</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#fortress-activity-management" id="id96">Fortress activity management</a><ul> <li><a class="reference internal" href="#fortress-activity-management" id="id97">Fortress activity management</a><ul>
<li><a class="reference internal" href="#seedwatch" id="id97">seedwatch</a></li> <li><a class="reference internal" href="#seedwatch" id="id98">seedwatch</a></li>
<li><a class="reference internal" href="#zone" id="id98">zone</a><ul> <li><a class="reference internal" href="#zone" id="id99">zone</a><ul>
<li><a class="reference internal" href="#usage-with-single-units" id="id99">Usage with single units</a></li> <li><a class="reference internal" href="#usage-with-single-units" id="id100">Usage with single units</a></li>
<li><a class="reference internal" href="#usage-with-filters" id="id100">Usage with filters</a></li> <li><a class="reference internal" href="#usage-with-filters" id="id101">Usage with filters</a></li>
<li><a class="reference internal" href="#mass-renaming" id="id101">Mass-renaming</a></li> <li><a class="reference internal" href="#mass-renaming" id="id102">Mass-renaming</a></li>
<li><a class="reference internal" href="#cage-zones" id="id102">Cage zones</a></li> <li><a class="reference internal" href="#cage-zones" id="id103">Cage zones</a></li>
<li><a class="reference internal" href="#examples" id="id103">Examples</a></li> <li><a class="reference internal" href="#examples" id="id104">Examples</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#autonestbox" id="id104">autonestbox</a></li> <li><a class="reference internal" href="#autonestbox" id="id105">autonestbox</a></li>
<li><a class="reference internal" href="#autobutcher" id="id105">autobutcher</a></li> <li><a class="reference internal" href="#autobutcher" id="id106">autobutcher</a></li>
<li><a class="reference internal" href="#autolabor" id="id106">autolabor</a></li> <li><a class="reference internal" href="#autolabor" id="id107">autolabor</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#other" id="id107">Other</a><ul> <li><a class="reference internal" href="#other" id="id108">Other</a><ul>
<li><a class="reference internal" href="#catsplosion" id="id108">catsplosion</a></li> <li><a class="reference internal" href="#catsplosion" id="id109">catsplosion</a></li>
<li><a class="reference internal" href="#dfusion" id="id109">dfusion</a></li> <li><a class="reference internal" href="#dfusion" id="id110">dfusion</a></li>
<li><a class="reference internal" href="#misery" id="id110">misery</a></li> <li><a class="reference internal" href="#misery" id="id111">misery</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#scripts" id="id111">Scripts</a><ul> <li><a class="reference internal" href="#scripts" id="id112">Scripts</a><ul>
<li><a class="reference internal" href="#fix" id="id112">fix/*</a></li> <li><a class="reference internal" href="#fix" id="id113">fix/*</a></li>
<li><a class="reference internal" href="#gui" id="id113">gui/*</a></li> <li><a class="reference internal" href="#gui" id="id114">gui/*</a></li>
<li><a class="reference internal" href="#quicksave" id="id114">quicksave</a></li> <li><a class="reference internal" href="#quicksave" id="id115">quicksave</a></li>
<li><a class="reference internal" href="#setfps" id="id115">setfps</a></li> <li><a class="reference internal" href="#setfps" id="id116">setfps</a></li>
<li><a class="reference internal" href="#siren" id="id116">siren</a></li> <li><a class="reference internal" href="#siren" id="id117">siren</a></li>
<li><a class="reference internal" href="#growcrops" id="id117">growcrops</a></li> <li><a class="reference internal" href="#growcrops" id="id118">growcrops</a></li>
<li><a class="reference internal" href="#removebadthoughts" id="id118">removebadthoughts</a></li> <li><a class="reference internal" href="#removebadthoughts" id="id119">removebadthoughts</a></li>
<li><a class="reference internal" href="#slayrace" id="id119">slayrace</a></li> <li><a class="reference internal" href="#slayrace" id="id120">slayrace</a></li>
<li><a class="reference internal" href="#magmasource" id="id120">magmasource</a></li> <li><a class="reference internal" href="#magmasource" id="id121">magmasource</a></li>
<li><a class="reference internal" href="#digfort" id="id121">digfort</a></li> <li><a class="reference internal" href="#digfort" id="id122">digfort</a></li>
<li><a class="reference internal" href="#superdwarf" id="id122">superdwarf</a></li> <li><a class="reference internal" href="#superdwarf" id="id123">superdwarf</a></li>
<li><a class="reference internal" href="#drainaquifer" id="id123">drainaquifer</a></li> <li><a class="reference internal" href="#drainaquifer" id="id124">drainaquifer</a></li>
<li><a class="reference internal" href="#deathcause" id="id124">deathcause</a></li> <li><a class="reference internal" href="#deathcause" id="id125">deathcause</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#in-game-interface-tools" id="id125">In-game interface tools</a><ul> <li><a class="reference internal" href="#in-game-interface-tools" id="id126">In-game interface tools</a><ul>
<li><a class="reference internal" href="#dwarf-manipulator" id="id126">Dwarf Manipulator</a></li> <li><a class="reference internal" href="#dwarf-manipulator" id="id127">Dwarf Manipulator</a></li>
<li><a class="reference internal" href="#gui-liquids" id="id127">gui/liquids</a></li> <li><a class="reference internal" href="#gui-liquids" id="id128">gui/liquids</a></li>
<li><a class="reference internal" href="#gui-mechanisms" id="id128">gui/mechanisms</a></li> <li><a class="reference internal" href="#gui-mechanisms" id="id129">gui/mechanisms</a></li>
<li><a class="reference internal" href="#gui-rename" id="id129">gui/rename</a></li> <li><a class="reference internal" href="#gui-rename" id="id130">gui/rename</a></li>
<li><a class="reference internal" href="#gui-room-list" id="id130">gui/room-list</a></li> <li><a class="reference internal" href="#gui-room-list" id="id131">gui/room-list</a></li>
<li><a class="reference internal" href="#gui-choose-weapons" id="id131">gui/choose-weapons</a></li> <li><a class="reference internal" href="#gui-choose-weapons" id="id132">gui/choose-weapons</a></li>
<li><a class="reference internal" href="#gui-guide-path" id="id133">gui/guide-path</a></li>
<li><a class="reference internal" href="#gui-workshop-job" id="id134">gui/workshop-job</a></li>
<li><a class="reference internal" href="#gui-workflow" id="id135">gui/workflow</a></li>
<li><a class="reference internal" href="#gui-assign-rack" id="id136">gui/assign-rack</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#behavior-mods" id="id132">Behavior Mods</a><ul> <li><a class="reference internal" href="#behavior-mods" id="id137">Behavior Mods</a><ul>
<li><a class="reference internal" href="#siege-engine" id="id133">Siege Engine</a><ul> <li><a class="reference internal" href="#siege-engine" id="id138">Siege Engine</a><ul>
<li><a class="reference internal" href="#rationale" id="id134">Rationale</a></li> <li><a class="reference internal" href="#rationale" id="id139">Rationale</a></li>
<li><a class="reference internal" href="#configuration-ui" id="id135">Configuration UI</a></li> <li><a class="reference internal" href="#configuration-ui" id="id140">Configuration UI</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#power-meter" id="id136">Power Meter</a></li> <li><a class="reference internal" href="#power-meter" id="id141">Power Meter</a></li>
<li><a class="reference internal" href="#steam-engine" id="id137">Steam Engine</a><ul> <li><a class="reference internal" href="#steam-engine" id="id142">Steam Engine</a><ul>
<li><a class="reference internal" href="#id1" id="id138">Rationale</a></li> <li><a class="reference internal" href="#id1" id="id143">Rationale</a></li>
<li><a class="reference internal" href="#construction" id="id139">Construction</a></li> <li><a class="reference internal" href="#construction" id="id144">Construction</a></li>
<li><a class="reference internal" href="#operation" id="id140">Operation</a></li> <li><a class="reference internal" href="#operation" id="id145">Operation</a></li>
<li><a class="reference internal" href="#explosions" id="id141">Explosions</a></li> <li><a class="reference internal" href="#explosions" id="id146">Explosions</a></li>
<li><a class="reference internal" href="#save-files" id="id142">Save files</a></li> <li><a class="reference internal" href="#save-files" id="id147">Save files</a></li>
</ul> </ul>
</li> </li>
<li><a class="reference internal" href="#add-spatter" id="id143">Add Spatter</a></li> <li><a class="reference internal" href="#add-spatter" id="id148">Add Spatter</a></li>
</ul> </ul>
</li> </li>
</ul> </ul>
@ -732,6 +737,8 @@ by 'reveal hell'. This is nice for digging under rivers.</p>
<li>'fastdwarf 1 1' enables both</li> <li>'fastdwarf 1 1' enables both</li>
<li>'fastdwarf 0' disables both</li> <li>'fastdwarf 0' disables both</li>
<li>'fastdwarf 1' enables speedydwarf and disables teledwarf</li> <li>'fastdwarf 1' enables speedydwarf and disables teledwarf</li>
<li>'fastdwarf 2 ...' sets a native debug flag in the game memory
that implements an even more aggressive version of speedydwarf.</li>
</ul> </ul>
</blockquote> </blockquote>
</div> </div>
@ -1846,11 +1853,49 @@ to make them stand out more in the list.</td>
</tbody> </tbody>
</table> </table>
</div> </div>
<div class="section" id="fix-armory">
<h3><a class="toc-backref" href="#id82">fix-armory</a></h3>
<p>Enables a fix for storage of squad equipment in barracks.</p>
<p>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.</p>
<div class="note">
<p class="first admonition-title">Note</p>
<p>In order to actually be used, weapon racks have to be patched and
assigned to a squad. See documentation for <tt class="docutils literal"><span class="pre">gui/assign-rack</span></tt> below.</p>
<p class="last">Also, the default capacity of armor stands is way too low, so check out
<a class="reference external" href="http://www.bay12games.com/dwarves/mantisbt/view.php?id=1445">http://www.bay12games.com/dwarves/mantisbt/view.php?id=1445</a>
for a patch addressing that too.</p>
</div>
<p>Note that the buildings in the armory are used as follows:</p>
<ul class="simple">
<li>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.</li>
<li>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.</li>
<li>Cabinets are used to store assigned clothing for a specific squad member.
They are <strong>never</strong> used to store owned clothing.</li>
<li>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.</li>
</ul>
<p>Contrary to the common misconception, all these uses are controlled by the
<em>Individual Equipment</em> usage flag; the Squad Equipment mode means nothing.</p>
<div class="warning">
<p class="first admonition-title">Warning</p>
<p class="last">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.</p>
</div>
</div>
</div> </div>
<div class="section" id="mode-switch-and-reclaim"> <div class="section" id="mode-switch-and-reclaim">
<h2><a class="toc-backref" href="#id82">Mode switch and reclaim</a></h2> <h2><a class="toc-backref" href="#id83">Mode switch and reclaim</a></h2>
<div class="section" id="lair"> <div class="section" id="lair">
<h3><a class="toc-backref" href="#id83">lair</a></h3> <h3><a class="toc-backref" href="#id84">lair</a></h3>
<p>This command allows you to mark the map as 'monster lair', preventing item <p>This command allows you to mark the map as 'monster lair', preventing item
scatter on abandon. When invoked as 'lair reset', it does the opposite.</p> scatter on abandon. When invoked as 'lair reset', it does the opposite.</p>
<p>Unlike reveal, this command doesn't save the information about tiles - you <p>Unlike reveal, this command doesn't save the information about tiles - you
@ -1870,7 +1915,7 @@ won't be able to restore state of real monster lairs using 'lair reset'.</p>
</blockquote> </blockquote>
</div> </div>
<div class="section" id="mode"> <div class="section" id="mode">
<h3><a class="toc-backref" href="#id84">mode</a></h3> <h3><a class="toc-backref" href="#id85">mode</a></h3>
<p>This command lets you see and change the game mode directly. <p>This command lets you see and change the game mode directly.
Not all combinations are good for every situation and most of them will Not all combinations are good for every situation and most of them will
produce undesirable results. There are a few good ones though.</p> produce undesirable results. There are a few good ones though.</p>
@ -1890,9 +1935,9 @@ You just created a returnable mountain home and gained an adventurer.</p>
</div> </div>
</div> </div>
<div class="section" id="visualizer-and-data-export"> <div class="section" id="visualizer-and-data-export">
<h2><a class="toc-backref" href="#id85">Visualizer and data export</a></h2> <h2><a class="toc-backref" href="#id86">Visualizer and data export</a></h2>
<div class="section" id="ssense-stonesense"> <div class="section" id="ssense-stonesense">
<h3><a class="toc-backref" href="#id86">ssense / stonesense</a></h3> <h3><a class="toc-backref" href="#id87">ssense / stonesense</a></h3>
<p>An isometric visualizer that runs in a second window. This requires working <p>An isometric visualizer that runs in a second window. This requires working
graphics acceleration and at least a dual core CPU (otherwise it will slow graphics acceleration and at least a dual core CPU (otherwise it will slow
down DF).</p> down DF).</p>
@ -1905,19 +1950,19 @@ thread: <a class="reference external" href="http://www.bay12forums.com/smf/index
<a class="reference external" href="http://df.magmawiki.com/index.php/Utility:Stonesense/Content_repository">http://df.magmawiki.com/index.php/Utility:Stonesense/Content_repository</a></p> <a class="reference external" href="http://df.magmawiki.com/index.php/Utility:Stonesense/Content_repository">http://df.magmawiki.com/index.php/Utility:Stonesense/Content_repository</a></p>
</div> </div>
<div class="section" id="mapexport"> <div class="section" id="mapexport">
<h3><a class="toc-backref" href="#id87">mapexport</a></h3> <h3><a class="toc-backref" href="#id88">mapexport</a></h3>
<p>Export the current loaded map as a file. This will be eventually usable <p>Export the current loaded map as a file. This will be eventually usable
with visualizers.</p> with visualizers.</p>
</div> </div>
<div class="section" id="dwarfexport"> <div class="section" id="dwarfexport">
<h3><a class="toc-backref" href="#id88">dwarfexport</a></h3> <h3><a class="toc-backref" href="#id89">dwarfexport</a></h3>
<p>Export dwarves to RuneSmith-compatible XML.</p> <p>Export dwarves to RuneSmith-compatible XML.</p>
</div> </div>
</div> </div>
<div class="section" id="job-management"> <div class="section" id="job-management">
<h2><a class="toc-backref" href="#id89">Job management</a></h2> <h2><a class="toc-backref" href="#id90">Job management</a></h2>
<div class="section" id="job"> <div class="section" id="job">
<h3><a class="toc-backref" href="#id90">job</a></h3> <h3><a class="toc-backref" href="#id91">job</a></h3>
<p>Command for general job query and manipulation.</p> <p>Command for general job query and manipulation.</p>
<dl class="docutils"> <dl class="docutils">
<dt>Options:</dt> <dt>Options:</dt>
@ -1936,7 +1981,7 @@ in a workshop, or the unit/jobs screen.</dd>
</dl> </dl>
</div> </div>
<div class="section" id="job-material"> <div class="section" id="job-material">
<h3><a class="toc-backref" href="#id91">job-material</a></h3> <h3><a class="toc-backref" href="#id92">job-material</a></h3>
<p>Alter the material of the selected job.</p> <p>Alter the material of the selected job.</p>
<p>Invoked as:</p> <p>Invoked as:</p>
<pre class="literal-block"> <pre class="literal-block">
@ -1954,7 +1999,7 @@ over the first available choice with the matching material.</li>
</blockquote> </blockquote>
</div> </div>
<div class="section" id="job-duplicate"> <div class="section" id="job-duplicate">
<h3><a class="toc-backref" href="#id92">job-duplicate</a></h3> <h3><a class="toc-backref" href="#id93">job-duplicate</a></h3>
<dl class="docutils"> <dl class="docutils">
<dt>Duplicate the selected job in a workshop:</dt> <dt>Duplicate the selected job in a workshop:</dt>
<dd><ul class="first last simple"> <dd><ul class="first last simple">
@ -1965,7 +2010,7 @@ instantly duplicates the job.</li>
</dl> </dl>
</div> </div>
<div class="section" id="workflow"> <div class="section" id="workflow">
<h3><a class="toc-backref" href="#id93">workflow</a></h3> <h3><a class="toc-backref" href="#id94">workflow</a></h3>
<p>Manage control of repeat jobs.</p> <p>Manage control of repeat jobs.</p>
<p>Usage:</p> <p>Usage:</p>
<blockquote> <blockquote>
@ -1989,7 +2034,7 @@ Otherwise, enables or disables any of the following options:</p>
</dl> </dl>
</blockquote> </blockquote>
<div class="section" id="function"> <div class="section" id="function">
<h4><a class="toc-backref" href="#id94">Function</a></h4> <h4><a class="toc-backref" href="#id95">Function</a></h4>
<p>When the plugin is enabled, it protects all repeat jobs from removal. <p>When the plugin is enabled, it protects all repeat jobs from removal.
If they do disappear due to any cause, they are immediately re-added to their If they do disappear due to any cause, they are immediately re-added to their
workshop and suspended.</p> workshop and suspended.</p>
@ -1998,9 +2043,11 @@ produce that kind of item are automatically suspended and resumed as the item
amount goes above or below the limit. The gap specifies how much below the limit 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 amount has to drop before jobs are resumed; this is intended to reduce
the frequency of jobs being toggled.</p> the frequency of jobs being toggled.</p>
<p>Check out the <tt class="docutils literal">gui/workflow</tt> script below for a simple front-end integrated
in the game UI.</p>
</div> </div>
<div class="section" id="constraint-examples"> <div class="section" id="constraint-examples">
<h4><a class="toc-backref" href="#id95">Constraint examples</a></h4> <h4><a class="toc-backref" href="#id96">Constraint examples</a></h4>
<p>Keep metal bolts within 900-1000, and wood/bone within 150-200.</p> <p>Keep metal bolts within 900-1000, and wood/bone within 150-200.</p>
<pre class="literal-block"> <pre class="literal-block">
workflow amount AMMO:ITEM_AMMO_BOLTS/METAL 1000 100 workflow amount AMMO:ITEM_AMMO_BOLTS/METAL 1000 100
@ -2039,15 +2086,15 @@ command.
</div> </div>
</div> </div>
<div class="section" id="fortress-activity-management"> <div class="section" id="fortress-activity-management">
<h2><a class="toc-backref" href="#id96">Fortress activity management</a></h2> <h2><a class="toc-backref" href="#id97">Fortress activity management</a></h2>
<div class="section" id="seedwatch"> <div class="section" id="seedwatch">
<h3><a class="toc-backref" href="#id97">seedwatch</a></h3> <h3><a class="toc-backref" href="#id98">seedwatch</a></h3>
<p>Tool for turning cooking of seeds and plants on/off depending on how much you <p>Tool for turning cooking of seeds and plants on/off depending on how much you
have of them.</p> have of them.</p>
<p>See 'seedwatch help' for detailed description.</p> <p>See 'seedwatch help' for detailed description.</p>
</div> </div>
<div class="section" id="zone"> <div class="section" id="zone">
<h3><a class="toc-backref" href="#id98">zone</a></h3> <h3><a class="toc-backref" href="#id99">zone</a></h3>
<p>Helps a bit with managing activity zones (pens, pastures and pits) and cages.</p> <p>Helps a bit with managing activity zones (pens, pastures and pits) and cages.</p>
<p>Options:</p> <p>Options:</p>
<blockquote> <blockquote>
@ -2146,7 +2193,7 @@ for war/hunt). Negatable.</td>
</table> </table>
</blockquote> </blockquote>
<div class="section" id="usage-with-single-units"> <div class="section" id="usage-with-single-units">
<h4><a class="toc-backref" href="#id99">Usage with single units</a></h4> <h4><a class="toc-backref" href="#id100">Usage with single units</a></h4>
<p>One convenient way to use the zone tool is to bind the command 'zone assign' to <p>One convenient way to use the zone tool is to bind the command 'zone assign' to
a hotkey, maybe also the command 'zone set'. Place the in-game cursor over a hotkey, maybe also the command 'zone set'. Place the in-game cursor over
a pen/pasture or pit, use 'zone set' to mark it. Then you can select units a pen/pasture or pit, use 'zone set' to mark it. Then you can select units
@ -2155,7 +2202,7 @@ and use 'zone assign' to assign them to their new home. Allows pitting your
own dwarves, by the way.</p> own dwarves, by the way.</p>
</div> </div>
<div class="section" id="usage-with-filters"> <div class="section" id="usage-with-filters">
<h4><a class="toc-backref" href="#id100">Usage with filters</a></h4> <h4><a class="toc-backref" href="#id101">Usage with filters</a></h4>
<p>All filters can be used together with the 'assign' command.</p> <p>All filters can be used together with the 'assign' command.</p>
<p>Restrictions: It's not possible to assign units who are inside built cages <p>Restrictions: It's not possible to assign units who are inside built cages
or chained because in most cases that won't be desirable anyways. or chained because in most cases that won't be desirable anyways.
@ -2173,14 +2220,14 @@ are not properly added to your own stocks; slaughtering them should work).</p>
<p>Most filters can be negated (e.g. 'not grazer' -&gt; race is not a grazer).</p> <p>Most filters can be negated (e.g. 'not grazer' -&gt; race is not a grazer).</p>
</div> </div>
<div class="section" id="mass-renaming"> <div class="section" id="mass-renaming">
<h4><a class="toc-backref" href="#id101">Mass-renaming</a></h4> <h4><a class="toc-backref" href="#id102">Mass-renaming</a></h4>
<p>Using the 'nick' command you can set the same nickname for multiple units. <p>Using the 'nick' command you can set the same nickname for multiple units.
If used without 'assign', 'all' or 'count' it will rename all units in the If used without 'assign', 'all' or 'count' it will rename all units in the
current default target zone. Combined with 'assign', 'all' or 'count' (and current default target zone. Combined with 'assign', 'all' or 'count' (and
further optional filters) it will rename units matching the filter conditions.</p> further optional filters) it will rename units matching the filter conditions.</p>
</div> </div>
<div class="section" id="cage-zones"> <div class="section" id="cage-zones">
<h4><a class="toc-backref" href="#id102">Cage zones</a></h4> <h4><a class="toc-backref" href="#id103">Cage zones</a></h4>
<p>Using the 'tocages' command you can assign units to a set of cages, for example <p>Using the 'tocages' command you can assign units to a set of cages, for example
a room next to your butcher shop(s). They will be spread evenly among available a room next to your butcher shop(s). They will be spread evenly among available
cages to optimize hauling to and butchering from them. For this to work you need cages to optimize hauling to and butchering from them. For this to work you need
@ -2191,7 +2238,7 @@ would make no sense, but can be used together with 'nick' or 'remnick' and all
the usual filters.</p> the usual filters.</p>
</div> </div>
<div class="section" id="examples"> <div class="section" id="examples">
<h4><a class="toc-backref" href="#id103">Examples</a></h4> <h4><a class="toc-backref" href="#id104">Examples</a></h4>
<dl class="docutils"> <dl class="docutils">
<dt><tt class="docutils literal">zone assign all own ALPACA minage 3 maxage 10</tt></dt> <dt><tt class="docutils literal">zone assign all own ALPACA minage 3 maxage 10</tt></dt>
<dd>Assign all own alpacas who are between 3 and 10 years old to the selected <dd>Assign all own alpacas who are between 3 and 10 years old to the selected
@ -2217,7 +2264,7 @@ on the current default zone.</dd>
</div> </div>
</div> </div>
<div class="section" id="autonestbox"> <div class="section" id="autonestbox">
<h3><a class="toc-backref" href="#id104">autonestbox</a></h3> <h3><a class="toc-backref" href="#id105">autonestbox</a></h3>
<p>Assigns unpastured female egg-layers to nestbox zones. Requires that you create <p>Assigns unpastured female egg-layers to nestbox zones. Requires that you create
pen/pasture zones above nestboxes. If the pen is bigger than 1x1 the nestbox pen/pasture zones above nestboxes. If the pen is bigger than 1x1 the nestbox
must be in the top left corner. Only 1 unit will be assigned per pen, regardless must be in the top left corner. Only 1 unit will be assigned per pen, regardless
@ -2246,7 +2293,7 @@ frames between runs.</td>
</blockquote> </blockquote>
</div> </div>
<div class="section" id="autobutcher"> <div class="section" id="autobutcher">
<h3><a class="toc-backref" href="#id105">autobutcher</a></h3> <h3><a class="toc-backref" href="#id106">autobutcher</a></h3>
<p>Assigns lifestock for slaughter once it reaches a specific count. Requires that <p>Assigns lifestock for slaughter once it reaches a specific count. Requires that
you add the target race(s) to a watch list. Only tame units will be processed.</p> you add the target race(s) to a watch list. Only tame units will be processed.</p>
<p>Named units will be completely ignored (to protect specific animals from <p>Named units will be completely ignored (to protect specific animals from
@ -2354,7 +2401,7 @@ autobutcher.bat
</pre> </pre>
</div> </div>
<div class="section" id="autolabor"> <div class="section" id="autolabor">
<h3><a class="toc-backref" href="#id106">autolabor</a></h3> <h3><a class="toc-backref" href="#id107">autolabor</a></h3>
<p>Automatically manage dwarf labors.</p> <p>Automatically manage dwarf labors.</p>
<p>When enabled, autolabor periodically checks your dwarves and enables or <p>When enabled, autolabor periodically checks your dwarves and enables or
disables labors. It tries to keep as many dwarves as possible busy but disables labors. It tries to keep as many dwarves as possible busy but
@ -2368,14 +2415,14 @@ while it is enabled.</p>
</div> </div>
</div> </div>
<div class="section" id="other"> <div class="section" id="other">
<h2><a class="toc-backref" href="#id107">Other</a></h2> <h2><a class="toc-backref" href="#id108">Other</a></h2>
<div class="section" id="catsplosion"> <div class="section" id="catsplosion">
<h3><a class="toc-backref" href="#id108">catsplosion</a></h3> <h3><a class="toc-backref" href="#id109">catsplosion</a></h3>
<p>Makes cats just <em>multiply</em>. It is not a good idea to run this more than once or <p>Makes cats just <em>multiply</em>. It is not a good idea to run this more than once or
twice.</p> twice.</p>
</div> </div>
<div class="section" id="dfusion"> <div class="section" id="dfusion">
<h3><a class="toc-backref" href="#id109">dfusion</a></h3> <h3><a class="toc-backref" href="#id110">dfusion</a></h3>
<p>This is the DFusion lua plugin system by warmist/darius, running as a DFHack plugin.</p> <p>This is the DFusion lua plugin system by warmist/darius, running as a DFHack plugin.</p>
<p>See the bay12 thread for details: <a class="reference external" href="http://www.bay12forums.com/smf/index.php?topic=69682.15">http://www.bay12forums.com/smf/index.php?topic=69682.15</a></p> <p>See the bay12 thread for details: <a class="reference external" href="http://www.bay12forums.com/smf/index.php?topic=69682.15">http://www.bay12forums.com/smf/index.php?topic=69682.15</a></p>
<p>Confirmed working DFusion plugins:</p> <p>Confirmed working DFusion plugins:</p>
@ -2397,7 +2444,7 @@ twice.</p>
</div> </div>
</div> </div>
<div class="section" id="misery"> <div class="section" id="misery">
<h3><a class="toc-backref" href="#id110">misery</a></h3> <h3><a class="toc-backref" href="#id111">misery</a></h3>
<p>When enabled, every new negative dwarven thought will be multiplied by a factor (2 by default).</p> <p>When enabled, every new negative dwarven thought will be multiplied by a factor (2 by default).</p>
<p>Usage:</p> <p>Usage:</p>
<table class="docutils field-list" frame="void" rules="none"> <table class="docutils field-list" frame="void" rules="none">
@ -2421,7 +2468,7 @@ twice.</p>
</div> </div>
</div> </div>
<div class="section" id="scripts"> <div class="section" id="scripts">
<h1><a class="toc-backref" href="#id111">Scripts</a></h1> <h1><a class="toc-backref" href="#id112">Scripts</a></h1>
<p>Lua or ruby scripts placed in the hack/scripts/ directory are considered for <p>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 execution as if they were native DFHack commands. They are listed at the end
of the 'ls' command output.</p> of the 'ls' command output.</p>
@ -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.</p> scripts that are obscure, developer-oriented, or should be used as keybindings.</p>
<p>Some notable scripts:</p> <p>Some notable scripts:</p>
<div class="section" id="fix"> <div class="section" id="fix">
<h2><a class="toc-backref" href="#id112">fix/*</a></h2> <h2><a class="toc-backref" href="#id113">fix/*</a></h2>
<p>Scripts in this subdirectory fix various bugs and issues, some of them obscure.</p> <p>Scripts in this subdirectory fix various bugs and issues, some of them obscure.</p>
<ul> <ul>
<li><p class="first">fix/dead-units</p> <li><p class="first">fix/dead-units</p>
@ -2456,22 +2503,22 @@ caused by autodump bugs or other hacking mishaps.</p>
</ul> </ul>
</div> </div>
<div class="section" id="gui"> <div class="section" id="gui">
<h2><a class="toc-backref" href="#id113">gui/*</a></h2> <h2><a class="toc-backref" href="#id114">gui/*</a></h2>
<p>Scripts that implement dialogs inserted into the main game window are put in this <p>Scripts that implement dialogs inserted into the main game window are put in this
directory.</p> directory.</p>
</div> </div>
<div class="section" id="quicksave"> <div class="section" id="quicksave">
<h2><a class="toc-backref" href="#id114">quicksave</a></h2> <h2><a class="toc-backref" href="#id115">quicksave</a></h2>
<p>If called in dwarf mode, makes DF immediately auto-save the game by setting a flag <p>If called in dwarf mode, makes DF immediately auto-save the game by setting a flag
normally used in seasonal auto-save.</p> normally used in seasonal auto-save.</p>
</div> </div>
<div class="section" id="setfps"> <div class="section" id="setfps">
<h2><a class="toc-backref" href="#id115">setfps</a></h2> <h2><a class="toc-backref" href="#id116">setfps</a></h2>
<p>Run <tt class="docutils literal">setfps &lt;number&gt;</tt> to set the FPS cap at runtime, in case you want to watch <p>Run <tt class="docutils literal">setfps &lt;number&gt;</tt> to set the FPS cap at runtime, in case you want to watch
combat in slow motion or something :)</p> combat in slow motion or something :)</p>
</div> </div>
<div class="section" id="siren"> <div class="section" id="siren">
<h2><a class="toc-backref" href="#id116">siren</a></h2> <h2><a class="toc-backref" href="#id117">siren</a></h2>
<p>Wakes up sleeping units, cancels breaks and stops parties either everywhere, <p>Wakes up sleeping units, cancels breaks and stops parties either everywhere,
or in the burrows given as arguments. In return, adds bad thoughts about or in the burrows given as arguments. In return, adds bad thoughts about
noise, tiredness and lack of protection. Also, the units with interrupted 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.</p> emergencies, e.g. when a siege appears, and all your military is partying.</p>
</div> </div>
<div class="section" id="growcrops"> <div class="section" id="growcrops">
<h2><a class="toc-backref" href="#id117">growcrops</a></h2> <h2><a class="toc-backref" href="#id118">growcrops</a></h2>
<p>Instantly grow seeds inside farming plots.</p> <p>Instantly grow seeds inside farming plots.</p>
<p>With no argument, this command list the various seed types currently in <p>With no argument, this command list the various seed types currently in
use in your farming plots. use in your farming plots.
@ -2491,7 +2538,7 @@ growcrops plump 40
</pre> </pre>
</div> </div>
<div class="section" id="removebadthoughts"> <div class="section" id="removebadthoughts">
<h2><a class="toc-backref" href="#id118">removebadthoughts</a></h2> <h2><a class="toc-backref" href="#id119">removebadthoughts</a></h2>
<p>This script remove negative thoughts from your dwarves. Very useful against <p>This script remove negative thoughts from your dwarves. Very useful against
tantrum spirals.</p> tantrum spirals.</p>
<p>The script can target a single creature, when used with the <tt class="docutils literal">him</tt> argument, <p>The script can target a single creature, when used with the <tt class="docutils literal">him</tt> argument,
@ -2505,7 +2552,7 @@ but in the short term your dwarves will get much more joyful.</p>
quickly after you unpause.</p> quickly after you unpause.</p>
</div> </div>
<div class="section" id="slayrace"> <div class="section" id="slayrace">
<h2><a class="toc-backref" href="#id119">slayrace</a></h2> <h2><a class="toc-backref" href="#id120">slayrace</a></h2>
<p>Kills any unit of a given race.</p> <p>Kills any unit of a given race.</p>
<p>With no argument, lists the available races.</p> <p>With no argument, lists the available races.</p>
<p>With the special argument <tt class="docutils literal">him</tt>, targets only the selected creature.</p> <p>With the special argument <tt class="docutils literal">him</tt>, targets only the selected creature.</p>
@ -2531,7 +2578,7 @@ slayrace elve magma
</pre> </pre>
</div> </div>
<div class="section" id="magmasource"> <div class="section" id="magmasource">
<h2><a class="toc-backref" href="#id120">magmasource</a></h2> <h2><a class="toc-backref" href="#id121">magmasource</a></h2>
<p>Create an infinite magma source on a tile.</p> <p>Create an infinite magma source on a tile.</p>
<p>This script registers a map tile as a magma source, and every 12 game ticks <p>This script registers a map tile as a magma source, and every 12 game ticks
that tile receives 1 new unit of flowing magma.</p> that tile receives 1 new unit of flowing magma.</p>
@ -2546,7 +2593,7 @@ To remove all placed sources, call <tt class="docutils literal">magmasource stop
<p>With no argument, this command shows an help message and list existing sources.</p> <p>With no argument, this command shows an help message and list existing sources.</p>
</div> </div>
<div class="section" id="digfort"> <div class="section" id="digfort">
<h2><a class="toc-backref" href="#id121">digfort</a></h2> <h2><a class="toc-backref" href="#id122">digfort</a></h2>
<p>A script to designate an area for digging according to a plan in csv format.</p> <p>A script to designate an area for digging according to a plan in csv format.</p>
<p>This script, inspired from quickfort, can designate an area for digging. <p>This script, inspired from quickfort, can designate an area for digging.
Your plan should be stored in a .csv file like this:</p> Your plan should be stored in a .csv file like this:</p>
@ -2564,7 +2611,7 @@ To skip a row in your design, use a single <tt class="docutils literal">;</tt>.<
<p>The script takes the plan filename, starting from the root df folder.</p> <p>The script takes the plan filename, starting from the root df folder.</p>
</div> </div>
<div class="section" id="superdwarf"> <div class="section" id="superdwarf">
<h2><a class="toc-backref" href="#id122">superdwarf</a></h2> <h2><a class="toc-backref" href="#id123">superdwarf</a></h2>
<p>Similar to fastdwarf, per-creature.</p> <p>Similar to fastdwarf, per-creature.</p>
<p>To make any creature superfast, target it ingame using 'v' and:</p> <p>To make any creature superfast, target it ingame using 'v' and:</p>
<pre class="literal-block"> <pre class="literal-block">
@ -2574,17 +2621,17 @@ superdwarf add
<p>This plugin also shortens the 'sleeping' and 'on break' periods of targets.</p> <p>This plugin also shortens the 'sleeping' and 'on break' periods of targets.</p>
</div> </div>
<div class="section" id="drainaquifer"> <div class="section" id="drainaquifer">
<h2><a class="toc-backref" href="#id123">drainaquifer</a></h2> <h2><a class="toc-backref" href="#id124">drainaquifer</a></h2>
<p>Remove all 'aquifer' tag from the map blocks. Irreversible.</p> <p>Remove all 'aquifer' tag from the map blocks. Irreversible.</p>
</div> </div>
<div class="section" id="deathcause"> <div class="section" id="deathcause">
<h2><a class="toc-backref" href="#id124">deathcause</a></h2> <h2><a class="toc-backref" href="#id125">deathcause</a></h2>
<p>Focus a body part ingame, and this script will display the cause of death of <p>Focus a body part ingame, and this script will display the cause of death of
the creature.</p> the creature.</p>
</div> </div>
</div> </div>
<div class="section" id="in-game-interface-tools"> <div class="section" id="in-game-interface-tools">
<h1><a class="toc-backref" href="#id125">In-game interface tools</a></h1> <h1><a class="toc-backref" href="#id126">In-game interface tools</a></h1>
<p>These tools work by displaying dialogs or overlays in the game window, and <p>These tools work by displaying dialogs or overlays in the game window, and
are mostly implemented by lua scripts.</p> are mostly implemented by lua scripts.</p>
<div class="note"> <div class="note">
@ -2595,7 +2642,7 @@ display the word &quot;DFHack&quot; on the screen somewhere while active.</p>
guideline because it arguably just fixes small usability bugs in the game UI.</p> guideline because it arguably just fixes small usability bugs in the game UI.</p>
</div> </div>
<div class="section" id="dwarf-manipulator"> <div class="section" id="dwarf-manipulator">
<h2><a class="toc-backref" href="#id126">Dwarf Manipulator</a></h2> <h2><a class="toc-backref" href="#id127">Dwarf Manipulator</a></h2>
<p>Implemented by the manipulator plugin. To activate, open the unit screen and <p>Implemented by the manipulator plugin. To activate, open the unit screen and
press 'l'.</p> press 'l'.</p>
<p>This tool implements a Dwarf Therapist-like interface within the game UI. The <p>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.</li>
directly to the main dwarf mode screen.</p> directly to the main dwarf mode screen.</p>
</div> </div>
<div class="section" id="gui-liquids"> <div class="section" id="gui-liquids">
<h2><a class="toc-backref" href="#id127">gui/liquids</a></h2> <h2><a class="toc-backref" href="#id128">gui/liquids</a></h2>
<p>To use, bind to a key and activate in the 'k' mode.</p> <p>To use, bind to a key and activate in the 'k' mode.</p>
<p>While active, use the suggested keys to switch the usual liquids parameters, and Enter <p>While active, use the suggested keys to switch the usual liquids parameters, and Enter
to select the target area and apply changes.</p> to select the target area and apply changes.</p>
</div> </div>
<div class="section" id="gui-mechanisms"> <div class="section" id="gui-mechanisms">
<h2><a class="toc-backref" href="#id128">gui/mechanisms</a></h2> <h2><a class="toc-backref" href="#id129">gui/mechanisms</a></h2>
<p>To use, bind to a key and activate in the 'q' mode.</p> <p>To use, bind to a key and activate in the 'q' mode.</p>
<p>Lists mechanisms connected to the building, and their links. Navigating the list centers <p>Lists mechanisms connected to the building, and their links. Navigating the list centers
the view on the relevant linked buildings.</p> the view on the relevant linked buildings.</p>
@ -2646,7 +2693,7 @@ focus on the current one. Shift-Enter has an effect equivalent to pressing Enter
re-entering the mechanisms ui.</p> re-entering the mechanisms ui.</p>
</div> </div>
<div class="section" id="gui-rename"> <div class="section" id="gui-rename">
<h2><a class="toc-backref" href="#id129">gui/rename</a></h2> <h2><a class="toc-backref" href="#id130">gui/rename</a></h2>
<p>Backed by the rename plugin, this script allows entering the desired name <p>Backed by the rename plugin, this script allows entering the desired name
via a simple dialog in the game ui.</p> via a simple dialog in the game ui.</p>
<ul> <ul>
@ -2662,14 +2709,14 @@ It is also possible to rename zones from the 'i' menu.</p>
<p>The <tt class="docutils literal">building</tt> or <tt class="docutils literal">unit</tt> options are automatically assumed when in relevant ui state.</p> <p>The <tt class="docutils literal">building</tt> or <tt class="docutils literal">unit</tt> options are automatically assumed when in relevant ui state.</p>
</div> </div>
<div class="section" id="gui-room-list"> <div class="section" id="gui-room-list">
<h2><a class="toc-backref" href="#id130">gui/room-list</a></h2> <h2><a class="toc-backref" href="#id131">gui/room-list</a></h2>
<p>To use, bind to a key and activate in the 'q' mode, either immediately or after opening <p>To use, bind to a key and activate in the 'q' mode, either immediately or after opening
the assign owner page.</p> the assign owner page.</p>
<p>The script lists other rooms owned by the same owner, or by the unit selected in the assign <p>The script lists other rooms owned by the same owner, or by the unit selected in the assign
list, and allows unassigning them.</p> list, and allows unassigning them.</p>
</div> </div>
<div class="section" id="gui-choose-weapons"> <div class="section" id="gui-choose-weapons">
<h2><a class="toc-backref" href="#id131">gui/choose-weapons</a></h2> <h2><a class="toc-backref" href="#id132">gui/choose-weapons</a></h2>
<p>Bind to a key, and activate in the Equip-&gt;View/Customize page of the military screen.</p> <p>Bind to a key, and activate in the Equip-&gt;View/Customize page of the military screen.</p>
<p>Depending on the cursor location, it rewrites all 'individual choice weapon' entries <p>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 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'.</p>
<p>Rationale: individual choice seems to be unreliable when there is a weapon shortage, <p>Rationale: individual choice seems to be unreliable when there is a weapon shortage,
and may lead to inappropriate weapons being selected.</p> and may lead to inappropriate weapons being selected.</p>
</div> </div>
<div class="section" id="gui-guide-path">
<h2><a class="toc-backref" href="#id133">gui/guide-path</a></h2>
<p>Bind to a key, and activate in the Hauling menu with the cursor over a Guide order.</p>
<p>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.</p>
</div>
<div class="section" id="gui-workshop-job">
<h2><a class="toc-backref" href="#id134">gui/workshop-job</a></h2>
<p>Bind to a key, and activate with a job selected in a workshop in the 'q' mode.</p>
<p>The script shows a list of the input reagents of the selected job, and allows changing
them like the <tt class="docutils literal">job <span class="pre">item-type</span></tt> and <tt class="docutils literal">job <span class="pre">item-material</span></tt> commands.</p>
<p>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.</p>
<div class="warning">
<p class="first admonition-title">Warning</p>
<p class="last">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.</p>
</div>
<p>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.</p>
<p>For example, if you choose a <em>plant</em> input item type for your prepare meal job,
it will only let you select cookable materials.</p>
<p>If you choose a <em>barrel</em> 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 <em>plant</em>;
you have to unset the material first.</p>
</div>
<div class="section" id="gui-workflow">
<h2><a class="toc-backref" href="#id135">gui/workflow</a></h2>
<p>Bind to a key, and activate with a job selected in a workshop in the 'q' mode.</p>
<p>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.</p>
<p>A constraint specifies a certain range to be compared against either individual
<em>item</em> or whole <em>stack</em> 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.</p>
<p>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).</p>
<p>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 <tt class="docutils literal">job <span class="pre">item-material</span></tt> or <tt class="docutils literal"><span class="pre">gui/workshop-job</span></tt>,
as described in <tt class="docutils literal">workflow</tt> documentation above. In this manner, this feature
can be used for troubleshooting jobs that don't match the right constraints.</p>
</div>
<div class="section" id="gui-assign-rack">
<h2><a class="toc-backref" href="#id136">gui/assign-rack</a></h2>
<p>Bind to a key, and activate when viewing a weapon rack in the 'q' mode.</p>
<p>This script is part of a group of related fixes to make the armory storage
work again. The existing issues are:</p>
<ul class="simple">
<li>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.</li>
<li>Even if assigned by the script, <strong>the game will unassign the racks again without a binary patch</strong>.
Check the comments for this bug to get it:
<a class="reference external" href="http://www.bay12games.com/dwarves/mantisbt/view.php?id=1445">http://www.bay12games.com/dwarves/mantisbt/view.php?id=1445</a></li>
<li>Haulers still take equpment stored in the armory away to the stockpiles,
unless the <tt class="docutils literal"><span class="pre">fix-armory</span></tt> plugin above is used.</li>
</ul>
<p>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.</p>
</div>
</div> </div>
<div class="section" id="behavior-mods"> <div class="section" id="behavior-mods">
<h1><a class="toc-backref" href="#id132">Behavior Mods</a></h1> <h1><a class="toc-backref" href="#id137">Behavior Mods</a></h1>
<p>These plugins, when activated via configuration UI or by detecting certain <p>These plugins, when activated via configuration UI or by detecting certain
structures in RAWs, modify the game engine behavior concerning the target structures in RAWs, modify the game engine behavior concerning the target
objects to add features not otherwise present.</p> objects to add features not otherwise present.</p>
@ -2691,20 +2813,20 @@ technical challenge, and do not represent any long-term plans to produce more
similar modifications of the game.</p> similar modifications of the game.</p>
</div> </div>
<div class="section" id="siege-engine"> <div class="section" id="siege-engine">
<h2><a class="toc-backref" href="#id133">Siege Engine</a></h2> <h2><a class="toc-backref" href="#id138">Siege Engine</a></h2>
<p>The siege-engine plugin enables siege engines to be linked to stockpiles, and <p>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 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 four directions. Also, catapults can be ordered to load arbitrary objects, not
just stones.</p> just stones.</p>
<div class="section" id="rationale"> <div class="section" id="rationale">
<h3><a class="toc-backref" href="#id134">Rationale</a></h3> <h3><a class="toc-backref" href="#id139">Rationale</a></h3>
<p>Siege engines are a very interesting feature, but sadly almost useless in the current state <p>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 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, 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.</p> e.g. like making siegers bring their own, are something only Toady can do.</p>
</div> </div>
<div class="section" id="configuration-ui"> <div class="section" id="configuration-ui">
<h3><a class="toc-backref" href="#id135">Configuration UI</a></h3> <h3><a class="toc-backref" href="#id140">Configuration UI</a></h3>
<p>The configuration front-end to the plugin is implemented by the gui/siege-engine <p>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.</p> script. Bind it to a key and activate after selecting a siege engine in 'q' mode.</p>
<p>The main mode displays the current target, selected ammo item type, linked stockpiles and <p>The main mode displays the current target, selected ammo item type, linked stockpiles and
@ -2725,7 +2847,7 @@ menu.</p>
</div> </div>
</div> </div>
<div class="section" id="power-meter"> <div class="section" id="power-meter">
<h2><a class="toc-backref" href="#id136">Power Meter</a></h2> <h2><a class="toc-backref" href="#id141">Power Meter</a></h2>
<p>The power-meter plugin implements a modified pressure plate that detects power being <p>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.</p> supplied to gear boxes built in the four adjacent N/S/W/E tiles.</p>
<p>The configuration front-end is implemented by the gui/power-meter script. Bind it to a <p>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.</p>
configuration page, but configures parameters relevant to the modded power meter building.</p> configuration page, but configures parameters relevant to the modded power meter building.</p>
</div> </div>
<div class="section" id="steam-engine"> <div class="section" id="steam-engine">
<h2><a class="toc-backref" href="#id137">Steam Engine</a></h2> <h2><a class="toc-backref" href="#id142">Steam Engine</a></h2>
<p>The steam-engine plugin detects custom workshops with STEAM_ENGINE in <p>The steam-engine plugin detects custom workshops with STEAM_ENGINE in
their token, and turns them into real steam engines.</p> their token, and turns them into real steam engines.</p>
<div class="section" id="id1"> <div class="section" id="id1">
<h3><a class="toc-backref" href="#id138">Rationale</a></h3> <h3><a class="toc-backref" href="#id143">Rationale</a></h3>
<p>The vanilla game contains only water wheels and windmills as sources of <p>The vanilla game contains only water wheels and windmills as sources of
power, but windmills give relatively little power, and water wheels require power, but windmills give relatively little power, and water wheels require
flowing water, which must either be a real river and thus immovable and 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.</p> in a new way with some glue code and a bit of custom logic.</p>
</div> </div>
<div class="section" id="construction"> <div class="section" id="construction">
<h3><a class="toc-backref" href="#id139">Construction</a></h3> <h3><a class="toc-backref" href="#id144">Construction</a></h3>
<p>The workshop needs water as its input, which it takes via a <p>The workshop needs water as its input, which it takes via a
passable floor tile below it, like usual magma workshops do. passable floor tile below it, like usual magma workshops do.
The magma version also needs magma.</p> The magma version also needs magma.</p>
@ -2773,7 +2895,7 @@ short axles that can be built later than both of the engines.</p>
</div> </div>
</div> </div>
<div class="section" id="operation"> <div class="section" id="operation">
<h3><a class="toc-backref" href="#id140">Operation</a></h3> <h3><a class="toc-backref" href="#id145">Operation</a></h3>
<p>In order to operate the engine, queue the Stoke Boiler job (optionally <p>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, on repeat). A furnace operator will come, possibly bringing a bar of fuel,
and perform it. As a result, a &quot;boiling water&quot; item will appear and perform it. As a result, a &quot;boiling water&quot; item will appear
@ -2804,7 +2926,7 @@ decrease it by further 4%, and also decrease the whole steam
use rate by 10%.</p> use rate by 10%.</p>
</div> </div>
<div class="section" id="explosions"> <div class="section" id="explosions">
<h3><a class="toc-backref" href="#id141">Explosions</a></h3> <h3><a class="toc-backref" href="#id146">Explosions</a></h3>
<p>The engine must be constructed using barrel, pipe and piston <p>The engine must be constructed using barrel, pipe and piston
from fire-safe, or in the magma version magma-safe metals.</p> from fire-safe, or in the magma version magma-safe metals.</p>
<p>During operation weak parts get gradually worn out, and <p>During operation weak parts get gradually worn out, and
@ -2813,7 +2935,7 @@ toppled during operation by a building destroyer, or a
tantruming dwarf.</p> tantruming dwarf.</p>
</div> </div>
<div class="section" id="save-files"> <div class="section" id="save-files">
<h3><a class="toc-backref" href="#id142">Save files</a></h3> <h3><a class="toc-backref" href="#id147">Save files</a></h3>
<p>It should be safe to load and view engine-using fortresses <p>It should be safe to load and view engine-using fortresses
from a DF version without DFHack installed, except that in such from a DF version without DFHack installed, except that in such
case the engines won't work. However actually making modifications case the engines won't work. However actually making modifications
@ -2824,7 +2946,7 @@ being generated.</p>
</div> </div>
</div> </div>
<div class="section" id="add-spatter"> <div class="section" id="add-spatter">
<h2><a class="toc-backref" href="#id143">Add Spatter</a></h2> <h2><a class="toc-backref" href="#id148">Add Spatter</a></h2>
<p>This plugin makes reactions with names starting with <tt class="docutils literal">SPATTER_ADD_</tt> <p>This plugin makes reactions with names starting with <tt class="docutils literal">SPATTER_ADD_</tt>
produce contaminants on the items instead of improvements. The produced produce contaminants on the items instead of improvements. The produced
contaminants are immune to being washed away by water or destroyed by contaminants are immune to being washed away by water or destroyed by

@ -231,6 +231,8 @@ Controls speedydwarf and teledwarf. Speedydwarf makes dwarves move quickly and p
* 'fastdwarf 1 1' enables both * 'fastdwarf 1 1' enables both
* 'fastdwarf 0' disables both * 'fastdwarf 0' disables both
* 'fastdwarf 1' enables speedydwarf and disables teledwarf * '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 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 :military-color-assigned: Color squad candidates already assigned to other squads in brown/green
to make them stand out more in the list. 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 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 amount has to drop before jobs are resumed; this is intended to reduce
the frequency of jobs being toggled. 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 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. 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 Behavior Mods
============= =============