1. DFHack - Dwarf Fortress Modding Engine
  2. News

DFHack - Dwarf Fortress Modding Engine News

DFHack 51.06-r2rc1 (beta)

This is a beta release. To install, select the beta branch for DFHack in your Steam client.

If you are on the Steam DF experimental branch, please select the experimental branch for DFHack in your Steam client.

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]Follow your dwarves like a pro, or watch them like a fish tank[/h3]
The spectate tool has had a complete overhaul, and is now integrated into the vanilla follow mode. There are lots of ways you can interact with it.

If you start following a dwarf by clicking on the vanilla "camera" button, you'll see that the little panel that shows up in the lower left corner has a few more widgets on it. You can hit the right arrow key (or click on the icon) to follow another target, or you can hit the left arrow key (or click on the icon) to follow the previous target. This means you can quickly switch to a new dwarf and then back to a previous dwarf just by tapping the arrow keys.



There is also an indicator for whether "spectate mode" is on. If you turn it on, you can let the game run and spectate will periodically shift the camera to follow a different dwarf. If you've managed to get your fort into a stable state, this is a good way to sit back, relax, and watch your dwarves like a fish tank.



How does it choose the next dwarf to follow? It's random, but you can tweak how it chooses targets with the new gui/spectate interface. You can launch it by clicking on the gear icon on the follow panel, where the new left and right arrow widgets are. You can choose which kinds of units other than your own dwarves to include as possible targets, like livestock, enemies, or visitors. By default, the camera will prefer to follow units that are in combat and units that have newly arrived on the map.



If spectate mode is enabled and the new "cinematic action" option is on, the camera will even switch targets more quickly when there is combat afoot! If the "Auto unpause" option is on, events that would normally pause the game, like sieges or artifact announcements, will not pause the game at all. This allows a "true" fish tank mode where you can see your beautiful fort rise and fall of its own accord.

Spectate mode will automatically disengage when you jump in to take control. It switches off when you move the camera: the exact same way that vanilla follow mode switches off. Spectate mode will also disengage when you open the squads panel.

We've also made it easier to jump to following a specific target. There is a new global hotkey: Ctrl-g (for "go to"). It is available when you are on the main dwarf map (or the main adventure map, but "follow" mode isn't relevant there).



Ctrl-g will pop up the gui/sitemap interface. You can start typing to search for a name, and Shift-click or Shift-Enter will start following that unit directly!



But wait, there's more!

You can also use gui/spectate to configure live tooltips for your dwarves. If you turn on the spectate.tooltips overlay, you can display information like their name, their current happiness level, and their current job. The "Follow" set of toggles controls what information will follow your dwarves around on the map in floating tooltips. The "Hover" set of toggles controls what information will be shown in a pop up when you hover your mouse over a unit.



Give it a try! My favorite configuration so far is:
  • "Follow" shows an indicator for miserable and unhappy dwarves
  • "Hover" shows the current stress level, name, and job

In graphics mode, you might prefer to set the blink period to 0 (to disable it), but in ascii mode, you'll want the "follow" tooltips to blink periodically so you can see what they are covering on the map.


[h3]Skip adventure messages[/h3]
The new advtools.fastcombat overlay allows you to skip combat animations and the announcement "More" button. If you're trying to walk through a populated area, this can be a huge time (and click) saver! Have you heard the one about the elf and the elf? Yes, we have! Let us walk across the room!



Now, to skip all the "More" messages, just hit any movement key. The first movement key will skip the messages to the end of the list. Hit the key again to move. It works the same with the mouse. The first click on the map will skip all messages to the end, and the second click will start your adventurer walking to that destination.
[h3]Attach notes to the map[/h3]
We now have a tool for attaching notes to fort map tiles! gui/notes is the UI for adding and managing map notes. You can memorialize events where they occurred



or leave design plans for yourself on the levels where you plan to expand your fort.


[h3]Schedule cheese making according to milk supplies[/h3]
Cheese making is difficult to automate using work orders. A single job can consume anything from a bucket with a single unit of milk to a barrel with 100 units of milk. This makes it hard to predict how much cheese will actually be produced by a regular manager work order.

If you enable autocheese in the DFHack control panel, it will scan your fort for barrels with a certain minimum amount of milk (default: 50), create a cheese making job specifically for that barrel, and assign this job to one of your idle dwarves (giving preference to skilled cheese makers).



Easy cheesy!
[h2]Announcements[/h2][h3]So why is this a beta?[/h3]
In addition to the new features (which we always need feedback on!), DFHack has undergone an extensive internal reorganization to help align the code closer to how the internal DF structures are organized. For scripts, many of the df namespace paths have changed. If you are maintaining an out-of-tree script, find out what identifiers have changed in the Structures release notes on Github: https://github.com/DFHack/dfhack/releases/tag/51.06-r2rc1

