Development Changelog

This file contains changes grouped by the release (stable or development) in which they first appeared. See Building the changelogs for more information.

See Changelog for a list of changes grouped by stable releases.

DFHack 0.44.12-r3

New Plugins

  • autoclothing: automatically manage clothing work orders
  • autofarm: replaces the previous Ruby script of the same name, with some fixes
  • map-render: allows programmatically rendering sections of the map that are off-screen
  • tailor: automatically manages keeping your dorfs clothed

New Scripts


  • Fixed a crash in the macOS/Linux console when the prompt was wider than the screen width

  • Fixed some cases where Lua filtered lists would not properly intercept keys, potentially triggering other actions on the same screen

  • Fixed inconsistent results from Units::isGay for asexual units

  • autofarm:

    • fixed biome detection to properly determine crop assignments on surface farms
    • reimplemented as a C++ plugin to make proper biome detection possible
  • bodyswap: fixed companion list not being updated often enough

  • cxxrandom: removed some extraneous debug information

  • digfort: now accounts for z-level changes when calculating maximum y dimension

  • embark-assistant:

    • fixed bug causing crash on worlds without generated metals (as well as pruning vectors as originally intended).
    • fixed bug causing mineral matching to fail to cut off at the magma sea, reporting presence of things that aren’t (like DF does currently).
    • fixed bug causing half of the river tiles not to be recognized.
    • added logic to detect some river tiles DF doesn’t generate data for (but are definitely present).
  • Eventful: fixed invalid building ID in some building events

  • exportlegends: now escapes special characters in names properly

  • getplants: fixed designation of plants out of season (note that picked plants are still designated incorrectly)

  • gui/autogems: fixed error when no world is loaded

  • gui/companion-order:

    • fixed error when resetting group leaders
    • leave now properly removes companion links
  • gui/create-item: fixed module support - can now be used from other scripts

  • gui/stamper:

    • stopped “invert” from resetting the designation type
    • switched to using DF’s designation keybindings instead of custom bindings
    • fixed some typos and text overlapping
  • modtools/create-unit:

    • fixed an error associating historical entities with units
    • stopped recalculating health to avoid newly-created citizens triggering a “recover wounded” job
    • fixed units created in arena mode having blank names
    • fixed units created in arena mode having the wrong race and/or interaction effects applied after creating units manually in-game
    • stopped units from spawning with extra items or skills previously selected in the arena
    • stopped setting some unneeded flags that could result in glowing creature tiles
    • set units created in adventure mode to have no family, instead of being related to the first creature in the world
  • modtools/reaction-product-trigger:

    • fixed an error dealing with reactions in adventure mode
    • blocked \\BUILDING_ID for adventure mode reactions
    • fixed -clear to work without passing other unneeded arguments
  • modtools/reaction-trigger:

    • fixed a bug when determining whether a command was run
    • fixed handling of -resetPolicy
  • mousequery: fixed calculation of map dimensions, which was sometimes preventing scrolling the map with the mouse when TWBT was enabled

  • remotefortressreader: fixed a crash when a unit’s path has a length of 0

  • Stonesense: fixed crash due to wagons and other soul-less creatures

  • tame: now sets the civ ID of tamed animals (fixes compatibility with autobutcher)

  • title-folder: silenced error when PRINT_MODE is set to TEXT

