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
Expanded keybindings, edge scrolling, the return of infinite-sky, bug fixes and other improvements
Expanded keybindings
We've expanded the ability to bind hotkeys in DFHack so that you can now bind nearly any key combination you can think of. You are no longer limited by the keys DF recognizes; any key combo that SDL understands can be bound now. We also added both a GUI and a Lua API for managing these bindings.
523420193-aed8b11c-ea47-4a1f-b14d-75415b92dd04.mp4
Edge scrolling
A much-requested accessibility feature, the edgescroll plugin optionally enables automatically panning DF's viewport when the mouse is near the screen border.
Return of infinite-sky
The infinite-sky plugin, which we had to disable in the last release, is back with this release, fully compatible with the changes made in the siege update.
Bug fixes and other improvements
Various other tools had bugs fixed or improvements added: empty-bin will no longer dump powders out of bags (unless forced), DF's enhanced sort and filter support no longer causes DF to crash on exit (did you notice? we did), and the search widget for places has been moved out of the way of DF's new "siege engines" subtab and now also supports searching and filtering siege engines. The fpause command can now be used to force worldgen to pause, combine does a better job of identifying the current stockpile, and createitem now supports placing newly created items in or on more types of furniture than before.
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
New Tools
gui/keybinds: gui for managing and saving custom keybindingsinfinite-sky: Re-enabled with compatibility with new siege map data.edgescroll: Introduced plugin to pan the view automatically when the mouse reaches the screen border.
New Features
sort: Places search widget can search "Siege engines" subtab by name, loaded status, and operator status
Fixes
empty-bin: renamed--liquidsparameter to--forceand made emptying of containers (bags) with powders contingent on that parameter. Previously powders would just always get disposed.sort:- Using the squad unit selector will no longer cause Dwarf Fortress to crash on exit
- Places search widget moved to account for DF's new "Siege engines" subtab
Misc Improvements
- The
fpauseconsole command can now be used to force world generation to pause (as it did prior to version 50). combine: try harder to find the currently-selected stockpilecreateitem: created items can now be placed onto/into tables, nests, bookcases, display cases, and altarskeybinding: keybinds may now include the super key, and are no longer limited to particular keys ranges of keys, allowing any recognized by SDL.
API
Hotkey: New module for hotkey functionality
Lua
- The
Lua interactive interpreterbanner now documents keywords such asunitanditemwhich reference the currently-selected object in the DF UI. dfhack.hotkey.addKeybind: Creates new keybindingsdfhack.hotkey.getKeybindingInput: Reads the input saved in response to a request.dfhack.hotkey.listActiveKeybinds: Lists all keybinds for the current contextdfhack.hotkey.listAllKeybinds: Lists all keybinds for all contextsdfhack.hotkey.removeKeybind: Removes existing keybindingsdfhack.hotkey.requestKeybindingInput: Requests the next keybind-compatible input is saved
Structures
- updated codegen to generate enum trait constants as
constexpr