Skip to content

Releases: DFHack/dfhack

DFHack 50.07-beta2

31 Mar 19:53
38d4eea
Compare
Choose a tag to compare
DFHack 50.07-beta2 Pre-release
Pre-release

This release is compatible with all distributions of DF: Steam, Itch, and Classic.

To download DFHack: scroll down to "Assets" and download the "dfhack-50.07-beta2-Windows-64bit.zip" file.

Please report any bugs (or feature requests) on the DFHack GitHub issue tracker.

Announcements

DFHack is coming to Steam, PSAs

DFHack is coming to Steam

In two weeks, you'll be able to install DFHack from Steam. You may have heard that DFHack now has a Steam page. We're in the mandatory 2 week waiting period right now before we can go live, but in two weeks, Steam users will be able to keep DFHack updated via Steam instead of having to go through the manual install process for every version.

This was a massive undertaking, and thanks to everyone who helped make this happen: TaxiService, RafaelKB, and Rumrusher for graphic design; AndrielChaoti, Finn!, Robob27, Thalzen, esotericist, TaxiService, Ozzatron, sdegrace, 20k, plule, RafaelKB, Putnam, drhead, Scootieloo, and coskerstrike for beta testing the Steam release process; and, of course, Kitfox for fielding Steam's questions during the build review and approving us as a DF mod : )

PSAs

As always, remember that, just like the vanilla DF game, DFHack tools can also have bugs. It is a good idea to save often and keep backups of the forts that you care about.

Many DFHack tools that worked in previous (pre-Steam) versions of DF have not been tested thoroughly with the newest versions and have 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 autocomplete as normal. Some tools do not compile yet and are not available at all, even when in dev mode.

For those of you using sdl12compat, note that you will need to replace the "SDLreal.dll" file that DFHack installs with the SDL.dll (renamed to "SDLreal.dll") from sdl12compat. While we do not specifically recommend using sdl12compat, we have generally heard positive feedback about it.

Steam deck users: To avoid blocking the screen with the DFHack terminal window, please edit the dfhack-config/init/dfhack.init file and add a line with the word hide. This will hide the DFHack terminal and get it out of the way. You can show it again if you need it by running the command show from gui/launcher.

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 in the DF settings, and you can show it by entering mining mode or selecting the dump/forbid tool. We're working on making DFHack tools more mouse-aware and accessible.

Highlights

fix/general-strike, gui/civ-alert, buildingplan, tailor, mod support

fix/general-strike

enable the general strike bug fix in gui/control-panel:
general-strike

This script attempts to fix known causes of the "general strike bug", where dwarves just stop accepting work and stand around with "No job". Big thanks to Putnam for contributing the logic to DFHack so players can benefit before the final fix is added to vanilla DF.

You can enable automatic running of this fix in the "Maintenance" tab of gui/control-panel.

gui/civ-alert

keep your civilians safe during sieges:
civ-alert

In vanilla DF, assigning a unit to a burrow is treated more like a suggestion than a command. This can be frustrating when you're assigning units to burrows in order to get them out of danger. In contrast, triggering a civilian alert with gui/civ-alert will cause all your non-military citizens to immediately rush to a burrow ASAP and stay there. No need to manually assign your civilians to the burrow, the alert applies to all civilians automatically. This gives you a way to keep your civilians safe when there is danger about.

You'll notice an extra panel on the Squads menu (the one that shows up on the right side of the screen when you hit q) that prompts you to configure a burrow to use for the civ alert. Get it set up, and when danger comes a-knockin', hit that Big Red Button!

Buildingplan

More bugs squashed in buildingplan, notably:

  • Issues with filter settings getting lost on game load have been solved
  • All stairs types will now properly use the filter you set for stairs, and the shape of the staircase will now take carved staircases that you might be building over into account

Also, the final feature from the old automaterial plugin has been added to buildingplan: if you are choosing your materials manually when you build, you can configure the building type to automatically use the last material you selected until it is all gone. No need to click through the Choose Items dialog.

Expect further improvements to the buildingplan UI in upcoming releases!

Tailor

The tailor plugin has received some love this cycle, with better detection routines for which units need which types of clothing. This leads to more accurate manager orders to produce clothes in correct quantities. Turn tailor on in gui/control-panel and give it a try if you haven't already!

Support for scripts in DF mods

Whaaaat?? Yes, it's true. Scripts with mods now work automatically as soon as you activate them for a world. No more manual copying of scripts after "installation". This allows everything from single scripts to total conversion mods that add new scripted gameplay elements to work seamlessly, straight from the DF Steam Workshop. See the DFHack modding guide for details. You can also subscribe to the example Workshop mod to see a real example of how to distribute scripts via Steam Workshop (though the format is applicable to mods distributed by non-Steam means as well).

Generated Release Notes

New tools, fixes, and improvements

New Plugins

  • getplants: designate trees for chopping and shrubs for gathering according to type
  • prospector: get stone, ore, gem, and other tile property counts in fort mode. embark site estimates are not yet available.

New Scripts

  • fix/general-strike: fix known causes of the general strike bug (contributed by Putnam)
  • gui/civ-alert: configure and trigger civilian alerts
  • gui/seedwatch: GUI config and status panel interface for seedwatch

Fixes

  • buildingplan:
    • filters are now properly applied to planned stairs
    • existing carved up/down stairs are now taken into account when determining which stair shape to construct
    • upright spike traps are now placed extended rather than retracted
    • you can no longer designate constructions on tiles with magma or deep water, mirroring the vanilla restrictions
    • fixed material filters getting lost for planning buildings on save/reload
    • respect building size limits (e.g. roads and bridges cannot be more than 31 tiles in any dimension)
  • caravan: item list length now correct when expanding and collapsing containers
  • prioritize: fixed all watched job type names showing as nil after a game load
  • suspendmanager:
    • does not suspend non-blocking jobs such as floor bars or bridges anymore
    • fix occasional bad identification of buildingplan jobs
  • tailor:
    • properly discriminate between dyed and undyed cloth
    • no longer default to using adamantine cloth for producing clothes
    • take queued orders into account when calculating available materials
    • skip units who can't wear clothes
    • identify more available items as available, solving issues with over-production
  • warn-starving: no longer warns for enemy and neutral units

Misc Improvements

  • scripts in data/installed mods/ subfolders are now automatically added to the DFHack script path. DFHack recognizes two directories in a mod's folder: scripts_modinstalled/ and scripts_modactive/. scripts_modinstalled/ folders will always be added the script path, regardl...
Read more

DFHack 50.07-beta1

17 Mar 22:28
460ce88
Compare
Choose a tag to compare
DFHack 50.07-beta1 Pre-release
Pre-release

This beta release is compatible with all distributions of DF: Steam, Itch, and Classic.

Installation instructions here: https://docs.dfhack.org/en/latest/docs/Installing.html#installing

Quickstart guide here: https://docs.dfhack.org/en/latest/docs/Quickstart.html#quickstart

Please report any bugs (or feature requests) as a GitHub issue here: https://github.com/DFHack/dfhack/issues

Announcements

alpha -> beta, PSAs

"alpha" -> "beta"

We have moved from the "alpha" phase to the "beta" phase. What does this mean for DFHack? It means that we've been running on tens of thousands of forts for tens of thousands of players (according to our download statistics), and no major issues have come up. The few crash bugs that were reported in the DF 50.05 days have been fixed, there have been exactly zero game corruption bugs reported, and DFHack's core library is stable. It seems calling ourselves "alpha" is at odds with our actual level of reliability.

So why not skip the "beta" and jump straight to "stable"? Well, there are a few more things we'd like to get done before we move to "stable" releases. In particular, we'd like to have a formal public beta testing program in place. Since the majority of DF players are Steam users, we've been working to get DFHack on Steam. Not only will this simplify the DFHack update process for all Steam users (that is, you just add DFHack to your Steam library and it will autoupdate for you), but it will also give DFHack a platform from which to run a beta testing program.

Most players will stay on the default release channel, which will keep you updated with "stable" DFHack releases. Players who want the newest features first and who are willing to also catch and report the bugs can subscribe to the "beta" release channel. We will only push a build to the "stable" release channel after it has been tested in the "beta" channel for an appropriate amount of time. In this way, we hope to provide a very high level of reliability for the stable releases.

How close is DFHack to being on steam? After several months of research and work, we're tantalizingly close. However, there are a few final approval stages that are outside our control and prevent us from giving an ETA. For technical reasons, DFHack will be a Steam "App" and not a workshop mod, so there is much more paperwork involved, even for a free, open source application.

PSAs

As always, remember that, just like the vanilla DF game, DFHack tools can also have bugs. It is a good idea to save often and keep backups of the forts that you care about.

Many DFHack tools that worked in previous (pre-Steam) versions of DF have not been tested thoroughly with the newest versions. The tools that are untested will show a warning if you try to run them 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 untested.