Misc Improvements

  • Added a note to dfhack-run when called with no arguments (which is usually unintentional)

  • On macOS, the launcher now attempts to un-quarantine the rest of DFHack

  • bodyswap: added arena mode support

  • createitem: added a list of valid castes to the “invalid caste” error message, for convenience

  • combine-drinks: added more default output, similar to combine-plants

  • devel/export-dt-ini: added more size information needed by newer Dwarf Therapist versions

  • dwarfmonitor: enabled widgets to access other scripts and plugins by switching to the core Lua context

  • embark-assistant:

    • added an in-game option to activate on the embark screen
    • changed waterfall detection to look for level drop rather than just presence
    • changed matching to take incursions, i.e. parts of other biomes, into consideration when evaluating tiles. This allows for e.g. finding multiple biomes on single tile embarks.
    • changed overlay display to show when incursion surveying is incomplete
    • changed overlay display to show evil weather
    • added optional parameter “fileresult” for crude external harness automated match support
    • improved focus movement logic to go to only required world tiles, increasing speed of subsequent searches considerably
  • exportlegends: added rivers to custom XML export

  • exterminate: added support for a special enemy caste

  • gui/gm-unit:

    • added support for editing:
    • added attribute editor
    • added orientation editor
    • added editor for bodies and body parts
    • added color editor
    • added belief editor
    • added personality editor
  • modtools/create-item: documented already-existing -quality option

  • modtools/create-unit:

    • added the ability to specify \\LOCAL for the fort group entity
    • now enables the default labours for adult units with CAN_LEARN.
    • now sets historical figure orientation.
    • improved speed of creating multiple units at once
    • made the script usable as a module (from other scripts)
  • modtools/reaction-trigger:

    • added -ignoreWorker: ignores the worker when selecting the targets
    • changed the default behavior to skip inactive/dead units; added -dontSkipInactive to include creatures that are inactive
    • added -range: controls how far elligible targets can be from the workshop
    • syndromes now are applied before commands are run, not after
    • if both a command and a syndrome are given, the command only runs if the syndrome could be applied
  • mousequery: made it more clear when features are enabled

  • remotefortressreader:

    • added a basic framework for controlling and reading the menus in DF (currently only supports the building menu)
    • added support for reading item raws
    • added a check for whether or not the game is currently saving or loading, for utilities to check if it’s safe to read from DF
    • added unit facing direction estimate and position within tiles
    • added unit age
    • added unit wounds
    • added tree information
    • added check for units’ current jobs when calculating the direction they are facing


  • Added Maps::GetBiomeType and Maps::GetBiomeTypeByRef to infer biome types properly
  • Added Units::getPhysicalDescription (note that this depends on the unit_get_physical_description offset, which is not yet available for all DF builds)
  • Added new plugin_load_data and plugin_save_data events for plugins to load/save persistent data


  • Added new Persistence module
  • Persistent data is now stored in JSON files instead of historical figures - existing data will be migrated when saving
  • Cut down on internal DFHack dependencies to improve build times
  • Improved concurrency in event and server handlers
  • Stonesense: fixed some OpenGL build issues on Linux


  • Exposed gui.dwarfmode.get_movement_delta and gui.dwarfmode.get_hotkey_target
  • dfhack.run_command now returns the command’s return code


  • Made unit_ishostile consistently return a boolean


  • Added unit_get_physical_description function offset on some platforms

  • Added/identified types:

    • assume_identity_mode
    • musical_form_purpose
    • musical_form_style
    • musical_form_pitch_style
    • musical_form_feature
    • musical_form_vocals
    • musical_form_melodies
    • musical_form_interval
    • unit_emotion_memory
  • twbt_render_map: added for 64-bit 0.44.12 (for map-render)

  • personality_facet_type, value_type: added NONE values

  • need_type: fixed PrayOrMeditate typo

DFHack 0.44.12-r2

New Plugins

  • debug: manages runtime debug print category filtering
  • nestboxes: automatically scan for and forbid fertile eggs incubating in a nestbox

New Scripts


  • Building-hacks: fixed error when dealing with custom animation tables

  • devel/test-perlin: fixed Lua error (math.pow())

  • embark-assistant: fixed crash when entering finder with a 16x16 embark selected, and added 16 to dimension choices

  • embark-skills: fixed missing skill_points_remaining field

  • full-heal:

    • stopped wagon resurrection
    • fixed a minor issue with post-resurrection hostility
  • gui/companion-order:

    • fixed issues with printing coordinates
    • fixed issues with move command
    • fixed cheat commands (and removed “Power up”, which was broken)
  • gui/gm-editor: fixed reinterpret cast (r)

  • gui/pathable: fixed error when sidebar is hidden with Tab

  • labormanager:

    • stopped assigning labors to ineligible dwarves, pets, etc.
    • stopped assigning invalid labors
    • added support for crafting jobs that use pearl
    • fixed issues causing cleaning jobs to not be assigned
    • added support for disabling management of specific labors
  • prospect: (also affected embark-tools) - fixed a crash when prospecting an unusable site (ocean, mountains, etc.) with a large default embark size in d_init.txt (e.g. 16x16)

  • siege-engine: fixed a few Lua errors (math.pow(), unit.relationship_ids)

  • tweak: fixed hotkey-clear

