Changelog

This file contains changes grouped by the stable release in which they first appeared. See Building the changelogs for more information.

See Development Changelog for a list of changes grouped by development releases.

DFHack future

Fixes

  • 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)
  • assign-preferences: fixed handling of preferences for flour
  • buildingplan:
    • fixed a crash when pressing 0 while having a noble room selected
    • no longer erroneously matches items to buildings while the game is paused
    • artifacts are now successfully matched when max quality is set to artifacts
  • dwarfmonitor: fixed a crash when opening the prefs screen if units have vague preferences
  • dwarfvet: fixed a crash that could occur when discharging patients
  • 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
  • quickfort:
    • display missing blueprint labels in gui dialog list
    • fix query blueprint statistics being added to the wrong metric when both a query and a zone blueprint are run by the same meta blueprint
    • fix valid placement detection for floor hatches, floor grates, and floor bars (they were erroneously being rejected from open spaces and staircase tops)
    • fix misconfiguration of nest boxes, hives, and slabs that were preventing them from being built from build blueprints
    • fix handling of modifier keys (e.g. {Ctrl} or {Alt}) in query blueprints
  • unsuspend: now leaves buildingplan-managed buildings alone and doesn’t unsuspend underwater tasks
  • zone: fixed an issue causing the enumnick subcommand to run when attempting to run assign, unassign, or slaughter

Misc Improvements

  • buildingplan:
    • new global settings for whether generic building materials should match blocks, boulders, logs, and/or bars. defaults are everything but bars.
    • new global settings page accessible via G hotkey when on any building build screen; Quickfort Mode toggle for legacy Python Quickfort has been moved to this page
    • min quality adjustment hotkeys changed from ‘qw’ to ‘QW’ to avoid conflict with existing hotkeys for setting roller speed. max quality adjustment hotkeys changed from ‘QW’ to ‘AS’ to make room for the min quality hotkey changes.
    • default filter setting for max quality changed from artifact to masterwork
    • now respects building job_item filters when matching items, so you can set your own programmatic filters for buildings before submitting them to buildingplan
    • all buildings, furniture, and constructions are now supported (except for instruments)
  • devel/export-dt-ini: updated for Dwarf Therapist 41.2.0
  • embark-assistant: split the lair types displayed on the local map into mound, burrow, and lair
  • modtools/add-syndrome: added support for specifying syndrome IDs instead of names
  • quickfort:
    • support creating uninitialized stockpiles with c
    • remove buildings_use_blocks setting and replace it with more flexible functionality in buildingplan
    • configuration support for zone pit/pond, gather, and hospital sub-menus in zone blueprints.
    • add support for bookcases, display cases, and offering places (altars)
    • add query_unsafe setting to disable query blueprint error checking. useful for query blueprints that send unusual key sequences.
    • speed of first call to quickfort list is significantly improved, especially for large blueprint libraries
    • alias names can now include dashes and underscores (in addition to letters and numbers)
    • query blueprint aliases can now accept parameters for dynamic expansion. see dfhack-config/quickfort/aliases.txt for details.
    • More blueprints have been added to the blueprints library: several bedroom layouts, the Saracen Crypts, and the complete fortress example from Python Quickfort: TheQuickFortress
    • The Dreamfort sample blueprints now have complete walkthroughs for each fort level and importable orders that automate basic fort stock management

API

  • add item type param to dfhack.job.isSuitableMaterial() so the non_economic flag can be properly handled (it was being matched for all item types instead of just boulders)
  • buildingplan: added Lua interface API

Lua

  • utils.addressof(): fixed for raw userdata

Structures

  • building_extents_type: new enum, used for building_extents.extents
  • world_mountain_peak: new struct (was previously inline) - used in world_data.mountain_peaks

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 details
  • timestream: controls the speed of the calendar and creatures
  • uniform-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 inspect subcommand 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.)
  • 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 uinfo output
    • added an enumnick subcommand to assign enumerated nicknames (e.g “Hen 1”, “Hen 2”…)

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 identified skill_at_time
  • item_body_component: fixed some alignment issues and identified some fields (also applies to subclasses like item_corpsest)
  • stockpile_settings: removed furniture.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

