1. DFHack - Dwarf Fortress Modding Engine
  2. News

DFHack - Dwarf Fortress Modding Engine News

DFHack 50.11-r4 (pre-release)

[h2]New Tools[/h2]
  • build-now: (reinstated) instantly complete unsuspended buildings that are ready to be built
[h2]Fixes[/h2]
  • RemoteServer: don't shut down the socket prematurely, allowing continuing connections from, for example, dfhack-run
  • buildingplan: 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 selection
  • sort:
    • fix potential crash when exiting and re-entering a creatures subtab with a search active
    • prevent keyboard keys from affecting the UI when search is active and multiple keys are hit at once
  • tailor: fix corner case where existing stock was being ignored, leading to over-ordering
[h2]Misc Improvements[/h2]
  • buildingplan:
    • save magma safe mechanisms for when magma safety is requested when linking levers and pressure plates to targets
    • when choosing mechanisms for linking levers/pressure plates, filter out unreachable mechanisms
  • caravan: enable searching within containers in trade screen when in "trade bin with contents" mode
  • combine: prevent stack sizes from growing beyond quantities that you would normally see in vanilla gameplay
  • sort: 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 in

DFHack 50.11-r3

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!
[h2]Highlights[/h2][h3]Selection dimension indicator[/h3]



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.



[h3]Choose mechanisms for linking[/h3]



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.



[h3]Burrows![/h3]
Burrows got a lot of attention in this release. In DF, burrows are useful for defining areas that limit:
  • where assigned units perform tasks
  • where civilians can go for protection during an emergency (using gui/civ-alert)
  • where woodcutters harvest (or clearcut) trees (using gui/autochop)
  • where squad members gather to defend against threats

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!
[h3]3D box select[/h3]



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!



[h3]Flood fill[/h3]



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.



[h3]Auto-expanding burrows[/h3]



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.



[h3]Search filters[/h3]



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.



[h3]Supporting tools[/h3]



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.



[h2]Announcements[/h2][h3]PSAs[/h3]
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.
Generated release notes
[h2]New Tools[/h2]
  • burrow: (reinstated) automatically expand burrows as you dig
  • sync-windmills: synchronize or randomize movement of active windmills
  • trackstop: (reimplemented) integrated overlay for changing track stop and roller settings after construction
[h2]New Features[/h2]
  • buildingplan: allow specific mechanisms to be selected when linking levers or pressure plates
  • burrow: integrated 3d box fill and 2d/3d flood fill extensions for burrow painting mode
  • fix/dead-units: gained ability to scrub dead units from burrow membership lists
  • gui/design: show selected dimensions next to the mouse cursor when designating with vanilla tools, for example when painting a burrow or designating digging
  • prospect: 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 burrows
  • sort: military and burrow membership filters for the burrow assignment screen
  • unforbid: now ignores worn and tattered items by default (X/XX), use -X to bypass
[h2]Fixes[/h2]
  • RemoteServer: continue to accept connections as long as the listening socket is valid instead of closing the socket after the first disconnect
  • buildingplan: 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 10000
  • emigration: fix clearing of work details assigned to units that leave the fort
  • gui/unit-syndromes: show the syndrome names properly in the UI
  • sort: 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 established
  • stockpiles: hide configure and help buttons when the overlay panel is minimized
  • tailor: fix crash on Linux where scanned unit is wearing damaged non-clothing (e.g. a crown)
[h2]Misc Improvements[/h2]
  • buildingplan:
    • display how many items are available on the planner panel
    • make it easier to build single-tile staircases of any shape (up, down, or up/down)
  • dreamfort: "Inside+" and "Clearcutting" burrows now automatically created and managed
  • sort:
    • allow searching by profession on the squad assignment page
    • add search for places screens
    • add search for work animal assignment screen; allow filtering by miltary/squad/civilian/burrow
    • on the squad assignment screen, make effectiveness and potential ratings use the same scale so effectiveness is always less than or equal to potential for a given unit. this way you can also tell when units are approaching their maximum potential
    • new overlay on the animal assignment screen that shows how many work animals each visible unit already has assigned to them
  • warn-stranded: don't warn for units that are temporarily on unwalkable tiles (e.g. as they pass under a waterfall)