Misc Improvements

  • armoks-blessing: improved documentation to list all available arguments

  • devel/export-dt-ini:

    • added viewscreen offsets for DT 40.1.2
    • added item base flags offset
    • added needs offsets
  • embark-assistant:

    • added match indicator display on the right (“World”) map
    • changed ‘c’ancel to abort find if it’s under way and clear results if not, allowing use of partial surveys.
    • added Coal as a search criterion, as well as a coal indication as current embark selection info.
  • full-heal:

    • added -all, -all_civ and -all_citizens arguments
    • added module support
    • now removes historical figure death dates and ghost data
  • growcrops: added all argument to grow all crops

  • gui/load-screen: improved documentation

  • labormanager: now takes nature value into account when assigning jobs

  • open-legends: added warning about risk of save corruption and improved related documentation

  • points: added support when in viewscreen_setupdwarfgamest and improved error messages

  • siren: removed break handling (relevant misc_trait_type was no longer used - see “Structures” section)


  • New debug features related to debug plugin:

    • Classes (C++ only): Signal<Signature, type_tag>, DebugCategory, DebugManager


  • Linux/macOS: changed recommended build backend from Make to Ninja (Make builds will be significantly slower now)
  • Added a usable unit test framework for basic tests, and a few basic tests
  • Core: various thread safety and memory management improvements
  • Fixed CMake build dependencies for generated header files
  • Fixed custom CMAKE_CXX_FLAGS not being passed to plugins
  • Changed plugins/CMakeLists.custom.txt to be ignored by git and created (if needed) at build time instead
  • Added CMakeSettings.json with intellisense support


  • utils: new OrderedTable class


  • Win32: added missing vtables for viewscreen_storesst and squad_order_rescue_hfst
  • activity_event_performancest: renamed poem as written_content_id
  • dance_form: named musical_form_id and musical_written_content_id
  • incident_sub6_performance.participants: named performance_event and role_index
  • incident_sub6_performance: made performance_event an enum
  • incident_sub6_performance: named poetic_form_id, musical_form_id, and dance_form_id
  • musical_form_instruments: named minimum_required and maximum_permitted
  • musical_form: named voices field
  • poetic_form: identified many fields and related enum/bitfield types
  • setup_character_info: identified skill_points_remaining (for embark-skills)
  • unit_thought_type: added new expulsion thoughts from 0.44.12
  • viewscreen_layer_militaryst: identified equip.assigned.assigned_items
  • world_data: added mountain_peak_flags type, including is_volcano
  • written_content: named poetic_form
  • unit_action.attack: identified attack_skill
  • unit_action.attack: added lightly_tap and spar_report flags
  • misc_trait_type: removed LikesOutdoors, Hardened, TimeSinceBreak, OnBreak (all unused by DF)
  • unit_personality: identified stress_drain, stress_boost, likes_outdoors, combat_hardened
  • plant_tree_tile: gave connection bits more meaningful names (e.g. connection_east instead of thick_branches_1)
  • plant_tree_info: identified extent_east, etc.
  • ui: fixed alignment of main and squads (fixes tweak hotkey-clear and DF-AI)
  • ui.main: identified fortress_site
  • ui.squads: identified kill_rect_targets_scroll
  • world_site: identified names and/or types of some fields
  • world_history: identified names and/or types of some fields
  • viewscreen_setupadventurest: identified some nemesis and personality fields, and page.ChooseHistfig
  • unit_storage_status: newly identified type, stores noble holdings information (used in viewscreen_layer_noblelistst)
  • viewscreen_layer_noblelistst: identified storage_status (see unit_storage_status type)
  • viewscreen_layer_arena_creaturest: identified item- and name-related fields
  • viewscreen_new_regionst: identified rejection_msg, raw_folder, load_world_params
  • viewscreen_new_regionst: changed many int8_t fields to bool
  • unit_flags3: identified marked_for_gelding
  • body_part_status: identified gelded

DFHack 0.44.12-r1


  • Console: fixed crash when entering long commands on Linux/macOS
  • Removed jsoncpp’s include and lib folders from DFHack builds/packages
  • Fixed special characters in command-prompt and other non-console in-game outputs on Linux/macOS (in tools using df2console)
  • die: fixed Windows crash in exit handling
  • dwarfmonitor, manipulator: fixed stress cutoffs
  • modtools/force: fixed a bug where the help text would always be displayed and nothing useful would happen
  • ruby: fixed calling conventions for vmethods that return strings (currently enabler.GetKeyDisplay())
  • startdwarf: fixed on 64-bit Linux

Misc Improvements

  • Reduced time for designation jobs from tools like dig to be assigned workers

  • embark-assistant:

    • Switched to standard scrolling keys, improved spacing slightly
    • Introduced scrolling of Finder search criteria, removing requirement for 46 lines to work properly (Help/Info still formatted for 46 lines).
    • Added Freezing search criterion, allowing searches for NA/Frozen/At_Least_Partial/Partial/At_Most_Partial/Never Freezing embarks.
  • rejuvenate:

    • Added -all argument to apply to all citizens
    • Added -force to include units under 20 years old
    • Clarified documentation


  • Added to Units module:

    • getStressCategory(unit)
    • getStressCategoryRaw(level)
    • stress_cutoffs (Lua: getStressCutoffs())


  • Changed default build architecture to 64-bit
  • Added documentation for all RPC functions and a build-time check
  • Added support for build IDs to development builds
  • Use dlsym(3) to find vtables from


  • Added start_dwarf_count on 64-bit Linux again and fixed scanning script

  • army_controller: added new vector from 0.44.11

  • viewscreen_civlistst: split unk_20 into 3 pointers

  • belief_system: new type, few fields identified

  • mental_picture: new type, some fields identified

  • mission: new type (used in viewscreen_civlistst)

  • mission_report:

    • new type (renamed, was mission before)
    • identified some fields
  • spoils_report: new type, most fields identified

  • viewscreen_civlistst:

    • identified new pages
    • identified new messenger-related fields
  • viewscreen_image_creatorst:

    • fixed layout
    • identified many fields
  • viewscreen_reportlistst: added new mission and spoils report-related fields (fixed layout)

  • world: belief_systems: identified

  • world.languages: identified (minimal information; whole languages stored elsewhere)

  • world.status:

    • mission_reports: renamed, was missions
    • spoils_reports: identified
  • world.unk_131ec0, world.unk_131ef0: researched layout

  • world.worldgen_status: identified many fields

DFHack 0.44.12-alpha1


  • macOS: fixed renderer vtable address on x64 (fixes rendermax)
  • Stonesense: fixed PLANT:DESERT_LIME:LEAF typo


  • Added C++-style linked list interface for DF linked lists


  • Dropped 0.44.11 support
  • ui.squads: Added fields new in 0.44.12

DFHack 0.44.11-beta2.1


DFHack 0.44.11-beta2


  • Windows: Fixed console failing to initialize
  • command-prompt: added support for commands that require a specific screen to be visible, e.g. spotclean
  • gui/workflow: fixed advanced constraint menu for crafts


DFHack 0.44.11-beta1


  • Fixed displayed names (from Units::getVisibleName) for units with identities
  • Fixed potential memory leak in Screen::show()
  • fix/dead-units: fixed script trying to use missing isDiplomat function

Misc Improvements

  • Console:

    • added support for multibyte characters on Linux/macOS
    • made the console exit properly when an interactive command is active (liquids, mode, tiletypes)
  • Made the DFHACK_PORT environment variable take priority over remote-server.json

  • Linux: added automatic support for GCC sanitizers in dfhack script

  • digfort: added better map bounds checking

  • dfhack-run: added support for port specified in remote-server.json, to match DFHack’s behavior

  • remove-stress:

    • added support for -all as an alternative to the existing all argument for consistency
    • sped up significantly
    • improved output/error messages
    • now removes tantrums, depression, and obliviousness
  • ruby: sped up handling of onupdate events


  • New functions: Units::isDiplomat(unit)
  • Exposed Screen::zoom() to C++ (was Lua-only)


  • jsoncpp: updated to version 1.8.4 and switched to using a git submodule


  • Added printall_recurse to print tables and DF references recursively. It can be also used with ^ from the lua interpreter.
  • gui.widgets: List:setChoices clones choices for internal table changes


  • history_event_entity_expels_hfst: added (new in 0.44.11)
  • history_event_site_surrenderedst: added (new in 0.44.11)
  • history_event_type: added SITE_SURRENDERED, ENTITY_EXPELS_HF (new in 0.44.11)
  • syndrome: identified a few fields
  • viewscreen_civlistst: fixed layout and identified many fields

DFHack 0.44.11-alpha1


  • Dropped 0.44.10 support

  • Added support for automatically sizing arrays indexed with an enum

  • Removed stale generated CSV files and DT layouts from pre-0.43.05

  • announcement_type: new in 0.44.11: NEW_HOLDING, NEW_MARKET_LINK

  • breath_attack_type: added OTHER

  • historical_figure_info.relationships.list: added unk_3a-unk_3c fields at end

  • interface_key: added bindings new in 0.44.11

  • occupation_type: new in 0.44.11: MESSENGER

  • profession: new in 0.44.11: MESSENGER

  • ui_sidebar_menus:

    • unit.in_squad: renamed to unit.squad_list_opened, fixed location
    • unit: added expel_error and other unknown fields new in 0.44.11
    • hospital: added, new in 0.44.11
    • num_speech_tokens, unk_17d8: moved out of command_line to fix layout on x64
  • viewscreen_civlistst: added a few new fields (incomplete)

  • viewscreen_locationsst: identified edit_input

DFHack 0.44.10-r2

New Plugins

  • cxxrandom: exposes some features of the C++11 random number library to Lua

New Scripts

  • gui/stamper: allows manipulation of designations by transforms such as translations, reflections, rotations, and inversion
  • add-recipe: adds unknown crafting recipes to the player’s civ


  • Fixed many tools incorrectly using the dead unit flag (they should generally check flags2.killed instead)

  • Fixed many tools passing incorrect arguments to printf-style functions, including a few possible crashes (changelayer, follow, forceequip, generated-creature-renamer)

  • Fixed -g flag (GDB) in Linux dfhack script (particularly on x64)

  • Fixed several bugs in Lua scripts found by static analysis (df-luacheck)

  • autochop, autodump, autogems, automelt, autotrade, buildingplan, dwarfmonitor, fix-unit-occupancy, fortplan, stockflow: fix issues with periodic tasks not working for some time after save/load cycles

  • autogems, fix-unit-occupancy: stopped running when a fort isn’t loaded (e.g. while embarking)

  • buildingplan, fortplan: stopped running before a world has fully loaded

  • autogems:

    • stop running repeatedly when paused
    • fixed crash when furnaces are linked to same stockpiles as jeweler’s workshops
  • ban-cooking: fixed errors introduced by kitchen structure changes in 0.44.10-r1

  • remove-stress: fixed an error when running on soul-less units (e.g. with -all)

  • reveal: stopped revealing tiles adjacent to tiles above open space inappropriately

  • dig: fixed “Inappropriate dig square” announcements if digging job has been posted

  • stockpiles: loadstock now sets usable and unusable weapon and armor settings

  • stocks: stopped listing carried items under stockpiles where they were picked up from

  • deramp: fixed deramp to find designations that already have jobs posted

  • fixnaked: fixed errors due to emotion changes in 0.44

  • autounsuspend: now skips planned buildings