New Scripts

New Tweaks

  • tweak do-job-now: adds a job priority toggle to the jobs list
  • tweak reaction-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, and Units::isTamable ignoring the unit’s caste
  • Linux: fixed dfhack.getDFPath() (Lua) and Process::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 the points option to do nothing
  • exportlegends:
    • stopped including some tags with -1 values which don’t provide useful information
    • fixed an issue where two different <reason> tags could be included in a <historical_event>
  • 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 -depictedAs argument work
    • removed unused -domain and -description arguments
    • fixed an error when creating the historical figure
  • 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_type and improvement_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 dig will create the file blueprints/rooms/dining-dig.csv); previously it would fail if the blueprints/rooms/ directory didn’t already exist
    • now writes blueprints to the blueprints/ subfolder instead of the df root folder
  • confirm: added a confirmation dialog for convicting dwarves of crimes
  • devel/query: added many new query options
  • digfort:
    • added a force option 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
  • 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 the i key
  • manipulator: added a new column option to display units’ goals
  • modtools/moddable-gods: added support for neuter gender
  • pref-adjust:
    • added a new goth profile
    • added support for adjusting just the selected dwarf
  • remove-stress: added a -value argument to enable setting stress level directly
  • workorder: changed default frequency from “Daily” to “OneTime”

API

  • Added Filesystem::mkdir_recursive
  • Extended Filesystem::listdir_recursive to 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/internal folder without polluting the output of ls

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

Ruby

  • Updated item_find and building_find to use centralized logic that works on more screens

Structures

  • Added a new <df-other-vectors-type>, which allows world.*.other collections of vectors to use the correct subtypes for items
  • creature_raw: renamed gender to sex to match the field in unit, which is more frequently used
  • crime: identified witnesses, which contains the data held by the old field named reports
  • intrigue: new type (split out from historical_figure_relationships)
  • items_other_id: removed BAD, and by extension, world.items.other.BAD, which was overlapping with world.items.bad
  • job_type: added job types new to 0.47
  • plant_raw: material_defs now contains arrays rather than loose fields
  • pronoun_type: new enum (previously documented in field comments)
  • setup_character_info: fixed a couple alignment issues (needed by embark-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

New Scripts

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_identityst export
  • 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 to modtools/create-unit
  • stocks: fixed display of book titles
  • teleport: fixed setting new tile occupancy
  • tweak embark-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 -clear option 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 -matchingGloves and -matchingShoes arguments
  • modtools/create-unit:
    • added -duration argument to make the unit vanish after some time
    • added -locationRange argument to allow spawning in a random position within a defined area
    • added -locationType argument to specify the type of location to spawn in
    • added -equip option to equip created units
    • added -skills option to give skills to units
    • added -profession and -customProfession options to adjust unit professions
  • modtools/syndrome-trigger: enabled simultaneous use of -synclass and -syndrome
  • repeat: added -list option
  • search: added support for the fortress mode justice screen
  • dfhack.init-example: enabled autodump

API

  • Added Items::getBookTitle to 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 reversing scripts 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_id and image_set_next_id globals
  • 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 related agreement_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: added SHARP_ROCK
  • breed: new struct type
  • building_offering_placest: new class
  • building_type: added OfferingPlace
  • 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 of reports that are no longer present
  • dance_form: identified most fields
  • 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: added MERCHANT_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: 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
  • historical_entity.flags: identified several flags
  • historical_entity.relations: renamed from unknown1b and identified several fields
  • historical_figure.vague_relationships: identified
  • historical_figure_info.known_info: renamed from secret, identified some fields
  • historical_figure: renamed unit_id2 to nemesis_id
  • history_event_circumstance_info: new struct type (and changed several history_event subclasses 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 several history_event subclasses 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 corresponding history_event subclasses (too many to list here)
  • honors_type:
    • identified several fields
    • added struct type
  • identity_type: new enum
  • identity: renamed civ to entity_id, identified type
  • 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, with GENERATED flag
  • item: identified several vmethods
  • job_skill: added INTRIGUE, RIDING
  • justification: new enum
  • lair_type: added enum
  • layer_type: new enum type
  • lever_target_type: identified LeverMechanism and TargetMechanism values
  • monument_type: added enum
  • musical_form: identified fields, including some renames. Also identified fields in scale and rhythm
  • next_global_id: added enum
  • plant.damage_flags: added is_dead
  • plot_role_type: new enum type
  • plot_strategy_type: new enum type
  • poetic_form_action: added Beseech
  • region_weather: new struct type
  • relationship_event_supplement: new struct type
  • relationship_event: new struct type
  • setup_character_info: expanded significantly in 0.47
  • specific_ref: moved union data to data field
  • squad_order_cause_trouble_for_entityst: identified fields
  • text_system: added layout for struct
  • tile_occupancy: added varied_heavy_aquifer
  • tool_uses: added items: PLACE_OFFERING, DIVINATION, GAMES_OF_CHANCE
  • ui_look_list: moved union fields to data and renamed to match type enum
  • ui_sidebar_menus.location: added new profession-related fields, renamed and fixed types of deity-related fields
  • ui_sidebar_mode: added ZonesLocationInfo
  • unit_action: rearranged as tagged union with new sub-types; existing code should be compatible
  • unit_thought_type: added several new thought types
  • vague_relationship_type: new enum type
  • vermin_flags: identified is_roaming_colony
  • viewscreen_counterintelligencest: new class (only layout identified so far)
  • viewscreen_justicest: identified interrogation-related fields
  • viewscreen_workquota_detailsst: identified fields
  • world_data.field_battles: identified and named several fields

DFHack 0.44.12-r3

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

Fixes

  • Fixed a crash in the macOS/Linux console when the prompt was wider than the screen width
  • Fixed inconsistent results from Units::isGay for 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
    • 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
  • 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)
  • title-folder: silenced error when PRINT_MODE is set to TEXT

Misc Improvements

  • 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
  • combine-drinks: added more default output, similar to combine-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 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
  • 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_data and plugin_save_data events for plugins to load/save persistent data
  • 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)

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_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
  • need_type: fixed PrayOrMeditate typo
  • personality_facet_type, value_type: added NONE values
  • twbt_render_map: added for 64-bit 0.44.12 (for map-render)

