DFHack future

New Plugins

  • title-folder: shows DF folder name in window title bar when enabled

New Scripts


  • Buildings::setOwner() changes now persist properly when saved

DFHack 0.43.03-r1


  • Label widgets can now easily register handlers for mouse clicks

New Plugins

New Features

  • add-thought: allow syndrome name as -thought argument

  • gui/gm-editor

    • Added ability to insert default types into containers. For primitive types leave the type entry empty, and for references use *.
    • Added shift-esc binding to fully exit from editor
    • Added gui/gm-editor toggle command to toggle editor visibility (saving position)
  • modtools/create-unit:

    • Added an option to attach units to an existing wild animal population
    • Added an option to attach units to a map feature


  • autofarm: Can now handle crops that grow for more than a season

  • combine-plants: Fixed recursion into sub-containers

  • createitem: Now moves multiple created items to cursor correctly

  • exportlegends: Improved handling of unknown enum items (fixes many errors)

  • gui/create-item: Fixed quality when creating multiple items

  • gui/mod-manager: Fixed error when mods folder doesn’t exist

  • modtools/item-trigger: Fixed handling of items with subtypes

  • stockflow:

    • Can order metal mechanisms
    • Fixed material category of thread-spinning jobs

Misc Improvements

  • The built-in ls command now wraps the descriptions of commands
  • catsplosion: now a lua script instead of a plugin
  • fix/diplomats: replaces fixdiplomats
  • fix/merchants: replaces fixmerchants
  • Unified script documentation and in-terminal help options


  • tweak manager-quantity: no longer needed

DFHack 0.42.06-r1


  • Commands to run on startup can be specified on the command line with +


    ./dfhack +devel/print-args example
    "Dwarf Fortress.exe" +devel/print-args example
  • Prevented plugins with active viewscreens from being unloaded and causing a crash

  • Additional script search paths can be specified in dfhack-config/script-paths.txt


  • Building-hacks now supports auto_gears flags. It automatically finds and animates gears in building definition
  • Changed how Eventful triggers reaction complete. Now it has onReactionComplete and onReactionCompleting. Second one can be canceled

New Plugins

  • autogems: Creates a new Workshop Order setting, automatically cutting rough gems

New Scripts

New Features

  • buildingplan: Support for floodgates, grates, and bars

  • colonies: new place subcommand and supports any vermin (default honey bees)

  • confirm: Added a confirmation for retiring locations

  • exportlegends: Exports more information (poetic/musical/dance forms, written/artifact content, landmasses, extra histfig information, and more)

  • search: Support for new screens:

    • location occupation assignment
    • civilization animal training knowledge
    • animal trainer assignment
  • tweak:

    • tweak block-labors: Prevents labors that can’t be used from being toggled
    • tweak hide-priority: Adds an option to hide designation priority indicators
    • tweak title-start-rename: Adds a safe rename option to the title screen “Start Playing” menu
  • zone:

    • Added unassign subcommand
    • Added only option to assign subcommand


  • Fixed a crash bug caused by the historical figures DFHack uses to store persistent data.

  • More plugins should recognize non-dwarf citizens

  • Fixed a possible crash from cloning jobs

  • moveToBuilding() now sets flags for items that aren’t a structural part of the building properly

  • autotrade, stocks: Made trading work when multiple caravans are present but only some can trade

  • confirm note-delete: No longer interferes with name entry

  • exportlegends: Handles entities without specific races, and a few other fixes for things new to v0.42

  • fastdwarf: Fixed a bug involving teleporting mothers but not the babies they’re holding.

  • gaydar: Fixed text display on OS X/Linux and failure with soul-less creatures

  • manipulator:

    • allowed editing of non-dwarf citizens
    • stopped ghosts and visitors from being editable
    • fixed applying last custom profession
  • modtools/create-unit: Stopped making units without civs historical figures

  • modtools/force:

    • Removed siege option
    • Prevented a crash resulting from a bad civilization option
  • showmood: Fixed name display on OS X/Linux

  • view-item-info: Fixed density units

Misc Improvements


  • DFusion: legacy script system, obsolete or replaced by better alternatives

DFHack 0.40.24-r5

New Features

  • confirm:

    • Added a uniform-delete option for military uniform deletion
    • Added a basic in-game configuration UI


  • Fixed a rare crash that could result from running keybinding in onLoadWorld.init
  • Script help that doesn’t start with a space is now recognized correctly
  • confirm: Fixed issues with haul-delete, route-delete, and squad-disband confirmations intercepting keys too aggressively
  • emigration should work now
  • fix-unit-occupancy: Significantly optimized - up to 2,000 times faster in large fortresses
  • gui/create-item: Allow exiting quantity prompt
  • gui/family-affairs: Fixed an issue where lack of relationships wasn’t recognized and other issues
  • modtools/create-unit: Fixed a possible issue in reclaim fortress mode
  • search: Fixed a crash on the military screen
  • tweak max-wheelbarrow: Fixed a minor display issue with large numbers
  • workflow: Fixed a crash related to job postings (and added a fix for existing, broken jobs)

