Replace the opaque char __unknown1C[40] with a tag-less nested struct burst_alignment {long time; boolean aligned; boolean aligned_immediately; real_vector3d weapon_vector; real_vector3d aim_vector; real threshold; real alignment;} at +0x34..+0x5B. Layout identical; widths proven by the January _actor_combat_update writes (+0x87A..+0x95C). Names are inferred from those writes (no January reader exists). Flat spellings regress units by declaration count; the nested aggregate does not.
Prerequisite header packet P1 (150K lane). Shadow-tree blast over all 26 consumers (actions action_charge action_obey action_uncover action_vehicle actors actor_combat actor_firing_position actor_looking actor_moving actor_perception actor_stimulus ai ai_communication ai_debug ai_script encounters path players debug_keys objects game_state structure_visibility bipeds units unit_dialogue ): 0 function status changes from the header alone. Live tree with the dependent actor_combat.c commit: full ninja, stable diff +1 gained / 0 regressions.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Replaces the placeholder ai_debug_actor_record fields and the 0x7D384 block with struct firing_position / firing_position_evaluation_context (layout proven by the retained offset asserts) and renames the consumers in ai_debug.c and actor_firing_position.c (names only). Consumer audit: all 27 ai_debug.h includers rebuilt; 0 strict regressions; the speech-timer park flips to its previously proven second flag-neutral load order (re-measured, evidence appended).
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
* wip objects.c work
* objects_disconnect_from_structure_bsp
* match more functions
* more objects work
* objects_update work
- 93.42% matching
* match matrix4x3_transform_point
* more objects work
- fix duplicate symbol name at 1870800
* match object_choose_random_change_colors
* match object_update
* objects_garbage_collection work
* match object_set_position
* more object work
* match objects_update
* more object work
* match object_select_random_region_permutations_by_variant
* objects_in_sphere work
99.90% match
* object name list calls
* match objects_in_sphere
* misc matches
* match structure_bsp_definitions object
* match objects_in_clusters_by_indices
* more object work
* match `edit_text_handle_key`
* mark edit_text as matching
* misc changes
- match get_next_character
- match data section in objects.c
* object_export_function_values work
* match object_compute_function_values
* match object_get_orientation
* added functions and adjust formatting
* fix profile macros
* formatting changes
* more formatting
* more formatting
---------
Co-authored-by: punpckhdq <121350336+punpckhdq@users.noreply.github.com>
* debug_keys work
* requested changes
* prototypes and mark debug_keys as matching
* Formatting
---------
Co-authored-by: punpckhdq <121350336+punpckhdq@users.noreply.github.com>