[h2]Removed[/h2]
  • gui/control-panel:
    • removed always-on system services from the 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.
    • removed 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.
[h2]API[/h2]
  • Buildings:: completebuild: used to link a newly created building into the world
  • Burrows:: setAssignedUnit: now properly handles inactive burrows
  • Gui:: 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 target
  • Maps:: getWalkableGroup: get the walkability group of a tile
  • Units:: getReadableName: now returns the untranslated name
[h2]Lua[/h2]
  • dfhack.buildings.completebuild: expose new module API
  • dfhack.gui.getMousePos: support new optional allow_out_of_bounds parameter
  • dfhack.gui.revealInDwarfmodeMap: gained highlight parameter to control setting the tile highlight on the zoom target
  • dfhack.maps.getWalkableGroup: get the walkability group of a tile
  • gui.FRAME_THIN: a panel frame suitable for floating tooltips
[h2]Structures[/h2]
  • burrow: add new graphics mode texture and color fields
  • job_item_flags3: identify additional flags
[h2]Documentation[/h2]
  • Document the Lua API for the dfhack.world module

DFHack 50.11-r2

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!
[h2]Highlights[/h2][h3]Search! Search! Search![/h3]
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:
  • Search for "steel short sword" when choosing artifacts to send a raid for
  • Search for "appraisal" when choosing a broker

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:
  • Info -> Creatures -> Citizens
  • Info -> Creatures -> Pets/Livestock
  • Info -> Creatures -> Pets/Livestock -> Overall Training
  • Info -> Creatures -> Pets/Livestock -> Assign Trainer
  • Info -> Creatures -> Others
  • Info -> Creatures -> Dead/Missing
  • Info -> Tasks
  • Info -> Labor -> Work details
  • Info -> Nobles -> Choose candidate
  • Info -> Objects -> Artifacts
  • Info -> Objects -> Symbols
  • Info -> Objects -> Named objects
  • Info -> Objects -> Written content
  • Info -> Justice ->
  • -> Interrogate
  • Info -> Justice ->
  • -> Convict
  • Location selector -> Temple
  • Location selector -> Guildhall
  • Unit selector -> Bedroom
  • Unit selector -> Office
  • Unit selector -> Dining hall
  • Unit selector -> Tomb
  • Unit selector -> Workshop worker
  • Unit selector -> Occupation
  • Unit selector -> Burrow
  • Unit selector -> Squad kill order
  • Unit selector -> Squad assignment
  • Stoneworker's workshop -> Engrave slab -> Choose unit to memorialize

In addition, DFHack assists these workflows with searchable/filterable selection dialogs:
  • Zone -> Pasture -> Assignment
  • Zone -> Pit -> Assignment
  • Cage -> Assignment
  • Restraint -> Assignment
  • Pedestal -> Choose item for display
  • Trade depot -> Bring items to depot
  • Trade depot -> Trade
[h3]Preserve tomb assignments[/h3]
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.
[h3]Single click collapse all for stocks screen[/h3]
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.





[h3]Automatic tomb zone creation[/h3]
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!



[h3]Get notified for stranded citizens[/h3]
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.



[h2]Announcements[/h2][h3]PSAs[/h3]
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.
Generated release notes
[h2]New Tools[/h2]
  • 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 coffins
  • fix/corrupt-jobs: prevents crashes by automatically removing corrupted jobs
  • preserve-tombs: keep tombs assigned to units when they die
  • spectate: (reinstated) automatically follow dwarves, cycling among interesting ones
[h2]New Scripts[/h2]
  • warn-stranded: new repeatable maintenance script to check for stranded units, similar to warn-starving