The in-game interface for running DFHack commands (gui/launcher) will not show untested 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 autocomplete as normal. Some tools do not compile yet and are not available at all, even when in dev mode.

For those of you using sdl12compat, note that you will need to replace the "SDLreal.dll" file that DFHack installs with the SDL.dll (renamed to "SDLreal.dll") from sdl12compat. While we do not specifically recommend using sdl12compat, we have generally heard positive feedback about it.

Steam deck users: To avoid blocking the screen with the DFHack terminal window, please edit the dfhack-config/init/dfhack.init file and add a line with the word hide. This will hide the DFHack terminal and get it out of the way. You can show it again if you need it by running the command show from gui/launcher.

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 in the DF settings, and you can show it by entering mining mode or selecting the dump/forbid tool. We're working on making DFHack tools more mouse-aware and accessible.

Highlights

buildingplan, suspendmanager, blueprints directory change, quicksave

Buildingplan

Thank you all for the feedback you've given us about buildingplan over the past week! We're pushing this release out faster than usual in order to address the issues people have run into and to implement your requests:

  • Items are now matched and attached correctly to screw pumps and other multi-item buildings
  • Buildings with different filter configurations will no longer get "stuck" if one of the building's filters currently matches no items
  • Your choice for whether you want to choose specific items is now saved per building type
  • You can now attach multiple weapons to spike traps
  • You can now filter by clay materials
  • You can now filter by whether a slab is engraved
  • There is now a "minimize" button to temporarily get the planner overlay out of the way if you would rather use the vanilla UI for placing the current building
  • If you want to reset all buildingplan settings and filters to defaults, there is now a buildingplan reset command that you can run from gui/launcher

Again, we have lots of plans for making buildingplan better and better, but we'd also love to hear your thoughts about how this version is working for you. Tell us here in this thread or join the "buildingplan feedback" discussion on the DFHack discord: https://dfhack.org/discord

Suspendmanager

Prevent missed corners with the new suspendmanager (active in video on the right side):
suspendmanager

Turn suspendmanager on in gui/control-panel:
enable_suspendmanager

suspendmanager is replacing the current autounsuspend tool. It takes over autounsuspend's job of unsuspending building construction jobs that have become suspended due to inaccessible materials, items temporarily in the way, or worker dwarves getting scared by wildlife. It also solves a common problem that players run into when building walls. If you build a wall with a corner, dwarves often choose to build the corner tile last. This means that by the time they want to build it, they can't get to it, and the wall corner remains forever unbuilt. suspendmanager detects when this might happen and suspends the adjacent wall construction jobs until the corner tiles are built, getting the job done right the first time and saving you the hassle of manually fixing the problem.

You can enable suspendmanager in gui/control-panel. Give it a try!

Blueprint directory change

Tl;dr: player-created blueprints will now be written to the dfhack-config/blueprints folder. Please move your existing personal blueprints from blueprints (in the top-level DF game directory) to dfhack-config/blueprints so quickfort and gui/quickfort can continue to find them.

Long version: All of your saved DFHack data is stored in the dfhack-config folder. This protects it when you upgrade DFHack, makes it easy to find when you're copying it to a new install directory, and, once we get DFHack on Steam, will allow your data to get backed up automatically in the Cloud. Up until now, the blueprints directory has lived outside of the protected dfhack-config folder because we wanted to maintain compatibility with the old (but venerable), out-of-process implementation of Quickfort that came with PeridexisErrant's DF Starter Pack. That is no longer relevant, so it's finally time to move blueprints in with the rest of the protected data.

Like many other DFHack tool data libraries, the library blueprints will now be stored in the hack/data directory. You don't need to worry about those. They'll appear in gui/quickfort just like they always have.

All you have to do is move your personal blueprints (if any) from the blueprints folder to the new dfhack-config/blueprints folder. That folder will be created automatically the first time you start DF after upgrading DFHack, but you can create it manually if you're moving your blueprints before starting DF.

If you have any extra blueprints in your blueprints directory that are not part of the DFHack blueprint library, for example, the community blueprints that used to come with the Starter Pack, you should move those to dfhack-config/blueprints too.

Then you can safely delete the old blueprints directory in the top-level DF folder.

Sorry for the extra work! This will make things easier to manage going forward, though.

Quicksave

Some of you may have noticed that quicksave has sometimes completed "too quickly" and fails to create a fully usable savegame. After investigation, we've found the additional setup that has to be completed before DF will properly save the game. quicksave will now reliably create a full autosave whenever it is run. Go forth, and save often!

Generated release notes

New tools, fixes, and improvements

New Scripts

  • gui/suspendmanager: graphical configuration interface for suspendmanager
    ...
Read more

DFHack 50.07-alpha3

11 Mar 23:57
468b3b5
Compare
Choose a tag to compare
DFHack 50.07-alpha3 Pre-release
Pre-release

This alpha release is compatible with all distributions of DF: Steam, Itch, and Classic.

Installation instructions here: https://docs.dfhack.org/en/latest/docs/Installing.html#installing

Quickstart guide here: https://docs.dfhack.org/en/latest/docs/Quickstart.html#quickstart

Announcements

PSAs

PSAs

Standard alpha release warnings:

  • DFHack tools probably won't corrupt your savegame, but it would be really smart to keep backups of the forts that you care about. DFHack may not have fully adapted to the changes in the new version of Dwarf Fortress, and, especially at this early stage of release and ongoing rapid development, there WILL be bugs. Please always inform us quickly about crash bugs. We prioritize getting those fixed first.
  • Many tools have not been tested thoroughly with Steam DF. The tools that are untested will show a warning if you try to run them and exit immediately. You can run the command again to override the warning (though of course the tools may not work).
  • The in-game interface for running DFHack commands (gui/launcher) will not show untested 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 autocomplete as normal. Some tools do not compile yet and are not available at all, even when in dev mode.

For those of you using sdl12compat, note that you will need to replace the "SDLreal.dll" file that DFHack installs with the SDL.dll (renamed to "SDLreal.dll") from sdl12compat. While we do not specifically recommend using sdl12compat, we have generally heard positive feedback about it.

Steam deck users: To avoid blocking the screen with the DFHack terminal window, please edit the dfhack-config/init/dfhack.init file and add a line with the word hide. This will hide the DFHack terminal and get it out of the way. You can show it again if you need it by running the command show from gui/launcher.

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 in the DF settings, and you can show it by entering mining mode or selecting the dump/forbid tool. We're working on making DFHack tools more mouse-aware and accessible.

Highlights

buildingplan, dig-now, gui/dig

Easily plan out buildings before you have materials with buildingplan:
buildingplan_screw_pump

Ensure your screw pumps are magma-safe with just one click:
buildingplan_magma_safe

Control the quality of items used as materials:
buildingplan_item_quality

Select which materials you want to build with:
buildingplan_materials

Select specific items if you want to:
buildingplan_item_selection

Symmetrical shapes with gui/dig:
dig

The centerpiece feature of this release is buildingplan. We will be iterating on its design over the next few releases, but this first version is already useful, stable, and ready to help take some of the frustration out of building placement!

buildingplan lets you place furniture, constructions, and other buildings, regardless of whether the required materials are available. It attaches items as they become available and your dwarves build the buildings when they can. This allows you to focus purely on design elements when you are laying out your fort, and defers item production concerns to a more convenient time.

The buildingplan UI appears over the vanilla widgets when you choose a building type to build, and is intended to be a complete replacement for vanilla building placement. If you find that you just don't like it, you can turn the buildingplan.planner overlay off in gui/control-panel. Then please tell us why you don't like it so we can make it better : P

buildingplan also gives you a few more options when laying down constructions. You can choose the type of staircase that gets built at the top and bottom of a stair designation, for example. You can also choose to place hollow areas instead of solid, for example to easily surround a large area with a wall. It also allows you to place constructions over areas where some tiles cannot be built over. If you try to build a wall through a tree, for example, the tree tile will simply be skipped instead of blocking the entire wall.

buildingplan gives you whatever level of control you want over how materials are chosen to build your planned buildings:

  • You can just click and place buildings and buildingplan will choose appropriate materials when they appear. No hassle, no worry.
  • You can set filters for which materials are acceptable for each type of building you plan. Want your walls all made out of marble blocks? You can configure that with a few clicks, and buildingplan will only choose marble blocks to build those walls. Want to use only masterwork, decorated, gold tables for your monarch's dining hall? buildingplan can do that too.
  • If you want, and if you have items already available, buildingplan can let you choose specific items for the building that you're planning. If you want a particular mix of weapons in your weapon trap, for example, you might want this level of control.
  • If you are choosing specific items, buildingplan will also remember which materials you have chosen recently and put those items at the top of the list (by default) so you can easily find them again.

