diff --git a/io_scene_halo/file_jms/build_asset.py b/io_scene_halo/file_jms/build_asset.py index 6dd4e9e4f..cf8a3ae4f 100644 --- a/io_scene_halo/file_jms/build_asset.py +++ b/io_scene_halo/file_jms/build_asset.py @@ -1884,7 +1884,6 @@ def write_hinges(file, JMS, binary, write_comments=False, write_whitespace=False file.write(DECIMAL_3 % hinge.body_a_translation) file.write(DECIMAL_4 % hinge.body_b_rotation) file.write(DECIMAL_3 % hinge.body_b_translation) - file.write(DECIMAL_1 % hinge.min_twist) file.write('\n%s' % hinge.is_limited) file.write(DECIMAL_1 % hinge.friction_limit) file.write(DECIMAL_1 % hinge.min_angle) diff --git a/io_scene_halo/file_tag/h1/file_object/upgrade_object.py b/io_scene_halo/file_tag/h1/file_object/upgrade_object.py index 0b73ccf7e..90976d330 100644 --- a/io_scene_halo/file_tag/h1/file_object/upgrade_object.py +++ b/io_scene_halo/file_tag/h1/file_object/upgrade_object.py @@ -41,10 +41,10 @@ def get_function_list(H1_ASSET, function_list, keyword, FunctionsEnum): if d_scale_function != FunctionsEnum.none: function_list[3] = get_valid_h1_object_functions(d_scale_function.name) elif "Weapon" == keyword: - a_scale_function = FunctionsEnum(H1_ASSET.weapon_body.weapon_a_in) - b_scale_function = FunctionsEnum(H1_ASSET.weapon_body.weapon_b_in) - c_scale_function = FunctionsEnum(H1_ASSET.weapon_body.weapon_c_in) - d_scale_function = FunctionsEnum(H1_ASSET.weapon_body.weapon_d_in) + a_scale_function = FunctionsEnum(H1_ASSET.weapon_a_in) + b_scale_function = FunctionsEnum(H1_ASSET.weapon_b_in) + c_scale_function = FunctionsEnum(H1_ASSET.weapon_c_in) + d_scale_function = FunctionsEnum(H1_ASSET.weapon_d_in) if a_scale_function != FunctionsEnum.none: function_list[0] = get_valid_h1_weapon_functions(a_scale_function.name) if b_scale_function != FunctionsEnum.none: diff --git a/io_scene_halo/file_tag/h1/file_weapon/upgrade_weapon.py b/io_scene_halo/file_tag/h1/file_weapon/upgrade_weapon.py index af8014a6c..c17dd1eb9 100644 --- a/io_scene_halo/file_tag/h1/file_weapon/upgrade_weapon.py +++ b/io_scene_halo/file_tag/h1/file_weapon/upgrade_weapon.py @@ -222,11 +222,11 @@ def generate_triggers_and_barrels(H1_ASSET, TAG, WEAPON): new_trigger_count = len(WEAPON.new_triggers) WEAPON.new_triggers_header = TAG.TagBlockHeader("tbfd", 0, new_trigger_count, 80) - WEAPON.new_triggers_tag_block = TAG.TagBlock(new_trigger_count) + WEAPON.weapon_body.new_triggers_tag_block = TAG.TagBlock(new_trigger_count) barrel_count = len(WEAPON.barrels) WEAPON.barrels_header = TAG.TagBlockHeader("tbfd", 2, barrel_count, 256) - WEAPON.barrels_tag_block = TAG.TagBlock(barrel_count) + WEAPON.weapon_body.barrels_tag_block = TAG.TagBlock(barrel_count) def get_weapon_defaults(weapon_name): weapon_class = "" @@ -520,157 +520,157 @@ def upgrade_weapon(H1_ASSET, patch_txt_path, report): pickup_message, swap_message, pickup_or_dual_msg, swap_or_dual_msg, dual_only_msg, picked_up_msg, singluar_quantity_msg, plural_quantity_msg, switch_to_msg, switch_to_from_ai_msg = get_weapon_messages(weapon_name) magnetism_angle, magnetism_range, throttle_magnitude, throttle_minimum_distance, throttle_maximum_adjustment_angle, damage_pyramid_angles, damage_pyramid_depth = get_melee_aim_assist_defaults(weapon_name) - WEAPON_header = TAG.TagBlockHeader("tbfd", 3, 1, 1128) - WEAPON = WEAPON.WeaponBody() - WEAPON.object_flags = upgrade_h1_object_flags(H1_ASSET.object_flags) - WEAPON.bounding_radius = H1_ASSET.bounding_radius - WEAPON.bounding_offset = H1_ASSET.bounding_offset - WEAPON.acceleration_scale = H1_ASSET.acceleration_scale - WEAPON.lightmap_shadow_mode = 0 - WEAPON.sweetner_size = 0 - WEAPON.dynamic_light_sphere_radius = 0.0 - WEAPON.dynamic_light_sphere_offset = Vector() - WEAPON.default_model_variant = "" - WEAPON.default_model_variant_length = len(WEAPON.default_model_variant) - WEAPON.model = TAG.TagRef("hlmt", weapon_path, len(weapon_path)) - WEAPON.crate_object = TAG.TagRef() - WEAPON.modifier_shader = TAG.TagRef() - WEAPON.creation_effect = TAG.TagRef() - WEAPON.material_effects = TAG.TagRef() - WEAPON.ai_properties_tag_block = TAG.TagBlock() - WEAPON.functions_tag_block = TAG.TagBlock() - WEAPON.apply_collision_damage_scale = 0.0 - WEAPON.min_game_acc = 0.0 - WEAPON.max_game_acc = 0.0 - WEAPON.min_game_scale = 0.0 - WEAPON.max_game_scale = 0.0 - WEAPON.min_abs_acc = 0.0 - WEAPON.max_abs_acc = 0.0 - WEAPON.min_abs_scale = 0.0 - WEAPON.max_abs_scale = 0.0 - WEAPON.hud_text_message_index = H1_ASSET.hud_text_message_index - WEAPON.attachments_tag_block = generate_attachments(H1_ASSET, TAG, WEAPON, function_keywords) - WEAPON.widgets_tag_block = generate_widgets(H1_ASSET, TAG, WEAPON) - WEAPON.old_functions_tag_block = TAG.TagBlock() - WEAPON.change_colors_tag_block = generate_change_colors(H1_ASSET, TAG, WEAPON, function_keywords) - WEAPON.predicted_resources_tag_block = TAG.TagBlock() - WEAPON.item_flags = H1_ASSET.item_body.item_flags - WEAPON.old_message_index = H1_ASSET.item_body.message_index - WEAPON.sort_order = H1_ASSET.item_body.sort_order - WEAPON.multiplayer_on_ground_scale = H1_ASSET.item_body.scale - WEAPON.campaign_on_ground_scale = H1_ASSET.item_body.scale - WEAPON.pickup_message = pickup_message - WEAPON.swap_message = swap_message - WEAPON.pickup_or_dual_msg = pickup_or_dual_msg - WEAPON.swap_or_dual_msg = swap_or_dual_msg - WEAPON.dual_only_msg = dual_only_msg - WEAPON.picked_up_msg = picked_up_msg - WEAPON.singluar_quantity_msg = singluar_quantity_msg - WEAPON.plural_quantity_msg = plural_quantity_msg - WEAPON.switch_to_msg = switch_to_msg - WEAPON.switch_to_from_ai_msg = switch_to_from_ai_msg - WEAPON.pickup_message_length = len(WEAPON.pickup_message) - WEAPON.swap_message_length = len(WEAPON.swap_message) - WEAPON.pickup_or_dual_msg_length = len(WEAPON.pickup_or_dual_msg) - WEAPON.swap_or_dual_msg_length = len(WEAPON.swap_or_dual_msg) - WEAPON.dual_only_msg_length = len(WEAPON.dual_only_msg) - WEAPON.picked_up_msg_length = len(WEAPON.picked_up_msg) - WEAPON.singluar_quantity_msg_length = len(WEAPON.singluar_quantity_msg) - WEAPON.plural_quantity_msg_length = len(WEAPON.plural_quantity_msg) - WEAPON.switch_to_msg_length = len(WEAPON.switch_to_msg) - WEAPON.switch_to_from_ai_msg_length = len(WEAPON.switch_to_from_ai_msg) - WEAPON.unused = H1_ASSET.item_body.material_effects - WEAPON.collision_sound = H1_ASSET.item_body.collision_sound - WEAPON.predicted_bitmaps_tag_block = TAG.TagBlock() - WEAPON.detonation_damage_effect = TAG.TagRef() - WEAPON.detonation_delay = (H1_ASSET.item_body.detonation_delay[0], H1_ASSET.item_body.detonation_delay[1]) - WEAPON.detonating_effect = H1_ASSET.item_body.detonating_effect - WEAPON.detonation_effect = H1_ASSET.item_body.detonation_effect - WEAPON.weapon_flags = H1_ASSET.weapon_flags - WEAPON.unknown = "" - WEAPON.unknown_length = len(WEAPON.unknown) - WEAPON.secondary_trigger_mode = H1_ASSET.secondary_trigger_mode - WEAPON.maximum_alternate_shots_loaded = H1_ASSET.maximum_alternate_shots_loaded - WEAPON.turn_on_time = 0.0 - WEAPON.ready_time = H1_ASSET.ready_time - WEAPON.ready_effect = H1_ASSET.ready_effect - WEAPON.ready_damage_effect = TAG.TagRef() - WEAPON.heat_recovery_threshold = H1_ASSET.heat_recovery_threshold - WEAPON.overheated_threshold = H1_ASSET.overheated_threshold - WEAPON.heat_detonation_threshold = H1_ASSET.heat_detonation_threshold - WEAPON.heat_detonation_fraction = H1_ASSET.heat_detonation_fraction - WEAPON.heat_loss_per_second = H1_ASSET.heat_loss_per_second - WEAPON.heat_illumination = H1_ASSET.heat_illumination - WEAPON.overheated_loss_per_second = H1_ASSET.heat_loss_per_second - WEAPON.overheated = H1_ASSET.overheated - WEAPON.overheated_damage_effect = TAG.TagRef() - WEAPON.detonation = H1_ASSET.detonation - WEAPON.weapon_detonation_damage_effect = TAG.TagRef() - WEAPON.player_melee_damage = H1_ASSET.player_melee_damage - WEAPON.player_melee_response = H1_ASSET.player_melee_response - WEAPON.magnetism_angle = magnetism_angle - WEAPON.magnetism_range = magnetism_range - WEAPON.throttle_magnitude = throttle_magnitude - WEAPON.throttle_minimum_distance = throttle_minimum_distance - WEAPON.throttle_maximum_adjustment_angle = throttle_maximum_adjustment_angle - WEAPON.damage_pyramid_angles = damage_pyramid_angles - WEAPON.damage_pyramid_depth = damage_pyramid_depth - - WEAPON.first_hit_melee_damage = H1_ASSET.player_melee_damage - WEAPON.first_hit_melee_response = H1_ASSET.player_melee_response - WEAPON.second_hit_melee_damage = H1_ASSET.player_melee_damage - WEAPON.second_hit_melee_response = H1_ASSET.player_melee_response - WEAPON.third_hit_melee_damage = H1_ASSET.player_melee_damage - WEAPON.third_hit_melee_response = H1_ASSET.player_melee_response - WEAPON.lunge_melee_damage = TAG.TagRef() - WEAPON.lunge_melee_response = TAG.TagRef() - WEAPON.melee_damage_reporting_type = MeleeDamageReportingTypeEnum.generic_melee_damage.value - WEAPON.magnification_levels = H1_ASSET.magnification_levels - WEAPON.magnification_range = (H1_ASSET.magnification_range[0], H1_ASSET.magnification_range[1]) - WEAPON.autoaim_angle = H1_ASSET.autoaim_angle - WEAPON.autoaim_range = H1_ASSET.autoaim_range - WEAPON.weapon_aim_assist_magnetism_angle = H1_ASSET.magnetism_angle - WEAPON.weapon_aim_assist_magnetism_range = H1_ASSET.magnetism_range - WEAPON.deviation_angle = H1_ASSET.deviation_angle - WEAPON.movement_penalized = H1_ASSET.movement_penalized - WEAPON.forward_movement_penalty = H1_ASSET.forward_movement_penalty - WEAPON.sideways_movement_penalty = H1_ASSET.sideways_movement_penalty - WEAPON.ai_scariness = ai_scariness - WEAPON.weapon_power_on_time = H1_ASSET.light_power_on_time - WEAPON.weapon_power_off_time = H1_ASSET.light_power_off_time - WEAPON.weapon_power_on_effect = H1_ASSET.light_power_on_effect - WEAPON.weapon_power_off_effect = H1_ASSET.light_power_off_effect - WEAPON.age_heat_recovery_penalty = H1_ASSET.age_heat_recovery_penalty - WEAPON.age_rate_of_fire_penalty = H1_ASSET.age_rate_of_fire_penalty - WEAPON.age_misfire_start = H1_ASSET.age_misfire_start - WEAPON.age_misfire_chance = H1_ASSET.age_misfire_chance - WEAPON.pickup_sound = H1_ASSET.pickup_sound - WEAPON.zoom_in_sound = H1_ASSET.zoom_in_sound - WEAPON.zoom_out_sound = H1_ASSET.zoom_out_sound - WEAPON.active_camo_ding = H1_ASSET.active_camo_ding - WEAPON.active_camo_regrowth_rate = H1_ASSET.active_camo_regrowth_rate - WEAPON.handle_node = "" - WEAPON.weapon_class = weapon_class - WEAPON.weapon_name = H1_ASSET.label - WEAPON.handle_node_length = len(WEAPON.handle_node) - WEAPON.weapon_class_length = len(WEAPON.weapon_class) - WEAPON.weapon_name_length = len(WEAPON.weapon_name) - WEAPON.multiplayer_weapon_type = multiplayer_weapon_type - WEAPON.weapon_type = H1_ASSET.weapon_type - WEAPON.tracking_type = tracking_type - WEAPON.first_person_tag_block = generate_first_person(H1_ASSET, TAG, WEAPON) - WEAPON.new_hud_interface = TAG.TagRef("nhdt", H1_ASSET.hud_interface.name, H1_ASSET.hud_interface.name_length) - WEAPON.weapon_predicted_resources_tag_block = TAG.TagBlock() - WEAPON.magazines_tag_block = generate_magazines(H1_ASSET, TAG, WEAPON) + WEAPON.weapon_body_header = TAG.TagBlockHeader("tbfd", 3, 1, 1128) + WEAPON.weapon_body = WEAPON.WeaponBody() + WEAPON.weapon_body.object_flags = upgrade_h1_object_flags(H1_ASSET.object_flags) + WEAPON.weapon_body.bounding_radius = H1_ASSET.bounding_radius + WEAPON.weapon_body.bounding_offset = H1_ASSET.bounding_offset + WEAPON.weapon_body.acceleration_scale = H1_ASSET.acceleration_scale + WEAPON.weapon_body.lightmap_shadow_mode = 0 + WEAPON.weapon_body.sweetner_size = 0 + WEAPON.weapon_body.dynamic_light_sphere_radius = 0.0 + WEAPON.weapon_body.dynamic_light_sphere_offset = Vector() + WEAPON.weapon_body.default_model_variant = "" + WEAPON.weapon_body.default_model_variant_length = len(WEAPON.weapon_body.default_model_variant) + WEAPON.weapon_body.model = TAG.TagRef("hlmt", weapon_path, len(weapon_path)) + WEAPON.weapon_body.crate_object = TAG.TagRef() + WEAPON.weapon_body.modifier_shader = TAG.TagRef() + WEAPON.weapon_body.creation_effect = TAG.TagRef() + WEAPON.weapon_body.material_effects = TAG.TagRef() + WEAPON.weapon_body.ai_properties_tag_block = TAG.TagBlock() + WEAPON.weapon_body.functions_tag_block = TAG.TagBlock() + WEAPON.weapon_body.apply_collision_damage_scale = 0.0 + WEAPON.weapon_body.min_game_acc = 0.0 + WEAPON.weapon_body.max_game_acc = 0.0 + WEAPON.weapon_body.min_game_scale = 0.0 + WEAPON.weapon_body.max_game_scale = 0.0 + WEAPON.weapon_body.min_abs_acc = 0.0 + WEAPON.weapon_body.max_abs_acc = 0.0 + WEAPON.weapon_body.min_abs_scale = 0.0 + WEAPON.weapon_body.max_abs_scale = 0.0 + WEAPON.weapon_body.hud_text_message_index = H1_ASSET.hud_text_message_index + WEAPON.weapon_body.attachments_tag_block = generate_attachments(H1_ASSET, TAG, WEAPON, function_keywords) + WEAPON.weapon_body.widgets_tag_block = generate_widgets(H1_ASSET, TAG, WEAPON) + WEAPON.weapon_body.old_functions_tag_block = TAG.TagBlock() + WEAPON.weapon_body.change_colors_tag_block = generate_change_colors(H1_ASSET, TAG, WEAPON, function_keywords) + WEAPON.weapon_body.predicted_resources_tag_block = TAG.TagBlock() + WEAPON.weapon_body.item_flags = H1_ASSET.item_flags + WEAPON.weapon_body.old_message_index = H1_ASSET.message_index + WEAPON.weapon_body.sort_order = H1_ASSET.sort_order + WEAPON.weapon_body.multiplayer_on_ground_scale = H1_ASSET.scale + WEAPON.weapon_body.campaign_on_ground_scale = H1_ASSET.scale + WEAPON.weapon_body.pickup_message = pickup_message + WEAPON.weapon_body.swap_message = swap_message + WEAPON.weapon_body.pickup_or_dual_msg = pickup_or_dual_msg + WEAPON.weapon_body.swap_or_dual_msg = swap_or_dual_msg + WEAPON.weapon_body.dual_only_msg = dual_only_msg + WEAPON.weapon_body.picked_up_msg = picked_up_msg + WEAPON.weapon_body.singluar_quantity_msg = singluar_quantity_msg + WEAPON.weapon_body.plural_quantity_msg = plural_quantity_msg + WEAPON.weapon_body.switch_to_msg = switch_to_msg + WEAPON.weapon_body.switch_to_from_ai_msg = switch_to_from_ai_msg + WEAPON.weapon_body.pickup_message_length = len(WEAPON.weapon_body.pickup_message) + WEAPON.weapon_body.swap_message_length = len(WEAPON.weapon_body.swap_message) + WEAPON.weapon_body.pickup_or_dual_msg_length = len(WEAPON.weapon_body.pickup_or_dual_msg) + WEAPON.weapon_body.swap_or_dual_msg_length = len(WEAPON.weapon_body.swap_or_dual_msg) + WEAPON.weapon_body.dual_only_msg_length = len(WEAPON.weapon_body.dual_only_msg) + WEAPON.weapon_body.picked_up_msg_length = len(WEAPON.weapon_body.picked_up_msg) + WEAPON.weapon_body.singluar_quantity_msg_length = len(WEAPON.weapon_body.singluar_quantity_msg) + WEAPON.weapon_body.plural_quantity_msg_length = len(WEAPON.weapon_body.plural_quantity_msg) + WEAPON.weapon_body.switch_to_msg_length = len(WEAPON.weapon_body.switch_to_msg) + WEAPON.weapon_body.switch_to_from_ai_msg_length = len(WEAPON.weapon_body.switch_to_from_ai_msg) + WEAPON.weapon_body.unused = H1_ASSET.material_effects + WEAPON.weapon_body.collision_sound = H1_ASSET.collision_sound + WEAPON.weapon_body.predicted_bitmaps_tag_block = TAG.TagBlock() + WEAPON.weapon_body.detonation_damage_effect = TAG.TagRef() + WEAPON.weapon_body.detonation_delay = (H1_ASSET.detonation_delay[0], H1_ASSET.detonation_delay[1]) + WEAPON.weapon_body.detonating_effect = H1_ASSET.detonating_effect + WEAPON.weapon_body.detonation_effect = H1_ASSET.detonation_effect + WEAPON.weapon_body.weapon_flags = H1_ASSET.weapon_flags + WEAPON.weapon_body.unknown = "" + WEAPON.weapon_body.unknown_length = len(WEAPON.weapon_body.unknown) + WEAPON.weapon_body.secondary_trigger_mode = H1_ASSET.secondary_trigger_mode + WEAPON.weapon_body.maximum_alternate_shots_loaded = H1_ASSET.maximum_alternate_shots_loaded + WEAPON.weapon_body.turn_on_time = 0.0 + WEAPON.weapon_body.ready_time = H1_ASSET.ready_time + WEAPON.weapon_body.ready_effect = H1_ASSET.ready_effect + WEAPON.weapon_body.ready_damage_effect = TAG.TagRef() + WEAPON.weapon_body.heat_recovery_threshold = H1_ASSET.heat_recovery_threshold + WEAPON.weapon_body.overheated_threshold = H1_ASSET.overheated_threshold + WEAPON.weapon_body.heat_detonation_threshold = H1_ASSET.heat_detonation_threshold + WEAPON.weapon_body.heat_detonation_fraction = H1_ASSET.heat_detonation_fraction + WEAPON.weapon_body.heat_loss_per_second = H1_ASSET.heat_loss_per_second + WEAPON.weapon_body.heat_illumination = H1_ASSET.heat_illumination + WEAPON.weapon_body.overheated_loss_per_second = H1_ASSET.heat_loss_per_second + WEAPON.weapon_body.overheated = H1_ASSET.overheated + WEAPON.weapon_body.overheated_damage_effect = TAG.TagRef() + WEAPON.weapon_body.detonation = H1_ASSET.detonation + WEAPON.weapon_body.weapon_detonation_damage_effect = TAG.TagRef() + WEAPON.weapon_body.player_melee_damage = H1_ASSET.player_melee_damage + WEAPON.weapon_body.player_melee_response = H1_ASSET.player_melee_response + WEAPON.weapon_body.magnetism_angle = magnetism_angle + WEAPON.weapon_body.magnetism_range = magnetism_range + WEAPON.weapon_body.throttle_magnitude = throttle_magnitude + WEAPON.weapon_body.throttle_minimum_distance = throttle_minimum_distance + WEAPON.weapon_body.throttle_maximum_adjustment_angle = throttle_maximum_adjustment_angle + WEAPON.weapon_body.damage_pyramid_angles = damage_pyramid_angles + WEAPON.weapon_body.damage_pyramid_depth = damage_pyramid_depth + + WEAPON.weapon_body.first_hit_melee_damage = H1_ASSET.player_melee_damage + WEAPON.weapon_body.first_hit_melee_response = H1_ASSET.player_melee_response + WEAPON.weapon_body.second_hit_melee_damage = H1_ASSET.player_melee_damage + WEAPON.weapon_body.second_hit_melee_response = H1_ASSET.player_melee_response + WEAPON.weapon_body.third_hit_melee_damage = H1_ASSET.player_melee_damage + WEAPON.weapon_body.third_hit_melee_response = H1_ASSET.player_melee_response + WEAPON.weapon_body.lunge_melee_damage = TAG.TagRef() + WEAPON.weapon_body.lunge_melee_response = TAG.TagRef() + WEAPON.weapon_body.melee_damage_reporting_type = MeleeDamageReportingTypeEnum.generic_melee_damage.value + WEAPON.weapon_body.magnification_levels = H1_ASSET.magnification_levels + WEAPON.weapon_body.magnification_range = (H1_ASSET.magnification_range[0], H1_ASSET.magnification_range[1]) + WEAPON.weapon_body.autoaim_angle = H1_ASSET.autoaim_angle + WEAPON.weapon_body.autoaim_range = H1_ASSET.autoaim_range + WEAPON.weapon_body.weapon_aim_assist_magnetism_angle = H1_ASSET.magnetism_angle + WEAPON.weapon_body.weapon_aim_assist_magnetism_range = H1_ASSET.magnetism_range + WEAPON.weapon_body.deviation_angle = H1_ASSET.deviation_angle + WEAPON.weapon_body.movement_penalized = H1_ASSET.movement_penalized + WEAPON.weapon_body.forward_movement_penalty = H1_ASSET.forward_movement_penalty + WEAPON.weapon_body.sideways_movement_penalty = H1_ASSET.sideways_movement_penalty + WEAPON.weapon_body.ai_scariness = ai_scariness + WEAPON.weapon_body.weapon_power_on_time = H1_ASSET.light_power_on_time + WEAPON.weapon_body.weapon_power_off_time = H1_ASSET.light_power_off_time + WEAPON.weapon_body.weapon_power_on_effect = H1_ASSET.light_power_on_effect + WEAPON.weapon_body.weapon_power_off_effect = H1_ASSET.light_power_off_effect + WEAPON.weapon_body.age_heat_recovery_penalty = H1_ASSET.age_heat_recovery_penalty + WEAPON.weapon_body.age_rate_of_fire_penalty = H1_ASSET.age_rate_of_fire_penalty + WEAPON.weapon_body.age_misfire_start = H1_ASSET.age_misfire_start + WEAPON.weapon_body.age_misfire_chance = H1_ASSET.age_misfire_chance + WEAPON.weapon_body.pickup_sound = H1_ASSET.pickup_sound + WEAPON.weapon_body.zoom_in_sound = H1_ASSET.zoom_in_sound + WEAPON.weapon_body.zoom_out_sound = H1_ASSET.zoom_out_sound + WEAPON.weapon_body.active_camo_ding = H1_ASSET.active_camo_ding + WEAPON.weapon_body.active_camo_regrowth_rate = H1_ASSET.active_camo_regrowth_rate + WEAPON.weapon_body.handle_node = "" + WEAPON.weapon_body.weapon_class = weapon_class + WEAPON.weapon_body.weapon_name = H1_ASSET.label + WEAPON.weapon_body.handle_node_length = len(WEAPON.weapon_body.handle_node) + WEAPON.weapon_body.weapon_class_length = len(WEAPON.weapon_body.weapon_class) + WEAPON.weapon_body.weapon_name_length = len(WEAPON.weapon_body.weapon_name) + WEAPON.weapon_body.multiplayer_weapon_type = multiplayer_weapon_type + WEAPON.weapon_body.weapon_type = H1_ASSET.weapon_type + WEAPON.weapon_body.tracking_type = tracking_type + WEAPON.weapon_body.first_person_tag_block = generate_first_person(H1_ASSET, TAG, WEAPON) + WEAPON.weapon_body.new_hud_interface = TAG.TagRef("nhdt", H1_ASSET.hud_interface.name, H1_ASSET.hud_interface.name_length) + WEAPON.weapon_body.weapon_predicted_resources_tag_block = TAG.TagBlock() + WEAPON.weapon_body.magazines_tag_block = generate_magazines(H1_ASSET, TAG, WEAPON) generate_triggers_and_barrels(H1_ASSET, TAG, WEAPON) - WEAPON.max_movement_acceleration = 0.0 - WEAPON.max_movement_velocity = 0.0 - WEAPON.max_turning_acceleration = 0.0 - WEAPON.max_turning_velocity = 0.0 - WEAPON.deployed_vehicle = TAG.TagRef() - WEAPON.age_effect = TAG.TagRef() - WEAPON.aged_weapon = TAG.TagRef() - WEAPON.first_person_weapon_offset = Vector() - WEAPON.first_person_scope_size = (0.0, 0.0) + WEAPON.weapon_body.max_movement_acceleration = 0.0 + WEAPON.weapon_body.max_movement_velocity = 0.0 + WEAPON.weapon_body.max_turning_acceleration = 0.0 + WEAPON.weapon_body.max_turning_velocity = 0.0 + WEAPON.weapon_body.deployed_vehicle = TAG.TagRef() + WEAPON.weapon_body.age_effect = TAG.TagRef() + WEAPON.weapon_body.aged_weapon = TAG.TagRef() + WEAPON.weapon_body.first_person_weapon_offset = Vector() + WEAPON.weapon_body.first_person_scope_size = (0.0, 0.0) return WEAPON