[h2]New Features[/h2]
  • burial: new options to configure automatic burial and limit scope to the current z-level
  • drain-aquifer:
    • gained ability to drain just above or below a certain z-level
    • new option to drain all layers except for the first N aquifer layers, in case you want some aquifer layers but not too many
  • gui/control-panel: drain-aquifer --top 2 added as an autostart option
  • logistics: automelt now optionally supports melting masterworks; click on gear icon on stockpiles overlay frame
  • sort:
    • new search widgets for Info panel tabs, including all "Creatures" subtabs, all "Objects" subtabs, "Tasks", candidate assignment on the "Noble" subtab, and the "Work details" subtab under "Labor"
    • new search and filter widgets for the "Interrogate" and "Convict" screens under "Justice"
    • new search widgets for location selection screen (when you're choosing what kind of guildhall or temple to dedicate)
    • new search widgets for burrow assignment screen and other unit assignment dialogs
    • new search widgets for artifacts on the world/raid screen
    • new search widgets for slab engraving menu; can filter for only units that need a slab to prevent rising as a ghost
  • stocks: hotkey for collapsing all categories on stocks screen
[h2]Fixes[/h2]
  • buildingplan:
    • remove bars of ash, coal, and soap as valid building materials to match v50 rules
    • fix incorrect required items being displayed sometimes when switching the planner overlay on and off
  • dwarfvet: fix invalid job id assigned to Rest job, which could cause crashes on reload
  • full-heal: fix removal of corpse after resurrection
  • gui/sandbox: fix scrollbar moving double distance on click
  • hide-tutorials: fix the embark tutorial prompt sometimes not being skipped
  • sort: don't count mercenaries as appointed officials in the squad assignment screen
  • suspendmanager: fix errors when constructing near the map edge
  • zone:
    • races without specific child or baby names will now get generic child/baby names instead of an empty string
    • don't show animal assignment link for cages and restraints linked to dungeon zones (which aren't normally assignable)
[h2]Misc Improvements[/h2]
  • Help icons added to several complex overlays. clicking the icon runs gui/launcher with the help text in the help area
  • buildingplan:
    • support filtering cages by whether they are occupied
    • show how many items you need to make when planning buildings
  • 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 reposition
  • orders: recheck command now only resets orders that have conditions that can be rechecked
  • overlay: allow overlay_onupdate_max_freq_seconds to be dynamically set to 0 for a burst of high-frequency updates
  • prioritize: 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 priorities
  • quickfort: 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 ramps
  • sort: added help button for squad assignment search/filter/sort
  • tailor: now adds to existing orders if possilbe instead of creating new ones
  • zone: animals trained for war or hunting are now labeled as such in animal assignment screens
[h2]Removed[/h2]
  • FILTER_FULL_TEXT: moved from gui.widgets to utils; if your full text search preference is lost, please reset it in gui/control-panel
[h2]API[/h2]
  • added Items::getCapacity, returns the capacity of an item as a container (reverse-engineered), needed for combine
[h2]Lua[/h2]
  • added dfhack.items.getCapacity to expose the new module API
  • added GRAY color aliases for GREY colors
  • utils.search_text: text search routine (generalized from internal widgets.FilteredList logic)
[h2]Structures[/h2]
  • add new globals: translate_name, buildingst_completebuild
  • artifact_rumor_locationst: defined
  • viewscreen_worldst: defined types for view_mode and artifacts_arl fields
  • world_view_mode_type: defined
[h2]Documentation[/h2]
  • unavailable tools are no longer listed in the tag indices in the online docs

DFHack 50.11-r2rc1

[h3]Q: How do I download DFHack?[/h3]
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.

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!
[h2]Highlights[/h2][h3]Search! Search! Search![/h3]
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.

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:
  • Info -> Creatures -> Citizens
  • Info -> Creatures -> Pets/Livestock
  • Info -> Creatures -> Pets/Livestock -> Overall Training
  • Info -> Creatures -> Pets/Livestock -> Assign Trainer
  • Info -> Creatures -> Others
  • Info -> Creatures -> Dead/Missing
  • Info -> Tasks
  • Info -> Labor -> Work details
  • Info -> Objects -> Artifacts
  • Info -> Objects -> Symbols
  • Info -> Objects -> Named objects
  • Info -> Objects -> Written content
  • Info -> Justice ->
  • -> Interrogate
  • Info -> Justice ->
  • -> Convict
  • Location selector -> Temple
  • Location selector -> Guildhall
  • Unit selector -> Bedroom
  • Unit selector -> Office
  • Unit selector -> Dining hall
  • Unit selector -> Tomb
  • Unit selector -> Workshop worker
  • Unit selector -> Occupation
  • Unit selector -> Burrow
  • Unit selector -> Squad kill order

Plus the screens that were already covered in previous DFHack versions:
  • Unit selector -> Squad assignment
  • Zone -> Pasture -> Animal assignment
  • Zone -> Pit -> Animal assignment
  • Building -> Cage -> Animal assignment
  • Building -> Restraint -> Animal assignment