We have lots of plans for making buildingplan better and better, but we'd also love to hear your thoughts about how this version is working for you. Tell us here in this thread or join the "buildingplan feedback" discussion on the DFHack discord: https://dfhack.org/discord

See the full docs for buildingplan here: https://docs.dfhack.org/en/latest/docs/tools/buildingplan.html#buildingplan or just try it out in-game!

Also:

  • dig-now now handles designations that have already been converted into active jobs, so you won't be left with an outline of undug tiles anymore. multi-level channeling is now properly handled as well.
  • gui/dig now allows you to create free-form shapes, and can automatically mirror your lines to create symmetrical shapes
  • stockpiles allows you to export and import stockpile configurations. This is an early version that only supports a commandline interface. UI integration is coming soon!

Generated release notes

New tools, fixes, and improvements

Fixes

  • dig-now: fixed multi-layer channel designations only channeling every second layer
  • gui/create-item: fix generic corpsepiece spawning
  • dfhack.job.isSuitableMaterial: now properly detects lack of fire and magma safety for vulnerable materials with high melting points
  • widgets.HotkeyLabel: don't trigger on click if the widget is disabled

Misc Improvements

  • buildingplan: entirely new UI for building placement, item selection, and materials filtering!
  • dig-now: added handling of dig designations that have been converted into active jobs
  • gui/create-item: added ability to spawn 'whole' corpsepieces (every layer of a part)
  • gui/dig:
    • Allow placing an extra point (curve) while still placing the second main point
    • Allow placing n-point shapes, shape rotation/mirroring
    • Allow second bezier point, mirror-mode for freeform shapes, symmetry mode

Removed

  • automaterial: all functionality has been merged into buildingplan
  • gui.THIN_FRAME: replaced by gui.INTERIOR_FRAME

API

  • Gui focus strings will no longer get the "dfhack/" prefix if the string "dfhack/" already exists in the focus string
  • Maps::GetBiomeTypeRef renamed to Maps::getBiomeTypeRef for consistency
  • Maps::GetBiomeType renamed to Maps::getBiomeType for consistency
  • Military:
    • New module for military functionality
    • new makeSquad to create a squad
    • changed getSquadName to take a squad identifier
    • new updateRoomAssignments for assigning a squad to a barracks and archery range

Lua

  • dfhack.job.attachJobItem(): allows you to attach specific items to a job
  • dfhack.screen.paintTile(): you can now explicitly clear the interface cursor from a map tile by passing 0 as the tile value
  • gui.INTERIOR_FRAME: a panel frame style for use in highlighting off interior areas of a UI
  • maps.getBiomeType: exposed preexisting function to Lua
  • widgets.CycleHotkeyLabel: add label_below attribute for compact 2-line output
  • widgets.FilteredList: search key matching is now case insensitive by default
  • widgets.Label: token tile properties can now be functions that return a value

Structures

  • history_eventst: Removed history_event_masterpiece_created_arch_designst and related enum value
  • plot_infost.unk_8: renamed to theft_intrigues. Fields unk_1 thru unk_8 renamed to target_item, ``master...
Read more

DFHack 50.07-alpha2

25 Feb 00:24
816371c
Compare
Choose a tag to compare
DFHack 50.07-alpha2 Pre-release
Pre-release

This alpha release is compatible with all distributions of DF: Steam, Itch, and Classic.

Installation instructions here: https://docs.dfhack.org/en/latest/docs/Installing.html#installing

Quickstart guide here: https://docs.dfhack.org/en/latest/docs/Quickstart.html#quickstart

Progress on updating existing DFHack tools is tracked here, and comments from players are welcome if an "untested" tool works for you. If you are waiting for a particular DFHack tool to get updated, please cast your vote for the tools that you'd like us to work on next: https://strawpoll.com/polls/61gDmBRx5Zw

Announcements

PSAs

PSAs

Standard alpha release warnings:

  • DFHack tools probably won't corrupt your savegame, but it would be really smart to keep backups of the forts that you care about. DFHack may not have fully adapted to the changes in the new version of Dwarf Fortress, and, especially at this early stage of release and ongoing rapid development, there WILL be bugs. Please always inform us quickly about crash bugs. We prioritize getting those fixed first.
  • Many tools have not been tested thoroughly with Steam DF. The tools that are untested will show a warning if you try to run them and exit immediately. You can run the command again to override the warning.
  • The in-game interface for running DFHack commands (gui/launcher) will not show untested 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 autocomplete as normal. Some tools do not compile yet and are not available at all, even when in dev mode.

For those of you using sdl12compat, note that you will need to replace the "SDLreal.dll" file that DFHack installs with the SDL.dll (renamed to "SDLreal.dll") from sdl12compat. While we do not specifically recommend using sdl12compat, we have generally heard positive feedback about it.

Steam deck users: To avoid blocking the screen with the DFHack terminal window, please edit the dfhack-config/init/dfhack.init file and add a line with the word hide. This will hide the DFHack terminal and get it out of the way. You can show it again if you need it by running the command show from gui/launcher.

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 in the DF settings, and you can show it by entering mining mode or selecting the dump/forbid tool. We're working on making DFHack tools more mouse-aware and accessible.

Highlights

gui/mass-remove, trade screen, gui/dig, updated tools

Clear things away with gui/mass-remove:
mass-remove

Trade with less clicking:
caravan-overlay

Lay down designs with gui/dig:
guidig

  • The trade screen now has a helper overlay that lets you select all/none for trade in a container, collapse containers, and collapse all categories
  • gui/mass-remove allows you to select blocks of buildings and constructions and remove/suspend them all with a single click. Designated buildings that have not yet been built will just disappear. Built buildings/constructions will have a disassembly job created for them, just as if you had clicked the button on the building info sheet.
  • gui/dig continues to impress with new abilities to create multi-point curves. Spirals, anyone?
  • combine allows you to combine food/drink of the same type that are sitting in different partially-filled containers in the same stockpile, helping you free up much-needed stockpile space
  • Literal "highlight" here: clickable DFHack widgets now show a visible highlight when you mouse over them.

Newly tested/updated tools

These are the existing tools that have been reported as working on the tracking spreadsheet. Thank you for all the people who have left comments there detailing which tools work and which ones don't! Your testing allowed us to make these tools available much faster than we otherwise would have.

  • caravan: Adjust properties of caravans on the map.
  • clear-smoke: Remove all FPS-draining smoke from the map.
  • colonies: Manipulate vermin colonies and hives.
  • deep-embark: Embark deep underground.
  • devel/annc-monitor: Track announcements and reports and echo them to the console.
  • fix-retrieve-units: Allow units stuck offscreen to enter the map.
  • fix/stuck-merchants: Dismiss merchants that are stuck off the edge of the map.
  • force: Trigger in-game events.
  • gui/mass-remove: Mass select buildings and constructions to suspend or remove.
  • reveal-hidden-sites: Reveal all sites in the world.
  • set-timeskip-duration: Modify the duration of the pre-game world update.
  • strangemood: Trigger a strange mood.
  • superdwarf: Make a dwarf supernaturally speedy.
  • troubleshoot-item: Inspect properties of the selected item.

Generated release notes

New tools, fixes, and improvements

New Scripts

  • combine: combines stacks of food and plant items.

Fixes

  • autobutcher: implemented work-around for Dwarf Fortress not setting nicknames properly, so that nicknames created in the in-game interface are detected & protect animals from being butchered properly. Note that nicknames for unnamed units are not currently saved by dwarf fortress - use enable fix/protect-nicks to fix any nicknames created/removed within dwarf fortress so they can be saved/reloaded when you reload the game.
  • autochop: generate default names for burrows with no assigned names
  • autodump: changed behaviour to only change dump and forbid flags if an item is successfully dumped.
  • channel-safely: fix an out of bounds error regarding the REPORT event listener receiving (presumably) stale id's
  • confirm: fix fps drop when enabled
  • devel/query: can now properly index vectors in the --table argument
  • forbid: fix detection of unreachable items for items in containers
  • gui/blueprint: correctly use setting presets passed on the commandline
  • gui/quickfort: correctly use settings presets passed on the commandline
  • makeown: fixes errors caused by using makeown on an invader
  • nestboxes: fixed bug causing nestboxes themselves to be forbidden, which prevented citizens from using them to lay eggs. Now only eggs are forbidden.
  • seedwatch: fix saving and loading of seed stock targets
  • tailor: block making clothing sized for toads; make replacement clothing orders use the size of the wearer, not the size of the garment
  • troubleshoot-item: fix printing of job details for chosen item
  • unforbid: fix detection of unreachable items for items in containers
  • Buildings::StockpileIterator: fix check for stockpile items on block boundary.