DFHack 0.44.12-r2

New Plugins

  • debug: manages runtime debug print category filtering
  • nestboxes: automatically scan for and forbid fertile eggs incubating in a nestbox

New Scripts

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 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
  • prospect: (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

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)

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

Internals

  • Added a usable unit test framework for basic tests, and a few basic tests
  • Added CMakeSettings.json with intellisense support
  • Changed plugins/CMakeLists.custom.txt to 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_FLAGS not being passed to plugins
  • Linux/macOS: changed recommended build backend from Make to Ninja (Make builds will be significantly slower now)

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
  • body_part_status: identified gelded
  • 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: removed LikesOutdoors, Hardened, TimeSinceBreak, OnBreak (all unused by DF)
  • musical_form_instruments: named minimum_required and maximum_permitted
  • musical_form: named voices field
  • plant_tree_info: identified extent_east, etc.
  • plant_tree_tile: gave connection bits more meaningful names (e.g. connection_east instead of thick_branches_1)
  • poetic_form: identified many fields and related enum/bitfield types
  • setup_character_info: identified skill_points_remaining (for embark-skills)
  • ui.main: identified fortress_site
  • ui.squads: identified kill_rect_targets_scroll
  • ui: fixed alignment of main and squads (fixes tweak hotkey-clear and DF-AI)
  • unit_action.attack:
    • added lightly_tap and spar_report flags
    • identified attack_skill
  • unit_flags3: identified marked_for_gelding
  • unit_personality: identified stress_drain, stress_boost, likes_outdoors, combat_hardened
  • unit_storage_status: newly identified type, stores noble holdings information (used in viewscreen_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: identified equip.assigned.assigned_items
  • viewscreen_layer_noblelistst: identified storage_status (see unit_storage_status type)
  • viewscreen_new_regionst:
    • changed many int8_t fields to bool
    • identified rejection_msg, raw_folder, load_world_params
  • viewscreen_setupadventurest: identified some nemesis and personality fields, and page.ChooseHistfig
  • world_data: added mountain_peak_flags type, including is_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

Fixes

  • Fixed displayed names (from Units::getVisibleName) for units with identities
  • Fixed potential memory leak in Screen::show()
  • Fixed special characters in command-prompt and other non-console in-game outputs on Linux/macOS (in tools using df2console)
  • command-prompt: added support for commands that require a specific screen to be visible, e.g. spotclean
  • die: fixed Windows crash in exit handling
  • dwarfmonitor, manipulator: fixed stress cutoffs
  • fix/dead-units: fixed script trying to use missing isDiplomat function
  • gui/workflow: fixed advanced constraint menu for crafts
  • 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())
  • startdwarf: fixed on 64-bit Linux
  • Stonesense: fixed PLANT:DESERT_LIME:LEAF typo

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 dfhack script
  • Made the DFHACK_PORT environment variable take priority over remote-server.json
  • Reduced time for designation jobs from tools like dig to be assigned workers
  • dfhack-run: added support for port specified in remote-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 -all argument to apply to all citizens
    • Added -force to include units under 20 years old
    • Clarified documentation
  • 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