[h3]Preserve tomb assignments[/h3]
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.
[h2]Announcements[/h2][h3]PSAs[/h3]
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.
Generated release notes
[h2]New Tools[/h2]
  • 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 die
  • spectate: (reinstated) automatically follow dwarves, cycling among interesting ones
[h2]New Features[/h2]
  • drain-aquifer:
    • gained ability to drain just above or below a certain z-level
    • new option to drain all layers except for the first N aquifer layers, in case you want some aquifer layers but not too many
  • gui/control-panel: drain-aquifer --top 2 added as an autostart option
  • logistics: automelt now optionally supports melting masterworks; click on gear icon on stockpiles overlay frame
  • sort:
    • new search widgets for Info panel tabs, including all "Creatures" subtabs, all "Objects" subtabs, "Tasks", and the "Work details" subtab under "Labor"
    • new search and filter widgets for the "Interrogate" and "Convict" screens under "Justice"
    • new search widgets for location selection screen (when you're choosing what kind of guildhall or temple to dedicate)
    • new search widgets for burrow assignment screen and other unit assignment dialogs
    • new search widgets for artifacts on the world/raid screen
[h2]Fixes[/h2]
  • gui/sandbox: fix scrollbar moving double distance on click
  • hide-tutorials: fix the embark tutorial prompt sometimes not being skipped
  • suspendmanager: fix errors when constructing near the map edge
  • zone: don't show animal assignment link for cages and restraints linked to dungeon zones (which aren't normally assignable)
[h2]Misc Improvements[/h2]
  • orders: recheck command now only resets orders that have conditions that can be rechecked
  • overlay: allow overlay_onupdate_max_freq_seconds to be dynamically set to 0 for a burst of high-frequency updates
  • sort: added help button for squad assignment search/filter/sort
  • zone: animals trained for war or hunting are now labeled as such in animal assignment screens
[h2]Removed[/h2]
  • FILTER_FULL_TEXT: moved from gui.widgets to utils; if your full text search preference is lost, please reset it in gui/control-panel
[h2]Lua[/h2]
  • added GRAY color aliases for GREY colors
  • utils.search_text: text search routine (generalized from internal widgets.FilteredList logic)
[h2]Structures[/h2]
  • add new global: translate_name
  • artifact_rumor_locationst: defined
  • viewscreen_worldst: defined types for view_mode and artifacts_arl fields
  • world_view_mode_type: defined

DFHack 50.11-r1

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!
[h2]Highlights[/h2][h3]Display furniture item selector[/h3]



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.
[h3]Scrolling for the unit list when embarking[/h3]



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.
[h2]Announcements[/h2][h3]Mouse event definitions have changed for scripts[/h3]
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!
[h3]PSAs[/h3]
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.
Generated release notes
[h2]New Tools[/h2]
  • startdwarf: (reinstated) set number of starting dwarves
  • tubefill: (reinstated) replenishes mined-out adamantine
[h2]New Features[/h2]
  • A new searchable, sortable, filterable dialog for selecting items for display on pedestals and display cases
  • startdwarf: overlay scrollbar so you can scroll through your starting dwarves if they don't all fit on the screen
[h2]Fixes[/h2]
  • EventManager: Unit death event no longer misfires on units leaving the map
  • autolabor: ensure vanilla work details are reinstated when the fort or the plugin is unloaded
  • suspendmanager: 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
[h2]Misc Improvements[/h2]
  • EventManager:
    • guard against potential iterator invalidation if one of the event listeners were to modify the global data structure being iterated over
    • for onBuildingCreatedDestroyed events, changed firing order of events so destroyed events come before created events
  • devel/inspect-screen: display total grid size for UI and map layers
  • digtype:
    • designate only visible tiles by default, and use "auto" dig mode for following veins
    • added options for designating only current z-level, this z-level and above, and this z-level and below
  • hotkeys:
    • make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable
    • use vertical bars instead of "!" symbols for the DFHack logo in ascii mode to make it easier to read
  • suspendmanager: now suspends constructions that would cave-in immediately on completion
[h2]Lua[/h2]
  • mouse key events are now aligned with internal DF semantics: _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.
[h2]Structures[/h2]
  • add new global: start_dwarf_count