Misc Improvements

  • DFHack tool windows that capture mouse clicks (and therefore prevent you from clicking on the "pause" button) now unconditionally pause the game when they open (but you can still unpause with the keyboard if you want to). Examples of this behavior: gui/quickfort, gui/blueprint, gui/liquids
  • Stopped mouse clicks from affecting the map when a click on a DFHack screen dismisses the window
  • autobutcher: logs activity to the console terminal instead of making disruptive in-game announcements
  • caravan: add trade screen overlay that assists with seleting groups of items and collapsing groups in the UI
  • confirm: configuration data is now persisted globally.
  • devel/query: will now search for jobs at the map coordinate highlighted, if no explicit job is highlighted and there is a map tile highlighted
  • devel/visualize-structure: now automatically inspects the contents of most pointer fields, rather than inspecting the pointers themselves
  • gui/gm-editor will now inspect a selected building itself if the building has no current jobs
  • showmood: now shows the number of items needed for cloth and bars in addition to the technically correct but always confusing "total dimension" (150 per bar or 10,000 per cloth)
  • tailor: add support for adamantine cloth (off by default); improve logging
  • troubleshoot-item:
    • output as bullet point list with indenting, with item description and ID at top
    • reports on items that are hidden, artifacts, in containers, and held by a unit
    • reports on the contents of containers with counts for each contained item type

Removed

  • combine-drinks: replaced by combine
  • combine-plants: replaced by combine

API

  • Units module: added new predicates for isGeldable(), isMarkedForGelding(), and isPet()
  • Gui::any_civzone_hotkey, Gui::getAnyCivZone, Gui::getSelectedCivZone: new functions to operate on the new zone system

Lua

  • dfhack.gui.getSelectedCivZone: returns the Zone that the user has selected currently
  • widgets.FilteredList: Added edit_on_change optional parameter to allow a custom callback on filter edit change.
  • widgets.TabBar: new library widget (migrated from control-panel.lua)

Structures...

Read more

DFHack 50.07-alpha1

10 Feb 20:40
ad78427
Compare
Choose a tag to compare
DFHack 50.07-alpha1 Pre-release
Pre-release

In addition to the Steam version, this alpha release brings compatibility with DF Classic! Itch is WIP.

Installation instructions here: https://docs.dfhack.org/en/latest/docs/Installing.html#installing

Quickstart guide here: https://docs.dfhack.org/en/latest/docs/Quickstart.html#quickstart

Progress on updating existing DFHack tools is tracked here, and comments from players are welcome if an "untested" tool works for you. If you are waiting for a particular DFHack tool to get updated, please cast your vote for the tools that you'd like us to work on next: https://strawpoll.com/polls/61gDmBRx5Zw

Special thanks

We want to add this section to call out some of the fantastic community members that have helped improve DFHack so much in recent months (and I apologize to those of you I missed in this list):

  • 20k: invaluable research into UI state and memory structure alignment issues
  • AndrielChaoti: autofish
  • Baron Von Munchhausen (eamondo2): automelt, ongoing work on stockpiles
  • johncosker: gui/dig, autoslab, UI widget improvements
  • kelvie: automated build improvements
  • nuvu (vallode): gui/liquids, fix/civil-war, forbid, many ports of Ruby scripts to Lua
  • Robob27: confirm and updates for the entire core backend that provides DF context detection
  • seerskye: provider of some particularly tough reverse engineering insights
  • TaxiService: DFHack art assets and invaluable UI design feedback

Thank you all so much!

See the full list of DFHack contributors here: https://docs.dfhack.org/en/latest/docs/about/Authors.html

Announcements

PSAs

PSAs

Standard alpha release warnings:

  • DFHack tools probably won't corrupt your savegame, but it would be really smart to keep backups of the forts that you care about. DFHack may not have fully adapted to the changes in the new version of Dwarf Fortress, and, especially at this early stage of release and ongoing rapid development, there WILL be bugs. Please always inform us quickly about crash bugs. We prioritize getting those fixed first.
  • Most tools have not been tested thoroughly with Steam DF. The tools that are untested will show a warning if you try to run them and exit immediately. You can run the command again to override the warning.
  • The in-game interface for running DFHack commands (gui/launcher) will not show untested 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 autocomplete as normal. Some tools do not compile yet and are not available at all, even when in dev mode.

For those of you using sdl12compat, note that you will need to replace the "SDLreal.dll" file that DFHack installs with the SDL.dll (renamed to "SDLreal.dll") from sdl12compat. While we do not specifically recommend using sdl12compat, we have generally heard positive feedback about it.

Steam deck users: To avoid blocking the screen with the DFHack terminal window, please edit the dfhack-config/init/dfhack.init file and add a line with the word hide. This will hide the DFHack terminal and get it out of the way. You can show it again if you need it by running the command show from gui/launcher.

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 in the DF settings, and you can show it by entering mining mode or selecting the dump/forbid tool. We're working on making DFHack tools more mouse-aware and accessible.

Highlights

gui/dig, confirm, updated tools

