- Label widgets can now easily register handlers for mouse clicks
- `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)
- 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
Ctrl
A
andCtrl
Z
, as well asAlt
E
/U
/N
on OS X - Multiple contexts can now be specified when adding keybindings
- Keybindings can now use
F10
-F12
and0
-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 <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 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 <keybinding> 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
df.global.unit_next_id-1
(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-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
init.lua
existence checks should be more reliable (notably when using non-English locales)
Multiline commands are now possible inside dfhack.init scripts. See 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