github DFHack/dfhack 53.13-r1
DFHack 53.13-r1

7 hours ago

Q: How do I download DFHack?

A: Either add to your Steam library from our Steam page or scroll to the latest release on our GitHub releases page, expand the "Assets" list, and download the file for your platform (e.g. dfhack-XX.XX-rX-Windows-64bit.zip. If you are on Windows and are manually installing from the zip file, please remember to right click on the file after downloading, open the file properties, and select the "Unblock" checkbox. This will prevent issues with Windows antivirus programs.


This release is compatible with all distributions of Dwarf Fortress: Steam, Itch, and Classic.

Please report any issues (or feature requests) on the DFHack GitHub issue tracker. When reporting issues, please upload a zip file of your savegame and a zip file of your mods directory to the cloud and add links to the GitHub issue. Make sure your files are downloadable by "everyone with the link". We need your savegame to reproduce the problem and test the fix, and we need your active mods so we can load your savegame. Issues with savegames and mods attached get fixed first!

Highlights

Compatibility with Dwarf Fortress 53.13, Structures review, Other bug fixes and improvements

Compatibility with Dwarf Fortress 53.13

The main focus of this release is to add compatibility with Dwarf Fortress 53.13.

Structures review

A fairly significant review and update of DFHack's view of DF data structures is incorporated in this release. This should have little impact on regular players but may affect those who write DFHack scripts. See the changelog for more details.

Other bug fixes and improvements

A minor bug that occasionally affected autotrain has been fixed, some documentation was slightly improved, and a few APIs were made more useful.

Announcements

PSAs

PSAs

As always, remember that, just like the vanilla DF game, DFHack tools can also have bugs. It is a good idea to save often and keep backups of the forts that you care about.

Some DFHack tools that worked in previous (pre-Steam) versions of DF have not been updated yet and are marked with the "unavailable" tag in their docs. If you try to run them, they will show a warning and exit immediately. You can run the command again to override the warning (though of course the tools may not work). We make no guarantees of reliability for the tools that are marked as "unavailable".

The in-game interface for running DFHack commands (gui/launcher) will not show "unavailable" tools by default. You can still run them if you know their names, or you can turn on dev mode by hitting Ctrl-D while in gui/launcher and they will be added to the autocomplete list. Some tools listed as "unavailable" in the docs do not compile yet and are not accessible at all, even when in dev mode.

If you see a tool complaining about the lack of a cursor, know that it's referring to the keyboard cursor (which used to be the only real option in Dwarf Fortress). You can enable the keyboard cursor by entering mining mode or selecting the dump/forbid tool and hitting Alt-K (the DFHack keybinding for toggle-kbd-cursor). We're working on making DFHack tools more mouse-aware and accessible so this step isn't necessary in the future.

Changelog

New tools, fixes, and improvements

Documentation

  • updated documentation for autofarm for more clarity

API

  • add flexible casting to enum_field to enable explicit casting to more types
  • Handle units without current soul in Units::getFocusPenalty

Structures

  • added some missing enums and bitfields
  • assigned proper bitfield data type on agreement_details_data_plot_infiltration_coup.flags
  • changed various fields to make use of existing enums and bitfields
  • ensured that original-name always appears after name or type-name, never before
  • filled in missing original-name attributes
  • fixed assorted typos in original-name attributes
  • fixed base types of creature_sound_type, creature_sound_method_type, and art_image_property_verb
  • fixed several enums
  • fixed several structure field type errors
  • fixed several typos in original-name attributes
  • fixed various fields to use correct signedness
  • fixed various fields to use int8_t or bool as appropriate
  • merged item_statue_graphics_type bitfield into item_statue_graphics_flag
  • other changes:
    • added name to field cgl_itemst.item_type
    • inclusion_type now has 16-bit base type (though nothing relies on it)
    • renamed adventure_interface_attackst.scrselected_item_idoll_position_wrestle to selected_item_id
  • specific changes:
    • fixed building_constructionst.type to be 32-bit, along with the construction_type enum
    • fixed contextst.interrogator_relationships to be a pointer to evidence_repositoryst
    • fixed actor_entryst.associated_org to contain pointers to organization_entryst
    • fixed justice_interfacest.interrogation_report to contain pointers to interrogation_report
    • fixed main_interface_settings.member to contain shared pointers to world_gen_param_valuest
    • fixed squad_equipment_interfacest.am_cand_subtype to contain int16_t
    • fixed startup_charactersheet_petst.race to be int32_t
    • fixed lookinfo_verminst.caste to be int16_t
    • fixed intrigue_corruption.facet_rating to be int16_t
    • fixed historical_entity.current_wgwg to be a direct pointer
    • fixed historical_figure.worldgen_relationships to be a direct pointer
    • fixed pmd_tree_texture_infost.texpos_tree_wood_tile to use correct array length (sized against the correct enum)
    • fixed build_square_type enum to add missing element OUTSIDE
    • swapped main_hover_instruction elements ADVENTURE_MOVE_DOWN_RAMP_E and ADVENTURE_MOVE_DOWN_RAMP_W
    • viewscreen_titlest.mode now uses new enum title_mode_type
    • viewscreen_worldst.squad_flag now uses new bitfield civlist_squad_flag
    • viewscreen_worldst.messenger_flag now uses new bitfield civlist_messenger_flag
    • fixed historical_entity.resources.art_image_types to use new entity_art_image_type enum
    • adventure_movement_movest.aim_attack_flag now uses aim_attack_flag bitfield
    • adventure_movement_mountst.riderposition now uses rider_positions_type enum
    • adventure_constructionst.building_jobitemflag now uses job_material_category bitfield
    • adventure_constructionst.mat_jobitemflag now uses job_material_category bitfield
    • adventure_constructionst.mat_jobitemflag_master now uses job_material_category bitfield
    • building_defst.build_key now uses interface_key enum
    • body_detail_plan.bp_layers_tissue now uses creature_interaction_effect_target_mode enum
    • body_detail_plan.bp_position_value now uses body_part_position_type enum
    • body_detail_plan.bp_relation_value_1 now uses body_part_relation_type enum
    • custom_stockpile_interfacest.cur_main_mode_flag now uses stockpile_group_set bitfield
    • custom_stockpile_interfacest.main_mode_flag now uses stockpile_group_set bitfield
    • name_creator_interfacest.cur_name_place now uses language_name_component enum
    • name_creator_interfacest.cur_word_place now uses language_word_table_index enum
    • dance_form_section.dance_flag now uses dance_flag bitfield
    • evidence_hf_filest.evidence now uses evidence_type enum
    • historical_entity.resources.scholar_flag now uses entity_scholar_flag bitfield
    • interaction_effect_summon_unitst fields required_creature_flags and forbidden_creature_flags now use creature_raw_flags enum
    • interaction_effect_summon_unitst fields required_caste_flags and forbidden_caste_flags now use caste_raw_flags enum
    • interaction_effect_change_weatherst fields add_weather_flag and remove_weather_flag now use region_weather_bits bitfield
    • creature_interaction_effect_body_transformationst fields required_creature_flags and forbidden_creature_flags now use creature_raw_flags enum
    • creature_interaction_effect_body_transformationst fields required_caste_flags and forbidden_caste_flags now use caste_raw_flags enum
    • unit_personality.habit now uses habit_type enum
    • world_region_feature.vertical_connection now uses layer_connection_type enum
    • site_construction_blueprintst fields construction_type and building_type now use building_type enum
    • site_construction_blueprintst fields construction_jobitemflag and building_jobitemflag now use job_material_category bitfield
    • building_weaponrackst.rack_flags is now unsigned
    • temperaturest.fraction is now unsigned
    • historical_entity fields did_wg_variable_position and did_wg_variable_market_position are now unsigned
    • item_body_component fields nonsolid_remaining, layer_wound_area, layer_cut_fraction, layer_dent_fraction, and layer_effect_fraction are now signed
    • unit_personality.traits is now signed
    • rpd_indicator_datast fields marker_char, marker_f, marker_b, and marker_br are now unsigned
    • embark_note.tile is now unsigned
    • world_population fields count_min, count_max, and temp_num are now unsigned
    • world_site_realization.mini_colors is now unsigned
    • unit.body.components fields nonsolid_remaining, layer_wound_area, layer_cut_fraction, layer_dent_fraction, and layer_effect_fraction are now signed
    • unit.body fields blood_max and blood_count are now signed
    • unit.counters fields pain, nausea, and dizziness are now signed
    • unit fields uwss_alt_period, uwss_alt_on_period, uwss_speed_add, uwss_speed_perc, and uwss_skill_role_adjust are now signed
    • unit.counters fields paralysis, numbness, fever, exhaustion, hunger_timer, thirst_timer, sleepiness_timer, stomach_content, stomach_food, vomit_timeout, and stored_fat are now signed
    • unit.status2.liquid_depth are now signed
    • viewscreen_dwarfmodest.sideSubmenu is now bool
    • entity_raw fields likes_site, tolerates_site, start_biome, settlement_biome, and active_season are now bool
    • entity_raw.jobs.permitted_labor is now int8_t
    • graphicst fields do_clean_tile_cache and do_post_init_texture_clear are now bool
    • world_generatorst fields have_logged_parameters and last_used_valid are now bool

Don't miss a new dfhack release

NewReleases is sending notifications on new releases.