Misc Improvements

  • Added script name to messages produced by qerror() in Lua scripts

  • Fixed an issue in around 30 scripts that could prevent edits to the files (adding valid arguments) from taking effect

  • Linux: Added several new options to dfhack script: --remotegdb, --gdbserver, --strace

  • bodyswap: improved error handling

  • buildingplan: added max quality setting

  • caravan: documented (new in 0.44.10-alpha1)

  • deathcause: added “slaughtered” to descriptions

  • fix/retrieve-units: now re-adds units to active list to counteract fix/dead-units

  • item-descriptions: fixed several grammatical errors

  • modtools/create-unit:

    • added quantity argument
    • now selects a caste at random if none is specified
  • mousequery:

    • migrated several features from TWBT’s fork
    • added ability to drag with left/right buttons
    • added depth display for TWBT (when multilevel is enabled)
    • made shift+click jump to lower levels visible with TWBT
  • title-version: added version to options screen too

  • embark-assistant:

    • changed region interaction matching to search for evil rain, syndrome rain, and reanimation rather than interaction presence (misleadingly called evil weather), reanimation, and thralling
    • gave syndrome rain and reanimation wider ranges of criterion values
  • fix/dead-units: added a delay of around 1 month before removing units


  • New functions (also exposed to Lua):

    • Units::isKilled()
    • Units::isActive()
    • Units::isGhost()
  • Removed Vermin module (unused and obsolete)


  • Added fallback for YouCompleteMe database lookup failures (e.g. for newly-created files)
  • jsoncpp: fixed constructor with long on Linux
  • Improved efficiency and error handling in stl_vsprintf and related functions
  • Added build option to generate symbols for large generated files containing df-structures metadata


  • Added profiler module to measure lua performance
  • Enabled shift+cursor movement in WorkshopOverlay-derived screens


  • unit_flags1: renamed dead to inactive to better reflect its use
  • item_body_component: fixed location of corpse_flags
  • job_type: added is_designation attribute
  • unit_thought_type: added SawDeadBody (new in 0.44.10)
  • unit_personality: fixed location of current_focus and undistracted_focus
  • incident_sub6_performance: identified some fields
  • job_handler: fixed static array layout

DFHack 0.44.10-r1

New Scripts

  • bodyswap: shifts player control over to another unit in adventure mode

New Tweaks

  • tweak stone-status-all: adds an option to toggle the economic status of all stones
  • tweak kitchen-prefs-all: adds an option to toggle cook/brew for all visible items in kitchen preferences


  • Lua: registered dfhack.constructions.designateRemove() correctly
  • prospect: fixed crash due to invalid vein materials
  • tweak max-wheelbarrow: fixed conflict with building renaming
  • view-item-info: stopped appending extra newlines permanently to descriptions

