Q: How do I download DFHack?
A: Either add to your Steam library from our Steam page or scroll to the latest release on our GitHub releases page, expand the "Assets" list, and download the file for your platform (e.g. dfhack-XX.XX-rX-Windows-64bit.zip
. If you are on Windows and are manually installing from the zip file, please remember to right click on the file after downloading, open the file properties, and select the "Unblock" checkbox. This will prevent issues with Windows antivirus programs.
This release is compatible with all distributions of Dwarf Fortress: Steam, Itch, and Classic.
Please report any issues (or feature requests) on the DFHack GitHub issue tracker. When reporting issues, please upload a zip file of your savegame and a zip file of your mods
directory to the cloud and add links to the GitHub issue. Make sure your files are downloadable by "everyone with the link". We need your savegame to reproduce the problem and test the fix, and we need your active mods so we can load your savegame. Issues with savegames and mods attached get fixed first!
Highlights
Break up brawls
Break up brawls
Both fix/loyaltycascade
and makeown
now take the extra step of calming any brawls that your citizens are involved in. If a particular captured and tamed pet is acting unruly (e.g. a Roc attacking your military or random visitors), select it and run makeown
to remove it from any conflicts it may have been involved in before you tamed it.
Likewise, fix/loyaltycascade
will now break up tavern brawls. Tavern brawls aren't true "loyalty cascades", since the brawlers aren't actually enemies of your civilization. However, it really looks like a loyalty cascade, and this is the tool that players tend to try when a tavern brawl spirals out of control.
And remember the old fortress adage: "To your alcohol stocks pay mind, but keep those tavern keepers unassigned!".
Announcements
PSAs
PSAs
As always, remember that, just like the vanilla DF game, DFHack tools can also have bugs. It is a good idea to save often and keep backups of the forts that you care about.
Some DFHack tools that worked in previous (pre-Steam) versions of DF have not been updated yet and are marked with the "unavailable" tag in their docs. If you try to run them, they will show a warning and exit immediately. You can run the command again to override the warning (though of course the tools may not work). We make no guarantees of reliability for the tools that are marked as "unavailable".
The in-game interface for running DFHack commands (gui/launcher
) will not show "unavailable" tools by default. You can still run them if you know their names, or you can turn on dev mode by hitting Ctrl-D while in gui/launcher
and they will be added to the autocomplete list. Some tools listed as "unavailable" in the docs do not compile yet and are not accessible at all, even when in dev mode.
If you see a tool complaining about the lack of a cursor, know that it's referring to the keyboard cursor (which used to be the only real option in Dwarf Fortress). You can enable the keyboard cursor by entering mining mode or selecting the dump/forbid tool and hitting Alt-K (the DFHack keybinding for toggle-kbd-cursor
). We're working on making DFHack tools more mouse-aware and accessible so this step isn't necessary in the future.
Changelog
New tools, fixes, and improvements
Fixes
- text widgets no longer lose their cursor when the Ctrl-a (select all) hotkey is pressed when there is no text to select
dig-now
:- fix cases where boulders/rough gems of incorrect material were being generated when digging through walls
- properly generate ice boulders when digging through ice walls
gui/petitions
: fix date math when determining petition agegui/rename
: fix commandline processing when manually specifying target idsgui/sandbox
: restore metal equipment options when spawning unitsgui/teleport
: now properly handles teleporting units that are currently falling or being flunglist-agreements
: fix date math when determining petition agespectate
: don't show a hover tooltip for hidden units (e.g. invisible snatchers)stockpiles
: fix one-off error in item type when importing furniture stockpile settingssuspendmanager
: fix walls being treated as potential suitable access if another wall is built underneathunload
: fix recent regression whereunload
would immediatelyreload
the targetBuildings
module: do not crash if amap_block
unexpectedly contains an item that is not on the master item vector
Misc Improvements
fix/loyaltycascade
: now also breaks up brawls and other intra-fort conflicts that look like loyalty cascadesmakeown
: remove selected unit from any current conflicts so they don't just start attacking other citizens when you make them a citizen of your fortspectate
: show dwarves' activities (like prayer)
API
Buildings::setOwner
: updated for changes in 51.11Buildings
module: addgetOwner
(using theUnits::get_cached_unit_by_global_id
mechanic) to reflect changes in 51.11Military
module: addedaddToSquad
functionUnits::teleport
: projectile information is now cleared for teleported unitsUnits
module: addedget_cached_unit_by_global_id
to emulate how DF handles unit vector index caching (used in civzones and in general references)
Lua
dfhack.military.addToSquad
: expose Military API functiondfhack.buildings.getOwner
: make new Buildings API available to Lua