Advertisement
liquidspark

halo_bitfields.h

Apr 7th, 2019
250
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 33.99 KB | None | 0 0
  1. #ifndef halo_bitfields
  2. #define halo_bitfields
  3.  
  4. #include <stdbool.h>
  5. #include <stdint.h>
  6. // Note that when compiled into a map cache file, some bitfields are grouped with previous bytes that were handled as padding by Guerilla; evidence of this is available to see in map cache files where big to little endian order has swapped more bytes of the bitfields than Guerilla writes. An example of this is struct halo_effe_events_parts_flags_bf where the untouched previous padding byte is swapped as if it were part of a 16-bit bitfield instead of separate from the 8-bit bitfield. It's probably an inconsistency mistake with the Halo Editing Kit, where Tool is calling an 8-bit bitfield a 16-bit bitfield.
  7. // Note that several of these are common between tag classes.
  8. #pragma mark common
  9.  
  10. // marking compatible tag classes for dependencies
  11. struct halo_tag_classes_bf
  12. {
  13.     bool blam:1;
  14.     bool actr:1;
  15.     bool actv:1;
  16.     bool ant:1;
  17.     bool antr:1;
  18.     bool bipd:1;
  19.     bool bitm:1;
  20.     bool boom:1;
  21.     bool cdmg:1;
  22.     bool coll:1;
  23.     bool colo:1;
  24.     bool cont:1;
  25.     bool ctrl:1;
  26.     bool deca:1;
  27.     bool DeLa:1;
  28.     bool devc:1;
  29.     bool devi:1;
  30.     bool dobc:1;
  31.     bool effe:1;
  32.     bool elec:1;
  33.     bool eqip:1;
  34.     bool flag:1;
  35.     bool fog:1;
  36.     bool font:1;
  37.     bool foot:1;
  38.     bool garb:1;
  39.     bool glw:1;
  40.     bool grhi:1;
  41.     bool hmt:1;
  42.     bool hudg:1;
  43.     bool hudn:1;
  44.     bool item:1;
  45.     bool itmc:1;
  46.     bool jpt:1;
  47.     bool lens:1;
  48.     bool lifi:1;
  49.     bool ligh:1;
  50.     bool lsnd:1;
  51.     bool mach:1;
  52.     bool matg:1;
  53.     bool metr:1;
  54.     bool mgs2:1;
  55.     bool mod2:1;
  56.     bool mode:1;
  57.     bool mply:1;
  58.     bool ngpr:1;
  59.     bool obje:1;
  60.     bool part:1;
  61.     bool pctl:1;
  62.     bool phys:1;
  63.     bool plac:1;
  64.     bool pphy:1;
  65.     bool proj:1;
  66.     bool rain:1;
  67.     bool sbsp:1;
  68.     bool scen:1;
  69.     bool scex:1;
  70.     bool schi:1;
  71.     bool scnr:1;
  72.     bool senv:1;
  73.     bool sgla:1;
  74.     bool shdr:1;
  75.     bool sky:1;
  76.     bool smet:1;
  77.     bool snd:1;
  78.     bool snde:1;
  79.     bool soso:1;
  80.     bool sotr:1;
  81.     bool Soul:1;
  82.     bool spla:1;
  83.     bool ssce:1;
  84.     bool strn:1;
  85.     bool swat:1;
  86.     bool tagc:1;
  87.     bool trak:1;
  88.     bool udlg:1;
  89.     bool unhi:1;
  90.     bool unit:1;
  91.     bool ustr:1;
  92.     bool vcky:1;
  93.     bool vehi:1;
  94.     bool weap:1;
  95.     bool wind:1;
  96.     bool wphi:1;
  97. };
  98.  
  99. // common
  100. struct halo_bsp_leaf_flags_bf   // 8-bit 0x01
  101. {
  102.     bool contains_double_sided_surfaces:1;
  103. };
  104.  
  105. struct halo_bsp_surface_flags_bf    // 8-bit 0x0F
  106. {
  107.     bool two_sided:1;
  108.     bool invisible:1;
  109.     bool climbable:1;
  110.     bool breakable:1;
  111. };
  112.  
  113. /*
  114.  the following is simplified from examples of:
  115.  
  116.  blend_in_hsv
  117.  interpolate_color_in_hsv
  118.  interpolate_colors_in_hsv
  119.  interpolate_color_along_hsv_space
  120.  interpolate_tint_as_hsv
  121.  ...and...
  122.  more_colors
  123.  more_color
  124.  more_colors_for_hsv_interpolation
  125.  along_long_hue_path
  126.  across_the_long_hue_path
  127.  
  128.  because they are described as doing similar things
  129.  */
  130. struct halo_color_interpolation_flags_bf    // 32-bit 0x00000003 [lens, mgs2: 8-bit]
  131. {
  132.     bool blend_in_hsv:1;
  133.     bool more_colors:1;
  134. };
  135.  
  136. struct halo_map_flags_bf    // 8-bit 0x01
  137. {
  138.     bool unfiltered:1;
  139. };
  140.  
  141. // common damage
  142. struct halo_damage_flags_bf // 32-bit 0x00001FFF
  143. {
  144.     bool does_not_hurt_owner:1;
  145.     bool can_cause_headshots:1;
  146.     bool pings_resistant_units:1;
  147.     bool does_not_hurt_friends:1;
  148.     bool does_not_ping_units:1;
  149.     bool detonates_explosives:1;
  150.     bool only_hurts_shields:1;
  151.     bool causes_flaming_death:1;
  152.     bool damage_indicators_always_point_down:1;
  153.     bool skips_shields:1;
  154.     bool only_hurts_one_infection_form:1;
  155.     bool can_cause_multiplayer_headshots:1;
  156.     bool infection_form_pop:1;
  157. };
  158.  
  159. // common HUD
  160. struct halo_hud_scaling_flags_bf    // 8-bit 0x07
  161. {
  162.     bool dont_scale_offset:1;
  163.     bool dont_scale_size:1;
  164.     bool use_high_res_scale:1;
  165. };
  166.  
  167. struct halo_hud_flash_flags_bf  // 8-bit 0x01
  168. {
  169.     bool reverse_default_flashing_colors:1;
  170. };
  171.  
  172. struct halo_hud_numbers_flags_bf    // 8-bit 0x07
  173. {
  174.     bool show_leading_zeros:1;
  175.     bool only_show_when_zoomed:1;
  176.     bool draw_a_trailing_m:1;
  177. };
  178.  
  179. struct halo_hud_messaging_flags_bf  // 8-bit 0x07
  180. {
  181.     bool use_text_from_string_list_instead:1;
  182.     bool override_default_color:1;
  183.     bool width_offset_is_absolute_icon_width:1;
  184. };
  185.  
  186. struct halo_hud_overlays_type_flags_bf  // 8-bit 0x0F
  187. {
  188.     bool show_on_flashing:1;
  189.     bool show_on_empty:1;
  190.     bool show_on_default:1;
  191.     bool show_always:1;
  192. };
  193.  
  194. struct halo_hud_overlays_flash_flags_bf // 32-bit 0x00000001
  195. {
  196.     bool flashes_when_active:1;
  197. };
  198.  
  199. struct halo_hud_color_flags_bf  // 8-bit 0x1F
  200. {
  201.     bool use_min_max_for_state_changes:1;
  202.     bool interpolate_between_min_max_flash_colors_as_state_changes:1;
  203.     bool interpolate_color_along_hsv_space:1;
  204.     bool more_colors_for_hsv_interpolation:1;
  205.     bool invert_interpolation:1;
  206. };
  207.  
  208. // common model
  209. struct halo_model_flags_bf  // 32-bit 0x00000007
  210. {
  211.     bool blend_shared_normals:1;
  212.     bool parts_have_local_nodes:1;
  213.     bool ignore_skinning:1;
  214. };
  215.  
  216. // common_model_r3scA_permutations
  217. struct halo_model_region_permutation_flags_bf   // 32-bit 0x00000001
  218. {
  219.     bool cannot_be_chosen_randomly:1;
  220. };
  221.  
  222. // common_model_r4scA_parts
  223. struct halo_model_geometry_part_flags_bf    // 32-bit 0x00000003
  224. {
  225.     bool stripped_internal:1;
  226.     bool zoner:1;
  227. };
  228.  
  229. // common_particle_shader
  230. struct halo_particle_shader_flags_bf    // 8-bit 0x07
  231. {
  232.     bool sort_bias:1;
  233.     bool nonlinear_tint:1;
  234.     bool dont_overdraw_fp_weapon:1;
  235. };
  236.  
  237. // common_scnr_obje
  238. struct halo_scenario_object_not_placed_flags_bf // 8-bit 0x0F
  239. {
  240.     bool automatically:1;
  241.     bool on_easy:1;
  242.     bool on_normal:1;
  243.     bool on_hard:1;
  244. };
  245.  
  246. // common_scnr_unit
  247. struct halo_scenario_unit_flags_bf  // 32-bit 0x00000001
  248. {
  249.     bool dead:1;
  250. };
  251.  
  252. // common_scnr_devi
  253. struct halo_scenario_device_flags_bf    // 32-bit 0x0000001F
  254. {
  255.     bool initially_open:1;
  256.     bool initially_off:1;
  257.     bool can_change_only_once:1;
  258.     bool position_reversed:1;
  259.     bool not_usable_from_any_side:1;
  260. };
  261.  
  262. // common shader
  263. struct halo_transparent_shader_flags_bf // 8-bit 0xFF
  264. {
  265.     bool alpha_tested:1;
  266.     bool decal:1;
  267.     bool two_sided:1;
  268.     bool first_map_is_in_screenspace:1;
  269.     bool draw_before_water:1;
  270.     bool ignore_effect:1;
  271.     bool scale_first_map_with_distance:1;
  272.     bool numeric:1;
  273. };
  274.  
  275. #pragma mark actr
  276.  
  277. struct halo_actr_flags_bf   // 32-bit 0xFFFFFFFF
  278. {
  279.     bool can_see_in_darkness:1;
  280.     bool sneak_uncovering_target:1;
  281.     bool sneak_uncovering_pursuit_position:1;
  282.     bool unused_1:1;
  283.     bool shoot_at_targets_last_location:1;
  284.     bool try_to_stay_still_when_crouched:1;
  285.     bool crouch_when_not_in_combat:1;
  286.     bool crouch_when_guarding:1;
  287.     bool unused_2:1;
  288.     bool must_crouch_to_shoot:1;
  289.     bool panic_when_surprised:1;
  290.     bool always_charge_at_enemies:1;
  291.     bool gets_in_vehicles_with_player:1;
  292.     bool start_firing_before_aligned:1;
  293.     bool standing_must_move_forward:1;
  294.     bool crouching_must_move_forward:1;
  295.     bool defensive_crouch_while_charging:1;
  296.     bool use_stalking_behavior:1;
  297.     bool stalking_freeze_if_exposed:1;
  298.     bool always_berserk_in_attacking_mode:1;
  299.     bool berserking_uses_panicked_movement:1;
  300.     bool flying:1;
  301.     bool panicked_by_unopposable_enemy:1;
  302.     bool crouch_when_hiding_from_unopposable:1;
  303.     bool always_charge_in_attacking_mode:1;
  304.     bool dive_off_ledges:1;
  305.     bool swarm:1;
  306.     bool suicidal_melee_attack:1;
  307.     bool cannot_move_while_crouching:1;
  308.     bool fixed_crouch_facing:1;
  309.     bool crouch_when_in_line_of_fire:1;
  310.     bool avoid_friends_lines_of_fire:1;
  311. };
  312.  
  313. struct halo_actr_more_flags_bf  // 32-bit 0x0000007F
  314. {
  315.     bool avoid_all_enemy_attack_vectors:1;
  316.     bool must_stand_to_fire:1;
  317.     bool must_stop_to_fire:1;
  318.     bool disallow_vehicle_combat:1;
  319.     bool pathfinding_ignores_danger:1;
  320.     bool panic_in_groups:1;
  321.     bool no_corpse_shooting:1;
  322. };
  323.  
  324. #pragma mark actv
  325.  
  326. struct halo_actv_flags_bf   // 32-bit 0x000000FF
  327. {
  328.     bool can_shoot_while_flying:1;
  329.     bool interpolate_color_in_HSV:1;
  330.     bool has_unlimited_grenades:1;
  331.     bool moveswitch_stay_with_friends:1;
  332.     bool active_camouflage:1;
  333.     bool super_active_camouflage:1;
  334.     bool cannot_use_ranged_weapons:1;
  335.     bool prefer_passenger_seat:1;
  336. };
  337.  
  338. #pragma mark ant
  339.  
  340. #pragma mark antr
  341.  
  342. struct halo_antr_flags_bf   // 8-bit 0x03
  343. {
  344.     bool compress_all_animations:1;
  345.     bool force_idle_compression:1;
  346. };
  347.  
  348. // antr_r9c_nodes
  349. struct halo_antr_nodes_node_joint_flags_bf  // 32-bit 0x00000007
  350. {
  351.     bool ball_socket:1;
  352.     bool hinge:1;
  353.     bool no_movement:1;
  354. };
  355.  
  356. // antr_r10c_animations
  357. struct halo_antr_animations_flags_bf    // 8-bit 0x07
  358. {
  359.     bool compressed_data:1;
  360.     bool world_relative:1;
  361.     bool pal_25hz:1;
  362. };
  363.  
  364. #pragma mark bipd
  365.  
  366. struct halo_bipd_flags_bf   // 32-bit 0x00001FFF
  367. {
  368.     bool turns_without_animating:1;
  369.     bool uses_player_physics:1;
  370.     bool flying:1;
  371.     bool physics_pill_centered_at_origin:1;
  372.     bool spherical:1;
  373.     bool passes_through_other_bipeds:1;
  374.     bool can_climb_any_surface:1;
  375.     bool immune_to_falling_damage:1;
  376.     bool rotate_while_airborne:1;
  377.     bool uses_limp_body_physics:1;
  378.     bool has_no_dying_airborne:1;
  379.     bool random_speed_increase:1;
  380.     bool unit_uses_old_ntsc_player_physics:1;
  381. };
  382.  
  383. #pragma mark bitm
  384.  
  385. struct halo_bitm_usage_flags_bf // 8-bit 0x0F
  386. {
  387.     bool enable_diffusion_dithering:1;
  388.     bool disable_height_map_compression:1;
  389.     bool uniform_sprite_sequences:1;
  390.     bool filthy_sprite_bug_fix:1;
  391. };
  392.  
  393. // bitm_r2c_bitmaps
  394. // Even though the first byte is not used, Guerilla will crash if it is anything besides 0x00 (update: both bytes are used, not all flags are listed in Guerilla, only 6 shown of at least 9)
  395. struct halo_bitm_bitmaps_flags_bf   // 16-bit (0x01FF ?)
  396. {
  397.     bool power_of_two_dimensions:1;
  398.     bool compressed:1;
  399.     bool palettized:1;
  400.     bool swizzled:1;
  401.     bool linear:1;
  402.     bool v16u16:1;
  403.     bool unknown1:1;
  404.     bool unknown2:1;
  405.     bool unknown3:1;
  406. };
  407.  
  408. #pragma mark boom
  409.  
  410. #pragma mark cdmg
  411.  
  412. #pragma mark coll
  413.  
  414. struct halo_coll_flags_bf   // 32-bit 0x0000007F
  415. {
  416.     bool takes_shield_damage_for_children:1;
  417.     bool takes_body_damage_for_children:1;
  418.     bool always_shields_friendly_damage:1;
  419.     bool passes_area_damage_to_children:1;
  420.     bool parent_never_takes_body_damage_for_us:1;
  421.     bool only_damaged_by_explosives:1;
  422.     bool only_damaged_while_occupied:1;
  423. };
  424.  
  425. // coll_r1c_materials
  426. struct halo_coll_materials_flags_bf // 32-bit 0x00000001
  427. {
  428.     bool head:1;
  429. };
  430.  
  431. // coll_r2c_regions
  432. struct halo_coll_regions_flags_bf   // 32-bit 0x000003FF
  433. {
  434.     bool lives_until_object_dies:1;
  435.     bool forces_object_to_die:1;
  436.     bool dies_when_object_dies:1;
  437.     bool dies_when_object_is_damaged:1;
  438.     bool disappears_when_shield_is_off:1;
  439.     bool inhibits_melee_attack:1;
  440.     bool inhibits_weapon_attack:1;
  441.     bool inhibits_walking:1;
  442.     bool forces_drop_weapon:1;
  443.     bool causes_head_maimed_scream:1;
  444. };
  445.  
  446. #pragma mark colo
  447.  
  448. #pragma mark cont
  449.  
  450. struct halo_cont_flags_bf   // 8-bit 0x7F
  451. {
  452.     bool first_point_unfaded:1;
  453.     bool last_point_unfaded:1;
  454.     bool points_start_pinned_to_media:1;
  455.     bool points_start_pinned_to_ground:1;
  456.     bool points_always_pinned_to_media:1;
  457.     bool points_always_pinned_to_ground:1;
  458.     bool edge_effect_fades_slowly:1;
  459. };
  460.  
  461. struct halo_cont_scale_flags_bf // 16-bit 0x03FF
  462. {
  463.     bool point_generation_rate:1;
  464.     bool point_velocity:1;
  465.     bool point_velocity_delta:1;
  466.     bool point_velocity_cone_angle:1;
  467.     bool inherited_velocity_fraction:1;
  468.     bool sequence_animation_rate:1;
  469.     bool texture_scale_u:1;
  470.     bool texture_scale_v:1;
  471.     bool texture_animation_u:1;
  472.     bool texture_animation_v:1;
  473. };
  474.  
  475. // cont_r1c_point_states
  476. struct halo_cont_point_states_scale_flags_bf    // 32-bit 0x0000003F
  477. {
  478.     bool duration:1;
  479.     bool duration_delta:1;
  480.     bool transition_duration:1;
  481.     bool transition_duration_delta:1;
  482.     bool width:1;
  483.     bool color:1;
  484. };
  485.  
  486. #pragma mark ctrl
  487.  
  488. #pragma mark deca
  489.  
  490. struct halo_deca_flags_bf   // 16-bit 0x01FF
  491. {
  492.     bool geometry_inherited_by_next_decal_in_chain:1;
  493.     bool interpolate_color_in_hsv:1;
  494.     bool more_colors:1;
  495.     bool no_random_rotation:1;
  496.     bool water_effect:1;
  497.     bool sapien_snap_to_axis:1;
  498.     bool sapien_incremental_counter:1;
  499.     bool animation_loop:1;
  500.     bool preserve_aspect:1;
  501. };
  502.  
  503. #pragma mark DeLa
  504.  
  505. struct halo_dela_flags_bf   // 32-bit 0x0000FFFF
  506. {
  507.     bool pass_unhandled_events_to_focused_child:1;
  508.     bool pause_game_time:1;
  509.     bool flash_background_bitmap:1;
  510.     bool dpad_up_down_tabs_through_children:1;
  511.     bool dpad_left_right_tabs_through_children:1;
  512.     bool dpad_up_down_tabs_through_list_items:1;
  513.     bool dpad_left_right_tabs_through_list_items:1;
  514.     bool dont_focus_a_specific_child_widget:1;
  515.     bool pass_unhandled_events_to_all_children:1;
  516.     bool render_regardless_of_controller_index:1;
  517.     bool pass_handled_events_to_all_children:1;
  518.     bool return_to_main_menu_if_no_history:1;
  519.     bool always_use_tag_controller_index:1;
  520.     bool always_use_nifty_render_fx:1;
  521.     bool dont_push_history:1;
  522.     bool force_handle_mouse:1;
  523. };
  524.  
  525. struct halo_dela_text_box_flags_bf  // 32-bit 0x0000000F
  526. {
  527.     bool editable:1;
  528.     bool password:1;
  529.     bool flashing:1;
  530.     bool dont_do_that_weird_focus_test:1;
  531. };
  532.  
  533. struct halo_dela_list_items_bf  // 32-bit 0x0000000F
  534. {
  535.     bool list_items_generated_in_code:1;
  536.     bool list_items_from_string_list_tag:1;
  537.     bool list_items_only_one_tooltip:1;
  538.     bool list_single_preview_no_scroll:1;
  539. };
  540.  
  541. // DeLa_r2c_event_handlers
  542. struct halo_dela_event_handlers_flags_bf    // 32-bit 0x00000BFF
  543. {
  544.     bool close_current_widget:1;
  545.     bool close_other_widget:1;
  546.     bool close_all_widgets:1;
  547.     bool open_widget:1;
  548.     bool reload_self:1;
  549.     bool reload_other_widget:1;
  550.     bool give_focus_to_widget:1;
  551.     bool run_function:1;
  552.     bool replace_self_with_widget:1;
  553.     bool go_back_to_previous_widget:1;
  554.     bool blank:1;
  555.     bool try_to_branch_on_failure:1;
  556. };
  557.  
  558. // DeLa_r4c_conditional_widgets
  559. struct halo_dela_conditional_widgets_flags_bf   // 32-bit 0x00000001
  560. {
  561.     bool load_if_event_handler_function_fails:1;
  562. };
  563.  
  564. // DeLa_r5c_child_widgets
  565. struct halo_dela_child_widgets_flags_bf // 32-bit 0x00000001
  566. {
  567.     bool use_custom_controller_index:1;
  568. };
  569.  
  570. #pragma mark devc
  571.  
  572. struct halo_devc_flags_bf   // 8-bit 0x01
  573. {
  574.     bool unused:1;
  575. };
  576.  
  577. #pragma mark devi
  578.  
  579. struct halo_devi_flags_bf   // With the devi tag class, Guerilla misreads the first four bytes as 0x0000FFFF. This is actually a single 32-bit flags value, but only data for a 16-bit value with inverted bits is stored (meaning in the last two bytes). So when interpreting the value, the default is 0x0000FFFF with all fields checked and unchecking a field subtracts by its amount. Only the first two bits are written, so both flag values set to off yields 0xFFFC (all 1's except the first two bits). 32-bit 0xFFFF in devi; 32-bit 0x00000003 otherwise
  580. {
  581.     bool position_loops:1;
  582.     bool position_not_interpolated:1;
  583. };
  584.  
  585. #pragma mark dobc
  586.  
  587. // dobc_r1c_types
  588. struct halo_dobc_types_type_flags_bf    // 8-bit 0x0F
  589. {
  590.     bool unused1:1;
  591.     bool unused2:1;
  592.     bool interpolate_color_in_hsv:1;
  593.     bool more_colors:1;
  594. };
  595.  
  596. #pragma mark effe
  597.  
  598. struct halo_effe_flags_bf   // 32-bit 0x00000003
  599. {
  600.     bool deleted_when_attachment_deactivates:1;
  601.     bool required_for_gameplay:1;
  602. };
  603.  
  604. // effe_r2scA_parts
  605. struct halo_effe_events_parts_flags_bf  // 8-bit 0x01 (16-bit compiled)
  606. {
  607.     bool face_down_regardless_of_location_decals:1;
  608. };
  609.  
  610. struct halo_effe_events_parts_scale_modifiers_bf    // 32-bit 0x0000003F
  611. {
  612.     bool velocity:1;
  613.     bool velocity_delta:1;
  614.     bool velocity_cone_angle:1;
  615.     bool angular_velocity:1;
  616.     bool angular_velocity_delta:1;
  617.     bool type_specific_scale:1;
  618. };
  619.  
  620. // effe_r2scB_particles
  621. struct halo_effe_events_particles_flags_bf  // 32-bit 0x0000001F
  622. {
  623.     bool stay_attached_to_marker:1;
  624.     bool random_initial_angle:1;
  625.     bool tint_from_object_color:1;
  626.     bool interpolate_tint_as_hsv:1;
  627.     bool across_the_long_hue_path:1;
  628. };
  629.  
  630. struct halo_effe_events_particles_scale_modifiers_bf    // 32-bit 0x00000FFF
  631. {
  632.     bool velocity:1;
  633.     bool velocity_delta:1;
  634.     bool velocity_cone_angle:1;
  635.     bool angular_velocity:1;
  636.     bool angular_velocity_delta:1;
  637.     bool count:1;
  638.     bool count_delta:1;
  639.     bool distribution_radius:1;
  640.     bool distribution_radius_delta:1;
  641.     bool particle_radius:1;
  642.     bool particle_radius_delta:1;
  643.     bool tint:1;
  644. };
  645.  
  646. #pragma mark elec
  647.  
  648. // elec_r1c_markers
  649. struct halo_elec_markers_flags_bf   // 8-bit 0x01
  650. {
  651.     bool not_connected_to_next_marker:1;
  652. };
  653.  
  654. #pragma mark eqip
  655.  
  656. #pragma mark flag
  657.  
  658. #pragma mark fog
  659.  
  660. struct halo_fog_flags_bf    // 32-bit 0x00000007
  661. {
  662.     bool is_water:1;
  663.     bool atmosphere_dominant:1;
  664.     bool fog_screen_only:1;
  665. };
  666.  
  667. struct halo_fog_screen_layers_flags_bf  // 8-bit 0x07
  668. {
  669.     bool no_environment_multipass:1;
  670.     bool no_model_multipass:1;
  671.     bool no_texture_based_falloff:1;
  672. };
  673.  
  674. #pragma mark font
  675.  
  676. #pragma mark foot
  677.  
  678. #pragma mark garb
  679.  
  680. #pragma mark glw
  681.  
  682. struct halo_glw_glow_flags_bf   // 32-bit 0x0000003F
  683. {
  684.     bool modify_particle_color_in_range:1;
  685.     bool particles_move_backwards:1;
  686.     bool particles_move_in_both_directions:1;
  687.     bool trailing_particles_fade_over_time:1;
  688.     bool trailing_particles_shrink_over_time:1;
  689.     bool trailing_particles_slow_over_time:1;
  690. };
  691.  
  692. #pragma mark grhi
  693.  
  694. // grhi_r4c_warning_sounds
  695. struct halo_grhi_warning_sounds_flags_bf    // 32-bit 0x00000007
  696. {
  697.     bool low_grenade_count:1;
  698.     bool no_grenades_left:1;
  699.     bool throw_on_no_grenades:1;
  700. };
  701.  
  702. #pragma mark hmt
  703.  
  704. #pragma mark hudg
  705.  
  706. // hudg_r2c_waypoint_arrows
  707. struct halo_hudg_waypoint_arrows_flags_bf   // 32-bit 0x00000001
  708. {
  709.     bool dont_rotate_when_pointing_offscreen:1;
  710. };
  711.  
  712. #pragma mark hudn
  713.  
  714. #pragma mark item
  715.  
  716. struct halo_item_flags_bf   // only the first three bits are written, so all three flag values set to off yields 0xFFF8 (all 1's except the first three bits). 32-bit 0xFFFF otherwise 0x00000007
  717. {
  718.     bool always_maintains_z_up:1;
  719.     bool destroyed_by_explosions:1;
  720.     bool unaffected_by_gravity:1;
  721. };
  722.  
  723. #pragma mark itmc
  724.  
  725. #pragma mark jpt
  726.  
  727. struct halo_jpt_flags_bf    // 32-bit 0x00000001
  728. {
  729.     bool dont_scale_damage_by_distance:1;
  730. };
  731.  
  732. #pragma mark lens
  733.  
  734. struct halo_lens_bitmaps_flags_bf   // 8-bit 0x01
  735. {
  736.     bool sun:1;
  737. };
  738.  
  739. // lens_r1c_reflections
  740. struct halo_lens_reflections_flags_bf   // 8-bit 0x0F
  741. {
  742.     bool align_rotation_with_screen_center:1;
  743.     bool radius_not_scaled_by_distance:1;
  744.     bool radius_scaled_by_occlusion_factor:1;
  745.     bool occluded_by_solid_objects:1;
  746. };
  747.  
  748. #pragma mark lifi
  749.  
  750. #pragma mark ligh
  751.  
  752. struct halo_ligh_flags_bf   // 32-bit 0x0000003F
  753. {
  754.     bool dynamic:1;
  755.     bool no_specular:1;
  756.     bool dont_light_own_object:1;
  757.     bool supersize_in_first_person:1;
  758.     bool first_person_flashlight:1;
  759.     bool dont_fade_active_camouflage:1;
  760. };
  761.  
  762. #pragma mark lsnd
  763.  
  764. struct halo_lsnd_flags_bf   // 32-bit 0x00000007
  765. {
  766.     bool deafing_to_ais:1;
  767.     bool not_a_loop:1;
  768.     bool stops_music:1;
  769. };
  770.  
  771. // lsnd_r1c_tracks
  772. struct halo_lsnd_tracks_flags_bf    // 32-bit 0x00000007
  773. {
  774.     bool fade_in_at_start:1;
  775.     bool fade_out_at_stop:1;
  776.     bool fade_in_alternate:1;
  777. };
  778.  
  779. // lsnd_r2c_detail_sounds
  780. struct halo_lsnd_detail_sounds_flags_bf // 32-bit 0x00000003
  781. {
  782.     bool dont_play_with_alternate:1;
  783.     bool dont_play_without_alternate:1;
  784. };
  785.  
  786. #pragma mark mach
  787.  
  788. struct halo_mach_flags_bf   // 8-bit 0x07
  789. {
  790.     bool pathfinding_obstacle:1;
  791.     bool but_not_when_open:1;
  792.     bool elevator:1;
  793. };
  794.  
  795. #pragma mark matg
  796.  
  797. // matg_r6c_rasterizer_data
  798. struct halo_matg_active_camouflage_flags_bf // 8-bit 0x01
  799. {
  800.     bool tint_edge_density:1;
  801. };
  802.  
  803. #pragma mark metr
  804.  
  805. #pragma mark mgs2
  806.  
  807. #pragma mark mod2 mode
  808.  
  809. #pragma mark mply
  810.  
  811. #pragma mark ngpr
  812.  
  813. #pragma mark obje
  814.  
  815. struct halo_obje_flags_bf   // 8-bit 0x0F
  816. {
  817.     bool does_not_cast_shadow:1;
  818.     bool transparent_self_occlusion:1;
  819.     bool brighter_than_it_should_be:1;
  820.     bool not_a_pathfinding_obstacle:1;
  821. };
  822.  
  823. // obje_r3c_functions
  824. struct halo_obje_functions_flags_bf // 32-bit 0x00000007
  825. {
  826.     bool invert:1;
  827.     bool additive:1;
  828.     bool always_active:1;
  829. };
  830.  
  831. #pragma mark part
  832.  
  833. struct halo_part_flags_bf   // 32-bit 0x00000FFF
  834. {
  835.     bool can_animate_backwards:1;
  836.     bool animation_stops_at_rest:1;
  837.     bool animation_starts_on_random_frame:1;
  838.     bool animate_once_per_frame:1;
  839.     bool dies_at_rest:1;
  840.     bool dies_on_contact_with_structure:1;
  841.     bool tint_from_diffuse_texture:1;
  842.     bool dies_on_contact_with_water:1;
  843.     bool dies_on_contact_with_air:1;
  844.     bool self_illuminated:1;
  845.     bool random_horizontal_mirroring:1;
  846.     bool random_vertical_mirroring:1;
  847. };
  848.  
  849. #pragma mark pctl
  850.  
  851. // pctl_r2c_particle_types
  852. struct halo_pctl_particle_type_flags_bf // 32-bit (24-bit?!) 0x0003FFFF
  853. {
  854.     bool type_states_loop:1;
  855.     bool type_states_loop_forward_backward:1;
  856.     bool particle_states_loop:1;
  857.     bool particle_states_loop_forward_backward:1;
  858.     bool particles_die_in_water:1;
  859.     bool particles_die_in_air:1;
  860.     bool particles_die_on_ground:1;
  861.     bool rotational_sprites_animate_sideways:1;
  862.     bool disabled:1;
  863.     bool tint_by_effect_color:1;
  864.     bool initial_count_scales_with_effect:1;
  865.     bool minimum_count_scales_with_effect:1;
  866.     bool creation_rate_scales_with_effect:1;
  867.     bool scale_scales_with_effect:1;
  868.     bool animation_rate_scales_with_effect:1;
  869.     bool rotation_rate_scales_with_effect:1;
  870.     bool dont_draw_in_first_person:1;
  871.     bool dont_draw_in_third_person:1;
  872. };
  873.  
  874. #pragma mark phys
  875.  
  876. // phys_r2c_powered_mass_points
  877. struct halo_phys_powered_mass_points_flags_bf   // 32-bit 0x0000007F
  878. {
  879.     bool ground_friction:1;
  880.     bool water_friction:1;
  881.     bool air_friction:1;
  882.     bool water_lift:1;
  883.     bool air_lift:1;
  884.     bool thrust:1;
  885.     bool antigrav:1;
  886. };
  887.  
  888. // phys_r3c_mass_points
  889. struct halo_phys_mass_points_flags_bf   // 32-bit 0x00000001
  890. {
  891.     bool metallic:1;
  892. };
  893.  
  894. #pragma mark plac
  895.  
  896. #pragma mark pphy
  897.  
  898. struct halo_pphy_flags_bf   // 32-bit 0x0000003F
  899. {
  900.     bool flamethrower_particle_collision:1;
  901.     bool collides_with_structures:1;
  902.     bool collides_with_water_surface:1;
  903.     bool uses_simple_wind:1;
  904.     bool uses_damped_wind:1;
  905.     bool no_gravity:1;
  906. };
  907.  
  908. #pragma mark proj
  909.  
  910. struct halo_proj_flags_bf   // 32-bit 0x0000007F
  911. {
  912.     bool oriented_along_velocity:1;
  913.     bool ai_must_use_ballistic_aiming:1;
  914.     bool detonation_max_time_if_attached:1;
  915.     bool has_super_combining_explosion:1;
  916.     bool combine_initial_velocity_with_parent_velocity:1;
  917.     bool random_attached_detonation_time:1;
  918.     bool minimum_unattached_detonation_time:1;
  919. };
  920.  
  921. // proj_r6c_material_responses
  922. struct halo_proj_material_response_flags_bf // 8-bit 0x01
  923. {
  924.     bool cannot_be_overpenetrated:1;
  925. };
  926.  
  927. struct halo_proj_material_response_potential_result_flags_bf    // 8-bit 0x01
  928. {
  929.     bool only_against_units:1;
  930. };
  931.  
  932. #pragma mark rain
  933.  
  934. // rain_r1c_particle_types
  935. struct halo_rain_flags_bf   // 32-bit 0x00000007
  936. {
  937.     bool interpolate_colors_in_hsv:1;
  938.     bool along_long_hue_path:1;
  939.     bool random_rotation:1;
  940. };
  941.  
  942. #pragma mark sbsp
  943.  
  944. // sbsp_r7scA_materials
  945. struct halo_sbsp_lightmap_material_flags_bf // 8-bit 0x03
  946. {
  947.     bool coplanar_calc:1;
  948.     bool fog_plane_calc:1;
  949. };
  950.  
  951. // sbsp_r11c_cluster_portals
  952. struct halo_sbsp_cluster_portal_flags_bf    // 32-bit 0x00000001
  953. {
  954.     bool ai_cant_hear_through_this:1;
  955. };
  956.  
  957. #pragma mark scen
  958.  
  959. #pragma mark scex (uses schi)
  960.  
  961. #pragma mark schi
  962.  
  963. struct halo_schi_extra_flags_bf // 32-bit 0x00000003
  964. {
  965.     bool dont_fade_active_camouflage:1;
  966.     bool numeric_countdown_timer:1;
  967. };
  968.  
  969. // schi_r2c_maps
  970. struct halo_schi_map_flags_bf   // 8-bit 0x0F
  971. {
  972.     bool unfiltered:1;
  973.     bool alpha_replicate:1;
  974.     bool u_clamped:1;
  975.     bool v_clamped:1;
  976. };
  977.  
  978. #pragma mark scnr
  979.  
  980. struct halo_scnr_flags_bf   // 8-bit 0x03
  981. {
  982.     bool cortana_hack:1;
  983.     bool use_demo_ui:1;
  984. };
  985.  
  986. // scnr_r4c_functions
  987. struct halo_scnr_function_flags_bf  // 32-bit 0x0000000F
  988. {
  989.     bool scripted:1;
  990.     bool invert:1;
  991.     bool additive:1;
  992.     bool always_active:1;
  993. };
  994.  
  995. // scnr_r11c_vehicles
  996. struct halo_scnr_vehicle_multiplayer_spawn_flags_bf // 16-bit 0xFFFF
  997. {
  998.     bool slayer_default:1;
  999.     bool ctf_default:1;
  1000.     bool king_default:1;
  1001.     bool oddball_default:1;
  1002.     bool default_unused1:1;
  1003.     bool default_unused2:1;
  1004.     bool default_unused3:1;
  1005.     bool default_unused4:1;
  1006.     bool slayer_allowed:1;
  1007.     bool ctf_allowed:1;
  1008.     bool king_allowed:1;
  1009.     bool oddball_allowed:1;
  1010.     bool allowed_unused1:1;
  1011.     bool allowed_unused2:1;
  1012.     bool allowed_unused3:1;
  1013.     bool allowed_unused4:1;
  1014. };
  1015.  
  1016. // scnr_r13c_equipment and scnr_r15c_weapons
  1017. struct halo_scnr_item_flags_bf  // 8-bit 0x07
  1018. {
  1019.     bool initially_at_rest:1;
  1020.     bool obsolete:1;
  1021.     bool does_accelerate:1;
  1022. };
  1023.  
  1024. // scnr_r17c_device_groups
  1025. struct halo_scnr_device_group_flags_bf  // 32-bit 0x00000001
  1026. {
  1027.     bool can_change_only_once:1;
  1028. };
  1029.  
  1030. // scnr_r18c_machines
  1031. struct halo_scnr_machine_flags_bf   // 32-bit 0x0000000F
  1032. {
  1033.     bool does_not_operate_automatically:1;
  1034.     bool one_sided:1;
  1035.     bool never_appears_locked:1;
  1036.     bool opened_by_melee_attack:1;
  1037. };
  1038.  
  1039. // scnr_r20c_controls
  1040. struct halo_scnr_control_flags_bf   // 32-bit 0x00000001
  1041. {
  1042.     bool usable_from_both_sides:1;
  1043. };
  1044.  
  1045. // scnr_r31c_netgame_equipment
  1046. struct halo_scnr_netgame_equipment_flags_bf // 32-bit 0x00000001
  1047. {
  1048.     bool levitate:1;
  1049. };
  1050.  
  1051. // scnr_r32c_starting_equipment
  1052. struct halo_scnr_starting_equipment_flags_bf    // 32-bit 0x00000003
  1053. {
  1054.     bool no_grenades:1;
  1055.     bool plasma_grenades:1;
  1056. };
  1057.  
  1058. // scnr_r38c_encounters
  1059. struct halo_scnr_encounter_flags_bf // 32-bit 0x0000007F
  1060. {
  1061.     bool not_initially_created:1;
  1062.     bool respawn_enabled:1;
  1063.     bool initially_blind:1;
  1064.     bool initially_deaf:1;
  1065.     bool initially_braindead:1;
  1066.     bool firing_positions_are_3d:1;
  1067.     bool manual_bsp_index_specified:1;
  1068. };
  1069.  
  1070. // scnr_r38scA_squads
  1071. struct halo_scnr_encounter_squad_flags_bf   // 32-bit 0x0000003F
  1072. {
  1073.     bool unused:1;
  1074.     bool never_search:1;
  1075.     bool start_timer_immediately:1;
  1076.     bool no_timer_delay_forever:1;
  1077.     bool magic_sight_after_timer:1;
  1078.     bool automatic_migration:1;
  1079. };
  1080.  
  1081. struct halo_scnr_encounter_squad_firing_position_group_indices_bf   // 32-bit 0x03FFFFFF
  1082. {
  1083.     bool A:1;
  1084.     bool B:1;
  1085.     bool C:1;
  1086.     bool D:1;
  1087.     bool E:1;
  1088.     bool F:1;
  1089.     bool G:1;
  1090.     bool H:1;
  1091.     bool I:1;
  1092.     bool J:1;
  1093.     bool K:1;
  1094.     bool L:1;
  1095.     bool M:1;
  1096.     bool N:1;
  1097.     bool O:1;
  1098.     bool P:1;
  1099.     bool Q:1;
  1100.     bool R:1;
  1101.     bool S:1;
  1102.     bool T:1;
  1103.     bool U:1;
  1104.     bool V:1;
  1105.     bool W:1;
  1106.     bool X:1;
  1107.     bool Y:1;
  1108.     bool Z:1;
  1109. };
  1110.  
  1111. // scnr_r38scAscB_starting_locations
  1112. struct halo_scnr_encounter_squad_starting_location_flags_bf // 8-bit 0x01
  1113. {
  1114.     bool required:1;
  1115. };
  1116.  
  1117. // scnr_r38scB_platoons
  1118. struct halo_scnr_encounter_platoon_flags_bf // 32-bit 0x00000007
  1119. {
  1120.     bool flee_when_maneuvering:1;
  1121.     bool say_advancing_when_maneuvering:1;
  1122.     bool start_in_defending_state:1;
  1123. };
  1124.  
  1125. // scnr_r39c_command_lists
  1126. struct halo_scnr_command_list_flags_bf  // 32-bit 0x0000003F
  1127. {
  1128.     bool allow_initiative:1;
  1129.     bool allow_targeting:1;
  1130.     bool disable_looking:1;
  1131.     bool disable_communication:1;
  1132.     bool disable_falling_damage:1;
  1133.     bool manual_bsp_index:1;
  1134. };
  1135.  
  1136. // scnr_r43c_ai_conversations
  1137. struct halo_scnr_ai_conversation_flags_bf   // 8-bit 0xFF
  1138. {
  1139.     bool stop_if_death:1;
  1140.     bool stop_if_damaged:1;
  1141.     bool stop_if_visible_enemy:1;
  1142.     bool stop_if_alerted_to_enemy:1;
  1143.     bool player_must_be_visible:1;
  1144.     bool stop_other_actions:1;
  1145.     bool keep_trying_to_play:1;
  1146.     bool player_must_be_looking:1;
  1147. };
  1148.  
  1149. // scnr_r43scA_participants
  1150. struct halo_scnr_ai_conversation_participant_flags_bf   // 8-bit 0x07
  1151. {
  1152.     bool optional:1;
  1153.     bool has_alternate:1;
  1154.     bool is_alternate:1;
  1155. };
  1156.  
  1157. // scnr_r43scB_lines
  1158. struct halo_scnr_ai_conversation_line_flags_bf  // 8-bit 0x3F
  1159. {
  1160.     bool addressee_look_at_speaker:1;
  1161.     bool everyone_look_at_speaker:1;
  1162.     bool everyone_look_at_addressee:1;
  1163.     bool wait_after_until_told_to_advance:1;
  1164.     bool wait_until_speaker_nearby:1;
  1165.     bool wait_until_everyone_nearby:1;
  1166. };
  1167.  
  1168. #pragma mark senv
  1169.  
  1170. struct halo_senv_flags_bf   // 8-bit 0x07
  1171. {
  1172.     bool alpha_tested:1;
  1173.     bool bump_map_is_specular_mask:1;
  1174.     bool true_atmospheric_fog:1;
  1175. };
  1176.  
  1177. struct halo_senv_diffuse_flags_bf   // 8-bit 0x03
  1178. {
  1179.     bool rescale_detail_maps:1;
  1180.     bool rescale_bump_map:1;
  1181. };
  1182.  
  1183. struct halo_senv_specular_flags_bf  // 8-bit 0x07
  1184. {
  1185.     bool overbright:1;
  1186.     bool extra_shiny:1;
  1187.     bool lightmap_is_specular:1;
  1188. };
  1189.  
  1190. struct halo_senv_reflection_flags_bf    // 8-bit 0x01
  1191. {
  1192.     bool dynamic_mirror:1;
  1193. };
  1194.  
  1195. #pragma mark sgla
  1196.  
  1197. struct halo_sgla_glass_flags_bf // 8-bit 0x0F
  1198. {
  1199.     bool alpha_tested:1;
  1200.     bool decal:1;
  1201.     bool two_sided:1;
  1202.     bool bump_map_is_specular_mask:1;
  1203. };
  1204.  
  1205. #pragma mark shdr
  1206.  
  1207. struct halo_shdr_radiosity_properties_flags_bf  // 8-bit 0x07
  1208. {
  1209.     bool simple_parameterization:1;
  1210.     bool ignore_normals:1;
  1211.     bool transparent_lit:1;
  1212. };
  1213.  
  1214. #pragma mark sky
  1215.  
  1216. // sky_r3c_lights
  1217. struct halo_sky_radiosity_flags_bf  // 32-bit 0x00000003
  1218. {
  1219.     bool affects_exteriors:1;
  1220.     bool affects_interiors:1;
  1221. };
  1222.  
  1223. #pragma mark smet
  1224.  
  1225. struct halo_smet_flags_bf   // 8-bit 0x1F
  1226. {
  1227.     bool decal:1;
  1228.     bool two_sided:1;
  1229.     bool flash_color_is_negative:1;
  1230.     bool tint_mode_2:1;
  1231.     bool unfiltered:1;
  1232. };
  1233.  
  1234. #pragma mark snd
  1235.  
  1236. struct halo_snd_flags_bf    // 32-bit 0x00000003
  1237. {
  1238.     bool fit_to_adpcm_blocksize:1;
  1239.     bool split_long_sound_into_permutations:1;
  1240. };
  1241.  
  1242. #pragma mark snde
  1243.  
  1244. #pragma mark soso
  1245.  
  1246. struct halo_soso_shader_bf  // 8-bit 0x3F
  1247. {
  1248.     bool detail_after_reflection:1;
  1249.     bool two_sided:1;
  1250.     bool not_alpha_tested:1;
  1251.     bool alpha_blended_decal:1;
  1252.     bool true_atmospheric_fog:1;
  1253.     bool disable_two_sided_culling:1;
  1254. };
  1255.  
  1256. struct halo_soso_self_illumination_flags_bf // 8-bit 0x01
  1257. {
  1258.     bool no_random_phase:1;
  1259. };
  1260.  
  1261. #pragma mark sotr
  1262.  
  1263. // sotr_r2c_maps
  1264. struct halo_sotr_map_flags_bf   // 8-bit 0x07
  1265. {
  1266.     bool unfiltered:1;
  1267.     bool u_clamped:1;
  1268.     bool v_clamped:1;
  1269. };
  1270.  
  1271. // sotr_r3c_stages
  1272. struct halo_sotr_stage_flags_bf // 8-bit 0x07
  1273. {
  1274.     bool color_mux:1;
  1275.     bool alpha_mux:1;
  1276.     bool a_out_controls_color_0_animation:1;
  1277. };
  1278.  
  1279. #pragma mark Soul
  1280.  
  1281. #pragma mark spla
  1282.  
  1283. #pragma mark ssce
  1284.  
  1285. #pragma mark strn
  1286.  
  1287. #pragma mark swat
  1288.  
  1289. struct halo_swat_flags_bf   // 8-bit 0x0F
  1290. {
  1291.     bool base_map_alpha_modulates_reflection_brightness:1;
  1292.     bool base_map_color_modulates_background:1;
  1293.     bool atmospheric_fog:1;
  1294.     bool draw_before_fog:1;
  1295. };
  1296.  
  1297. #pragma mark tagc
  1298.  
  1299. #pragma mark trak
  1300.  
  1301. #pragma mark udlg
  1302.  
  1303. #pragma mark unhi
  1304.  
  1305. // unhi_r6c_auxiliary_overlays_overlays
  1306. struct halo_unhi_overlay_flags_bf   // 8-bit 0x01
  1307. {
  1308.     bool use_team_color:1;
  1309. };
  1310.  
  1311. // unhi_r7c_hud_warning_sounds_sounds
  1312. struct halo_unhi_hud_warning_sound_flags_bf // 32-bit 0x000000FF
  1313. {
  1314.     bool shield_recharging:1;
  1315.     bool shield_damaged:1;
  1316.     bool shield_low:1;
  1317.     bool shield_empty:1;
  1318.     bool health_low:1;
  1319.     bool health_empty:1;
  1320.     bool health_minor_damage:1;
  1321.     bool health_major_damage:1;
  1322. };
  1323.  
  1324. // unhi_r8c_auxiliary_hud_meters_meters
  1325. struct halo_unhi_meter_limit_flags_bf   // 32-bit 0x00000003
  1326. {
  1327.     bool show_only_when_active:1;
  1328.     bool flash_once_if_activated_while_disabled:1;
  1329. };
  1330.  
  1331. #pragma mark unit
  1332.  
  1333. struct halo_unit_flags_bf   // mishandled in Guerilla, which writes all four bytes but only properly reads the first two bytes, automatically interpreting the second two bytes as 0xFFFF when opened. 32-bit 0x01FFFFFF
  1334. {
  1335.     bool circular_aiming:1;
  1336.     bool destroyed_after_dying:1;
  1337.     bool half_speed_interpolation:1;
  1338.     bool fires_from_camera:1;
  1339.     bool entrance_inside_bounding_sphere:1;
  1340.     bool unused:1;
  1341.     bool causes_passenger_dialogue:1;
  1342.     bool resists_pings:1;
  1343.     bool melee_attack_is_fatal:1;
  1344.     bool dont_reface_during_pings:1;
  1345.     bool has_no_aiming:1;
  1346.     bool simple_creature:1;
  1347.     bool impact_melee_attaches_to_unit:1;
  1348.     bool impact_melee_dies_on_shields:1;
  1349.     bool cannot_open_doors_automatically:1;
  1350.     bool melee_attackers_cannot_attach:1;
  1351.     bool not_instantly_killed_by_melee:1;
  1352.     bool shield_sapping:1;
  1353.     bool runs_around_flaming:1;
  1354.     bool inconsequential:1;
  1355.     bool special_cinematic_unit:1;
  1356.     bool ignored_by_autoaiming:1;
  1357.     bool shields_fry_infection_forms:1;
  1358.     bool integrated_light_controls_weapon:1;
  1359.     bool integrated_light_lasts_forever:1;
  1360. };
  1361.  
  1362. // unit_r6c_seats
  1363. struct halo_unit_seats_flags_bf // 32-bit 0x000007FF
  1364. {
  1365.     bool invisible:1;
  1366.     bool locked:1;
  1367.     bool driver:1;
  1368.     bool gunner:1;
  1369.     bool third_person_camera:1;
  1370.     bool allows_weapons:1;
  1371.     bool third_person_on_enter:1;
  1372.     bool first_person_camera_slaved_to_gun:1;
  1373.     bool allow_vehicle_communication_animations:1;
  1374.     bool not_valid_without_driver:1;
  1375.     bool allow_ai_noncombatants:1;
  1376. };
  1377.  
  1378. #pragma mark ustr
  1379.  
  1380. #pragma mark vcky
  1381.  
  1382. #pragma mark vehi
  1383.  
  1384. struct halo_vehi_flags_bf   // 32-bit 0x00007FFF
  1385. {
  1386.     bool speed_wakes_physics:1;
  1387.     bool turn_wakes_physics:1;
  1388.     bool driver_power_wakes_physics:1;
  1389.     bool gunner_power_wakes_physics:1;
  1390.     bool control_opposite_speed_sets_brake:1;
  1391.     bool slide_wakes_physics:1;
  1392.     bool kills_riders_at_terminal_velocity:1;
  1393.     bool causes_collision_damage:1;
  1394.     bool ai_weapon_cannot_rotate:1;
  1395.     bool ai_does_not_require_driver:1;
  1396.     bool ai_unused:1;
  1397.     bool ai_driver_enable:1;
  1398.     bool ai_driver_flying:1;
  1399.     bool ai_driver_can_sidestep:1;
  1400.     bool ai_driver_hovering:1;
  1401. };
  1402.  
  1403. #pragma mark weap
  1404.  
  1405. struct halo_weap_flags_bf   // 32-bit 0x0000FFFF
  1406. {
  1407.     bool vertical_heat_display:1;
  1408.     bool mutually_exclusive_triggers:1;
  1409.     bool attacks_automatically_on_bump:1;
  1410.     bool must_be_readied:1;
  1411.     bool does_not_count_toward_maximum:1;
  1412.     bool aim_assists_only_when_zoomed:1;
  1413.     bool prevents_grenade_throwing:1;
  1414.     bool must_be_picked_up:1;
  1415.     bool holds_triggers_when_dropped:1;
  1416.     bool prevents_melee_attack:1;
  1417.     bool detonates_when_dropped:1;
  1418.     bool cannot_fire_at_maximum_age:1;
  1419.     bool secondary_trigger_overrides_grenades:1;
  1420.     bool obsolete_does_not_depower_active_camo_in_multiplayer:1;
  1421.     bool enables_integrated_night_vision:1;
  1422.     bool ais_use_weapon_melee_damage:1;
  1423. };
  1424.  
  1425. // weap_r7c_magazines
  1426. struct halo_weap_magazine_flags_bf  // 32-bit 0x00000003
  1427. {
  1428.     bool wastes_rounds_when_reloaded:1;
  1429.     bool every_round_must_be_chambered:1;
  1430. };
  1431.  
  1432. // weap_r8c_triggers
  1433. struct halo_weap_trigger_flags_bf   // 32-bit 0x00003FFF
  1434. {
  1435.     bool tracks_fired_projectile:1;
  1436.     bool random_firing_effects:1;
  1437.     bool can_fire_with_partial_ammo:1;
  1438.     bool does_not_repeat_automatically:1;
  1439.     bool locks_in_on_off_state:1;
  1440.     bool projectiles_use_weapon_origin:1;
  1441.     bool sticks_when_dropped:1;
  1442.     bool ejects_during_chamber:1;
  1443.     bool discharging_spews:1;
  1444.     bool analog_rate_of_fire:1;
  1445.     bool use_error_when_unzoomed:1;
  1446.     bool projectile_vector_cannot_be_adjusted:1;
  1447.     bool projectiles_have_identical_error:1;
  1448.     bool projectile_is_client_side_only:1;
  1449. };
  1450.  
  1451. #pragma mark wind
  1452.  
  1453. #pragma mark wphi
  1454.  
  1455. struct halo_wphi_flash_cutoff_flags_bf  // 8-bit 0x01
  1456. {
  1457.     bool use_parent_hud_flashing_parameters:1;
  1458. };
  1459.  
  1460. // wphi_r3c_number_elements
  1461. struct halo_wphi_number_weapon_flags_bf // 8-bit 0x01
  1462. {
  1463.     bool divide_number_by_clip_size:1;
  1464. };
  1465.  
  1466. // wphi_r4scA_crosshair_overlays
  1467. struct halo_wphi_crosshair_overlay_flags_bf // 32-bit 0x0000007F
  1468. {
  1469.     bool flashes_when_active:1;
  1470.     bool not_a_sprite:1;
  1471.     bool show_only_when_zoomed:1;
  1472.     bool show_sniper_data:1;
  1473.     bool hide_area_outside_reticle:1;
  1474.     bool one_zoom_level:1;
  1475.     bool dont_show_when_zoomed:1;
  1476. };
  1477.  
  1478. // wphi_r5scA_overlays
  1479. struct halo_wphi_overlays_type_bf   // 8-bit 0x1F
  1480. {
  1481.     bool show_on_flashing:1;
  1482.     bool show_on_empty:1;
  1483.     bool show_on_reload_overheating:1;
  1484.     bool show_on_default:1;
  1485.     bool show_always:1;
  1486. };
  1487.  
  1488. // wphi_r6c_screen_effect
  1489. struct halo_wphi_screen_effect_alteration_flags_bf  // 8-bit 0x01
  1490. {
  1491.     bool only_when_zoomed:1;
  1492. };
  1493.  
  1494. struct halo_wphi_screen_effect_brightness_flags_bf  // 8-bit 0x07
  1495. {
  1496.     bool only_when_zoomed:1;
  1497.     bool connect_to_flashlight:1;
  1498.     bool masked:1;
  1499. };
  1500.  
  1501. struct halo_wphi_screen_effect_color_flags_bf   // 8-bit 0x0F
  1502. {
  1503.     bool only_when_zoomed:1;
  1504.     bool connect_to_flashlight:1;
  1505.     bool additive:1;
  1506.     bool masked:1;
  1507. };
  1508.  
  1509. #endif
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement