github DFHack/dfhack 0.47.05-r2
DFHack 0.47.05-r2

latest releases: 50.13-r2, 50.13-r1.1, 50.13-r1...
2 years ago

DFHack 0.47.05-r2

New Scripts

  • clear-webs: removes all webs on the map and/or frees any webbed creatures
  • devel/block-borders: overlay that displays map block borders
  • devel/luacov: generate code test coverage reports for script development. Define the DFHACK_ENABLE_LUACOV=1 environment variable to start gathering coverage metrics.
  • fix/drop-webs: causes floating webs to fall to the ground
  • gui/blueprint: interactive frontend for the blueprint plugin (with mouse support!)
  • gui/mass-remove: mass removal/suspension tool for buildings and constructions
  • reveal-hidden-sites: exposes all undiscovered sites
  • set-timeskip-duration: changes the duration of the "Updating World" process preceding the start of a new game, enabling you to jump in earlier or later than usual

Fixes

  • Fixed an issue preventing some external scripts from creating zones and other abstract buildings (see note about room definitions under "Internals")
  • Fixed an issue where scrollable text in Lua-based screens could prevent other widgets from scrolling
  • bodyswap:
    • stopped prior party members from tagging along after bodyswapping and reloading the map
    • made companions of bodyswapping targets get added to the adventurer party - they can now be viewed using the in-game party system
  • buildingplan:
    • fixed an issue where planned constructions designated with DF's sizing keys (umkh) would sometimes be larger than requested
    • fixed an issue preventing other plugins like automaterial from planning constructions if the "enable all" buildingplan setting was turned on
    • made navigation keys work properly in the materials selection screen when alternate keybindings are used
  • color-schemes: fixed an error in the register subcommand when the DF path contains certain punctuation characters
  • command-prompt: fixed issues where overlays created by running certain commands (e.g. gui/liquids, gui/teleport) would not update the parent screen correctly
  • dwarfvet: fixed a crash that could occur with hospitals overlapping with other buildings in certain ways
  • embark-assistant: fixed faulty early exit in first search attempt when searching for waterfalls
  • gui/advfort: fixed an issue where starting a workshop job while not standing at the center of the workshop required advancing time manually
  • gui/unit-info-viewer: fixed size description displaying unrelated values instead of size
  • orders: fixed crash when importing orders with malformed IDs
  • quickfort:
    • comments in blueprint cells no longer prevent the rest of the row from being read. A cell with a single '#' marker in it, though, will still stop the parser from reading further in the row.
    • fixed an off-by-one line number accounting in blueprints with implicit #dig modelines
    • changed to properly detect and report an error on sub-alias params with no values instead of just failing to apply the alias later (if you really want an empty value, use {Empty} instead)
    • improved handling of non-rectangular and non-solid extent-based structures (like fancy-shaped stockpiles and farm plots)
    • fixed conversion of numbers to DF keycodes in #query blueprints
    • fixed various errors with cropping across the map edge
    • properly reset config to default values in quickfort reset even if if the dfhack-config/quickfort/quickfort.txt config file doesn't mention all config vars. Also now works even if the config file doesn't exist.
  • stonesense: fixed a crash that could occur when ctrl+scrolling or closing the Stonesense window
  • quickfortress.csv blueprint: fixed refuse stockpile config and prevented stockpiles from covering stairways

Misc Improvements

  • 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"
    • 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.
    • 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.
  • devel/annc-monitor: added report enable|disable subcommand to filter combat reports
  • embark-assistant: slightly improved performance of surveying and improved code a little
  • gui/advfort: added workshop name to workshop UI
  • quickfort:
    • the Dreamfort blueprint set can now be comfortably built in a 1x1 embark
    • added the --cursor option for running a blueprint at specific coordinates instead of starting at the game cursor position
    • added more helpful error messages for invalid modeline markers
    • added support for extra space characters in blueprints
    • added a warning when an invalid alias is encountered instead of silently ignoring it
    • made more quiet when the --quiet parameter is specified
  • setfps: improved error handling
  • stonesense: sped up startup time
  • tweak hide-priority: changed so that priorities stay hidden (or visible) when exiting and re-entering the designations menu
  • unretire-anyone: the historical figure selection list now includes the SYN_NAME (necromancer, vampire, etc) of figures where applicable

API

  • Added dfhack.maps.getPlantAtTile(x, y, z) and dfhack.maps.getPlantAtTile(pos), and updated dfhack.gui.getSelectedPlant() to use it
  • Added dfhack.units.teleport(unit, pos)

Internals

  • Room definitions and extents are now created for abstract buildings so callers don't have to initialize the room structure themselves
  • 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
  • Unit tests can now use delay_until(predicate_fn, timeout_frames) to delay until a condition is met
  • 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

Lua

  • new library: argparse is a collection of commandline argument processing functions
  • 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)
  • new utility function: utils.normalizePath(): normalizes directory slashes across platoforms to / and coaleses adjacent directory separators
  • reveal: now exposes unhideFlood(pos) functionality to Lua
  • xlsxreader: added Lua class wrappers for the xlsxreader plugin API
  • 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
  • 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
  • gui.Painter: fixed error when calling viewport() method

Structures

  • Identified remaining rhythm beat enum values
  • ui_advmode.interactions: identified some fields related to party members
  • ui_advmode_menu: identified several enum items
  • ui_advmode:
    • idenfitied several fields
    • renamed wait to rest_mode and changed to an enum with correct values
  • viewscreen_legendsst.cur_page: added missing Books enum item, which fixes some other values

Documentation

Don't miss a new dfhack release

NewReleases is sending notifications on new releases.