Design your fort with gui/dig:
dig

  • We have been steadily squashing memory alignment issues and making DFHack tools more stable.
  • Now that DF-50.07 has fixed issues with savegames overwriting each other, DFHack fort-specific settings should also now be saved properly. You can check which tools are enabled by bringing up the DFHack control panel (gui/control-panel)
  • gui/dig is our first entry into the realm of visual design tools. Draw geometric shapes, lay out exploratory mining patterns, and, finally, get your stairs set up the way you want them. Check it out!
  • confirm makes a reappearance in this version. You will now get a confirmation prompt (that you can pause or disable if you don't like) that will prevent you from accidentally deleting a squad, destroying the trade depot when traders are using it, and many other regret-inducing actions that you can't undo.

Newly tested/updated tools

These are the existing tools that have been reported as working on the tracking spreadsheet. Thank you for all the people who have left comments there detailing which tools work and which ones don't! Your testing allowed us to make these tools available much faster than we otherwise would have.

  • autolabor: Automatically manage dwarf labors.
  • autonestbox: Auto-assign egg-laying female pets to nestbox zones.
  • confirm: Adds confirmation dialogs for destructive actions.

Generated release notes

New tools, fixes, and improvements

New Scripts

  • gui/dig: digging designation tool for shapes and patterns
  • makeown: adds the selected unit as a member of your fortress

Fixes

  • Fix persisted data not being written on manual save
  • Fix right click sometimes closing both a DFHack window and a vanilla panel
  • Fixed issue with scrollable lists having some data off-screen if they were scrolled before being made visible
  • autochop: fixed bug related to lua stack smashing behavior in returned stockpile configs
  • automelt: fixed bug related to lua stack smashing behavior in returned stockpile configs
  • channel-safely: fixed bug resulting in marker mode never being set for any designation
  • fix/protect-nicks: now works by setting the historical figure nickname
  • gui/liquids: fixed issues with unit pathing after adding/removing liquids
  • gui/unit-syndromes: allow the window widgets to be interacted with
  • nestboxes:
    • now cancels any in-progress hauling jobs when it protects a fertile egg
    • now scans for eggs more frequently and cancels any in-progress hauling jobs when it protects a fertile egg
  • Units::isFortControlled: Account for agitated wildlife

Misc Improvements

  • replaced DFHack logo used for the hover hotspot with a crisper image
  • autobutcher:
    • changed defaults from 5 females / 1 male to 4 females / 2 males so a single unfortunate accident doesn't leave players without a mating pair
    • now immediately loads races available at game start into the watchlist
  • autodump:
    • reinstate autodump-destroy-item, hotkey: Ctrl-K
    • new hotkey for autodump-destroy-here: Ctrl-H
  • automelt: is now more resistent to vanilla savegame corruption
  • clean: new hotkey for spotclean: Ctrl-C
  • dig: new hotkeys for vein designation on z-level (Ctrl-V) and vein designation across z-levels (Ctrl-Shift-V)
  • gui/gm-editor:
    • now supports multiple independent data inspection windows
    • now prints out contents of coordinate vars instead of just the type
  • hotkeys: DFHack logo is now hidden on screens where it covers important information when in the default position (e.g. when choosing an embark site)
  • misery: now persists state with the fort
  • orders: recipe for silver crossbows removed from library/military as it is not a vanilla recipe, but is available in library/military_include_artifact_materials
  • rejuvenate: now takes an --age parameter to choose a desired age.
  • stonesense: added an INVERT_MOUSE_Z option to invert the mouse wheel direction

Lua

  • overlay: overlay widgets can now specify focus paths for the viewscreens they attach to so they only appear in specific contexts. see overlay-dev-guide for details.
  • widgets.CycleHotkeyLabel: Added key_back optional parameter to cycle backwards.
  • widgets.FilteredList: Added case_sensitive optional paramter to determine if filtering is case sensitive.
  • widgets.HotkeyLabel:
    • Added setLabel method to allow easily updating the label text without mangling the keyboard shortcut.
    • Added setOnActivate method to allow easily updating the on_activate callback.

Structures

  • added missing tiletypes and corrected a few old ones based on a list supplied by Toady

DFHack 50.05-alpha3.1

03 Feb 22:39
4a21b08
Compare
Choose a tag to compare
DFHack 50.05-alpha3.1 Pre-release
Pre-release

Thing are moving along well, and the numerous contributions from the community have helped DFHack make a lot of progress! This release still only works with the Steam version. Compatibility with The Itch and Classic versions is scheduled to come with DF 50.06.

Installation instructions here: https://docs.dfhack.org/en/latest/docs/Installing.html#installing

Quickstart guide here: https://docs.dfhack.org/en/latest/docs/Quickstart.html#quickstart

If you don't know what DFHack is, see our first alpha post here for a lot of background information.

Are you waiting for a particular DFHack tool to get updated? Vote for the tools that you'd like us to work on next: https://strawpoll.com/polls/61gDmBRx5Zw

Announcements

PSAs

PSAs

Remember that this is an alpha release. This means that:

  • DFHack tools probably won't corrupt your savegame, but it would be really smart to keep backups of the forts that you care about. DFHack may not have fully adapted to the changes in the new version of Dwarf Fortress, and, especially at this early stage of release, there WILL be bugs.
  • Most tools have not been tested thoroughly with Steam DF. The tools that are untested will show a warning if you try to run them and exit immediately. You can run the command again to override the warning.
  • The in-game interface for running DFHack commands (gui/launcher) will not show untested 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 autocomplete as normal. Some tools do not compile yet and are not available at all, even when in dev mode.

Note that DF's "manual" and "timeline" saves are buggy at the moment, and you should instead copy the entire save directory to somewhere else on your hard drive to keep it safe.

For those of you using sdl12compat, note that you will need to replace the "SDLreal.dll" file that DFHack installs with the SDL.dll (renamed to "SDLreal.dll") from sdl12compat. While we do not specifically recommend using sdl12compat, we have generally heard positive feedback about it.

Steam deck users: The new recommended way to remove the DFHack terminal console is to edit the dfhack-config/init/dfhack.init file and add a line with the word hide. This will hide the DFHack terminal and get it out of the way. You can show it again if you need it by running the command show from gui/launcher.

Finally, many people are confused when DFHack tools tell them that a cursor is required. This refers to the keyboard cursor (which used to be the only real option in Dwarf Fortress). You can enable the keyboard cursor in the DF settings, and you can show it by entering mining mode or selecting the dump/forbid tool. We're working on making DFHack tools more mouse-aware and naturally accessible.

Highlights

gui/liquids, gui/control-panel, new tools

Create a splash with gui/liquids:
Image

Configure tools with gui/control-panel:
Image

What's new and notable?

  • More memory alignment issues have been corrected. This will address issues with examining units with tools like gui/gm-editor. Please always inform us quickly about crash bugs. We prioritize getting those fixed first.
  • DFHack now has an in-game configuration interface: gui/control-panel! You can toggle enabled tools with a click, and even select which tools you want running automatically when you start a new fort! Bring it up from the DFHack logo hotspot menu or the tilde (Shift-backtick for most keyboard layouts) hotkey.
  • We've started making some productivity tools more accessible with overlays. The first of these is the orders overlay. When you bring up the manager orders panel, you'll now see a DFHack-drawn section where you can import, export, sort, and clear manager orders with a click of the mouse (or the strike of a hotkey). If you feel like any DFHack-drawn overlay is getting in the way, you can turn it off in gui/control-panel.
  • DFHack windows are now easier to "pin". Before, if you wanted a tool to ignore right mouse clicks and keyboard input, you'd have to click on the pin icon in the upper right corner. Now, just click anywhere on the map that is not a DFHack tool window. The window will lose the highlight from its title bar and will ignore mouse and keyboard input until you click on it again.
  • You also might notice that DFHack has a new look. Tell us what you think of the new window styling in the comments!

Brand new tools!

In addition to gui/control-panel, our beloved community members have stepped up to provide you with some fantastic new tools to play with:

  • autoslab can monitor your fort for ghosts and automatically enqueue orders to engrave slabs for them.
  • autofish and gui/autofish will manage fishing labors to help you control your stock of fish
  • gui/automelt is a fantastic new GUI config and status panel interface for automelt
  • fix/civil-war makes games playable again for those unlucky enough to have accidentally started a war with your own government (which is supposed to be impossible)
  • fix/protect-nicks restore nicknames when DF loses them (this can happen, for example, when a dwarf slays a megabeast)
  • forbid can list forbidden items on the map and selectively mark classes of items as forbidden
  • gui/liquids allows you to draw liquids onto the map with the mouse. Create swimming pools or test prospective drowning traps with ease
  • gui/unit-syndromes is an interactive browser for syndrome information

Newly tested/updated tools

These are the existing tools that have been reported as working on the tracking spreadsheet. Thank you for all the people who have left comments there detailing which tools work and which ones don't! Your testing allowed us to make these tools available much faster than we otherwise would have.

  • autolabor has basic functionality, but is still marked as "untested" since we don't know yet how well it interacts with the Steam version labors. You're welcome to try it out, but keep an eye on your dwarves (and please tell us how it goes!)
  • animal-control: Quickly view, butcher, or geld groups of animals.
  • armoks-blessing: Bless units with superior stats and traits.
  • assign-facets: Adjust a unit's facets and traits.
  • assign-goals: Adjust a unit's goals and dreams.
  • assign-preferences: Adjust a unit's preferences.
  • assign-skills: Adjust a unit's skills.
  • automelt: Automatically designate items brought to a stockpile to be melted.
  • brainwash: Set the personality of a dwarf to an ideal.
  • catsplosion: Cause pregnancies (not just in cats).
  • channel-safely: Manage channel designations to keep dwarves safe.
  • dig: Provides commands for designating tiles for digging.
  • elevate-mental: Set mental attributes of a dwarf to an ideal.
  • elevate-physical: Set physical attributes of a dwarf to an ideal.
  • emigration: Allow dwarves to emigrate from the fortress when stressed.
  • empty-bin: Empty the contents of containers onto the floor.
  • extinguish: Put out fires.
  • feature: Control discovery flags for map features.
  • fillneeds: Temporarily satisfy the needs of a unit.
  • fix/loyaltycascade: Halts loyalty cascades where dwarves are fighting dwarves.
  • hermit: Go it alone in your fortress and attempt the hermit challenge.
  • make-monarch: Crown the selected unit as a monarch.
  • reveal-hidden-units: Reveal sneaking units.

Generated release notes

New tools, fixes, and improvements

New Plugins

  • autoslab: automatically create work orders to engrave slabs for ghostly dwarves

New Scripts

  • autofish: auto-manage fishing labors to control your stock of fish
  • fix/civil-war: removes negative relations with own government
  • fix/protect-nicks: restore nicknames when DF loses them
  • forbid: forbid and list forbidden items on the map
  • gui/autofish: GUI config and status panel interface for autofish
  • gui/automelt: GUI config and status panel interface for automelt
  • gui/control-panel: quick access to DFHack configuration
  • gui/unit-syndromes: browser for syndrome information

Fixes

  • allow launcher tools to launch themselves without hanging the game
  • DF screens can no longer get "stuck" on transitions when DFHack tool windows are visible. Instead, those DF screens are force-paused while DFHack windows are visible so the player can close them first and not corrupt the screen sequence. The "PAUSE FORCED" indicator will appear on these DFHack windows to indicate what is happening.
  • fix issues with clicks "passing through" some DFHack window elements to the screen below
  • autochop: fixed a crash when processing trees with corrupt data structures (e.g. when a trunk tile fails to fall when the rest of the tree is chopped down)
  • autoclothing: fixed a crash that can happen when units are holding invalid items.
  • build-now: now correctly avoids adjusting non-empty tiles above constructions that it builds
  • catsplosion: now only affects live, active units
  • `get...
Read more

DFHack 50.05-alpha2

21 Jan 01:45
bb16009
Compare
Choose a tag to compare
DFHack 50.05-alpha2 Pre-release
Pre-release

A quick release to solve some initial issues. This release still only works with the Steam version. Compatibility with The Itch and Classic versions is scheduled to come with DF 50.06.

Installation instructions here: https://docs.dfhack.org/en/latest/docs/Installing.html#installing

Quickstart guide here: https://docs.dfhack.org/en/latest/docs/Quickstart.html#quickstart

If you missed the first alpha release, see the post here for a lot of background information

Please vote for the tools that you'd like us to work on next here!

Announcements

PSAs

PSAs

Here is another reminder that this is an alpha release. This means that:

  • DFHack tools probably won't corrupt your savegame, but it would be really smart to keep backups of the forts that you care about. DFHack may not have fully adapted to the changes in the new version of Dwarf Fortress, and, especially at this early stage of release, there WILL be bugs.
  • Most tools have not been tested thoroughly with Steam DF. The tools that are untested will show a warning if you try to run them and exit immediately. You can run the command again to override the warning.
  • The in-game interface for running DFHack commands (gui/launcher) will not show untested 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 autocomplete as normal. Some tools do not compile yet and are not available at all, even when in dev mode.

Note that DF's "manual" and "timeline" saves are buggy at the moment, and you should instead copy the entire save directory to somewhere else on your hard drive.

For those of you using sdl12compat, note that you will need to replace the "SDLreal.dll" file that DFHack installs with the SDL.dll (renamed to "SDLreal.dll") from sdl12compat. While we do not specifically recommend using sdl12compat, we have generally heard positive feedback about it.

Steam deck users: you might want to set DFHACK_DISABLE_CONSOLE=1 in your environment so DFHack doesn't create a terminal console. This will allow Dwarf Fortress to start in the foreground and you won't have to switch windows every time.

Finally, many people are confused when DFHack tools tell them that a cursor is required. This refers to the keyboard cursor (which used to be the only real option in Dwarf Fortress). You can enable the keyboard cursor in the DF settings, and you can show it by entering mining mode or selecting the dump/forbid tool. We're working on making DFHack tools more mouse-aware and naturally accessible.

Highlights

gui/blueprint, gui/quickfort, updated tools!

Copy and paste your designs and layouts with gui/blueprint and gui/quickfort!
Image

  • A few memory alignment issues have been corrected. This will address crashes a few of you have been seeing. Please always inform us quickly about crash bugs. We prioritize getting those fixed first.
  • The orders library is now accessible for the orders import command. Please retry the steps in the Quickstart guide for a (now correctly-functioning) walkthrough
  • The layout of gui/quickfort has been fixed so it's easy to see how to rotate and transform the blueprints again.
  • This release comes with a very limited version of buildingplan. It is not configurable, it has no UI and no materials selection, but it does allow buildings placed with quickfort to get built when materials are available instead of just letting them get canceled immediately.
  • A note about blueprint and quickfort -- Only dig and build blueprint phases have been updated for the current release of DF. Stockpiles, zones, and building/game configuration need work and their blueprint modes are currently disabled. This means that those attempting to build the full-fort templates (TheQuickFortress and Dreamfort) from blueprints will be sorely disappointed. All other blueprints in the blueprint library (https://docs.dfhack.org/en/latest/docs/guides/quickfort-library-guide.html) only have dig and build blueprints, and should work just fine.
  • exportlegends has received a bit of work, but you will not be able to use it for Legends Viewer any time soon. Legends export is a combination of vanilla DF functionality and DFHack-augmented files. The basic DF functionality is just not in the current release. Once DF's own legends export functionality has been restored, DFHack's exportlegends tool will be ready for it.

Newly tested/updated tools

  • You asked for it, you got it. autodump is now ready for service.
  • tailor can monitor your clothing supply and schedule appropriate workorders to replace current clothing that's becoming worn. It will use whatever raw materials (cloth/yarn/silk) you have available, but it's still up to you to have them in stock
  • autoclothing complements tailor, allowing you to specify which types of clothing you'd like your citizens wearing. tailor and autoclothing are aware of existing manager orders, so they can both be run at once.
  • exterminate is here. use it wisely.
  • full-heal, also see gui/gm-unit for selective wound healing
  • gui/create-item
  • gui/masspit for easily dumping many caged creatures into a pit.
  • position for discovering the coordinates of the keyboard cursor. Some tools can take coordinates directly, and this is how you can find out what to pass.
  • starvingdead will keep undead bodies (and body parts) from accumulating and eating all your FPS
  • teleport will move you

Generated release notes

New tools, fixes, and improvements

Fixes

  • autofarm: don't duplicate status line entries for crops with no current supply
  • build-now: don't error on constructions that do not have an item attached
  • gui/gm-editor: fix errors displayed while viewing help screen
  • orders: allow the orders library to be listed and imported properly (if you previously copied the orders library into your dfhack-config/orders directory to work around this bug, you can remove those files now)
  • tailor: now respects the setting of the "used dyed clothing" standing order toggle

Removed

  • create-items: replaced by gui/create-item --multi

Structures

  • corrected misalignment in historical_entity
  • identified two old and one new language name groups
  • partially identified squad-related structures in plotinfo and corrected position of civ_alert_idx (does not affect alignment)

DFHack 50.05-alpha1

17 Jan 02:19
3958d37
Compare
Choose a tag to compare
DFHack 50.05-alpha1 Pre-release
Pre-release

Installation instructions here: https://docs.dfhack.org/en/latest/docs/Installing.html#installing

Quickstart guide here: https://docs.dfhack.org/en/latest/docs/Quickstart.html#quickstart

This release requires the Steam version of DF (see below)

Announcements

PSAs

PSAs

Hi all! We know there has been a lot of excitement around this release of DFHack, so we want to start by setting some expectations. This is an alpha release. This means that:

  • DFHack tools probably won't corrupt your savegame, but it would be really smart to keep backups of the forts that you care about. DFHack may not have fully adapted to the changes in the new version of Dwarf Fortress, and, especially at this early stage of release, there WILL be bugs.
  • Most tools have not been tested thoroughly with Steam DF. The tools that are untested will show a warning if you try to run them and exit immediately. You can run the command again to override the warning.
  • The in-game interface for running DFHack commands (gui/launcher) will not show untested 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 autocomplete as normal. Some tools do not compile yet and are not available at all, even when in dev mode.

Note that DF's "manual" and "timeline" saves are buggy at the moment, and you should instead copy the entire save directory to somewhere else on your hard drive. Alternately, you can copy the entire DF directory somewhere else, install DFHack in that directory, and keep it completely separate from your Steam installation.

For those of you using sdl12compat, note that you will need to replace the "SDLreal.dll" file that DFHack installs with the SDL.dll (renamed to "SDLreal.dll") from sdl12compat. While we do not specifically recommend using sdl12compat, we have generally heard positive feedback about it.

Also note that this release only supports the Steam version of DF due to some technical limitations. You don't have to run it through Steam, but it does require DF to be downloaded from Steam. We're hoping that a future version of DF will resolve these technical limitations, and we plan to support all builds (including Itch and Classic) by the time we reach a stable release of DFHack.

What's new?

What's new?

Manage your stock of logs with gui/autochop:
Image

DFHack has significantly advanced from the days of DF 0.47.05. There is a much greater focus on allowing you to do everything from inside the game, not requiring you to open the external terminal window to run commands or go to the web to look up syntax documentation. More and more tools have graphical configuration screens, and most of those screens have full mouse integration (though keyboard-only setups are still fully supported where DF itself allows).

As soon as you start up DF with DFHack installed, the first thing you're likely to notice is the DFHack logo in the upper left of the screen. If you move your mouse over the logo, a panel will pop up showing you a list of DFHack tools that are relevant to the current screen. If you're wondering "what can I do with DFHack right now", open this panel and find out. DFHack's "context detection" code has not been fully updated for the new version of DF, so the list of tools in the popup menu is very short right now. However, this list will expand greatly over the next few releases of DFHack.

The first thing you should do is hover over the DFHack logo and select the quickstart guide (hotkey: ?). This will go into more depth about how to use DFHack than the quick notes I'm adding here.

The main interface for running DFHack tools in-game is gui/launcher. It will always be first in the DFHack logo popup list for easy access. It has integrated help for all tools, showing you the usage syntax, real-world examples, and other useful information. It also allows you to autocomplete partially-typed commands and pull commandlines you have run before out of your history to run again.

DFHack windows have also progressed significantly. They are now draggable, resizable, and pinnable. For example, you can bring up gui/autochop, configure your desired log stock levels, minimize the window, pin it, and drag it off to the side of the screen to leave it up as a live status report for your logging industry. The quickstart guide walks you through exactly how to do this.

There are also many changes in the DFHack tools themselves -- too many to mention. We can just suggest that you go exploring!

So which tools are available?

available tools

You can get live updates and see which tools have been tested here: https://docs.google.com/spreadsheets/d/1hiDlo8M_bB_1jE-5HRs2RrrA_VZ4cRu9VXaTctX_nwk/edit#gid=1774645373

Is your favorite tool not tested yet? Vote for it here: https://strawpoll.com/polls/poy9R95NwnJ

Here's are some of the more popular tools that are available now (even with the small percentage of tools that are tested, it's still a long list):

autobutcher and the gui/autobutcher config frontend - automatically butcher excess livestock
autochop (and the gui/autochop config frontend) - automatically designate trees for chopping
autofarm - automatically select crops for planting
ban-cooking - keep your chefs from cooking ingredients that are useful for other things
blueprint (and the gui/blueprint point and click interface) - record the design of your fortress
clean - remove contaminants
cleanowned - force dwarves to drop tattered clothing and go get new clothing
cursecheck - check for cursed creatures
deathcause - find out the cause of death by selecting a corpse or body part
dig-now - fulfill dig designations instantly
drain-aquifer - dry out all aquifers on the map
fastdwarf - make your dwarves super speedy
fix/stable-temp - speed up the game by allowing temperature calculations to quickly find equilibrium
gui/gm-editor - general game memory editor
gui/gm-unit - general unit property editor
gui/launcher - in-game DFHack command launcher with integrated help and autocomplete
gui/pathable - show which tiles are reachable from the selected position
gui/quickcmd - customizable list of favorite DFHack commands
lever - interact with levers (including pulling them with the "hand of Armok")
list-agreements - show which temples and guildhalls you have agreed to build
locate-ore - find ores of specific types on the map
migrants-now - attempt to spawn a migrant wave asap
nestboxes - protect fertile eggs in nestboxes from being gathered and eaten
orders - import, export, and sort manager orders
overlay (and the gui/overlay config frontend) - configure DFHack informational and widget overlays
prioritize - get your dwarves to actually do important jobs (like food hauling)
quickfort (and the gui/quickfort point and click interface) - apply blueprints to your map
quicksave - force the game to save now
quickstart-guide (check this out!) - get new DFHack players oriented
regrass - regrow all grass on the map
remove-stress - calm unhappy dwarves
reveal - reveal map tiles (note that you have to switch into ASCII mode to see underground tiles)
seedwatch - protect your seeds from being cooked when you need them for planting
showmood - explain what a dwarf is looking for for their strange mood project
source - create liquid sources and sinks
stonesense - show the map in 3d
tame - tame wild animals
tiletypes - redraw the map with tiles of your choice
unforbid - remove the "forbidden" flag from items
unsuspend - resume suspended building jobs, also visually marks suspended buildings on the map
warn-starving - warns you when your animals and dwarves are starving or dehydrated
weather - control the weather
workorder - generate manager orders

Hopefully that will be enough to get you started : p

Generated release notes

New tools, fixes, and improvements

New Scripts

  • allneeds: list all unmet needs sorted by how many dwarves suffer from them.
  • devel/tile-browser: page through available textures and see their texture ids
  • gui/autochop: configuration frontend for the autochop plugin. you can pin the window and leave it up on the screen somewhere for live monitoring of your logging industry.

Fixes

  • make-legendary: "MilitaryUnarmed" option now functional
  • widgets.WrappedLabel: no longer resets scroll position when window is moved or resized

Misc Improvements

  • Scrollable widgets now react to mouse wheel events when the mouse is over the widget
  • the dfhack-config/scripts/ folder is now searched for scripts by default
  • autounsuspend: now saves its state with your fort
  • devel/inspect-screen: updated for new rendering semantics and can now also inspect map textures
  • emigration: now saves its state with your fort
  • gui/cp437-table: converted to a movable, mouse-enabled window
  • gui/gm-editor: converted to a movable, resizable, mouse-enabled window
  • gui/gm-unit: converted to a movable, resizable, mouse-enabled window
  • gui/launcher:
    • now supports a smaller, minimal mode. click the toggle in the launcher UI or start in minimal mode via the Ctrl-Shift-P keybinding
    • can now be dragged from anywhere on the window body
    • now remembers its size and position between invocations
  • gui/quickcmd:
    • converted to a movable, resizable, mouse-enabled window
      ...
Read more

DFHack 0.47.05-r8

02 Dec 19:55
fed9f76
Compare
Choose a tag to compare

This is the second usability-focused release of DFHack. In the previous release, we made initial progress with the in-game command launcher with autocomplete and integrated command help. This release builds on that start with improved mouse controls (like draggable scrollbars) and a brand new framework for on-screen informational overlays and interactive widgets that respond to what's currently happening in the game.

The cool thing is that this overlay framework is ready for use by mods, including Steam Workshop mods! All modders have to do is declare an OverlayWidget in their script code and the overlay framework will discover it and attach it to the correct Dwarf Fortress screens. Players can enable, disable, or reposition overlay widgets with the new click-and-drag gui/overlay configuration interface. You can start playing with this interface with the overlay widgets that we've already ported to the new framework, such as the date, happiness meter, and weather indicator from dwarfmonitor.

Q: Wait! Go back! So DFHack is ready for the steam release now??

A: No, sorry, not yet. We have a lot of work to do to adapt DFHack to the new Dwarf Fortress release. It might take us a few months, but you will have your favorite tools back. And we hope to have even more usability improvements ready for you then too!

Q: So, like, why are you releasing now? Don't you know that the Steam release is in a few days?

A: Yeah, we know. This release is more for those who aren't upgrading right away, like players who aren't on Steam, adventure mode players, and, of course, players who want to wait for DFHack to become available for the new version before they switch to it : )

How to upgrade

  • Remove the existing hack/ directory in your Dwarf Fortress game folder
  • Extract the DFHack release archive into your Dwarf Fortress directory. If it asks you, let it overwrite files.
  • If you use TWBT, you can get an updated version for this release here: https://github.com/thurin/df-twbt/releases/tag/0.47.05-r8

Full upgrade instructions are available online here

Highlights

DFHack logo hotspot, gui/overlay, spectate, channel-safely

The Hotkeys Hotspot

Image

The major new feature is the Hotkeys Hotspot. You may not know this, but DFHack has many default keybindings that are bound to specific Dwarf Fortress screens (like the manager orders screen or the main map) that run useful DFHack commands. For example, when you're on the manager orders screen and have a manager order selected, you can hit Alt-Q to change the number of items that the workorder will produce.

The Hotkeys Hotspot uses the new overlay framework to provide a mouse rollover menu that makes these bound commands available to you in a clickable list. You can also right-click on them to open them in the in-game launcher to modify the command and/or see the associated command help. You can add more commands to this list (or take some away) via the DFHack keybinding command, too.

You can show the rollover menu by moving your mouse near the upper left corner of the screen, a little down from the top. On the main map, this spot is marked by an exclamation point (!), but the spot is "hot" on every screen, even if the exclamation point is covered up by something. You can reposition the hotspot with gui/overlay if you want it in a more convenient place. You can also bring it up with the keyboard instead of the mouse by hitting the Ctrl-Shift-C hotkey.

gui/overlay

Image

gui/overlay is the beginning of a new trend for DFHack: in-game configuration that remembers your choices from game to game without any editing of init files. Also, notice the fancy new mouse controls like mouse hover reactions and click-and-drag widgets. Expect to see more of this from DFHack in the future!

spectate

The spectate plugin has seen a good bit of improvement in this release. Once your fort is in a good, steady state, try firing this tool up to automatically follow dwarves around, switching among them periodically, so you can sit back and watch your dwarves be dwarfy!

channel-safely

The new channel-safely tool protects your dwarves from digging themselves to death while channeling out large projects. Digging a large drowning trap or a magma piston? Give this tool a try!

Generated release notes

New tools, fixes, and improvements

New Plugins

  • overlay: plugin is transformed from a single line of text that runs gui/launcher on click to a fully-featured overlay injection framework. It now houses a popup menu for keybindings relevant to the current DF screen, all the widgets previously provided by dwarfmonitor (e.g. the current date and number of happy/unhappy dwarves), the overlay that highlights suspended buildings when you pause, and others. See overlay-dev-guide for details.
  • channel-safely: auto-manage channel designations to keep dwarves safe

New Scripts

  • gui/overlay: configuration interface for the DFHack overlays and overlay widgets. includes a click-and-drag interface for repositioning widgets!

Fixes

  • Core: ensure foo.init always runs before foo.*.init (e.g. dfhack.init should always run before dfhack.something.init)
  • autofarm: flush output so status text is visible immediately after running the command
  • autolabor, autohauler: properly handle jobs 241, 242, and 243
  • automaterial:
    • fix the cursor jumping up a z level when clicking quickly after box select
    • fix rendering errors with box boundary markers
  • buildingplan: fix crash when canceling out of placement mode for a building with planning mode enabled and subsequently attempting to place a building that does not have planning mode enabled and that has no pertinent materials available
  • dwarf-op: fixed error when matching dwarves by name
  • gui/create-item: prevent materials list filter from intercepting sublist hotkeys
  • gui/gm-unit: fixed behavior of + and - to adjust skill values instead of populating the search field
  • hotkeys: correctly detect hotkeys bound to number keys, F11, and F12
  • labormanager: associate quern construction with the correct labor
  • mousequery: fix the cursor jumping up z levels sometimes when using TWBT
  • tiletypes: no longer resets dig priority to the default when updating other properties of a tile
  • warn-stealers:
    • register callback with correct event name so that units entering the map are detected
    • announce thieving creatures that spawn already revealed
    • cache unit IDs instead of unit objects to avoid referencing stale pointers
  • workorder: fix interpretation of json-specified orders that set the item_type field
  • EventManager:
    • fix a segmentation fault with the REPORT event
    • fix the JOB_STARTED event only sending events to the first handler listed instead of all registered handlers

Misc Improvements

  • UX:
    • List widgets now have mouse-interactive scrollbars
    • You can now hold down the mouse button on a scrollbar to make it scroll multiple times.
    • You can now drag the scrollbar up and down to scroll to a specific spot
  • autolabor, autohauler: refactored to use DFHack's messaging system for info/debug/trace messages
  • blueprint:
    • new --smooth option for recording all smoothed floors and walls instead of just the ones that require smoothing for later carving
    • record built constructions in blueprints
    • record stockpile/building/zone names in blueprints
    • record room sizes in blueprints
    • generate meta blueprints to reduce the number of blueprints you have to apply
    • support splitting the output file into phases grouped by when they can be applied
    • when splitting output files, number them so they sort into the order you should apply them in
  • digtype: new -z option for digtype to restrict designations to the current z-level and down
  • dwarfmonitor: widgets have been ported to the overlay framework and can be enabled and configured via the gui/overlay UI
  • gui/blueprint: support new blueprint phases and options
  • gui/cp437-table: new global keybinding for the clickable on-screen keyboard for players with keyboard layouts that prevent them from using certain keys: Ctrl-Shift-K
  • gui/create-item: restrict materials to those normally allowed by the game by default, introduce new --unrestricted option for full freedom in choosing materials
  • gui/launcher: show help for commands that start with ':' (like :lua)
  • gui/quantum: add option to allow corpses and refuse in your quantum stockpile
  • hotkeys:
    • hotkey screen has been transformed into an interactive overlay widget that you can bring up by moving the mouse cursor over the hotspot (in the upper left corner of the screen by default). Enabl...
Read more

DFHack 0.47.05-r7

30 Sep 20:33
3f6e92e
Compare
Choose a tag to compare

This is the first usability-focused DFHack release. The major new feature is the in-game command launcher with integrated help, autocomplete, command history (including history search), related tools display, and mouse integration.

You can access the new command launcher by clicking on the "[ DFHack Launcher ]" button in the lower left corner of the screen or by tapping the backquote (`) key. If the backquote key isn't convenient or isn't available for your keyboard layout, there is an alternate hotkey of Ctrl-Shift-D.