Misc Improvements

  • Unrecognized command feedback now includes more information about plugins
  • fix/dry-buckets: replaces the drybuckets plugin
  • feature: now implemented by a script

DFHack 0.40.24-r4


  • A method for caching screen output is now available to Lua (and C++)
  • Developer plugins can be ignored on startup by setting the DFHACK_NO_DEV_PLUGINS environment variable
  • The console on Linux and OS X now recognizes keyboard input between prompts
  • JSON libraries available (C++ and Lua)
  • More DFHack build information used in plugin version checks and available to plugins and lua scripts
  • Fixed a rare overflow issue that could cause crashes on Linux and OS X
  • Stopped DF window from receiving input when unfocused on OS X
  • Fixed issues with keybindings involving CtrlA and CtrlZ, as well as AltE/U/N on OS X
  • Multiple contexts can now be specified when adding keybindings
  • Keybindings can now use F10-F12 and 0-9
  • Plugin system is no longer restricted to plugins that exist on startup
  • dfhack.init file locations significantly generalized


  • Scripts can be enabled with the built-in enable/disable commands
  • A new function, reqscript(), is available as a safer alternative to script_environment()
  • Lua viewscreens can choose not to intercept the OPTIONS keybinding

New internal commands

  • kill-lua: Interrupt running Lua scripts
  • type: Show where a command is implemented

New plugins

  • confirm: Adds confirmation dialogs for several potentially dangerous actions
  • fix-unit-occupancy: Fixes issues with unit occupancy, such as faulty “unit blocking tile” messages (Bug 3499)
  • title-version (formerly vshook): Display DFHack version on title screen

New scripts

  • armoks-blessing: Adjust all attributes, personality, age and skills of all dwarves in play
  • brainwash: brainwash a dwarf (modifying their personality)
  • burial: sets all unowned coffins to allow burial (“-pets” to allow pets too)
  • deteriorateclothes: make worn clothes on the ground wear far faster to boost FPS
  • deterioratecorpses: make body parts wear away far faster to boost FPS
  • deterioratefood: make food vanish after a few months if not used
  • elevate-mental: elevate all the mental attributes of a unit
  • elevate-physical: elevate all the physical attributes of a unit
  • emigration: stressed dwarves may leave your fortress if they see a chance
  • fix-ster: changes fertility/sterility of animals or dwarves
  • gui/family-affairs: investigate and alter romantic relationships
  • make-legendary: modify skill(s) of a single unit
  • modtools/create-unit: create new units from nothing
  • modtools/equip-item: a script to equip items on units
  • points: set number of points available at embark screen
  • pref-adjust: Adjust all preferences of all dwarves in play
  • rejuvenate: make any “old” dwarf 20 years old
  • starvingdead: make undead weaken after one month on the map, and crumble after six
  • view-item-info: adds information and customisable descriptions to item viewscreens
  • warn-starving: check for starving, thirsty, or very drowsy units and pause with warning if any are found

New tweaks

  • embark-profile-name: Allows the use of lowercase letters when saving embark profiles
  • kitchen-keys: Fixes DF kitchen meal keybindings
  • kitchen-prefs-color: Changes color of enabled items to green in kitchen preferences
  • kitchen-prefs-empty: Fixes a layout issue with empty kitchen tabs


  • Plugins with vmethod hooks can now be reloaded on OS X
  • Lua’s os.system() now works on OS X
  • Fixed default arguments in Lua gametype detection functions
  • Circular lua dependencies (reqscript/script_environment) fixed
  • Prevented crash in Items::createItem()
  • buildingplan: Now supports hatch covers
  • gui/create-item: fixed assigning quality to items, made Esc work properly
  • gui/gm-editor: handles lua tables properly
  • help: now recognizes built-in commands, like help
  • manipulator: fixed crash when selecting custom professions when none are found
  • remotefortressreader: fixed crash when attempting to send map info when no map was loaded
  • search: fixed crash in unit list after cancelling a job; fixed crash when disabling stockpile category after searching in a subcategory
  • stocksettings: now checks/sanitizes filenames when saving
  • stocks: fixed a crash when right-clicking
  • steam-engine: fixed a crash on arena load; number keys (e.g. 2/8) take priority over cursor keys when applicable
  • tweak fps-min fixed
  • tweak farm-plot-select: Stopped controls from appearing when plots weren’t fully built
  • workflow: Fixed some issues with stuck jobs. Existing stuck jobs must be cancelled and re-added
  • zone: Fixed a crash when using zone set (and a few other potential crashes)