As a player, please keep an eye out for commands that return errors when you run them or functionality that appears not to work like it used to. It is possible that typos have crept in with all the updates.
[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.

Some DFHack tools that worked in previous (pre-Steam) versions of DF have not been updated yet and are marked with the "unavailable" tag in their docs. If you try to run them, they will show a warning and exit immediately. You can run the command again to override the warning (though of course the tools may not work). We make no guarantees of reliability for the tools that are marked as "unavailable".

The in-game interface for running DFHack commands (gui/launcher) will not show "unavailable" tools by default. You can still run them if you know their names, or you can turn on dev mode by hitting Ctrl-D while in gui/launcher and they will be added to the autocomplete list. Some tools listed as "unavailable" in the docs do not compile yet and are not accessible at all, even when in dev mode.

If you see a tool complaining about the lack of a cursor, know that it's referring to the keyboard cursor (which used to be the only real option in Dwarf Fortress). You can enable the keyboard cursor by entering mining mode or selecting the dump/forbid tool and hitting Alt-K (the DFHack keybinding for toggle-kbd-cursor). We're working on making DFHack tools more mouse-aware and accessible so this step isn't necessary in the future.
Changelog
For full details, please see https://github.com/DFHack/dfhack/releases/tag/51.06-r2rc1

DFHack 51.06-r1

Compatibility update for DF 51.06

DFHack 51.05-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]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.

Some DFHack tools that worked in previous (pre-Steam) versions of DF have not been updated yet and are marked with the "unavailable" tag in their docs. If you try to run them, they will show a warning and exit immediately. You can run the command again to override the warning (though of course the tools may not work). We make no guarantees of reliability for the tools that are marked as "unavailable".

The in-game interface for running DFHack commands (gui/launcher) will not show "unavailable" tools by default. You can still run them if you know their names, or you can turn on dev mode by hitting Ctrl-D while in gui/launcher and they will be added to the autocomplete list. Some tools listed as "unavailable" in the docs do not compile yet and are not accessible at all, even when in dev mode.

If you see a tool complaining about the lack of a cursor, know that it's referring to the keyboard cursor (which used to be the only real option in Dwarf Fortress). You can enable the keyboard cursor by entering mining mode or selecting the dump/forbid tool and hitting Alt-K (the DFHack keybinding for toggle-kbd-cursor). We're working on making DFHack tools more mouse-aware and accessible so this step isn't necessary in the future.
Changelog

This is a compatibility release for DF 51.05 and has no new features since DFHack 51.04-r1.1.

DFHack 51.04-r1.1

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

Currently, each distribution channel of DF has a different version. This release of DFHack is specifically compatible with:
  • Dwarf Fortress 51.04 on Steam
  • Dwarf Fortress 51.03 on Itch
  • Dwarf Fortress 51.02 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!
Changelog
[h2]New Features[/h2]
  • stonesense:
    • added option EXTRUDE_TILES to slightly expand sprite to avoid gaps (on by default)
    • added option PIXELPERFECT_ZOOM to change the zoom scale to avoid gaps (off by default)
    • added back minecart track graphics
[h2]Fixes[/h2]
  • Ctrl-a hotkeys have been changed to something else (Ctrl-n) for tools that also have an editable text field, where Ctrl-a is interpreted as select all text
  • advtools: fix dfhack-added conversation options not appearing in the ask whereabouts conversation tree
  • gui/launcher:
    • ensure commandline is fully visible when searching through history and switching from a very long command to a short command
    • flatten text when pasting multi-line text from the clipboard
  • gui/rename: fix error when changing the language of a unit's name
  • stonesense:
    • fixed announcement text rendering off-screen with larger font sizes
    • screen dimensions are now properly set when overriden by a window manager
    • fixed glass cabinets and bookcases being misaligned by 1 pixel
    • fixed unrevealed walls being hidden by default
    • vampires no longer show their true name when they shouldn't
    • fixed debug performance timers to show milliseconds as intended
    • CACHE_IMAGES now disables mipmapping, stopping sprites from going transparent
    • fixed issue where depth borders wouldn't be rendered for some walls
    • fixed issue where tiles near the bottom edge would be culled
[h2]Misc Improvements[/h2]
  • assign-preferences: new --show option to display the preferences of the selected unit
  • pref-adjust: new show command to display the preferences of the selected unit
  • stonesense:
    • improved the way altars look
    • fog no longer unnecessarily renders to a separate bitmap
    • added new connective tiles for pools of blood and vomit
[h2]Removed[/h2]
  • gui/control-panel: removed craft-age-wear tweak for Windows users; the tweak doesn't currently load on Windows
[h2]API[/h2]
  • Core :: getUnpausedMs: new API for getting unpaused ms since load in a fort-mode game

DFHack 51.04-r1

Compatibility with DF 51.04