API

  • Added C++-style linked list interface for DF linked lists
  • Added to Units module:
    • getStressCategory(unit)
    • getStressCategoryRaw(level)
    • stress_cutoffs (Lua: getStressCutoffs())
  • Added Screen::Hide to temporarily hide screens, like command-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_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

Structures

  • Added support for automatically sizing arrays indexed with an enum
  • Added start_dwarf_count on 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: added OTHER
  • historical_figure_info.relationships.list: added unk_3a-unk_3c fields 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: added SITE_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 mission before)
    • identified some fields
  • mission: new type (used in viewscreen_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 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:
    • fixed layout and identified many fields
    • identified new pages
    • identified new messenger-related fields
  • viewscreen_image_creatorst:
    • fixed layout
    • identified many fields
  • viewscreen_locationsst: identified edit_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, was missions
    • spoils_reports: identified
  • world.unk_131ec0, world.unk_131ef0: researched layout
  • world.worldgen_status: identified many fields
  • world: belief_systems: identified

DFHack 0.44.10-r2

New Plugins

  • cxxrandom: exposes some features of the C++11 random number library to Lua

New Scripts

  • add-recipe: adds unknown crafting recipes to the player’s civ
  • gui/stamper: allows manipulation of designations by transforms such as translations, reflections, rotations, and inversion

Fixes

  • Fixed many tools incorrectly using the dead unit flag (they should generally check flags2.killed instead)
  • Fixed many tools passing incorrect arguments to printf-style functions, including a few possible crashes (changelayer, follow, forceequip, generated-creature-renamer)
  • Fixed several bugs in Lua scripts found by static analysis (df-luacheck)
  • Fixed -g flag (GDB) in Linux dfhack script (particularly on x64)
  • 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:
    • stop running repeatedly when paused
    • fixed crash when furnaces are linked to same stockpiles as jeweler’s workshops
  • autogems, fix-unit-occupancy: stopped running when a fort isn’t loaded (e.g. while embarking)
  • autounsuspend: now skips planned buildings
  • ban-cooking: fixed errors introduced by kitchen structure changes in 0.44.10-r1
  • buildingplan, fortplan: stopped running before a world has fully loaded
  • deramp: fixed deramp to find designations that already have jobs posted
  • dig: fixed “Inappropriate dig square” announcements if digging job has been posted
  • fixnaked: fixed errors due to emotion changes in 0.44
  • remove-stress: fixed an error when running on soul-less units (e.g. with -all)
  • reveal: stopped revealing tiles adjacent to tiles above open space inappropriately
  • stockpiles: loadstock now sets usable and unusable weapon and armor settings
  • stocks: stopped listing carried items under stockpiles where they were picked up from

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
  • Linux: Added several new options to dfhack script: --remotegdb, --gdbserver, --strace
  • bodyswap: improved error handling
  • buildingplan: added max quality setting
  • caravan: documented (new in 0.44.10-alpha1)
  • deathcause: added “slaughtered” to descriptions
  • 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
  • fix/retrieve-units: now re-adds units to active list to counteract fix/dead-units
  • item-descriptions: fixed several grammatical errors
  • modtools/create-unit:
    • added quantity argument
    • now selects a caste at random if none is specified
  • 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
  • title-version: added version to options screen too

API

  • New functions (also exposed to Lua):
    • Units::isKilled()
    • Units::isActive()
    • Units::isGhost()
  • Removed Vermin module (unused and obsolete)

Internals

  • Added build option to generate symbols for large generated files containing df-structures metadata
  • Added fallback for YouCompleteMe database lookup failures (e.g. for newly-created files)
  • Improved efficiency and error handling in stl_vsprintf and related functions
  • jsoncpp: fixed constructor with long on Linux

Lua

  • Added profiler module to measure lua performance
  • Enabled shift+cursor movement in WorkshopOverlay-derived screens

Structures

  • incident_sub6_performance: identified some fields
  • item_body_component: fixed location of corpse_flags
  • job_handler: fixed static array layout
  • job_type: added is_designation attribute
  • unit_flags1: renamed dead to inactive to better reflect its use
  • unit_personality: fixed location of current_focus and undistracted_focus
  • unit_thought_type: added SawDeadBody (new in 0.44.10)

DFHack 0.44.10-r1

New Scripts

New Tweaks

  • tweak kitchen-prefs-all: adds an option to toggle cook/brew for all visible items in kitchen preferences
  • tweak stone-status-all: adds an option to toggle the economic status of all stones

Fixes

  • Fixed uninitialized pointer being returned from Gui::getAnyUnit() in rare cases
  • Lua: registered dfhack.constructions.designateRemove() correctly
  • Units::getAnyUnit(): fixed a couple problematic conditions and potential segfaults if global addresses are missing
  • autohauler, autolabor, labormanager: fixed fencepost error and potential crash
  • dwarfvet: fixed infinite loop if an animal is not accepted at a hospital
  • exterminate: fixed documentation of this option
  • 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
  • liquids: fixed “range” command to default to 1 for dimensions consistently
  • 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
  • prospect: fixed crash due to invalid vein materials
  • search: fixed 4/6 keys in unit screen search
  • stockpiles: stopped sidebar option from overlapping with autodump
  • tweak block-labors: fixed two causes of crashes related in the v-p-l menu
  • tweak max-wheelbarrow: fixed conflict with building renaming
  • view-item-info:
    • fixed an error with some armor
    • stopped appending extra newlines permanently to descriptions

Misc Improvements

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()
  • syndrome-util: added eraseSyndromeData()

Internals

  • Added function names to DFHack’s NullPointer and InvalidArgument exceptions
  • Added some build scripts for Sublime Text
  • Added Gui::inRenameBuilding()
  • Changed submodule URLs to relative URLs so that they can be cloned consistently over different protocols (e.g. SSH)
  • Fixed compiler warnings on all supported build configurations
  • Linux: required plugins to have symbols resolved at link time, for consistency with other platforms
  • Windows build scripts now work with non-C system drives

Structures

  • dfhack_room_quality_level: new enum
  • glowing_barrier: identified triggered, added comments
  • item_flags2: renamed has_written_content to unk_book
  • 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)

