Skip to content

Conversation

@quietust
Copy link
Member

@quietust quietust commented Feb 3, 2026

And fix a handful of other errors I encountered along the way.

Added NONE entries to enums (may affect C++ code):

  • abstract_building_reputation_type
  • adopt_region_stage_type
  • artifact_claim_type
  • block_square_event_type
  • building_profile_acquisition_method
  • civzone_type
  • dance_form_context
  • dance_form_group_size
  • dance_form_move_type
  • divination_outcome_type
  • dungeon_type
  • dungeon_wrestle_type
  • embark_finder_option
  • environment_type
  • era_type
  • flow_type
  • genetic_modifier_type
  • hf_artifact_action_type
  • history_event_collection_type
  • incident_artifact_location_type
  • incident_type
  • incident_written_content_location_type
  • insurrection_outcome
  • interaction_flags
  • interaction_source_type
  • intrigue_corruption_method_type
  • inventory_profile_skill_type
  • inv_item_role_type
  • journey_type
  • language_name_category
  • language_name_component
  • language_word_table_index
  • load_game_stage_type
  • main_choice_type
  • misc_trait_type
  • musical_form_melody_frequency
  • musical_form_melody_style
  • musical_form_purpose
  • occasion_schedule_feature
  • occasion_schedule_type
  • occupation_type
  • personality_preference_type
  • plant_material_def
  • poetic_form_persona_type
  • poetic_form_persona_type
  • prepare_rod_stage_type
  • projectile_type
  • region_weather_type
  • report_zoom_type
  • resource_allotment_specifier_type
  • save_substage
  • scale_construction_type
  • scale_naming_type
  • scale_type
  • secretion_condition
  • simple_action_type
  • site_dispute_type
  • squad_order_cannot_reason
  • squad_order_type
  • tactical_situation
  • talk_choice_type
  • theft_method_type
  • timbre_type
  • travel_log_itinerary_type
  • workquota_frequency_type
  • world_construction_type
  • wrestle_attack_type