You can type part of a command to see autocomplete options. Hit Tab or click on an option to autocomplete. To pull a full commandline from your history, hit Alt-S or click on the "history search" button instead. When you type a command, its help text will be displayed in the large panel at the bottom. Hit Enter or click on the 'run" button to run. That's it! More info on the launcher here (which you can also see in-game when you type "gui/launcher" in the command box : )

From the screenshots, you may notice that text areas now have scrollbars. Click on the arrows at the end to scroll by one line, or on the empty area above or below the green part of the bar to scroll by half pages. You can also click on the command text that you are writing to reposition the cursor for editing.

Many thanks to the community members and beta testers who provided feedback on the launcher! Many of the best usability features were suggested by them! In particular, u/ZergTDG, u/Skitlee5, u/Thebuda, and u/tmPreston. You're awesome! Also D.B. Cooper, Quietust, and everyone else on the DFHack discord who gave feedback throughout development.

DFHack help itself has also been overhauled. More than 300 pages of help text has been reformatted and rewritten to make them more informative, easier to read, and easier to understand. Moreover, all DFHack tools are now tagged so that you can find them easier. Try running the new tags command to explore the categories! These tags also control what is in the list of related tools that appears in the right panel of the launcher when you are running a command.

New stuff

Apart from the aforementioned gui/launcher and tags, there's a bunch of great new stuff in this release:

  • u/wolfboyft wrote the DFHack modding guide, which will get you up to speed if you'd like to explore how to use DFHack to extend your raws modding.
  • run enable gui/kitchen-info to add more info to the Kitchen screen, including what each ingredient is good for besides cooking.
  • Hit "D" on the workorder details screen (where you can, say, set which kind of stone to use for a particular workorder) to get more control over the materials used to fulfill workorder jobs.
  • We finally have a good way to dynamically limit the size of the next migration wave with max-wave and limit growth over time with pop-control (or even enforce a hermit challenge!).
  • Get notified when creatures that may steal your food, drinks, or items become visible (e.g. keas) with warn-stealers.
  • DFHack now comes with a super useful library of manager orders! See them with orders list and import them into your game with orders import. Try orders import library/basic to get a great set of orders for basic fort necessities! More info here.
  • DFHack's implementation of DwarfTherapist (manipulator -- accessible from the u-l screen) now comes with a library of pre-made professions that you can apply to your dwarves. More info here.

