@blamnetwork/blf 1.0.0-beta.1 → 1.0.0-beta.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/automapper/create_map.d.ts +5 -0
- package/dist/automapper/create_map.d.ts.map +1 -0
- package/dist/automapper/create_map.js +6 -0
- package/dist/automapper/create_mapper.d.ts +6 -0
- package/dist/automapper/create_mapper.d.ts.map +1 -0
- package/dist/automapper/create_mapper.js +9 -0
- package/dist/automapper/enum_by_name.d.ts +16 -0
- package/dist/automapper/enum_by_name.d.ts.map +1 -0
- package/dist/automapper/enum_by_name.js +50 -0
- package/dist/automapper/index.d.ts +7 -0
- package/dist/automapper/index.d.ts.map +1 -0
- package/dist/automapper/index.js +6 -0
- package/dist/automapper/stage3_metadata.d.ts +7 -0
- package/dist/automapper/stage3_metadata.d.ts.map +1 -0
- package/dist/automapper/stage3_metadata.js +38 -0
- package/dist/bitstream/enum.d.ts +5 -1
- package/dist/bitstream/enum.d.ts.map +1 -1
- package/dist/bitstream/enum.js +21 -1
- package/dist/bitstream/reader.d.ts.map +1 -1
- package/dist/bitstream/reader.js +3 -6
- package/dist/bitstream/writer.d.ts +2 -1
- package/dist/bitstream/writer.d.ts.map +1 -1
- package/dist/bitstream/writer.js +3 -2
- package/dist/blam/common/math/real_types.d.ts +19 -0
- package/dist/blam/common/math/real_types.d.ts.map +1 -0
- package/dist/blam/common/math/real_types.js +21 -0
- package/dist/blam/common/math/unit_vector_quantization.d.ts +6 -0
- package/dist/blam/common/math/unit_vector_quantization.d.ts.map +1 -0
- package/dist/blam/common/math/unit_vector_quantization.js +26 -0
- package/dist/blam/common/simulation/simulation_encoding.d.ts +7 -0
- package/dist/blam/common/simulation/simulation_encoding.d.ts.map +1 -0
- package/dist/blam/common/simulation/simulation_encoding.js +23 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.js +272 -112
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.js +113 -28
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.d.ts +7 -4
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.js +752 -279
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.js +485 -170
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.js +74 -14
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.d.ts +2 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.js +153 -87
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.js +435 -140
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.js +206 -144
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/game_engine_enums.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/game_engine_enums.js +93 -23
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.js +81 -16
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.js +70 -15
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.js +108 -33
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.js +113 -33
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.d.ts +130 -26
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.js +3193 -1602
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.js +418 -208
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.js +744 -459
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.js +218 -98
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.d.ts +5 -4
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.js +242 -107
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.js +177 -52
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.js +187 -72
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.js +134 -66
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.js +138 -63
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/math/real_math.d.ts +23 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/math/real_math.d.ts.map +1 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/math/real_math.js +110 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/memory/bitstream_extensions.d.ts +5 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/memory/bitstream_extensions.d.ts.map +1 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/memory/bitstream_extensions.js +39 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.d.ts +1 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.d.ts.map +1 -1
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.js +1 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/scenario_map_variant.d.ts +104 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/scenario_map_variant.d.ts.map +1 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/scenario_map_variant.js +681 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/simulation/simulation_encoding.d.ts +5 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/simulation/simulation_encoding.d.ts.map +1 -0
- package/dist/blam/haloreach/v12065_11_08_24_1738_tu1actual/simulation/simulation_encoding.js +28 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant.js +285 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant_au1_settings.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant_au1_settings.js +115 -0
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/c_game_engine_default.d.ts +7 -4
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_default.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_default.js +765 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_survival_variant.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_survival_variant.js +504 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_traits.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_traits.js +76 -0
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/c_game_variant.d.ts +2 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_variant.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_variant.js +175 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_player_traits.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_player_traits.js +437 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_string_table.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_string_table.js +252 -0
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/game_engine_enums.d.ts.map +1 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/game_engine_enums.js +130 -0
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.d.ts.map +1 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalo_game_statistic.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalo_game_statistic.js +83 -0
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/c_megalogamengine_map_permissions.d.ts.map +1 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalogamengine_map_permissions.js +73 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_object_filter.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_object_filter.js +114 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_trigger.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_trigger.js +139 -0
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/index.d.ts.map +1 -1
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_actions.d.ts +187 -26
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_actions.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_actions.js +3636 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_conditions.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_conditions.js +436 -0
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_object.d.ts.map +1 -1
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_player.d.ts.map +1 -1
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_team.d.ts.map +1 -1
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_hud_widgets.d.ts.map +1 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_references.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_references.js +787 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_text.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_text.js +239 -0
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/s_custom_game_engine_definition.d.ts +5 -4
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_custom_game_engine_definition.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_custom_game_engine_definition.js +251 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_game_engine_player_rating_parameters.js +179 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_user_defined_option.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_user_defined_option.js +197 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variable_metadata.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variable_metadata.js +153 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variant_variable.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variant_variable.js +150 -0
- package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.d.ts.map +1 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/index.d.ts +3 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/index.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/index.js +2 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/saved_game_files.d.ts +2 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/saved_game_files.d.ts.map +1 -0
- package/dist/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/saved_game_files.js +1 -0
- package/dist/blf_chunk.d.ts +2 -2
- package/dist/blf_chunk.d.ts.map +1 -1
- package/dist/blf_chunk.js +20 -15
- package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts +3 -2
- package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.d.ts.map +1 -1
- package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.js +3 -2
- package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.d.ts +1 -1
- package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.d.ts.map +1 -1
- package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.js +7 -7
- package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_map_variant.d.ts +19 -0
- package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_map_variant.d.ts.map +1 -0
- package/dist/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_map_variant.js +106 -0
- package/dist/chunks/haloreach_mcc/v_untracked_25_08_16_1352/index.d.ts +6 -0
- package/dist/chunks/haloreach_mcc/v_untracked_25_08_16_1352/index.d.ts.map +1 -0
- package/dist/chunks/haloreach_mcc/v_untracked_25_08_16_1352/index.js +5 -0
- package/dist/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/s_blf_chunk_game_variant.d.ts +1 -1
- package/dist/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/s_blf_chunk_game_variant.d.ts.map +1 -1
- package/dist/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/s_blf_chunk_game_variant.js +1 -1
- package/dist/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/s_blf_chunk_packed_game_variant.d.ts +1 -1
- package/dist/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/s_blf_chunk_packed_game_variant.d.ts.map +1 -1
- package/dist/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/s_blf_chunk_packed_game_variant.js +1 -1
- package/dist/chunks/mcc/s_blf_chunk_fileshare_metadata.d.ts +12 -0
- package/dist/chunks/mcc/s_blf_chunk_fileshare_metadata.d.ts.map +1 -0
- package/dist/chunks/mcc/s_blf_chunk_fileshare_metadata.js +107 -0
- package/dist/helpers/automap.d.ts +9 -0
- package/dist/helpers/automap.d.ts.map +1 -0
- package/dist/helpers/automap.js +34 -0
- package/dist/helpers/convert_reach_gametype.d.ts +12 -11
- package/dist/helpers/convert_reach_gametype.d.ts.map +1 -1
- package/dist/helpers/convert_reach_gametype.js +403 -109
- package/dist/helpers/game_variant_json.d.ts +19 -0
- package/dist/helpers/game_variant_json.d.ts.map +1 -0
- package/dist/helpers/game_variant_json.js +121 -0
- package/dist/helpers/index.d.ts +1 -1
- package/dist/helpers/index.d.ts.map +1 -1
- package/dist/helpers/index.js +1 -1
- package/dist/helpers/reach_gametype_automap.d.ts +10 -0
- package/dist/helpers/reach_gametype_automap.d.ts.map +1 -0
- package/dist/helpers/reach_gametype_automap.js +45 -0
- package/dist/helpers/reach_gametype_automapper.d.ts +5 -0
- package/dist/helpers/reach_gametype_automapper.d.ts.map +1 -0
- package/dist/helpers/reach_gametype_automapper.js +9 -0
- package/dist/helpers/reach_gametype_conversion_error.d.ts +11 -0
- package/dist/helpers/reach_gametype_conversion_error.d.ts.map +1 -0
- package/dist/helpers/reach_gametype_conversion_error.js +11 -0
- package/dist/types/static_array.d.ts +6 -0
- package/dist/types/static_array.d.ts.map +1 -0
- package/dist/types/static_array.js +3 -0
- package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.d.ts +1 -0
- package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.d.ts.map +1 -1
- package/dist/versions/haloreach/v12065_11_08_24_1738_tu1actual.js +1 -0
- package/dist/versions/haloreach_mcc/{v_untracked_25_08_19_1352.js → v_untracked_25_08_16_1352.d.ts} +5 -3
- package/dist/versions/haloreach_mcc/{v_untracked_25_08_19_1352.d.ts.map → v_untracked_25_08_16_1352.d.ts.map} +1 -1
- package/dist/versions/haloreach_mcc/{v_untracked_25_08_19_1352.d.ts → v_untracked_25_08_16_1352.js} +4 -4
- package/dist/versions/mcc/v2025_08_16_178512_1_release.d.ts +4 -0
- package/dist/versions/mcc/v2025_08_16_178512_1_release.d.ts.map +1 -0
- package/dist/versions/mcc/v2025_08_16_178512_1_release.js +3 -0
- package/dist-cjs/automapper/create_map.js +9 -0
- package/dist-cjs/automapper/create_mapper.js +12 -0
- package/dist-cjs/automapper/enum_by_name.js +55 -0
- package/dist-cjs/automapper/index.js +20 -0
- package/dist-cjs/automapper/stage3_metadata.js +43 -0
- package/dist-cjs/bitstream/enum.js +25 -2
- package/dist-cjs/bitstream/reader.js +2 -5
- package/dist-cjs/bitstream/writer.js +3 -2
- package/dist-cjs/blam/common/math/real_types.js +27 -0
- package/dist-cjs/blam/common/math/unit_vector_quantization.js +29 -0
- package/dist-cjs/blam/common/simulation/simulation_encoding.js +26 -0
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant.js +271 -112
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_custom_variant_au1_settings.js +114 -30
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_default.js +743 -280
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_survival_variant.js +480 -170
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_engine_traits.js +74 -15
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant.js +152 -87
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_player_traits.js +431 -142
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_string_table.js +205 -145
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/game_engine_enums.js +92 -23
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalo_game_statistic.js +82 -18
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_megalogamengine_map_permissions.js +70 -16
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_object_filter.js +108 -34
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/c_trigger.js +112 -33
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_actions.js +3150 -1607
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_conditions.js +413 -208
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references.js +735 -459
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_text.js +216 -99
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_custom_game_engine_definition.js +240 -106
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_game_engine_player_rating_parameters.js +178 -54
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_user_defined_option.js +186 -73
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variable_metadata.js +135 -68
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/s_variant_variable.js +137 -63
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/math/real_math.js +116 -0
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/memory/bitstream_extensions.js +43 -0
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/index.js +1 -0
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/saved_games/scenario_map_variant.js +687 -0
- package/dist-cjs/blam/haloreach/v12065_11_08_24_1738_tu1actual/simulation/simulation_encoding.js +32 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant.js +288 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_custom_variant_au1_settings.js +118 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_default.js +768 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_survival_variant.js +507 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_engine_traits.js +79 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_variant.js +178 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_player_traits.js +440 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_string_table.js +255 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/game_engine_enums.js +133 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalo_game_statistic.js +86 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_megalogamengine_map_permissions.js +76 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_object_filter.js +117 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/c_trigger.js +142 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_actions.js +3640 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_conditions.js +439 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_references.js +793 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_text.js +242 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_custom_game_engine_definition.js +254 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_game_engine_player_rating_parameters.js +182 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_user_defined_option.js +200 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variable_metadata.js +160 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/s_variant_variable.js +153 -0
- package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/saved_games/index.js +1 -0
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_16_1352/saved_games/saved_game_files.js +17 -0
- package/dist-cjs/blf_chunk.js +20 -15
- package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/index.js +19 -13
- package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_content_header.js +7 -7
- package/dist-cjs/chunks/haloreach/v12065_11_08_24_1738_tu1actual/s_blf_chunk_map_variant.js +109 -0
- package/dist-cjs/chunks/haloreach_mcc/v_untracked_25_08_16_1352/index.js +26 -0
- package/dist-cjs/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/s_blf_chunk_game_variant.js +1 -1
- package/dist-cjs/chunks/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/s_blf_chunk_packed_game_variant.js +1 -1
- package/dist-cjs/chunks/mcc/s_blf_chunk_fileshare_metadata.js +110 -0
- package/dist-cjs/helpers/automap.js +40 -0
- package/dist-cjs/helpers/convert_reach_gametype.js +407 -111
- package/dist-cjs/helpers/game_variant_json.js +127 -0
- package/dist-cjs/helpers/index.js +2 -1
- package/dist-cjs/helpers/reach_gametype_automap.js +81 -0
- package/dist-cjs/helpers/reach_gametype_automapper.js +13 -0
- package/dist-cjs/helpers/reach_gametype_conversion_error.js +14 -0
- package/dist-cjs/types/static_array.js +6 -0
- package/dist-cjs/versions/haloreach/v12065_11_08_24_1738_tu1actual.js +1 -0
- package/dist-cjs/versions/haloreach_mcc/{v_untracked_25_08_19_1352.js → v_untracked_25_08_16_1352.js} +4 -3
- package/dist-cjs/versions/mcc/v2025_08_16_178512_1_release.js +20 -0
- package/package.json +14 -3
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant.js +0 -125
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant_au1_settings.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant_au1_settings.js +0 -30
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_default.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_default.js +0 -292
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_survival_variant.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_survival_variant.js +0 -184
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_traits.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_traits.js +0 -16
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_variant.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_variant.js +0 -109
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_player_traits.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_player_traits.js +0 -142
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_string_table.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_string_table.js +0 -190
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/game_engine_enums.js +0 -60
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalo_game_statistic.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalo_game_statistic.js +0 -18
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalogamengine_map_permissions.js +0 -18
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_object_filter.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_object_filter.js +0 -39
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_trigger.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_trigger.js +0 -59
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_actions.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_actions.js +0 -1696
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_conditions.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_conditions.js +0 -226
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_references.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_references.js +0 -502
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_text.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_text.js +0 -119
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_custom_game_engine_definition.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_custom_game_engine_definition.js +0 -116
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_game_engine_player_rating_parameters.js +0 -54
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_user_defined_option.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_user_defined_option.js +0 -82
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variable_metadata.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variable_metadata.js +0 -85
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variant_variable.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variant_variable.js +0 -75
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/index.d.ts +0 -2
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/index.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/index.js +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/saved_game_files.d.ts +0 -66
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/saved_game_files.d.ts.map +0 -1
- package/dist/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/saved_game_files.js +0 -586
- package/dist/chunks/haloreach_mcc/v_untracked_25_08_19_1352/index.d.ts +0 -5
- package/dist/chunks/haloreach_mcc/v_untracked_25_08_19_1352/index.d.ts.map +0 -1
- package/dist/chunks/haloreach_mcc/v_untracked_25_08_19_1352/index.js +0 -4
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant.js +0 -129
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_custom_variant_au1_settings.js +0 -34
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_default.js +0 -305
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_survival_variant.js +0 -192
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_engine_traits.js +0 -20
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_game_variant.js +0 -113
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_player_traits.js +0 -151
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/c_string_table.js +0 -195
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/game_engine_enums.js +0 -64
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalo_game_statistic.js +0 -22
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_megalogamengine_map_permissions.js +0 -22
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_object_filter.js +0 -43
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/c_trigger.js +0 -63
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_actions.js +0 -1748
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_conditions.js +0 -234
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_references.js +0 -517
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/megalogamengine_text.js +0 -125
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_custom_game_engine_definition.js +0 -120
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_game_engine_player_rating_parameters.js +0 -58
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_user_defined_option.js +0 -87
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variable_metadata.js +0 -93
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/game/megalogamengine/s_variant_variable.js +0 -79
- package/dist-cjs/blam/haloreach_mcc/v_untracked_25_08_19_1352/saved_games/saved_game_files.js +0 -591
- package/dist-cjs/chunks/haloreach_mcc/v_untracked_25_08_19_1352/index.js +0 -19
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/c_game_engine_custom_variant.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/c_game_engine_custom_variant_au1_settings.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/c_game_engine_survival_variant.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/c_game_engine_traits.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/c_player_traits.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/c_string_table.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/game_engine_enums.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.js +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/c_megalo_game_statistic.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/c_megalogamengine_map_permissions.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/c_object_filter.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/c_trigger.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/index.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/index.js +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_conditions.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_object.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_object.js +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_player.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_player.js +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_team.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_team.js +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_hud_widgets.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_hud_widgets.js +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_references.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_text.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/s_game_engine_player_rating_parameters.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/s_user_defined_option.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/s_variable_metadata.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/s_variant_variable.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.d.ts +0 -0
- /package/dist/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.js +0 -0
- /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/index.js +0 -0
- /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/index.js +0 -0
- /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_object.js +0 -0
- /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_player.js +0 -0
- /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_explicit_team.js +0 -0
- /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/game/megalogamengine/megalogamengine_hud_widgets.js +0 -0
- /package/dist-cjs/blam/haloreach_mcc/{v_untracked_25_08_19_1352 → v_untracked_25_08_16_1352}/index.js +0 -0
|
@@ -1,47 +1,50 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Convert game variants between Halo Reach TU1 and MCC
|
|
2
|
+
* Convert game variants between Halo: Reach TU1 (Xbox 360) and MCC.
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
4
|
+
* Cross-build conversion uses AutoMapper (`@automapper/core` + `@automapper/classes`)
|
|
5
|
+
* with profiles registered from the source instance graph, then applies build-specific
|
|
6
|
+
* remaps in place on the mapped target instances.
|
|
6
7
|
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
* - Survival: unrelated fields — MCC→TU1 sets `m_campaign_difficulty_level` to 1;
|
|
11
|
-
* TU1→MCC sets `m_encoding_version` to 2; `m_additional_flags` only on MCC
|
|
8
|
+
* TU1 → MCC is always possible for supported variant kinds (custom / survival).
|
|
9
|
+
* MCC → TU1 rejects MCC-only megalo features and fails when temporary object,
|
|
10
|
+
* player, or team references cannot be mapped onto free global slots.
|
|
12
11
|
*/
|
|
13
12
|
import { e_game_mode as e_game_mode_tu1, } from "../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/c_game_variant";
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
16
|
-
import {
|
|
17
|
-
import {
|
|
18
|
-
import {
|
|
19
|
-
import {
|
|
13
|
+
import { e_explicit_object_type as e_explicit_object_type_tu1 } from "../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_explicit_object";
|
|
14
|
+
import { e_explicit_player_type as e_explicit_player_type_tu1 } from "../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_explicit_player";
|
|
15
|
+
import { e_explicit_team_type as e_explicit_team_type_tu1 } from "../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_explicit_team";
|
|
16
|
+
import { c_custom_variable_reference as c_custom_variable_reference_tu1 } from "../blam/haloreach/v12065_11_08_24_1738_tu1actual/game/megalogamengine/megalogamengine_references";
|
|
17
|
+
import { c_game_variant as c_game_variant_mcc, e_game_mode as e_game_mode_mcc, } from "../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/c_game_variant";
|
|
18
|
+
import { e_action_type as e_action_type_mcc, e_math_operation as e_math_operation_mcc, } from "../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_actions";
|
|
19
|
+
import { e_explicit_object_type as e_explicit_object_type_mcc } from "../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_explicit_object";
|
|
20
|
+
import { e_explicit_player_type as e_explicit_player_type_mcc } from "../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_explicit_player";
|
|
21
|
+
import { e_explicit_team_type as e_explicit_team_type_mcc } from "../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_explicit_team";
|
|
22
|
+
import { c_custom_variable_reference as c_custom_variable_reference_mcc } from "../blam/haloreach_mcc/v_untracked_25_08_16_1352/game/megalogamengine/megalogamengine_references";
|
|
20
23
|
import { BlfError } from "../error";
|
|
21
|
-
|
|
24
|
+
import { mccToTu1Mapper, tu1ToMccMapper } from "./reach_gametype_automap";
|
|
25
|
+
import { map_reach_gametype_mcc_to_tu1, map_reach_gametype_tu1_to_mcc, } from "./reach_gametype_automapper";
|
|
26
|
+
import { e_reach_gametype_conversion_error } from "./reach_gametype_conversion_error";
|
|
27
|
+
export { e_reach_gametype_conversion_error } from "./reach_gametype_conversion_error";
|
|
22
28
|
const MCC_ONLY_MATH_OPS = [
|
|
23
29
|
e_math_operation_mcc.shift_left_with,
|
|
24
30
|
e_math_operation_mcc.shift_right_with,
|
|
25
31
|
];
|
|
26
|
-
|
|
32
|
+
const MCC_ONLY_ACTION_TYPES = [
|
|
33
|
+
e_action_type_mcc.begin,
|
|
34
|
+
e_action_type_mcc.hs_function_call,
|
|
35
|
+
e_action_type_mcc.get_button_time,
|
|
36
|
+
e_action_type_mcc.team_set_vehicle_spawning,
|
|
37
|
+
e_action_type_mcc.player_set_vehicle_spawning,
|
|
38
|
+
e_action_type_mcc.set_player_respawn_vehicle,
|
|
39
|
+
e_action_type_mcc.set_team_respawn_vehicle,
|
|
40
|
+
e_action_type_mcc.hide_object,
|
|
41
|
+
];
|
|
27
42
|
const TU1_SURVIVAL_CAMPAIGN_DIFFICULTY = 1;
|
|
28
|
-
/** MCC survival `m_encoding_version` when converting from TU1. */
|
|
29
43
|
const MCC_SURVIVAL_ENCODING_VERSION = 2;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
return JSON.parse(JSON.stringify(value));
|
|
35
|
-
}
|
|
36
|
-
function write_game_variant_json(to, data) {
|
|
37
|
-
to.m_game_engine = data.m_game_engine;
|
|
38
|
-
to.m_campaign_variant = data.m_campaign_variant;
|
|
39
|
-
to.m_custom_variant = data.m_custom_variant;
|
|
40
|
-
to.m_survival_variant = data.m_survival_variant;
|
|
41
|
-
}
|
|
42
|
-
// ---------------------------------------------------------------------------
|
|
43
|
-
// Tree walk
|
|
44
|
-
// ---------------------------------------------------------------------------
|
|
44
|
+
const HR_GVAR_PREFIX = "$hr_gvar_";
|
|
45
|
+
const MAX_OBJECT_GLOBALS = 16;
|
|
46
|
+
const MAX_PLAYER_GLOBALS = 8;
|
|
47
|
+
const MAX_TEAM_GLOBALS = 8;
|
|
45
48
|
function visit_object_tree(root, fn) {
|
|
46
49
|
if (root === null || typeof root !== "object") {
|
|
47
50
|
return;
|
|
@@ -58,133 +61,424 @@ function visit_object_tree(root, fn) {
|
|
|
58
61
|
visit_object_tree(value, fn);
|
|
59
62
|
}
|
|
60
63
|
}
|
|
61
|
-
function
|
|
64
|
+
function remap_temporary_explicit_refs(root, maps) {
|
|
62
65
|
visit_object_tree(root, (obj) => {
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
const objectType = obj.m_explicit_object_type;
|
|
67
|
+
if (typeof objectType === "number" &&
|
|
68
|
+
objectType >= e_explicit_object_type_mcc.temporary_0 &&
|
|
69
|
+
objectType <= e_explicit_object_type_mcc.temporary_7) {
|
|
70
|
+
const temporaryIndex = objectType - e_explicit_object_type_mcc.temporary_0;
|
|
71
|
+
const globalIndex = maps.object.get(temporaryIndex);
|
|
72
|
+
if (globalIndex !== undefined) {
|
|
73
|
+
obj.m_explicit_object_type =
|
|
74
|
+
e_explicit_object_type_tu1.global_0 + globalIndex;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const playerType = obj.m_explicit_player_type;
|
|
78
|
+
if (typeof playerType === "number" &&
|
|
79
|
+
playerType >= e_explicit_player_type_mcc.temporary_0 &&
|
|
80
|
+
playerType <= e_explicit_player_type_mcc.temporary_2) {
|
|
81
|
+
const temporaryIndex = playerType - e_explicit_player_type_mcc.temporary_0;
|
|
82
|
+
const globalIndex = maps.player.get(temporaryIndex);
|
|
83
|
+
if (globalIndex !== undefined) {
|
|
84
|
+
obj.m_explicit_player_type =
|
|
85
|
+
e_explicit_player_type_tu1.global_0 + globalIndex;
|
|
86
|
+
}
|
|
65
87
|
}
|
|
66
|
-
|
|
67
|
-
|
|
88
|
+
const teamType = obj.m_explicit_team_type;
|
|
89
|
+
if (typeof teamType === "number" &&
|
|
90
|
+
teamType >= e_explicit_team_type_mcc.temporary_0 &&
|
|
91
|
+
teamType <= e_explicit_team_type_mcc.temporary_5) {
|
|
92
|
+
const temporaryIndex = teamType - e_explicit_team_type_mcc.temporary_0;
|
|
93
|
+
const globalIndex = maps.team.get(temporaryIndex);
|
|
94
|
+
if (globalIndex !== undefined) {
|
|
95
|
+
obj.m_explicit_team_type =
|
|
96
|
+
e_explicit_team_type_tu1.global_0 + globalIndex;
|
|
97
|
+
}
|
|
68
98
|
}
|
|
69
99
|
});
|
|
70
100
|
}
|
|
71
|
-
function
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
101
|
+
function extend_global_metadata(metadata, maps) {
|
|
102
|
+
const maxObjectGlobal = Math.max(0, ...maps.object.values());
|
|
103
|
+
while (metadata.m_object_variables.length <= maxObjectGlobal) {
|
|
104
|
+
metadata.m_object_variables.push(0);
|
|
105
|
+
}
|
|
106
|
+
const maxPlayerGlobal = Math.max(0, ...maps.player.values());
|
|
107
|
+
while (metadata.m_player_variables.length <= maxPlayerGlobal) {
|
|
108
|
+
metadata.m_player_variables.push(0);
|
|
109
|
+
}
|
|
110
|
+
const maxTeamGlobal = Math.max(0, ...maps.team.values());
|
|
111
|
+
while (metadata.m_team_variables.length <= maxTeamGlobal) {
|
|
112
|
+
metadata.m_team_variables.push([0, 0]);
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
function apply_survival_mcc_to_tu1(survival) {
|
|
116
|
+
if (survival === undefined) {
|
|
117
|
+
return;
|
|
118
|
+
}
|
|
119
|
+
survival.m_campaign_difficulty_level = TU1_SURVIVAL_CAMPAIGN_DIFFICULTY;
|
|
120
|
+
delete survival.m_encoding_version;
|
|
121
|
+
delete survival.m_additional_flags;
|
|
122
|
+
}
|
|
123
|
+
function apply_survival_tu1_to_mcc(survival) {
|
|
124
|
+
if (survival === undefined) {
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
survival.m_encoding_version = MCC_SURVIVAL_ENCODING_VERSION;
|
|
128
|
+
survival.m_additional_flags = 0;
|
|
129
|
+
delete survival.m_campaign_difficulty_level;
|
|
130
|
+
}
|
|
131
|
+
function first_localized_string(table) {
|
|
132
|
+
const value = table?.strings[0]?.[0];
|
|
133
|
+
if (value === null || value === undefined || value.length === 0) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
return value;
|
|
137
|
+
}
|
|
138
|
+
function resolve_hr_gvar_name(value, localized_name) {
|
|
139
|
+
if (value === undefined || !value.startsWith(HR_GVAR_PREFIX)) {
|
|
140
|
+
return value ?? "";
|
|
141
|
+
}
|
|
142
|
+
const localized = first_localized_string(localized_name);
|
|
143
|
+
if (localized !== undefined) {
|
|
144
|
+
return localized;
|
|
145
|
+
}
|
|
146
|
+
return value.slice(HR_GVAR_PREFIX.length).replaceAll("_", " ");
|
|
147
|
+
}
|
|
148
|
+
function resolve_hr_gvar_description(value, localized_description) {
|
|
149
|
+
if (value === undefined || !value.startsWith(HR_GVAR_PREFIX)) {
|
|
150
|
+
return value ?? "";
|
|
151
|
+
}
|
|
152
|
+
return first_localized_string(localized_description) ?? "";
|
|
153
|
+
}
|
|
154
|
+
function apply_mcc_to_tu1_name_description(from, to) {
|
|
155
|
+
const mccCustom = from.m_custom_variant;
|
|
156
|
+
const tu1Custom = to.m_custom_variant;
|
|
157
|
+
if (mccCustom === undefined || tu1Custom === undefined) {
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
const metadata = tu1Custom.m_base_variant.m_metadata;
|
|
161
|
+
metadata.name = resolve_hr_gvar_name(mccCustom.m_base_variant.m_metadata.name, mccCustom.m_localized_name);
|
|
162
|
+
metadata.description = resolve_hr_gvar_description(mccCustom.m_base_variant.m_metadata.description, mccCustom.m_localized_description);
|
|
163
|
+
}
|
|
164
|
+
function object_global_index(value) {
|
|
165
|
+
if (value >= e_explicit_object_type_tu1.global_0 &&
|
|
166
|
+
value <= e_explicit_object_type_tu1.global_15) {
|
|
167
|
+
return value - e_explicit_object_type_tu1.global_0;
|
|
168
|
+
}
|
|
169
|
+
return;
|
|
170
|
+
}
|
|
171
|
+
function object_temporary_index(value) {
|
|
172
|
+
if (value >= e_explicit_object_type_mcc.temporary_0 &&
|
|
173
|
+
value <= e_explicit_object_type_mcc.temporary_7) {
|
|
174
|
+
return value - e_explicit_object_type_mcc.temporary_0;
|
|
175
|
+
}
|
|
176
|
+
return;
|
|
177
|
+
}
|
|
178
|
+
function player_global_index(value) {
|
|
179
|
+
if (value >= e_explicit_player_type_tu1.global_0 &&
|
|
180
|
+
value <= e_explicit_player_type_tu1.global_7) {
|
|
181
|
+
return value - e_explicit_player_type_tu1.global_0;
|
|
182
|
+
}
|
|
183
|
+
return;
|
|
184
|
+
}
|
|
185
|
+
function player_temporary_index(value) {
|
|
186
|
+
if (value >= e_explicit_player_type_mcc.temporary_0 &&
|
|
187
|
+
value <= e_explicit_player_type_mcc.temporary_2) {
|
|
188
|
+
return value - e_explicit_player_type_mcc.temporary_0;
|
|
189
|
+
}
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
function team_global_index(value) {
|
|
193
|
+
if (value >= e_explicit_team_type_tu1.global_0 &&
|
|
194
|
+
value <= e_explicit_team_type_tu1.global_7) {
|
|
195
|
+
return value - e_explicit_team_type_tu1.global_0;
|
|
196
|
+
}
|
|
197
|
+
return;
|
|
198
|
+
}
|
|
199
|
+
function team_temporary_index(value) {
|
|
200
|
+
if (value >= e_explicit_team_type_mcc.temporary_0 &&
|
|
201
|
+
value <= e_explicit_team_type_mcc.temporary_5) {
|
|
202
|
+
return value - e_explicit_team_type_mcc.temporary_0;
|
|
203
|
+
}
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
function reserve_metadata_slots(usage, metadata) {
|
|
207
|
+
for (let i = 0; i < metadata.m_object_variables.length; i++) {
|
|
208
|
+
usage.object.add(i);
|
|
209
|
+
}
|
|
210
|
+
for (let i = 0; i < metadata.m_player_variables.length; i++) {
|
|
211
|
+
usage.player.add(i);
|
|
212
|
+
}
|
|
213
|
+
for (let i = 0; i < metadata.m_team_variables.length; i++) {
|
|
214
|
+
usage.team.add(i);
|
|
215
|
+
}
|
|
216
|
+
for (let i = 0; i < metadata.m_numeric_variables.length; i++) {
|
|
217
|
+
usage.numeric.add(i);
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
function collect_slot_usage_from_object(obj, globals, temporaries) {
|
|
221
|
+
const objectType = obj.m_explicit_object_type;
|
|
222
|
+
if (typeof objectType === "number") {
|
|
223
|
+
const globalIndex = object_global_index(objectType);
|
|
224
|
+
if (globalIndex !== undefined) {
|
|
225
|
+
globals.object.add(globalIndex);
|
|
75
226
|
}
|
|
76
|
-
|
|
77
|
-
|
|
227
|
+
const temporaryIndex = object_temporary_index(objectType);
|
|
228
|
+
if (temporaryIndex !== undefined) {
|
|
229
|
+
temporaries.object.add(temporaryIndex);
|
|
78
230
|
}
|
|
79
|
-
}
|
|
231
|
+
}
|
|
232
|
+
const playerType = obj.m_explicit_player_type;
|
|
233
|
+
if (typeof playerType === "number") {
|
|
234
|
+
const globalIndex = player_global_index(playerType);
|
|
235
|
+
if (globalIndex !== undefined) {
|
|
236
|
+
globals.player.add(globalIndex);
|
|
237
|
+
}
|
|
238
|
+
const temporaryIndex = player_temporary_index(playerType);
|
|
239
|
+
if (temporaryIndex !== undefined) {
|
|
240
|
+
temporaries.player.add(temporaryIndex);
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
const teamType = obj.m_explicit_team_type;
|
|
244
|
+
if (typeof teamType === "number") {
|
|
245
|
+
const globalIndex = team_global_index(teamType);
|
|
246
|
+
if (globalIndex !== undefined) {
|
|
247
|
+
globals.team.add(globalIndex);
|
|
248
|
+
}
|
|
249
|
+
const temporaryIndex = team_temporary_index(teamType);
|
|
250
|
+
if (temporaryIndex !== undefined) {
|
|
251
|
+
temporaries.team.add(temporaryIndex);
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
if (obj.m_type === 4 && typeof obj.m_variable_index === "number") {
|
|
255
|
+
globals.numeric.add(obj.m_variable_index);
|
|
256
|
+
}
|
|
80
257
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
258
|
+
function collect_slot_usage(root) {
|
|
259
|
+
const globals = {
|
|
260
|
+
object: new Set(),
|
|
261
|
+
player: new Set(),
|
|
262
|
+
team: new Set(),
|
|
263
|
+
numeric: new Set(),
|
|
264
|
+
};
|
|
265
|
+
const temporaries = {
|
|
266
|
+
object: new Set(),
|
|
267
|
+
player: new Set(),
|
|
268
|
+
team: new Set(),
|
|
269
|
+
};
|
|
270
|
+
visit_object_tree(root, (obj) => collect_slot_usage_from_object(obj, globals, temporaries));
|
|
271
|
+
return { globals, temporaries };
|
|
272
|
+
}
|
|
273
|
+
function allocate_global_slot(used, max) {
|
|
274
|
+
for (let index = 0; index < max; index++) {
|
|
275
|
+
if (!used.has(index)) {
|
|
276
|
+
used.add(index);
|
|
277
|
+
return index;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return;
|
|
281
|
+
}
|
|
282
|
+
function build_temporary_to_global_maps(globals, temporaries) {
|
|
283
|
+
const maps = {
|
|
284
|
+
object: new Map(),
|
|
285
|
+
player: new Map(),
|
|
286
|
+
team: new Map(),
|
|
287
|
+
};
|
|
288
|
+
for (const temporaryIndex of [...temporaries.object].sort((a, b) => a - b)) {
|
|
289
|
+
const globalIndex = allocate_global_slot(globals.object, MAX_OBJECT_GLOBALS);
|
|
290
|
+
if (globalIndex === undefined) {
|
|
88
291
|
return;
|
|
89
292
|
}
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
293
|
+
maps.object.set(temporaryIndex, globalIndex);
|
|
294
|
+
}
|
|
295
|
+
for (const temporaryIndex of [...temporaries.player].sort((a, b) => a - b)) {
|
|
296
|
+
const globalIndex = allocate_global_slot(globals.player, MAX_PLAYER_GLOBALS);
|
|
297
|
+
if (globalIndex === undefined) {
|
|
95
298
|
return;
|
|
96
299
|
}
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
300
|
+
maps.player.set(temporaryIndex, globalIndex);
|
|
301
|
+
}
|
|
302
|
+
for (const temporaryIndex of [...temporaries.team].sort((a, b) => a - b)) {
|
|
303
|
+
const globalIndex = allocate_global_slot(globals.team, MAX_TEAM_GLOBALS);
|
|
304
|
+
if (globalIndex === undefined) {
|
|
102
305
|
return;
|
|
103
306
|
}
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
307
|
+
maps.team.set(temporaryIndex, globalIndex);
|
|
308
|
+
}
|
|
309
|
+
return maps;
|
|
310
|
+
}
|
|
311
|
+
function get_custom_engine_tu1(variant) {
|
|
312
|
+
return variant.m_custom_variant?.m_game_engine;
|
|
313
|
+
}
|
|
314
|
+
function copy_variable_metadata_mcc_to_tu1(from, to) {
|
|
315
|
+
to.m_numeric_variables = from.m_numeric_variables.map(([ref, state]) => [
|
|
316
|
+
mccToTu1Mapper.map(ref, c_custom_variable_reference_mcc, c_custom_variable_reference_tu1),
|
|
317
|
+
state,
|
|
318
|
+
]);
|
|
319
|
+
to.m_timer_variables = from.m_timer_variables.map((ref) => mccToTu1Mapper.map(ref, c_custom_variable_reference_mcc, c_custom_variable_reference_tu1));
|
|
320
|
+
to.m_team_variables = from.m_team_variables.map(([value, state]) => [
|
|
321
|
+
value,
|
|
322
|
+
state,
|
|
323
|
+
]);
|
|
324
|
+
to.m_player_variables = [...from.m_player_variables];
|
|
325
|
+
to.m_object_variables = [...from.m_object_variables];
|
|
326
|
+
}
|
|
327
|
+
function copy_variable_metadata_tu1_to_mcc(from, to) {
|
|
328
|
+
to.m_numeric_variables = from.m_numeric_variables.map(([ref, state]) => [
|
|
329
|
+
tu1ToMccMapper.map(ref, c_custom_variable_reference_tu1, c_custom_variable_reference_mcc),
|
|
330
|
+
state,
|
|
331
|
+
]);
|
|
332
|
+
to.m_timer_variables = from.m_timer_variables.map((ref) => tu1ToMccMapper.map(ref, c_custom_variable_reference_tu1, c_custom_variable_reference_mcc));
|
|
333
|
+
to.m_team_variables = from.m_team_variables.map(([value, state]) => [
|
|
334
|
+
value,
|
|
335
|
+
state,
|
|
336
|
+
]);
|
|
337
|
+
to.m_player_variables = [...from.m_player_variables];
|
|
338
|
+
to.m_object_variables = [...from.m_object_variables];
|
|
339
|
+
}
|
|
340
|
+
function copy_engine_variable_metadata_mcc_to_tu1(from, to) {
|
|
341
|
+
copy_variable_metadata_mcc_to_tu1(from.m_global_variable_metadata, to.m_global_variable_metadata);
|
|
342
|
+
copy_variable_metadata_mcc_to_tu1(from.m_player_variable_metadata, to.m_player_variable_metadata);
|
|
343
|
+
copy_variable_metadata_mcc_to_tu1(from.m_object_variable_metadata, to.m_object_variable_metadata);
|
|
344
|
+
copy_variable_metadata_mcc_to_tu1(from.m_team_variable_metadata, to.m_team_variable_metadata);
|
|
345
|
+
}
|
|
346
|
+
function copy_engine_variable_metadata_tu1_to_mcc(from, to) {
|
|
347
|
+
copy_variable_metadata_tu1_to_mcc(from.m_global_variable_metadata, to.m_global_variable_metadata);
|
|
348
|
+
copy_variable_metadata_tu1_to_mcc(from.m_player_variable_metadata, to.m_player_variable_metadata);
|
|
349
|
+
copy_variable_metadata_tu1_to_mcc(from.m_object_variable_metadata, to.m_object_variable_metadata);
|
|
350
|
+
copy_variable_metadata_tu1_to_mcc(from.m_team_variable_metadata, to.m_team_variable_metadata);
|
|
351
|
+
}
|
|
352
|
+
function get_custom_engine(variant) {
|
|
353
|
+
return variant.m_custom_variant?.m_game_engine;
|
|
354
|
+
}
|
|
355
|
+
function apply_mcc_to_tu1_megalo_remapping(variant, maps) {
|
|
356
|
+
const engine = variant.m_custom_variant?.m_game_engine;
|
|
357
|
+
if (!engine) {
|
|
358
|
+
return;
|
|
359
|
+
}
|
|
360
|
+
remap_temporary_explicit_refs(engine, maps);
|
|
361
|
+
extend_global_metadata(engine.m_global_variable_metadata, maps);
|
|
362
|
+
}
|
|
363
|
+
function variant_uses_mcc_only_math_ops(variant) {
|
|
364
|
+
let found = false;
|
|
365
|
+
visit_object_tree(variant, (obj) => {
|
|
366
|
+
if (found) {
|
|
367
|
+
return;
|
|
368
|
+
}
|
|
369
|
+
const op = obj.m_operation ?? obj.m_math_operation;
|
|
370
|
+
if (typeof op === "number" && MCC_ONLY_MATH_OPS.includes(op)) {
|
|
108
371
|
found = true;
|
|
109
372
|
}
|
|
110
373
|
});
|
|
111
374
|
return found;
|
|
112
375
|
}
|
|
113
|
-
function
|
|
376
|
+
function variant_uses_mcc_only_action_types(variant) {
|
|
114
377
|
let found = false;
|
|
115
378
|
visit_object_tree(variant, (obj) => {
|
|
116
379
|
if (found) {
|
|
117
380
|
return;
|
|
118
381
|
}
|
|
119
|
-
const
|
|
120
|
-
if (typeof
|
|
382
|
+
const actionType = obj.m_type;
|
|
383
|
+
if (typeof actionType === "number" &&
|
|
384
|
+
MCC_ONLY_ACTION_TYPES.includes(actionType)) {
|
|
121
385
|
found = true;
|
|
122
386
|
}
|
|
123
387
|
});
|
|
124
388
|
return found;
|
|
125
389
|
}
|
|
126
|
-
|
|
127
|
-
|
|
390
|
+
function plan_temporary_relocation(variant) {
|
|
391
|
+
const engine = get_custom_engine(variant);
|
|
392
|
+
if (!engine) {
|
|
393
|
+
return { object: new Map(), player: new Map(), team: new Map() };
|
|
394
|
+
}
|
|
395
|
+
const { globals, temporaries } = collect_slot_usage(engine);
|
|
396
|
+
reserve_metadata_slots(globals, engine.m_global_variable_metadata);
|
|
397
|
+
if (temporaries.object.size === 0 &&
|
|
398
|
+
temporaries.player.size === 0 &&
|
|
399
|
+
temporaries.team.size === 0) {
|
|
400
|
+
return { object: new Map(), player: new Map(), team: new Map() };
|
|
401
|
+
}
|
|
402
|
+
return build_temporary_to_global_maps(globals, temporaries);
|
|
403
|
+
}
|
|
404
|
+
function check_mcc_game_variant_to_tu1(from) {
|
|
405
|
+
if (from.m_game_engine === e_game_mode_mcc.sandbox) {
|
|
406
|
+
return e_reach_gametype_conversion_error.forge_variant;
|
|
407
|
+
}
|
|
408
|
+
if (from.m_game_engine === e_game_mode_mcc.campaign) {
|
|
409
|
+
return e_reach_gametype_conversion_error.campaign_variant;
|
|
410
|
+
}
|
|
128
411
|
if (from.m_game_engine === e_game_mode_mcc.survival &&
|
|
129
412
|
from.m_survival_variant !== undefined &&
|
|
130
413
|
from.m_survival_variant.m_additional_flags !== 0) {
|
|
131
|
-
return
|
|
414
|
+
return e_reach_gametype_conversion_error.mcc_survival_additional_flags;
|
|
132
415
|
}
|
|
133
|
-
if (
|
|
134
|
-
return
|
|
416
|
+
if (variant_uses_mcc_only_action_types(from)) {
|
|
417
|
+
return e_reach_gametype_conversion_error.mcc_exclusive_action;
|
|
135
418
|
}
|
|
136
419
|
if (variant_uses_mcc_only_math_ops(from)) {
|
|
137
|
-
return
|
|
420
|
+
return e_reach_gametype_conversion_error.mcc_exclusive_math_operator;
|
|
138
421
|
}
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
// ---------------------------------------------------------------------------
|
|
144
|
-
function survival_json_mcc_to_tu1(survival) {
|
|
145
|
-
survival.m_campaign_difficulty_level = TU1_SURVIVAL_CAMPAIGN_DIFFICULTY;
|
|
146
|
-
survival.m_encoding_version = undefined;
|
|
147
|
-
survival.m_additional_flags = undefined;
|
|
422
|
+
if (plan_temporary_relocation(from) === undefined) {
|
|
423
|
+
return e_reach_gametype_conversion_error.insufficient_global_slots;
|
|
424
|
+
}
|
|
425
|
+
return e_reach_gametype_conversion_error.ok;
|
|
148
426
|
}
|
|
149
|
-
function
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
427
|
+
function check_tu1_game_variant_to_mcc(from) {
|
|
428
|
+
if (from.m_game_engine === e_game_mode_tu1.sandbox) {
|
|
429
|
+
return e_reach_gametype_conversion_error.forge_variant;
|
|
430
|
+
}
|
|
431
|
+
if (from.m_game_engine === e_game_mode_tu1.campaign) {
|
|
432
|
+
return e_reach_gametype_conversion_error.campaign_variant;
|
|
433
|
+
}
|
|
434
|
+
return e_reach_gametype_conversion_error.ok;
|
|
153
435
|
}
|
|
154
|
-
// ---------------------------------------------------------------------------
|
|
155
|
-
// Conversion (cross-version only)
|
|
156
|
-
// ---------------------------------------------------------------------------
|
|
157
436
|
function convert_mcc_to_tu1(from, to) {
|
|
158
|
-
|
|
159
|
-
|
|
437
|
+
const error = check_mcc_game_variant_to_tu1(from);
|
|
438
|
+
if (error !== e_reach_gametype_conversion_error.ok) {
|
|
439
|
+
return error;
|
|
440
|
+
}
|
|
441
|
+
const maps = plan_temporary_relocation(from);
|
|
442
|
+
if (maps === undefined) {
|
|
443
|
+
return e_reach_gametype_conversion_error.insufficient_global_slots;
|
|
160
444
|
}
|
|
161
|
-
const
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
445
|
+
const converted = map_reach_gametype_mcc_to_tu1(from);
|
|
446
|
+
const sourceEngine = get_custom_engine(from);
|
|
447
|
+
const targetEngine = converted.m_custom_variant?.m_game_engine;
|
|
448
|
+
if (sourceEngine !== undefined && targetEngine !== undefined) {
|
|
449
|
+
copy_engine_variable_metadata_mcc_to_tu1(sourceEngine, targetEngine);
|
|
165
450
|
}
|
|
166
|
-
|
|
167
|
-
|
|
451
|
+
apply_mcc_to_tu1_megalo_remapping(converted, maps);
|
|
452
|
+
apply_mcc_to_tu1_name_description(from, converted);
|
|
453
|
+
apply_survival_mcc_to_tu1(converted.m_survival_variant);
|
|
454
|
+
Object.assign(to, converted);
|
|
455
|
+
return e_reach_gametype_conversion_error.ok;
|
|
168
456
|
}
|
|
169
457
|
function convert_tu1_to_mcc(from, to) {
|
|
170
|
-
const
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
survival_json_tu1_to_mcc(data.m_survival_variant);
|
|
458
|
+
const error = check_tu1_game_variant_to_mcc(from);
|
|
459
|
+
if (error !== e_reach_gametype_conversion_error.ok) {
|
|
460
|
+
return error;
|
|
174
461
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
throw new BlfError("Forge game variants are not supported. Where did you even get this?");
|
|
462
|
+
const converted = map_reach_gametype_tu1_to_mcc(from);
|
|
463
|
+
const sourceEngine = get_custom_engine_tu1(from);
|
|
464
|
+
const targetEngine = converted.m_custom_variant?.m_game_engine;
|
|
465
|
+
if (sourceEngine !== undefined && targetEngine !== undefined) {
|
|
466
|
+
copy_engine_variable_metadata_tu1_to_mcc(sourceEngine, targetEngine);
|
|
181
467
|
}
|
|
468
|
+
apply_survival_tu1_to_mcc(converted.m_survival_variant);
|
|
469
|
+
Object.assign(to, converted);
|
|
470
|
+
return e_reach_gametype_conversion_error.ok;
|
|
471
|
+
}
|
|
472
|
+
function assert_cross_version(from, to) {
|
|
182
473
|
const from_is_mcc = from instanceof c_game_variant_mcc;
|
|
183
474
|
const to_is_mcc = to instanceof c_game_variant_mcc;
|
|
184
475
|
if (from_is_mcc === to_is_mcc) {
|
|
185
476
|
throw new BlfError("convert_reach_gametype only supports cross-version conversion between Reach TU1 and Reach MCC");
|
|
186
477
|
}
|
|
187
|
-
|
|
478
|
+
}
|
|
479
|
+
export function convert_reach_gametype(from, to) {
|
|
480
|
+
assert_cross_version(from, to);
|
|
481
|
+
if (from instanceof c_game_variant_mcc) {
|
|
188
482
|
return convert_mcc_to_tu1(from, to);
|
|
189
483
|
}
|
|
190
484
|
return convert_tu1_to_mcc(from, to);
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* JSON round-trip for game variant class graphs.
|
|
3
|
+
*
|
|
4
|
+
* Uses `c.json` when a type is decorated with `@c.struct()`.
|
|
5
|
+
* Bitstream-decoded game variant types fall back to a cstruct-compatible walk
|
|
6
|
+
* that preserves numeric enums and serializes bigint values as strings.
|
|
7
|
+
*/
|
|
8
|
+
type JsonRecord = Record<string, unknown>;
|
|
9
|
+
type ClassConstructor = new () => object;
|
|
10
|
+
/** Serialize a game variant instance to a cstruct-compatible JSON object. */
|
|
11
|
+
export declare function variantToJson<T extends object>(ctor: new () => T, instance: T): JsonRecord;
|
|
12
|
+
/** Build a game variant instance from JSON, optionally remapping nested constructors. */
|
|
13
|
+
export declare function variantFromJson<T extends object>(ctor: new () => T, json: JsonRecord, template?: object, ctorMap?: Map<ClassConstructor, ClassConstructor>): T;
|
|
14
|
+
/** Pair same-named exports from two version bundles for cross-build hydration. */
|
|
15
|
+
export declare function buildCrossVersionConstructorMap(sourceModule: Record<string, unknown>, targetModule: Record<string, unknown>): Map<ClassConstructor, ClassConstructor>;
|
|
16
|
+
/** Deep-clone a variant instance through JSON using cstruct-compatible encoding. */
|
|
17
|
+
export declare function cloneVariantViaJson<T extends object>(ctor: new () => T, instance: object, template?: object, ctorMap?: Map<ClassConstructor, ClassConstructor>): T;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=game_variant_json.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"game_variant_json.d.ts","sourceRoot":"","sources":["../../src/helpers/game_variant_json.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,KAAK,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAC1C,KAAK,gBAAgB,GAAG,UAAU,MAAM,CAAC;AA0HzC,6EAA6E;AAC7E,wBAAgB,aAAa,CAAC,CAAC,SAAS,MAAM,EAC5C,IAAI,EAAE,UAAU,CAAC,EACjB,QAAQ,EAAE,CAAC,GACV,UAAU,CAKZ;AAED,yFAAyF;AACzF,wBAAgB,eAAe,CAAC,CAAC,SAAS,MAAM,EAC9C,IAAI,EAAE,UAAU,CAAC,EACjB,IAAI,EAAE,UAAU,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAa,GAC3D,CAAC,CAEH;AAED,kFAAkF;AAClF,wBAAgB,+BAA+B,CAC7C,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GACpC,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAC,CAgBzC;AAED,oFAAoF;AACpF,wBAAgB,mBAAmB,CAAC,CAAC,SAAS,MAAM,EAClD,IAAI,EAAE,UAAU,CAAC,EACjB,QAAQ,EAAE,MAAM,EAChB,QAAQ,CAAC,EAAE,MAAM,EACjB,OAAO,GAAE,GAAG,CAAC,gBAAgB,EAAE,gBAAgB,CAAa,GAC3D,CAAC,CAOH"}
|