- Scripts can be enabled with the built-in enable/disable commands
- Scripts can be enabled with the built-in `enable`/`disable <disable>` commands
- A new function, ``reqscript()``, is available as a safer alternative to ``script_environment()``
- A new function, ``reqscript()``, is available as a safer alternative to ``script_environment()``
- Lua viewscreens can choose not to intercept the OPTIONS keybinding
- Lua viewscreens can choose not to intercept the OPTIONS keybinding
New internal commands
New internal commands
---------------------
---------------------
- kill-lua: Interrupt running Lua scripts
- `kill-lua`: Interrupt running Lua scripts
- type: Show where a command is implemented
- `type`: Show where a command is implemented
New plugins
New plugins
-----------
-----------
- `confirm`: Adds confirmation dialogs for several potentially dangerous actions
- `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`)
- `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
- `title-version` (formerly ``vshook``): Display DFHack version on title screen
New scripts
New scripts
-----------
-----------
@ -224,7 +225,7 @@ Fixes
- `buildingplan`: Now supports hatch covers
- `buildingplan`: Now supports hatch covers
- `gui/create-item`: fixed assigning quality to items, made :kbd:`Esc` work properly
- `gui/create-item`: fixed assigning quality to items, made :kbd:`Esc` work properly
- `gui/gm-editor`: handles lua tables properly
- `gui/gm-editor`: handles lua tables properly
- help: now recognizes built-in commands, like "help"
- `help`: now recognizes built-in commands, like ``help``
- `manipulator`: fixed crash when selecting custom professions when none are found
- `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
- `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
- `search-plugin`: fixed crash in unit list after cancelling a job; fixed crash when disabling stockpile category after searching in a subcategory
@ -256,7 +257,7 @@ Misc Improvements
- `automaterial`: Fixed several issues with constructions being allowed/disallowed incorrectly when using box-select
- `automaterial`: Fixed several issues with constructions being allowed/disallowed incorrectly when using box-select
- `dwarfmonitor`:
- `dwarfmonitor`:
- widgets' positions, formats, etc. are now customizable (see Readme)
- widgets' positions, formats, etc. are now customizable
- weather display now separated from the date display
- weather display now separated from the date display
- New mouse cursor widget
- New mouse cursor widget
@ -269,16 +270,16 @@ Misc Improvements
- Now avoids errors with unrecognized types
- Now avoids errors with unrecognized types
- `gui/hack-wish`: renamed to `gui/create-item`
- `gui/hack-wish`: renamed to `gui/create-item`
- "keybinding list" accepts a context
- `keybinding list <keybinding>` accepts a context
- `lever`:
- `lever`:
- Lists lever names
- Lists lever names
- "lever pull" can be used to pull the currently-selected lever
- ``lever pull`` can be used to pull the currently-selected lever
- memview: Fixed display issue
- ``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`)
- `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
- ``nyan``: Can now be stopped with dfhack-run
- plug: lists all plugins; shows state and number of commands in plugins
- `plug`: lists all plugins; shows state and number of commands in plugins
- `prospect`: works from within command-prompt
- `prospect`: works from within command-prompt
- `quicksave`: Restricted to fortress mode
- `quicksave`: Restricted to fortress mode
- `remotefortressreader`: Exposes more information
- `remotefortressreader`: Exposes more information
@ -309,7 +310,7 @@ Internals
---------
---------
- Ruby library now included on OS X - Ruby scripts should work on OS X 10.10
- 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
- libstdc++ should work with older versions of OS X
- Added support for ``onLoadMap.init``/``onUnloadMap.init`` scripts
- Added support for `onMapLoad.init / onMapUnload.init <other_init_files>` scripts
- game type detection functions are now available in the World module
- 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
- 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 adventure mode menu names
@ -324,7 +325,7 @@ Lua
New Internal Commands
New Internal Commands
---------------------
---------------------
- `hide`, `show`: hide and show the console on Windows
- `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)
- `sc-script`: Allows additional scripts to be run when certain events occur (similar to `onLoad.init` scripts)
New Plugins
New Plugins
-----------
-----------
@ -343,7 +344,7 @@ New Tweaks
Fixes
Fixes
-----
-----
- Fixed game type detection in `3dveins`, `gui/create-item`, `reveal`, `seedwatch`
- Fixed game type detection in `3dveins`, `gui/create-item`, `reveal`, `seedwatch`
- PRELOAD_LIB: More extensible on Linux
- ``PRELOAD_LIB``: More extensible on Linux
- `add-spatter`, `eventful`: Fixed crash on world load
- `add-spatter`, `eventful`: Fixed crash on world load
- `add-thought`: Now has a proper subthought arg.
- `add-thought`: Now has a proper subthought arg.
- `building-hacks`: Made buildings produce/consume correct amount of power
- `building-hacks`: Made buildings produce/consume correct amount of power
@ -357,7 +358,7 @@ Fixes
- Fixed error message in Arena mode
- Fixed error message in Arena mode
- no longer checks the DF version
- no longer checks the DF version
- fixed ballistic arrow head orders
- fixed ballistic arrow head orders
- convinces the bookkeeper to update records more often'
- convinces the bookkeeper to update records more often
- `zone`: Stopped crash when scrolling cage owner list
- `zone`: Stopped crash when scrolling cage owner list
@ -385,8 +386,8 @@ DFHack 0.40.24-r2
Internals
Internals
---------
---------
- Lua scripts can set environment variables of each other with dfhack.run_script_with_env.
- 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).
- 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
- `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)
- Filesystem module now provides file access/modification times and can list directories (normally and recursively)
- Units Module: New functions::
- Units Module: New functions::
@ -429,7 +430,7 @@ Fixes
- `add-thought`: updated to properly affect stress.
- `add-thought`: updated to properly affect stress.
- `hfs-pit`: should work now
- `hfs-pit`: should work now
- `autobutcher`: takes gelding into account
- `autobutcher`: takes gelding into account
- init.lua existence checks should be more reliable (notably when using non-English locales)
- :file:`init.lua` existence checks should be more reliable (notably when using non-English locales)
Misc Improvements
Misc Improvements
-----------------
-----------------
@ -466,7 +467,6 @@ New Scripts
Removed
Removed
-------
-------
- embark.lua
- needs_porting/*
- needs_porting/*
Misc Improvements
Misc Improvements
@ -577,7 +577,7 @@ New Scripts
Misc Improvements
Misc Improvements
-----------------
-----------------
- `autodump`: Can now mark a stockpile for auto-dumping (similar to automelt and autotrade)
- `autodump`: Can now mark a stockpile for auto-dumping (similar to `automelt` and `autotrade`)
- `buildingplan`: Can now auto-allocate rooms to dwarves with specific positions (e.g. expedition leader, mayor)
- `buildingplan`: Can now auto-allocate rooms to dwarves with specific positions (e.g. expedition leader, mayor)
- `dwarfmonitor`: now displays a weather indicator and date
- `dwarfmonitor`: now displays a weather indicator and date
- lua/syndrome-util, `modtools/add-syndrome`: now you can remove syndromes by SYN_CLASS
- lua/syndrome-util, `modtools/add-syndrome`: now you can remove syndromes by SYN_CLASS
@ -657,8 +657,8 @@ DFHack 0.40.12-r1
Internals
Internals
---------
---------
- support for global :file:`onLoadWorld.init` and :file:`onUnloadWorld.init` files, called when loading and unloading a world
- support for global `onLoad.init` and `onUnload.init` files, called when loading and unloading a world
- Close file after loading a binary patch.
- Close file after loading a `binary patch <binpatches>`.
New Plugins
New Plugins
-----------
-----------
@ -707,7 +707,7 @@ Internals
- supported per save script folders
- supported per save script folders
- Items module: added createItem function
- Items module: added createItem function
- Sorted CMakeList for plugins and plugins/devel
- Sorted CMakeList for plugins and plugins/devel
- diggingInvaders no longer builds if plugin building is disabled
- `diggingInvaders` no longer builds if plugin building is disabled
- `EventManager`: EQUIPMENT_CHANGE now triggers for new units. New events::
- `EventManager`: EQUIPMENT_CHANGE now triggers for new units. New events::
ON_REPORT
ON_REPORT
@ -719,32 +719,32 @@ New Scripts
-----------
-----------
- lua/repeat-util: makes it easier to make things repeat indefinitely
- lua/repeat-util: makes it easier to make things repeat indefinitely
- lua/syndrome-util: makes it easier to deal with unit syndromes
- lua/syndrome-util: makes it easier to deal with unit syndromes
- forum-dwarves: helps copy df viewscreens to a file
- `forum-dwarves`: helps copy df viewscreens to a file
- full-heal: fully heal a unit
- `full-heal`: fully heal a unit
- remove-wear: removes wear from all items in the fort
- `remove-wear`: removes wear from all items in the fort
- repeat: repeatedly calls a script or a plugin
- `repeat`: repeatedly calls a script or a plugin
- ShowUnitSyndromes: shows syndromes affecting units and other relevant info
- ShowUnitSyndromes: shows syndromes affecting units and other relevant info
- teleport: teleports units
- `teleport`: teleports units
- devel/print-args
- `devel/print-args`
- fix/blood-del: makes it so civs don't bring barrels full of blood ichor or goo
- `fix/blood-del`: makes it so civs don't bring barrels full of blood ichor or goo
- fix/feeding-timers: reset the feeding timers of all units
- `fix/feeding-timers`: reset the feeding timers of all units
- gui/hack-wish: creates items out of any material
- `gui/hack-wish`: creates items out of any material
- gui/unit-info-viewer: displays information about units
- `gui/unit-info-viewer`: displays information about units
- modtools/add-syndrome: add a syndrome to a unit or remove one
- `modtools/add-syndrome`: add a syndrome to a unit or remove one
- modtools/anonymous-script: execute an lua script defined by a string. Useful for the ``*-trigger`` scripts.
- `modtools/anonymous-script`: execute an lua script defined by a string. Useful for the ``*-trigger`` scripts.
- deathcause: allow selection from the unitlist screen
- `deathcause`: allow selection from the unitlist screen
- slayrace: allow targetting undeads
- slayrace: allow targetting undeads
- Workflow plugin:
- `workflow` plugin:
- properly considers minecarts assigned to routes busy.
- properly considers minecarts assigned to routes busy.
- code for deducing job outputs rewritten in lua for flexibility.
- code for deducing job outputs rewritten in lua for flexibility.
@ -928,9 +927,9 @@ Misc improvements
- workflow announces when the stock level gets very low once a season.
- workflow announces when the stock level gets very low once a season.
- Auto syndrome plugin: A way of automatically applying boiling rock syndromes and calling dfhack commands controlled by raws.
- Auto syndrome plugin: A way of automatically applying boiling rock syndromes and calling dfhack commands controlled by raws.
- Infinite sky plugin: Create new z-levels automatically or on request.
- `infiniteSky` plugin: Create new z-levels automatically or on request.
- True transformation plugin: A better way of doing permanent transformations that allows later transformations.
- True transformation plugin: A better way of doing permanent transformations that allows later transformations.
- Work now plugin: Makes the game assign jobs every time you pause.
- `workNow` plugin: Makes the game assign jobs every time you pause.
New tweaks
New tweaks
----------
----------
@ -938,30 +937,30 @@ New tweaks
New scripts
New scripts
-----------
-----------
- binpatch: the same as the stand-alone binpatch.exe, but works at runtime.
- `binpatch`: the same as the stand-alone binpatch.exe, but works at runtime.
- region-pops: displays animal populations of the region and allows tweaking them.
- region-pops: displays animal populations of the region and allows tweaking them.
- lua: lua interpreter front-end converted to a script from a native command.
- `lua`: lua interpreter front-end converted to a script from a native command.
- dfusion: misc scripts with a text based menu.
- dfusion: misc scripts with a text based menu.
- embark: lets you embark anywhere.
- embark: lets you embark anywhere.
- lever: list and pull fort levers from the dfhack console.
- `lever`: list and pull fort levers from the dfhack console.
- stripcaged: mark items inside cages for dumping, eg caged goblin weapons.
- `stripcaged`: mark items inside cages for dumping, eg caged goblin weapons.
- soundsense-season: writes the correct season to gamelog.txt on world load.
- soundsense-season: writes the correct season to gamelog.txt on world load.
- create-items: spawn items
- create-items: spawn items
- fix/cloth-stockpile: fixes bug 5739; needs to be run after savegame load every time.
- fix/cloth-stockpile: fixes :bug:`5739`; needs to be run after savegame load every time.
New GUI scripts
New GUI scripts
---------------
---------------
- gui/guide-path: displays the cached path for minecart Guide orders.
- `gui/guide-path`: displays the cached path for minecart Guide orders.
- gui/workshop-job: displays inputs of a workshop job and allows tweaking them.
- `gui/workshop-job`: displays inputs of a workshop job and allows tweaking them.
- gui/workflow: a front-end for the workflow plugin (part inspired by falconne).
- `gui/workflow`: a front-end for the workflow plugin (part inspired by falconne).
- gui/assign-rack: works together with a binary patch to fix weapon racks.
- `gui/assign-rack`: works together with a binary patch to fix weapon racks.
- gui/gm-editor: an universal editor for lots of dfhack things.
- `gui/gm-editor`: an universal editor for lots of dfhack things.
- gui/companion-order: a adventure mode command interface for your companions.
- `gui/companion-order`: a adventure mode command interface for your companions.
- gui/advfort: a way to do jobs with your adventurer (e.g. build fort).
- `gui/advfort`: a way to do jobs with your adventurer (e.g. build fort).
New binary patches
New binary patches
------------------
------------------
(for use with binpatch)
(for use with `binpatch`)
- armorstand-capacity: doubles the capacity of armor stands.
- armorstand-capacity: doubles the capacity of armor stands.
- custom-reagent-size: lets custom reactions use small amounts of inputs.
- custom-reagent-size: lets custom reactions use small amounts of inputs.
@ -973,9 +972,9 @@ New binary patches
New Plugins
New Plugins
-----------
-----------
- fix-armory: Together with a couple of binary patches and the gui/assign-rack script, this plugin makes weapon racks, armor stands, chests and cabinets in properly designated barracks be used again for storage of squad equipment.
- `fix-armory`: Together with a couple of binary patches and the `gui/assign-rack` script, this plugin makes weapon racks, armor stands, chests and cabinets in properly designated barracks be used again for storage of squad equipment.
- search: Adds an incremental search function to the Stocks, Trading, Stockpile and Unit List screens.
- `search`: Adds an incremental search function to the Stocks, Trading, Stockpile and Unit List screens.
- automaterial: Makes building constructions (walls, floors, fortifications, etc) a little bit easier by saving you from having to trawl through long lists of materials each time you place one.
- `automaterial`: Makes building constructions (walls, floors, fortifications, etc) a little bit easier by saving you from having to trawl through long lists of materials each time you place one.
- Dfusion: Reworked to make use of lua modules, now all the scripts can be used from other scripts.
- Dfusion: Reworked to make use of lua modules, now all the scripts can be used from other scripts.
- Eventful: A collection of lua events, that will allow new ways to interact with df world.
- Eventful: A collection of lua events, that will allow new ways to interact with df world.
@ -985,7 +984,7 @@ DFHack v0.34.11-r2
Internals
Internals
---------
---------
- full support for Mac OS X.
- full support for Mac OS X.
- a plugin that adds scripting in ruby.
- a plugin that adds scripting in `ruby <rb>`.
- support for interposing virtual methods in DF from C++ plugins.
- support for interposing virtual methods in DF from C++ plugins.
- support for creating new interface screens from C++ and lua.
- support for creating new interface screens from C++ and lua.
- added various other API functions.
- added various other API functions.
@ -993,21 +992,21 @@ Internals
Notable bugfixes
Notable bugfixes
----------------
----------------
- better terminal reset after exit on linux.
- better terminal reset after exit on linux.
- seedwatch now works on reclaim.
- `seedwatch` now works on reclaim.
- the sort plugin won't crash on cages anymore.
- the sort plugin won't crash on cages anymore.
Misc improvements
Misc improvements
-----------------
-----------------
- autodump: can move items to any walkable tile, not just floors.
- `autodump`: can move items to any walkable tile, not just floors.
- stripcaged: by default keep armor, new dumparmor option.
- `stripcaged`: by default keep armor, new dumparmor option.
- zone: allow non-domesticated birds in nestboxes.
- `zone`: allow non-domesticated birds in nestboxes.
- workflow: quality range in constraints.
- `workflow`: quality range in constraints.
- cleanplants: new command to remove rain water from plants.
- cleanplants: new command to remove rain water from plants.
- liquids: can paint permaflow, i.e. what makes rivers power water wheels.
- `liquids`: can paint permaflow, i.e. what makes rivers power water wheels.
- prospect: pre-embark prospector accounts for caves & magma sea in its estimate.
- `prospect`: pre-embark prospector accounts for caves & magma sea in its estimate.