Structure reorganization changes (shouldn't affect user scripts):

  • Various: assigned explicit "UNUSED" names to some unused enum/bitfield members
  • builtin_mats: added 640 new elements for CREATURE_1-200, HIST_FIG_1-200, PLANT_1-200, and UNUSED01-40
  • interface_key: assigned names to various anon entries
  • job_postingst: promoted flags to top-level bitfield type
  • noblelistst: promoted upplist to top-level "unitpropertyplacementst" structure
  • intrigue_corruption: promoted flags to top-level bitfield type
  • plant_raw: changed stockpile_growth_flags to store ras_crop_flag instead of inline duplicate
  • stockpile_category: added "ALL" at end

Layout fixes (shouldn't affect user scripts):

  • adventure_interface_companionsst: scrolling was in wrong place
  • caste_raw: swapped litter_size_min and litter_size_max
  • entity_position_assignment: added missing "temp" member at end
  • message_order_to_perform_actionst: inserted missing "action" field

Cosmetic changes:

  • army_controller_goal_infiltrate_societyst: agoal_ab_id -> goal_ab_id
  • creature_graphics_layerst: dye_color_iuse_palette_rowndex -> use_palette_row
  • hf_religious_datast: anon_1 -> belief_system_id
  • historical_entity: unkarmy_reeling_defense -> army_reeling_defense
  • history_event_hf_learns_secretst: interaction_effect -> interaction_source
  • item_craft_graphics_flag: size -> material
  • lookinfo_spatterst: extend -> extent
  • personality_ethicst: reponse -> response
  • personality_facet_type: PERSEVERENCE -> PERSEVERANCE
  • pet_profilest: anon_1 -> journey_race
  • poetic_form_action: MakeConsession -> MakeConcession
  • simple_action_type: performe_horrible_experiments -> performed_horrible_experiments
  • stair_graphics_flag_material: FOZEN -> FROZEN
  • timbre_type: PURE_ -> PURE
  • tissue_style_type: PONY_TAILS -> PONY_TAIL
  • unit: pool_index -> pool_id
  • unit_vision_arcst: anon_1 -> tri
  • value_type: PERSEVERENCE -> PERSEVERANCE
  • viewscreen_choose_start_sitest: def_candidate_nearst -> def_candidate_near_st

Type changes:

  • building_def: graphics_normal and graphics_overlay changed from uint32_t to int32_t
  • caste_raw: fixed type of blood_state and pus_state
  • d_init_displayst: track_tile_invert and track_ramp_invert now use the "tile_flag" bitfield
  • interaction_profilest: changed use_display_name from int8_t to uint8_t
  • interrogation_resultst: changed relationship_factor to new "interrogation_result_rel_factor_type" enum
  • intrigue_perspectivest: vector potential_corrupt_circumstance_target now contains circumstance_id unions instead of int32_t
  • item_handlerst: other.BAG, other.BOLT_THROWER_PARTS, other.ANY_DRINK, other.ANY_CRITTER, and other.FOOD_STORAGE now have proper types
  • large_integer: changed low_part members from long to unsigned long
  • main_interface: changed last_displayed_hover_inst from int32_t to main_hover_instruction enum
  • musicst: m_event and m_context now store enums instead of int32_t
  • taskst: demoted "flags" from unknown bitfield to plain uint32_t
  • unit: changed uwss_flag from uint32_t to unit_wound_special_stats_flag
  • vehicle_ram_graphics_flag: "segment_type" changed from plain integer to "vehicle_ram_graphics_flag_segment_type" enum
  • widget_job_details_button: "jb" changed from raw pointer to job pointer
  • world_generatorst: changed rejection_reason from int16_t to map_reject_type enum
  • world_history: changed first__flag from uint32_t to knowledge_scholar_flags_* enums

VMethod changes:

  • history_event: vmethods "getSentence" and "getPhrase" now take 2 extra bool parameters (which the game currently ignores)
  • interaction_target: vmethod "affects_unit" first parameter changed from int32_t to unit pointer
  • item: vmethod "getGloveHandedness" return type changed from int8_t to uint32_t
  • item: vmethod "getAmmoType" now returns std::string by value instead of taking a pointer as a parameter
  • item: vmethod "getDyeAmount" now takes an int32 parameter
  • unit: vmethod "getCreatureTile" now takes a bool parameter

Compound changes:

  • Various: added missing ref-target specifications
  • caste_raw: changed vermin_bite_chance to vermin_bite_state and fixed type
  • ci_personal_reputation_profilest: changed entity_id to cultural_identity_id and updated ref-target
  • cultural_identity: events changed to rumor_info.events
  • dance_form: changed entity to event and updated ref-target
  • dance_form_section: changed acts_out_civ to acts_out_event and updated ref-target
  • entity_burial_requestst: changed civ to hfid and updated ref-target
  • entity_pop_specifierst: chaned squad_id to squad_enid and updated ref-target
  • graphic: changed color[][] to default_palette.color[]
  • history_event_modified_buildingst: modification now uses abstract_building_tower_flag, bitfield names differ
  • itemdef_ammost: exploded "texpos" array into actual fields
  • itemdef_siegeammost: exploded "texpos" array into actual fields
  • itemdef_toolst: exploded "texpos" and "texpos2" arrays into actual fields
  • itemdef_trapcompst: exploded "texpos" array into actual fields
  • itemdef_weaponst: exploded "texpos" array into actual fields
  • knowledge_profilest: changed known_events to rumor_info.events
  • language_word: s_empty and l_empty changed into single-element arrays
  • relationship_event_supplement: (int32_t)occasion_type changed to (unit_thought_type)circumstance
  • relationship_event_supplement: (int32_t)site changed to (circumstance_id)circumstance_id
  • relationship_event_supplement: (profession)profession changed to (history_event_reason_id)reason_id
  • scholar_knowledgest: knowledge_goal changed from unknown bitfield to union of all knowledge_scholar_flags bitfields
  • unit: changed enemy.rumor to enemy.rumor_info.events
  • workshop_graphics_infost: changed texpos from single int32_t to 4x31x32 array

And fix a handful of other errors I encountered along the way.

Added NONE entries to enums (may affect C++ code):
* abstract_building_reputation_type
* adopt_region_stage_type
* artifact_claim_type
* block_square_event_type
* building_profile_acquisition_method
* civzone_type
* dance_form_context
* dance_form_group_size
* dance_form_move_type
* divination_outcome_type
* dungeon_type
* dungeon_wrestle_type
* embark_finder_option
* environment_type
* era_type
* flow_type
* genetic_modifier_type
* hf_artifact_action_type
* history_event_collection_type
* incident_artifact_location_type
* incident_type
* incident_written_content_location_type
* insurrection_outcome
* interaction_flags
* interaction_source_type
* intrigue_corruption_method_type
* inventory_profile_skill_type
* inv_item_role_type
* journey_type
* language_name_category
* language_name_component
* language_word_table_index
* load_game_stage_type
* main_choice_type
* misc_trait_type
* musical_form_melody_frequency
* musical_form_melody_style
* musical_form_purpose
* occasion_schedule_feature
* occasion_schedule_type
* occupation_type
* personality_preference_type
* plant_material_def
* poetic_form_persona_type
* poetic_form_persona_type
* prepare_rod_stage_type
* projectile_type
* region_weather_type
* report_zoom_type
* resource_allotment_specifier_type
* save_substage
* scale_construction_type
* scale_naming_type
* scale_type
* secretion_condition
* simple_action_type
* site_dispute_type
* squad_order_cannot_reason
* squad_order_type
* tactical_situation
* talk_choice_type
* theft_method_type
* timbre_type
* travel_log_itinerary_type
* workquota_frequency_type
* world_construction_type
* wrestle_attack_type

Structure reorganization changes (shouldn't affect user scripts):
* Various: assigned explicit "UNUSED" names to some unused enum/bitfield members
* builtin_mats: added 640 new elements for CREATURE_1-200, HIST_FIG_1-200, PLANT_1-200, and UNUSED01-40
* interface_key: assigned names to various anon entries
* job_postingst: promoted flags to top-level bitfield type
* noblelistst: promoted upplist to top-level "unitpropertyplacementst" structure
* intrigue_corruption: promoted flags to top-level bitfield type
* plant_raw: changed stockpile_growth_flags to store ras_crop_flag instead of inline duplicate
* stockpile_category: added "ALL" at end

Layout fixes (shouldn't affect user scripts):
* adventure_interface_companionsst: scrolling was in wrong place
* caste_raw: swapped litter_size_min and litter_size_max
* entity_position_assignment: added missing "temp" member at end
* message_order_to_perform_actionst: inserted missing "action" field

Cosmetic changes:
* army_controller_goal_infiltrate_societyst: agoal_ab_id -> goal_ab_id
* creature_graphics_layerst: dye_color_iuse_palette_rowndex -> use_palette_row
* hf_religious_datast: anon_1 -> belief_system_id
* historical_entity: unkarmy_reeling_defense -> army_reeling_defense
* history_event_hf_learns_secretst: interaction_effect -> interaction_source
* item_craft_graphics_flag: size -> material
* lookinfo_spatterst: extend -> extent
* personality_ethicst: reponse -> response
* personality_facet_type: PERSEVERENCE -> PERSEVERANCE
* pet_profilest: anon_1 -> journey_race
* poetic_form_action: MakeConsession -> MakeConcession
* simple_action_type: performe_horrible_experiments -> performed_horrible_experiments
* stair_graphics_flag_material: FOZEN -> FROZEN
* timbre_type: PURE_ -> PURE
* tissue_style_type: PONY_TAILS -> PONY_TAIL
* unit: pool_index -> pool_id
* unit_vision_arcst: anon_1 -> tri
* value_type: PERSEVERENCE -> PERSEVERANCE
* viewscreen_choose_start_sitest: def_candidate_nearst -> def_candidate_near_st

Type changes:
* building_def: graphics_normal and graphics_overlay changed from uint32_t to int32_t
* caste_raw: fixed type of blood_state and pus_state
* d_init_displayst: track_tile_invert and track_ramp_invert now use the "tile_flag" bitfield
* interaction_profilest: changed use_display_name from int8_t to uint8_t
* interrogation_resultst: changed relationship_factor to new "interrogation_result_rel_factor_type" enum
* intrigue_perspectivest: vector potential_corrupt_circumstance_target now contains circumstance_id unions instead of int32_t
* item_handlerst: other.BAG, other.BOLT_THROWER_PARTS, other.ANY_DRINK, other.ANY_CRITTER, and other.FOOD_STORAGE now have proper types
* large_integer: changed low_part members from long to unsigned long
* main_interface: changed last_displayed_hover_inst from int32_t to main_hover_instruction enum
* musicst: m_event and m_context now store enums instead of int32_t
* taskst: demoted "flags" from unknown bitfield to plain uint32_t
* unit: changed uwss_flag from uint32_t to unit_wound_special_stats_flag
* vehicle_ram_graphics_flag: "segment_type" changed from plain integer to "vehicle_ram_graphics_flag_segment_type" enum
* widget_job_details_button: "jb" changed from raw pointer to job pointer
* world_generatorst: changed rejection_reason from int16_t to map_reject_type enum
* world_history: changed first_*_flag* from uint32_t to knowledge_scholar_flags_* enums

VMethod changes:
* history_event: vmethods "getSentence" and "getPhrase" now take 2 extra bool parameters (which the game currently ignores)
* interaction_target: vmethod "affects_unit" first parameter changed from int32_t to unit pointer
* item: vmethod "getGloveHandedness" return type changed from int8_t to uint32_t
* item: vmethod "getAmmoType" now returns std::string by value instead of taking a pointer as a parameter
* item: vmethod "getDyeAmount" now takes an int32 parameter
* unit: vmethod "getCreatureTile" now takes a bool parameter

Compound changes:
* Various: added missing ref-target specifications
* caste_raw: changed vermin_bite_chance to vermin_bite_state and fixed type
* ci_personal_reputation_profilest: changed entity_id to cultural_identity_id and updated ref-target
* cultural_identity: events changed to rumor_info.events
* dance_form: changed entity to event and updated ref-target
* dance_form_section: changed acts_out_civ to acts_out_event and updated ref-target
* entity_burial_requestst: changed civ to hfid and updated ref-target
* entity_pop_specifierst: chaned squad_id to squad_enid and updated ref-target
* graphic: changed color[][] to default_palette.color[]
* history_event_modified_buildingst: modification now uses abstract_building_tower_flag, bitfield names differ
* itemdef_ammost: exploded "texpos" array into actual fields
* itemdef_siegeammost: exploded "texpos" array into actual fields
* itemdef_toolst: exploded "texpos" and "texpos2" arrays into actual fields
* itemdef_trapcompst: exploded "texpos" array into actual fields
* itemdef_weaponst: exploded "texpos" array into actual fields
* knowledge_profilest: changed known_events to rumor_info.events
* language_word: s_empty and l_empty changed into single-element arrays
* relationship_event_supplement: (int32_t)occasion_type changed to (unit_thought_type)circumstance
* relationship_event_supplement: (int32_t)site changed to (circumstance_id)circumstance_id
* relationship_event_supplement: (profession)profession changed to (history_event_reason_id)reason_id
* scholar_knowledgest: knowledge_goal changed from unknown bitfield to union of all knowledge_scholar_flags bitfields
* unit: changed enemy.rumor to enemy.rumor_info.events
* workshop_graphics_infost: changed texpos from single int32_t to 4x31x32 array
@quietust
Copy link
Member Author

quietust commented Feb 3, 2026

Required DFHack change:

diff --git a/library/modules/Maps.cpp b/library/modules/Maps.cpp
index 6f449dc2f..7eef6fcf2 100644
--- a/library/modules/Maps.cpp
+++ b/library/modules/Maps.cpp
@@ -655,6 +655,8 @@ bool Maps::SortBlockEvents(df::map_block *block,
             if (priorities)
                 priorities->push_back((df::block_square_event_designation_priorityst *)evt);
             break;
+        case block_square_event_type::NONE:
+            break;
         }
     }
     return true;

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant