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.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

Fixes

  • 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

API

  • New functions (also exposed to Lua):

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

Internals

  • 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

Structures

  • 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

Lua

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

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

Fixes

  • 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)

API

  • 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()

Internals

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

Structures

  • 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 ui.kitchen)
  • 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

Fixes

  • 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

Internals

  • 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

Fixes

  • 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

Internals

  • 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

Fixes

Misc Improvements

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

Internals

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

Structures

  • 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

Fixes

  • 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

Fixes

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

DFHack 0.44.07-beta1

Misc Improvements

Structures

DFHack 0.44.07-alpha1

Fixes

  • 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

Structures

  • 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.)

Fixes

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

Fixes

  • 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

Removed

Internals

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

Structures

  • 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

Structures

  • incident: re-aligned again to match disassembly

DFHack 0.44.04-alpha1

Fixes

Structures

  • 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

Fixes

Misc Improvements

Structures

  • 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

Lua

  • 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

Fixes

  • 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

Removed

Structures

  • 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)

Lua

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

DFHack 0.44.02-alpha1

New Scripts

Fixes

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

Structures

  • 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 world.jobs, e.g. world.job_list is now world.jobs.list

Lua

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