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 ingui/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
:
Ensure your screw pumps are magma-safe with just one click:
Control the quality of items used as materials:
Select which materials you want to build with:
Select specific items if you want to:
Symmetrical shapes with gui/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 shapesstockpiles
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 layergui/create-item
: fix generic corpsepiece spawningdfhack.job.isSuitableMaterial
: now properly detects lack of fire and magma safety for vulnerable materials with high melting pointswidgets.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 jobsgui/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 intobuildingplan
gui.THIN_FRAME
: replaced bygui.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 toMaps::getBiomeTypeRef
for consistencyMaps::GetBiomeType
renamed toMaps::getBiomeType
for consistencyMilitary
:- 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 jobdfhack.screen.paintTile()
: you can now explicitly clear the interface cursor from a map tile by passing0
as the tile valuegui.INTERIOR_FRAME
: a panel frame style for use in highlighting off interior areas of a UImaps.getBiomeType
: exposed preexisting function to Luawidgets.CycleHotkeyLabel
: addlabel_below
attribute for compact 2-line outputwidgets.FilteredList
: search key matching is now case insensitive by defaultwidgets.Label
: tokentile
properties can now be functions that return a value
Structures
history_eventst
: Removedhistory_event_masterpiece_created_arch_designst
and related enum valueplot_infost
.unk_8
: renamed totheft_intrigues
. Fieldsunk_1
thruunk_8
renamed totarget_item
,mastermind_hf
,mastermind_plot_id
,corruptor_hf
,corruptor
,corruptee_hf
,corruptee
, andtheft_agreement
.unk_1
renamed toitem_known_pos
.specific_ref_type
: RemovedBUILDING_PARTY
,PETINFO_PET
, andPETINFO_OWNER
enum values to fix alignment.