Misc Improvements

  • DFHack documentation:

    • massively reorganised, into files of more readable size
    • added many missing entries
    • indexes, internal links, offline search all documents
    • includes documentation of linked projects (df-structures, third-party scripts)
    • better HTML generation with Sphinx
    • documentation for scripts now located in source files
  • autolabor:

    • Stopped modification of labors that shouldn’t be modified for brokers/diplomats
    • Prioritize skilled dwarves more efficiently
    • Prevent dwarves from running away with tools from previous jobs
  • automaterial: Fixed several issues with constructions being allowed/disallowed incorrectly when using box-select

  • dwarfmonitor:

    • widgets’ positions, formats, etc. are now customizable
    • weather display now separated from the date display
    • New mouse cursor widget
  • gui/dfstatus: Can enable/disable individual categories and customize metal bar list

  • full-heal: -r option removes corpses

  • gui/gm-editor

    • Pointers can now be displaced
    • Added some useful aliases: “item” for the selected item, “screen” for the current screen, etc.
    • Now avoids errors with unrecognized types
  • gui/hack-wish: renamed to gui/create-item

  • keybinding list accepts a context

  • lever:

    • Lists lever names
    • lever pull can be used to pull the currently-selected lever
  • memview: Fixed display issue

  • modtools/create-item: arguments are named more clearly, and you can specify the creator to be the unit with id (useful in conjunction with modtools/create-unit)

  • nyan: Can now be stopped with dfhack-run

  • plug: lists all plugins; shows state and number of commands in plugins

  • prospect: works from within command-prompt

  • quicksave: Restricted to fortress mode

  • remotefortressreader: Exposes more information

  • search:

    • Supports noble suggestion screen (e.g. suggesting a baron)
    • Supports fortress mode loo[k] menu
    • Recognizes ? and ; keys
  • stocks: can now match beginning and end of item names

  • teleport: Fixed cursor recognition

  • tidlers, twaterlvl: now implemented by scripts instead of a plugin

  • tweak:

    • debug output now logged to stderr.log instead of console - makes DFHack start faster
    • farm-plot-select: Fixed issues with selecting undiscovered crops
  • workflow: Improved handling of plant reactions


  • embark-tools nano: 1x1 embarks are now possible in vanilla 0.40.24

DFHack 0.40.24-r3


  • Ruby library now included on OS X - Ruby scripts should work on OS X 10.10
  • libstdc++ should work with older versions of OS X
  • Added support for onMapLoad.init / onMapUnload.init scripts
  • game type detection functions are now available in the World module
  • The DFHACK_LOG_MEM_RANGES environment variable can be used to log information to stderr.log on OS X
  • Fixed adventure mode menu names
  • Fixed command usage information for some commands


  • Lua scripts will only be reloaded if necessary
  • Added a df2console() wrapper, useful for printing DF (CP437-encoded) text to the console in a portable way
  • Added a strerror() wrapper

New Internal Commands

  • hide, show: hide and show the console on Windows
  • sc-script: Allows additional scripts to be run when certain events occur (similar to onLoad*.init scripts)

New Plugins

New Scripts

New Tweaks

  • fps-min: Fixes the in-game minimum FPS setting
  • shift-8-scroll: Gives Shift+8 (or *) priority when scrolling menus, instead of scrolling the map
  • tradereq-pet-gender: Displays pet genders on the trade request screen


Misc Improvements

  • autolabor: A negative pool size can be specified to use the most unskilled dwarves
  • Building-hacks:
    • Added a way to allow building to work even if it consumes more power than is available.
    • Added setPower/getPower functions.
  • catsplosion: Can now trigger pregnancies in (most) other creatures
  • exportlegends: info and all options export legends_plus.xml with more data for legends utilities
  • manipulator:
    • Added ability to edit nicknames/profession names
    • added “Job” as a View Type, in addition to “Profession” and “Squad”
    • added custom profession templates with masking
  • remotefortressreader: Exposes more information

DFHack 0.40.24-r2


  • Lua scripts can set environment variables of each other with dfhack.run_script_with_env

  • Lua scripts can now call each others internal nonlocal functions with dfhack.script_environment(scriptName).functionName(arg1,arg2)

  • Eventful: Lua reactions no longer require LUA_HOOK as a prefix; you can register a callback for the completion of any reaction with a name

  • Filesystem module now provides file access/modification times and can list directories (normally and recursively)

  • Units Module: New functions:

  • Buildings Module: New Functions:



  • dfhack.run_script should correctly find save-specific scripts now.
  • add-thought: updated to properly affect stress.
  • hfs-pit: should work now
  • autobutcher: takes gelding into account
  • init.lua existence checks should be more reliable (notably when using non-English locales)

Misc Improvements

Multiline commands are now possible inside dfhack.init scripts. See dfhack.init-example for example usage.

DFHack 0.40.24-r1


CMake shouldn’t cache DFHACK_RELEASE anymore. People may need to manually update/delete their CMake cache files to get rid of it.

DFHack 0.40.24-r0


  • Events from EventManager: fixed crash error with EQUIPMENT_CHANGE event.
  • key modifier state exposed to Lua (ie Ctrl, Alt, Shift)

Fixes can now be run from other directories on OS X

New Plugins

  • blueprint: export part of your fortress to quickfort .csv files

New Scripts

  • hotkey-notes: print key, name, and jump position of hotkeys


  • needs_porting/*

Misc Improvements

Added support for searching more lists

Older Changelogs

Are kept in a seperate file: HISTORY - old changelogs