dfhack/docs/changelog.txt

2182 lines
135 KiB
Plaintext

2018-04-02 20:30:54 -06:00
=== Scroll down for changes
2018-04-02 20:22:20 -06:00
===[[[
The text below is included in docs/dev/Documentation.rst - see that file for more details on the changelog setup.
This is kept in this file as a quick syntax reference.
2018-04-02 20:22:20 -06:00
===help
2018-04-02 20:22:20 -06:00
changelog.txt uses a syntax similar to RST, with a few special sequences:
- ``===`` indicates the start of a comment
- ``#`` indicates the start of a release name (do not include "DFHack")
- ``##`` indicates the start of a section name (this must be listed in ``gen_changelog.py``)
- ``-`` indicates the start of a changelog entry. **Note:** an entry currently must be only one line.
- ``:`` (colon followed by space) separates the name of a feature from a description of a change to that feature.
Changes made to the same feature are grouped if they end up in the same section.
- ``:\`` (colon, backslash, space) avoids the above behavior
- ``- @`` (the space is optional) indicates the start of an entry that should only be displayed in NEWS-dev.rst.
Use this sparingly, e.g. for immediate fixes to one development build in another development build that
are not of interest to users of stable builds only.
- Three ``[`` characters indicate the start of a block (possibly a comment) that
spans multiple lines. Three ``]`` characters indicate the end of such a block.
- ``!`` immediately before a phrase set up to be replaced (see gen_changelog.py) stops that occurrence from being replaced.
2018-04-02 20:22:20 -06:00
Template for new versions:
## New Tools
## New Features
## Fixes
## Misc Improvements
## Documentation
## API
## Lua
## Removed
2018-04-02 20:22:20 -06:00
===end
]]]
2018-04-02 20:30:54 -06:00
================================================================================
2023-04-12 02:45:42 -06:00
======== IMPORTANT: rename this, and add a new "Future" section, BEFORE ========
======== making a new DFHack release, even if the only changes made ========
======== were in submodules with their own changelogs! ========
================================================================================
# Future
## New Tools
- `tubefill`: (reinstated) replenishes mined-out adamantine
2023-09-14 13:38:19 -06:00
## New Features
## Fixes
2023-09-30 23:37:27 -06:00
- `autolabor`: ensure vanilla work details are reinstated when the fort or the plugin is unloaded
2023-09-28 21:13:55 -06:00
- ``dfhack.TranslateName()``: fixed crash on certain invalid names, which affected `warn-starving`
2023-09-29 08:36:16 -06:00
- EventManager: Unit death event no longer misfires on units leaving the map
2023-09-14 13:38:19 -06:00
## Misc Improvements
2023-09-30 23:37:27 -06:00
- `digtype`: designate only visible tiles by default, and use "auto" dig mode for following veins
- `digtype`: added options for designating only current z-level, this z-level and above, and this z-level and below
- `hotkeys`: make the DFHack logo brighten on hover in ascii mode to indicate that it is clickable
2023-09-30 23:37:27 -06:00
- `hotkeys`: use vertical bars instead of "!" symbols for the DFHack logo in ascii mode to make it easier to read
- EventManager: guard against potential iterator invalidation if one of the event listeners were to modify the global data structure being iterated over
- EventManager: for ``onBuildingCreatedDestroyed`` events, changed firing order of events so destroyed events come before created events
2023-09-14 13:38:19 -06:00
## Documentation
## API
## Lua
2023-09-30 23:37:27 -06:00
- mouse key events are now aligned with internal DF semantics: ``_MOUSE_L`` indicates that the left mouse button has just been pressed and ``_MOUSE_L_DOWN`` indicates that the left mouse button is being held down. similarly for ``_MOUSE_R`` and ``_MOUSE_M``. 3rd party scripts may have to adjust.
2023-09-14 13:38:19 -06:00
## Removed
2023-09-18 00:52:37 -06:00
# 50.10-r1
## Fixes
- Linux launcher: allow Steam Overlay and game streaming to function
- `autobutcher`: don't ignore semi-wild units when marking units for slaughter
2023-09-26 08:54:34 -06:00
## Misc Improvements
- 'sort': Improve combat skill scale thresholds
2023-09-14 13:38:19 -06:00
# 50.09-r4
## New Features
- `dig`: new overlay for ASCII mode that visualizes designations for smoothing, engraving, carving tracks, and carving fortifications
2023-09-06 14:43:11 -06:00
## Fixes
- `buildingplan`: make the construction dimensions readout visible again
2023-09-09 08:49:35 -06:00
- `seedwatch`: fix a crash when reading data saved by very very old versions of the plugin
- `gui/mod-manager`: don't continue to display overlay after the raws loading progress bar appears
2023-09-06 14:43:11 -06:00
## Misc Improvements
2023-09-14 13:38:19 -06:00
- `sort`: add sort option for training need on squad assignment screen
2023-09-08 21:09:55 -06:00
- `sort`: filter mothers with infants, units with weak mental fortitude, and critically injured units on the squad assignment screen
- `sort`: display a rating relative to the current sort order next to the visible units on the squad assignment screen
2023-09-06 14:43:11 -06:00
## Documentation
- add instructions for downloading development builds to the ``Installing`` page
2023-09-06 14:43:11 -06:00
## API
2023-09-08 21:25:37 -06:00
- `overlay`: overlay widgets can now declare a ``version`` attribute. changing the version of a widget will reset its settings to defaults. this is useful when changing the overlay layout and old saved positions will no longer be valid.
2023-09-06 14:43:11 -06:00
## Lua
- ``argparse.boolean``: convert arguments to lua boolean values.
2023-09-06 14:43:11 -06:00
# 50.09-r3
## New Features
- `sort`: search, sort, and filter for squad assignment screen
2023-08-16 06:32:01 -06:00
- `zone`: advanced unit assignment screens for cages, restraints, and pits/ponds
2023-09-03 12:49:13 -06:00
- `buildingplan`: one-click magma/fire safety filter for planned buildings
2023-07-21 19:50:15 -06:00
## Fixes
2023-08-16 06:32:01 -06:00
- Core: reload scripts in mods when a world is unloaded and immediately loaded again
2023-08-11 13:58:44 -06:00
- Core: fix text getting added to DFHack text entry widgets when Alt- or Ctrl- keys are hit
2023-09-03 08:11:18 -06:00
- `buildingplan`: ensure selected barrels and buckets are empty (or at least free of lye and milk) as per the requirements of the building
2023-08-12 23:06:52 -06:00
- `orders`: prevent import/export overlay from appearing on the create workorder screen
- `caravan`: corrected prices for cages that have units inside of them
2023-09-02 03:03:03 -06:00
- `tailor`: remove crash caused by clothing items with an invalid ``maker_race``
- ``dialogs.MessageBox``: fix spacing around scrollable text
2023-09-06 14:43:11 -06:00
- `seedwatch`: ignore unplantable tree seeds
2023-09-02 03:03:03 -06:00
- `autobutcher`: fix ``ticks`` commandline option incorrectly rejecting positive integers as valid values
2023-07-21 19:50:15 -06:00
## Misc Improvements
- Surround DFHack-specific UI elements with square brackets instead of red-yellow blocks for better readability
2023-08-20 11:09:08 -06:00
- `autobutcher`: don't mark animals for butchering if they are already marked for some kind of training (war, hunt)
- `hotkeys`: don't display DFHack logo in legends mode since it covers up important interface elements. the Ctrl-Shift-C hotkey to bring up the menu and the mouseover hotspot still function, though.
- `sort`: animals are now sortable by race on the assignment screens
2023-09-05 01:31:35 -06:00
- `createitem`: support creating items inside of bags
2023-07-21 19:50:15 -06:00
## API
- ``Items::getValue()``: remove ``caravan_buying`` parameter since the identity of the selling party doesn't actually affect the item value
- `RemoteFortressReader`: add a ``force_reload`` option to the GetBlockList RPC API to return blocks regardless of whether they have changed since the last request
2023-08-20 11:09:08 -06:00
- ``Units``: new animal propery check functions ``isMarkedForTraining(unit)``, ``isMarkedForTaming(unit)``, ``isMarkedForWarTraining(unit)``, and ``isMarkedForHuntTraining(unit)``
- ``Gui``: ``getAnyStockpile`` and ``getAnyCivzone`` (along with their ``getSelected`` variants) now work through layers of ZScreens. This means that they will still return valid results even if a DFHack tool window is in the foereground.
2023-07-21 19:50:15 -06:00
## Lua
- ``new()``: improved error handling so that certain errors that were previously uncatchable (creating objects with members with unknown vtables) are now catchable with ``pcall()``
- ``dfhack.items.getValue()``: remove ``caravan_buying`` param as per C++ API change
- ``widgets.BannerPanel``: panel with distinctive border for marking DFHack UI elements on otherwise vanilla screens
- ``widgets.Panel``: new functions to override instead of setting corresponding properties (useful when subclassing instead of just setting attributes): ``onDragBegin``, ``onDragEnd``, ``onResizeBegin``, ``onResizeEnd``
2023-08-16 06:32:01 -06:00
- ``dfhack.screen.readTile()``: now populates extended tile property fields (like ``top_of_text``) in the returned ``Pen`` object
2023-08-20 11:09:08 -06:00
- ``dfhack.units``: new animal propery check functions ``isMarkedForTraining(unit)``, ``isMarkedForTaming(unit)``, ``isMarkedForWarTraining(unit)``, and ``isMarkedForHuntTraining(unit)``
- ``dfhack.gui``: new ``getAnyCivZone`` and ``getAnyStockpile`` functions; also behavior of ``getSelectedCivZone`` and ``getSelectedStockpile`` functions has changes as per the related API notes
2023-07-21 19:50:15 -06:00
# 50.09-r2
2023-06-23 11:59:21 -06:00
## New Plugins
2023-07-07 16:57:24 -06:00
- `3dveins`: reinstated for v50, this plugin replaces vanilla DF's blobby vein generation with veins that flow smoothly and naturally between z-levels
- `zone`: new searchable, sortable, filterable screen for assigning units to pastures
2023-07-21 05:12:01 -06:00
- `dwarfvet`: reinstated and updated for v50's new hospital mechanics; allow your animals to have their wounds treated at hospitals
2023-07-20 20:22:30 -06:00
- `dig`: new ``dig.asciiwarmdamp`` overlay that highlights warm and damp tiles when in ASCII mode. there is no effect in graphics mode since the tiles are already highlighted there
2023-06-23 11:59:21 -06:00
## Fixes
- Fix extra keys appearing in DFHack text boxes when shift (or any other modifier) is released before the other key you were pressing
2023-07-15 21:20:51 -06:00
- `logistics`: don't autotrain domestic animals brought by invaders (they'll get attacked by friendly creatures as soon as you let them out of their cage)
- `logistics`: don't bring trade goods to depot if the only caravans present are tribute caravans
- `gui/create-item`: when choosing a citizen to create the chosen items, avoid choosing a dead citizen
2023-07-21 18:46:38 -06:00
- `logistics`: fix potential crash when removing stockpiles or turning off stockpile features
2023-06-23 11:59:21 -06:00
## Misc Improvements
2023-07-15 15:27:58 -06:00
- `stockpiles`: include exotic pets in the "tameable" filter
2023-07-16 12:58:00 -06:00
- `logistics`: bring an autotraded bin to the depot if any item inside is tradeable instead of marking all items within the bin as untradeable if any individual item is untradeable
2023-07-13 17:08:00 -06:00
- `autonick`: add more variety to nicknames based on famous literary dwarves
- ``widgets.EditField``: DFHack edit fields now support cut/copy/paste with the system clipboard with Ctrl-X/Ctrl-C/Ctrl-V
2023-07-08 19:40:53 -06:00
- Suppress DF keyboard events when a DFHack keybinding is matched. This prevents, for example, a backtick from appearing in a textbox as text when you launch `gui/launcher` from the backtick keybinding.
2023-07-15 15:26:51 -06:00
- Dreamfort: give noble suites double-thick walls and add apartment doors
2023-06-23 11:59:21 -06:00
## Documentation
- `misery`: rewrite the documentation to clarify the actual effects of the plugin
2023-06-23 11:59:21 -06:00
## API
- ``Units::getUnitByNobleRole``, ``Units::getUnitsByNobleRole``: unit lookup API by role
- ``Items::markForTrade()``, ``Items::isRequestedTradeGood()``, ``Items::getValue``: see Lua notes below
2023-06-23 11:59:21 -06:00
## Internals
- Price calculations fixed for many item types
2023-06-23 11:59:21 -06:00
## Lua
- ``dfhack.units.getUnitByNobleRole``, ``dfhack.units.getUnitsByNobleRole``: unit lookup API by role
2023-07-04 04:58:45 -06:00
- ``dfhack.items.markForTrade``: mark items for trade
- ``dfhack.items.isRequestedTradeGood``: discover whether an item is named in a trade agreement with an active caravan
- ``dfhack.items.getValue``: gained optional ``caravan`` and ``caravan_buying`` parameters for prices that take trader races and agreements into account
2023-07-16 21:24:39 -06:00
- ``widgets.TextButton``: wraps a ``HotkeyLabel`` and decorates it to look more like a button
2023-06-23 11:59:21 -06:00
2023-06-26 17:31:18 -06:00
# 50.09-r1
## Internals
- Core: update SDL interface from SDL1 to SDL2
2023-06-23 11:59:21 -06:00
# 50.08-r4
2023-02-03 15:28:17 -07:00
## New Plugins
2023-06-12 13:55:03 -06:00
- `logistics`: automatically mark and route items or animals that come to monitored stockpiles. options are toggleable on an overlay that comes up when you have a stockpile selected.
2023-06-01 12:20:08 -06:00
## Fixes
- `buildingplan`: don't include artifacts when max quality is masterful
- `dig-now`: clear item occupancy flags for channeled tiles that had items on them
2023-06-15 12:12:32 -06:00
- `RemoteFortressReader`: fix a crash with engravings with undefined images
2023-06-01 12:20:08 -06:00
## Misc Improvements
2023-06-15 12:12:32 -06:00
- `autonick`: additional nicknames based on burrowing animals, colours, gems, and minerals
2023-06-07 12:57:16 -06:00
- `stockpiles`: added ``barrels``, ``organic``, ``artifacts``, and ``masterworks`` stockpile presets
- `orders`: only display import/export/sort/clear panel on main orders screen
2023-06-23 11:59:21 -06:00
- `orders`: refine order conditions for library orders to reduce cancellation spam
- Blueprint library: dreamfort: full rewrite and update for DF v50
- Blueprint library: pump_stack: updated walkthrough and separated dig and channel steps so boulders can be cleared
- Blueprint library: aquifer_tap: updated walkthrough
2023-06-21 03:00:06 -06:00
- `dig-now`: can now handle digging obsidian that has been formed from magma and water
2023-06-01 12:20:08 -06:00
## Documentation
2023-06-23 11:59:21 -06:00
- `blueprint-library-guide`: update Dreamfort screenshots and links, add ``aquifer_tap`` screenshot
2023-06-01 12:20:08 -06:00
2023-06-05 18:42:35 -06:00
# 50.08-r3
## Fixes
- Fix crash for some players when they launch DF outside of the Steam client
2023-06-01 12:20:08 -06:00
# 50.08-r2
## New Plugins
- `add-spatter`: (reinstated) allow mods to add poisons and magical effects to weapons
- `changeitem`: (reinstated) change item material, quality, and subtype
- `createitem`: (reinstated) create arbitrary items from the command line
- `deramp`: (reinstated) removes all ramps designated for removal from the map
- `flows`: (reinstated) counts map blocks with flowing liquids
- `lair`: (reinstated) mark the map as a monster lair (this avoids item scatter when the fortress is abandoned)
- `luasocket`: (reinstated) provides a Lua API for accessing network sockets
- `work-now`: (reinstated, renamed from ``workNow``) prevent dwarves from wandering aimlessly with "No job" after completing a task
2023-03-31 06:02:02 -06:00
2023-04-29 19:58:34 -06:00
## Fixes
- DFHack screen backgrounds now use appropriate tiles in DF Classic
2023-05-16 12:26:47 -06:00
- RemoteServer: fix crash on malformed json in ``dfhack-config/remote-server.json``
- `autolabor`: work detail override warning now only appears on the work details screen
2023-05-19 20:41:02 -06:00
- `RemoteFortressReader`: ensured names are transmitted in UTF-8 instead of CP437
2023-04-29 19:58:34 -06:00
## Misc Improvements
- `autodump`: no longer checks for a keyboard cursor before executing, so ``autodump destroy`` (which doesn't require a cursor) can still function
2023-06-01 12:20:08 -06:00
- Settings: recover gracefully when settings files become corrupted (e.g. by DF CTD)
- `orders`: update orders in library for prepared meals, bins, archer uniforms, and weapons
- `gui/control-panel`: new preference for whether filters in lists search for substrings in the middle of words (e.g. if set to true, then "ee" will match "steel")
2023-05-03 17:37:44 -06:00
- `gui/design`: Improved performance for drawing shapes
- Dreamfort: improve traffic patterns throughout the fortress
- `gui/blueprint`: recording of stockpile layouts and categories is now supported. note that detailed stockpile configurations will *not* be saved (yet)
2023-06-01 12:20:08 -06:00
- Core: new commandline flag/environment var: pass ``--disable-dfhack`` on the Dwarf Fortress commandline or specify ``DFHACK_DISABLE=1`` in the environment to disable DFHack for the current session.
- `overlay`: add links to the quickstart guide and the control panel on the DF title screen
- Window behavior: non-resizable windows now allow dragging by their frame edges by default
2023-06-01 12:20:08 -06:00
- `gui/autodump`: fort-mode keybinding: Ctrl-H (when ``armok`` tools are enabled in `gui/control-panel`)
- Window behavior: if you have multiple DFHack tool windows open, scrolling the mouse wheel while over an unfocused window will focus it and raise it to the top
2023-05-28 21:42:36 -06:00
- `stockpiles`: allow filtering creatures by tameability
2023-04-29 19:58:34 -06:00
2023-05-20 06:01:07 -06:00
## Internals
2023-05-20 05:58:08 -06:00
- ``dfhack.internal``: added memory analysis functions: ``msizeAddress``, ``getHeapState``, ``heapTakeSnapshot``, ``isAddressInHeap``, ``isAddressActiveInHeap``, ``isAddressUsedAfterFreeInHeap``, ``getAddressSizeInHeap``, and ``getRootAddressOfHeapObject``
2023-04-29 19:58:34 -06:00
## Lua
- ``overlay.reload()``: has been renamed to ``overlay.rescan()`` so as not to conflict with the global ``reload()`` function. If you are developing an overlay, please take note of the new function name for reloading your overlay during development.
- ``gui``: changed frame naming scheme to ``FRAME_X`` rather than ``X_FRAME``, and added aliases for backwards compatibility. (for example ``BOLD_FRAME`` is now called ``FRAME_BOLD``)
2023-05-27 04:16:51 -06:00
- ``ensure_keys``: walks a series of keys, creating new tables for any missing values
2023-04-29 19:58:34 -06:00
## Removed
2023-05-16 17:04:33 -06:00
- `orders`: ``library/military_include_artifact_materials`` library file removed since recent research indicates that platinum blunt weapons and silver crossbows are not more effective than standard steel. the alternate military orders file was also causing unneeded confusion.
2023-04-29 19:58:34 -06:00
# 50.08-r1
2023-03-31 06:02:02 -06:00
## Fixes
2023-04-24 01:31:20 -06:00
- `autoclothing`: eliminate game lag when there are many inventory items in the fort
- `buildingplan`: fixed size limit calculations for rollers
- `buildingplan`: fixed items not being checked for accessibility in the filter and item selection dialogs
2023-04-24 15:15:09 -06:00
- `dig-now`: properly detect and complete smoothing designations that have been converted into active jobs
2023-04-12 02:45:42 -06:00
## Misc Improvements
- `buildingplan`: planner panel is minimized by default and now remembers minimized state
2023-04-21 12:54:38 -06:00
- `buildingplan`: can now filter by gems (for gem windows) and yarn (for ropes in wells)
- ``toggle-kbd-cursor``: add hotkey for toggling the keyboard cursor (Alt-K)
2023-04-23 18:41:38 -06:00
- ``version``: add alias to display the DFHack help (including the version number) so something happens when players try to run "version"
2023-04-17 10:39:15 -06:00
- `gui/control-panel`: add preference option for hiding the terminal console on startup
- `gui/control-panel`: add preference option for hiding "armok" tools in command lists
- ``Dwarf Therapist``: add a warning to the Labors screen when Dwarf Therapist is active so players know that changes they make to that screen will have no effect. If you're starting a new embark and nobody seems to be doing anything, check your Labors tab for this warning to see if Dwarf Therapist thinks it is in control (even if it's not running).
2023-04-23 18:26:45 -06:00
- `overlay`: add the DFHack version string to the DF title screen
2023-04-12 02:45:42 -06:00
## Lua
2023-04-23 19:40:24 -06:00
- ``widgets.RangeSlider``: new mouse-controlled two-headed slider widget
- ``gui.ZScreenModal``: ZScreen subclass for modal dialogs
- ``widgets.CycleHotkeyLabel``: exposed "key_sep" and "option_gap" attributes for improved stylistic control.
2023-04-12 02:45:42 -06:00
## Removed
2023-04-23 18:31:29 -06:00
- `title-version`: replaced by an `overlay` widget
2023-04-12 02:45:42 -06:00
# 50.07-r1
## New Plugins
- `faststart`: speeds up the "Loading..." screen so the Main Menu appears faster
## Fixes
-@ `hotkeys`: hotkey hints on menu popup will no longer get their last character cut off by the scrollbar
-@ ``launchdf``: launch Dwarf Fortress via the Steam client so Steam Workshop is functional
- `blueprint`: interpret saplings, shrubs, and twigs as floors instead of walls
2023-04-04 23:42:58 -06:00
- `combine`: fix error processing stockpiles with boundaries that extend outside of the map
2023-04-12 02:45:42 -06:00
-@ `prospector`: display both "raw" Z levels and "cooked" elevations
- `stockpiles`: fix crash when importing settings for gems from other worlds
2023-04-12 02:45:42 -06:00
-@ `stockpiles`: allow numbers in saved stockpile filenames
2023-03-31 06:02:02 -06:00
## Misc Improvements
2023-04-12 02:45:42 -06:00
-@ `buildingplan`: items in the item selection dialog should now use the same item quality symbols as the base game
-@ `buildingplan`: hide planner overlay while the DF tutorial is active so that it can detect when you have placed the carpenter's workshop and bed and allow you to finish the tutorial
- `buildingplan`: can now filter by cloth and silk materials (for ropes)
-@ `buildingplan`: rearranged elements of ``planneroverlay`` interface
-@ `buildingplan`: rearranged elements of ``itemselection`` interface
2023-04-12 02:45:42 -06:00
-@ Mods: scripts in mods that are only in the steam workshop directory are now accessible. this means that a script-only mod that you never mark as "active" when generating a world will still receive automatic updates and be usable from in-game
-@ Mods: scripts from only the most recent version of an installed mod are added to the script path
-@ Mods: give active mods a chance to reattach their load hooks when a world is reloaded
2023-04-07 00:19:04 -06:00
- `gui/control-panel`: bugfix services are now enabled by default
- Core: hide DFHack terminal console by default when running on Steam Deck
2023-03-31 06:02:02 -06:00
## Documentation
2023-04-10 19:29:41 -06:00
- `installing`: updated to include Steam installation instructions
2023-03-31 06:02:02 -06:00
## Lua
- added two new window borders: ``gui.BOLD_FRAME`` for accented elements and ``gui.INTERIOR_MEDIUM_FRAME`` for a signature-less frame that's thicker than the existing ``gui.INTERIOR_FRAME``
2023-03-31 06:02:02 -06:00
# 50.07-beta2
## New Plugins
- `getplants`: reinstated: designate trees for chopping and shrubs for gathering according to type
- `prospector`: reinstated: get stone, ore, gem, and other tile property counts in fort mode.
2023-02-03 15:28:17 -07:00
2023-03-17 11:08:16 -06:00
## Fixes
2023-04-12 02:45:42 -06:00
-@ `buildingplan`: filters are now properly applied to planned stairs
-@ `buildingplan`: existing carved up/down stairs are now taken into account when determining which stair shape to construct
- `buildingplan`: upright spike traps are now placed extended rather than retracted
2023-03-31 06:02:02 -06:00
- `buildingplan`: you can no longer designate constructions on tiles with magma or deep water, mirroring the vanilla restrictions
2023-04-12 02:45:42 -06:00
-@ `buildingplan`: fixed material filters getting lost for planning buildings on save/reload
-@ `buildingplan`: respect building size limits (e.g. roads and bridges cannot be more than 31 tiles in any dimension)
2023-03-31 06:02:02 -06:00
- `tailor`: properly discriminate between dyed and undyed cloth
2023-04-12 02:45:42 -06:00
-@ `tailor`: no longer default to using adamantine cloth for producing clothes
2023-03-31 06:02:02 -06:00
- `tailor`: take queued orders into account when calculating available materials
- `tailor`: skip units who can't wear clothes
- `tailor`: identify more available items as available, solving issues with over-production
2023-03-17 11:08:16 -06:00
## Misc Improvements
2023-03-31 06:02:02 -06:00
- `buildingplan`: filters and global settings are now ignored when manually choosing items for a building, allowing you to make custom choices independently of the filters that would otherwise be used
- `buildingplan`: if `suspendmanager` is running, then planned buildings will be left suspended when their items are all attached. `suspendmanager` will unsuspsend them for construction when it is safe to do so.
- `buildingplan`: add option for autoselecting the last manually chosen item (like `automaterial` used to do)
- `confirm`: adds confirmation for removing burrows via the repaint menu
2023-03-23 03:36:20 -06:00
- `stockpiles`: support applying stockpile configurations with fully enabled categories to stockpiles in worlds other than the one where the configuration was exported from
2023-03-31 06:02:02 -06:00
- `stockpiles`: support partial application of a saved config based on dynamic filtering (e.g. disable all tallow in a food stockpile, even tallow from world-specific generated creatures)
2023-03-23 03:36:20 -06:00
- `stockpiles`: additive and subtractive modes when applying a second stockpile configuration on top of a first
- `stockpiles`: write player-exported stockpile configurations to the ``dfhack-config/stockpiles`` folder. If you have any stockpile configs in other directories, please move them to that folder.
- `stockpiles`: now includes a library of useful stockpile configs (see docs for details)
2023-03-23 01:59:05 -06:00
- `automelt`: now allows metal chests to be melted (workaround for DF bug 2493 is no longer needed)
- `orders`: add minimize button to overlay panel so you can get it out of the way to read long statue descriptions when choosing a subject in the details screen
2023-03-27 04:53:10 -06:00
- `orders`: add option to delete exported files from the import dialog
2023-03-25 00:25:24 -06:00
- `enable`: can now interpret aliases defined with the `alias` command
2023-04-12 02:45:42 -06:00
- Mods: scripts in mods are now automatically added to the DFHack script path. DFHack recognizes two directories in a mod's folder: ``scripts_modinstalled/`` and ``scripts_modactive/``. ``scripts_modinstalled/`` folders will always be added the script path, regardless of whether the mod is active in a world. ``scripts_modactive/`` folders will only be added to the script path when the mod is active in the current loaded world.
2023-03-17 11:08:16 -06:00
## Documentation
2023-03-31 06:02:02 -06:00
- `modding-guide`: guide updated to include information for 3rd party script developers
- the ``untested`` tag has been renamed to ``unavailable`` to better reflect the status of the remaining unavaialable tools. most of the simply "untested" tools have now been tested and marked as working. the remaining tools are known to need development work before they are available again.
2023-03-17 11:08:16 -06:00
## Lua
2023-04-12 02:45:42 -06:00
- ``widgets.Label``: tokens can now specify a ``htile`` property to indicate the tile that should be shown when the Label is hovered over with the mouse
- ``widgets.Label``: click handlers no longer get the label itself as the first param to the click handler
- ``widgets.CycleHotkeyLabel``: options that are bare integers will no longer be interpreted as the pen color in addition to being the label and value
- ``widgets.CycleHotkeyLabel``: option labels and pens can now be functions that return a label or pen
2023-03-17 11:08:16 -06:00
# 50.07-beta1
2023-03-11 14:56:55 -07:00
## Fixes
-@ `buildingplan`: items are now attached correctly to screw pumps and other multi-item buildings
2023-03-15 02:42:06 -06:00
-@ `buildingplan`: buildings with different material filters will no longer get "stuck" if one of the filters currently matches no items
- `showmood` properly count required number of bars and cloth when they aren't the main item for the strange mood
2023-03-11 14:56:55 -07:00
## Misc Improvements
-@ `buildingplan`: can now filter by clay materials
-@ `buildingplan`: remember choice per building type for whether the player wants to choose specific items
-@ `buildingplan`: you can now attach multiple weapons to spike traps
-@ `buildingplan`: can now filter by whether a slab is engraved
2023-03-15 02:19:34 -06:00
-@ `buildingplan`: add "minimize" button to temporarily get the planner overlay out of the way if you would rather use the vanilla UI for placing the current building
-@ `buildingplan`: add ``buildingplan reset`` command for resetting all filters to defaults
-@ `buildingplan`: rename "Build" button to "Confirm" on the item selection dialog and change the hotkey from "B" to "C"
2023-03-12 16:43:23 -06:00
- `blueprint`: now writes blueprints to the ``dfhack-config/blueprints`` directory
- `blueprint-library-guide`: library blueprints have moved from ``blueprints`` to ``hack/data/blueprints``
2023-03-17 11:14:11 -06:00
- `blueprint-library-guide`: player-created blueprints should now go in the ``dfhack-config/blueprints`` folder. please move your existing blueprints from ``blueprints`` to ``dfhack-config/blueprints``. you don't need to move the library blueprints -- those can be safely deleted from the old ``blueprints`` directory.
-@ `showmood`: clarify how many bars and/or cloth items are actually needed for the mood
2023-03-11 14:56:55 -07:00
## Removed
2023-03-16 20:55:12 -06:00
-@ `buildingplan`: "heat safety" setting is temporarily removed while we investigate incorrect item matching
2023-03-11 14:56:55 -07:00
# 50.07-alpha3
## Fixes
2023-02-24 18:14:27 -07:00
-@ ``widgets.HotkeyLabel``: don't trigger on click if the widget is disabled
2023-02-24 17:58:17 -07:00
- ``dfhack.job.isSuitableMaterial``: now properly detects lack of fire and magma safety for vulnerable materials with high melting points
2023-03-06 13:38:14 -07:00
- `dig-now`: fixed multi-layer channel designations only channeling every second layer
## Misc Improvements
2023-03-06 13:38:14 -07:00
- `dig-now`: added handling of dig designations that have been converted into active jobs
2023-03-11 14:56:55 -07:00
- `buildingplan`: entirely new UI for building placement, item selection, and materials filtering!
## API
2023-02-24 18:21:38 -07:00
- Gui focus strings will no longer get the "dfhack/" prefix if the string "dfhack/" already exists in the focus string
- ``Military``: New module for military functionality
- ``Military``: new ``makeSquad`` to create a squad
- ``Military``: changed ``getSquadName`` to take a squad identifier
- ``Military``: new ``updateRoomAssignments`` for assigning a squad to a barracks and archery range
- ``Maps::GetBiomeType`` renamed to ``Maps::getBiomeType`` for consistency
- ``Maps::GetBiomeTypeRef`` renamed to ``Maps::getBiomeTypeRef`` for consistency
## Lua
2023-02-26 10:41:22 -07:00
- ``dfhack.job.attachJobItem()``: allows you to attach specific items to a job
2023-02-24 18:24:20 -07:00
- ``dfhack.screen.paintTile()``: you can now explicitly clear the interface cursor from a map tile by passing ``0`` as the tile value
2023-02-24 18:16:30 -07:00
- ``widgets.Label``: token ``tile`` properties can now be functions that return a value
2023-02-27 05:13:05 -07:00
- ``widgets.CycleHotkeyLabel``: add ``label_below`` attribute for compact 2-line output
-@ ``widgets.FilteredList``: search key matching is now case insensitive by default
2023-02-24 18:11:20 -07:00
-@ ``gui.INTERIOR_FRAME``: a panel frame style for use in highlighting off interior areas of a UI
- ``maps.getBiomeType``: exposed preexisting function to Lua
## Removed
2023-02-24 18:11:20 -07:00
-@ ``gui.THIN_FRAME``: replaced by ``gui.INTERIOR_FRAME``
- `automaterial`: all functionality has been merged into `buildingplan`
# 50.07-alpha2
2023-02-10 11:26:37 -07:00
## Fixes
2023-02-10 21:30:35 -07:00
-@ `nestboxes`: fixed bug causing nestboxes themselves to be forbidden, which prevented citizens from using them to lay eggs. Now only eggs are forbidden.
2023-04-12 02:45:42 -06:00
-@ `autobutcher`: implemented work-around for Dwarf Fortress not setting nicknames properly, so that nicknames created in the in-game interface are detected & protect animals from being butchered properly. Note that nicknames for unnamed units are not currently saved by dwarf fortress - use ``enable fix/protect-nicks`` to fix any nicknames created/removed within dwarf fortress so they can be saved/reloaded when you reload the game.
-@ `seedwatch`: fix saving and loading of seed stock targets
2023-02-12 15:28:37 -07:00
- `autodump`: changed behaviour to only change ``dump`` and ``forbid`` flags if an item is successfully dumped.
-@ `autochop`: generate default names for burrows with no assigned names
2023-02-23 23:33:46 -07:00
- ``Buildings::StockpileIterator``: fix check for stockpile items on block boundary.
- `tailor`: block making clothing sized for toads; make replacement clothing orders use the size of the wearer, not the size of the garment
-@ `confirm`: fix fps drop when enabled
2023-04-12 02:45:42 -06:00
-@ `channel-safely`: fix an out of bounds error regarding the REPORT event listener receiving (presumably) stale id's
2023-02-10 11:26:37 -07:00
## Misc Improvements
- `autobutcher`: logs activity to the console terminal instead of making disruptive in-game announcements
- DFHack tool windows that capture mouse clicks (and therefore prevent you from clicking on the "pause" button) now unconditionally pause the game when they open (but you can still unpause with the keyboard if you want to). Examples of this behavior: `gui/quickfort`, `gui/blueprint`, `gui/liquids`
- `showmood`: now shows the number of items needed for cloth and bars in addition to the technically correct but always confusing "total dimension" (150 per bar or 10,000 per cloth)
-@ Stopped mouse clicks from affecting the map when a click on a DFHack screen dismisses the window
2023-02-13 15:38:16 -07:00
- `confirm`: configuration data is now persisted globally.
2023-02-23 23:33:46 -07:00
- `tailor`: add support for adamantine cloth (off by default); improve logging
2023-02-10 11:26:37 -07:00
## API
- ``Gui::any_civzone_hotkey``, ``Gui::getAnyCivZone``, ``Gui::getSelectedCivZone``: new functions to operate on the new zone system
2023-02-23 23:33:46 -07:00
- Units module: added new predicates for ``isGeldable()``, ``isMarkedForGelding()``, and ``isPet()``
2023-02-10 11:26:37 -07:00
## Lua
- ``dfhack.gui.getSelectedCivZone``: returns the Zone that the user has selected currently
- ``widgets.FilteredList``: Added ``edit_on_change`` optional parameter to allow a custom callback on filter edit change.
2023-02-23 23:33:46 -07:00
- ``widgets.TabBar``: new library widget (migrated from control-panel.lua)
2023-02-12 15:44:19 -07:00
2023-02-10 11:26:37 -07:00
# 50.07-alpha1
2023-02-03 15:28:17 -07:00
## Fixes
2023-02-05 13:07:54 -07:00
- ``Units::isFortControlled``: Account for agitated wildlife
2023-02-10 10:41:20 -07:00
-@ Fix right click sometimes closing both a DFHack window and a vanilla panel
2023-04-12 02:45:42 -06:00
-@ Fixed issue with scrollable lists having some data off-screen if they were scrolled before being made visible
-@ `channel-safely`: fixed bug resulting in marker mode never being set for any designation
-@ `automelt`: fixed bug related to lua stack smashing behavior in returned stockpile configs
-@ `autochop`: fixed bug related to lua stack smashing behavior in returned stockpile configs
2023-04-12 02:45:42 -06:00
-@ `nestboxes`: now cancels any in-progress hauling jobs when it protects a fertile egg
-@ Fix persisted data not being written on manual save
2023-04-12 02:45:42 -06:00
-@ `nestboxes`: now scans for eggs more frequently and cancels any in-progress hauling jobs when it protects a fertile egg
2023-02-03 15:28:17 -07:00
## Misc Improvements
2023-02-10 10:41:20 -07:00
-@ `automelt`: is now more resistent to vanilla savegame corruption
-@ `hotkeys`: DFHack logo is now hidden on screens where it covers important information when in the default position (e.g. when choosing an embark site)
2023-02-08 15:03:22 -07:00
- `misery`: now persists state with the fort
2023-02-10 10:41:20 -07:00
-@ `autodump`: reinstate ``autodump-destroy-item``, hotkey: Ctrl-K
- `autodump`: new hotkey for ``autodump-destroy-here``: Ctrl-H
2023-02-10 10:41:20 -07:00
-@ `dig`: new hotkeys for vein designation on z-level (Ctrl-V) and vein designation across z-levels (Ctrl-Shift-V)
2023-02-10 09:20:11 -07:00
-@ `clean`: new hotkey for `spotclean`: Ctrl-C
- `autobutcher`: changed defaults from 5 females / 1 male to 4 females / 2 males so a single unfortunate accident doesn't leave players without a mating pair
- `autobutcher`: now immediately loads races available at game start into the watchlist
-@ replaced DFHack logo used for the hover hotspot with a crisper image
2023-02-10 10:41:20 -07:00
-@ `orders`: recipe for silver crossbows removed from ``library/military`` as it is not a vanilla recipe, but is available in ``library/military_include_artifact_materials``
- `stonesense`: added an ``INVERT_MOUSE_Z`` option to invert the mouse wheel direction
2023-02-03 15:28:17 -07:00
## Documentation
## API
## Lua
- `overlay`: overlay widgets can now specify focus paths for the viewscreens they attach to so they only appear in specific contexts. see `overlay-dev-guide` for details.
2023-02-06 07:29:31 -07:00
- ``widgets.CycleHotkeyLabel``: Added ``key_back`` optional parameter to cycle backwards.
2023-02-08 11:00:13 -07:00
- ``widgets.HotkeyLabel``: Added ``setLabel`` method to allow easily updating the label text without mangling the keyboard shortcut.
- ``widgets.HotkeyLabel``: Added ``setOnActivate`` method to allow easily updating the ``on_activate`` callback.
2023-02-08 10:37:35 -07:00
- ``widgets.FilteredList``: Added ``case_sensitive`` optional paramter to determine if filtering is case sensitive.
2023-02-03 15:28:17 -07:00
2023-02-03 16:48:09 -07:00
# 50.05-alpha3.1
## Fixes
-@ `seedwatch`: fix parameter parsing when setting targets
2023-02-03 16:48:09 -07:00
2023-02-03 15:28:17 -07:00
# 50.05-alpha3
## New Plugins
2023-02-02 13:53:20 -07:00
- `autoslab`: automatically create work orders to engrave slabs for ghostly dwarves
## Fixes
2023-02-02 13:53:20 -07:00
-@ DF screens can no longer get "stuck" on transitions when DFHack tool windows are visible. Instead, those DF screens are force-paused while DFHack windows are visible so the player can close them first and not corrupt the screen sequence. The "PAUSE FORCED" indicator will appear on these DFHack windows to indicate what is happening.
-@ allow launcher tools to launch themselves without hanging the game
-@ fix issues with clicks "passing through" some DFHack window elements to the screen below
- `getplants`: trees are now designated correctly
2023-02-02 14:06:14 -07:00
- `autoclothing`: fixed a crash that can happen when units are holding invalid items.
2023-02-02 13:53:20 -07:00
-@ `orders`: fix orders in library/basic that create bags
- `orders`: library/military now sticks to vanilla rules and does not add orders for normally-mood-only platinum weapons. A new library orders file ``library/military_include_artifact_materials`` is now offered as an alternate ``library/military`` set of orders that still includes the platinum weapons.
2023-02-03 13:53:59 -07:00
- `autochop`: fixed a crash when processing trees with corrupt data structures (e.g. when a trunk tile fails to fall when the rest of the tree is chopped down)
## Misc Improvements
2023-02-10 10:41:20 -07:00
-@ DFHack windows can now be "defocused" by clicking somewhere not over the tool window. This has the same effect as pinning previously did, but without the extra clicking.
2023-01-29 11:53:05 -07:00
- `getplants`: ID values will now be accepted regardless of case
2023-02-10 10:41:20 -07:00
-@ Windows now display "PAUSE FORCED" on the lower border if the tool is forcing the game to pause
-@ New borders for DFHack tool windows -- tell us what you think!
2023-02-10 10:41:20 -07:00
-@ `autoclothing`: merged the two separate reports into the same command.
2023-02-02 13:53:20 -07:00
- `automelt`: stockpile configuration can now be set from the commandline
- `channel-safely`: new monitoring for cave-in prevention
2023-02-10 10:41:20 -07:00
-@ `gui/control-panel`: you can now configure whether DFHack tool windows should pause the game by default
- `gui/control-panel`: new global hotkey for quick access: Ctrl-Shift-E
2023-02-10 10:41:20 -07:00
-@ `hotkeys`: clicking on the DFHack logo no longer closes the popup menu
2023-02-02 13:53:20 -07:00
- `nestboxes`: now saves enabled state in your savegame
- `gui/launcher`: sped up initialization time for faster window appearance
- `orders`: orders plugin functionality is now accessible via an `overlay` widget when the manager orders screen is open
- `gui/quickcmd`: now has its own global keybinding for your convenience: Ctrl-Shift-A
2023-02-01 05:30:45 -07:00
- `seedwatch`: now persists enabled state in the savegame, automatically loads useful defaults, and respects reachability when counting available seeds
2023-02-10 10:41:20 -07:00
-@ `quickfort`: planned buildings are now properly attached to any pertinent overlapping zones
## Documentation
2023-02-02 13:53:20 -07:00
- `compile`: instructions added for cross-compiling DFHack for Windows from a Linux Docker builder
2023-01-30 14:32:51 -07:00
-@ Quickstart guide has been updated with info on new window behavior and how to use the control panel
## API
2023-01-27 14:39:03 -07:00
- ``Buildings::containsTile()``: no longer takes a ``room`` parameter since that's not how rooms work anymore. If the building has extents, the extents will be checked. otherwise, the result just depends on whether the tile is within the building's bounding box.
2023-01-29 17:26:14 -07:00
- ``Units::getCitizens()``: gets a list of citizens, which otherwise you'd have to iterate over all units the world to discover
- ``Screen::Pen``: now accepts ``top_of_text`` and ``bottom_of_text`` properties to support offset text in graphics mode
2023-02-02 13:53:20 -07:00
- `overlay`: overlay widgets can now specify a default enabled state if they are not already set in the player's overlay config file
- ``Lua::Push``: now supports ``std::unordered_map``
## Lua
- `helpdb`: new function: ``helpdb.refresh()`` to force a refresh of the database. Call if you are a developer adding new scripts, loading new plugins, or changing help text during play
2023-02-02 13:53:20 -07:00
- `helpdb`: changed from auto-refreshing every 60 seconds to only refreshing on explicit call to ``helpdb.refresh()``. docs very rarely change during a play session, and the automatic database refreshes were slowing down the startup of `gui/launcher` and anything else that displays help text.
2023-01-23 03:16:56 -07:00
- ``widgets.Label``: ``label.scroll()`` now understands ``home`` and ``end`` keywords for scrolling to the top or bottom
2023-02-02 21:24:40 -07:00
- ``widgets.List``: new callbacks for double click and shift double click
2023-01-29 17:26:14 -07:00
- ``dfhack.units.getCitizens()``: gets a list of citizens
2023-02-10 10:41:20 -07:00
-@ ``gui.ZScreen``: new attribute: ``defocusable`` for controlling whether a window loses keyboard focus when the map is clicked
2023-02-02 21:24:40 -07:00
- ``widgets.Label``: token ``tile`` properties can now be either pens or numeric texture ids
2023-02-02 13:53:20 -07:00
- `tiletypes`: now has a Lua API! ``tiletypes_setTile``
## Removed
- `autohauler`: no plans to port to v50, as it just doesn't make sense with the new work detail system
2023-01-20 18:13:28 -07:00
# 50.05-alpha2
## Fixes
2023-04-12 02:45:42 -06:00
-@ `autofarm`: don't duplicate status line entries for crops with no current supply
2023-02-10 10:41:20 -07:00
-@ `orders`: allow the orders library to be listed and imported properly (if you previously copied the orders library into your ``dfhack-config/orders`` directory to work around this bug, you can remove those files now)
2023-01-20 18:13:28 -07:00
- `tailor`: now respects the setting of the "used dyed clothing" standing order toggle
# 50.05-alpha1
## Fixes
- ``widgets.WrappedLabel``: no longer resets scroll position when window is moved or resized
## Misc Improvements
2022-12-30 02:39:04 -07:00
- Scrollable widgets now react to mouse wheel events when the mouse is over the widget
- the ``dfhack-config/scripts/`` folder is now searched for scripts by default
- `hotkeys`: overlay hotspot widget now shows the DFHack logo in graphics mode and "DFHack" in text mode
2023-01-16 00:28:14 -07:00
- `script-paths`: removed "raw" directories from default script paths. now the default locations to search for scripts are ``dfhack-config/scripts``, ``save/*/scripts``, and ``hack/scripts``
- ``init.d``: directories have moved from the ``raw`` subfolder (which no longer exists) to the root of the main DF folder or a savegame folder
## Documentation
- `overlay-dev-guide`: added troubleshooting tips and common development workflows
2022-12-11 16:51:27 -07:00
- added DFHack architecture diagrams to the dev intro
2023-01-15 00:58:18 -07:00
- added DFHack Quickstart guide
## API
- ``Gui::getDwarfmodeDims``: now only returns map viewport dimensions; menu dimensions are obsolete
- ``Gui::getDFViewscreen``: returns the topmost underlying DF viewscreen
- ``Screen::Pen``: now accepts ``keep_lower`` and ``write_to_lower`` properties to support foreground and background textures in graphics mode
## Lua
2023-01-10 13:13:49 -07:00
- Removed ``os.execute()`` and ``io.popen()`` built-in functions
2022-12-02 16:37:48 -07:00
- ``gui.View``: ``visible`` and ``active`` can now be functions that return a boolean
- ``widgets.Panel``: new attributes to control window dragging and resizing with mouse or keyboard
- ``widgets.Window``: Panel subclass with attributes preset for top-level windows
- ``widgets.CycleHotkeyLabel``: now supports rendering option labels in the color of your choice
2023-01-07 02:00:40 -07:00
- ``widgets.CycleHotkeyLabel``: new functions ``setOption()`` and ``getOptionPen()``
- ``widgets.ToggleHotkeyLabel``: now renders the ``On`` option in green text
- ``widgets.Label``: tiles can now have an associated width
2022-12-31 22:04:19 -07:00
- `overlay`: ``OverlayWidget`` now inherits from ``Panel`` instead of ``Widget`` to get all the frame and mouse integration goodies
- ``dfhack.gui.getDFViewscreen()``: returns the topmost underlying DF viewscreen
2023-01-06 00:24:44 -07:00
- ``gui.ZScreen``: Screen subclass that implements window raising, multi-viewscreen input handling, and viewscreen event pass-through so the underlying map can be interacted with and dragged around while DFHack screens are visible
2023-01-07 02:00:40 -07:00
- ``gui.View``: new function ``view:getMouseFramePos()`` for detecting whether the mouse is within (or over) the exterior frame of a view
- ``gui.CLEAR_PEN``: now clears the background and foreground and writes to the background (before it would always write to the foreground)
- ``gui.KEEP_LOWER_PEN``: a general use pen that writes associated tiles to the foreground while keeping the existing background
## Removed
- ``fix-job-postings`` from the `workflow` plugin is now obsolete since affected savegames can no longer be loaded
2022-12-06 07:40:39 -07:00
- Ruby is no longer a supported DFHack scripting language
# 0.47.05-r8
2022-05-05 23:57:04 -06:00
## New Plugins
2022-12-01 13:24:47 -07:00
- `overlay`: plugin is transformed from a single line of text that runs `gui/launcher` on click to a fully-featured overlay injection framework. It now houses a popup menu for keybindings relevant to the current DF screen, all the widgets previously provided by `dwarfmonitor` (e.g. the current date and number of happy/unhappy dwarves), the overlay that highlights suspended buildings when you pause, and others. See `overlay-dev-guide` for details.
2022-12-02 15:02:28 -07:00
- `channel-safely`: auto-manage channel designations to keep dwarves safe
2022-05-05 23:57:04 -06:00
2022-09-30 12:58:22 -06:00
## Fixes
- `automaterial`: fix the cursor jumping up a z level when clicking quickly after box select
2022-12-01 13:24:47 -07:00
- `buildingplan`: fix crash when canceling out of placement mode for a building with planning mode enabled and subsequently attempting to place a building that does not have planning mode enabled and that has no pertinent materials available
- `gui/create-item`: prevent materials list filter from intercepting sublist hotkeys
- `mousequery`: fix the cursor jumping up z levels sometimes when using TWBT
- `tiletypes`: no longer resets dig priority to the default when updating other properties of a tile
- `automaterial`: fix rendering errors with box boundary markers
2022-12-01 13:24:47 -07:00
- `autolabor`, `autohauler`: properly handle jobs 241, 242, and 243
- `autofarm`: flush output so status text is visible immediately after running the command
- `hotkeys`: correctly detect hotkeys bound to number keys, F11, and F12
- `labormanager`: associate quern construction with the correct labor
- ``EventManager``: fix a segmentation fault with the ``REPORT`` event
- ``EventManager``: fix the ``JOB_STARTED`` event only sending events to the first handler listed instead of all registered handlers
- Core: ensure ``foo.init`` always runs before ``foo.*.init`` (e.g. ``dfhack.init`` should always run before ``dfhack.something.init``)
2022-09-30 12:58:22 -06:00
## Misc Improvements
2022-12-01 13:24:47 -07:00
- `autolabor`, `autohauler`: refactored to use DFHack's messaging system for info/debug/trace messages
2022-10-12 14:33:29 -06:00
- `blueprint`: new ``--smooth`` option for recording all smoothed floors and walls instead of just the ones that require smoothing for later carving
- `blueprint`: record built constructions in blueprints
2022-10-12 17:03:03 -06:00
- `blueprint`: record stockpile/building/zone names in blueprints
- `blueprint`: record room sizes in blueprints
2022-10-12 18:42:36 -06:00
- `blueprint`: generate meta blueprints to reduce the number of blueprints you have to apply
2022-10-14 13:31:51 -06:00
- `blueprint`: support splitting the output file into phases grouped by when they can be applied
- `blueprint`: when splitting output files, number them so they sort into the order you should apply them in
2022-12-01 13:24:47 -07:00
- `dwarfmonitor`: widgets have been ported to the overlay framework and can be enabled and configured via the `gui/overlay` UI
- `ls`: indent tag listings and wrap them in the rightmost column for better readability
- `ls`: new ``--exclude`` option for hiding matched scripts from the output. this can be especially useful for modders who don't want their mod scripts to be included in ``ls`` output.
- `hotkeys`: hotkey screen has been transformed into an interactive `overlay` widget that you can bring up by moving the mouse cursor over the hotspot (in the upper left corner of the screen by default). Enable/disable/reposition the hotspot in the `gui/overlay` UI. Even if the hotspot is disabled, the menu can be brought up at any time with the Ctrl-Shift-C hotkey.
- `hotkeys`: now supports printing active hotkeys to the console with ``hotkeys list``
- `digtype`: new ``-z`` option for digtype to restrict designations to the current z-level and down
- UX: List widgets now have mouse-interactive scrollbars
- UX: You can now hold down the mouse button on a scrollbar to make it scroll multiple times.
2022-12-01 13:24:47 -07:00
- UX: You can now drag the scrollbar up and down to scroll to a specific spot
- `orders`: replace shell craft orders in the standard orders list you get with ``orders import library/basic`` with orders for shell leggings. They have a slightly higher trade price. Also, "shleggings" is just hilarious.
2022-10-13 12:57:25 -06:00
- `spectate`: new ``auto-unpause`` option for auto-dismissal of announcement pause events (e.g. sieges).
- `spectate`: new ``auto-disengage`` option for auto-disengagement of plugin through player interaction whilst unpaused.
2022-12-01 13:24:47 -07:00
- `spectate`: new ``tick-threshold`` option for specifying the maximum time to follow the same dwarf
- `spectate`: new ``animals`` option for sometimes following animals
- `spectate`: new ``hostiles`` option for sometimes following hostiles
- `spectate`: new ``visiting`` option for sometimes following visiting merchants, diplomats or plain visitors
- `spectate`: added persistent configuration of the plugin settings
- `gui/cp437-table`: new global keybinding for the clickable on-screen keyboard for players with keyboard layouts that prevent them from using certain keys: Ctrl-Shift-K
2022-12-01 13:24:47 -07:00
- `quickfort-library-guide`: improved layout of marksdwarf barracks in the example Dreamfort blueprints
2022-09-30 12:58:22 -06:00
## Documentation
2022-12-01 13:24:47 -07:00
- `overlay-dev-guide`: documentation and guide for injecting functionality into DF viewscreens from Lua scripts and creating interactive overlay widgets
- ``dfhack.gui.revealInDwarfmodeMap``: document ``center`` bool for Lua API
2022-09-30 12:58:22 -06:00
## API
2022-11-09 15:32:09 -07:00
- ``Gui::anywhere_hotkey``: for plugin commands bound to keybindings that can be invoked on any screen
2022-12-01 13:24:47 -07:00
- ``Gui::autoDFAnnouncement``, ``Gui::pauseRecenter``: added functionality reverse-engineered from announcement code
2022-11-18 18:35:50 -07:00
- ``Gui::revealInDwarfmodeMap``: Now enforce valid view bounds when pos invalid, add variant accepting x, y, z
2022-11-07 16:53:00 -07:00
- ``Lua::PushInterfaceKeys()``: transforms viewscreen ``feed()`` keys into something that can be interpreted by lua-based widgets
2022-11-07 17:48:28 -07:00
- ``Lua::Push()``: now handles maps with otherwise supported keys and values
2022-12-01 13:24:47 -07:00
- Units module: added new predicates for:
2022-11-12 15:42:41 -07:00
- ``isUnitInBox()``
2022-11-09 15:41:45 -07:00
- ``isAnimal()``
- ``isVisiting()`` any visiting unit (diplomat, merchant, visitor)
- ``isVisitor()`` ie. not merchants or diplomats
- ``isInvader()``
- ``isDemon()`` returns true for unique/regular demons
- ``isTitan()``
- ``isMegabeast()``
- ``isGreatDanger()`` returns true if unit is a demon, titan, or megabeast
- ``isSemiMegabeast()``
- ``isNightCreature()``
- ``isDanger()`` returns true if is a 'GreatDanger', semi-megabeast, night creature, undead, or invader
2022-12-01 13:24:47 -07:00
- Units module: modified predicates:
- ``isUndead()`` now optionally ignores vampires instead of always ignoring vampires
- ``isCitizen()`` now optionally ignores insane citizens instead of always ignoring insane citizens
2022-12-02 15:19:53 -07:00
- Units module: new action timer API for speeding up of slowing down units
2022-10-13 13:51:01 -06:00
- Constructions module: added ``insert()`` to insert constructions into the game's sorted list.
2022-12-01 13:24:47 -07:00
- MiscUtils: added the following string transformation functions (refactored from ``uicommon.h``): ``int_to_string``, ``ltrim``, ``rtrim``, and ``trim``; added ``string_to_int``
2022-09-30 12:58:22 -06:00
## Lua
- ``widgets.Scrollbar``: new scrollbar widget that can be paired with an associated scrollable widget. Integrated with ``widgets.Label`` and ``widgets.List``.
2022-12-01 13:24:47 -07:00
- ``widgets.List``: new ``getIdxUnderMouse()`` function for detecting the list index under the active mouse cursor. this allows for "selection follows mouse" behavior
2022-11-07 17:19:09 -07:00
- ``widgets.List``: shift-clicking now triggers the ``submit2`` attribute function if it is defined
2022-10-13 13:51:01 -06:00
- ``dfhack.constructions.findAtTile()``: exposed preexisting function to Lua.
- ``dfhack.constructions.insert()``: exposed new function to Lua.
2022-11-07 17:58:51 -07:00
- ``widgets.Panel``: new ``frame_style`` and ``frame_title`` attributes for drawing frames around groups of widgets
- ``widgets.EditField``: now allows other widgets to process characters that the ``on_char`` callback rejects.
- ``widgets.FilteredList``: now provides a useful default search key for list items made up of text tokens instead of plain text
- ``widgets.ResizingPanel``: now accounts for frame inset when calculating frame size
- ``widgets.HotkeyLabel``: now ignores mouse clicks when ``on_activate`` is not defined
2022-12-01 13:24:47 -07:00
- ``gui.Screen.show()``: now returns ``self`` as a convenience
- ``gui.View.getMousePos()`` now takes an optional ``ViewRect`` parameter in case the caller wants to get the mouse pos relative to a rect that is not the frame_body (such as the frame_rect that includes the frame itself)
2022-11-21 18:38:29 -07:00
- Lua mouse events now conform to documented behavior in `lua-api` -- ``_MOUSE_L_DOWN`` will be sent exactly once per mouse click and ``_MOUSE_L`` will be sent repeatedly as long as the button is held down. Similarly for right mouse button events.
2022-09-30 12:58:22 -06:00
2022-11-18 14:35:08 -07:00
## Internals
2022-12-01 13:24:47 -07:00
- Constructions module: ``findAtTile`` now uses a binary search intead of a linear search
- MSVC warning level upped to /W3, and /WX added to make warnings cause compilations to fail.
## Removed
- `resume`: functionality (including suspended building overlay) has moved to `unsuspend`
2022-09-30 12:58:22 -06:00
# 0.47.05-r7
## New Plugins
2022-08-02 03:02:23 -06:00
- `autonestbox`: split off from `zone` into its own plugin. Note that to enable, the command has changed from ``autonestbox start`` to ``enable autonestbox``.
- `autobutcher`: split off from `zone` into its own plugin. Note that to enable, the command has changed from ``autobutcher start`` to ``enable autobutcher``.
- `overlay`: display a "DFHack" button in the lower left corner that you can click to start the new GUI command launcher. The `dwarfmonitor` weather display had to be moved to make room for the button. If you are seeing the weather indicator rendered over the overlay button, please remove the ``dfhack-config/dwarfmonitor.json`` file to fix the weather indicator display offset.
2022-09-01 00:39:24 -06:00
## New Internal Commands
- `tags`: new built-in command to list the tool category tags and their definitions. tags associated with each tool are visible in the tool help and in the output of `ls`.
## Fixes
- `autochop`: designate largest trees for chopping first, instead of the smallest
2022-09-10 11:15:08 -06:00
- ``dfhack.run_script``: ensure the arguments passed to scripts are always strings. This allows other scripts to call ``run_script`` with numeric args and it won't break parameter parsing.
- `dig-now`: Fix direction of smoothed walls when adjacent to a door or floodgate
- ``job.removeJob()``: ensure jobs are removed from the world list when they are canceled
2022-09-01 23:48:18 -06:00
- `quickfort`: `Dreamfort <quickfort-blueprint-guide>` blueprint set: declare the hospital zone before building the coffer; otherwise DF fails to stock the hospital with materials
- ``dfhack.buildings.findCivzonesAt``: no longer return duplicate civzones after loading a save with existing civzones
## Misc Improvements
- Init scripts: ``dfhack.init`` and other init scripts have moved to ``dfhack-config/init/``. If you have customized your ``dfhack.init`` file and want to keep your changes, please move the part that you have customized to the new location at ``dfhack-config/init/dfhack.init``. If you do not have changes that you want to keep, do not copy anything, and the new defaults will be used automatically.
2022-07-26 11:40:10 -06:00
- History files: ``dfhack.history``, ``tiletypes.history``, ``lua.history``, and ``liquids.history`` have moved to the ``dfhack-config`` directory. If you'd like to keep the contents of your current history files, please move them to ``dfhack-config``.
2022-08-19 10:34:38 -06:00
- `do-job-now`: new global keybinding for boosting the priority of the jobs associated with the selected building/work order/unit/item etc.: Alt-N
- `gui/workorder-details`: new keybinding on the workorder details screen: ``D``
2022-08-19 10:34:38 -06:00
- `keybinding`: support backquote (\`) as a hotkey (and assign the hotkey to the new `gui/launcher` interface)
2022-09-01 00:39:24 -06:00
- `ls`: can now filter tools by substring or tag. note that dev scripts are hidden by default. pass the ``--dev`` option to show them.
- `manipulator`: add a library of useful default professions
- `manipulator`: move professions configuration from ``professions/`` to ``dfhack-config/professions/`` to keep it together with other dfhack configuration. If you have saved professions that you would like to keep, please manually move them to the new folder.
- ``materials.ItemTraitsDialog``: added a default ``on_select``-handler which toggles the traits.
- `orders`: added useful library of manager orders. see them with ``orders list`` and import them with, for example, ``orders import library/basic``
- `prospect`: add new ``--show`` option to give the player control over which report sections are shown. e.g. ``prospect all --show ores`` will just show information on ores.
- `seedwatch`: ``seedwatch all`` now adds all plants with seeds to the watchlist, not just the "basic" crops.
2022-08-08 11:56:47 -06:00
- UX: You can now move the cursor around in DFHack text fields in ``gui/`` scripts (e.g. `gui/blueprint`, `gui/quickfort`, or `gui/gm-editor`). You can move the cursor by clicking where you want it to go with the mouse or using the Left/Right arrow keys. Ctrl+Left/Right will move one word at a time, and Alt+Left/Right will move to the beginning/end of the text.
- UX: You can now click on the hotkey hint text in many ``gui/`` script windows to activate the hotkey, like a button. Not all scripts have been updated to use the clickable widget yet, but you can try it in `gui/blueprint` or `gui/quickfort`.
- UX: Label widget scroll icons are replaced with scrollbars that represent the percentage of text on the screen and move with the position of the visible text, just like web browser scrollbars.
2022-09-01 23:48:18 -06:00
- `quickfort`: `Dreamfort <quickfort-blueprint-guide>` blueprint set improvements: set traffic designations to encourage dwarves to eat cooked food instead of raw ingredients
## Documentation
- Added `modding-guide`
2022-09-01 23:48:18 -06:00
- Update all DFHack tool documentation (300+ pages) with standard syntax formatting, usage examples, and overall clarified text.
2022-09-01 00:39:24 -06:00
- Group DFHack tools by `tag <tools>` so similar tools are grouped and easy to find
## API
- Removed "egg" ("eggy") hook support (Linux only). The only remaining method of hooking into DF is by interposing SDL calls, which has been the method used by all binary releases of DFHack.
- Removed ``Engravings`` module (C++-only). Access ``world.engravings`` directly instead.
- Removed ``Notes`` module (C++-only). Access ``ui.waypoints.points`` directly instead.
- Removed ``Windows`` module (C++-only) - unused.
- ``Constructions`` module (C++-only): removed ``t_construction``, ``isValid()``, ``getCount()``, ``getConstruction()``, and ``copyConstruction()``. Access ``world.constructions`` directly instead.
- ``Gui::getSelectedItem()``, ``Gui::getAnyItem()``: added support for the artifacts screen
- ``Units::teleport()``: now sets ``unit.idle_area`` to discourage units from walking back to their original location (or teleporting back, if using `fastdwarf`)
## Lua
2022-08-08 13:07:25 -06:00
- History: added ``dfhack.getCommandHistory(history_id, history_filename)`` and ``dfhack.addCommandToHistory(history_id, history_filename, command)`` so gui scripts can access a commandline history without requiring a terminal.
2022-09-10 13:34:17 -06:00
- Added ``dfhack.screen.hideGuard()``: exposes the C++ ``Screen::Hide`` to Lua
- ``helpdb``: database and query interface for DFHack tool help text
- ``tile-material``: fix the order of declarations. The ``GetTileMat`` function now returns the material as intended (always returned nil before). Also changed the license info, with permission of the original author.
- ``utils.df_expr_to_ref()``: fixed some errors that could occur when navigating tables
2022-08-08 11:56:47 -06:00
- ``widgets.EditField``: new ``onsubmit2`` callback attribute is called when the user hits Shift-Enter.
- ``widgets.EditField``: new function: ``setCursor(position)`` sets the input cursor.
- ``widgets.EditField``: new attribute: ``ignore_keys`` lets you ignore specified characters if you want to use them as hotkeys
- ``widgets.FilteredList``: new attribute: ``edit_ignore_keys`` gets passed to the filter EditField as ``ignore_keys``
2022-08-08 11:56:47 -06:00
- ``widgets.Label``: ``scroll`` function now interprets the keywords ``+page``, ``-page``, ``+halfpage``, and ``-halfpage`` in addition to simple positive and negative numbers.
- ``widgets.HotkeyLabel``: clicking on the widget will now call ``on_activate()``.
- ``widgets.CycleHotkeyLabel``: clicking on the widget will now cycle the options and trigger ``on_change()``. This also applies to the ``ToggleHotkeyLabel`` subclass.
# 0.47.05-r6
2022-05-05 23:57:04 -06:00
## Fixes
- `eventful`: fix ``eventful.registerReaction`` to correctly pass ``call_native`` argument thus allowing canceling vanilla item creation. Updated related documentation.
- `eventful`: renamed NEW_UNIT_ACTIVE event to UNIT_NEW_ACTIVE to match the ``EventManager`` event name
- `eventful`: fixed UNIT_NEW_ACTIVE event firing too often
- ``job.removeJob()``: fixes regression in DFHack 0.47.05-r5 where items/buildings associated with the job were not getting disassociated when the job is removed. Now `build-now` can build buildings and `gui/mass-remove` can cancel building deconstruction again
- ``widgets.CycleHotkeyLabel``: allow initial option values to be specified as an index instead of an option value
2022-05-05 23:57:04 -06:00
## Misc Improvements
- `confirm`: added a confirmation dialog for removing manager orders
- `confirm`: allow players to pause the confirmation dialog until they exit the current screen
Improvements to dreamfort, quickfort keystroke aliases, and example orders (#2162) * add alt-f as a hotkey for quickfort to mimic the existing windows hotkey for the old quickfort hopefully this will ease the transition from the old quickfort to the new * add and document new quickfort aliases * reduce quantity requirement for dyeing 15 is just too high. the counter counts bags, not units * dreamfort blueprint improvements most of these suggested by ldog on the forums. Thanks! - significantly extend the list of hostile creatures that get stashed in the prisoner quantum stockpile - send adamantine thread to the metalworker stockpiles - give from thread/cloth stockpiles to clothier, loom, and dyer to protect the adamantine thread - automatically create tavern, library, and temple locations (restricted to residents only by default) - automatically associate the rented rooms with the tavern - place a stockpile under the dump zone so you can set up stockpile links for dumped items - doc improvements. in particular, point people to the new assign-minecarts tool for assigning minecarts to quantum stockpile dumps * update changelog * fix typo in cloth stockpile settings * fix typo in guildhall location setup * don't restrict stockpiles for clothiers and dyers * deprecate jugs alias and add stone|woodentools * remove dye thread, make jugs wooden remove dye thread to protect adamantine make jugs wooden to differentiate them from scroll rollers. that gives us a chance to actually have a usable jugs-only stockpile * dreamfort improvements - move trap corridor gates and levers before the walls and traps so they get constructed first - give useful names to the craftsdwarf's workshops - redesign the services level to: - fit better in a 1x1 embark - add doors to the hospital recovery rooms to protect from werebeasts-to-be - add an interrogation room (sheriff's office) next to the jail * shape hospital zone to exactly the hospital area * don't clutter the hospital with statues * update changelog
2022-06-02 16:51:45 -06:00
- `dfhack-examples-guide`: refine food preparation orders so meal types are chosen intelligently according to the amount of meals that exist and the number of aviailable items to cook with
- `dfhack-examples-guide`: reduce required stock of dye for "Dye cloth" orders
- `dfhack-examples-guide`: fix material conditions for making jugs and pots
- `dfhack-examples-guide`: make wooden jugs by default to differentiate them from other stone tools. this allows players to more easily select jugs out with a properly-configured stockpile (i.e. the new ``woodentools`` alias)
- `quickfort-alias-guide`: new aliases: ``forbidsearch``, ``permitsearch``, and ``togglesearch`` use the `search-plugin` plugin to alter the settings for a filtered list of item types when configuring stockpiles
- `quickfort-alias-guide`: new aliases: ``stonetools`` and ``woodentools``. the ``jugs`` alias is deprecated. please use ``stonetools`` instead, which is the same as the old ``jugs`` alias.
- `quickfort-alias-guide`: new aliases: ``usablehair``, ``permitusablehair``, and ``forbidusablehair`` alter settings for the types of hair/wool that can be made into cloth: sheep, llama, alpaca, and troll. The ``craftrefuse`` aliases have been altered to use this alias as well.
- `quickfort-alias-guide`: new aliases: ``forbidthread``, ``permitthread``, ``forbidadamantinethread``, ``permitadamantinethread``, ``forbidcloth``, ``permitcloth``, ``forbidadamantinecloth``, and ``permitadamantinecloth`` give you more control how adamantine-derived items are stored
- `quickfort`: `Dreamfort <quickfort-blueprint-guide>` blueprint set improvements: automatically create tavern, library, and temple locations (restricted to residents only by default), automatically associate the rented rooms with the tavern
- `quickfort`: `Dreamfort <quickfort-blueprint-guide>` blueprint set improvements: new design for the services level, including were-bitten hospital recovery rooms and an appropriately-themed interrogation room next to the jail! Also fits better in a 1x1 embark for minimalist players.
2022-05-05 23:57:04 -06:00
## API
- ``word_wrap``: argument ``bool collapse_whitespace`` converted to enum ``word_wrap_whitespace_mode mode``, with valid modes ``WSMODE_KEEP_ALL``, ``WSMODE_COLLAPSE_ALL``, and ``WSMODE_TRIM_LEADING``.
2022-05-05 23:57:04 -06:00
## Lua
- ``gui.View``: all ``View`` subclasses (including all ``Widgets``) can now acquire keyboard focus with the new ``View:setFocus()`` function. See docs for details.
- ``materials.ItemTraitsDialog``: new dialog to edit item traits (where "item" is part of a job or work order or similar). The list of traits is the same as in vanilla work order conditions "``t`` change traits".
- ``widgets.EditField``: the ``key_sep`` string is now configurable
- ``widgets.EditField``: can now display an optional string label in addition to the activation key
- ``widgets.EditField``: views that have an ``EditField`` subview no longer need to manually manage the ``EditField`` activation state and input routing. This is now handled automatically by the new ``gui.View`` keyboard focus subsystem.
- ``widgets.HotkeyLabel``: the ``key_sep`` string is now configurable
2022-05-05 23:57:04 -06:00
# 0.47.05-r5
2022-03-09 14:46:00 -07:00
## New Plugins
- `spectate`: "spectator mode" -- automatically follows dwarves doing things in your fort
2022-03-09 14:46:00 -07:00
2022-05-02 00:07:52 -06:00
## New Tweaks
- `tweak`: ``partial-items`` displays percentage remaining for partially-consumed items such as hospital cloth
2022-05-02 00:07:52 -06:00
2022-03-09 14:46:00 -07:00
## Fixes
- `autofarm`: removed restriction on only planting "discovered" plants
2022-05-02 00:07:52 -06:00
- `cxxrandom`: fixed exception when calling ``bool_distribution``
- `luasocket`: return correct status code when closing socket connections so clients can know when to retry
2022-03-09 14:46:00 -07:00
## Misc Improvements
- `autochop`: only designate the amount of trees required to reach ``max_logs``
- `autochop`: preferably designate larger trees over smaller ones
- `blueprint`: ``track`` phase renamed to ``carve``
- `blueprint`: carved fortifications and (optionally) engravings are now captured in generated blueprints
- `cursecheck`: new option, ``--ids`` prints creature and race IDs of the cursed creature
- `debug`: DFHack log messages now have configurable headers (e.g. timestamp, origin plugin name, etc.) via the ``debugfilter`` command of the `debug` plugin
- `debug`: script execution log messages (e.g. "Loading script: dfhack_extras.init" can now be controlled with the ``debugfilter`` command. To hide the messages, add this line to your ``dfhack.init`` file: ``debugfilter set Warning core script``
- `dfhack-examples-guide`: add mugs to ``basic`` manager orders
- `dfhack-examples-guide`: ``onMapLoad_dreamfort.init`` remove "cheaty" commands and new tweaks that are now in the default ``dfhack.init-example`` file
- ``dfhack.init-example``: recently-added tweaks added to example ``dfhack.init`` file
2022-03-12 14:12:00 -07:00
- `dig-now`: handle fortification carving
- `EventManager`: add new event type ``JOB_STARTED``, triggered when a job first gains a worker
- `EventManager`: add new event type ``UNIT_NEW_ACTIVE``, triggered when a new unit appears on the active list
- `gui/create-item`: Added "(chain)" annotation text for armours with the [CHAIN_METAL_TEXT] flag set
- `manipulator`: tweak colors to make the cursor easier to locate
- `stocks`: allow search terms to match the full item label, even when the label is truncated for length
- `tweak`: ``stable-cursor`` now keeps the cursor stable even when the viewport moves a small amount
2022-03-09 14:46:00 -07:00
## Documentation
- add more examples to the plugin example skeleton files so they are more informative for a newbie
- `confirm`: correct the command name in the plugin help text
2022-05-02 00:07:52 -06:00
- `cxxrandom`: added usage examples
2022-05-05 23:57:04 -06:00
- ``Lua API.rst``: added ``isHidden(unit)``, ``isFortControlled(unit)``, ``getOuterContainerRef(unit)``, ``getOuterContainerRef(item)``
- `lua-string`: document DFHack string extensions (``startswith()``, ``endswith()``, ``split()``, ``trim()``, ``wrap()``, and ``escape_pattern()``)
- `quickfort-blueprint-guide`: added screenshots to the Dreamfort case study and overall clarified text
- `remote-client-libs`: add new Rust client library
- update download link and installation instructions for Visual C++ 2015 build tools on Windows
- update information regarding obtaining a compatible Windows build environment
2022-03-09 14:46:00 -07:00
## API
- add functions reverse-engineered from ambushing unit code: ``Units::isHidden()``, ``Units::isFortControlled()``, ``Units::getOuterContainerRef()``, ``Items::getOuterContainerRef()``
- ``Job::removeJob()``: use the job cancel vmethod graciously provided by The Toady One in place of a synthetic method derived from reverse engineering
2022-03-09 14:46:00 -07:00
## Lua
- `custom-raw-tokens`: library for accessing tokens added to raws by mods
- ``dfhack.units``: Lua wrappers for functions reverse-engineered from ambushing unit code: ``isHidden(unit)``, ``isFortControlled(unit)``, ``getOuterContainerRef(unit)``, ``getOuterContainerRef(item)``
2022-05-02 00:07:52 -06:00
- ``dialogs``: ``show*`` functions now return a reference to the created dialog
- ``dwarfmode.enterSidebarMode()``: passing ``df.ui_sidebar_mode.DesignateMine`` now always results in you entering ``DesignateMine`` mode and not ``DesignateChopTrees``, even when you looking at the surface (where the default designation mode is ``DesignateChopTrees``)
- ``dwarfmode.MenuOverlay``: if ``sidebar_mode`` attribute is set, automatically manage entering a specific sidebar mode on show and restoring the previous sidebar mode on dismiss
- ``dwarfmode.MenuOverlay``: new class function ``renderMapOverlay`` to assist with painting tiles over the visible map
2022-05-02 00:07:52 -06:00
- ``ensure_key``: new global function for retrieving or dynamically creating Lua table mappings
- ``safe_index``: now properly handles lua sparse tables that are indexed by numbers
- ``string``: new function ``escape_pattern()`` escapes regex special characters within a string
- ``widgets``: unset values in ``frame_inset`` table default to ``0``
- ``widgets``: ``FilteredList`` class now allows all punctuation to be typed into the filter and can match search keys that start with punctuation
- ``widgets``: minimum height of ``ListBox`` dialog is now calculated correctly when there are no items in the list (e.g. when a filter doesn't match anything)
- ``widgets``: if ``autoarrange_subviews`` is set, ``Panel``\s will now automatically lay out widgets vertically according to their current height. This allows you to have widgets dynamically change height or become visible/hidden and you don't have to worry about recalculating frame layouts
- ``widgets``: new class ``ResizingPanel`` (subclass of ``Panel``) automatically recalculates its own frame height based on the size, position, and visibility of its subviews
- ``widgets``: new class ``HotkeyLabel`` (subclass of ``Label``) that displays and reacts to hotkeys
- ``widgets``: new class ``CycleHotkeyLabel`` (subclass of ``Label``) allows users to cycle through a list of options by pressing a hotkey
- ``widgets``: new class ``ToggleHotkeyLabel`` (subclass of ``CycleHotkeyLabel``) toggles between ``On`` and ``Off`` states
- ``widgets``: new class ``WrappedLabel`` (subclass of ``Label``) provides autowrapping of text
- ``widgets``: new class ``TooltipLabel`` (subclass of ``WrappedLabel``) provides tooltip-like behavior
2022-03-09 14:46:00 -07:00
# 0.47.05-r4
## Fixes
2021-09-09 01:26:31 -06:00
- `blueprint`: fixed passing incorrect parameters to `gui/blueprint` when you run ``blueprint gui`` with optional params
- `blueprint`: key sequences for constructed walls and down stairs are now correct
- `tailor`: fixed some inconsistencies (and possible crashes) when parsing certain subcommands, e.g. ``tailor help``
2022-03-03 15:01:08 -07:00
- `tiletypes-here`, `tiletypes-here-point`: fix crash when running from an unsuspended core context
2021-09-08 08:02:44 -06:00
## Misc Improvements
2021-09-22 14:33:29 -06:00
- Core: DFHack now prints the name of the init script it is running to the console and stderr
2021-09-08 08:02:44 -06:00
- `automaterial`: ensure construction tiles are laid down in order when using `buildingplan` to plan the constructions
2021-09-09 01:45:20 -06:00
- `blueprint`: all blueprint phases are now written to a single file, using `quickfort` multi-blueprint file syntax. to get the old behavior of each phase in its own file, pass the ``--splitby=phase`` parameter to ``blueprint``
2021-09-20 14:08:32 -06:00
- `blueprint`: you can now specify the position where the cursor should be when the blueprint is played back with `quickfort` by passing the ``--playback-start`` parameter
2021-09-09 11:10:51 -06:00
- `blueprint`: generated blueprints now have labels so `quickfort` can address them by name
- `blueprint`: all building types are now supported
2021-10-03 08:37:58 -06:00
- `blueprint`: multi-type stockpiles are now supported
- `blueprint`: non-rectangular stockpiles and buildings are now supported
2021-10-02 13:54:15 -06:00
- `blueprint`: blueprints are no longer generated for phases that have nothing to do (unless those phases are explicitly enabled on the commandline or gui)
2021-10-04 12:16:45 -06:00
- `blueprint`: new "track" phase that discovers and records carved tracks
2021-10-04 15:47:34 -06:00
- `blueprint`: new "zone" phase that discovers and records activity zones, including custom configuration for ponds, gathering, and hospitals
- `dig-now`: no longer leaves behind a designated tile when a tile was designated beneath a tile designated for channeling
2021-09-07 23:05:38 -06:00
- `orders`: added ``list`` subcommand to show existing exported orders
2021-09-21 01:27:24 -06:00
- `quickfort`, `dfhack-examples-guide`: Dreamfort blueprint set improvements based on playtesting and feedback. includes updated profession definitions.
2022-02-26 15:39:56 -07:00
- `quickfort-library-guide`: added light aquifer tap and pump stack blueprints (with step-by-step usage guides) to the quickfort blueprint library
2022-02-26 18:21:56 -07:00
- `quickfort`: Dreamfort blueprint set improvements: added iron and flux stock level indicators on the industry level and a prisoner processing quantum stockpile in the surface barracks. also added help text for how to manage sieges and how to manage prisoners after a siege.
2021-09-08 08:02:44 -06:00
2021-10-07 23:30:23 -06:00
## API
- ``Buildings::findCivzonesAt()``: lookups now complete in constant time instead of linearly scanning through all civzones in the game
2021-09-25 13:24:52 -06:00
## Lua
- ``argparse.processArgsGetopt()``: you can now have long form parameters that are not an alias for a short form parameter. For example, you can now have a parameter like ``--longparam`` without needing to have an equivalent one-letter ``-l`` param.
2021-10-01 23:00:21 -06:00
- ``dwarfmode.enterSidebarMode()``: ``df.ui_sidebar_mode.DesignateMine`` is now a suported target sidebar mode
2021-09-25 13:24:52 -06:00
2021-09-04 22:15:42 -06:00
## Removed
2022-02-25 13:08:13 -07:00
- `fortplan`: please use `quickfort` instead
2021-09-04 22:10:10 -06:00
2021-09-04 12:00:31 -06:00
# 0.47.05-r3
2021-06-06 10:15:04 -06:00
## New Plugins
- `dig-now`: instantly completes dig designations (including smoothing and carving tracks)
2021-08-06 08:10:22 -06:00
## Fixes
- Core: ``alt`` keydown state is now cleared when DF loses and regains focus, ensuring the ``alt`` modifier state is not stuck on for systems that don't send standard keyup events in response to ``alt-tab`` window manager events
2021-08-11 09:21:41 -06:00
- Lua: ``memscan.field_offset()``: fixed an issue causing `devel/export-dt-ini` to crash sometimes, especially on Windows
2021-08-11 12:04:55 -06:00
- `autofarm`: autofarm will now count plant growths as well as plants toward its thresholds
2021-08-11 12:01:52 -06:00
- `autogems`: no longer assigns gem cutting jobs to workshops with gem cutting prohibited in the workshop profile
2021-08-06 08:10:22 -06:00
2021-07-09 23:01:47 -06:00
## Misc Improvements
2021-07-11 14:22:33 -06:00
- `buildingplan`: now displays which items are attached and which items are still missing for planned buildings
2021-07-20 19:06:41 -06:00
- `orders`: support importing and exporting reaction-specific item conditions, like "lye-containing" for soap production orders
2021-09-01 14:04:13 -06:00
- `orders`: new ``sort`` command. sorts orders according to their repeat frequency. this prevents daily orders from blocking other orders for simlar items from ever getting completed.
2021-08-30 22:28:04 -06:00
- `tiletypes-here`, `tiletypes-here-point`: add ``--cursor`` and ``--quiet`` options to support non-interactive use cases
2021-08-17 00:25:04 -06:00
- `quickfort`: Dreamfort blueprint set improvements: extensive revision based on playtesting and feedback. includes updated ``onMapLoad_dreamfort.init`` settings file, enhanced automation orders, and premade profession definitions. see full changelog at https://github.com/DFHack/dfhack/pull/1921 and https://github.com/DFHack/dfhack/pull/1925
2021-08-11 12:03:28 -06:00
- `tailor`: allow user to specify which materials to be used, and in what order
2021-07-09 23:01:47 -06:00
2021-08-19 18:44:06 -06:00
## API
- The ``Items`` module ``moveTo*`` and ``remove`` functions now handle projectiles
2021-08-14 18:00:25 -06:00
## Lua
- new global function: ``safe_pairs(iterable[, iterator_fn])`` will iterate over the ``iterable`` (a table or iterable userdata) with the ``iterator_fn`` (``pairs`` if not otherwise specified) if iteration is possible. If iteration is not possible or would throw an error, for example if ``nil`` is passed as the ``iterable``, the iteration is just silently skipped.
2021-07-11 14:39:20 -06:00
## Documentation
- `quickfort-library-guide`: updated dreamfort documentation and added screenshots
2021-08-17 00:25:04 -06:00
- `dfhack-examples-guide`: documentation for all of `dreamfort`'s supporting files (useful for all forts, not just Dreamfort!)
2021-07-11 14:39:20 -06:00
2021-07-09 19:21:36 -06:00
# 0.47.05-r2
## Fixes
2021-07-05 13:42:19 -06:00
- Fixed an issue where scrollable text in Lua-based screens could prevent other widgets from scrolling
- Fixed an issue preventing some external scripts from creating zones and other abstract buildings (see note about room definitions under "Internals")
- `buildingplan`: fixed an issue where planned constructions designated with DF's sizing keys (``umkh``) would sometimes be larger than requested
2021-05-09 22:15:41 -06:00
- `buildingplan`: fixed an issue preventing other plugins like `automaterial` from planning constructions if the "enable all" buildingplan setting was turned on
2021-07-09 19:21:36 -06:00
- `buildingplan`: made navigation keys work properly in the materials selection screen when alternate keybindings are used
- `command-prompt`: fixed issues where overlays created by running certain commands (e.g. `gui/liquids`, `gui/teleport`) would not update the parent screen correctly
2021-05-09 22:27:21 -06:00
- `dwarfvet`: fixed a crash that could occur with hospitals overlapping with other buildings in certain ways
2021-07-09 19:21:36 -06:00
- `orders`: fixed crash when importing orders with malformed IDs
- ``quickfortress.csv`` blueprint: fixed refuse stockpile config and prevented stockpiles from covering stairways
- `stonesense`: fixed a crash that could occur when ctrl+scrolling or closing the Stonesense window
2021-07-04 19:21:17 -06:00
- `embark-assistant`: fixed faulty early exit in first search attempt when searching for waterfalls
## Misc Improvements
2021-07-09 19:21:36 -06:00
- Added adjectives to item selection dialogs, used in tools like `gui/create-item` - this makes it possible to differentiate between different types of high/low boots, shields, etc. (some of which are procedurally generated)
- `blueprint`: made ``depth`` and ``name`` parameters optional. ``depth`` now defaults to ``1`` (current level only) and ``name`` defaults to "blueprint"
- `blueprint`: ``depth`` can now be negative, which will result in the blueprints being written from the highest z-level to the lowest. Before, blueprints were always written from the lowest z-level to the highest.
- `blueprint`: added the ``--cursor`` option to set the starting coordinate for the generated blueprints. A game cursor is no longer necessary if this option is used.
2021-05-31 09:34:59 -06:00
- `quickfort`: the Dreamfort blueprint set can now be comfortably built in a 1x1 embark
- `stonesense`: sped up startup time
- `tweak` hide-priority: changed so that priorities stay hidden (or visible) when exiting and re-entering the designations menu
- `embark-assistant`: slightly improved performance of surveying and improved code a little
2021-03-08 16:06:27 -07:00
## Lua
2021-07-09 19:21:36 -06:00
- new string utility functions:
- ``string:wrap(width)`` wraps a string at space-separated word boundaries
- ``string:trim()`` removes whitespace characters from the beginning and end of the string
- ``string:split(delimiter, plain)`` splits a string with the given delimiter and returns a table of substrings. if ``plain`` is specified and set to ``true``, ``delimiter`` is interpreted as a literal string instead of as a pattern (the default)
2021-07-03 00:26:43 -06:00
- new library: ``argparse`` is a collection of commandline argument processing functions
- ``gui.Painter``: fixed error when calling ``viewport()`` method
2021-06-23 13:32:25 -06:00
- ``gui.dwarfmode``: new function: ``enterSidebarMode(sidebar_mode, max_esc)`` which uses keypresses to get into the specified sidebar mode from whatever the current screen is
2021-06-02 15:52:33 -06:00
- `reveal`: now exposes ``unhideFlood(pos)`` functionality to Lua
2021-06-29 13:25:21 -06:00
- new utility function: ``utils.normalizePath()``: normalizes directory slashes across platoforms to ``/`` and coaleses adjacent directory separators
2021-07-09 19:21:36 -06:00
- ``argparse.processArgsGetopt()`` (previously ``utils.processArgsGetopt()``):
- now returns negative numbers (e.g. ``-10``) in the list of positional parameters instead of treating it as an option string equivalent to ``-1 -0``
- now properly handles ``--`` like GNU ``getopt`` as a marker to treat all further parameters as non-options
- now detects when required arguments to long-form options are missing
- `xlsxreader`: added Lua class wrappers for the xlsxreader plugin API
2021-06-18 16:22:53 -06:00
## API
- Added ``dfhack.units.teleport(unit, pos)``
- Added ``dfhack.maps.getPlantAtTile(x, y, z)`` and ``dfhack.maps.getPlantAtTile(pos)``, and updated ``dfhack.gui.getSelectedPlant()`` to use it
2021-03-08 16:06:27 -07:00
## Documentation
- Added more client library implementations to the `remote interface docs <remote-client-libs>`
2021-03-07 09:51:33 -07:00
## Internals
- The DFHack test harness is now much easier to use for iterative development. Configuration can now be specified on the commandline, there are more test filter options, and the test harness can now easily rerun tests that have been run before.
- The ``test/main`` command to invoke the test harness has been renamed to just ``test``
2021-07-09 19:21:36 -06:00
- Unit tests must now match any output expected to be printed via ``dfhack.printerr()``
- Unit tests now support fortress mode (allowing tests that require a fortress map to be loaded) - note that these tests are skipped by continuous integration for now, pending a suitable test fortress
2021-06-23 15:55:42 -06:00
- Unit tests can now use ``delay_until(predicate_fn, timeout_frames)`` to delay until a condition is met
2021-06-07 08:04:23 -06:00
- Room definitions and extents are now created for abstract buildings so callers don't have to initialize the room structure themselves
2021-03-07 09:51:33 -07:00
# 0.47.05-r1
## Fixes
- `confirm`: stopped exposing alternate names when convicting units
- `prospector`: improved pre embark rough estimates, particularly for small clusters
2021-01-31 09:38:50 -07:00
## Misc Improvements
- `autohauler`: allowed the ``Alchemist`` labor to be enabled in `manipulator` and other labor screens so it can be used for its intended purpose of flagging that no hauling labors should be assigned to a dwarf. Before, the only way to set the flag was to use an external program like Dwarf Therapist.
2021-02-09 00:48:43 -07:00
- `embark-assistant`: slightly improved performance of surveying
2021-01-31 09:38:50 -07:00
- `quickfort`: Dreamfort blueprint set improvements: `significant <http://www.bay12forums.com/smf/index.php?topic=176889.msg8239017#msg8239017>`_ refinements across the entire blueprint set. Dreamfort is now much faster, much more efficient, and much easier to use. The `checklist <https://docs.google.com/spreadsheets/d/13PVZ2h3Mm3x_G1OXQvwKd7oIR2lK4A1Ahf6Om1kFigw/edit#gid=1459509569>`__ now includes a mini-walkthrough for quick reference. The spreadsheet now also includes `embark profile suggestions <https://docs.google.com/spreadsheets/d/13PVZ2h3Mm3x_G1OXQvwKd7oIR2lK4A1Ahf6Om1kFigw/edit#gid=149144025>`__
- `quickfort`: added aliases for configuring masterwork and artifact core quality for all stockpile categories that have them; made it possible to take from multiple stockpiles in the ``quantumstop`` alias
2021-02-13 12:07:14 -07:00
## Documentation
- `fortplan`: added deprecation warnings - fortplan has been replaced by `quickfort`
2021-02-13 12:07:14 -07:00
2021-02-10 19:08:45 -07:00
# 0.47.05-beta1
## Fixes
- `embark-assistant`: fixed bug in soil depth determination for ocean tiles
2021-02-02 11:50:21 -07:00
- `orders`: don't crash when importing orders with malformed JSON
2021-01-31 09:38:50 -07:00
2021-01-30 19:23:44 -07:00
# 0.47.04-r5
## Fixes
- `embark-assistant`: fixed order of factors when calculating min temperature
2021-01-21 21:55:01 -07:00
- `embark-assistant`: improved performance of surveying
2021-01-30 19:23:44 -07:00
- `quickfort`: fixed eventual crashes when creating zones
- `quickfort`: fixed library aliases for tallow and iron, copper, and steel weapons
- `seedwatch`: fixed an issue where the plugin would disable itself on map load
2020-12-30 13:08:20 -07:00
- `search`: fixed crash when searching the ``k`` sidebar and navigating to another tile with certain keys, like ``<`` or ``>``
- `stockflow`: fixed ``j`` character being intercepted when naming stockpiles
- `stockpiles`: no longer outputs hotkey help text beneath `stockflow` hotkey help text
2021-01-11 15:37:57 -07:00
## Misc Improvements
- Lua label widgets (used in all standard message boxes) are now scrollable with Up/Down/PgUp/PgDn keys
- `autofarm`: now fallows farms if all plants have reached the desired count
2021-01-30 19:23:44 -07:00
- `buildingplan`: added ability to set global settings from the console, e.g. ``buildingplan set boulders false``
- `buildingplan`: added "enable all" option for buildingplan (so you don't have to enable all building types individually). This setting is not persisted (just like quickfort_mode is not persisted), but it can be set from onMapLoad.init
- `buildingplan`: modified ``Planning Mode`` status in the UI to show whether the plugin is in quickfort mode, "enable all" mode, or whether just the building type is enabled.
2021-01-31 09:38:50 -07:00
- `quickfort`: Dreamfort blueprint set improvements: added a streamlined checklist for all required dreamfort commands and gave names to stockpiles, levers, bridges, and zones
- `quickfort`: added aliases for bronze weapons and armor
- `quickfort`: added alias for tradeable crafts
2021-01-11 16:14:24 -07:00
## Lua
2021-01-29 18:32:33 -07:00
- ``dfhack.run_command()``: changed to interface directly with the console when possible, which allows interactive commands and commands that detect the console encoding to work properly
- ``processArgsGetopt()`` added to utils.lua, providing a callback interface for parameter parsing and getopt-like flexibility for parameter ordering and combination (see docs in ``library/lua/utils.lua`` and ``library/lua/3rdparty/alt_getopt.lua`` for details).
2021-01-10 18:10:44 -07:00
2021-01-29 18:32:33 -07:00
## Documentation
- Added documentation for Lua's ``dfhack.run_command()`` and variants
# 0.47.04-r4
## Fixes
2020-11-12 19:07:14 -07:00
- Fixed an issue on some Linux systems where DFHack installed through a package manager would attempt to write files to a non-writable folder (notably when running `exportlegends` or `gui/autogems`)
- `buildingplan`: fixed an issue preventing artifacts from being matched when the maximum item quality is set to ``artifacts``
- `buildingplan`: stopped erroneously matching items to buildings while the game is paused
2020-11-17 18:48:19 -07:00
- `buildingplan`: fixed a crash when pressing 0 while having a noble room selected
2020-11-17 21:42:59 -07:00
- `dwarfvet`: fixed a crash that could occur when discharging patients
- `dwarfmonitor`: fixed a crash when opening the ``prefs`` screen if units have vague preferences
- `embark-assistant`: fixed an issue causing incursion resource matching (e.g. sand/clay) to skip some tiles if those resources were provided only through incursions
- `embark-assistant`: corrected river size determination by performing it at the MLT level rather than the world tile level
- `search`: fixed an issue where search options might not display if screens were destroyed and recreated programmatically (e.g. with `quickfort`)
2020-12-13 22:16:28 -07:00
- `workflow`: fixed an error when creating constraints on "mill plants" jobs and some other plant-related jobs
- `zone`: fixed an issue causing the ``enumnick`` subcommand to run when attempting to run ``assign``, ``unassign``, or ``slaughter``
## Misc Improvements
- `buildingplan`: added support for all buildings, furniture, and constructions (except for instruments)
- `buildingplan`: added support for respecting building job_item filters when matching items, so you can set your own programmatic filters for buildings before submitting them to buildingplan
- `buildingplan`: changed default filter setting for max quality from ``artifact`` to ``masterwork``
- `buildingplan`: changed min quality adjustment hotkeys from 'qw' to 'QW' to avoid conflict with existing hotkeys for setting roller speed - also changed max quality adjustment hotkeys from 'QW' to 'AS' to make room for the min quality hotkey changes
- `buildingplan`: added a new global settings page accessible via the ``G`` hotkey when on any building build screen; ``Quickfort Mode`` toggle for legacy Python Quickfort has been moved to this page
- `buildingplan`: added new global settings for whether generic building materials should match blocks, boulders, logs, and/or bars - defaults are everything but bars
- `embark-assistant`: split the lair types displayed on the local map into mound, burrow, and lair
- `probe`: added more output for designations and tile occupancy
- `quickfort`: The Dreamfort sample blueprints now have complete walkthroughs for each fort level and importable orders that automate basic fort stock management
- `quickfort`: added more blueprints to the blueprints library: several bedroom layouts, the Saracen Crypts, and the complete fortress example from Python Quickfort: TheQuickFortress
2020-12-09 10:39:41 -07:00
## Documentation
- `quickfort-alias-guide`: alias syntax and alias standard library documentation for `quickfort` blueprints
2020-12-17 11:08:01 -07:00
- `quickfort-library-guide`: overview of the quickfort blueprint library
2020-12-09 10:39:41 -07:00
## API
- `buildingplan`: added Lua interface API
- ``dfhack.job.isSuitableMaterial()``: added an item type parameter so the ``non_economic`` flag can be properly handled (it was being matched for all item types instead of just boulders)
- ``Buildings::setSize()``: changed to reuse existing extents when possible
## Lua
- ``utils.addressof()``: fixed for raw userdata
# 0.47.04-r3
2020-09-29 18:08:35 -06:00
## New Plugins
- `xlsxreader`: provides an API for Lua scripts to read Excel spreadsheets
## Fixes
2020-09-29 18:08:35 -06:00
- `buildingplan`: fixed handling of buildings that require buckets
- `getplants`: fixed a crash that could occur on some maps
2020-08-28 16:44:16 -06:00
- `search`: fixed an issue causing item counts on the trade screen to display inconsistently when searching
- `stockpiles`: fixed a crash when loading food stockpiles
- `stockpiles`: fixed an error when saving furniture stockpiles
2020-08-23 11:38:27 -06:00
## Misc Improvements
2020-10-09 10:37:58 -06:00
- `createitem`: added support for plant growths (fruit, berries, leaves, etc.)
2020-09-19 18:33:47 -06:00
- `createitem`: added an ``inspect`` subcommand to print the item and material tokens of existing items, which can be used to create additional matching items
- `embark-assistant`: added support for searching for taller waterfalls (up to 50 z-levels tall)
- `search`: added support for searching for names containing non-ASCII characters using their ASCII equivalents
- `stocks`: added support for searching for items containing non-ASCII characters using their ASCII equivalents
2020-10-09 19:43:58 -06:00
- `zone`: added an ``enumnick`` subcommand to assign enumerated nicknames (e.g "Hen 1", "Hen 2"...)
- `zone`: added slaughter indication to ``uinfo`` output
2020-08-23 11:38:27 -06:00
## Documentation
- Fixed syntax highlighting of most code blocks to use the appropriate language (or no language) instead of Python
## API
- Added ``DFHack::to_search_normalized()`` (Lua: ``dfhack.toSearchNormalized()``) to convert non-ASCII alphabetic characters to their ASCII equivalents
2020-08-08 12:53:24 -06:00
# 0.47.04-r2
2020-06-02 09:56:42 -06:00
## New Tweaks
- `tweak` do-job-now: adds a job priority toggle to the jobs list
2020-06-02 09:56:42 -06:00
- `tweak` reaction-gloves: adds an option to make reactions produce gloves in sets with correct handedness
2020-05-03 20:54:43 -06:00
## Fixes
- Fixed a segfault when attempting to start a headless session with a graphical PRINT_MODE setting
2020-07-13 17:57:14 -06:00
- Fixed an issue with the macOS launcher failing to un-quarantine some files
- Linux: fixed ``dfhack.getDFPath()`` (Lua) and ``Process::getPath()`` (C++) to always return the DF root path, even if the working directory has changed
- `getplants`: fixed issues causing plants to be collected even if they have no growths (or unripe growths)
2020-05-03 20:54:43 -06:00
- `labormanager`: fixed handling of new jobs in 0.47
2020-08-08 12:47:59 -06:00
- `labormanager`: fixed an issue preventing custom furnaces from being built
2020-05-05 02:21:56 -06:00
- `embark-assistant`: fixed a couple of incursion handling bugs.
- Fixed ``Units::isEggLayer``, ``Units::isGrazer``, ``Units::isMilkable``, ``Units::isTrainableHunting``, ``Units::isTrainableWar``, and ``Units::isTamable`` ignoring the unit's caste
2020-07-13 18:05:08 -06:00
- `RemoteFortressReader`: fixed a couple crashes that could result from decoding invalid enum items (``site_realization_building_type`` and ``improvement_type``)
2020-08-08 11:28:31 -06:00
- `RemoteFortressReader`: fixed an issue that could cause block coordinates to be incorrect
- `rendermax`: fixed a hang that could occur when enabling some renderers, notably on Linux
- `stonesense`: fixed a crash when launching Stonesense
- `stonesense`: fixed some issues that could cause the splash screen to hang
2020-05-03 20:54:43 -06:00
## Misc Improvements
- Linux/macOS: Added console keybindings for deleting words (Alt+Backspace and Alt+d in most terminals)
- `blueprint`: now writes blueprints to the ``blueprints/`` subfolder instead of the df root folder
- `blueprint`: now automatically creates folder trees when organizing blueprints into subfolders (e.g. ``blueprint 30 30 1 rooms/dining dig`` will create the file ``blueprints/rooms/dining-dig.csv``); previously it would fail if the ``blueprints/rooms/`` directory didn't already exist
- `confirm`: added a confirmation dialog for convicting dwarves of crimes
2020-08-08 11:28:31 -06:00
- `manipulator`: added a new column option to display units' goals
2020-07-17 15:35:09 -06:00
## API
2020-07-23 22:55:05 -06:00
- Added ``Filesystem::mkdir_recursive``
2020-07-19 18:29:56 -06:00
- Extended ``Filesystem::listdir_recursive`` to optionally make returned filenames relative to the start directory
2020-08-07 22:06:59 -06:00
- ``Units``: added goal-related functions: ``getGoalType()``, ``getGoalName()``, ``isGoalAchieved()``
2020-07-17 15:35:09 -06:00
## Internals
- Added support for splitting scripts into multiple files in the ``scripts/internal`` folder without polluting the output of `ls`
2020-07-14 22:05:36 -06:00
## Lua
- Added a ``ref_target`` field to primitive field references, corresponding to the ``ref-target`` XML attribute
- Made ``dfhack.units.getRaceNameById()``, ``dfhack.units.getRaceBabyNameById()``, and ``dfhack.units.getRaceChildNameById()`` available to Lua
2020-07-14 22:05:36 -06:00
2020-05-03 20:54:43 -06:00
## Ruby
- Updated ``item_find`` and ``building_find`` to use centralized logic that works on more screens
2020-08-08 11:28:31 -06:00
## Documentation
- Expanded the installation guide
- Added some new dev-facing pages, including dedicated pages about the remote API, memory research, and documentation
- Made a couple theme adjustments
# 0.47.04-r1
2020-04-04 16:56:44 -06:00
## Fixes
2020-04-14 23:09:16 -06:00
- Fixed translation of certain types of in-game names
2020-04-25 19:03:32 -06:00
- Fixed a crash in ``find()`` for some types when no world is loaded
2020-04-12 03:03:28 -06:00
- `autogems`: fixed an issue with binned gems being ignored in linked stockpiles
- `stocks`: fixed display of book titles
2020-04-04 16:56:44 -06:00
- `tweak` embark-profile-name: fixed handling of the native shift+space key
2020-04-10 21:29:00 -06:00
## Misc Improvements
2020-04-15 15:33:58 -06:00
- ``dfhack.init-example``: enabled `autodump`
- `getplants`: added switches for designations for farming seeds and for max number designated per plant
2020-04-11 09:26:09 -06:00
- `manipulator`: added intrigue to displayed skills
2020-04-10 21:29:00 -06:00
- `search`: added support for the fortress mode justice screen
## API
- Added ``Items::getBookTitle`` to get titles of books. Catches titles buried in improvements, unlike getDescription.
## Lua
- ``pairs()`` now returns available class methods for DF types
# 0.47.04-beta1
## Fixes
- Fixed a crash when starting DFHack in headless mode with no terminal
## Misc Improvements
- Added "bit" suffix to downloads (e.g. 64-bit)
- Tests:
- moved from DF folder to hack/scripts folder, and disabled installation by default
- made test runner script more flexible
- `dfhack-run`: added color output support
- `embark-assistant`:
- updated embark aquifer info to show all aquifer kinds present
- added neighbor display, including kobolds (SKULKING) and necro tower count
- updated aquifer search criteria to handle the new variation
- added search criteria for embark initial tree cover
- added search criteria for necro tower count, neighbor civ count, and specific neighbors. Should handle additional entities, but not tested
## Internals
- Improved support for tagged unions, allowing tools to access union fields more safely
- Added separate changelogs in the scripts and df-structures repos
- Moved ``reversing`` scripts to df_misc repo
# 0.47.03-beta1
## New Scripts
- `devel/sc`: checks size of structures
- `devel/visualize-structure`: displays the raw memory of a structure
## Fixes
- @ `adv-max-skills`: fixed for 0.47
- `deep-embark`:
- prevented running in non-fortress modes
- ensured that only the newest wagon is deconstructed
- `full-heal`:
- fixed issues with removing corpses
- fixed resurrection for non-historical figures
- @ `modtools/create-unit`: added handling for arena tame setting
- `teleport`: fixed setting new tile occupancy
## Misc Improvements
- `deep-embark`:
- improved support for using directly from the DFHack console
- added a ``-clear`` option to cancel
- `exportlegends`:
- added identity information
- added creature raw names and flags
- `gui/prerelease-warning`: updated links and information about nightly builds
- `modtools/syndrome-trigger`: enabled simultaneous use of ``-synclass`` and ``-syndrome``
- `repeat`: added ``-list`` option
## Structures
- Dropped support for 0.44.12-0.47.02
- ``abstract_building_type``: added types (and subclasses) new to 0.47
- ``agreement_details_type``: added enum
- ``agreement_details``: added struct type (and many associated data types)
- ``agreement_party``: added struct type
- ``announcement_type``: added types new to 0.47
- ``artifact_claim_type``: added enum
- ``artifact_claim``: added struct type
- ``breath_attack_type``: added ``SHARP_ROCK``
- ``building_offering_placest``: new class
- ``building_type``: added ``OfferingPlace``
- ``creature_interaction_effect``: added subclasses new to 0.47
- ``creature_raw_flags``: identified several more items
- ``creature_raw_flags``: renamed many items to match DF names
- ``caste_raw_flags``: renamed many items to match DF names
- ``d_init``: added settings new to 0.47
- ``entity_name_type``: added ``MERCHANT_COMPANY``, ``CRAFT_GUILD``
- ``entity_position_responsibility``: added values new to 0.47
- ``fortress_type``: added enum
- ``general_ref_type``: added ``UNIT_INTERROGATEE``
- ``ghost_type``: added ``None`` value
- ``goal_type``: added goals types new to 0.47
- ``histfig_site_link``: added subclasses new to 0.47
- ``history_event_collection``: added subtypes new to 0.47
- ``history_event_context``: added lots of new fields
- ``history_event_reason``: added captions for all items
- ``history_event_reason``: added items new to 0.47
- ``history_event_type``: added types for events new to 0.47, as well as corresponding ``history_event`` subclasses (too many to list here)
- ``honors_type``: added struct type
- ``interaction_effect``: added subtypes new to 0.47
- ``interaction_source_experimentst``: added class type
- ``interaction_source_usage_hint``: added values new to 0.47
- ``interface_key``: added items for keys new to 0.47
- ``job_skill``: added ``INTRIGUE``, ``RIDING``
- ``lair_type``: added enum
- ``monument_type``: added enum
- ``next_global_id``: added enum
- ``poetic_form_action``: added ``Beseech``
- ``setup_character_info``: expanded significantly in 0.47
- ``text_system``: added layout for struct
- ``tile_occupancy``: added ``varied_heavy_aquifer``
- ``tool_uses``: added items: ``PLACE_OFFERING``, ``DIVINATION``, ``GAMES_OF_CHANCE``
- ``viewscreen_counterintelligencest``: new class (only layout identified so far)
2020-01-18 22:05:43 -07:00
# 0.44.12-r3
2018-04-03 09:31:14 -06:00
2020-01-18 22:04:40 -07:00
## 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
- `assign-attributes`: changes the attributes of a unit
- `assign-beliefs`: changes the beliefs of a unit
- `assign-facets`: changes the facets (traits) of a unit
- `assign-goals`: changes the goals of a unit
- `assign-preferences`: changes the preferences of a unit
- `assign-profile`: sets a dwarf's characteristics according to a predefined profile
- `assign-skills`: changes the skills of a unit
- `combat-harden`: sets a unit's combat-hardened value to a given percent
- `deep-embark`: allows embarking underground
- `devel/find-twbt`: finds a TWBT-related offset needed by the new `map-render` plugin
- `dwarf-op`: optimizes dwarves for fort-mode work; makes managing labors easier
- `forget-dead-body`: removes emotions associated with seeing a dead body
- `gui/create-tree`: creates a tree at the selected tile
- `linger`: takes over your killer in adventure mode
- `modtools/create-tree`: creates a tree
- `modtools/pref-edit`: add, remove, or edit the preferences of a unit
- `modtools/set-belief`: changes the beliefs (values) of units
- `modtools/set-need`: sets and edits unit needs
- `modtools/set-personality`: changes the personality of units
- `modtools/spawn-liquid`: spawns water or lava at the specified coordinates
- `set-orientation`: edits a unit's orientation
- `unretire-anyone`: turns any historical figure into a playable adventurer
2019-06-06 13:18:54 -06:00
## Fixes
2020-01-18 22:04:40 -07:00
- 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`:
2020-01-18 22:04:40 -07:00
- 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
2020-01-18 22:04:40 -07:00
- `cxxrandom`: removed some extraneous debug information
- `digfort`: now accounts for z-level changes when calculating maximum y dimension
2019-06-20 07:48:51 -06:00
- `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).
2019-11-24 13:32:07 -07:00
- 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).
2020-01-18 22:04:40 -07:00
- `eventful`: fixed invalid building ID in some building events
- `exportlegends`: now escapes special characters in names properly
2020-01-18 22:04:40 -07:00
- `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``
2020-01-18 22:04:40 -07:00
- `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`)
2020-01-18 22:04:40 -07:00
- `title-folder`: silenced error when ``PRINT_MODE`` is set to ``TEXT``
2019-06-06 13:18:54 -06:00
2018-12-28 13:22:34 -07:00
## Misc Improvements
2020-01-18 22:04:40 -07:00
- 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
2020-01-18 22:04:40 -07:00
- `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
2020-01-18 22:04:40 -07:00
- `dwarfmonitor`: enabled widgets to access other scripts and plugins by switching to the core Lua context
- `embark-assistant`:
2020-01-18 22:04:40 -07:00
- 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
2020-01-18 22:04:40 -07:00
- `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
2020-01-18 22:04:40 -07:00
- added tree information
- added check for units' current jobs when calculating the direction they are facing
## API
- 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
2019-03-28 09:09:46 -06:00
## Internals
2020-01-18 22:04:40 -07:00
- 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
2020-01-18 22:04:40 -07:00
- Improved concurrency in event and server handlers
- `stonesense`: fixed some OpenGL build issues on Linux
2019-03-28 09:09:46 -06:00
2020-01-18 22:04:40 -07:00
## Lua
- Exposed ``gui.dwarfmode.get_movement_delta`` and ``gui.dwarfmode.get_hotkey_target``
- ``dfhack.run_command`` now returns the command's return code
## Ruby
- Made ``unit_ishostile`` consistently return a boolean
## Structures
- 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
# 0.44.12-r2
2018-12-20 19:29:48 -07:00
## New Plugins
- `debug`: manages runtime debug print category filtering
2018-12-20 19:29:48 -07:00
- `nestboxes`: automatically scan for and forbid fertile eggs incubating in a nestbox
## New Scripts
- `devel/query`: searches for field names in DF objects
- `extinguish`: puts out fires
- `tame`: sets tamed/trained status of animals
## Fixes
2018-07-20 21:16:50 -06:00
- `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
- `prospector`: (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``
2018-07-20 21:29:24 -06:00
## 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)
2018-07-20 21:29:24 -06:00
2018-07-14 19:09:36 -06:00
## Internals
2018-07-20 21:29:24 -06:00
- 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
2018-07-14 19:09:36 -06:00
- Core: various thread safety and memory management improvements
- Fixed CMake build dependencies for generated header files
2018-07-20 21:29:24 -06:00
- 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
2018-07-14 19:09:36 -06:00
## Lua
- ``utils``: new ``OrderedTable`` class
## Structures
- 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``
## API
- New debug features related to `debug` plugin:
- Classes (C++ only): ``Signal<Signature, type_tag>``, ``DebugCategory``, ``DebugManager``
- Macros: ``TRACE``, ``DEBUG``, ``INFO``, ``WARN``, ``ERR``, ``DBG_DECLARE``, ``DBG_EXTERN``
2018-07-13 19:16:35 -06:00
================================================================================
# 0.44.12-r1
## Fixes
2018-07-09 08:46:19 -06:00
-@ Console: fixed crash when entering long commands on Linux/macOS
2018-07-10 09:38:36 -06:00
-@ 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``)
2018-07-13 09:02:36 -06:00
- `die`: fixed Windows crash in exit handling
- `dwarfmonitor`, `manipulator`: fixed stress cutoffs
2018-07-13 09:02:36 -06:00
- `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()``)
2018-07-09 08:46:19 -06:00
- `startdwarf`: fixed on 64-bit Linux
## Misc Improvements
- Reduced time for designation jobs from tools like `digv` to be assigned workers
2018-07-13 09:20:16 -06:00
- `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.
2018-07-12 12:44:29 -06:00
- `rejuvenate`:
- Added ``-all`` argument to apply to all citizens
- Added ``-force`` to include units under 20 years old
- Clarified documentation
## API
- Added to ``Units`` module:
- ``getStressCategory(unit)``
- ``getStressCategoryRaw(level)``
- ``stress_cutoffs`` (Lua: ``getStressCutoffs()``)
2018-07-10 09:38:36 -06:00
## Internals
2018-07-13 09:04:33 -06:00
- Changed default build architecture to 64-bit
2018-07-10 09:38:36 -06:00
- 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 libgraphics.so
2018-07-10 09:38:36 -06:00
2018-07-09 08:46:19 -06:00
## Structures
- Added ``start_dwarf_count`` on 64-bit Linux again and fixed scanning script
2018-07-10 09:24:26 -06:00
- ``army_controller``: added new vector from 0.44.11
2018-07-09 08:46:19 -06:00
-@ ``viewscreen_civlistst``: split ``unk_20`` into 3 pointers
2018-07-13 19:16:35 -06:00
- ``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
2018-07-08 12:26:57 -06:00
================================================================================
# 0.44.12-alpha1
2018-07-07 22:19:58 -06:00
## Fixes
2018-07-08 12:26:57 -06:00
-@ macOS: fixed ``renderer`` vtable address on x64 (fixes `rendermax`)
2018-07-07 22:19:58 -06:00
- `stonesense`: fixed ``PLANT:DESERT_LIME:LEAF`` typo
## API
- Added C++-style linked list interface for DF linked lists
2018-07-08 12:26:57 -06:00
## Structures
- Dropped 0.44.11 support
- ``ui.squads``: Added fields new in 0.44.12
2018-07-07 19:42:01 -06:00
================================================================================
# 0.44.11-beta2.1
## Internals
-@ `stonesense`: fixed build
2018-07-07 17:45:21 -06:00
================================================================================
# 0.44.11-beta2
## Fixes
2018-07-07 19:42:01 -06:00
-@ 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
## API
- Added ``Screen::Hide`` to temporarily hide screens, like `command-prompt`
================================================================================
# 0.44.11-beta1
## Fixes
- Fixed displayed names (from ``Units::getVisibleName``) for units with identities
- Fixed potential memory leak in ``Screen::show()``
2018-06-29 07:26:16 -06:00
- `fix/dead-units`: fixed script trying to use missing isDiplomat function
2018-07-02 22:18:23 -06:00
## 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``
2018-07-06 09:07:46 -06:00
- Linux: added automatic support for GCC sanitizers in ``dfhack`` script
- `digfort`: added better map bounds checking
2018-07-02 22:18:23 -06:00
- `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
2018-07-02 22:18:23 -06:00
2018-06-29 07:26:16 -06:00
## API
- New functions:
- ``Units::isDiplomat(unit)``
- Exposed ``Screen::zoom()`` to C++ (was Lua-only)
## Lua
- 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
## Internals
- jsoncpp: updated to version 1.8.4 and switched to using a git submodule
2018-07-02 22:18:23 -06:00
## Structures
2018-07-06 12:22:46 -06:00
- ``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
2018-07-02 22:18:23 -06:00
- ``viewscreen_civlistst``: fixed layout and identified many fields
================================================================================
# 0.44.11-alpha1
## Structures
- 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``
================================================================================
2018-06-21 20:33:21 -06:00
# 0.44.10-r2
2018-06-20 09:17:05 -06:00
## New Plugins
- `cxxrandom`: exposes some features of the C++11 random number library to Lua
2018-06-21 20:33:21 -06:00
## 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
2018-06-14 08:38:01 -06:00
- Fixed many tools incorrectly using the ``dead`` unit flag (they should generally check ``flags2.killed`` instead)
2018-06-20 09:29:21 -06:00
- 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)
2018-06-21 20:33:21 -06:00
- 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)
2018-06-21 20:33:21 -06:00
- `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``)
- `revflood`: stopped revealing tiles adjacent to tiles above open space inappropriately
2018-06-21 20:33:21 -06:00
- `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
2018-05-29 20:18:57 -06:00
## 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
2018-06-13 14:15:57 -06:00
- Linux: Added several new options to ``dfhack`` script: ``--remotegdb``, ``--gdbserver``, ``--strace``
2018-06-21 20:33:21 -06:00
- `bodyswap`: improved error handling
2018-06-08 20:27:48 -06:00
- `buildingplan`: added max quality setting
2018-05-31 10:38:35 -06:00
- `caravan`: documented (new in 0.44.10-alpha1)
2018-06-21 20:33:21 -06:00
- `deathcause`: added "slaughtered" to descriptions
- `fix/retrieve-units`: now re-adds units to active list to counteract `fix/dead-units`
2022-08-25 22:53:35 -06:00
- ``item-descriptions``: fixed several grammatical errors
2018-06-21 20:33:21 -06:00
- `modtools/create-unit`:
- added quantity argument
- now selects a caste at random if none is specified
2018-05-29 20:18:57 -06:00
- `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
2018-06-12 14:38:53 -06:00
- `title-version`: added version to options screen too
2018-06-21 20:33:21 -06:00
- `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
2018-05-29 20:18:57 -06:00
## API
2018-06-14 08:38:01 -06:00
- New functions (also exposed to Lua):
- ``Units::isKilled()``
- ``Units::isActive()``
- ``Units::isGhost()``
- Removed Vermin module (unused and obsolete)
2018-06-06 09:29:37 -06:00
## Lua
- Added ``profiler`` module to measure lua performance
2018-06-08 20:06:20 -06:00
- Enabled shift+cursor movement in WorkshopOverlay-derived screens
2018-06-06 09:29:37 -06:00
## Structures
- ``unit_flags1``: renamed ``dead`` to ``inactive`` to better reflect its use
2018-06-21 20:33:21 -06:00
- ``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
2018-06-13 14:04:47 -06:00
## Internals
- Added fallback for YouCompleteMe database lookup failures (e.g. for newly-created files)
2018-06-14 12:14:41 -06:00
- jsoncpp: fixed constructor with ``long`` on Linux
2018-06-20 09:29:21 -06:00
- Improved efficiency and error handling in ``stl_vsprintf`` and related functions
2018-06-21 20:33:21 -06:00
- Added build option to generate symbols for large generated files containing df-structures metadata
2018-06-13 14:04:47 -06:00
================================================================================
2018-05-18 12:29:45 -06:00
# 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
2018-05-17 22:50:23 -06:00
- Lua: registered ``dfhack.constructions.designateRemove()`` correctly
- `prospector`: fixed crash due to invalid vein materials
2018-05-17 22:50:23 -06:00
- `tweak` max-wheelbarrow: fixed conflict with building renaming
2018-05-18 12:29:45 -06:00
- `view-item-info`: stopped appending extra newlines permanently to descriptions
## Misc Improvements
2018-05-18 12:29:45 -06:00
- Added logo to documentation
- Documented several missing ``dfhack.gui`` Lua functions
- `adv-rumors`: bound to Ctrl-A
2018-05-18 12:29:45 -06:00
- `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
2018-05-18 12:29:45 -06:00
- `modtools/create-unit`: made functions available to other scripts
2018-05-16 22:11:52 -06:00
- `search`:
- added support for stone restrictions screen (under ``z``: Status)
- added support for kitchen preferences (also under ``z``)
2018-05-18 12:29:45 -06:00
## Internals
- Fixed compiler warnings on all supported build configurations
- Windows build scripts now work with non-C system drives
## 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()``
2018-05-18 12:29:45 -06:00
- syndrome-util: added ``eraseSyndromeData()``
## Structures
- ``dfhack_room_quality_level``: new enum
- ``glowing_barrier``: identified ``triggered``, added comments
- ``item_flags2``: renamed ``has_written_content`` to ``unk_book``
2018-05-18 12:29:45 -06:00
- ``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)
================================================================================
# 0.44.10-beta1
2018-05-09 08:37:03 -06:00
## New Scripts
- `devel/find-primitive`: finds a primitive variable in memory
2018-05-09 08:37:03 -06:00
## Fixes
- Units::getAnyUnit(): fixed a couple problematic conditions and potential segfaults if global addresses are missing
2018-05-09 08:37:03 -06:00
- `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
- `blueprint`: added a basic Lua API
- `devel/export-dt-ini`: added tool offsets for DT 40
2018-05-18 12:29:45 -06:00
- `devel/save-version`: added current DF version to output
- `install-info`: added information on tweaks
2018-05-09 08:37:03 -06:00
## 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
================================================================================
# 0.44.10-alpha1
2018-05-05 13:39:16 -06:00
## New Scripts
2018-05-31 10:38:35 -06:00
- `caravan`: adjusts properties of caravans
2018-05-05 13:39:16 -06:00
- `gui/autogems`: a configuration UI for the `autogems` plugin
2018-04-05 00:16:40 -06:00
## 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
2018-04-05 00:16:40 -06:00
- `liquids`: fixed "range" command to default to 1 for dimensions consistently
- `search`: fixed 4/6 keys in unit screen search
2018-04-07 08:47:25 -06:00
- `view-item-info`: fixed an error with some armor
2018-04-05 00:16:40 -06:00
2018-04-19 10:13:33 -06:00
## Misc Improvements
2018-05-05 13:39:16 -06:00
- `autogems`: can now blacklist arbitrary gem types (see `gui/autogems`)
2018-04-19 10:13:33 -06:00
- `exterminate`: added more words for current unit, removed warning
2018-05-05 14:36:16 -06:00
- `fpause`: now pauses worldgen as well
## 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)
2018-04-19 10:13:33 -06:00
================================================================================
# 0.44.09-r1
## Internals
- OS X: Can now build with GCC 7 (or older)
2018-04-03 09:31:14 -06:00
## Fixes
- `modtools/item-trigger`: fixed token format in help text
2018-04-02 20:30:54 -06:00
## Misc Improvements
- Reorganized changelogs and improved changelog editing process
2018-04-03 09:31:14 -06:00
- `modtools/item-trigger`: added support for multiple type/material/contaminant conditions
2018-04-03 09:36:06 -06:00
## Structures
-@ ``renderer``: fixed vtable addresses on 64-bit OS X
2018-04-03 14:44:30 -06:00
- ``building_type``: added human-readable ``name`` attribute
- ``furnace_type``: added human-readable ``name`` attribute
- ``workshop_type``: added human-readable ``name`` attribute
2018-04-04 09:36:24 -06:00
- ``army``: added vector new in 0.44.07
- ``site_reputation_report``: named ``reports`` vector
================================================================================
# 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
================================================================================
# 0.44.08-alpha1
## Fixes
- `fix/dead-units`: fixed a bug that could remove some arriving (not dead) units
================================================================================
# 0.44.07-beta1
## Structures
-@ Added symbols for Toady's `0.44.07 Linux test build <http://www.bay12forums.com/smf/index.php?topic=169839.msg7720111#msg7720111>`_ to fix :bug:`10615`
-@ ``world_site``: fixed alignment
## Misc improvements
- `modtools/item-trigger`: added the ability to specify inventory mode(s) to trigger on
================================================================================
# 0.44.07-alpha1
## Fixes
2018-04-02 19:36:41 -06:00
- Support for building on Ubuntu 18.04
- Fixed some CMake warnings (CMP0022)
- `embark-assistant`: fixed detection of reanimating biomes
2018-04-02 19:36:41 -06:00
## 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``
2018-04-02 19:36:41 -06:00
- ``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``
2018-04-02 19:36:41 -06:00
================================================================================
# 0.44.05-r2
## Fixes
- `devel/export-dt-ini`: fix language_name offsets for DT 39.2+
- `devel/inject-raws`: fixed gloves and shoes (old typo causing errors)
- `remotefortressreader`: fixed an issue with not all engravings being included
- `view-item-info`: fixed an error with some shields
## Misc Improvements
- `adv-rumors`: added more keywords, including names
- `autochop`: can now exclude trees that produce fruit, food, or cookable items
- `remotefortressreader`: added plant type support
## New Plugins
- `embark-assistant`: adds more information and features to embark screen
## 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.)
================================================================================
# 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
- `tweak`: ``kitchen-keys``: :bug:`614` fixed in DF 0.44.04
## Internals
- ``Gui::getAnyUnit()`` supports many more screens/menus
## Structures
- New globals: ``soul_next_id``
================================================================================
# 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
================================================================================
# 0.44.04-alpha1
## Fixes
- `devel/inject-raws`: now recognizes spaces in reaction names
- `exportlegends`: fixed an error that could occur when exporting empty lists
## Structures
- ``artifact_record``: fixed layout (changed in 0.44.04)
- ``incident``: fixed layout (changed in 0.44.01) - note that many fields have moved
================================================================================
# 0.44.03-beta1
## Fixes
- `autolabor`, `autohauler`, `labormanager`: added support for "put item on display" jobs and building/destroying display furniture
- `gui/gm-editor`: fixed an error when editing primitives in Lua tables
## Misc Improvements
- @ `devel/dump-offsets`: now ignores ``index`` globals
- `gui/pathable`: added tile types to sidebar
- `modtools/skill-change`:
- now updates skill levels appropriately
- only prints output if ``-loud`` is passed
## 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
================================================================================
# 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
================================================================================
# 0.44.02-beta1
## New Scripts
- `devel/check-other-ids`: Checks the validity of "other" vectors in the ``world`` global
- `gui/cp437-table`: An in-game CP437 table
## 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
- `warn-stuck-trees`: :bug:`9252` fixed in DF 0.44.01
## Lua
- Exposed ``get_vector()`` (from C++) for all types that support ``find()``, e.g. ``df.unit.get_vector() == df.global.world.units.all``
## 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)
================================================================================
# 0.44.02-alpha1
## New Scripts
- `devel/dump-offsets`: prints an XML version of the global table included in in DF
## Fixes
- Fixed a crash that could occur if a symbol table in symbols.xml had no content
## Lua
- Added a new ``dfhack.console`` API
- API can now wrap functions with 12 or 13 parameters
## 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``