DFHack 0.44.09-r1

Fixes

  • Fixed some CMake warnings (CMP0022)
  • Support for building on Ubuntu 18.04
  • digtype: stopped designating non-vein tiles (open space, trees, etc.)
  • embark-assistant: fixed detection of reanimating biomes
  • fix/dead-units: fixed a bug that could remove some arriving (not dead) units
  • labormanager: fixed crash due to dig jobs targeting some unrevealed map blocks
  • modtools/item-trigger: fixed token format in help text

Misc Improvements

  • Reorganized changelogs and improved changelog editing process
  • embark-assistant:
    • Added search for adamantine
    • Now supports saving/loading profiles
  • fillneeds: added -all option to apply to all units
  • modtools/item-trigger:
    • added the ability to specify inventory mode(s) to trigger on
    • added support for multiple type/material/contaminant conditions
  • remotefortressreader: added flows, instruments, tool names, campfires, ocean waves, spiderwebs

Internals

  • OS X: Can now build with GCC 7 (or older)

Structures

  • Several new names in instrument raw structures
  • army: added vector new in 0.44.07
  • building_type: added human-readable name attribute
  • furnace_type: added human-readable name attribute
  • identity: identified profession, civ
  • manager_order_template: fixed last field type
  • site_reputation_report: named reports vector
  • viewscreen_createquotast: fixed layout
  • workshop_type: added human-readable name attribute
  • world.language: moved colors, shapes, patterns to world.descriptors
  • 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

