Contents
- 64-bit support on all platforms
- Several structure fixes to match 64-bit DF's memory layout
- Added
DFHack::Job::removeJob()
function - New module:
Designations
- handles designation creation (currently for plants only) - Added
Gui::getSelectedPlant()
- Added
Units::getMainSocialActivity()
,Units::getMainSocialEvent()
- Visual Studio 2015 now required to build on Windows instead of 2010
- GCC 4.8 or newer required to build on Linux and OS X (and now supported on OS X)
- Updated TinyXML from 2.5.3 to 2.6.2
- Added the ability to download files manually before building
Lua has been updated to 5.3 - see http://www.lua.org/manual/5.3/readme.html for details
- Floats are no longer implicitly converted to integers in DFHack API calls
df.new()
supports more types:char
,intptr_t
,uintptr_t
,long
,unsigned long
String representations of vectors and a few other containers now include their lengths
Added a
tile-material
moduleAdded a
Painter:key_string()
methodMade
dfhack.gui.revealInDwarfmodeMap()
available
- Added support for loading ruby 2.x libraries
- dwarfvet enables animal caretaking
- generated-creature-renamer: Renames generated creature IDs for use with graphics packs
- labormanager (formerly autolabor2): a more advanced alternative to autolabor
- misery: re-added and updated for the 0.4x series
- title-folder: shows DF folder name in window title bar when enabled
- adv-rumors: improves the "Bring up specific incident or rumor" menu in adventure mode
- fix/tile-occupancy: Clears bad occupancy flags on the selected tile.
- install-info: Logs basic troubleshooting information about the current DFHack installation
- load-save: loads a save non-interactively
- modtools/change-build-menu: Edit the build mode sidebar menus
- modtools/if-entity: Run a command if the current entity matches a given ID
- season-palette: Swap color palettes with the changes of the seasons
- unforbid: Unforbids all items
- tweak condition-material <tweak>: fixes a crash in the work order condition material list
- tweak hotkey-clear <tweak>: adds an option to clear bindings from DF hotkeys
The DF path on OS X can now contain spaces and
:
charactersBuildings::setOwner() changes now persist properly when saved
ls
now lists scripts in folders other thanhack/scripts
, when applicableFixed
plug
output alignment for plugins with long namesadd-thought: fixed support for emotion names
autochop:
- fixed several issues with job creation and removal
- stopped designating the center tile (unreachable) for large trees
- stopped options from moving when enabling and disabling burrows
- fixed display of unnamed burrows
devel/find-offsets: fixed a crash when vtables used by globals aren't available
getplants:
- fixed several issues with job creation and removal
- stopped designating the center tile (unreachable) for large trees
gui/workflow: added extra keybinding to work with gui/extended-status
manipulator:
- Fixed crash when selecting a profession from an empty list
- Custom professions are now sorted alphabetically more reliably
modtools/create-unit:
- stopped permanently overwriting the creature creation menu in arena mode
- now uses non-English names
modtools/item-trigger: fixed errors with plant growths
remotefortressreader: fixed a crash when serializing the local map
title-version: now hidden when loading an arena
Documented all default keybindings (from :file:`dfhack.init-example`) in the docs for the relevant commands; updates enforced by build system.
autounsuspend: reduced update frequency to address potential performance issues
gui/extended-status: added a feature to queue beds
lua and gui/gm-editor now support the same aliases (
scr
,unit
, etc.)manipulator: added social activities to job column
remotefortressreader: Added support for
- world map snow coverage
- spatters
- wall info
- site towers, world buildings
- surface material
- building items
- DF version info
title-version: Added a prerelease indicator
workflow: Re-added
Alt-W
keybindings
- Label widgets can now easily register handlers for mouse clicks
add-thought: allow syndrome name as
-thought
argumentgui/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)
- Added ability to insert default types into containers. For primitive types leave the type entry empty, and for references use
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
- 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
Commands to run on startup can be specified on the command line with
+
Example:
./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
andonReactionCompleting
. Second one can be canceled
- autogems: Creates a new Workshop Order setting, automatically cutting rough gems
- devel/save-version: Displays DF version information about the current save
- modtools/extra-gamelog: replaces
log-region
,soundsense-season
, andsoundsense
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-plugin: 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 toggledtweak hide-priority
: Adds an option to hide designation priority indicatorstweak title-start-rename
: Adds a safe rename option to the title screen "Start Playing" menu
zone:
- Added
unassign
subcommand - Added
only
option toassign
subcommand
- Added
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
- autochop: Can now edit log minimum/maximum directly and remove limit entirely
- autolabor, autohauler, manipulator: Added support for new jobs/labors/skills
- colonies: now implemented by a script
- createitem: Can now create items anywhere without specifying a unit, as long as a unit exists on the map
- devel/export-dt-ini: Updated for 0.42.06
- devel/find-offsets: Automated several more scans
- gui/gm-editor: Now supports finding some items with a numeric ID (with
i
) - lua: Now supports some built-in variables like gui/gm-editor, e.g.
unit
,screen
- remotefortressreader: Can now trigger keyboard events
- stockflow: Now offers better control over individual craft jobs
- weather: now implemented by a script
- zone: colored output
- DFusion: legacy script system, obsolete or replaced by better alternatives
confirm:
- Added a
uniform-delete
option for military uniform deletion - Added a basic in-game configuration UI
- Added a
- 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-plugin: 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)
- Unrecognized command feedback now includes more information about plugins
- fix/dry-buckets: replaces the
drybuckets
plugin - feature: now implemented by a script
- 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
- :file:`dfhack.init` file locations significantly generalized
- Scripts can be enabled with the built-in enable/disable <disable> commands
- A new function,
reqscript()
, is available as a safer alternative toscript_environment()
- Lua viewscreens can choose not to intercept the OPTIONS keybinding
- kill-lua: Interrupt running Lua scripts
- type: Show where a command is implemented
- confirm: Adds confirmation dialogs for several potentially dangerous actions
- fix-unit-occupancy: Fixes issues with unit occupancy, such as faulty "unit blocking tile" messages (🐛`3499`)
- title-version (formerly
vshook
): Display DFHack version on title screen
- 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
- 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-plugin: fixed crash in unit list after cancelling a job; fixed crash when disabling stockpile category after searching in a subcategory
- stockpiles: 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)
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 corpsesgui/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 <keybinding> accepts a context
lever:
- Lists lever names
lever pull
can be used to pull the currently-selected lever
memview
: Fixed display issuemodtools/create-item: arguments are named more clearly, and you can specify the creator to be the unit with id
df.global.unit_next_id-1
(useful in conjunction with modtools/create-unit)nyan
: Can now be stopped with dfhack-runplug: 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-plugin:
- 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
- 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 <other_init_files> 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 tostderr.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
- 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)
- autohauler: A hauling-only version of autolabor
- modtools/reaction-product-trigger: triggers callbacks when products are produced (contrast with when reactions complete)
- fps-min <tweak>: Fixes the in-game minimum FPS setting
- shift-8-scroll <tweak>: Gives Shift+8 (or
*
) priority when scrolling menus, instead of scrolling the map - tradereq-pet-gender <tweak>: Displays pet genders on the trade request screen
- Fixed game type detection in 3dveins, gui/create-item, reveal, seedwatch
PRELOAD_LIB
: More extensible on Linux- add-spatter, eventful: Fixed crash on world load
- add-thought: Now has a proper subthought arg.
- building-hacks: Made buildings produce/consume correct amount of power
- fix-armory: compiles and is available again (albeit with issues)
- gui/gm-editor: Added search option (accessible with "s")
- hack-wish <gui/create-item>: Made items stack properly.
- modtools/skill-change: Made level granularity work properly.
- show-unit-syndromes: should work
- stockflow:
- Fixed error message in Arena mode
- no longer checks the DF version
- fixed ballistic arrow head orders
- convinces the bookkeeper to update records more often
- zone: Stopped crash when scrolling cage owner list
- 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
andall
options exportlegends_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
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:
isWar isHunter isAvailableForAdoption isOwnCiv isOwnRace getRaceName getRaceNamePlural getRaceBabyName getRaceChildName isBaby isChild isAdult isEggLayer isGrazer isMilkable isTrainableWar isTrainableHunting isTamable isMale isFemale isMerchant isForest isMarkedForSlaughter
Buildings Module: New Functions:
isActivityZone isPenPasture isPitPond isActive findPenPitAt
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
- :file:`init.lua` existence checks should be more reliable (notably when using non-English locales)
Multiline commands are now possible inside dfhack.init scripts. See :file:`dfhack.init-example` for example usage.
CMake shouldn't cache DFHACK_RELEASE anymore. People may need to manually update/delete their CMake cache files to get rid of it.
- EventManager: fixed crash error with EQUIPMENT_CHANGE event.
- key modifier state exposed to Lua (ie Ctrl, Alt, Shift)
dfhack.sh
can now be run from other directories on OS X
- blueprint: export part of your fortress to quickfort .csv files
- hotkey-notes: print key, name, and jump position of hotkeys
- needs_porting/*
Added support for searching more lists
Are kept in a seperate file: HISTORY