Memory hacking library for Dwarf Fortress and a set of tools that use it
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!
The end-of-year holidays have brought a surge of DFHack development! There are many new features and tools to play with. In order to keep these highlights to a reasonable length, we can't even go through them all in detail -- see the Changelog section for a full list.
By popular request, you can now ask Armok to allow you to embark wherever you please!
If you run gui/embark-anywhere
when you’re choosing a site for embark, you can bypass any warnings the game gives you about potential embark locations. Want to embark in an inaccessible location on top of a mountain range? Go for it! Want to try a brief existence in the middle of the ocean? Nobody can stop you! Want to tempt fate by embarking inside of a necromancer tower? !!FUN!!
Any and all consequences of embarking in strange locations are up to you to handle (possibly with other armok tools).
The DFHack logo isn't shown on the embark screen (since it would cover the vanilla embark size adjustment widgets), but DFHack hotkeys still work, so you can still bring up the logo menu with Ctrl-Shift-C. There is also a convenience hotkey for running gui/embark-anywhere
directly: Ctrl-A, which is only active when on the site choosing screen.
Note that this command (and its hotkey) will not be shown for those who have DFHack's "Mortal Mode" enabled in the gui/control-panel
Preferences tab.
The new item
commandline tool allows you to filter items in you fort by various properties (item type, material, wear-level, quality, etc.), and perform bulk operations like forbid, dump, melt, and their inverses. With one command, you can hide all boulders that are not in stockpiles, or mark all metal items that are less than masterwork quality for melting!
This tool also provides the underlying logic for a planned (but not yet written) GUI-based item management screen.
When you look at your squad equipment, there will be a new button that says "Detect conflicts". This will bring up a report of squad equipment issues, like:
There's a button at the top of the report that attempts to fix all the problems. It will remove assignments for conflicting gear or will force your dwarves to drop what they have so they can pick it up in the correct order. Remember to click "Update equipment" after running the fixer so that new equipment gets assigned to units that need it.
It may take a few tries (give your dwarves some time to go get their new gear before you try again), but your forever-yellow equipment icons should finally turn green!
If you have embarked at the intersection of two or more biomes, you may have trouble finding a place for your farm plots so that you can grow the crops you want. gui/biomes
can show you where the boundaries are, and will also give you information about the biomes themselves, such as their savagery rating.
gui/mass-remove
has been around for a while, but has received a significant overhaul. You can box select a region and schedule all buildings, constructions, stockpiles, and/or zones for removal. Planned and fully built buildings/constructions can be selected independently. No need to rage quit if you accidentally plan a solid block of 400 walls instead of flooring! Clear it all away in a few clicks!
It can easily cancel removal of buildings or constructions that you have marked for removal as well.
Bring it up when on the main map with the Ctrl-M hotkey.
Do you find yourself having to remember to go turn corpse hauling off for your dear, bearded, impressionable children? Now, you can set it once, export, and have your settings automatically restored when you start a new embark. It's seamless, and is a huge time-saver for people with highly customized settings!
Both difficulty settings (in the pre-embark setup screen or the Settings screen when a fort is loaded) and standing orders (Labor -> Standing orders) can be saved and restored independently. When on those configuration screens, look for a DFHack overlay toggle where you can enable auto-restore for new embarks.
The DFHack gui/control-panel
interface received a significant overhaul. Tools are now categorized into subtabs, gathering the automation, bugfix, and gameplay tools into sublists. The file format for storing control panel configuration has changed as well. When you load this release of DFHack, your previous control panel settings will be seamlessly migrated to the new format. Other than the layout changes, which should make the tools you want easier to find, the primary behavior change is that some things that were only configured globally (like the tools on the now-gone "Maintenance" tab) are now configurable per-fort. There is also more information about what things are and what they do. For example, each overlay now has a short description.
Calling C++ developers!
DFHack's stonesense
plugin, the source of the majority of 3D fort renders you see, needs help. The original authors are unavailable, and the plugin, popular as it is, needs a new owner.
The first major task is to port the renderer from the current 10-year old Allegro framework to either a modern version of Allegro or SDL2, whichever turns out to be more appropriate.
Secondly, the codebase needs some overall work to improve stability. There are several known crash bugs in the Stonesense issue tracker that need attention.
Finally, new features and new direction! There are currently open feature requests, of course, but we'd also be interested in hearing new ideas and vision for where this beloved project can go next!
If you are interested, please come talk to us at the DFHack Discord server: https://dfhack.org/discord
If you are developing an external plugin for DFHack, be aware that the plugin Application Binary Interface (ABI) has changed in this version to support the new site-local persistence model. See changes to the sample code in https://github.com/DFHack/dfhack/tree/develop/plugins/examples for details. Any external plugins that target DF 50.11 will need to be recompiled against DFHack 50.11-r5 (or later) sources.
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.
Many 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 do not compile yet and are not available 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.
control-panel
: new commandline interface for control panel functionsgui/biomes
: visualize and inspect biome regions on the mapgui/embark-anywhere
:
gui/reveal
: temporarily unhide terrain and then automatically hide it again when you're ready to unpausegui/teleport
: mouse-driven interface for selecting and teleporting unitsitem
: perform bulk operations on groups of items.uniform-unstick
: (reinstated) force squad members to drop items that they picked up in the wrong order so they can get everything equipped properlygui/mass-remove
: new global keybinding: Ctrl-M while on the fort mapgui/settings-manager
: save and load embark difficulty settings and standing orders; options for auto-load on new embarksort
: search and sort for the "choose unit to elevate to the barony" screen. units are sorted by the number of item preferences they have and the units are annotated with the items that they have preferences foruniform-unstick
: add overlay to the squad equipment screen to show a equipment conflict report and give you a one-click button to (attempt to) fixzone
: add button to location details page for retiring unused locationsgui/control-panel
) are now rendered correctly when there are certain vanilla screen elements behind themban-cooking
: fix banning creature alcohols resulting in errorbuildingplan
:
fix/empty-wheelbarrows
fix is enabled so those items aren't permanently unavailable!caravan
: ensure items are marked for trade when the move trade goods dialog is closed even when they were selected and then the list filters were changed such that the items were no longer actively shownconfirm
: properly detect clicks on the remove zone button even when the unit selection screen is also open (e.g. the vanilla assign animal to pasture panel)empty-bin
: now correctly sends ammunition in carried quivers to the tile underneath the unit instead of teleporting them to an invalid (or possibly just far away) locationfastdwarf
:
getplants
: fix crash when processing mod-added plants with invalid materialsgui/design
:
misery
: fix error when changing the misery factorquickfort
: if a blueprint specifies an up/down stair, but the tile the blueprint is applied to cannot make an up stair (e.g. it has already been dug out), still designate a down stair if possiblereveal
: now avoids revealing blocks that contain divine treasures, encased horrors, and deep vein hollows (so the surprise triggers are not triggered prematurely)sort
:
source
: water and magma sources and sinks now persist with fort across saves and loadsstonesense
: fix crash in cleanup code after mega screenshot (Ctrl-F5) completes; however, the mega screenshot will still make stonesense unresponsive. close and open the stonesense window to continue using it.suspendmanager
: correctly handle building collisions with smoothing designations when the building is on the edge of the mapwarn-stranded
: don't warn for citizens who are only transiently stranded, like those on stepladders gathering plants or digging themselves out of a holeMaps::getBiomeType
, Maps::getBiomeTypeWithRef
: fix identification of tropical oceansautochop
: better error output when target burrows are not specified on the commandlineautoclothing
: now does not consider worn (x) clothing as usable/available; reduces overproduction when using tailor
at same timebuildingplan
: add option for preventing constructions from being planned on top of existing constructions (e.g. don't build floors on top of floors)burrow
: flood fill now requires an explicit toggle before it is enabled to help prevent accidental flood fillsconfirm
:
fastdwarf
: now saves its state with the fortfix/stuck-instruments
: now handles instruments that are left in the "in job" state but that don't have any actual jobs associated with themgui/autobutcher
: interface redesigned to better support mouse controlgui/control-panel
:
warn-stranded
check to once every 2 daysgui/launcher
:
gui/mass-remove
:
gui/quickcmd
: clickable buttons for command add/remove/edit operationsorders
: reduce prepared meal target and raise booze target in basic
importable orders in the orders librarysort
:
uniform-unstick
: warn if a unit belongs to a squad from a different site (can happen with migrants from previous forts)warn-stranded
: center the screen on the unit when you select one in the listwork-now
: now saves its enabled status with the fortzone
:
channel-safely
: (temporarily) removed due to stability issues with the underlying DF APIpersist-table
: replaced by new dfhack.persistent
APIcapitalize_string_words
: new MiscUtils
function, returns string with all words capitalizedConstructions::designateRemove
: no longer designates the non-removable "pseudo" construtions that represent the top of wallsgrab_token_string_pos
: new MiscUtils
function, used for parsing tokensItems
: add item melting logic canMelt(item)
, markForMelting(item)
, and cancelMelting(item)
Persistence
:
random_index
, vector_get_random
: new MiscUtils
functions, for getting a random entry in a vectorUnits.isDanger
: now returns true for agitated wildlifeWorld
:
GetCurrentSiteId()
returns the loaded fort site ID (or -1 if no site is loaded)IsSiteLoaded()
check to detect if a site (e.g. a player fort) is active (as opposed to the world or a map)AddPersistentData
and related functions replaced with AddPersistentSiteData
and AddPersistentWorldData
equivalentsdfhack.capitalizeStringWords
: new function, returns string with all words capitalizeddfhack.isSiteLoaded
: returns whether a site (e.g. a player fort) is loadeddfhack.items
: access to canMelt(item)
, markForMelting(item)
, and cancelMelting(item)
from Items
moduledfhack.persistent
: new, table-driven API for easier world- and site-associated persistent storage. See the Lua API docs for details.dfhack.world.getCurrentSite
: returns the df.world_site
instance of the currently loaded fortwidgets.Divider
: linear divider to split an existing frame; configurable T-junction edges and frame style matchingalert_button_announcement_id
: now int32_t vector (contains report ids)announcement_alertst
: definedannouncement_alert_type
: enum definedannouncement_type
: added alert_type
enum attributefeature_init_flags
: more enum values definedmarkup_text_boxst
: updated based on information from Bay12markup_text_linkst
, markup_text_wordst
, script_environmentst
: definedoccupation
: realignedplotinfost
: unk23c8_flags
renamed to flags
, updated based on information from Bay12service_orderst
: type definedservice_order_type
: enum definedsoundst
: definedviewscreen_choose_start_sitest
: fix structure of warning flags -- convert series of bools to a proper bitmaskworld_raws
: unk_v50_1
, unk_v50_2
, unk_v50_3
renamed to text_set
, music
, sound
architectural-diagrams
gui/launcher
(assuming that it can be converted to cp-437)installing
: Add installation instructions for wineskin on Macmodding-guide
: Add examples for script-only and blueprint-only mods that you can upload to DF's Steam WorkshopA: 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 BETA 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!
By popular request, you can now laugh at Armok and embark wherever you please.
If you run gui/embark-anywhere
when you’re choosing a site for embark, you can bypass any warnings the game gives you about potential embark locations. Want to embark in an inaccessible location on top of a mountain range? Go for it! Want to try a brief existence in the middle of the ocean? Nobody can stop you! Want to tempt fate by embarking inside of a necromancer tower? !!FUN!!
Any and all consequences of embarking in strange locations are up to you to handle (possibly with other armok tools).
The item
commandline tool allows you to filter items in you fort by various properties (e.g., item type, material, wear-level, quality, …), and perform bulk operations like forbid, dump, melt, and their inverses. With one command, you can hide all boulders that are not in stockpiles, or mark all metal items that are less than masterwork quality for melting!
This tool also provides the underlying logic for a planned (but not yet written) GUI-based item management screen.
If you have preferred custom settings for difficulty or standing orders, it is toilsome to have to go in and manually set them for every embark. Do you find yourself having to remember to go turn corpse hauling off for your children? Now, you can set it once, export, and have your settings automatically restored when you start a new embark. It's seamless, and is a huge time-saver for people with highly customized settings!
If you have locations (taverns, libraries, hospitals, temples) you don't need anymore, they just hang around and clutter up your list. Now, there's a button on the location details screen that you can click to retire the location and get it out of the way.
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.
Many 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 do not compile yet and are not available 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.
control-panel
: new commandline interface for control panel functionsgui/biomes
: visualize and inspect biome regions on the mapgui/embark-anywhere
: bypass those pesky warnings and embark anywhere you want togui/reveal
: temporarily unhide terrain and then automatically hide it again when you're ready to unpausegui/teleport
: mouse-driven interface for selecting and teleporting unitsitem
: perform bulk operations on groups of items.uniform-unstick
: (reinstated) force squad members to drop items that they picked up in the wrong order so they can get everything equipped properlygui/mass-remove
: new global keybinding: Ctrl-M while on the fort mapgui/settings-manager
: save and load (optionally automatically) embark difficulty settings and standing orderssort
: search and sort for the "choose unit to elevate to the barony" screen. units are sorted by the number of item preferences they have and the units are annotated with the items that they have preferences foruniform-unstick
: add overlay to the squad equipment screen to show a equipment conflict report and give you a one-click button to fixzone
: add button to location details page for retiring unused locationsgui/control-panel
) are now rendered correctly when there are certain vanilla screen elements behind themban-cooking
: fix banning creature alcohols resulting in errorbuildingplan
:
confirm
: properly detect clicks on the remove zone button even when the unit selection screen is also open (e.g. the vanilla assign animal to pasture panel)empty-bin
: now correctly sends ammunition in carried quivers to the tile underneath the unit instead of teleporting them to an invalid (or possibly just far away) locationgetplants
: fix crash when processing mod-added plants with invalid materialsgui/design
: fix incorrect dimensions being shown when placing stockpiles, but a start coordinate hasn't been selected yetmisery
: fix error when changing the misery factorquickfort
: if a blueprint specifies an up/down stair, but the tile the blueprint is applied to cannot make an up stair (e.g. it has already been dug out), still designate a down stair if possiblereveal
: now avoids revealing blocks that contain divine treasures, encased horrors, and deep vein hollows (so the surprise triggers are not triggered prematurely)sort
:
source
: water and magma sources now persist with fort across saves and loadssuspendmanager
: correctly handle building collisions with smoothing designations when the building is on the edge of the mapwarn-stranded
:
autochop
: better error output when target burrows are not specified on the commandlineautoclothing
: now does not consider worn (x) clothing as usable/available, should help with using with tailor
at same timebuildingplan
: add option for preventing constructions from being planned on top of existing constructionsburrow
: flood fill now requires an explicit toggle before it is enabled to help prevent accidental flood fillsconfirm
:
fastdwarf
:
fix/stuck-instruments
: now handles instruments that are left in the "in job" state but that don't have any actual jobs associated with themgui/autobutcher
: interface redesigned to better support mouse controlgui/control-panel
:
warn-stranded
check to once every 2 daysgui/launcher
:
gui/mass-remove
:
gui/quickcmd
: clickable buttons for command add/remove/edit operationssort
:
uniform-unstick
: warn if a unit belongs to a squad from a different site (can happen with migrants from previous forts)work-now
: now saves its enabled status with the fortzone
:
channel-safely
: (temporarily) removed due to stability issues with the underlying DF APIpersist-table
: replaced by new dfhack.persistent
APIcapitalize_string_words
: new MiscUtils
function, returns string with all words capitalizedgrab_token_string_pos
: new MiscUtils
function, used for parsing tokensItems
: add item melting logic canMelt(item)
, markForMelting(item)
, and cancelMelting(item)
Persistence
:
random_index
, vector_get_random
: new MiscUtils
functions, for getting a random entry in a vectorUnits.isDanger
: now returns true for agitated wildlifeWorld
:
GetCurrentSiteId()
returns the loaded fort site ID (or -1 if no site is loaded)IsSiteLoaded()
check to detect if a site (e.g. a player fort) is active (as opposed to the world or a map)AddPersistentData
and related functions replaced with AddPersistentSiteData
and AddPersistentWorldData
equivalentsdfhack.capitalizeStringWords
: new function, returns string with all words capitalizeddfhack.isSiteLoaded
: returns whether a site (e.g. a player fort) is loadeddfhack.items
: access to canMelt(item)
, markForMelting(item)
, and cancelMelting(item)
from Items
moduledfhack.persistent
: new, table-driven API for easier world- and site-associated persistent storage. See the Lua API docs for details.dfhack.world.getCurrentSite
: returns the df.world_site
instance of the currently loaded fortwidgets.Divider
: linear divider to split an existing frame; configurable T-junction edges and frame style matchingalert_button_announcement_id
: now int32_t vector (contains report ids)announcement_alertst
: definedannouncement_alert_type
: enum definedannouncement_type
: added alert_type
enum attributemarkup_text_boxst
: updated based on information from Bay12markup_text_linkst
, markup_text_wordst
, script_environmentst
: definedoccupation
: realignedplotinfost
: unk23c8_flags
renamed to flags
, updated based on information from Bay12service_orderst
: type definedservice_order_type
: enum definedsoundst
: definedviewscreen_choose_start_sitest
: fix structure of warning flags -- convert series of bools to a proper bitmaskworld_raws
: unk_v50_1
, unk_v50_2
, unk_v50_3
renamed to text_set
, music
, sound
gui/launcher
(assuming that it can be converted to cp-437)installing
: Add installation instructions for wineskin on Macmodding-guide
: Add examples for script-only and blueprint-only mods that you can upload to DF's Steam WorkshopA: 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 BETA 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!
The control panel received a significant overhaul. Tools are now categorized into subtabs, gathering the automation, bugfix, and gameplay tools into sublists. The file format for storing control panel configuration has changed as well. When you load this release of DFHack, your previous control panel settings should be seamlessly migrated to the new format. The main behavior change is that some things that were only configured globally (like the tools on the now-gone "Maintenance" tab) are now configurable per-fort. There is also more information about what things are. For example, each overlay now has a short description.
What do you think of the new layout and tab structure? Is it easier to find the tools you're looking for? Do you feel more confident about enabling new things?
gui/autobutcher finally got updated with modern widgets and mouse gestures. You can now select fields to edit by double clicking on them. The list of livestock now also shows you the total counts per race, and the list of race targets is sortable and filterable. What do you think? Is it easier to use than the previous version? Pro tip: to unmark the slaughter tag from all animals of a particular race, double click on the number in the "Butchering ordered" column.
The confirm framework has been completely rewritten, and thanks to many good suggestions on Reddit, there are now a wide variety of new confirmation prompts that protect you from accidentally invoking irreversible and highly impactful UI operations (like disbanding a squad or deconstructing the trade depot while merchants are using it). Is there anything you think we've missed? What do you think of the new confirmation prompts? Is it easy to pause them when you want to (e.g. when deleting a bunch of manager orders)?
When you look at your squad equipment, there will be a new button that says "Detect conflicts". This will bring up a report of squad equipment problems, such as squad members being assigned to conflicting labors like mining or hunting, or the same piece of equipment being assigned to multiple squad members, or even citizens being members of squads from different forts (this can happen with migrants from forts that you have retired). There's a button at the top of the report that attempts to fix all the problems. Does it work for you? Do your forever-yellow equipment icons finally turn green? Remember to click "Update equipment" after running the fixer so that new equipment gets assigned to units that need it.
gui/mass-remove is our tool for easily removing multiple buildings and other things. It gained much more configurability, so you can now, for example, have it just remove planned buildings and ignore fully built ones. It can also cancel removal of buildings and constructions via area select. It has a global hotkey for quick access: Ctrl-M while on the main fort map. Give it a try and tell us if it works well for you when you need to remove a bunch of stuff.
I've seen people talk on Reddit and the Discord servers about how to plan your fort layout after you embark but before you unpause. Frequently, I see people advising use of reveal
to see where the caverns are so you can plan your fort around them. This is always followed by the warning "Remember to run unreveal
before you unpause! Otherwise the caverns get "discovered" early and then if you unreveal
later then parts that you dug out will be hidden again and things get weird."
To make this process less error-prone, we now have gui/reveal
. It reveals the map when it comes up and forces the game to pause while the gui/reveal
window is open. You can scan around the map and designate digging for your fort. When you right click on the little gui/reveal
window to close it, the map is hidden again, and you can play the game as normal.
You can choose to keep the map revealed, of course, but the more common case where only a temporary reveal is desired is much easier to handle now.
If you have embarked at the intersection of two or more biomes, you may have trouble finding a place for your farm plots so that you can grow the crops you want. gui/biomes
can show you where the boundaries are, and will also give you information about the biomes themselves, such as their wildness rating.
Another painful process I've seen discussed on Reddit relates to when a unit gets into an impossible situation, like when they dodge into a wall or (sometimes) into the unexplored regions of a cavern and they can't get out. This tends to tank your FPS and make the game unplayable. The commandline teleport
command does exist, but it's a multi-step process. You have to find the unit ID of the rogue unit, enable the keyboard cursor, get the position of where to teleport the unit to, and feed all that information into the teleport
command. Now, with gui/teleport
, it's point and click. It also comes with some handy filters for when you're trying to rescue friendly units from among hostiles. You can area select and only pick out the citizens and friendly units.
If you are developing an external plugin for DFHack, be aware that the plugin binary interface (ABI) has changed to support the new site-local persistence model. See changes to the sample code in https://github.com/DFHack/dfhack/tree/develop/plugins/examples for details.
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.
Many 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 do not compile yet and are not available 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.
control-panel
: new commandline interface for control panel functionsgui/biomes
: visualize and inspect biome regions on the mapgui/reveal
: temporarily unhide terrain and then automatically hide it again when you're ready to unpausegui/teleport
: mouse-driven interface for selecting and teleporting unitsuniform-unstick
: (reinstated) force squad members to drop items that they picked up in the wrong order so they can get everything equipped properlygui/mass-remove
: new global keybinding: Ctrl-M while on the fort mapsort
: search and sort for the "choose unit to elevate to the barony" screen. units are sorted by the number of item preferences they have and the units are annotated with the items that they have preferences foruniform-unstick
: add overlay to the squad equipment screen to show a equipment conflict report and give you a one-click button to fixban-cooking
: fix banning creature alcohols resulting in errorconfirm
: properly detect clicks on the remove zone button even when the unit selection screen is also open (e.g. the vanilla assign animal to pasture panel)getplants
: fix crash when processing mod-added plants with invalid materialsmisery
: fix error when changing the misery factorquickfort
: if a blueprint specifies an up/down stair, but the tile the blueprint is applied to cannot make an up stair (e.g. it has already been dug out), still designate a down stair if possiblereveal
: now avoids revealing blocks that contain divine treasures, encased horrors, and deep vein hollows (so the surprise triggers are not triggered prematurely)sort
:
source
: water and magma sources now persist with fort across saves and loadswarn-stranded
:
autochop
: better error output when target burrows are not specified on the commandlineautoclothing
: now does not consider worn (x) clothing as usable/available, should help with using with tailor
at same timeburrow
: flood fill now requires an explicit toggle before it is enabled to help prevent accidental flood fillsconfirm
:
fastdwarf
:
gui/autobutcher
: interface redesigned to better support mouse controlgui/control-panel
:
warn-stranded
check to once every 2 daysgui/launcher
: now persists the most recent 32KB of command output even if you close it and bring it back upgui/mass-remove
:
gui/quickcmd
: clickable buttons for command add/remove/edit operationssort
:
uniform-unstick
: warn if a unit belongs to a squad from a different site (can happen with migrants from previous forts)work-now
: now saves its enabled status with the fortzone
: add include/only/exclude filter for juveniles to the pasture/pit/cage/restraint assignment screenchannel-safely
: (temporarily) removed due to stability issues with the underlying DF APIpersist-table
: replaced by new dfhack.persistent
APIcapitalize_string_words
: new MiscUtils
function, returns string with all words capitalizedgrab_token_string_pos
: new MiscUtils
function, used for parsing tokensItems
: add item melting logic canMelt(item)
, markForMelting(item)
, and cancelMelting(item)
Persistence
:
random_index
, vector_get_random
: new MiscUtils
functions, for getting a random entry in a vectorWorld
:
GetCurrentSiteId()
returns the loaded fort site ID (or -1 if no site is loaded)IsSiteLoaded()
check to detect if a site (e.g. a player fort) is active (as opposed to the world or a map)AddPersistentData
and related functions replaced with AddPersistentSiteData
and AddPersistentWorldData
equivalentsdfhack.capitalizeStringWords
: new function, returns string with all words capitalizeddfhack.isSiteLoaded
: returns whether a site (e.g. a player fort) is loadeddfhack.items
: access to canMelt(item)
, markForMelting(item)
, and cancelMelting(item)
from Items
moduledfhack.persistent
: new, table-driven API for easier world- and site-associated persistent storage. See the Lua API docs for details.dfhack.world.getCurrentSite
: returns the df.world_site
instance of the currently loaded fortwidgets.Divider
: linear divider to split an existing frame; configurable T-junction edges and frame style matchingalert_button_announcement_id
: now int32_t vector (contains report ids)announcement_alertst
: definedannouncement_alert_type
: enum definedannouncement_type
: added alert_type
enum attributemarkup_text_boxst
: updated based on information from Bay12markup_text_linkst
, markup_text_wordst
, script_environmentst
: definedoccupation
: realignedplotinfost
: unk23c8_flags
renamed to flags
, updated based on information from Bay12service_orderst
: type definedservice_order_type
: enum definedsoundst
: definedworld_raws
: unk_v50_1
, unk_v50_2
, unk_v50_3
renamed to text_set
, music
, sound
gui/launcher
(assuming that it can be converted to cp-437)installing
: Add installation instructions for wineskin on Macmodding-guide
: Add examples for script-only and blueprint-only mods that you can upload to DF's Steam WorkshopA: 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 BETA 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!
The control panel received a significant overhaul. Tools are now categorized into subtabs, gathering the automation, bugfix, and gameplay tools into sublists. The file format for storing control panel configuration has changed as well. When you load this release of DFHack, your previous control panel settings should be seamlessly migrated to the new format.
What do you think of the new layout and tab structure? Is it easier to find the tools you're looking for? Do you feel more confident about enabling new things?
gui/autobutcher finally got updated with modern widgets and mouse gestures. You can now select fields to edit by double clicking on them. The list of livestock now also shows you the total counts per race, and the list of race targets is sortable and filterable. What do you think? Is it easier to use than the previous version? Pro tip: to unmark the slaughter tag from all animals of a particular race, double click on the number in the "Butchering ordered" column.
The confirm framework has been completely rewritten, and thanks to many good suggestions on Reddit, there are now a wide variety of new confirmation prompts that protect you from accidentally invoking irreversible and highly impactful UI operations (like disbanding a squad or deconstructing the trade depot while merchants are using it). Is there anything you think we've missed? What do you think of the new confirmation prompts? Is it easy to pause them when you want to (e.g. when deleting a bunch of manager orders)?
When you look at your squad equipment, there will be a new button that says "Detect conflicts". This will bring up a report of squad equipment problems, such as squad members being assigned to conflicting labors like mining or hunting, or the same piece of equipment being assigned to multiple squad members. There's a button at the top of the report that attempts to fix all the problems. Does it work for you? Do your forever-yellow equipment icons finally turn green? Remember to click "Update equipment" after running the fixer so that new equipment gets assigned to units that need it.
gui/mass-remove is our tool for easily removing multiple buildings and other things. It gained much more configurability, so you can now, for example, have it just remove planned buildings and ignore fully built ones. It now also has a global hotkey for quick access: Ctrl-M while on the main fort map. Give it a try and tell us if it works well for you when you need to remove a bunch of stuff.
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.
Many 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 do not compile yet and are not available 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.
control-panel
: new commandline interface for control panel functionsuniform-unstick
: (reinstated) force squad members to drop items that they picked up in the wrong order so they can get everything equipped properlygui/mass-remove
: new global keybinding: Ctrl-M while on the fort mapsort
: search and sort for the "choose unit to elevate to the barony" screen. units are sorted by the number of item preferences they have and the units are annotated with the items that they have preferences foruniform-unstick
: add overlay to the squad equipment screen to show a equipment conflict report and give you a one-click button to fixban-cooking
: fix banning creature alcohols resulting in errorconfirm
: properly detect clicks on the remove zone button even when the unit selection screen is also open (e.g. the vanilla assign animal to pasture panel)misery
: fix error when changing the misery factorreveal
: now avoids revealing blocks that contain divine treasures, encased horrors, and deep vein hollows (so the surprise triggers are not triggered prematurely)sort
:
warn-stranded
:
autochop
: better error output when target burrows are not specified on the commandlineconfirm
:
gui/autobutcher
: interface redesigned to better support mouse controlgui/control-panel
:
warn-stranded
check to once every 2 daysgui/launcher
: now persists the most recent 32KB of command output even if you close it and bring it back upgui/mass-remove
:
gui/quickcmd
: clickable buttons for command add/remove/edit operationswork-now
: now saves its enabled status with the fortalert_button_announcement_id
: now int32_t vector (contains report ids)announcement_alertst
: definedannouncement_alert_type
: enum definedannouncement_type
: added alert_type
enum attributemarkup_text_boxst
: updated based on information from Bay12markup_text_linkst
, markup_text_wordst
, script_environmentst
: definedplotinfost
: unk23c8_flags
renamed to flags
, updated based on information from Bay12soundst
: definedworld_raws
: unk_v50_1
, unk_v50_2
, unk_v50_3
renamed to text_set
, music
, sound
gui/launcher
(assuming that it can be converted to cp-437)installing
: Add installation instructions for winskin on Macmodding-guide
: Add examples for script-only and blueprint-only mods that you can upload to DF's Steam WorkshopA: 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 50.11 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!
This is a quick release that addresses some small but important bug fixes and quality of life improvements. See the Changelog below for details.
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.
Many 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 do not compile yet and are not available 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.
build-now
: (reinstated) instantly complete unsuspended buildings that are ready to be builtbuildingplan
: fix choosing the wrong mechanism (or something that isn't a mechanism) when linking a lever and manually choosing a mechanism, but then canceling the selectioncombine
: prevent stack sizes from growing beyond quantities that you would normally see in vanilla gameplaysort
:
tailor
: fix corner case where existing stock was being ignored, leading to over-orderingbuildingplan
:
caravan
: enable searching within containers in trade screen when in "trade bin with contents" modesort
: when searching on the Tasks tab, also search the names of the things the task is associated with, such as the name of the stockpile that an item will be stored inA: 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 v50.11: 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!
At long last, we have a measurement tooltip that follows the cursor when you are designating an area, for example when painting burrows, stockpiles, or digging designations.
Have you ever needed to link a lever to a floodgate or bridge that will be holding back magma, and then been frustrated when you found you had no control over whether a magma-safe mechanism was chosen to make the link?
The mechanism linking dialog is now integrated with buildingplan
, giving you quick filters for autoselecting a mechanism based on how much heat it will need to withstand or letting you choose a specific mechanism from your stock. This feature is available for linking both levers and pressure plates.
Burrows got a lot of attention in this release. In DF, burrows are useful for defining areas that limit:
gui/civ-alert
)gui/autochop
)but they can be a bit of a pain to work with. For example, setting up the burrow area across a multi-level fortress requires tedious box selection on every z-level. And when you have a 'Safe/Inside' burrow, it's difficult to remember to extend the burrow whenever you do some digging and expand your living area.
Also, if you have your units assigned to burrows for job purposes, it's also difficult to manage who is assigned where. Notably, if a unit dies while assigned to a burrow, you can't unassign that (dead) unit from the burrow and your count of assigned units will be inaccurate.
In light of all this, DFHack now provides a wide range of new burrow-related capabilities that should make them more fun and efficient to use.
Special thanks to Black-Talon for excellent suggestions and significant help with testing these features!
First of all, the vanilla box select that was limited to painting a single z-level at a time is replaced with a 3D selection box that can paint a burrow across your fort's z-levels at once!
Second, if you double click on a tile, you'll get a handy flood fill. This means that if you double click on the floor inside of your fort, the selection will flood to your entire fort on that level. The selection will include the adjacent walls so they can be smoothed and engraved by units that are assigned to the burrow itself.
Hold down Shift when you double click and you'll allow the flood to expand across z-levels. You can define a burrow for your entire fort with one shift-double click! The flood stops at forbidden doors and closed bridges, so it won't include the caverns if you have them blocked off. If you do accidentally include the caverns, erase a boundary between your fort and the caverns and shift-double click on the cavern side to remove just the cavern tiles from your burrow, just like the bucket tool in a painting app.
Third, you can set a burrow to auto-expand as you dig. If you name a burrow with a trailing plus symbol (+
), like "Inside+", then as your miners dig, the burrow will automatically expand to include the newly exposed tiles. Make sure to include the surrounding walls in your original burrow designation so the auto expansion checks know which wall tiles to monitor.
Fourth, there are updated unit search and filters for easier unit burrow assignment. The search widgets on the burrow assignment screen have gained the ability to filter by burrow membership, so you can easily add or remove one burrow's members when working with another burrow.
There are also supporting tools that make burrows more useful. If you turn on dead-units-burrow
in the gui/control-panel
"Maintenance" tab, then units will automatically be removed from your burrows when they die. The quickfort
blueprinting tool can now create new burrows and add tiles to existing ones. It can even register a burrow with gui/civ-alert
or autochop
, saving you some manual steps when you are laying down plans for your fortress. The Dreamfort
set of quickfort
blueprints takes advantage of this to set up more of your fort for you automatically.
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.
Many 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 do not compile yet and are not available 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.
burrow
: (reinstated) automatically expand burrows as you digsync-windmills
: synchronize or randomize movement of active windmillstrackstop
: (reimplemented) integrated overlay for changing track stop and roller settings after constructionbuildingplan
: allow specific mechanisms to be selected when linking levers or pressure platesburrow
: integrated 3d box fill and 2d/3d flood fill extensions for burrow painting modefix/dead-units
: gained ability to scrub dead units from burrow membership listsgui/design
: show selected dimensions next to the mouse cursor when designating with vanilla tools, for example when painting a burrow or designating diggingprospect
: can now give you an estimate of resources from the embark screen. hover the mouse over a potential embark area and run prospect
.quickfort
: new burrow
blueprint mode for designating or manipulating burrowssort
: military and burrow membership filters for the burrow assignment screenunforbid
: now ignores worn and tattered items by default (X/XX), use -X to bypassbuildingplan
: edit filter interface now uses ctrl-x to reset the filter to avoid conflict with increasing the filter's minimum quality (shift-x)caravan
: price of vermin swarms correctly adjusted down. a stack of 10000 bees is worth 10, not 10000emigration
: fix clearing of work details assigned to units that leave the fortgui/unit-syndromes
: show the syndrome names properly in the UIsort
: when filtering out already-established temples in the location assignment screen, also filter out the "No specific deity" option if a non-denominational temple has already been establishedstockpiles
: hide configure and help buttons when the overlay panel is minimizedtailor
: fix crash on Linux where scanned unit is wearing damaged non-clothing (e.g. a crown)buildingplan
:
dreamfort
: "Inside+" and "Clearcutting" burrows now automatically created and managedsort
:
warn-stranded
: don't warn for units that are temporarily on unwalkable tiles (e.g. as they pass under a waterfall)gui/control-panel
:
System
tab: buildingplan
, confirm
, logistics
, and overlay
. The base services should not be turned off by the player. Individual confirmation prompts can be managed via gui/confirm
, and overlays (including those for buildingplan
and logistics
) are managed on the control panel Overlays
tab.autolabor
from the Fort
and Autostart
tabs. The tool does not function correctly with the new labor types, and is causing confusion. You can still enable autolabor
from the commandline with enable autolabor
if you understand and accept its limitations.Buildings::completebuild
: used to link a newly created building into the worldBurrows::setAssignedUnit
: now properly handles inactive burrowsGui::getMousePos
: now takes an optional allow_out_of_bounds
parameter so coordinates can be returned for mouse positions outside of the game map (i.e. in the blank space around the map)Gui::revealInDwarfmodeMap
: gained highlight
parameter to control setting the tile highlight on the zoom targetMaps::getWalkableGroup
: get the walkability group of a tileUnits::getReadableName
: now returns the untranslated namedfhack.buildings.completebuild
: expose new module APIdfhack.gui.getMousePos
: support new optional allow_out_of_bounds
parameterdfhack.gui.revealInDwarfmodeMap
: gained highlight
parameter to control setting the tile highlight on the zoom targetdfhack.maps.getWalkableGroup
: get the walkability group of a tilegui.FRAME_THIN
: a panel frame suitable for floating tooltipsburrow
: add new graphics mode texture and color fieldsjob_item_flags3
: identify additional flagsdfhack.world
moduleA: 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
.
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!
We finally have search widgets for many of the screens with long lists. No longer will you need to scroll endlessly to find Bim Zasitisos, Cook
. You can just type "bim", or "cook", or maybe "knifedales", since that's what "Zasitisos" translates to and it's the name you see in some contexts. You can also search by the name of the job they're currently doing. Or hey, search for "forgotten" on the "Others" tab to see which forgotten beasts you've actually forgotten about in the caverns:
For each screen, you can click on the search field to focus it or hit the keyboard hotkey (Alt-s
) and start typing. Just like all DFHack text entry fields, you can hit Ctrl-x
to clear the text or Ctrl-v
to paste from your operating system clipboard.
Remember that you can search for more than just the name. Some examples:
Some screens come with additional filters. For example, in the "Engrave slab" menu, you can click a button and see just the units that you need to engrave a slab for to prevent ghosts. Similarly, when choosing which guildhall or temple to establish, you can now filter out the ones that you've already established. Now you can create chapels for each of the 40 deities that your dwarves somehow find time to worship and be confident that you aren't wasting space on duplicates.
The Justice tabs in particular received the most filtering capabilities. You can now easily see just the high-risk visitors you should be paying attention to (e.g. intelligent undead or professional criminals).
In all, DFHack has added search widgets to more than 30 screens/lists:
In addition, DFHack assists these workflows with searchable/filterable selection dialogs:
Have you noticed that your nobles don't actually get buried in the nice tombs you assigned to them while they were alive and demanding nice tombs? This is because DF loses track of that assignment when they die, which is amusingly and tragically ironic.
Enable preserve-tombs
in the DFHack gui/control-panel
("Fort" and "Autostart" tabs) to keep track of those tomb assignments and ensure they are actually used for their intended purposes.
Often, you just want to know how many of each category of thing you have. The group info bars have that information, but you need to click on each of them to collapse them to see more than one of them at a time. Now there is a solution to collapse all visible groups with one click. There is now a button off the right side of the stocks panel that says "collapse all". Click that button or hit the hotkey (Ctrl-x) to collapse everything down to a single line each.
Setting up tombs is a chore. You have to place the coffins, and then for each coffin, you have to declare a Tomb zone. With the burial
command, you can get those Tomb zones created for you automatically. Just run the command after you place the coffins to get the Tomb zones for free. No extra clicks!
Have you ever closed off the caverns and only later noticed that you had dwarves trapped down there? With warn-stranded
, you can get notified quickly that you have citizens that can't reach their peers. You'll then have enough time to organize a rescue mission before they start starving. It also catches units stuck in trees or in pits.
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.
Many 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 do not compile yet and are not available 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.
add-recipe
: (reinstated) add reactions to your civ (e.g. for high boots if your civ didn't start with the ability to make high boots)burial
: (reinstated) create tomb zones for unzoned coffinsfix/corrupt-jobs
: prevents crashes by automatically removing corrupted jobspreserve-tombs
: keep tombs assigned to units when they diespectate
: (reinstated) automatically follow dwarves, cycling among interesting oneswarn-stranded
: new repeatable maintenance script to check for stranded units, similar to warn-starving
burial
: new options to configure automatic burial and limit scope to the current z-leveldrain-aquifer
:
gui/control-panel
: drain-aquifer --top 2
added as an autostart optionlogistics
: automelt
now optionally supports melting masterworks; click on gear icon on stockpiles
overlay framesort
:
stocks
: hotkey for collapsing all categories on stocks screenbuildingplan
:
dwarfvet
: fix invalid job id assigned to Rest
job, which could cause crashes on reloadfull-heal
: fix removal of corpse after resurrectiongui/sandbox
: fix scrollbar moving double distance on clickhide-tutorials
: fix the embark tutorial prompt sometimes not being skippedsort
: don't count mercenaries as appointed officials in the squad assignment screensuspendmanager
: fix errors when constructing near the map edgezone
:
gui/launcher
with the help text in the help areabuildingplan
:
gui/gm-editor
: for fields with primitive types, change from click to edit to click to select, double-click to edit. this should help prevent accidental modifications to the data and make hotkeys easier to use (since you have to click on a data item to use a hotkey on it)gui/overlay
: filter overlays by current context so there are fewer on the screen at once and you can more easily click on the one you want to repositionorders
: recheck
command now only resets orders that have conditions that can be recheckedoverlay
: allow overlay_onupdate_max_freq_seconds
to be dynamically set to 0 for a burst of high-frequency updatesprioritize
: refuse to automatically prioritize dig and smooth/carve job types since it can break the DF job scheduler; instead, print a suggestion that the player use specialized units and vanilla designation prioritiesquickfort
: now allows constructions to be built on top of constructed floors and ramps, just like vanilla. however, to allow blueprints to be safely reapplied to the same area, for example to fill in buildings whose constructions were canceled due to lost items, floors will not be rebuilt on top of floors and ramps will not be rebuilt on top of rampssort
: added help button for squad assignment search/filter/sorttailor
: now adds to existing orders if possilbe instead of creating new oneszone
: animals trained for war or hunting are now labeled as such in animal assignment screensFILTER_FULL_TEXT
: moved from gui.widgets
to utils
; if your full text search preference is lost, please reset it in gui/control-panel
Items::getCapacity
, returns the capacity of an item as a container (reverse-engineered), needed for combine
dfhack.items.getCapacity
to expose the new module APIGRAY
color aliases for GREY
colorsutils.search_text
: text search routine (generalized from internal widgets.FilteredList
logic)translate_name
, buildingst_completebuild
artifact_rumor_locationst
: definedviewscreen_worldst
: defined types for view_mode
and artifacts_arl
fieldsworld_view_mode_type
: definedA: 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
.
This beta release is compatible with all distributions of Dwarf Fortress: Steam, Itch, and Classic.
If installing from Steam, remember to switch to the beta
branch in the properties for DFHack in the Steam client.
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!
We finally have search widgets for many of the screens with long lists. No longer will you need to scroll endlessly to find Bim Zasitisos, Cook
. You can just type "bim", or "cook", or maybe "knifedales", since that's what "Zasitisos" translates to and it's the name you see in some contexts. Or hey, search for "forgotten" on the "Others" tab to see which forgotten beasts you've forgotten about in the caverns:
Search units on the Citizens tab:
Search (and filter) interview candidates on the Justice tab:
Search artifacts on the world screen (for raids):
Search religions for dedicating a new temple:
So far, here are the screens that are covered:
Plus the screens that were already covered in previous DFHack versions:
Have you noticed that your nobles don't actually get buried in the nice tombs you assigned to them while they were alive and demanding nice tombs? This is because DF loses track of that assignment when they die, which is amusingly and tragically ironic.
Enable preserve-tombs
in the DFHack gui/control-panel
("Fort" and "Autostart" tabs) to keep track of those tomb assignments and ensure they are actually used for their intended purposes.
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.
Many 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 do not compile yet and are not available 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.
add-recipe
: (reinstated) add reactions to your civ (e.g. for high boots if your civ didn't start with the ability to make high boots)preserve-tombs
: keep tombs assigned to units when they diespectate
: (reinstated) automatically follow dwarves, cycling among interesting onesdrain-aquifer
:
gui/control-panel
: drain-aquifer --top 2
added as an autostart optionlogistics
: automelt
now optionally supports melting masterworks; click on gear icon on stockpiles
overlay framesort
:
gui/sandbox
: fix scrollbar moving double distance on clickhide-tutorials
: fix the embark tutorial prompt sometimes not being skippedsuspendmanager
: fix errors when constructing near the map edgezone
: don't show animal assignment link for cages and restraints linked to dungeon zones (which aren't normally assignable)orders
: recheck
command now only resets orders that have conditions that can be recheckedoverlay
: allow overlay_onupdate_max_freq_seconds
to be dynamically set to 0 for a burst of high-frequency updatessort
: added help button for squad assignment search/filter/sortzone
: animals trained for war or hunting are now labeled as such in animal assignment screensFILTER_FULL_TEXT
: moved from gui.widgets
to utils
; if your full text search preference is lost, please reset it in gui/control-panel
GRAY
color aliases for GREY
colorsutils.search_text
: text search routine (generalized from internal widgets.FilteredList
logic)translate_name
artifact_rumor_locationst
: definedviewscreen_worldst
: defined types for view_mode
and artifacts_arl
fieldsworld_view_mode_type
: definedA: 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
.
This release is compatible with all 50.10 and 50.11 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!
The vanilla screen for choosing which items you want to display on a pedestal or display case requires quite a bit of scrolling and clicking to use. It is also hard to figure out how the items you have assigned will affect the value of the room. There is now an alternate dialog that should make the process much easier and less opaque:
You can search items by name (including book titles), filter by quality (e.g. see only artifacts), and sort by name, value, or where the item is currently assigned for display.
If the pedestal is in a guildhall or temple, there is also a convenient indicator for whether you've added enough value to bump the guildhall or temple to the next tier. For example, if you need to provide your citizens with a grand guildhall, the indicator will change from "Guildhall" to "Grand guildhall" when you've assigned items with enough value.
Some people have already experimented with the newly re-added startdwarf
script, which allows you to change the number of dwarves you embark with, and have found that the DF embark screen doesn't support scrolling for the unit list. This means that if you embark with more dwarves than can fit on your screen, you cannot select them to configure their skills.
We now have a DFHack-added scrollbar so you can scroll up and down through the list and configure each of your extra dwarves:
Note that the vanilla screen was not intended to be scrolled, so the behavior of the list is a little odd. When you select a dwarf to configure, the list will jump so that the dwarf you selected is at the top of the screen. This can be a little disorienting, but the dwarf is still configurable, and all dwarves are accessible.
This only affects modders and players who are writing their own DFHack scripts and who react to mouse events like _MOUSE_L
or _MOUSE_L_DOWN
. Everyone else can skip reading this.
Back in the pre-v50 days, when the mouse was much less used in DF, I made a mistake in how I interpreted DF's handling of mouse button state. The result is that DFHack has been representing mouse state incorrectly to the Lua scripts. This hasn't been much of a problem since all the scripts were written to misinterpret the state the same way. However, now that DFHack tools are integrating more closely with the vanilla DF UI, the difference in interpretation of mouse state is causing conflicts.
The _MOUSE_L
event now correctly fires when the mouse button has just been clicked, and the _MOUSE_L_DOWN
event now correctly fires when the mouse button is held down. The previous definitions were backwards.
If you have written your own script and you refer to mouse events in your onInput(keys)
function, you can update to the new definitions by swapping references to _MOUSE_L
with _MOUSE_L_DOWN
and vice versa. Similarly for _MOUSE_R
and _MOUSE_M
, if you happen to use them. My apologies for breaking scripts. This is something we try not to do very often, though hopefully this change will make up for the hassle by allowing scripts to integrate more smoothly with vanilla DF widgets. Thanks!
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.
Many 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 do not compile yet and are not available 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.
startdwarf
: (reinstated) set number of starting dwarvestubefill
: (reinstated) replenishes mined-out adamantinestartdwarf
: overlay scrollbar so you can scroll through your starting dwarves if they don't all fit on the screenautolabor
: ensure vanilla work details are reinstated when the fort or the plugin is unloadedsuspendmanager
: fixed a bug where floor grates, bars, bridges etc. wouldn't be recognised as walkable, leading to unnecessary suspensions in certain cases.dfhack.TranslateName()
: fixed crash on certain invalid names, which affected warn-starving
onBuildingCreatedDestroyed
events, changed firing order of events so destroyed events come before created eventsdevel/inspect-screen
: display total grid size for UI and map layersdigtype
:
hotkeys
:
suspendmanager
: now suspends constructions that would cave-in immediately on completion_MOUSE_L
indicates that the left mouse button has just been pressed and _MOUSE_L_DOWN
indicates that the left mouse button is being held down. similarly for _MOUSE_R
and _MOUSE_M
. 3rd party scripts may have to adjust.start_dwarf_count
This release fixes a crash on startup when using the Windows Itch build of DF. All other functionality is identical to 50.10-r1.
For release notes and full instructions, see the 50.10-r1 release notes: https://github.com/DFHack/dfhack/releases/tag/50.10-r1