DFHack 0.44.05-r2

New Plugins

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.)

Fixes

Misc Improvements

DFHack 0.44.05-r1

New Scripts

  • break-dance: Breaks up a stuck dance activity
  • devel/check-other-ids: Checks the validity of “other” vectors in the world global
  • devel/dump-offsets: prints an XML version of the global table included in in DF
  • 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
  • gui/cp437-table: An in-game CP437 table
  • 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

  • Fixed a crash that could occur if a symbol table in symbols.xml had no content
  • Fixed issues with the console output color affecting the prompt on Windows
  • autolabor, autohauler, labormanager: added support for “put item on display” jobs and building/destroying display furniture
  • createitem: stopped items from teleporting away in some forts
  • devel/inject-raws:
    • now recognizes spaces in reaction names
    • 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
  • exportlegends: fixed an error that could occur when exporting empty lists
  • gui/gm-editor: fixed an error when editing primitives in Lua tables
  • 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
  • names: fixed many errors
  • quicksave: fixed an issue where the “Saving…” indicator often wouldn’t appear

Misc Improvements

  • The console now provides suggestions for built-in commands
  • binpatch: now reports errors for empty patch files
  • devel/export-dt-ini: avoid hardcoding flags
  • exportlegends:
    • reordered some tags to match DF’s order
    • added progress indicators for exporting long lists
  • 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
  • gui/gm-editor: added enum names to enum edit dialogs
  • gui/gm-unit:
    • made skill search case-insensitive
    • added a profession editor
    • misc. layout improvements
  • gui/liquids: added more keybindings: 0-7 to change liquid level, P/B to cycle backwards
  • gui/pathable: added tile types to sidebar
  • gui/rename: added “clear” and “special characters” options
  • launch: can now ride creatures
  • modtools/skill-change:
    • now updates skill levels appropriately
    • only prints output if -loud is passed
  • names: can now edit names of units
  • remotefortressreader:
    • includes item stack sizes
    • some performance improvements
    • support for moving adventurers
    • support for vehicles, gem shapes, item volume, art images, item improvements

Removed

Internals

  • Gui::getAnyUnit() supports many more screens/menus

Lua

  • Added a new dfhack.console API
  • API can now wrap functions with 12 or 13 parameters
  • Exposed get_vector() (from C++) for all types that support find(), e.g. df.unit.get_vector() == df.global.world.units.all
  • Improved json I/O error messages
  • Stopped a crash when trying to create instances of classes whose vtable addresses are not available

Structures

  • Added buildings_other_id.DISPLAY_CASE
  • Added job_type.PutItemOnDisplay
  • Added twbt_render_map code offset on x64
  • Fixed an issue preventing enabler from being allocated by DFHack
  • Fixed unit alignment
  • Fixed viewscreen_titlest.start_savegames alignment
  • Found renderer vtable on osx64
  • Identified historical_entity.unknown1b.deities (deity IDs)
  • Located start_dwarf_count offset for all builds except 64-bit Linux; startdwarf should work now
  • New globals:
    • version
    • min_load_version
    • movie_version
    • basic_seed
    • title
    • title_spaced
    • ui_building_resize_radius
    • soul_next_id
  • The former announcements global is now a field in d_init
  • 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
  • adventure_movement_optionst, adventure_movement_hold_tilest, adventure_movement_climbst: named coordinate fields
  • artifact_record: fixed layout (changed in 0.44.04)
  • incident: fixed layout (changed in 0.44.01) - note that many fields have moved
  • 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
  • world fields formerly beginning with job_ are now fields of world.jobs, e.g. world.job_list is now world.jobs.list

Older Changelogs

Are kept in a seperate file: Historical changelogs