Releases: DFHack/dfhack
DFHack 0.47.04-r3
This release includes a new Quickfort implementation by @myk002 - feedback is welcome, and please let us know of any issues you encounter in the issue tracker.
DFHack 0.47.04-r3
New Plugins
xlsxreader: provides an API for Lua scripts to read Excel spreadsheets
New Scripts
quickfort: DFHack-native implementation of quickfort with many new features and integrations - see the quickfort user guide for detailstimestream: controls the speed of the calendar and creaturesuniform-unstick: prompts units to reevaluate their uniform, by removing/dropping potentially conflicting worn items
Fixes
-
ban-cooking: fixed an error in several subcommands -
buildingplan: fixed handling of buildings that require buckets -
getplants: fixed a crash that could occur on some maps -
search: fixed an issue causing item counts on the trade screen to display inconsistently when searching -
stockpiles:- fixed an error when saving furniture stockpiles
- fixed a crash when loading food stockpiles
Misc Improvements
-
createitem:- added an
inspectsubcommand to print the item and material tokens of existing items, which can be used to create additional matching items - added support for plant growths (fruit, berries, leaves, etc.)
- added an
-
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 -
unretire-anyone: made undead creature names appear in the historical figure list -
zone:- added slaughter indication to
uinfooutput - added an
enumnicksubcommand to assign enumerated nicknames (e.g "Hen 1", "Hen 2"...)
- added slaughter indication to
API
- Added
DFHack::to_search_normalized()(Lua:dfhack.toSearchNormalized()) to convert non-ASCII alphabetic characters to their ASCII equivalents
Structures
history_event_masterpiece_createdst: fixed alignment, including subclasses, and identifiedskill_at_timeitem_body_component: fixed some alignment issues and identified some fields (also applies to subclasses likeitem_corpsest)stockpile_settings: removedfurniture.sand_bags(no longer present)
Documentation
- Fixed syntax highlighting of most code blocks to use the appropriate language (or no language) instead of Python
DFHack 0.47.04-r2
DFHack 0.47.04-r2
New Scripts
animal-control: helps manage the butchery and gelding of animalsdevel/kill-hf: kills a historical figuregeld: gelds or ungelds animalslist-agreements: lists all guildhall and temple agreementslist-waves: displays migration wave information for citizens/unitsungeld: ungelds animals (wrapper aroundgeld)
New Tweaks
tweakdo-job-now: adds a job priority toggle to the jobs listtweakreaction-gloves: adds an option to make reactions produce gloves in sets with correct handedness
Fixes
-
Fixed a segfault when attempting to start a headless session with a graphical PRINT_MODE setting
-
Fixed an issue with the macOS launcher failing to un-quarantine some files
-
Fixed
Units::isEggLayer,Units::isGrazer,Units::isMilkable,Units::isTrainableHunting,Units::isTrainableWar, andUnits::isTamableignoring the unit's caste -
Linux: fixed
dfhack.getDFPath()(Lua) andProcess::getPath()(C++) to always return the DF root path, even if the working directory has changed -
digfort:- fixed an issue causing blueprints touching the southern or eastern edges of the map to be rejected (northern and western edges were already allowed). This allows blueprints that span the entire embark area.
- fixed y-line tracking when .csv files contain lines with only commas
-
embark-assistant: fixed a couple of incursion handling bugs. -
embark-skills: fixed an issue with structures causing thepointsoption to do nothing -
exportlegends:- stopped including some tags with
-1values which don't provide useful information - fixed an issue where two different
<reason>tags could be included in a<historical_event>
- stopped including some tags with
-
getplants: fixed issues causing plants to be collected even if they have no growths (or unripe growths) -
gui/advfort: fixed "operate pump" job -
gui/load-screen: fixed an issue causing longer timezones to be cut off -
labormanager:- fixed an issue preventing custom furnaces from being built
- fixed handling of new jobs in 0.47
-
modtools/moddable-gods:- made
-depictedAsargument work - removed unused
-domainand-descriptionarguments - fixed an error when creating the historical figure
- made
-
names:- fixed an issue causing renamed units to display their old name in legends mode and some other places
- fixed an error preventing the script from working
-
pref-adjust: fixed some compatibility issues and a potential crash -
RemoteFortressReader:- fixed an issue that could cause block coordinates to be incorrect
- fixed a couple crashes that could result from decoding invalid enum items (
site_realization_building_typeandimprovement_type)
-
rendermax: fixed a hang that could occur when enabling some renderers, notably on Linux -
stonesense:- fixed some issues that could cause the splash screen to hang
- fixed a crash when launching Stonesense
Misc Improvements
-
Linux/macOS: Added console keybindings for deleting words (Alt+Backspace and Alt+d in most terminals)
-
add-recipe:- added a command explanation or error message when entering an invalid command
- added tool recipes (minecarts, wheelbarrows, stepladders, etc.)
-
armoks-blessing: added adjustments to values and needs -
blueprint:- now automatically creates folder trees when organizing blueprints into subfolders (e.g.
blueprint 30 30 1 rooms/dining digwill create the fileblueprints/rooms/dining-dig.csv); previously it would fail if theblueprints/rooms/directory didn't already exist - now writes blueprints to the
blueprints/subfolder instead of the df root folder
- now automatically creates folder trees when organizing blueprints into subfolders (e.g.
-
confirm: added a confirmation dialog for convicting dwarves of crimes -
devel/query: added many new query options -
digfort:- added a
forceoption to truncate blueprints if the full blueprint would extend off the edge of the map - documented that removing ramps, cutting trees, and gathering plants are indeed supported
- handled double quotes (") at the start of a string, allowing .csv files exported from spreadsheets to work without manual modification
- added a
-
dwarf-op:- added ability to protect dwarves based on symbols in their custom professions
- added ability to select dwarves based on migration wave
-
exportlegends:- added ability to save all files to a subfolder, named after the region folder and date by default
- changed some enum values from numbers to their string representations
- changed some flags to be represented by self-closing tags instead of true/false strings (e.g.
<is_volcano/>) - note that this may require changes to other XML-parsing utilities
-
gui/advfort: added support for specifying the entity used to determine available resources -
gui/gm-editor: added support for automatically following ref-targets when pressing theikey -
manipulator: added a new column option to display units' goals -
modtools/moddable-gods: added support forneutergender -
pref-adjust:- added a new
gothprofile - added support for adjusting just the selected dwarf
- added a new
-
remove-stress: added a-valueargument to enable setting stress level directly -
workorder: changed default frequency from "Daily" to "OneTime"
API
- Added
Filesystem::mkdir_recursive - Extended
Filesystem::listdir_recursiveto optionally make returned filenames relative to the start directory Units: added goal-related functions:getGoalType(),getGoalName(),isGoalAchieved()
Internals
- Added support for splitting scripts into multiple files in the
scripts/internalfolder without polluting the output ofls
Lua
- Added a
ref_targetfield to primitive field references, corresponding to theref-targetXML attribute - Made
dfhack.units.getRaceNameById(),dfhack.units.getRaceBabyNameById(), anddfhack.units.getRaceChildNameById()available to Lua
Ruby
- Updated
item_findandbuilding_findto use centralized logic that works on more screens
Structures
- Added a new
<df-other-vectors-type>, which allowsworld.*.othercollections of vectors to use the correct subtypes for items creature_raw: renamedgendertosexto match the field inunit, which is more frequently usedcrime: identifiedwitnesses, which contains the data held by the old field namedreportsintrigue: new type (split out fromhistorical_figure_relationships)items_other_id: removedBAD, and by extension,world.items.other.BAD, which was overlapping withworld.items.badjob_type: added job types new to 0.47plant_raw: material_defs now contains arrays rather than loose fieldspronoun_type: new enum (previously documented in field comments)setup_character_info: fixed a couple alignment issues (needed byembark-skills)ui_advmode_menu: identified some new enum items
Documentation
- Added some new dev-facing pages, including dedicated pages about the remote API, memory research, and documentation
- Expanded the installation guide
- Made a couple theme adjustments
DFHack 0.47.04-r1
DFHack 0.47.04-r1
New Scripts
color-schemes: manages color schemesdevel/print-event: prints the description of an event by ID or indexdevel/sc: checks size of structuresdevel/visualize-structure: displays the raw memory of a structuregui/color-schemes: an in-game interface forcolor-schemeslight-aquifers-only: changes heavy aquifers to light aquiferson-new-fortress: runs DFHack commands only in a new fortressonce-per-save: runs DFHack commands unless already run in the current saveresurrect-adv: brings your adventurer back to lifereveal-hidden-units: exposes all sneaking unitsworkorder: allows queuing manager jobs; smart about shear and milk creature jobs
Fixes
-
Fixed a crash in
find()for some types when no world is loaded -
Fixed a crash when starting DFHack in headless mode with no terminal
-
Fixed translation of certain types of in-game names
-
autogems: fixed an issue with binned gems being ignored in linked stockpiles -
catsplosion: fixed error when handling races with only one caste (e.g. harpies) -
deep-embark:- prevented running in non-fortress modes
- ensured that only the newest wagon is deconstructed
-
devel/visualize-structure: fixed padding detection for globals -
exportlegends:- added UTF-8 encoding and XML escaping for more fields
- added checking for unhandled structures to avoid generating invalid XML
- fixed missing fields in
history_event_assume_identitystexport
-
full-heal:- when resurrected by specifying a corpse, units now appear at the location of the corpse rather than their location of death
- resurrected units now have their tile occupancy set (and are placed in the prone position to facilitate this)
- fixed issues with removing corpses
- fixed resurrection for non-historical figures
-
spawnunit: fixed an error when forwarding some arguments but not a location tomodtools/create-unit -
stocks: fixed display of book titles -
teleport: fixed setting new tile occupancy -
tweakembark-profile-name: fixed handling of the native shift+space key
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
-
deep-embark:- improved support for using directly from the DFHack console
- added a
-clearoption to cancel
-
devel/export-dt-ini: updated some field names for DT for 0.47 -
devel/visualize-structure: added human-readable lengths to containers -
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
-
exportlegends:- added evilness and force IDs to regions
- added profession and weapon info to relevant entities
- added support for many new history events in 0.47
- added historical event relationships and supplementary data
- made interaction export more robust and human-readable
- removed empty
<item_subtype>and<claims>tags - added identity information
- added creature raw names and flags
-
full-heal:- made resurrection produce a historical event viewable in Legends mode
- made error messages more explanatory
-
getplants: added switches for designations for farming seeds and for max number designated per plant -
gui/prerelease-warning: updated links and information about nightly builds -
install-info: added DFHack build ID to report -
manipulator: added intrigue to displayed skills -
modtools/create-item: added-matchingGlovesand-matchingShoesarguments -
modtools/create-unit:- added
-durationargument to make the unit vanish after some time - added
-locationRangeargument to allow spawning in a random position within a defined area - added
-locationTypeargument to specify the type of location to spawn in - added
-equipoption to equip created units - added
-skillsoption to give skills to units - added
-professionand-customProfessionoptions to adjust unit professions
- added
-
modtools/syndrome-trigger: enabled simultaneous use of-synclassand-syndrome -
repeat: added-listoption -
search: added support for the fortress mode justice screen -
dfhack.init-example: enabledautodump
API
- Added
Items::getBookTitleto get titles of books. Catches titles buried in improvements, unlike getDescription.
Internals
- Added separate changelogs in the scripts and df-structures repos
- Improved support for tagged unions, allowing tools to access union fields more safely
- Moved
reversingscripts to df_misc repo
Lua
pairs()now returns available class methods for DF types
Structures
-
Added an XML schema for validating df-structures syntax
-
Added globals:
cur_rain,cur_rain_counter,cur_snow,cur_snow_counter,weathertimer,jobvalue,jobvalue_setter,interactitem,interactinvslot,handleannounce,preserveannounce,updatelightstate -
Added
divination_set_next_idandimage_set_next_idglobals -
Dropped support for 0.44.12-0.47.02
-
abstract_building_type: added types (and subclasses) new to 0.47 -
activity_entry_type: new enum type -
adventure_optionst: identified many vmethods -
agreement_details_data_plot_sabotage: new struct type, along with relatedagreement_details_type.PlotSabotage -
agreement_details_type: added enum -
agreement_details:- identified most fields of most sub-structs
- added struct type (and many associated data types)
-
agreement_party: added struct type -
announcement_type: added types new to 0.47 -
architectural_element: new enum -
artifact_claim_type: added enum -
artifact_claim:- identified several fields
- added struct type
-
artifact_record: identified several fields -
battlefield: new struct type -
breath_attack_type: addedSHARP_ROCK -
breed: new struct type -
building_offering_placest: new class -
building_type: addedOfferingPlace -
caste_raw_flags:- renamed and identified many flags to match information from Toady
- renamed many items to match DF names
-
creature_handler: identified vmethods -
creature_interaction_effect: added subclasses new to 0.47 -
creature_raw_flags:- renamed and identified many flags to match information from Toady
- renamed many items to match DF names
- identified several more items
-
crime_type: new enum type -
crime: removed fields ofreportsthat are no longer present -
dfhack_room_quality_level: added enum attributes for names of rooms of each quality -
d_init: added settings new to 0.47 -
entity_name_type: addedMERCHANT_COMPANY,CRAFT_GUILD -
entity_position_responsibility: added values new to 0.47 -
entity_site_link_type: new enum type -
export_map_type: new enum type -
fortress_type: added enum -
general_ref_type: addedUNIT_INTERROGATEE -
ghost_type: addedNonevalue -
goal_type: added goals types new to 0.47 -
histfig_site_link: added subclasses new to 0.47 -
historical_entity.flags: identified several flags -
historical_entity.relations: renamed fromunknown1band identified several fields -
historical_figure.vague_relationships: identified -
historical_figure_info.known_info: renamed fromsecret, identified some fields -
historical_figure: renamedunit_id2tonemesis_id -
history_event_circumstance_info: new struct type (and changed severalhistory_eventsubclasses to use this) -
history_event_collection: added subtypes new to 0.47 -
history_event_context:- identified fields
- added lots of new fields
-
history_event_reason_info: new struct type (and changed severalhistory_eventsubclasses to use this) -
history_event_reason:- added items new to 0.47
- added captions for all items
-
history_event_type: added types for events new to 0.47, as well as correspondinghistory_eventsubclasses (too many to list here) -
honors_type:- identified several fields
- added struct type
-
identity_type: new enum -
identity: renamedcivtoentity_id, identifiedtype -
image_set: new struct type -
interaction_effect_create_itemst: new struct type -
interaction_effect_summon_unitst: new 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 -
interrogation_report: new struct type -
itemdef_flags: new enum, withGENERATEDflag -
item: identified several vmethods -
job_skill: addedINTRIGUE,RIDING -
justification: new enum -
lair_type: added enum -
layer_type: new enum type -
lever_target_type: identifiedLeverMechanismandTargetMechanismvalues -
monument_type: added enum -
next_global_id: added enum -
plant.damage_flags: addedis_dead -
plot_role_type: new enum type -
plot_strategy_type: new enum type -
poetic_form_action: addedBeseech -
region_weather: new struct type -
relationship_event_supplement: new struct type -
relationship_event: new struct type -
setup_character_info: expanded ...
DFHack 0.47.04-beta1
DFHack 0.47.04-beta1
0.47.04 support is hopefully nearly complete. We're relying on community testing to promote this to a stable release, so let us know what you find!
To download, scroll down to "assets".
Updates since this was released:
- There is a fixed exportlegends script that can generate maps here. To use, click "Raw", download the file, and save it to your hack/scripts folder (this should replace the file that is already there - if not, make sure you only give it the
.luaextension).
New Scripts
color-schemes: manages color schemesdevel/print-event: prints the description of an event by ID or indexgui/color-schemes: an in-game interface forcolor-schemeslight-aquifers-only: changes heavy aquifers to light aquiferson-new-fortress: runs DFHack commands only in a new fortressonce-per-save: runs DFHack commands unless already run in the current saveresurrect-adv: brings your adventurer back to lifereveal-hidden-units: exposes all sneaking unitsworkorder: allows queuing manager jobs; smart about shear and milk creature jobs
Fixes
-
Fixed a crash when starting DFHack in headless mode with no terminal
-
devel/visualize-structure: fixed padding detection for globals -
exportlegends:- added UTF-8 encoding and XML escaping for more fields
- added checking for unhandled structures to avoid generating invalid XML
- fixed missing fields in
history_event_assume_identitystexport
-
full-heal:- when resurrected by specifying a corpse, units now appear at the location of the corpse rather than their location of death
- resurrected units now have their tile occupancy set (and are placed in the prone position to facilitate this)
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
-
devel/export-dt-ini: updated some field names for DT for 0.47 -
devel/visualize-structure: added human-readable lengths to containers -
exportlegends:- added evilness and force IDs to regions
- added profession and weapon info to relevant entities
- added support for many new history events in 0.47
- added historical event relationships and supplementary data
-
full-heal:- made resurrection produce a historical event viewable in Legends mode
- made error messages more explanatory
-
install-info: added DFHack build ID to report -
modtools/create-item: added-matchingGlovesand-matchingShoesarguments -
modtools/create-unit:- added
-durationargument to make the unit vanish after some time - added
-locationRangeargument to allow spawning in a random position within a defined area - added
-locationTypeargument to specify the type of location to spawn in
- added
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
reversingscripts to df_misc repo
Structures
- Added an XML schema for validating df-structures syntax
- Added
divination_set_next_idandimage_set_next_idglobals activity_entry_type: new enum typeadventure_optionst: identified many vmethodsagreement_details: identified most fields of most sub-structsartifact_claim: identified several fieldsartifact_record: identified several fieldscaste_raw_flags: renamed and identified many flags to match information from Toadycreature_raw_flags: renamed and identified many flags to match information from Toadycrime_type: new enum typedfhack_room_quality_level: added enum attributes for names of rooms of each qualityentity_site_link_type: new enum typeexport_map_type: new enum typehistorical_entity.flags: identified several flagshistorical_entity.relations: renamed fromunknown1band identified several fieldshistorical_figure.vague_relationships: identifiedhistorical_figure_info.known_info: renamed fromsecret, identified some fieldshistorical_figure: renamedunit_id2tonemesis_idhistory_event_circumstance_info: new struct type (and changed severalhistory_eventsubclasses to use this)history_event_reason_info: new struct type (and changed severalhistory_eventsubclasses to use this)honors_type: identified several fieldsinteraction_effect_create_itemst: new struct typeinteraction_effect_summon_unitst: new struct typeitem: identified several vmethodslayer_type: new enum typeplant.damage_flags: addedis_deadplot_role_type: new enum typeplot_strategy_type: new enum typerelationship_event_supplement: new struct typerelationship_event: new struct typespecific_ref: moved union data todatafieldui_look_list: moved union fields todataand renamed to matchtypeenumui_sidebar_menus.location: added new profession-related fields, renamed and fixed types of deity-related fieldsui_sidebar_mode: addedZonesLocationInfounit_action: rearranged as tagged union with new sub-types; existing code should be compatiblevague_relationship_type: new enum typevermin_flags: identifiedis_roaming_colonyviewscreen_justicest: identified interrogation-related fieldsworld_data.field_battles: identified and named several fields
DFHack 0.47.03-beta1
- Scroll down for downloads (under "assets")
- This release only supports DF 0.47.03
- This is more stable than earlier builds, but you may still run into issues, including crashes
DFHack 0.47.03-beta1
New Scripts
devel/sc: checks size of structuresdevel/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
-clearoption 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-synclassand-syndrome -
repeat: added-listoption
Structures
- Dropped support for 0.44.12-0.47.02
abstract_building_type: added types (and subclasses) new to 0.47agreement_details_type: added enumagreement_details: added struct type (and many associated data types)agreement_party: added struct typeannouncement_type: added types new to 0.47artifact_claim_type: added enumartifact_claim: added struct typebreath_attack_type: addedSHARP_ROCKbuilding_offering_placest: new classbuilding_type: addedOfferingPlacecreature_interaction_effect: added subclasses new to 0.47creature_raw_flags: identified several more itemsd_init: added settings new to 0.47entity_name_type: addedMERCHANT_COMPANY,CRAFT_GUILDentity_position_responsibility: added values new to 0.47fortress_type: added enumgeneral_ref_type: addedUNIT_INTERROGATEEghost_type: addedNonevaluegoal_type: added goals types new to 0.47histfig_site_link: added subclasses new to 0.47history_event_collection: added subtypes new to 0.47history_event_context: added lots of new fieldshistory_event_reason: added captions for all itemshistory_event_reason: added items new to 0.47history_event_type: added types for events new to 0.47, as well as correspondinghistory_eventsubclasses (too many to list here)honors_type: added struct typeinteraction_effect: added subtypes new to 0.47interaction_source_experimentst: added class typeinteraction_source_usage_hint: added values new to 0.47interface_key: added items for keys new to 0.47job_skill: addedINTRIGUE,RIDINGlair_type: added enummonument_type: added enumnext_global_id: added enumpoetic_form_action: addedBeseechsetup_character_info: expanded significantly in 0.47text_system: added layout for structtile_occupancy: addedvaried_heavy_aquifertool_uses: added items:PLACE_OFFERING,DIVINATION,GAMES_OF_CHANCEviewscreen_counterintelligencest: new class (only layout identified so far)
DFHack 0.44.12-r3
- Important reminder: this only supports DF 0.44.12, because that was the newest version that existed when this DFHack version was released. See https://dfhack.org/builds/ for unstable builds that support newer versions.
- Look under "Assets" below for downloads
- Thanks to the 12 new contributors who made contributions to this release!
DFHack 0.44.12-r3
New Plugins
autoclothing: automatically manage clothing work ordersautofarm: replaces the previous Ruby script of the same name, with some fixesmap-render: allows programmatically rendering sections of the map that are off-screentailor: automatically manages keeping your dorfs clothed
New Scripts
assign-attributes: changes the attributes of a unitassign-beliefs: changes the beliefs of a unitassign-facets: changes the facets (traits) of a unitassign-goals: changes the goals of a unitassign-preferences: changes the preferences of a unitassign-profile: sets a dwarf's characteristics according to a predefined profileassign-skills: changes the skills of a unitcombat-harden: sets a unit's combat-hardened value to a given percentdeep-embark: allows embarking undergrounddevel/find-twbt: finds a TWBT-related offset needed by the newmap-renderplugindwarf-op: optimizes dwarves for fort-mode work; makes managing labors easierforget-dead-body: removes emotions associated with seeing a dead bodygui/create-tree: creates a tree at the selected tilelinger: takes over your killer in adventure modemodtools/create-tree: creates a treemodtools/pref-edit: add, remove, or edit the preferences of a unitmodtools/set-belief: changes the beliefs (values) of unitsmodtools/set-need: sets and edits unit needsmodtools/set-personality: changes the personality of unitsmodtools/spawn-liquid: spawns water or lava at the specified coordinatesset-orientation: edits a unit's orientationunretire-anyone: turns any historical figure into a playable adventurer
Fixes
-
Fixed a crash in the macOS/Linux console when the prompt was wider than the screen width
-
Fixed inconsistent results from
Units::isGayfor asexual units -
Fixed some cases where Lua filtered lists would not properly intercept keys, potentially triggering other actions on the same screen
-
autofarm:- 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 -
cxxrandom: removed some extraneous debug information -
digfort: now accounts for z-level changes when calculating maximum y dimension -
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).
- 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).
-
eventful: fixed invalid building ID in some building events -
exportlegends: now escapes special characters in names properly -
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
leavenow 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_IDfor adventure mode reactions - fixed
-clearto work without passing other unneeded arguments
-
modtools/reaction-trigger:- fixed a bug when determining whether a command was run
- fixed handling of
-resetPolicy
-
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 withautobutcher) -
title-folder: silenced error whenPRINT_MODEis set toTEXT
Misc Improvements
-
Added a note to
dfhack-runwhen 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 -
combine-drinks: added more default output, similar tocombine-plants -
createitem: added a list of valid castes to the "invalid caste" error message, for convenience -
devel/export-dt-ini: added more size information needed by newer Dwarf Therapist versions -
dwarfmonitor: enabled widgets to access other scripts and plugins by switching to the core Lua context -
embark-assistant:- 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 specialenemycaste -
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-qualityoption -
modtools/create-unit:- added the ability to specify
\\LOCALfor 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)
- added the ability to specify
-
modtools/reaction-trigger:- added
-ignoreWorker: ignores the worker when selecting the targets - changed the default behavior to skip inactive/dead units; added
-dontSkipInactiveto 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
- added
-
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
- added tree information
- added check for units' current jobs when calculating the direction they are facing
API
- Added new
plugin_load_dataandplugin_save_dataevents for plugins to load/save persistent data - Added
Maps::GetBiomeTypeandMaps::GetBiomeTypeByRefto infer biome types properly - Added
Units::getPhysicalDescription(note that this depends on theunit_get_physical_descriptionoffset, which is not yet available for all DF builds)
Internals
- Added new Persistence module
- Cut down on internal DFHack dependencies to improve build times
- Improved concurrency in event and server handlers
- Persistent data is now stored in JSON files instead of historical figures - existing data will be migrated when saving
stonesense: fixed some OpenGL build issues on Linux
Lua
- Exposed
gui.dwarfmode.get_movement_deltaandgui.dwarfmode.get_hotkey_target dfhack.run_commandnow returns the command's return code
Ruby
- Made
unit_ishostileconsistently return a boolean
Structures
-
Added
unit_get_physical_descriptionfunction offset on some platforms -
Added/identified types:
assume_identity_modemusical_form_purposemusical_form_style
...
DFHack 0.44.12-r2
This release fixes a few longstanding bugs from 0.44.12-r1.
DFHack 0.44.12-r2
New Plugins
debug: manages runtime debug print category filteringnestboxes: automatically scan for and forbid fertile eggs incubating in a nestbox
New Scripts
devel/query: searches for field names in DF objectsextinguish: puts out firestame: sets tamed/trained status of animals
Fixes
-
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 missingskill_points_remainingfield -
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 withTab -
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 affectedembark-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: fixedhotkey-clear
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_civand-all_citizensarguments - added module support
- now removes historical figure death dates and ghost data
- added
-
growcrops: addedallargument 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 inviewscreen_setupdwarfgamestand improved error messages -
siren: removed break handling (relevantmisc_trait_typewas no longer used - see "Structures" section)
API
-
New debug features related to
debugplugin:- Classes (C++ only):
Signal<Signature, type_tag>,DebugCategory,DebugManager - Macros:
TRACE,DEBUG,INFO,WARN,ERR,DBG_DECLARE,DBG_EXTERN
- Classes (C++ only):
Internals
- Added a usable unit test framework for basic tests, and a few basic tests
- Added
CMakeSettings.jsonwith intellisense support - Changed
plugins/CMakeLists.custom.txtto be ignored by git and created (if needed) at build time instead - Core: various thread safety and memory management improvements
- Fixed CMake build dependencies for generated header files
- Fixed custom
CMAKE_CXX_FLAGSnot being passed to plugins - Linux/macOS: changed recommended build backend from Make to Ninja (Make builds will be significantly slower now)
Lua
utils: newOrderedTableclass
Structures
-
Win32: added missing vtables for
viewscreen_storesstandsquad_order_rescue_hfst -
activity_event_performancest: renamed poem as written_content_id -
body_part_status: identifiedgelded -
dance_form: named musical_form_id and musical_written_content_id -
incident_sub6_performance.participants: named performance_event and role_index -
incident_sub6_performance:- named poetic_form_id, musical_form_id, and dance_form_id
- made performance_event an enum
-
misc_trait_type: removedLikesOutdoors,Hardened,TimeSinceBreak,OnBreak(all unused by DF) -
musical_form_instruments: named minimum_required and maximum_permitted -
musical_form: named voices field -
plant_tree_info: identifiedextent_east, etc. -
plant_tree_tile: gave connection bits more meaningful names (e.g.connection_eastinstead ofthick_branches_1) -
poetic_form: identified many fields and related enum/bitfield types -
setup_character_info: identifiedskill_points_remaining(forembark-skills) -
ui.main: identifiedfortress_site -
ui.squads: identifiedkill_rect_targets_scroll -
ui: fixed alignment ofmainandsquads(fixestweakhotkey-clear and DF-AI) -
unit_action.attack:- added
lightly_tapandspar_reportflags - identified
attack_skill
- added
-
unit_flags3: identifiedmarked_for_gelding -
unit_personality: identifiedstress_drain,stress_boost,likes_outdoors,combat_hardened -
unit_storage_status: newly identified type, stores noble holdings information (used inviewscreen_layer_noblelistst) -
unit_thought_type: added new expulsion thoughts from 0.44.12 -
viewscreen_layer_arena_creaturest: identified item- and name-related fields -
viewscreen_layer_militaryst: identifiedequip.assigned.assigned_items -
viewscreen_layer_noblelistst: identifiedstorage_status(seeunit_storage_statustype) -
viewscreen_new_regionst:- changed many
int8_tfields tobool - identified
rejection_msg,raw_folder,load_world_params
- changed many
-
viewscreen_setupadventurest: identified some nemesis and personality fields, andpage.ChooseHistfig -
world_data: addedmountain_peak_flagstype, includingis_volcano -
world_history: identified names and/or types of some fields -
world_site: identified names and/or types of some fields -
written_content: named poetic_form
DFHack 0.44.12-r1
DFHack 0.44.12-r1
Fixes
- Fixed displayed names (from
Units::getVisibleName) for units with identities - Fixed potential memory leak in
Screen::show() - Fixed special characters in
command-promptand other non-console in-game outputs on Linux/macOS (in tools usingdf2console) command-prompt: added support for commands that require a specific screen to be visible, e.g.spotcleandie: fixed Windows crash in exit handlingdwarfmonitor,manipulator: fixed stress cutoffsfix/dead-units: fixed script trying to use missing isDiplomat functiongui/workflow: fixed advanced constraint menu for craftsmodtools/force: fixed a bug where the help text would always be displayed and nothing useful would happenruby: fixed calling conventions for vmethods that return strings (currentlyenabler.GetKeyDisplay())startdwarf: fixed on 64-bit Linuxstonesense: fixedPLANT:DESERT_LIME:LEAFtypo
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)
-
Linux: added automatic support for GCC sanitizers in
dfhackscript -
Made the
DFHACK_PORTenvironment variable take priority overremote-server.json -
Reduced time for designation jobs from tools like
digvto be assigned workers -
dfhack-run: added support for port specified inremote-server.json, to match DFHack's behavior -
digfort: added better map bounds checking -
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.
-
rejuvenate:- Added
-allargument to apply to all citizens - Added
-forceto include units under 20 years old - Clarified documentation
- Added
-
remove-stress:- added support for
-allas an alternative to the existingallargument for consistency - sped up significantly
- improved output/error messages
- now removes tantrums, depression, and obliviousness
- added support for
-
ruby: sped up handling of onupdate events
API
-
Added C++-style linked list interface for DF linked lists
-
Added to
Unitsmodule:getStressCategory(unit)getStressCategoryRaw(level)stress_cutoffs(Lua:getStressCutoffs())
-
Added
Screen::Hideto temporarily hide screens, likecommand-prompt -
Exposed
Screen::zoom()to C++ (was Lua-only) -
New functions:
Units::isDiplomat(unit)
Internals
- Added documentation for all RPC functions and a build-time check
- Added support for build IDs to development builds
- Changed default build architecture to 64-bit
- jsoncpp: updated to version 1.8.4 and switched to using a git submodule
- Use
dlsym(3)to find vtables from libgraphics.so
Lua
- Added
printall_recurseto print tables and DF references recursively. It can be also used with^from theluainterpreter. gui.widgets:List:setChoicescloneschoicesfor internal table changes
Structures
-
Added support for automatically sizing arrays indexed with an enum
-
Added
start_dwarf_counton 64-bit Linux again and fixed scanning script -
Dropped 0.44.10 support
-
Dropped 0.44.11 support
-
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 -
army_controller: added new vector from 0.44.11 -
belief_system: new type, few fields identified -
breath_attack_type: addedOTHER -
historical_figure_info.relationships.list: addedunk_3a-unk_3cfields at end -
history_event_entity_expels_hfst: added (new in 0.44.11) -
history_event_site_surrenderedst: added (new in 0.44.11) -
history_event_type: addedSITE_SURRENDERED,ENTITY_EXPELS_HF(new in 0.44.11) -
interface_key: added bindings new in 0.44.11 -
mental_picture: new type, some fields identified -
mission_report:- new type (renamed, was
missionbefore) - identified some fields
- new type (renamed, was
-
mission: new type (used inviewscreen_civlistst) -
occupation_type: new in 0.44.11:MESSENGER -
profession: new in 0.44.11:MESSENGER -
spoils_report: new type, most fields identified -
syndrome: identified a few fields -
ui.squads: Added fields new in 0.44.12 -
ui_sidebar_menus:unit.in_squad: renamed tounit.squad_list_opened, fixed locationunit: addedexpel_errorand other unknown fields new in 0.44.11hospital: added, new in 0.44.11num_speech_tokens,unk_17d8: moved out ofcommand_lineto fix layout on x64
-
viewscreen_civlistst:- fixed layout and identified many fields
- identified new pages
- identified new messenger-related fields
-
viewscreen_image_creatorst:- fixed layout
- identified many fields
-
viewscreen_locationsst: identifiededit_input -
viewscreen_reportlistst: added new mission and spoils report-related fields (fixed layout) -
world.languages: identified (minimal information; whole languages stored elsewhere) -
world.status:mission_reports: renamed, wasmissionsspoils_reports: identified
-
world.unk_131ec0,world.unk_131ef0: researched layout -
world.worldgen_status: identified many fields -
world:belief_systems: identified
DFHack 0.44.12-alpha1
DFHack 0.44.12-alpha1
Fixes
- macOS: fixed
renderervtable address on x64 (fixesrendermax) stonesense: fixedPLANT:DESERT_LIME:LEAFtypo
API
- Added C++-style linked list interface for DF linked lists
Structures
- Dropped 0.44.11 support
ui.squads: Added fields new in 0.44.12
DFHack 0.44.11-beta2.1
Hotfix for Stonesense. 0.44.11-beta2 release notes are also included.
DFHack 0.44.11-beta2.1
Internals
stonesense: fixed build
DFHack 0.44.11-beta2
Fixes
- Windows: Fixed console failing to initialize
command-prompt: added support for commands that require a specific screen to be visible, e.g.spotcleangui/workflow: fixed advanced constraint menu for crafts
API
- Added
Screen::Hideto temporarily hide screens, likecommand-prompt