Misc Improvements

  • Added logo to documentation

  • Documented several missing dfhack.gui Lua functions

  • adv-rumors: bound to Ctrl-A

  • command-prompt: added support for Gui::getSelectedPlant()

  • gui/advfort: bound to Ctrl-T

  • gui/room-list: added support for Gui::getSelectedBuilding()

  • gui/unit-info-viewer: bound to Alt-I

  • modtools/create-unit: made functions available to other scripts

  • search:

    • added support for stone restrictions screen (under z: Status)
    • added support for kitchen preferences (also under z)


  • New functions (all available to Lua as well):

    • Buildings::getRoomDescription()
    • Items::checkMandates()
    • Items::canTrade()
    • Items::canTradeWithContents()
    • Items::isRouteVehicle()
    • Items::isSquadEquipment()
    • Kitchen::addExclusion()
    • Kitchen::findExclusion()
    • Kitchen::removeExclusion()
  • syndrome-util: added eraseSyndromeData()


  • Fixed compiler warnings on all supported build configurations
  • Windows build scripts now work with non-C system drives


  • dfhack_room_quality_level: new enum
  • glowing_barrier: identified triggered, added comments
  • item_flags2: renamed has_written_content to unk_book
  • kitchen_exc_type: new enum (for
  • mandate.mode: now an enum
  • unit_personality.emotions.flags.memory: identified
  • viewscreen_kitchenprefst.forbidden, possible: now a bitfield, kitchen_pref_flag
  • world_data.feature_map: added extensive documentation (in XML)

DFHack 0.44.10-beta1

New Scripts


  • Units::getAnyUnit(): fixed a couple problematic conditions and potential segfaults if global addresses are missing

  • stockpiles: stopped sidebar option from overlapping with autodump

  • autodump, automelt, autotrade, stocks, stockpiles: fixed conflict with building renaming

  • tweak block-labors: fixed two causes of crashes related in the v-p-l menu

  • full-heal:

    • units no longer have a tendency to melt after being healed
    • healed units are no longer treated as patients by hospital staff
    • healed units no longer attempt to clean themselves unsuccessfully
    • wounded fliers now regain the ability to fly upon being healing
    • now heals suffocation, numbness, infection, spilled guts and gelding
  • modtools/create-unit:

    • creatures of the appropriate age are now spawned as babies or children where applicable
    • fix: civ_id is now properly assigned to historical_figure, resolving several hostility issues (spawned pets are no longer attacked by fortress military!)
    • fix: unnamed creatures are no longer spawned with a string of numbers as a first name
  • exterminate: fixed documentation of this option

Misc Improvements


  • Added Gui::inRenameBuilding()
  • Added function names to DFHack’s NullPointer and InvalidArgument exceptions
  • Linux: required plugins to have symbols resolved at link time, for consistency with other platforms

DFHack 0.44.10-alpha1

New Scripts


  • Fixed uninitialized pointer being returned from Gui::getAnyUnit() in rare cases
  • autohauler, autolabor, labormanager: fixed fencepost error and potential crash
  • dwarfvet: fixed infinite loop if an animal is not accepted at a hospital
  • liquids: fixed “range” command to default to 1 for dimensions consistently
  • search: fixed 4/6 keys in unit screen search
  • view-item-info: fixed an error with some armor

Misc Improvements


  • Added some build scripts for Sublime Text
  • Changed submodule URLs to relative URLs so that they can be cloned consistently over different protocols (e.g. SSH)

DFHack 0.44.09-r1


Misc Improvements

  • Reorganized changelogs and improved changelog editing process
  • modtools/item-trigger: added support for multiple type/material/contaminant conditions


  • OS X: Can now build with GCC 7 (or older)


  • renderer: fixed vtable addresses on 64-bit OS X
  • building_type: added human-readable name attribute
  • furnace_type: added human-readable name attribute
  • workshop_type: added human-readable name attribute
  • army: added vector new in 0.44.07
  • site_reputation_report: named reports vector

DFHack 0.44.09-alpha1


  • digtype: stopped designating non-vein tiles (open space, trees, etc.)
  • labormanager: fixed crash due to dig jobs targeting some unrevealed map blocks

DFHack 0.44.08-alpha1


  • fix/dead-units: fixed a bug that could remove some arriving (not dead) units

DFHack 0.44.07-beta1

Misc Improvements


DFHack 0.44.07-alpha1


  • Support for building on Ubuntu 18.04
  • Fixed some CMake warnings (CMP0022)
  • embark-assistant: fixed detection of reanimating biomes

Misc Improvements

  • embark-assistant:

    • Added search for adamantine
    • Now supports saving/loading profiles
  • fillneeds: added -all option to apply to all units

  • remotefortressreader: added flows, instruments, tool names, campfires, ocean waves, spiderwebs


  • Several new names in instrument raw structures

  • identity: identified profession, civ

  • manager_order_template: fixed last field type

  • viewscreen_createquotast: fixed layout

  • world.language: moved colors, shapes, patterns to world.descriptors

  • world.reactions, world.reaction_categories: moved to new compound, world.reactions. Requires renaming:

    • world.reactions to world.reactions.reactions
    • world.reaction_categories to world.reactions.reaction_categories

DFHack 0.44.05-r2

New Plugins

New Scripts

  • adv-fix-sleepers: fixes units in adventure mode who refuse to wake up (Bug 6798)
  • hermit: blocks caravans, migrants, diplomats (for hermit challenge)

New Features

  • With PRINT_MODE:TEXT, setting the DFHACK_HEADLESS environment variable will hide DF’s display and allow the console to be used normally. (Note that this is intended for testing and is not very useful for actual gameplay.)


Misc Improvements

DFHack 0.44.05-r1

New Scripts

  • break-dance: Breaks up a stuck dance activity
  • fillneeds: Use with a unit selected to make them focused and unstressed
  • firestarter: Lights things on fire: items, locations, entire inventories even!
  • flashstep: Teleports adventurer to cursor
  • ghostly: Turns an adventurer into a ghost or back
  • questport: Sends your adventurer to the location of your quest log cursor
  • view-unit-reports: opens the reports screen with combat reports for the selected unit


  • devel/inject-raws: now recognizes spaces in reaction names

  • dig: added support for designation priorities - fixes issues with designations from digv and related commands having extremely high priority

  • dwarfmonitor:

    • fixed display of creatures and poetic/music/dance forms on prefs screen
    • added “view unit” option
    • now exposes the selected unit to other tools
  • names: fixed many errors

  • quicksave: fixed an issue where the “Saving…” indicator often wouldn’t appear

Misc Improvements

  • gui/gm-unit:

    • added a profession editor
    • misc. layout improvements
  • remotefortressreader:

    • support for moving adventurers
    • support for vehicles, gem shapes, item volume, art images, item improvements
  • binpatch: now reports errors for empty patch files

  • force: now provides useful help

  • full-heal:

    • can now select corpses to resurrect
    • now resets body part temperatures upon resurrection to prevent creatures from freezing/melting again
    • now resets units’ vanish countdown to reverse effects of exterminate
  • launch: can now ride creatures

  • names: can now edit names of units



  • Gui::getAnyUnit() supports many more screens/menus


  • New globals: soul_next_id

DFHack 0.44.05-alpha1

Misc Improvements

  • gui/liquids: added more keybindings: 0-7 to change liquid level, P/B to cycle backwards


  • incident: re-aligned again to match disassembly

DFHack 0.44.04-alpha1



  • artifact_record: fixed layout (changed in 0.44.04)
  • incident: fixed layout (changed in 0.44.01) - note that many fields have moved

DFHack 0.44.03-beta1


Misc Improvements


  • New globals:

    • version
    • min_load_version
    • movie_version
    • basic_seed
    • title
    • title_spaced
    • ui_building_resize_radius
  • Added twbt_render_map code offset on x64

  • Fixed an issue preventing enabler from being allocated by DFHack

  • Added job_type.PutItemOnDisplay

  • Found renderer vtable on osx64

  • adventure_movement_optionst, adventure_movement_hold_tilest, adventure_movement_climbst: named coordinate fields

  • mission: added type

  • unit: added 3 new vmethods: getCreatureTile, getCorpseTile, getGlowTile

  • viewscreen_assign_display_itemst: fixed layout on x64 and identified many fields

  • viewscreen_reportlistst: fixed layout, added mission_id vector

  • world.status: named missions vector

DFHack 0.44.03-alpha1


  • Improved json I/O error messages
  • Stopped a crash when trying to create instances of classes whose vtable addresses are not available

DFHack 0.44.02-beta1

New Scripts


  • Fixed issues with the console output color affecting the prompt on Windows
  • createitem: stopped items from teleporting away in some forts
  • gui/gm-unit: can now edit mining skill
  • gui/quickcmd: stopped error from adding too many commands
  • modtools/create-unit: fixed error when domesticating units

Misc Improvements

  • The console now provides suggestions for built-in commands

  • devel/export-dt-ini: avoid hardcoding flags

  • exportlegends:

    • reordered some tags to match DF’s order
    • added progress indicators for exporting long lists
  • gui/gm-editor: added enum names to enum edit dialogs

  • gui/gm-unit: made skill search case-insensitive

  • gui/rename: added “clear” and “special characters” options

  • remotefortressreader:

    • includes item stack sizes
    • some performance improvements



  • Exposed get_vector() (from C++) for all types that support find(), e.g. df.unit.get_vector() ==


  • Located start_dwarf_count offset for all builds except 64-bit Linux; startdwarf should work now
  • Added buildings_other_id.DISPLAY_CASE
  • Fixed viewscreen_titlest.start_savegames alignment
  • Fixed unit alignment
  • Identified historical_entity.unknown1b.deities (deity IDs)

DFHack 0.44.02-alpha1

New Scripts


  • Fixed a crash that could occur if a symbol table in symbols.xml had no content


  • Added a new dfhack.console API
  • API can now wrap functions with 12 or 13 parameters


  • The ui_menu_width global is now a 2-byte array; the second item is the former ui_area_map_width global, which is now removed
  • The former announcements global is now a field in d_init
  • world fields formerly beginning with job_ are now fields of, e.g. world.job_list is now