We are also working mouse controls into more of the DFHack tools. For example, you can now move the blueprint preview around by clicking on the map when using gui/quickfort. You can interact with the map with the mouse in similar ways when using gui/quantum and gui/blueprint. Expect more mouse capabilities for DFHack tools in the future!

How to upgrade

A few files have moved around in this release, so if you're upgrading an existing installation, please read this section.

  • When upgrading to this release, please remove the dfhack-config/dwarfmonitor.json file. It will get regenerated the next time you run DF. If you don't regenerate this file, the weather indicator (e.g. "Rain") will overlap with the new DFHack button in the lower left corner. If you have custom modifications to this file that you'd like to keep, please merge them back in once the file has been regenerated.
  • DFHack init scripts (dfhack.init, onLoad.init, onMapLoad.init, etc.) have moved into dfhack-config/init/. If you have not made any custom modifications to these files, you don't need to do anything. Default configuration will be generated and used. If you have custom changes, please run DF once to generate the default config files and then move just your custom changes into the corresponding init files. See the docs for details.
  • The history files for the various interactive DFHack commandline tools have moved into dfhack-config/. If you want to keep your command histories, please move your existing *.history files into dfhack-config/. Note that the new gui/launcher interface will make the commands in your old dfhack.history file available for searching even if you never get around to moving that file to the new directory.

And, just like every DFHack release, please remove the hack/ directory in your DF game folder before extracting the new version of DFHack into your DF folder. There were several scripts and other files that were removed in this release. If you don't remove the hack/ directory before upgrading, the old, unusable scripts will clutter the autocomplete list in the command launcher.

Screenshots:
image
image
image
image
image
image
image

DFHack 0.47.05-r7

New Plugins

  • autobutcher: split off from zone into its own plugin. Note that to enable, the command has changed from autobutcher start to enable autobutcher.
  • autonestbox: split off from zone into its own plugin. Note that to enable, the command has changed from autonestbox start to enable autonestbox.
  • overlay: display a "DFHack" button in the lower left corner that you can click to start the new GUI command launcher. The dwarfmonitor weather display had to be moved to make room for the button. If you are seeing the weather indicator rendered over the overlay button, please remove the dfhack-config/dwarfmonitor.json file to fix the weather indicator display offset.

New Scripts

  • gui/kitchen-info: adds more info to the Kitchen screen
  • gui/launcher: in-game command launcher with autocomplete, history, and context-sensitive help
  • gui/workorder-details: adjusts work orders' input item, material, traits
  • max-wave: dynamically limit the next immigration wave, can be set to repeat
  • pop-control: persistent per fortress population cap, hermit, and max-wave management
  • warn-stealers: warn when creatures that may steal your food, drinks, or items become visible

New Internal Commands

  • tags: new built-in command to list the tool category tags and their definitions. tags associated with each tool are visible in the tool help and in the output of ls.

Fixes

  • autochop: designate largest trees for chopping first, instead of the smallest
  • devel/query: fixed error when --tile is specified
  • dig-now: Fix direction of smoothed walls when adjacent to a door or floodgate
  • dwarf-op: fixed error when applying the Miner job to dwarves
  • emigration: fix emigrant logic so unhappy dwarves leave as designed
  • gui/gm-unit: allow + and - to adjust skill values as intended instead of letting the filter intercept the characters
  • gui/unit-info-viewer: fix logic for displaying undead creature names
  • gui/workflow: restore functionality to the add/remove/order hotkeys on the workflow status screen
  • quickfort: Dreamfort <quickfort-blueprint-guide> blueprint set: declare the hospital zone before building the coffer; otherwise DF fails to stock the hospital with materials
  • view-item-info: fixed a couple errors when viewing items without materials
  • dfhack.buildings.findCivzonesAt: no longer return duplicate civzones after loading a save with existing civzones
  • dfhack.run_script: ensure the arguments passed to scripts are always strings. This allows other scripts to call run_script with numeric args and it won't break parameter parsing.
  • job.removeJob(): ensure jobs are removed from the world list when they are canceled

Misc Improvements

  • History files: dfhack.history, tiletypes.history, lua.history, and liquids.history have moved to the dfhack-config directory. I...
Read more